Skip to content

Commit 313317a

Browse files
committed
Merge pull request #3123 from IQSS/fix-guestbook-merge
Add the subpage breadcrumbs back into DataverseHeaderFragment
2 parents 235eaa6 + b6b7a43 commit 313317a

6 files changed

Lines changed: 143 additions & 112 deletions

File tree

src/main/java/Bundle.properties

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,10 @@ dataset.manageGuestbooks.guestbook.name.tip=Enter a unique name for this Guestbo
748748
dataset.manageGuestbooks.guestbook.dataCollected=Data Collected
749749
dataset.manageGuestbooks.guestbook.dataCollected.description=Dataverse account information that will be collected when a user downloads a file. Check the ones that will be required.
750750
dataset.manageGuestbooks.guestbook.customQuestions=Custom Questions
751+
dataset.manageGuestbooks.guestbook.requiredCustomQuestions=Required Custom Questions
752+
dataset.manageGuestbooks.guestbook.optionalCustomQuestions=Optional Custom Questions
753+
dataset.manageGuestbooks.guestbook.requiredAccountInformation=Required Account Information
754+
dataset.manageGuestbooks.guestbook.optionalAccountInformation=Optional Account Information
751755
dataset.manageGuestbooks.guestbook.customQuestions.description=Create your own questions to have users provide more than their account information when they download a file. Questions can be required or optional and answers can be text or multiple choice.
752756
dataset.manageGuestbooks.guestbook.customQuestions.questionType=Question Type
753757
dataset.manageGuestbooks.guestbook.customQuestions.questionText=Question Text

src/main/java/edu/harvard/iq/dataverse/DataverseHeaderFragment.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,12 @@ public void initBreadcrumbs(DvObject dvObject, String subPage) {
106106
breadcrumbs.clear();
107107

108108
while (dvObject != null) {
109-
breadcrumbs.add(0, new Breadcrumb(dvObject.getDisplayName(), dvObject));
109+
breadcrumbs.add(0, new Breadcrumb(dvObject, dvObject.getDisplayName()));
110110
dvObject = dvObject.getOwner();
111111
}
112112

113113
if (subPage != null) {
114-
breadcrumbs.add(new Breadcrumb(subPage, null));
114+
breadcrumbs.add(new Breadcrumb(subPage));
115115
}
116116
}
117117

@@ -243,17 +243,34 @@ private static String getPageFromContext() {
243243
}
244244
return "";
245245
}
246+
247+
public void addBreadcrumb (String url, String linkString){
248+
breadcrumbs.add(new Breadcrumb(url, linkString));
249+
}
250+
251+
public void addBreadcrumb (String linkString){
252+
breadcrumbs.add(new Breadcrumb(linkString));
253+
}
246254

247255
// inner class used for breadcrumbs
248256
public static class Breadcrumb {
249257

250258
private final String breadcrumbText;
251-
private final DvObject dvObject;
259+
private DvObject dvObject = null;
260+
private String url = null;
252261

253-
public Breadcrumb(String breadcrumbText, DvObject dvObject) {
254-
this.breadcrumbText = breadcrumbText;
255-
this.dvObject = dvObject;
262+
public Breadcrumb( DvObject dvObject, String breadcrumbText) {
263+
this.breadcrumbText = breadcrumbText;
264+
this.dvObject = dvObject;
265+
}
256266

267+
public Breadcrumb( String url, String breadcrumbText) {
268+
this.breadcrumbText = breadcrumbText;
269+
this.url = url;
270+
}
271+
272+
public Breadcrumb(String breadcrumbText){
273+
this.breadcrumbText = breadcrumbText;
257274
}
258275

259276
public String getBreadcrumbText() {
@@ -264,6 +281,9 @@ public DvObject getDvObject() {
264281
return dvObject;
265282
}
266283

267-
284+
public String getUrl() {
285+
return url;
286+
}
287+
268288
}
269289
}

src/main/java/edu/harvard/iq/dataverse/Guestbook.java

Lines changed: 42 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
package edu.harvard.iq.dataverse;
33

4+
import edu.harvard.iq.dataverse.util.BundleUtil;
45
import java.io.Serializable;
56
import java.text.SimpleDateFormat;
67
import java.util.ArrayList;
@@ -19,6 +20,7 @@
1920
import javax.persistence.Temporal;
2021
import javax.persistence.TemporalType;
2122
import javax.persistence.Transient;
23+
import org.apache.commons.lang.StringEscapeUtils;
2224
import org.hibernate.validator.constraints.NotBlank;
2325

2426
/**
@@ -186,94 +188,63 @@ public boolean isDeletable() {
186188

187189
public void setDeletable(boolean deletable) {
188190
this.deletable = deletable;
189-
}
190-
191-
public String getRequiredCustomQuestionsString(){
192-
String retVal = "";
193-
for (CustomQuestion cq : this.getCustomQuestions()){
194-
if(cq.isRequired()){
195-
if(retVal.isEmpty()){
196-
retVal = "Required Custom Questions<br/>&#160; &#8226; " + cq.getQuestionString();
197-
} else {
198-
retVal += "<br/>&#160; &#8226; " + cq.getQuestionString();
199-
}
200-
}
201-
}
202-
return retVal;
203-
}
204-
205-
public String getOptionalCustomQuestionsString(){
206-
String retVal = "";
207-
for (CustomQuestion cq : this.getCustomQuestions()){
208-
if(!cq.isRequired()){
209-
if(retVal.isEmpty()){
210-
retVal = "Optional Custom Questions<br/>&#160; &#8226; " + cq.getQuestionString();
211-
} else {
212-
retVal += "<br/>&#160; &#8226; " + cq.getQuestionString();
213-
}
214-
}
215-
}
216-
return retVal;
217-
}
191+
}
218192

219-
public String getRequiredAccountInformationString(){
220-
String retVal = "";
221-
if(nameRequired){
222-
retVal = "Required Account Information<br/>&#160; &#8226; Name";
193+
public List<String> getRequiredAccountInformation() {
194+
List<String> retList = new ArrayList();
195+
if (nameRequired) {
196+
retList.add(BundleUtil.getStringFromBundle("name"));
223197
}
224-
if(emailRequired){
225-
if(retVal.isEmpty()){
226-
retVal = "Required Account Information<br/>&#160; &#8226; Email";
227-
} else {
228-
retVal += "<br/>&#160; &#8226; Email";
229-
}
198+
if (emailRequired) {
199+
retList.add(BundleUtil.getStringFromBundle("email"));
230200
}
231-
if(institutionRequired){
232-
if(retVal.isEmpty()){
233-
retVal = "Required Account Information<br/>&#160; &#8226; Institution";
234-
} else {
235-
retVal += "<br/>&#160; &#8226; Institution";
236-
}
201+
if (institutionRequired) {
202+
retList.add(BundleUtil.getStringFromBundle("institution"));
237203
}
238-
if(positionRequired){
239-
if(retVal.isEmpty()){
240-
retVal = "Required Account Information<br/>&#160; &#8226; Position";
241-
} else {
242-
retVal += "<br/>&#160; &#8226; Position";
243-
}
204+
if (positionRequired) {
205+
retList.add(BundleUtil.getStringFromBundle("position"));
244206
}
245-
return retVal;
207+
return retList;
246208
}
247209

248-
public String getOptionalAccountInformationString(){
249-
String retVal = "";
210+
public List<String> getOptionalAccountInformation(){
211+
List <String> retList = new ArrayList();
250212
if(!nameRequired){
251-
retVal = "Optional Account Information<br/>&#160; &#8226; Name";
213+
retList.add(BundleUtil.getStringFromBundle("name"));
252214
}
253215
if(!emailRequired){
254-
if(retVal.isEmpty()){
255-
retVal = "Optional Account Information<br/>&#160; &#8226; Email";
256-
} else {
257-
retVal += "<br/>&#160; &#8226; Email";
258-
}
216+
retList.add(BundleUtil.getStringFromBundle("email"));
259217
}
260218
if(!institutionRequired){
261-
if(retVal.isEmpty()){
262-
retVal = "Optional Account Information<br/>&#160; &#8226; Institution";
263-
} else {
264-
retVal += "<br/>&#160; &#8226; Institution";
265-
}
219+
retList.add(BundleUtil.getStringFromBundle("institution"));
266220
}
267221
if(!positionRequired){
268-
if(retVal.isEmpty()){
269-
retVal = "Optional Account Information<br/>&#160; &#8226; Position";
270-
} else {
271-
retVal += "<br/>&#160; &#8226; Position";
272-
}
222+
retList.add(BundleUtil.getStringFromBundle("position"));
273223
}
274-
return retVal;
224+
return retList;
225+
226+
}
227+
228+
public List<String> getRequiredQuestionsList(){
229+
List <String> retList = new ArrayList();
230+
for (CustomQuestion cq : this.getCustomQuestions()){
231+
if(cq.isRequired()){
232+
retList.add(cq.getQuestionString());
233+
}
234+
}
235+
return retList;
275236
}
276237

238+
public List<String> getOptionalQuestionsList(){
239+
List <String> retList = new ArrayList();
240+
for (CustomQuestion cq : this.getCustomQuestions()){
241+
if(!cq.isRequired()){
242+
retList.add(cq.getQuestionString());
243+
}
244+
}
245+
return retList;
246+
}
247+
277248
public void removeCustomQuestion(int index){
278249
customQuestions.remove(index);
279250
}

src/main/webapp/dataset-license-terms.xhtml

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -555,20 +555,42 @@
555555
#{bundle['dataset.manageGuestbooks.tab.action.btn.view.dialog.userCollectedData']}
556556
</span>
557557
</label>
558-
<div class="col-sm-8">
559-
<div class="form-control-static" jsf:rendered="#{!empty DatasetPage.selectedGuestbook.requiredAccountInformationString}">
560-
<h:outputText value="#{DatasetPage.selectedGuestbook.requiredAccountInformationString}" escape="false"/>
561-
</div>
562-
<div class="form-control-static" jsf:rendered="#{!empty DatasetPage.selectedGuestbook.optionalAccountInformationString}">
563-
<h:outputText value="#{DatasetPage.selectedGuestbook.optionalAccountInformationString}" escape="false"/>
558+
<div class="col-sm-8" style="padding-top:8px">
559+
<div jsf:rendered="#{!empty DatasetPage.selectedGuestbook.requiredAccountInformation}">
560+
#{bundle['dataset.manageGuestbooks.guestbook.requiredAccountInformation']}
561+
<ui:repeat value="#{DatasetPage.selectedGuestbook.requiredAccountInformation}" var="q">
562+
<li style="padding-left:20px" >
563+
<h:outputText value="#{q}"/>
564+
</li>
565+
</ui:repeat>
566+
<br/>
564567
</div>
565-
<div class="form-control-static" jsf:rendered="#{!empty DatasetPage.selectedGuestbook.requiredCustomQuestionsString}">
566-
<o:importFunctions type="edu.harvard.iq.dataverse.util.MarkupChecker" />
567-
<h:outputText value="#{StringEscapeUtils:escapeHtml(DatasetPage.selectedGuestbook.requiredCustomQuestionsString)}" escape="false"/>
568+
569+
<div jsf:rendered="#{!empty DatasetPage.selectedGuestbook.optionalAccountInformation}">
570+
#{bundle['dataset.manageGuestbooks.guestbook.optionalAccountInformation']}
571+
<ui:repeat value="#{DatasetPage.selectedGuestbook.optionalAccountInformation}" var="q">
572+
<li style="padding-left:20px" >
573+
<h:outputText value="#{q}"/>
574+
</li>
575+
</ui:repeat>
576+
<br/>
577+
</div>
578+
<div jsf:rendered="#{!empty DatasetPage.selectedGuestbook.requiredQuestionsList}">
579+
#{bundle['dataset.manageGuestbooks.guestbook.requiredCustomQuestions']}
580+
<ui:repeat value="#{DatasetPage.selectedGuestbook.requiredQuestionsList}" var="q">
581+
<li style="padding-left:20px" >
582+
<h:outputText value="#{q}"/>
583+
</li>
584+
</ui:repeat>
585+
<br/>
568586
</div>
569-
<div class="form-control-static" jsf:rendered="#{!empty DatasetPage.selectedGuestbook.optionalCustomQuestionsString}">
570-
<o:importFunctions type="edu.harvard.iq.dataverse.util.MarkupChecker" />
571-
<h:outputText value="#{StringEscapeUtils:escapeHtml(DatasetPage.selectedGuestbook.optionalCustomQuestionsString)}" escape="false"/>
587+
<div jsf:rendered="#{!empty DatasetPage.selectedGuestbook.optionalQuestionsList}">
588+
#{bundle['dataset.manageGuestbooks.guestbook.optionalCustomQuestions']}
589+
<ui:repeat value="#{DatasetPage.selectedGuestbook.optionalQuestionsList}" var="q">
590+
<li style="padding-left:20px" >
591+
<h:outputText value="#{q}"/>
592+
</li>
593+
</ui:repeat>
572594
</div>
573595
</div>
574596
</div>

src/main/webapp/guestbook-responses.xhtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
<f:viewParam name="dataverseId" value="#{guestbookResponsesPage.dataverseId}"/>
1616
<f:viewAction action="#{guestbookResponsesPage.init}"/>
1717
<f:viewAction action="#{dataverseHeaderFragment.initBreadcrumbs(guestbookResponsesPage.dataverse)}"/>
18-
<f:viewAction action="#{dataverseHeaderFragment.addBreadcrumb(bundle['dataset.manageGuestbooks.pageTitle'], '/manage-guestbooks.xhtml?dataverseId='.concat(guestbookResponsesPage.dataverseId))}"/>
19-
<f:viewAction action="#{dataverseHeaderFragment.addBreadcrumb(bundle['dataset.guestbookResponses.pageTitle'], null)}"/>
18+
<f:viewAction action="#{dataverseHeaderFragment.addBreadcrumb('/manage-guestbooks.xhtml?dataverseId='.concat(guestbookResponsesPage.dataverseId), bundle['dataset.manageGuestbooks.pageTitle'])}"/>
19+
<f:viewAction action="#{dataverseHeaderFragment.addBreadcrumb(bundle['dataset.guestbookResponses.pageTitle'])}"/>
2020
</f:metadata>
2121
<ui:composition template="/dataverse_template.xhtml">
2222
<ui:param name="pageTitle" value="#{bundle['dataset.guestbookResponses.pageTitle']}"/>

src/main/webapp/manage-guestbooks.xhtml

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -176,28 +176,42 @@
176176
#{bundle['dataset.manageGuestbooks.tab.action.btn.view.dialog.userCollectedData']}
177177
</span>
178178
</label>
179-
<div class="col-sm-7">
180-
<div jsf:rendered="#{!empty manageGuestbooksPage.selectedGuestbook.requiredAccountInformationString}">
181-
<p class="form-control-static">
182-
<h:outputText value="#{manageGuestbooksPage.selectedGuestbook.requiredAccountInformationString}" escape="false"/>
183-
</p>
184-
</div>
185-
<div jsf:rendered="#{!empty manageGuestbooksPage.selectedGuestbook.optionalAccountInformationString}">
186-
<p class="form-control-static">
187-
<h:outputText value="#{manageGuestbooksPage.selectedGuestbook.optionalAccountInformationString}" escape="false"/>
188-
</p>
179+
<div class="col-sm-8" style="padding-top:8px">
180+
<div jsf:rendered="#{!empty manageGuestbooksPage.selectedGuestbook.requiredAccountInformation}">
181+
#{bundle['dataset.manageGuestbooks.guestbook.requiredAccountInformation']}
182+
<ui:repeat value="#{manageGuestbooksPage.selectedGuestbook.requiredAccountInformation}" var="q">
183+
<li style="padding-left:20px" >
184+
<h:outputText value="#{q}"/>
185+
</li>
186+
</ui:repeat>
187+
<br/>
189188
</div>
190-
<div jsf:rendered="#{!empty manageGuestbooksPage.selectedGuestbook.requiredCustomQuestionsString}">
191-
<p class="form-control-static">
192-
193-
<h:outputText value="#{StringEscapeUtils:escapeHtml(manageGuestbooksPage.selectedGuestbook.requiredCustomQuestionsString)}" escape="false"/>
194-
</p>
189+
<div jsf:rendered="#{!empty manageGuestbooksPage.selectedGuestbook.optionalAccountInformation}">
190+
#{bundle['dataset.manageGuestbooks.guestbook.optionalAccountInformation']}
191+
<ui:repeat value="#{manageGuestbooksPage.selectedGuestbook.optionalAccountInformation}" var="q">
192+
<li style="padding-left:20px" >
193+
<h:outputText value="#{q}"/>
194+
</li>
195+
</ui:repeat>
196+
<br/>
197+
</div>
198+
<div jsf:rendered="#{!empty manageGuestbooksPage.selectedGuestbook.requiredQuestionsList}">
199+
#{bundle['dataset.manageGuestbooks.guestbook.requiredCustomQuestions']}
200+
<ui:repeat value="#{manageGuestbooksPage.selectedGuestbook.requiredQuestionsList}" var="q">
201+
<li style="padding-left:20px" >
202+
<h:outputText value="#{q}"/>
203+
</li>
204+
</ui:repeat>
205+
<br/>
195206
</div>
196-
<div jsf:rendered="#{!empty manageGuestbooksPage.selectedGuestbook.optionalCustomQuestionsString}">
197-
<p class="form-control-static">
198-
199-
<h:outputText value="#{StringEscapeUtils:escapeHtml(manageGuestbooksPage.selectedGuestbook.optionalCustomQuestionsString)}" escape="false"/>
200-
</p>
207+
<div jsf:rendered="#{!empty manageGuestbooksPage.selectedGuestbook.optionalQuestionsList}">
208+
#{bundle['dataset.manageGuestbooks.guestbook.optionalCustomQuestions']}
209+
<ui:repeat value="#{manageGuestbooksPage.selectedGuestbook.optionalQuestionsList}" var="q">
210+
<li style="padding-left:20px" >
211+
<h:outputText value="#{q}"/>
212+
</li>
213+
</ui:repeat>
214+
<br/>
201215
</div>
202216
</div>
203217
</div>

0 commit comments

Comments
 (0)