More changes to ontology editing forms and console pages based on help from Manolo
This commit is contained in:
parent
4602b4364d
commit
32cd580d81
7 changed files with 184 additions and 142 deletions
|
@ -49,19 +49,19 @@ public class DatapropEditController extends BaseEditController {
|
|||
PropertyGroupDao pgDao = vreq.getFullWebappDaoFactory().getPropertyGroupDao();
|
||||
|
||||
ArrayList results = new ArrayList();
|
||||
results.add("Data Property");
|
||||
results.add("data property");
|
||||
results.add("ontology");
|
||||
results.add("display name");
|
||||
results.add("group");
|
||||
results.add("domain");
|
||||
results.add("range datatype");
|
||||
results.add("group");
|
||||
results.add("display tier");
|
||||
results.add("data entry limit");
|
||||
results.add("example");
|
||||
results.add("description");
|
||||
results.add("public description");
|
||||
results.add("example");
|
||||
results.add("editor description");
|
||||
results.add("display level");
|
||||
results.add("update level");
|
||||
results.add("display tier");
|
||||
results.add("display limit");
|
||||
results.add("custom entry form");
|
||||
results.add("URI");
|
||||
|
||||
|
@ -78,6 +78,17 @@ public class DatapropEditController extends BaseEditController {
|
|||
results.add(ontologyName==null ? "(not identified)" : ontologyName);
|
||||
results.add(dp.getPublicName() == null ? "(no public name)" : dp.getPublicName());
|
||||
|
||||
if (dp.getGroupURI() != null) {
|
||||
PropertyGroup pGroup = pgDao.getGroupByURI(dp.getGroupURI());
|
||||
if (pGroup != null) {
|
||||
results.add(pGroup.getName());
|
||||
} else {
|
||||
results.add(dp.getGroupURI());
|
||||
}
|
||||
} else {
|
||||
results.add("(unspecified)");
|
||||
}
|
||||
|
||||
// we support parents now, but not the simple getParent() style method
|
||||
//String parentPropertyStr = "<i>(datatype properties are not yet modeled in a property hierarchy)</i>"; // TODO - need multiple inheritance
|
||||
//results.add(parentPropertyStr);
|
||||
|
@ -93,27 +104,19 @@ public class DatapropEditController extends BaseEditController {
|
|||
|
||||
String rangeStr = (dp.getRangeDatatypeURI() == null) ? "<i>untyped</i> (rdfs:Literal)" : dp.getRangeDatatypeURI(); // TODO
|
||||
results.add(rangeStr);
|
||||
if (dp.getGroupURI() != null) {
|
||||
PropertyGroup pGroup = pgDao.getGroupByURI(dp.getGroupURI());
|
||||
if (pGroup != null) {
|
||||
results.add(pGroup.getName());
|
||||
} else {
|
||||
results.add(dp.getGroupURI());
|
||||
}
|
||||
} else {
|
||||
results.add("unspecified");
|
||||
}
|
||||
results.add(String.valueOf(dp.getDisplayTier()));
|
||||
results.add(String.valueOf(dp.getDisplayLimit()));
|
||||
|
||||
String publicDescriptionStr = (dp.getPublicDescription() == null) ? "" : dp.getPublicDescription();
|
||||
results.add(publicDescriptionStr);
|
||||
String exampleStr = (dp.getExample() == null) ? "" : dp.getExample();
|
||||
results.add(exampleStr);
|
||||
String descriptionStr = (dp.getDescription() == null) ? "" : dp.getDescription();
|
||||
results.add(descriptionStr);
|
||||
String publicDescriptionStr = (dp.getPublicDescription() == null) ? "" : dp.getPublicDescription();
|
||||
results.add(publicDescriptionStr);
|
||||
results.add(dp.getHiddenFromDisplayBelowRoleLevel() == null ? "unspecified" : dp.getHiddenFromDisplayBelowRoleLevel().getLabel());
|
||||
results.add(dp.getProhibitedFromUpdateBelowRoleLevel() == null ? "unspecified" : dp.getProhibitedFromUpdateBelowRoleLevel().getLabel());
|
||||
results.add(dp.getCustomEntryForm() == null ? "unspecified" : dp.getCustomEntryForm());
|
||||
|
||||
results.add(dp.getHiddenFromDisplayBelowRoleLevel() == null ? "(unspecified)" : dp.getHiddenFromDisplayBelowRoleLevel().getLabel());
|
||||
results.add(dp.getProhibitedFromUpdateBelowRoleLevel() == null ? "(unspecified)" : dp.getProhibitedFromUpdateBelowRoleLevel().getLabel());
|
||||
results.add(String.valueOf(dp.getDisplayTier()));
|
||||
results.add(String.valueOf(dp.getDisplayLimit()));
|
||||
results.add(dp.getCustomEntryForm() == null ? "(unspecified)" : dp.getCustomEntryForm());
|
||||
results.add(dp.getURI() == null ? "" : dp.getURI());
|
||||
request.setAttribute("results",results);
|
||||
request.setAttribute("columncount",NUM_COLS);
|
||||
|
|
|
@ -53,7 +53,7 @@ public class PropertyEditController extends BaseEditController {
|
|||
request.setAttribute("property",p);
|
||||
|
||||
ArrayList<String> results = new ArrayList<String>();
|
||||
results.add("Property"); // column 1
|
||||
results.add("property"); // column 1
|
||||
results.add("parent property"); // column 2
|
||||
results.add("domain"); // column 3
|
||||
results.add("range"); // column 4
|
||||
|
@ -67,8 +67,8 @@ public class PropertyEditController extends BaseEditController {
|
|||
results.add("update level"); // column 12
|
||||
results.add("custom entry form"); // column 13
|
||||
results.add("select from existing"); // column 14
|
||||
results.add("offer create new option"); // column 15
|
||||
results.add("relatedsort direction"); // column 16
|
||||
results.add("offer create new"); // column 15
|
||||
results.add("sort direction"); // column 16
|
||||
results.add("URI"); // column 17
|
||||
|
||||
String displayName = (p.getDomainPublic()==null) ? p.getLocalName() : p.getDomainPublic();
|
||||
|
@ -132,10 +132,10 @@ public class PropertyEditController extends BaseEditController {
|
|||
if (pGroup != null){
|
||||
results.add(pGroup.getName()); // column 6
|
||||
} else {
|
||||
results.add("unnamed group"); // column 6
|
||||
results.add("(unnamed group)"); // column 6
|
||||
}
|
||||
} else {
|
||||
results.add("unspecified"); // column 6
|
||||
results.add("(unspecified)"); // column 6
|
||||
}
|
||||
results.add("domain: "+p.getDomainDisplayTier() + ", range: "+p.getRangeDisplayTier()); // column 7
|
||||
String publicDescriptionStr = (p.getPublicDescription() == null) ? "" : p.getPublicDescription();
|
||||
|
@ -145,10 +145,10 @@ public class PropertyEditController extends BaseEditController {
|
|||
String descriptionStr = (p.getDescription() == null) ? "" : p.getDescription();
|
||||
results.add(descriptionStr); // column 10
|
||||
|
||||
results.add(p.getHiddenFromDisplayBelowRoleLevel() == null ? "unspecified" : p.getHiddenFromDisplayBelowRoleLevel().getLabel()); // column 11
|
||||
results.add(p.getProhibitedFromUpdateBelowRoleLevel() == null ? "unspecified" : p.getProhibitedFromUpdateBelowRoleLevel().getLabel()); // column 12
|
||||
results.add(p.getHiddenFromDisplayBelowRoleLevel() == null ? "(unspecified)" : p.getHiddenFromDisplayBelowRoleLevel().getLabel()); // column 11
|
||||
results.add(p.getProhibitedFromUpdateBelowRoleLevel() == null ? "(unspecified)" : p.getProhibitedFromUpdateBelowRoleLevel().getLabel()); // column 12
|
||||
|
||||
results.add(p.getCustomEntryForm() == null ? "unspecified" : p.getCustomEntryForm()); // column 13
|
||||
results.add(p.getCustomEntryForm() == null ? "(unspecified)" : p.getCustomEntryForm()); // column 13
|
||||
results.add(p.getSelectFromExisting() ? "true" : "false"); // column 14
|
||||
results.add(p.getOfferCreateNewOption() ? "true" : "false"); // column 15
|
||||
//results.add(p.getStubObjectRelation() ? "true" : "false"); // column 16
|
||||
|
|
|
@ -27,11 +27,12 @@ import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
|
|||
import edu.cornell.mannlib.vitro.webapp.dao.VClassDao;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.VClassGroupDao;
|
||||
import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory;
|
||||
import edu.cornell.mannlib.vitro.webapp.beans.Ontology;
|
||||
|
||||
public class VclassEditController extends BaseEditController {
|
||||
|
||||
private static final Log log = LogFactory.getLog(VclassEditController.class.getName());
|
||||
private static final int NUM_COLS = 10;
|
||||
private static final int NUM_COLS = 13;
|
||||
|
||||
public void doPost (HttpServletRequest req, HttpServletResponse response) {
|
||||
if (!isAuthorizedToDisplayPage(req, response, SimplePermission.EDIT_ONTOLOGY.ACTIONS)) {
|
||||
|
@ -54,24 +55,31 @@ public class VclassEditController extends BaseEditController {
|
|||
request.setAttribute("VClass",vcl);
|
||||
|
||||
ArrayList results = new ArrayList();
|
||||
results.add("Class"); // 1
|
||||
results.add("short definition"); // 2
|
||||
results.add("example"); // 3
|
||||
results.add("description"); // 4
|
||||
results.add("editor comments"); // 5
|
||||
results.add("group"); // 6
|
||||
results.add("display level"); // 7
|
||||
results.add("update level"); // 8
|
||||
results.add("custom entry form"); // 9
|
||||
results.add("URI"); // 10
|
||||
results.add("class"); // 1
|
||||
results.add("ontology"); // 2
|
||||
results.add("display name"); // 3
|
||||
results.add("group"); // 4
|
||||
results.add("short definition"); // 5
|
||||
results.add("example"); // 6
|
||||
results.add("editor description"); // 7
|
||||
results.add("curator comments"); // 8
|
||||
results.add("display level"); // 9
|
||||
results.add("update level"); // 10
|
||||
results.add("display rank"); // 11
|
||||
results.add("custom entry form"); // 12
|
||||
results.add("URI"); // 13
|
||||
|
||||
String name = vcl.getLocalNameWithPrefix();
|
||||
String shortDef = (vcl.getShortDef()==null) ? "" : vcl.getShortDef();
|
||||
String example = (vcl.getExample()==null) ? "" : vcl.getExample();
|
||||
String description = (vcl.getDescription()==null) ? "" : vcl.getDescription();
|
||||
|
||||
String ontologyName = null;
|
||||
if (vcl.getNamespace() != null) {
|
||||
Ontology ont = request.getFullWebappDaoFactory().getOntologyDao().getOntologyByURI(vcl.getNamespace());
|
||||
if ( (ont != null) && (ont.getName() != null) ) {
|
||||
ontologyName = ont.getName();
|
||||
}
|
||||
}
|
||||
|
||||
WebappDaoFactory wadf = request.getFullWebappDaoFactory();
|
||||
|
||||
String groupURI = vcl.getGroupURI();
|
||||
String groupName = "none";
|
||||
if(groupURI != null) {
|
||||
|
@ -82,6 +90,10 @@ public class VclassEditController extends BaseEditController {
|
|||
}
|
||||
}
|
||||
|
||||
String shortDef = (vcl.getShortDef()==null) ? "" : vcl.getShortDef();
|
||||
String example = (vcl.getExample()==null) ? "" : vcl.getExample();
|
||||
String description = (vcl.getDescription()==null) ? "" : vcl.getDescription();
|
||||
|
||||
boolean foundComment = false;
|
||||
StringBuffer commSb = null;
|
||||
for (Iterator<String> commIt = request.getFullWebappDaoFactory().getCommentsForResource(vcl.getURI()).iterator(); commIt.hasNext();) {
|
||||
|
@ -95,26 +107,28 @@ public class VclassEditController extends BaseEditController {
|
|||
commSb = new StringBuffer("no comments yet");
|
||||
}
|
||||
|
||||
String hiddenFromDisplay = (vcl.getHiddenFromDisplayBelowRoleLevel() == null ? "unspecified" : vcl.getHiddenFromDisplayBelowRoleLevel().getLabel());
|
||||
String ProhibitedFromUpdate = (vcl.getProhibitedFromUpdateBelowRoleLevel() == null ? "unspecified" : vcl.getProhibitedFromUpdateBelowRoleLevel().getLabel());
|
||||
String hiddenFromDisplay = (vcl.getHiddenFromDisplayBelowRoleLevel() == null ? "(unspecified)" : vcl.getHiddenFromDisplayBelowRoleLevel().getLabel());
|
||||
String ProhibitedFromUpdate = (vcl.getProhibitedFromUpdateBelowRoleLevel() == null ? "(unspecified)" : vcl.getProhibitedFromUpdateBelowRoleLevel().getLabel());
|
||||
|
||||
String customEntryForm = (vcl.getCustomEntryForm() == null ? "(unspecified)" : vcl.getCustomEntryForm());
|
||||
|
||||
String customEntryForm = (vcl.getCustomEntryForm() == null ? "" : vcl.getCustomEntryForm());
|
||||
String customDisplayView = (vcl.getCustomDisplayView() == null ? "" : vcl.getCustomDisplayView());
|
||||
String customShortView = (vcl.getCustomShortView() == null ? "" : vcl.getCustomShortView());
|
||||
String customSearchView = (vcl.getCustomSearchView() == null ? "" : vcl.getCustomSearchView());
|
||||
//String lastModified = "<i>not implemented yet</i>"; // TODO
|
||||
|
||||
String uri = (vcl.getURI() == null) ? "" : vcl.getURI();
|
||||
|
||||
results.add(name); // 1
|
||||
results.add(shortDef); // 2
|
||||
results.add(example); // 3
|
||||
results.add(description); // 4
|
||||
results.add(commSb.toString()); // 5
|
||||
results.add(groupName); // 6
|
||||
results.add(hiddenFromDisplay); // 7
|
||||
results.add(ProhibitedFromUpdate); // 8
|
||||
results.add(customEntryForm); // 9
|
||||
results.add(uri); // 10
|
||||
results.add(ontologyName==null ? "(not identified)" : ontologyName); //2
|
||||
results.add(vcl.getName() == null ? "(no public name)" : vcl.getName()); //3
|
||||
results.add(groupName); // 4
|
||||
results.add(shortDef); // 5
|
||||
results.add(example); // 6
|
||||
results.add(description); // 7
|
||||
results.add(commSb.toString()); // 8
|
||||
results.add(hiddenFromDisplay); // 9
|
||||
results.add(ProhibitedFromUpdate); // 10
|
||||
results.add(String.valueOf(vcl.getDisplayRank())); // 11
|
||||
results.add(customEntryForm); // 12
|
||||
results.add(uri); // 13
|
||||
request.setAttribute("results", results);
|
||||
request.setAttribute("columncount", NUM_COLS);
|
||||
request.setAttribute("suppressquery", "true");
|
||||
|
|
|
@ -195,6 +195,7 @@ form textarea {
|
|||
border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
font-style: normal;
|
||||
}
|
||||
.maxWidth {
|
||||
margin-top: 20px;
|
||||
|
@ -300,8 +301,10 @@ p.submit {
|
|||
font-size: 1em;
|
||||
}
|
||||
.verticalfieldlabel {
|
||||
color: #5F6464;
|
||||
font-size: .8em;
|
||||
color: #5E6363; /*#5F6464;*/
|
||||
font-style: normal !important;
|
||||
font-size: 10pt !important;
|
||||
line-height: 2em !important;
|
||||
}
|
||||
.row, .rowvert {
|
||||
background-color: #f7f9f9;
|
||||
|
@ -320,7 +323,8 @@ p.submit {
|
|||
.rowbold {
|
||||
background-color: #FFFAFA;
|
||||
color: #5F6464;
|
||||
font-size: 1em;
|
||||
font-size: 10pt; /*1em;*/
|
||||
line-height: 2em;
|
||||
}
|
||||
.rownum {
|
||||
background-color: #F1F2EE;
|
||||
|
@ -398,9 +402,30 @@ tr.editformcell td input[type="text"] {
|
|||
}
|
||||
|
||||
tr.editformcell td input.fullWidthInput {
|
||||
width: 90% !important;
|
||||
width: 70% !important;
|
||||
margin-top: 0.7em !important;
|
||||
}
|
||||
|
||||
tr.editformcell td input.shortInput {
|
||||
width: 20% !important;
|
||||
margin-top: 0.7em !important;
|
||||
}
|
||||
|
||||
tr.editformcell td textarea.matchingInput {
|
||||
width: 95%;
|
||||
height:10ex;
|
||||
margin-top:0.7em;
|
||||
font-style: normal !important;
|
||||
}
|
||||
|
||||
hr.formDivider {
|
||||
background-color: #3196C4;
|
||||
border: 0 none;
|
||||
height: 1px;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 15px;
|
||||
opacity: 0.3;
|
||||
}
|
||||
tr.editformcell td select {
|
||||
font-size: .8em;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Public label</b><br/>
|
||||
<input name="PublicName" type="text" class="fullWidthInput" value="<form:value name="PublicName"/>"/>
|
||||
<input type="text" class="fullWidthInput" name="PublicName" value="<form:value name="PublicName"/>"/>
|
||||
<c:set var="PublicNameError"><form:error name="PublicName"/></c:set>
|
||||
<c:if test="${!empty PublicNameError}">
|
||||
<span class="notice"><c:out value="${PublicNameError}"/></span>
|
||||
|
@ -15,12 +15,12 @@
|
|||
<td valign="top" colspan="2">
|
||||
<b>Property group</b><br/>
|
||||
<select name="GroupURI">
|
||||
<form:option name="GroupURI"/>
|
||||
<form:option name="GroupURI"/>
|
||||
</select><br/>
|
||||
<i>for grouping properties on individual pages</i><br/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<!-- c:set var="existingLocalName" value="<form:value name='LocalName'/>"/ -->
|
||||
<td valign="top" colspan="2">
|
||||
|
@ -40,14 +40,14 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
<td valign="top" colspan="2">
|
||||
<b>Internal name*</b> (RDF local name)<br/><br/>
|
||||
<b>Internal name*</b> (RDF local name)<br/>
|
||||
<c:choose>
|
||||
<c:when test="${_action eq 'update'}">
|
||||
<input type="text" name="LocalName" class="fullWidthInput" value="<form:value name="LocalName"/>" disabled="disabled"/><br/>
|
||||
<input type="text" class="fullWidthInput" name="LocalName" value="<form:value name="LocalName"/>" disabled="disabled"/><br/>
|
||||
<i>Edit via "change URI"</i><br/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input type="text" name="LocalName" class="fullWidthInput" value="<form:value name="LocalName"/>"/><br/>
|
||||
<input type="text" class="fullWidthInput" name="LocalName" value="<form:value name="LocalName"/>"/><br/>
|
||||
<i>must be valid XML without spaces; by</i><br/>
|
||||
<i>convention use camel case with no initial capital</i><br/>
|
||||
</c:otherwise>
|
||||
|
@ -58,7 +58,7 @@
|
|||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Domain class</b><br/>
|
||||
|
@ -74,27 +74,27 @@
|
|||
<i>Use "untyped" instead of "string" to allow language tags</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="4">
|
||||
<b>Make this property be:</b><br/><br/>
|
||||
<b>Make this property be:</b><br/>
|
||||
<c:set var="functionalLabel" value=" functional"/>
|
||||
<c:choose>
|
||||
<c:when test="${functional}">
|
||||
<input name="Functional" type="checkbox" value="TRUE" checked="checked"/>${functionalLabel}<br/><br/>
|
||||
<input name="Functional" type="checkbox" value="TRUE" checked="checked"/>${functionalLabel}<br/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input name="Functional" type="checkbox" value="TRUE"/>${functionalLabel}<br/><br/>
|
||||
<input name="Functional" type="checkbox" value="TRUE"/>${functionalLabel}<br/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<i>A "functional" property has at most one value for each individual</i></br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="4">
|
||||
<b>Public description</b> for front-end users, as it will appear on editing forms<br/>
|
||||
<textarea name="PublicDescription"><form:value name="PublicDescription"/></textarea>
|
||||
<textarea class="matchingInput" name="PublicDescription"><form:value name="PublicDescription"/></textarea>
|
||||
<c:set var="PublicDescriptionError"><form:error name="PublicDescription"/></c:set>
|
||||
<c:if test="${!empty PublicDescriptionError}">
|
||||
<span class="notice"><c:out value="${PublicDescriptionError}"/></span>
|
||||
|
@ -104,7 +104,7 @@
|
|||
<tr class="editformcell">
|
||||
<td valign="top" colspan="4">
|
||||
<b>Example</b> for ontology editors<br/>
|
||||
<textarea name="Example"><form:value name="Example"/></textarea>
|
||||
<textarea class="matchingInput" name="Example"><form:value name="Example"/></textarea>
|
||||
<c:set var="ExampleError"><form:error name="Example"/></c:set>
|
||||
<c:if test="${!empty ExampleError}">
|
||||
<span class="notice"><c:out value="${ExampleError}"/></span>
|
||||
|
@ -114,14 +114,14 @@
|
|||
<tr class="editformcell">
|
||||
<td valign="top" colspan="4">
|
||||
<b>Description</b> for ontology editors<br/>
|
||||
<textarea name="Description"><form:value name="Description"/></textarea>
|
||||
<textarea class="matchingInput" name="Description"><form:value name="Description"/></textarea>
|
||||
<c:set var="DescriptionError"><form:error name="Description"/></c:set>
|
||||
<c:if test="${!empty DescriptionError}">
|
||||
<span class="notice"><c:out value="${DescriptionError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Display level</b><br/>
|
||||
|
@ -134,11 +134,11 @@
|
|||
<i>specify least restrictive level allowed</i><br/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Display tier</b> within property group<br/>
|
||||
<input type="text" name="DisplayTier" value="<form:value name="DisplayTier"/>"/>
|
||||
<input type="text" class="shortInput" name="DisplayTier" value="<form:value name="DisplayTier"/>"/>
|
||||
<c:set var="DisplayTierError"><form:error name="DisplayTier"/></c:set>
|
||||
<c:if test="${!empty DisplayTierError}">
|
||||
<span class="notice"><c:out value="${DisplayTierError}"/></span>
|
||||
|
@ -146,18 +146,18 @@
|
|||
</td>
|
||||
<td valign="top" colspan="2">
|
||||
<b>Display limit</b> before "more ..." button is displayed<br/>
|
||||
<input type="text" name="DisplayLimit" value="<form:value name="DisplayLimit"/>"/>
|
||||
<input type="text" class="shortInput" name="DisplayLimit" value="<form:value name="DisplayLimit"/>"/>
|
||||
<c:set var="DisplayLimitError"><form:error name="DisplayLimit"/></c:set>
|
||||
<c:if test="${!empty DisplayLimitError}">
|
||||
<span class="notice"><c:out value="${DisplayLimitError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Custom entry form</b><br/>
|
||||
<input type="text" name="CustomEntryForm" class="fullWidthInput" value="<form:value name="CustomEntryForm"/>" />
|
||||
<input type="text" class="fullWidthInput" name="CustomEntryForm" value="<form:value name="CustomEntryForm"/>" />
|
||||
<c:set var="CustomEntryFormError"><form:error name="CustomEntryForm"/></c:set>
|
||||
<c:if test="${!empty CustomEntryFormError}">
|
||||
<span class="notice"><c:out value="${CustomEntryFormError}"/></span>
|
||||
|
@ -165,5 +165,5 @@
|
|||
</td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<i>for grouping properties on individual pages</i><br/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td style="vertical-align:top;" valign="top" colspan="1">
|
||||
<b>Ontology</b><br/>
|
||||
|
@ -30,14 +30,14 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
<td style="vertical-align:top;" valign="top" colspan="2">
|
||||
<b>Internal name*</b> (RDF local name)<br/><br/>
|
||||
<b>Internal name*</b> (RDF local name)<br/>
|
||||
<c:choose>
|
||||
<c:when test="${_action eq 'update'}">
|
||||
<input type="text" name="LocalName" class="fullWidthInput" disabled="disabled" value="<form:value name='LocalName'/>" /><br/>
|
||||
<input type="text" class="fullWidthInput" disabled="disabled" name="LocalName" value="<form:value name='LocalName'/>" /><br/>
|
||||
<i>Edit via "change URI"</i>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input type="text" name="LocalName" class="fullWidthInput" value="<form:value name="LocalName"/>" /><br/>
|
||||
<input type="text" class="fullWidthInput" name="LocalName" value="<form:value name="LocalName"/>" /><br/>
|
||||
<i>must be valid XML without spaces; by</i><br/>
|
||||
<i>convention use camel case with no initial capital</i><br/>
|
||||
</c:otherwise>
|
||||
|
@ -48,15 +48,15 @@
|
|||
</c:if>
|
||||
</td>
|
||||
<td style="vertical-align:top;" valign="top" colspan="2">
|
||||
<b>Label for public display</b><br/><br/>
|
||||
<input type="text" name="DomainPublic" class="fullWidthInput" maxlength="80" value="<form:value name="DomainPublic"/>" />
|
||||
<b>Label for public display</b><br/>
|
||||
<input type="text" class="fullWidthInput" name="DomainPublic" value="<form:value name="DomainPublic"/>" maxlength="80" />
|
||||
<c:set var="DomainPublicError"><form:error name="DomainPublic"/></c:set>
|
||||
<c:if test="${!empty DomainPublicError}">
|
||||
<span class="notice"><c:out value="${DomainPublicError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td style="vertical-align:top;" valign="top" colspan="1">
|
||||
<b>Inverse property ontology</b><br/>
|
||||
|
@ -71,14 +71,14 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
<td style="vertical-align:top;" valign="top" colspan="2">
|
||||
<b>Inverse property internal name</b> (RDF local name)<br/>
|
||||
<b>Inverse property internal name</b><br/>
|
||||
<c:choose>
|
||||
<c:when test="${_action eq 'update'}">
|
||||
<input type="text" name="LocalNameInverse" class="fullWidthInput" disabled="disabled" value="<form:value name="LocalNameInverse"/>" /><br/>
|
||||
<input type="text" class="fullWidthInput" disabled="disabled" name="LocalNameInverse" value="<form:value name="LocalNameInverse"/>" /><br/>
|
||||
<i>Edit via "change URI"</i><br/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input type="text" name="LocalNameInverse" class="fullWidthInput" value="<form:value name="LocalNameInverse"/>" /><br/>
|
||||
<input type="text" class="fullWidthInput" name="LocalNameInverse" value="<form:value name="LocalNameInverse"/>" /><br/>
|
||||
<i>must be a valid XML name without spaces; by</i><br/>
|
||||
<i>convention use camel case with no initial capital</i><br/>
|
||||
</c:otherwise>
|
||||
|
@ -89,8 +89,8 @@
|
|||
</c:if>
|
||||
</td>
|
||||
<td valign="top" style="vertical-align:top;" colspan="2">
|
||||
<b>Inverse property label</b><br/><br/>
|
||||
<input type="text" name="RangePublic" value="<form:value name="RangePublic"/>" class="fullWidthInput" maxlength="80" /><br/>
|
||||
<b>Inverse property label</b><br/>
|
||||
<input type="text" class="fullWidthInput" name="RangePublic" value="<form:value name="RangePublic"/>" maxlength="80" /><br/>
|
||||
<br/>
|
||||
<c:set var="RangePublicError"><form:error name="RangePublic"/></c:set>
|
||||
<c:if test="${!empty RangePublicError}">
|
||||
|
@ -98,7 +98,7 @@
|
|||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Domain class</b><br />
|
||||
|
@ -109,7 +109,7 @@
|
|||
<select name="RangeVClassURI" ><form:option name="RangeVClassURI"/></select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Make this property be:</b><br/><br/>
|
||||
|
@ -123,7 +123,7 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
<td valign="top" colspan="1">
|
||||
<br/><br/>
|
||||
<br/>
|
||||
<c:choose>
|
||||
<c:when test="${symmetric}">
|
||||
<input name="Symmetric" type="checkbox" value="TRUE" checked="checked"/> symmetric
|
||||
|
@ -134,7 +134,7 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
<td valign="top" colspan="1">
|
||||
<br/><br/>
|
||||
<br/>
|
||||
<c:choose>
|
||||
<c:when test="${functional}">
|
||||
<input name="Functional" type="checkbox" value="TRUE" checked="checked"/> functional
|
||||
|
@ -145,7 +145,7 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
<td valign="top" colspan="1">
|
||||
<br/><br/>
|
||||
<br/>
|
||||
<c:choose>
|
||||
<c:when test="${inverseFunctional}">
|
||||
<input name="InverseFunctional" type="checkbox" value="TRUE" checked="checked"/> inverse functional
|
||||
|
@ -156,22 +156,22 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="5">
|
||||
<b>Public Description</b> for front-end users, as it will appear on editing forms<br/>
|
||||
<textarea name="PublicDescription"><form:value name="PublicDescription"/></textarea>
|
||||
<textarea class="matchingInput" name="PublicDescription"><form:value name="PublicDescription"/></textarea>
|
||||
<c:set var="PublicDescriptionError"><form:error name="PublicDescription"/></c:set>
|
||||
<c:if test="${!empty PublicDescriptionError}">
|
||||
<span class="notice"><c:out value="${PublicDescriptionError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="5">
|
||||
<b>Example</b> for ontology editors<br/>
|
||||
<input type="text" name="Example" style="width:90%;" value="<form:value name="Example"/>" />
|
||||
<input type="text" class="fullWidthInput" name="Example" value="<form:value name="Example"/>" />
|
||||
<c:set var="ExampleError"><form:error name="Example"/></c:set>
|
||||
<c:if test="${!empty ExampleError}">
|
||||
<span class="notice"><c:out value="${ExampleError}"/></span>
|
||||
|
@ -181,14 +181,14 @@
|
|||
<tr class="editformcell">
|
||||
<td valign="top" colspan="5">
|
||||
<b>Description</b> for ontology editors<br/>
|
||||
<textarea name="Description" style="width:90%;"><form:value name="Description"/></textarea>
|
||||
<textarea class="matchingInput" name="Description" style="width:90%;"><form:value name="Description"/></textarea>
|
||||
<c:set var="DescriptionError"><form:error name="Description"/></c:set>
|
||||
<c:if test="${!empty DescriptionError}">
|
||||
<span class="notice"><c:out value="${DescriptionError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Display level</b><br />
|
||||
|
@ -201,11 +201,11 @@
|
|||
<i>specify least restrictive level allowed</i>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="1">
|
||||
<b>Display tier</b> for this property<br/>
|
||||
<input type="text" name="DomainDisplayTier" value="<form:value name="DomainDisplayTier"/>" /><br/>
|
||||
<input type="text" class="shortInput" name="DomainDisplayTier" value="<form:value name="DomainDisplayTier"/>" /><br/>
|
||||
<i><b>lower</b> numbers display first</i><br/>
|
||||
<c:set var="DomainDisplayTierError"><form:error name="DomainDisplayTier"/></c:set>
|
||||
<c:if test="${!empty DomainDisplayTierError}">
|
||||
|
@ -214,7 +214,7 @@
|
|||
</td>
|
||||
<td valign="top" colspan="2">
|
||||
<b>Display tier</b> for inverse property<br/>
|
||||
<input type="text" name="RangeDisplayTier" value="<form:value name="RangeDisplayTier"/>" /><br/>
|
||||
<input type="text" class="shortInput" name="RangeDisplayTier" value="<form:value name="RangeDisplayTier"/>" /><br/>
|
||||
<i><b>lower</b> numbers display first</i><br/>
|
||||
<c:set var="RangeDisplayTierError"><form:error name="RangeDisplayTier"/></c:set>
|
||||
<c:if test="${!empty RangeDisplayTierError}">
|
||||
|
@ -222,7 +222,7 @@
|
|||
</c:if>
|
||||
</td>
|
||||
<td valign="top" colspan="2">
|
||||
When displaying related individuals from different classes,<br/><br/>
|
||||
When displaying related individuals from different classes,<br/>
|
||||
<c:choose>
|
||||
<c:when test="${collateBySubclass}">
|
||||
<input name="CollateBySubclass" type="checkbox" value="TRUE" checked="checked"/>collate by subclass
|
||||
|
@ -233,11 +233,11 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
<b>Number</b> of individuals to display<br/>
|
||||
<input type="text" name="DomainDisplayLimit" value="<form:value name="DomainDisplayLimit"/>" /><br/>
|
||||
<input type="text" class="shortInput" name="DomainDisplayLimit" value="<form:value name="DomainDisplayLimit"/>" /><br/>
|
||||
<i>before showing a "more ..." button</i><br/>
|
||||
<c:set var="DomainDisplayLimitError"><form:error name="DomainDisplayLimit"/></c:set>
|
||||
<c:if test="${!empty DomainDisplayLimitError}">
|
||||
|
@ -246,7 +246,7 @@
|
|||
</td>
|
||||
<td valign="top" colspan="3">
|
||||
<b>Sort direction</b> for related individuals, alphabetically by their name (rdfs:label)<br/>
|
||||
<input type="text" name="DomainEntitySortDirection" value="<form:value name="DomainEntitySortDirection"/>" /><br/>
|
||||
<input type="text" class="shortInput" name="DomainEntitySortDirection" value="<form:value name="DomainEntitySortDirection"/>" /><br/>
|
||||
<i>blank for ascending, "desc" for descending</i><br/>
|
||||
<i><b>Note:</b> will be ignored if a custom list view has been configured for this property</i><br/>
|
||||
<c:set var="DomainEntitySortDirectionError"><form:error name="DomainEntitySortDirection"/></c:set>
|
||||
|
@ -255,10 +255,10 @@
|
|||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="2">
|
||||
Select related individuals from existing choices?<br/><br/>
|
||||
Select related individuals from existing choices?<br/>
|
||||
<c:choose>
|
||||
<c:when test="${selectFromExisting}">
|
||||
<input name="SelectFromExisting" type="checkbox" value="TRUE" checked="checked"/>provide selection
|
||||
|
@ -269,7 +269,7 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
<td valign="top" colspan="2">
|
||||
Allow creating new related individuals?<br/><br/><br/>
|
||||
Allow creating new related individuals?<br/><br/>
|
||||
<c:choose>
|
||||
<c:when test="${offerCreateNewOption}">
|
||||
<input name="OfferCreateNewOption" type="checkbox" value="TRUE" checked="checked"/>offer create option
|
||||
|
@ -280,13 +280,13 @@
|
|||
</c:choose>
|
||||
</td>
|
||||
<td valign="top" colspan="1">
|
||||
<b>Custom entry form</b><br/><br/>
|
||||
<input type="text" name="CustomEntryForm" class="fullWidthInput" value="<form:value name="CustomEntryForm"/>" />
|
||||
<b>Custom entry form</b><br/>
|
||||
<input type="text" class="fullWidthInput" name="CustomEntryForm" value="<form:value name="CustomEntryForm"/>" />
|
||||
<c:set var="CustomEntryFormError"><form:error name="CustomEntryForm"/></c:set>
|
||||
<c:if test="${!empty CustomEntryFormError}">
|
||||
<span class="notice"><c:out value="${CustomEntryFormError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<tr class="editformcell">
|
||||
<td valign="bottom" colspan="2">
|
||||
<b>Class label</b><br/>
|
||||
<input type="text" name="Name" value="${formValue['Name']}" class="fullWidthInput" maxlength="120" /><br/>
|
||||
<input type="text" class="fullWidthInput" name="Name" value="${formValue['Name']}" maxlength="120" /><br/>
|
||||
<i>by convention use initial capital letters; spaces OK</i><br/>
|
||||
<span class="warning"><form:error name="Name"/></span>
|
||||
</td>
|
||||
|
@ -18,7 +18,7 @@
|
|||
<span class="warning"><form:error name="GroupURI"/></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="bottom" colspan="2">
|
||||
<b>Ontology</b><br/>
|
||||
|
@ -36,11 +36,11 @@
|
|||
<b>Internal name*</b> (RDF local name)<br/>
|
||||
<c:choose>
|
||||
<c:when test="${_action eq 'update'}">
|
||||
<input type="text" name="LocalName" disabled="disabled" value="${formValue['LocalName']}" class="fullWidthInput"/><br/>
|
||||
<input type="text" class="fullWidthInput" disabled="disabled" name="LocalName" value="${formValue['LocalName']}" /><br/>
|
||||
<i>Edit via "change URI"</i><br/>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<input type="text" name="LocalName" value="${formValue['LocalName']}" class="fullWidthInput" /><br/>
|
||||
<input type="text" class="fullWidthInput" name="LocalName" value="${formValue['LocalName']}" /><br/>
|
||||
<i>must be valid XML without spaces; by</i><br/>
|
||||
<i>convention use camel case with an initial capital</i><br/>
|
||||
</c:otherwise>
|
||||
|
@ -51,11 +51,11 @@
|
|||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="top" colspan="3">
|
||||
<td valign="top" colspan="4">
|
||||
<b>Short definition</b> to display publicly<br/>
|
||||
<input type="text" name="ShortDef" value="${formValue['ShortDef']}" class="fullWidthInput" maxlength="255" />
|
||||
<input type="text" class="fullWidthInput" name="ShortDef" value="${formValue['ShortDef']}" maxlength="255" />
|
||||
<c:set var="ShortDefError"><form:error name="ShortDef"/></c:set>
|
||||
<c:if test="${!empty ShortDefError}">
|
||||
<span class="notice"><c:out value="${ShortDefError}"/></span>
|
||||
|
@ -65,7 +65,7 @@
|
|||
<tr class="editformcell">
|
||||
<td valign="top" colspan="3">
|
||||
<b>Example</b> for ontology editors<br/>
|
||||
<input type="text" name="Example" value="${formValue['Example']}" class="fullWidthInput" maxlength="120" />
|
||||
<input type="text" class="fullWidthInput" name="Example" value="${formValue['Example']}" maxlength="120" />
|
||||
<c:set var="ExampleError"><form:error name="Example"/></c:set>
|
||||
<c:if test="${!empty ExampleError}">
|
||||
<span class="notice"><c:out value="${ExampleError}"/></span>
|
||||
|
@ -75,14 +75,14 @@
|
|||
<tr class="editformcell">
|
||||
<td valign="bottom" colspan="4">
|
||||
<b>Description</b> for ontology editors<br/>
|
||||
<textarea style="width:95%;height:10ex;" name="Description"><form:value name="Description"/></textarea>
|
||||
<textarea class="matchingInput" name="Description"><form:value name="Description"/></textarea>
|
||||
<c:set var="DescriptionError"><form:error name="Description"/></c:set>
|
||||
<c:if test="${!empty DescriptionError}">
|
||||
<span class="notice"><c:out value="${DescriptionError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<td valign="bottom" colspan="1">
|
||||
<b>Display level</b><br/>
|
||||
|
@ -95,7 +95,7 @@
|
|||
<i>specify least restrictive level allowed</i><br />
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
<tr class="editformcell">
|
||||
<!--td valign="top" colspan="1">
|
||||
<b>Display Limit</b><br/>
|
||||
|
@ -105,9 +105,9 @@
|
|||
<span class="notice"><c:out value="${DisplayLimitError}"/></span>
|
||||
</c:if>
|
||||
</td-->
|
||||
<td valign="top" colspan="1">
|
||||
<b>Display rank</b> within class group<br/>
|
||||
<input type="text" name="DisplayRank" value="${formValue['DisplayRank']}" maxlength="120" />
|
||||
<td valign="top" colspan="2">
|
||||
<b>Display rank</b> when collating property by subclass<br/>
|
||||
<input type="text" class="shortInput" name="DisplayRank" value="${formValue['DisplayRank']}" maxlength="3" />
|
||||
<c:set var="DisplayRankError"><form:error name="DisplayRank"/></c:set>
|
||||
<c:if test="${!empty DisplayRankError}">
|
||||
<span class="notice"><c:out value="${DisplayRankError}"/></span>
|
||||
|
@ -115,12 +115,12 @@
|
|||
</td>
|
||||
<td valign="top" colspan="2">
|
||||
<b>Custom entry form</b><br/>
|
||||
<input type="text" name="CustomEntryForm" value="${formValue['CustomEntryForm']}" maxlength="120"/>
|
||||
<input type="text" class="fullWidthInput" name="CustomEntryForm" value="${formValue['CustomEntryForm']}" maxlength="120"/>
|
||||
<c:set var="CustomEntryFormError"><form:error name="CustomEntryForm"/></c:set>
|
||||
<c:if test="${!empty CustomEntryFormError}">
|
||||
<span class="notice"><c:out value="${CustomEntryFormError}"/></span>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
<tr><td colspan="5"><hr color="Gainsboro"/></td></tr>
|
||||
<tr><td colspan="5"><hr class="formDivider"/></td></tr>
|
||||
</jsp:root>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue