- 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.persistence.DataCollection;
import com.arsdigita.ui.UI; import com.arsdigita.ui.UI;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -69,12 +73,12 @@ public class PublicPersonalProfileXmlUtil {
appUrl = String.format("%s/ccm%s", prefix, appPath); appUrl = String.format("%s/ccm%s", prefix, appPath);
} }
Element navRoot = final Element navRoot =
root.newChildElement("nav:categoryMenu", root.newChildElement("nav:categoryMenu",
"http://ccm.redhat.com/navigation"); "http://ccm.redhat.com/navigation");
navRoot.addAttribute("id", "categoryMenu"); navRoot.addAttribute("id", "categoryMenu");
Element navList = final Element navList =
navRoot.newChildElement("nav:category", navRoot.newChildElement("nav:category",
"http://ccm.redhat.com/navigation"); "http://ccm.redhat.com/navigation");
navList.addAttribute("AbstractTree", "AbstractTree"); navList.addAttribute("AbstractTree", "AbstractTree");
@ -91,7 +95,7 @@ public class PublicPersonalProfileXmlUtil {
if (config.getShowHomeNavEntry()) { if (config.getShowHomeNavEntry()) {
Element navHome = final Element navHome =
navList.newChildElement("nav:category", navList.newChildElement("nav:category",
"http://ccm.redhat.com/navigation"); "http://ccm.redhat.com/navigation");
navHome.addAttribute("AbstractTree", "AbstractTree"); navHome.addAttribute("AbstractTree", "AbstractTree");
@ -106,7 +110,7 @@ public class PublicPersonalProfileXmlUtil {
/*String homeLabel = homeLabels.get(GlobalizationHelper. /*String homeLabel = homeLabels.get(GlobalizationHelper.
getNegotiatedLocale().getLanguage());*/ getNegotiatedLocale().getLanguage());*/
String homeLabel = homeLabels.get(profile.getLanguage()); final String homeLabel = homeLabels.get(profile.getLanguage());
if (homeLabel == null) { if (homeLabel == null) {
navHome.addAttribute("title", "Home"); navHome.addAttribute("title", "Home");
} else { } else {
@ -120,13 +124,13 @@ public class PublicPersonalProfileXmlUtil {
} }
//Get the available Navigation items //Get the available Navigation items
PublicPersonalProfileNavItemCollection navItems = final PublicPersonalProfileNavItemCollection navItems =
new PublicPersonalProfileNavItemCollection(); new PublicPersonalProfileNavItemCollection();
/*navItems.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale(). /*navItems.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
getLanguage());*/ getLanguage());*/
navItems.addLanguageFilter(profile.getLanguage()); navItems.addLanguageFilter(profile.getLanguage());
final Map<String, PublicPersonalProfileNavItem> navItemMap = final Map<String, PublicPersonalProfileNavItem> navItemMap =
new HashMap<String, PublicPersonalProfileNavItem>(); new LinkedHashMap<String, PublicPersonalProfileNavItem>();
PublicPersonalProfileNavItem navItem; PublicPersonalProfileNavItem navItem;
while (navItems.next()) { while (navItems.next()) {
navItem = navItems.getNavItem(); navItem = navItems.getNavItem();
@ -153,14 +157,15 @@ public class PublicPersonalProfileXmlUtil {
profile.getProfileUrl())); profile.getProfileUrl()));
profileElem.addAttribute("title", profile.getOwner().getFullName()); profileElem.addAttribute("title", profile.getOwner().getFullName());
//Get the related links of the profiles //Get the related links of the profile
DataCollection links = final DataCollection links =
RelatedLink.getRelatedLinks(profile, RelatedLink.getRelatedLinks(profile,
PublicPersonalProfile.LINK_LIST_NAME); PublicPersonalProfile.LINK_LIST_NAME);
links.addOrder(Link.ORDER); links.addOrder(Link.ORDER);
RelatedLink link; RelatedLink link;
String navLinkKey; String navLinkKey;
Element navElem; Element navElem;
final List<NavLink> navLinks = new ArrayList<NavLink>();
while (links.next()) { while (links.next()) {
link = (RelatedLink) DomainObjectFactory.newInstance(links. link = (RelatedLink) DomainObjectFactory.newInstance(links.
getDataObject()); getDataObject());
@ -172,10 +177,10 @@ public class PublicPersonalProfileXmlUtil {
//ToDo //ToDo
} }
ContentItem targetItem = link.getTargetItem(); final ContentItem targetItem = link.getTargetItem();
if (!(targetItem instanceof PublicPersonalProfile) if (!(targetItem instanceof PublicPersonalProfile)
&& (targetItem instanceof ContentPage)) { && (targetItem instanceof ContentPage)) {
ContentPage targetPage = (ContentPage) targetItem; final ContentPage targetPage = (ContentPage) targetItem;
/*if (!(targetPage.getContentBundle().hasInstance(GlobalizationHelper. /*if (!(targetPage.getContentBundle().hasInstance(GlobalizationHelper.
getNegotiatedLocale().getLanguage(), getNegotiatedLocale().getLanguage(),
false))) { false))) {
@ -187,40 +192,95 @@ public class PublicPersonalProfileXmlUtil {
continue; continue;
} }
} }
navLinks.add(createNavLink(navItem, navLinkKey, targetItem));
}
Collections.sort(navLinks);
for(NavLink navLink : navLinks) {
navElem = navElem =
navList.newChildElement("nav:category", navList.newChildElement("nav:category",
"http://ccm.redhat.com/navigation"); "http://ccm.redhat.com/navigation");
navElem.addAttribute("AbstractTree", "AbstractTree"); navElem.addAttribute("AbstractTree", "AbstractTree");
navElem.addAttribute("description", ""); navElem.addAttribute("description", "");
//navHome.addAttribute("id", ""); //navHome.addAttribute("id", "");
if ((navPath != null) && navPath.equals(navLinkKey)) { if ((navPath != null) && navPath.equals(navLink.getKey())) {
navElem.addAttribute("isSelected", "true"); navElem.addAttribute("isSelected", "true");
final Element currentPathElem = final Element currentPathElem =
pathElem.newChildElement("nav:category", pathElem.newChildElement("nav:category",
"http://ccm.redhat.com/navigation"); "http://ccm.redhat.com/navigation");
currentPathElem.addAttribute("title", navItem.getLabel()); currentPathElem.addAttribute("title", navLink.getNavItem().getLabel());
currentPathElem.addAttribute("url", currentPathElem.addAttribute("url",
String.format("%s/%s/%s", String.format("%s/%s/%s",
appUrl, appUrl,
profile.getProfileUrl(), profile.getProfileUrl(),
navLinkKey)); navLink.getKey()));
} else { } else {
navElem.addAttribute("isSelected", "false"); navElem.addAttribute("isSelected", "false");
} }
navElem.addAttribute("sortKey", ""); navElem.addAttribute("sortKey", "");
if (navItem == null) { if (navLink.getTarget() == null) {
navElem.addAttribute("title", navLinkKey); navElem.addAttribute("title", navLink.getKey());
} else { } else {
navElem.addAttribute("title", navItem.getLabel()); navElem.addAttribute("title", navLink.getNavItem().getLabel());
} }
navElem.addAttribute("url", String.format("%s/%s/%s", navElem.addAttribute("url", String.format("%s/%s/%s",
appUrl, appUrl,
profile.getProfileUrl(), 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.search.create.select_edit=Item ausw\u00e4hlen und weiter bearbeiten
cms.ui.clear=Zur\u00fccksetzen 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.document_type=Document type
cms.ui.authoring.format=Format cms.ui.authoring.format=Format
cms.ui.authoring.security_class=Security class 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.all=All
cms.ui.folder.filter=Filter for work cms.ui.folder.filter=Filter for work
cms.ui.folder.filter_do=Filter cms.ui.folder.filter_do=Filter
cms.ui.folder.languages= cms.ui.folder.languages=Languages
cms.ui.folder.delete_confirmation=Permanently delete this item? 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.all=Alle
cms.ui.folder.filter=Nach Begriff filtern cms.ui.folder.filter=Nach Begriff filtern
cms.ui.folder.filter_do=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.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; package com.arsdigita.navigation.ui.object;
import com.arsdigita.globalization.Globalization;
import com.arsdigita.navigation.Navigation; import com.arsdigita.navigation.Navigation;
import com.arsdigita.persistence.DataCollection; import com.arsdigita.persistence.DataCollection;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
@ -193,7 +194,7 @@ public class CustomizableObjectList extends ComplexObjectList {
* @return The property to sort by. * @return The property to sort by.
*/ */
public String getOrder(final String id) { public String getOrder(final String id) {
String order = sortFields.get(id); final String order = sortFields.get(id);
if ((order == null) || order.isEmpty()) { if ((order == null) || order.isEmpty()) {
return new ArrayList<String>(sortFields.values()).get(0); return new ArrayList<String>(sortFields.values()).get(0);
} }
@ -211,10 +212,10 @@ public class CustomizableObjectList extends ComplexObjectList {
* @return * @return
*/ */
@Override @Override
protected DataCollection getObjects(HttpServletRequest request, protected DataCollection getObjects(final HttpServletRequest request,
HttpServletResponse response) { final HttpServletResponse response) {
//Set filters (using the SQL) //Set filters (using the SQL)
StringBuilder sqlFilters = new StringBuilder(); final StringBuilder sqlFilters = new StringBuilder();
for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) { for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) {
if ((filterEntry.getValue().getFilter() == null) if ((filterEntry.getValue().getFilter() == null)
|| (filterEntry.getValue().getFilter().isEmpty())) { || (filterEntry.getValue().getFilter().isEmpty())) {
@ -232,7 +233,7 @@ public class CustomizableObjectList extends ComplexObjectList {
setSQLFilter(sqlFilters.toString()); setSQLFilter(sqlFilters.toString());
} }
DataCollection objects = super.getObjects(request, response); final DataCollection objects = super.getObjects(request, response);
return objects; return objects;
} }
@ -250,10 +251,10 @@ public class CustomizableObjectList extends ComplexObjectList {
* @return * @return
*/ */
@Override @Override
public Element generateXML(HttpServletRequest request, public Element generateXML(final HttpServletRequest request,
HttpServletResponse response) { final HttpServletResponse response) {
//Some stuff for the list (copied from ComplexObjectList) //Some stuff for the list (copied from ComplexObjectList)
Element content = Navigation.newElement("customizableObjectList"); final Element content = Navigation.newElement("customizableObjectList");
if (m_customName != null) { if (m_customName != null) {
content.addAttribute(CUSTOM_NAME, m_customName); content.addAttribute(CUSTOM_NAME, m_customName);
@ -281,22 +282,22 @@ public class CustomizableObjectList extends ComplexObjectList {
//} //}
for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) { 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()) { if ((value != null) && !value.isEmpty()) {
filterEntry.getValue().setValue(value); filterEntry.getValue().setValue(value);
} }
} }
Element controls = content.newChildElement("filterControls"); final Element controls = content.newChildElement("filterControls");
controls.addAttribute("customName", m_customName); controls.addAttribute("customName", m_customName);
Element filterElems = controls.newChildElement("filters"); final Element filterElems = controls.newChildElement("filters");
for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) { for (Map.Entry<String, Filter> filterEntry : filters.entrySet()) {
filterElems.addContent(filterEntry.getValue().getXml()); 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 //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, //collection (if it is a valid value). If no sort parameter is found,
//use the first sort field as default. //use the first sort field as default.
@ -305,10 +306,10 @@ public class CustomizableObjectList extends ComplexObjectList {
sortByKey = new ArrayList<String>(sortFields.keySet()).get(0); sortByKey = new ArrayList<String>(sortFields.keySet()).get(0);
} }
Element sortFieldElems = controls.newChildElement("sortFields"); final Element sortFieldElems = controls.newChildElement("sortFields");
sortFieldElems.addAttribute("sortBy", sortByKey); sortFieldElems.addAttribute("sortBy", sortByKey);
for (Map.Entry<String, String> sortField : sortFields.entrySet()) { for (Map.Entry<String, String> sortField : sortFields.entrySet()) {
Element sortFieldElem = sortFieldElems.newChildElement( final Element sortFieldElem = sortFieldElems.newChildElement(
"sortField"); "sortField");
sortFieldElem.addAttribute("label", sortField.getKey()); sortFieldElem.addAttribute("label", sortField.getKey());
} }