From ce76206f7c84780d25508fa281a6c0bb17b599b0 Mon Sep 17 00:00:00 2001 From: rjy7 Date: Tue, 18 Jan 2011 21:21:14 +0000 Subject: [PATCH] NIHVIVO-1704 Enable jump links after returning to individual profile after submitting an editing form. Pass property all the way down the property display macro chain, so any macro has access to property attributes like name, localname, and uri. Provide PropertyTemplateModel.getLocalName() and PropertyTemplateModel.getUri() for this purpose. --- .../individual/DataPropertyTemplateModel.java | 2 +- .../individual/IndividualTemplateModel.java | 2 +- .../individual/PropertyTemplateModel.java | 18 ++++--- .../freemarker/body/individual/individual.ftl | 6 +-- .../individual/individual-properties.ftl | 12 +++-- .../partials/individual/individual-setup.ftl | 6 +-- .../partials/individual/lib-properties.ftl | 49 +++++++++---------- 7 files changed, 49 insertions(+), 46 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyTemplateModel.java index 19f77bcfa..8206253c3 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/DataPropertyTemplateModel.java @@ -46,7 +46,7 @@ public class DataPropertyTemplateModel extends PropertyTemplateModel { if (policyHelper != null) { // If the display limit has already been reached, we can't add a new statement int displayLimit = dp.getDisplayLimit(); - // Display limit of -1 (default value for new property) doesn't count + // Display limit of -1 (default value for new property) means no display limit if ( (displayLimit < 0) || (displayLimit > statements.size()) ) { RequestedAction action = new AddDataPropStmt(subjectUri, propertyUri,RequestActionConstants.SOME_LITERAL, null, null); if (policyHelper.isAuthorizedAction(action)) { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java index a9ae7cdb1..f66ccca41 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/IndividualTemplateModel.java @@ -140,7 +140,7 @@ public class IndividualTemplateModel extends BaseTemplateModel { return propertyList; } - public boolean getShowEditingLinks() { + public boolean isEditable() { // RY This will be improved later. What is important is not whether the user is a self-editor, // but whether he has editing privileges on this profile. return VitroRequestPrep.isSelfEditing(vreq) || diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyTemplateModel.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyTemplateModel.java index 9eb2aa6b9..9d8e45180 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyTemplateModel.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/templatemodels/individual/PropertyTemplateModel.java @@ -17,6 +17,7 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel { private static final Log log = LogFactory.getLog(PropertyTemplateModel.class); private String name; + private String localName; protected String propertyUri; // For editing @@ -24,10 +25,12 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel { protected boolean addAccess = false; PropertyTemplateModel(Property property, Individual subject, EditingPolicyHelper policyHelper) { + propertyUri = property.getURI(); + localName = property.getLocalName(); + // Do in subclass constructor. The label has not been set on the property, and the // means of getting the label differs between object and data properties. // this.name = property.getLabel(); - propertyUri = property.getURI(); if (policyHelper != null) { subjectUri = subject.getURI(); @@ -38,10 +41,6 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel { this.name = name; } - protected String getUri() { - return propertyUri; - } - /* Access methods for templates */ @@ -51,7 +50,14 @@ public abstract class PropertyTemplateModel extends BaseTemplateModel { return name; } - + public String getLocalName() { + return localName; + } + + public String getUri() { + return propertyUri; + } + public abstract String getAddUrl(); } diff --git a/webapp/web/templates/freemarker/body/individual/individual.ftl b/webapp/web/templates/freemarker/body/individual/individual.ftl index bcd2bc28e..7190a73a1 100644 --- a/webapp/web/templates/freemarker/body/individual/individual.ftl +++ b/webapp/web/templates/freemarker/body/individual/individual.ftl @@ -11,7 +11,7 @@
<#-- Image --> - <@p.imageLinks individual propertyGroups editing /> + <@p.imageLinks individual propertyGroups editable />
@@ -24,7 +24,7 @@ <#-- Label --> <#assign label = individual.nameStatement> ${label.value} - <@p.editingLinks label editing /> + <@p.editingLinks label label editable /> <#-- Moniker --> <#if individual.moniker?has_content> @@ -47,7 +47,7 @@ <#-- Links --> - <@p.vitroLinks propertyGroups editing /> + <@p.vitroLinks propertyGroups editable />
diff --git a/webapp/web/templates/freemarker/body/partials/individual/individual-properties.ftl b/webapp/web/templates/freemarker/body/partials/individual/individual-properties.ftl index c2d716868..05c4aa67b 100644 --- a/webapp/web/templates/freemarker/body/partials/individual/individual-properties.ftl +++ b/webapp/web/templates/freemarker/body/partials/individual/individual-properties.ftl @@ -21,20 +21,22 @@ <#-- List the properties in the group --> <#list group.properties as property> - <#assign propertyNameCamel = property.name?capitalize?replace(" ", "")?uncap_first />
<#-- Property display name --> -

${property.name} <@p.addLink property editing />

+

${property.name} <@p.addLink property editable />

<#-- List the statements for each property -->
diff --git a/webapp/web/templates/freemarker/body/partials/individual/individual-setup.ftl b/webapp/web/templates/freemarker/body/partials/individual/individual-setup.ftl index 661860e70..f45f98f60 100644 --- a/webapp/web/templates/freemarker/body/partials/individual/individual-setup.ftl +++ b/webapp/web/templates/freemarker/body/partials/individual/individual-setup.ftl @@ -5,10 +5,6 @@ <#import "lib-list.ftl" as l> <#import "lib-properties.ftl" as p> -<#assign editing = individual.showEditingLinks> - -<#assign editingClass> - <#if editing>editing - +<#assign editable = individual.editable> <#assign propertyGroups = individual.propertyList> \ No newline at end of file diff --git a/webapp/web/templates/freemarker/body/partials/individual/lib-properties.ftl b/webapp/web/templates/freemarker/body/partials/individual/lib-properties.ftl index 5e69ced8e..ba399bbc5 100644 --- a/webapp/web/templates/freemarker/body/partials/individual/lib-properties.ftl +++ b/webapp/web/templates/freemarker/body/partials/individual/lib-properties.ftl @@ -4,46 +4,46 @@ Macros for generating property lists ------------------------------------------------------------------------------> -<#macro dataPropertyList statements showEditingLinks> - <#list statements as statement> - <@propertyListItem statement showEditingLinks>${statement.value} +<#macro dataPropertyList property editable> + <#list property.statements as statement> + <@propertyListItem property statement editable>${statement.value} -<#macro collatedObjectPropertyList property showEditingLinks> +<#macro collatedObjectPropertyList property editable> <#assign subclasses = property.subclasses> <#list subclasses?keys as subclass>
  • ${subclass?lower_case}

  • -<#macro simpleObjectPropertyList property showEditingLinks> - <@objectPropertyList property.statements "propStatement-simple.ftl" showEditingLinks /> +<#macro simpleObjectPropertyList property editable> + <@objectPropertyList property property.statements "propStatement-simple.ftl" editable /> -<#macro objectPropertyList statements template showEditingLinks> +<#macro objectPropertyList property statements template editable> <#list statements as statement> - <@propertyListItem statement showEditingLinks><#include "${template}"> + <@propertyListItem property statement editable><#include "${template}"> <#-- Some properties usually display without a label. But if there's an add link, we need to also show the property label. If no label is specified, the property name will be used as the label. --> -<#macro addLinkWithLabel property showEditingLinks label="${property.name?capitalize}"> - <#local addLink><@addLink property showEditingLinks /> +<#macro addLinkWithLabel property editable label="${property.name?capitalize}"> + <#local addLink><@addLink property editable /> <#if addLink?has_content>

    ${label} ${addLink}

    -<#macro addLink property showEditingLinks> - <#if showEditingLinks> +<#macro addLink property editable> + <#if editable> <#local url = property.addUrl> <#if url?has_content> add @@ -51,28 +51,28 @@ name will be used as the label. --> -<#macro propertyListItem statement showEditingLinks> +<#macro propertyListItem property statement editable>
  • <#nested> - <@editingLinks statement showEditingLinks /> + <@editingLinks property statement editable />
  • -<#macro editingLinks statement showEditingLinks> - <#if showEditingLinks> - <@editLink statement /> - <@deleteLink statement /> +<#macro editingLinks property statement editable> + <#if editable> + <@editLink property statement /> + <@deleteLink property statement /> -<#macro editLink statement> +<#macro editLink property statement> <#local url = statement.editUrl> <#if url?has_content> edit -<#macro deleteLink statement> +<#macro deleteLink property statement> <#local url = statement.deleteUrl> <#if url?has_content> delete @@ -98,13 +98,13 @@ name will be used as the label. --> <@addLinkWithLabel primaryLink showEditLinks "Primary Web Page" /> <#if primaryLink.statements?has_content> <#-- if there are any statements --> <@addLinkWithLabel additionalLinks showEditLinks "Additional Web Pages" /> <#if additionalLinks.statements?has_content> <#-- if there are any statements --> @@ -119,12 +119,11 @@ name will be used as the label. --> If there's a mainImage statement but no thumbnail image, treat it as if there is no image. --> <#if (mainImage.statements)?has_content && thumbUrl?has_content> ${individual.name} - <@p.editingLinks mainImage.statements[0] showEditLinks /> + <@p.editingLinks mainImage mainImage.statements[0] showEditLinks /> <#else> <@p.addLinkWithLabel mainImage showEditLinks "Photo" /> <#if placeholderImage?has_content> placeholder image - \ No newline at end of file