- 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-94f89814c4dfmaster
parent
1550383a13
commit
a7fda6a6dc
|
|
@ -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))) {
|
||||||
|
|
@ -188,39 +193,94 @@ public class PublicPersonalProfileXmlUtil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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?
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue