Verschiedene Bugfixes

git-svn-id: https://svn.libreccm.org/ccm/trunk@1263 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2011-11-16 20:09:25 +00:00
parent c1eb647a73
commit ca7b771a11
7 changed files with 228 additions and 107 deletions

View File

@ -150,6 +150,11 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
}
}
if (preview) {
page.addRequestListener(
new ApplicationAuthenticationListener());
}
page.lock();
Document document = page.buildDocument(request, response);
@ -183,7 +188,8 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
profiles.next();
PublicPersonalProfile profile =
(PublicPersonalProfile) DomainObjectFactory.newInstance(profiles.getDataObject());
(PublicPersonalProfile) DomainObjectFactory.
newInstance(profiles.getDataObject());
profiles.close();
if (config.getEmbedded()) {
@ -198,7 +204,8 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
context = ContentItem.LIVE;
}
final String url = String.format("/ccm%s", resolver.generateItemURL(state,
final String url = String.format("/ccm%s", resolver.
generateItemURL(state,
profile,
section,
context));
@ -217,31 +224,44 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
"ppp:ownerName", PPP_NS);
profileOwnerName.setText(owner.getFullName());
final DataCollection images = ItemImageAttachment.getImageAttachments(profile);
final DataCollection images = ItemImageAttachment.
getImageAttachments(profile);
if (!images.isEmpty()) {
images.next();
final Element profileImageElem = profileElem.newChildElement("ppp:profileImage",
final Element profileImageElem = profileElem.
newChildElement("ppp:profileImage",
PPP_NS);
final Element attachmentElem = profileImageElem.newChildElement("imageAttachments");
final ItemImageAttachment attachment = new ItemImageAttachment(images.getDataObject());
attachmentElem.addAttribute("oid", attachment.getOID().toString());
final Element caption = attachmentElem.newChildElement("caption");
final Element attachmentElem = profileImageElem.
newChildElement("imageAttachments");
final ItemImageAttachment attachment =
new ItemImageAttachment(images.
getDataObject());
attachmentElem.addAttribute("oid", attachment.getOID().
toString());
final Element caption = attachmentElem.newChildElement(
"caption");
caption.setText(attachment.getCaption());
final ReusableImageAsset image = attachment.getImage();
final Element imageElem = attachmentElem.newChildElement("image");
final Element imageElem =
attachmentElem.newChildElement("image");
imageElem.addAttribute("oid", image.getOID().toString());
final Element widthElem = imageElem.newChildElement("width");
final Element widthElem = imageElem.newChildElement(
"width");
widthElem.setText(image.getWidth().toString());
final Element heightElem = imageElem.newChildElement("height");
final Element heightElem = imageElem.newChildElement(
"height");
heightElem.setText(image.getHeight().toString());
final Element descElem = imageElem.newChildElement("description");
final Element descElem = imageElem.newChildElement(
"description");
descElem.setText(image.getDescription());
final Element nameElem = imageElem.newChildElement("name");
final Element nameElem = imageElem.newChildElement(
"name");
nameElem.setText(image.getName());
final Element idElem = imageElem.newChildElement("id");
idElem.setText(image.getID().toString());
final Element displayNameElem = imageElem.newChildElement("displayName");
final Element displayNameElem = imageElem.
newChildElement("displayName");
displayNameElem.setText(image.getDisplayName());
images.close();
@ -270,13 +290,15 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
} else {
if (itemPath == null) {
final DataCollection links =
RelatedLink.getRelatedLinks(profile,
RelatedLink.getRelatedLinks(
profile,
PublicPersonalProfile.LINK_LIST_NAME);
links.addFilter(String.format("linkTitle = '%s'",
navPath));
if (links.size() == 0) {
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
response.setStatus(
HttpServletResponse.SC_NOT_FOUND);
return;
} else {
if (config.getShowPersonInfoEverywhere()) {
@ -286,7 +308,8 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
PublicPersonalProfileNavItemCollection navItems =
new PublicPersonalProfileNavItemCollection();
navItems.addLanguageFilter(GlobalizationHelper.getNegotiatedLocale().
navItems.addLanguageFilter(GlobalizationHelper.
getNegotiatedLocale().
getLanguage());
navItems.addKeyFilter(navPath);
navItems.next();
@ -296,19 +319,22 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
try {
Object generatorObj =
Class.forName(navItems.getNavItem().
getGeneratorClass()).getConstructor().
getGeneratorClass()).
getConstructor().
newInstance();
if (generatorObj instanceof ContentGenerator) {
final ContentGenerator generator =
(ContentGenerator) generatorObj;
generator.generateContent(profileElem,
generator.generateContent(
profileElem,
owner,
state);
} else {
throw new ServletException(String.format(
throw new ServletException(String.
format(
"Class '%s' is not a ContentGenerator.",
navItems.getNavItem().
getGeneratorClass()));
@ -337,9 +363,11 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
links.next();
final RelatedLink link =
(RelatedLink) DomainObjectFactory.newInstance(links.getDataObject());
(RelatedLink) DomainObjectFactory.
newInstance(links.getDataObject());
links.close();
final ContentItem item = link.getTargetItem();
final ContentItem item =
link.getTargetItem();
final PublicPersonalProfileXmlGenerator generator =
new PublicPersonalProfileXmlGenerator(
item);
@ -358,7 +386,9 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
final OID itemOid = OID.valueOf(itemPath);
try {
final ContentItem item = (ContentItem) DomainObjectFactory.newInstance(itemOid);
final ContentItem item =
(ContentItem) DomainObjectFactory.
newInstance(itemOid);
final PublicPersonalProfileXmlGenerator generator =
new PublicPersonalProfileXmlGenerator(
@ -370,7 +400,8 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
"Item '%s' not found: ",
itemPath),
ex);
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
response.setStatus(
HttpServletResponse.SC_NOT_FOUND);
return;
}
@ -378,7 +409,8 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
}
}
PresentationManager presentationManager = Templating.getPresentationManager();
PresentationManager presentationManager = Templating.
getPresentationManager();
presentationManager.servePage(document, request, response);
}
@ -521,7 +553,8 @@ public class PublicPersonalProfilesServlet extends BaseApplicationServlet {
final Document document = page.buildDocument(request, response);
final PresentationManager presentationManager = Templating.getPresentationManager();
final PresentationManager presentationManager = Templating.
getPresentationManager();
presentationManager.servePage(document, request, response);
}

View File

@ -89,8 +89,12 @@ public class Paginator {
logger.debug(String.format("Applying limits: %d, %d",
getBegin(),
getEnd()));
if (getBegin() == getEnd()) {
query.setRange(getBegin(), getEnd() + 1);
} else {
query.setRange(getBegin(), getEnd());
}
}
public int getPageCount() {
return (int) Math.ceil((double) objectCount / (double) pageSize);

View File

@ -354,8 +354,10 @@ public class DomainObjectXMLRenderer extends DomainObjectTraversal {
// Add attributes for date and time
Locale negLocale = com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale();
DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.MEDIUM, negLocale);
DateFormat longDateFormatter = DateFormat.getDateInstance(DateFormat.LONG, negLocale);
DateFormat timeFormatter = DateFormat.getTimeInstance(DateFormat.SHORT, negLocale);
element.addAttribute("date", dateFormatter.format(date));
element.addAttribute("longDate", longDateFormatter.format(date));
element.addAttribute("time", timeFormatter.format(date));
// Quasimodo: END

View File

@ -8,7 +8,11 @@ import com.arsdigita.cms.contenttypes.ui.PublicationXmlHelper;
import com.arsdigita.cms.contenttypes.ui.panels.Paginator;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.Filter;
import com.arsdigita.persistence.FilterFactory;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.xml.Element;
@ -193,6 +197,18 @@ public class PersonalPublications implements ContentGenerator {
final boolean addOrders) {
query.addFilter(String.format("authorId = %s",
person.getID().toString()));
/*if (Kernel.getConfig().languageIndependentItems()) {
FilterFactory ff = query.getFilterFactory();
Filter filter = ff.or().
addFilter(ff.equals("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage())).
addFilter(ff.and().
addFilter(ff.equals("language", GlobalizationHelper.LANG_INDEPENDENT)).
addFilter(ff.notIn("parent", "com.arsdigita.navigation.getParentIDsOfMatchedItems")
.set("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage())));
query.addFilter(filter);
} else {*/
query.addEqualsFilter("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage());
//}
if (addOrders) {
final String[] orders = config.getOrder().split(",");
for (String order : orders) {

View File

@ -89,6 +89,7 @@ query getIdsOfPublicationsForOrgaUnitOneRowPerAuthor {
Integer year;
String authorSurname;
String authorGivenname;
String language;
do {
select cms_pages.item_id,
@ -97,7 +98,8 @@ query getIdsOfPublicationsForOrgaUnitOneRowPerAuthor {
cms_organizationalunits.organizationalunit_id,
ct_publications.year,
cms_persons.surname,
cms_persons.givenname
cms_persons.givenname,
cms_items.language
from cms_pages
join ct_publications on cms_pages.item_id = ct_publications.publication_id
join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
@ -105,6 +107,7 @@ query getIdsOfPublicationsForOrgaUnitOneRowPerAuthor {
join cms_organizationalunits_publications_map on cms_pages.item_id = cms_organizationalunits_publications_map.publication_id
join cms_organizationalunits on cms_organizationalunits_publications_map.orgaunit_id = cms_organizationalunits.organizationalunit_id
join acs_objects on cms_pages.item_id = acs_objects.object_id
join cms_items on cms_items.item_id = cms_pages.item_id;
} map {
publicationId = cms_pages.item_id;
objectType = acs_objects.object_type;
@ -113,6 +116,7 @@ query getIdsOfPublicationsForOrgaUnitOneRowPerAuthor {
year = ct_publications.year;
authorSurname = cms_persons.surname;
authorGivenname = cms_persons.givenname;
language = cms_items.item_id;
}
}
@ -126,6 +130,7 @@ query getIdsOfPublicationsForOrgaUnit {
String title;
Integer year;
String authors;
String language;
do {
select cms_pages.item_id,
@ -133,22 +138,21 @@ query getIdsOfPublicationsForOrgaUnit {
cms_pages.title,
cms_organizationalunits.organizationalunit_id,
ct_publications.year,
(select array_to_string (array (select cms_persons.surname || ', ' || cms_persons.givenname
from cms_persons
join ct_publications_authorship on cms_persons.person_id = ct_publications_authorship.person_id
where ct_publications_authorship.publication_id = cms_pages.item_id), '; ')) as authors
ct_publications.authors
cms_items.language
from cms_pages
join ct_publications on cms_pages.item_id = ct_publications.publication_id
join cms_organizationalunits_publications_map on cms_pages.item_id = cms_organizationalunits_publications_map.publication_id
join cms_organizationalunits on cms_organizationalunits_publications_map.orgaunit_id = cms_organizationalunits.organizationalunit_id
join acs_objects on cms_pages.item_id = acs_objects.object_id
join cms_items on cms_pages.item_id = cms_items.item_id
} map {
publicationId = cms_pages.item_id;
objectType = acs_objects.object_type;
orgaunitId = cms_organizationalunits.organizationalunit_id;
title = cms_pages.title;
year = ct_publications.year;
authors = authors;
authors = ct_publications.authors;
}
}
@ -159,6 +163,7 @@ query getPublicationsForAuthor {
String objectType;
String title;
Integer year;
String language;
Boolean reviewed;
do {
@ -167,10 +172,12 @@ query getPublicationsForAuthor {
cms_pages.title,
ct_publications_authorship.person_id,
ct_publications.year,
cms_items.language,
ct_publications.reviewed
from cms_pages
join ct_publications on cms_pages.item_id = ct_publications.publication_id
join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
join cms_items on cms_pages.item_id = cms_items.item_id
join acs_objects on cms_pages.item_id = acs_objects.object_id
} map {
publicationId = cms_pages.item_id;
@ -178,6 +185,7 @@ query getPublicationsForAuthor {
authorId = ct_publications_authorship.person_id;
title = cms_pages.title;
year = ct_publications.year;
language = ct_items.language;
reviewed = ct_publications.reviewed;
}
}
@ -190,6 +198,7 @@ query getPublicationsForAuthorWithAuthors {
String title;
Integer year;
String authors;
String language;
Boolean reviewed;
do {
@ -207,6 +216,7 @@ query getPublicationsForAuthorWithAuthors {
from cms_pages
join ct_publications on cms_pages.item_id = ct_publications.publication_id
join ct_publications_authorship on ct_publications.publication_id = ct_publications_authorship.publication_id
join cms_items on cms_pages.item_id = cms_items.item_id
join acs_objects on cms_pages.item_id = acs_objects.object_id
} map {
publicationId = cms_pages.item_id;
@ -215,6 +225,7 @@ query getPublicationsForAuthorWithAuthors {
title = cms_pages.title;
year = ct_publications.year;
authors = ct_publications.authors;
language = ct_items.language;
reviewed = ct_publications.reviewed;
}
}

View File

@ -234,8 +234,8 @@ public class PublicationXmlHelper {
final ArticleInCollectedVolume article =
(ArticleInCollectedVolume) publication;
generateXmlElement(publicationElem, "pageFrom", article.getPagesFrom());
generateXmlElement(publicationElem, "pageTo", article.getPagesTo());
generateXmlElement(publicationElem, "pagesFrom", article.getPagesFrom());
generateXmlElement(publicationElem, "pagesTo", article.getPagesTo());
generateXmlElement(publicationElem, "chapter", article.getChapter());
generateXmlElement(publicationElem, "reviewed", article.getReviewed());
generateCollectedVolumeLinkXml(publicationElem, article);
@ -261,8 +261,8 @@ public class PublicationXmlHelper {
generateXmlElement(publicationElem, "volume", article.getVolume());
generateXmlElement(publicationElem, "issue", article.getIssue());
generateXmlElement(publicationElem, "pageFrom", article.getPagesFrom());
generateXmlElement(publicationElem, "pageTo", article.getPagesTo());
generateXmlElement(publicationElem, "pagesFrom", article.getPagesFrom());
generateXmlElement(publicationElem, "pagesTo", article.getPagesTo());
generateXmlElement(publicationElem, "reviewed", article.getReviewed());
generateJournalLinkXml(publicationElem, article);
@ -309,15 +309,15 @@ public class PublicationXmlHelper {
private void generateGreyLiteratureXml(final Element publicationElem) {
GreyLiterature grey = (GreyLiterature) publication;
generateXmlElement(publicationElem, "pageFrom", grey.getPagesFrom());
generateXmlElement(publicationElem, "pageTo", grey.getPagesTo());
generateXmlElement(publicationElem, "pagesFrom", grey.getPagesFrom());
generateXmlElement(publicationElem, "pagesTo", grey.getPagesTo());
}
private void generateInProceedingsXml(final Element publicationElem) {
InProceedings inProceedings = (InProceedings) publication;
generateXmlElement(publicationElem,
"pageFrom",
"pagesFrom",
inProceedings.getPagesFrom());
generateXmlElement(publicationElem,
"pagesTo",

View File

@ -11,12 +11,16 @@ import com.arsdigita.cms.contenttypes.GenericOrganizationalUnitSuperiorCollectio
import com.arsdigita.cms.contenttypes.GenericPerson;
import com.arsdigita.cms.contenttypes.SciProject;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.xml.Element;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import org.apache.log4j.Logger;
/**
@ -95,14 +99,30 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
if ((project.getBegin() != null) || (project.getEnd() != null)) {
final Element lifeSpanElem = parent.newChildElement("lifeSpan");
final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
if (project.getBegin() != null) {
lifeSpanElem.addAttribute("begin",
dateFormat.format(project.getBegin()));
final Element beginElem = lifeSpanElem.newChildElement("begin");
addDateAttributes(beginElem, project.getBegin());
final Element beginSkipMonthElem = lifeSpanElem.newChildElement(
"beginSkipMonth");
beginSkipMonthElem.setText(project.getBeginSkipMonth().toString());
final Element beginSkipDayElem = lifeSpanElem.newChildElement(
"beginSkipDay");
beginSkipDayElem.setText(project.getBeginSkipDay().toString());
}
if (project.getEnd() != null) {
lifeSpanElem.addAttribute("end",
dateFormat.format(project.getEnd()));
final Element endElem = lifeSpanElem.newChildElement("end");
addDateAttributes(endElem, project.getEnd());
final Element endSkipMonthElem = lifeSpanElem.newChildElement(
"endSkipMonth");
endSkipMonthElem.setText(project.getEndSkipMonth().toString());
final Element endSkipDayElem = lifeSpanElem.newChildElement(
"endSkipDay");
endSkipDayElem.setText(project.getEndSkipDay().toString());
}
}
@ -118,6 +138,41 @@ public class SciProjectSummaryTab implements GenericOrgaUnitTab {
System.currentTimeMillis() - start));
}
private void addDateAttributes(final Element elem, final Date date) {
final Calendar cal = Calendar.getInstance();
cal.setTime(date);
elem.addAttribute("year",
Integer.toString(cal.get(
Calendar.YEAR)));
elem.addAttribute("month",
Integer.toString(cal.get(
Calendar.MONTH) + 1));
elem.addAttribute("day",
Integer.toString(cal.get(
Calendar.DAY_OF_MONTH)));
elem.addAttribute("hour",
Integer.toString(cal.get(
Calendar.HOUR_OF_DAY)));
elem.addAttribute("minute",
Integer.toString(cal.get(
Calendar.MINUTE)));
elem.addAttribute("second",
Integer.toString(cal.get(
Calendar.SECOND)));
final Locale negLocale = GlobalizationHelper.getNegotiatedLocale();
final DateFormat dateFormat = DateFormat.getDateInstance(
DateFormat.MEDIUM, negLocale);
final DateFormat longDateFormat = DateFormat.getDateInstance(
DateFormat.LONG, negLocale);
final DateFormat timeFormat = DateFormat.getDateInstance(
DateFormat.SHORT, negLocale);
elem.addAttribute("date", dateFormat.format(date));
elem.addAttribute("longDate", longDateFormat.format(date));
elem.addAttribute("time", timeFormat.format(date));
}
protected void generateMembersXml(final SciProject project,
final Element parent,
final PageState state) {