- BugFix für PublicPersonalProfile: Unter bestimmten Umständen wurde eine falsche (alte) Reihenfolge der Links für die Navigation im PPP verwendet (Ticket #1304)

- Einige Übersetzungen im Content-Center ergänzt


git-svn-id: https://svn.libreccm.org/ccm/trunk@1819 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2012-08-18 07:17:45 +00:00
parent 1550383a13
commit a7fda6a6dc
6 changed files with 104 additions and 35 deletions

View File

@ -27,7 +27,11 @@ import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.ui.UI;
import com.arsdigita.xml.Element;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
@ -69,12 +73,12 @@ public class PublicPersonalProfileXmlUtil {
appUrl = String.format("%s/ccm%s", prefix, appPath);
}
Element navRoot =
final Element navRoot =
root.newChildElement("nav:categoryMenu",
"http://ccm.redhat.com/navigation");
navRoot.addAttribute("id", "categoryMenu");
Element navList =
final Element navList =
navRoot.newChildElement("nav:category",
"http://ccm.redhat.com/navigation");
navList.addAttribute("AbstractTree", "AbstractTree");
@ -91,7 +95,7 @@ public class PublicPersonalProfileXmlUtil {
if (config.getShowHomeNavEntry()) {
Element navHome =
final Element navHome =
navList.newChildElement("nav:category",
"http://ccm.redhat.com/navigation");
navHome.addAttribute("AbstractTree", "AbstractTree");
@ -106,7 +110,7 @@ public class PublicPersonalProfileXmlUtil {
/*String homeLabel = homeLabels.get(GlobalizationHelper.
getNegotiatedLocale().getLanguage());*/
String homeLabel = homeLabels.get(profile.getLanguage());
final String homeLabel = homeLabels.get(profile.getLanguage());
if (homeLabel == null) {
navHome.addAttribute("title", "Home");
} else {
@ -120,13 +124,13 @@ public class PublicPersonalProfileXmlUtil {
}
//Get the available Navigation items
PublicPersonalProfileNavItemCollection navItems =
final PublicPersonalProfileNavItemCollection navItems =
new PublicPersonalProfileNavItemCollection();
/*navItems.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
getLanguage());*/
navItems.addLanguageFilter(profile.getLanguage());
final Map<String, PublicPersonalProfileNavItem> navItemMap =
new HashMap<String, PublicPersonalProfileNavItem>();
new LinkedHashMap<String, PublicPersonalProfileNavItem>();
PublicPersonalProfileNavItem navItem;
while (navItems.next()) {
navItem = navItems.getNavItem();
@ -153,14 +157,15 @@ public class PublicPersonalProfileXmlUtil {
profile.getProfileUrl()));
profileElem.addAttribute("title", profile.getOwner().getFullName());
//Get the related links of the profiles
DataCollection links =
//Get the related links of the profile
final DataCollection links =
RelatedLink.getRelatedLinks(profile,
PublicPersonalProfile.LINK_LIST_NAME);
links.addOrder(Link.ORDER);
RelatedLink link;
String navLinkKey;
Element navElem;
final List<NavLink> navLinks = new ArrayList<NavLink>();
while (links.next()) {
link = (RelatedLink) DomainObjectFactory.newInstance(links.
getDataObject());
@ -172,10 +177,10 @@ public class PublicPersonalProfileXmlUtil {
//ToDo
}
ContentItem targetItem = link.getTargetItem();
final ContentItem targetItem = link.getTargetItem();
if (!(targetItem instanceof PublicPersonalProfile)
&& (targetItem instanceof ContentPage)) {
ContentPage targetPage = (ContentPage) targetItem;
final ContentPage targetPage = (ContentPage) targetItem;
/*if (!(targetPage.getContentBundle().hasInstance(GlobalizationHelper.
getNegotiatedLocale().getLanguage(),
false))) {
@ -187,40 +192,95 @@ public class PublicPersonalProfileXmlUtil {
continue;
}
}
navLinks.add(createNavLink(navItem, navLinkKey, targetItem));
}
Collections.sort(navLinks);
for(NavLink navLink : navLinks) {
navElem =
navList.newChildElement("nav:category",
"http://ccm.redhat.com/navigation");
navElem.addAttribute("AbstractTree", "AbstractTree");
navElem.addAttribute("description", "");
//navHome.addAttribute("id", "");
if ((navPath != null) && navPath.equals(navLinkKey)) {
if ((navPath != null) && navPath.equals(navLink.getKey())) {
navElem.addAttribute("isSelected", "true");
final Element currentPathElem =
pathElem.newChildElement("nav:category",
"http://ccm.redhat.com/navigation");
currentPathElem.addAttribute("title", navItem.getLabel());
currentPathElem.addAttribute("title", navLink.getNavItem().getLabel());
currentPathElem.addAttribute("url",
String.format("%s/%s/%s",
appUrl,
profile.getProfileUrl(),
navLinkKey));
navLink.getKey()));
} else {
navElem.addAttribute("isSelected", "false");
}
navElem.addAttribute("sortKey", "");
if (navItem == null) {
navElem.addAttribute("title", navLinkKey);
if (navLink.getTarget() == null) {
navElem.addAttribute("title", navLink.getKey());
} else {
navElem.addAttribute("title", navItem.getLabel());
navElem.addAttribute("title", navLink.getNavItem().getLabel());
}
navElem.addAttribute("url", String.format("%s/%s/%s",
appUrl,
profile.getProfileUrl(),
navLinkKey));
navLink.getKey()));
navElem.addAttribute("navItem", navLinkKey);
navElem.addAttribute("navItem", navLink.getKey());
}
}
private NavLink createNavLink(final PublicPersonalProfileNavItem navItem,
final String key,
final ContentItem target) {
final NavLink navLink = new NavLink();
navLink.setNavItem(navItem);
navLink.setKey(key);
navLink.setTarget(target);
return navLink;
}
private class NavLink implements Comparable<NavLink> {
private PublicPersonalProfileNavItem navItem;
private String key;
private ContentItem target;
public NavLink() {
//Nothing
}
public PublicPersonalProfileNavItem getNavItem() {
return navItem;
}
public void setNavItem(final PublicPersonalProfileNavItem navItem) {
this.navItem = navItem;
}
public ContentItem getTarget() {
return target;
}
public String getKey() {
return key;
}
public void setKey(final String key) {
this.key = key;
}
public void setTarget(final ContentItem target) {
this.target = target;
}
public int compareTo(final NavLink other) {
return navItem.getOrder().compareTo(other.getNavItem().getOrder());
}
}
}

View File

@ -1101,3 +1101,5 @@ cms.ui.search.create.select_close=Item ausw\u00e4hlen und schlie\u00dfen
cms.ui.search.create.select_edit=Item ausw\u00e4hlen und weiter bearbeiten
cms.ui.clear=Zur\u00fccksetzen
cms.ui.type.minimum_number_of_values_bigger_than_maximum_number_of_values=Maximaler Wert kleiner als minimaler Wert
cms.ui.type.minimummaximum_number_of_values_cannot_be_negative=Keine negativen Werte erlaubt

View File

@ -61,3 +61,5 @@ cms.ui.authoring.version_number=Version #
cms.ui.authoring.document_type=Document type
cms.ui.authoring.format=Format
cms.ui.authoring.security_class=Security class
cms.ui.authoring.failed_to_upload_image=Failed to upload image
cms.ui.authoring.choose_contact=Kontakt ausw\u00e4hlen

View File

@ -70,5 +70,5 @@ cms.ui.folder.no_such_item=Item ID supplied does not match an existing Content I
cms.ui.folder.filter.all=All
cms.ui.folder.filter=Filter for work
cms.ui.folder.filter_do=Filter
cms.ui.folder.languages=
cms.ui.folder.languages=Languages
cms.ui.folder.delete_confirmation=Permanently delete this item?

View File

@ -66,5 +66,9 @@ cms.ui.folder.remove_asset_link=Entfernen
cms.ui.folder.filter.all=Alle
cms.ui.folder.filter=Nach Begriff filtern
cms.ui.folder.filter_do=Filtern
cms.ui.folder.languages=
cms.ui.folder.languages=Sprachen
cms.ui.folder.delete_confirmation=Wollen Sie dieses Content-Item l\u00f6schen?
cms.ui.folder.edit_selection=Ausgew\u00e4hlte Items kopieren oder verschieben:
cms.ui.folder.creation_date=Erstellungsdatum
cms.ui.folder.last_modified=Letzte \u00c4nderung
cms.ui.folder.index=Index

View File

@ -1,5 +1,6 @@
package com.arsdigita.navigation.ui.object;
import com.arsdigita.globalization.Globalization;
import com.arsdigita.navigation.Navigation;
import com.arsdigita.persistence.DataCollection;
import com.arsdigita.xml.Element;
@ -193,7 +194,7 @@ public class CustomizableObjectList extends ComplexObjectList {
* @return The property to sort by.
*/
public String getOrder(final String id) {
String order = sortFields.get(id);
final String order = sortFields.get(id);
if ((order == null) || order.isEmpty()) {
return new ArrayList<String>(sortFields.values()).get(0);
}
@ -211,10 +212,10 @@ public class CustomizableObjectList extends ComplexObjectList {
* @return
*/
@Override
protected DataCollection getObjects(HttpServletRequest request,
HttpServletResponse response) {
protected DataCollection getObjects(final HttpServletRequest request,
final HttpServletResponse response) {
//Set filters (using the SQL)
StringBuilder sqlFilters = new StringBuilder();
final StringBuilder sqlFilters = new StringBuilder();
for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) {
if ((filterEntry.getValue().getFilter() == null)
|| (filterEntry.getValue().getFilter().isEmpty())) {
@ -232,7 +233,7 @@ public class CustomizableObjectList extends ComplexObjectList {
setSQLFilter(sqlFilters.toString());
}
DataCollection objects = super.getObjects(request, response);
final DataCollection objects = super.getObjects(request, response);
return objects;
}
@ -250,10 +251,10 @@ public class CustomizableObjectList extends ComplexObjectList {
* @return
*/
@Override
public Element generateXML(HttpServletRequest request,
HttpServletResponse response) {
public Element generateXML(final HttpServletRequest request,
final HttpServletResponse response) {
//Some stuff for the list (copied from ComplexObjectList)
Element content = Navigation.newElement("customizableObjectList");
final Element content = Navigation.newElement("customizableObjectList");
if (m_customName != null) {
content.addAttribute(CUSTOM_NAME, m_customName);
@ -281,22 +282,22 @@ public class CustomizableObjectList extends ComplexObjectList {
//}
for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) {
String value = request.getParameter(filterEntry.getKey());
final String value = Globalization.decodeParameter(request, filterEntry.getKey());
if ((value != null) && !value.isEmpty()) {
filterEntry.getValue().setValue(value);
}
}
Element controls = content.newChildElement("filterControls");
final Element controls = content.newChildElement("filterControls");
controls.addAttribute("customName", m_customName);
Element filterElems = controls.newChildElement("filters");
final Element filterElems = controls.newChildElement("filters");
for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) {
filterElems.addContent(filterEntry.getValue().getXml());
}
if (sortFields.size() > 0) {
if (!sortFields.isEmpty()) {
//Look for a sort parameter. If one is found, use one to sort the data
//collection (if it is a valid value). If no sort parameter is found,
//use the first sort field as default.
@ -305,10 +306,10 @@ public class CustomizableObjectList extends ComplexObjectList {
sortByKey = new ArrayList<String>(sortFields.keySet()).get(0);
}
Element sortFieldElems = controls.newChildElement("sortFields");
final Element sortFieldElems = controls.newChildElement("sortFields");
sortFieldElems.addAttribute("sortBy", sortByKey);
for (Map.Entry<String, String> sortField : sortFields.entrySet()) {
Element sortFieldElem = sortFieldElems.newChildElement(
final Element sortFieldElem = sortFieldElems.newChildElement(
"sortField");
sortFieldElem.addAttribute("label", sortField.getKey());
}