i18n updates to javascript files and related templates
This commit is contained in:
parent
57c962e82a
commit
d74176f18d
40 changed files with 373 additions and 106 deletions
|
@ -1,6 +1,8 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
$(document).ready(function(){
|
||||
// Get the i18n variables from the template
|
||||
$.extend(this, i18nStrings);
|
||||
//Remove initial value of input text 'Select an existing last name'
|
||||
$('input[name="proxySelectorAC"]').click(function(){
|
||||
$(this).val('');
|
||||
|
@ -20,7 +22,7 @@ $(document).ready(function(){
|
|||
if ($errorAlert !=""){
|
||||
return false;
|
||||
}else{
|
||||
$('#error-alert p').append("You must select a minimum of 1 editor and profile.");
|
||||
$('#error-alert p').append(i18nStrings.selectEditorAndProfile);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
|
||||
var browseClassGroups = {
|
||||
// Initial page setup
|
||||
onLoad: function() {
|
||||
|
@ -11,6 +12,7 @@ var browseClassGroups = {
|
|||
// Add variables from browse template
|
||||
mergeFromTemplate: function() {
|
||||
$.extend(this, browseData);
|
||||
$.extend(this, i18nStrings);
|
||||
},
|
||||
|
||||
// Create references to frequently used elements for convenience
|
||||
|
@ -91,7 +93,8 @@ var browseClassGroups = {
|
|||
|
||||
// Build the content of each list item, piecing together each component
|
||||
listItem = '<li role="listitem">';
|
||||
listItem += '<a href="'+ indexUrl +'" title="Browse all '+ name +' content">'+ name +'</a>';
|
||||
listItem += '<a href="'+ indexUrl +'" title="' + browseClassGroups.browseAllString + ' '
|
||||
+ name + ' ' + browseClassGroups.contentString + '">'+ name +'</a>';
|
||||
listItem += '</li>';
|
||||
|
||||
// Add the list item to the array of classes
|
||||
|
@ -113,7 +116,9 @@ var browseClassGroups = {
|
|||
classList.splice(potentialSuperClasses, 1);
|
||||
|
||||
browseAllUrl = browseClassGroups.baseUrl +'/individuallist?vclassId='+ encodeURIComponent(superClassUri);
|
||||
browseAllLink = '<a class="browse-superclass" href="'+ browseAllUrl +'" title="Browse all '+ results.classGroupName +'">Browse all »</a>';
|
||||
browseAllLink = '<a class="browse-superclass" href="'+ browseAllUrl +'" title="'
|
||||
+ browseClassGroups.browseAllString + ' ' + results.classGroupName
|
||||
+ '">' + browseClassGroups.browseAllString + ' »</a>';
|
||||
browseClassGroups.browseClasses.prepend(browseAllLink);
|
||||
}
|
||||
|
||||
|
@ -166,7 +171,7 @@ var graphClassGroups = {
|
|||
$('rect').each(function() {
|
||||
var index = $('rect').index(this);
|
||||
var label = labels[index];
|
||||
var title = 'Browse all '+ label +' content';
|
||||
var title = browseClassGroups.browseAllString + ' ' + label + ' ' + browseClassGroups.contentString;
|
||||
|
||||
// Add a title attribute
|
||||
$(this).attr('title', title);
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
$.extend(this, i18nStrings);
|
||||
|
||||
function ValidateForm(formName) {
|
||||
var x = 0; // counts form elements - used as array index
|
||||
var y = 0; // counts required fields - used as array index
|
||||
|
@ -8,7 +10,8 @@ function ValidateForm(formName) {
|
|||
|
||||
// Check for Email formatting
|
||||
if (document.forms[formName].EmailFields) {
|
||||
errorList = '\nPlease format your e-mail address as:\n \"userid@institution.edu\" or enter another complete and valid email address';
|
||||
errorList = '\n' + i18nStrings.pleaseFormatEmail + '\n\n \"userid@institution.edu\" \n\n'
|
||||
+ i18nStrings.enterValidAddress;
|
||||
// build array of required fields
|
||||
emailStr = document.forms[formName].EmailFields.value;
|
||||
emailFields = emailStr.split(',');
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
$.extend(this, i18nStringsUriRdf);
|
||||
|
||||
// This function creates and styles the "qTip" tooltip that displays the resource uri and the rdf link when the user clicks the uri/rdf icon.
|
||||
$('span#iconControlsLeftSide').children('img#uriIcon').each(function()
|
||||
{
|
||||
|
@ -8,7 +11,7 @@ $(document).ready(function(){
|
|||
{
|
||||
content: {
|
||||
prerender: true, // We need this for the .click() event listener on 'a.close'
|
||||
text: '<h5>share the URI for this profile</h5> <input id="uriLink" type="text" value="' + $('#uriIcon').attr('title') + '" /><h5><a class ="rdf-url" href="' + individualRdfUrl + '">view profile in RDF format</a></h5><a class="close" href="#">close</a>'
|
||||
text: '<h5>' + i18nStringsUriRdf.shareProfileUri + '</h5> <input id="uriLink" type="text" value="' + $('#uriIcon').attr('title') + '" /><h5><a class ="rdf-url" href="' + individualRdfUrl + '">' + i18nStringsUriRdf.viewRDFProfile + '</a></h5><a class="close" href="#">' + i18nStringsUriRdf.closeString + '</a>'
|
||||
},
|
||||
position: {
|
||||
corner: {
|
||||
|
@ -40,7 +43,7 @@ $(document).ready(function(){
|
|||
{
|
||||
content: {
|
||||
prerender: true, // We need this for the .click() event listener on 'a.close'
|
||||
text: '<h5>share the URI for this profile</h5> <input id="uriLink" type="text" value="' + $('#uriIcon').attr('title') + '" /><h5><a class ="rdf-url" href="' + individualRdfUrl + '">view profile in RDF format</a></h5><a class="close" href="#">close</a>'
|
||||
text: '<h5>' + i18nStringsUriRdf.shareProfileUri + '</h5> <input id="uriLink" type="text" value="' + $('#uriIcon').attr('title') + '" /><h5><a class ="rdf-url" href="' + individualRdfUrl + '">' + i18nStringsUriRdf.viewRDFProfile + '</a></h5><a class="close" href="#">' + i18nStringsUriRdf.closeString + '</a>'
|
||||
},
|
||||
position: {
|
||||
corner: {
|
||||
|
@ -72,7 +75,7 @@ $(document).ready(function(){
|
|||
{
|
||||
content: {
|
||||
prerender: true, // We need this for the .click() event listener on 'a.close'
|
||||
text: '<h5>share the URI for this profile</h5> <input id="uriLink" type="text" value="' + $('#uriIcon').attr('title') + '" /><h5><a class ="rdf-url" href="' + individualRdfUrl + '">view profile in RDF format</a></h5><a class="close" href="#">close</a>'
|
||||
text: '<h5>' + i18nStringsUriRdf.shareProfileUri + '</h5> <input id="uriLink" type="text" value="' + $('#uriIcon').attr('title') + '" /><h5><a class ="rdf-url" href="' + individualRdfUrl + '">' + i18nStringsUriRdf.viewRDFProfile + '</a></h5><a class="close" href="#">' + i18nStringsUriRdf.closeString + '</a>'
|
||||
},
|
||||
position: {
|
||||
corner: {
|
||||
|
|
|
@ -16,6 +16,7 @@ var manageLabels = {
|
|||
|
||||
// Get the custom form data from the page
|
||||
$.extend(this, customFormData);
|
||||
$.extend(this, i18nStrings);
|
||||
},
|
||||
|
||||
// Initial page setup. Called only at page load.
|
||||
|
@ -81,7 +82,7 @@ var manageLabels = {
|
|||
window.location = $('a.cancel').attr('href');
|
||||
}
|
||||
else {
|
||||
alert('Error processing request: the unchecked labels could not be deleted.');
|
||||
alert(manageLabels.errorProcessingLabels);
|
||||
selectedRadio.removeAttr('checked');
|
||||
$('span.or').show();
|
||||
$('a.cancel').show();
|
||||
|
|
|
@ -13,6 +13,7 @@ var menuManagement = {
|
|||
// Add variables from menupage template
|
||||
mergeFromTemplate: function() {
|
||||
$.extend(this, menuManagementData);
|
||||
$.extend(this, i18nStrings);
|
||||
},
|
||||
|
||||
// Create references to frequently used elements for convenience
|
||||
|
@ -30,7 +31,7 @@ var menuManagement = {
|
|||
|
||||
this.menuItemsList.addClass('dragNdrop');
|
||||
|
||||
menuItems.attr('title', 'Drag and drop to reorder menu items');
|
||||
menuItems.attr('title', menuManagement.dragDropMenus);
|
||||
|
||||
|
||||
|
||||
|
@ -95,7 +96,7 @@ var menuManagement = {
|
|||
ui.item.appendTo(menuItems);
|
||||
}
|
||||
|
||||
alert('Reordering of menu items failed.');
|
||||
alert(menuManagement.reorderingFailed);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -33,7 +33,7 @@ $(document).ready(function(){
|
|||
$propertyGroupLi.removeClass("nonSelectedGroupTab clickable");
|
||||
$propertyGroupLi.addClass("selectedGroupTab clickable");
|
||||
}
|
||||
if ( $propertyGroupLi.text() == "View All" ) {
|
||||
if ( $propertyGroupLi.attr("groupname") == "viewAll" ) {
|
||||
processViewAllTab();
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -12,6 +12,7 @@ var browseByVClass = {
|
|||
// Add variables from menupage template
|
||||
mergeFromTemplate: function() {
|
||||
$.extend(this, menupageData);
|
||||
$.extend(this, i18nStrings);
|
||||
},
|
||||
|
||||
// Create references to frequently used elements for convenience
|
||||
|
@ -165,10 +166,12 @@ var browseByVClass = {
|
|||
// Print out the pagination nav if called
|
||||
pagination: function(pages, page) {
|
||||
var pagination = '<div class="pagination menupage">';
|
||||
pagination += '<h3>page</h3>';
|
||||
pagination += '<h3>' + browseByVClass.pageString + '</h3>';
|
||||
pagination += '<ul>';
|
||||
$.each(pages, function(i, item) {
|
||||
var anchorOpen = '<a class="round" href="#" title="View page '+ pages[i].text +' of the results" data-page="'+ pages[i].index +'">';
|
||||
var anchorOpen = '<a class="round" href="#" title="' + browseByVClass.viewPageString + ' '
|
||||
+ pages[i].text + ' '
|
||||
+ browseByVClass.ofTheResults + ' " data-page="'+ pages[i].index +'">';
|
||||
var anchorClose = '</a>';
|
||||
|
||||
pagination += '<li class="round';
|
||||
|
@ -231,9 +234,9 @@ var browseByVClass = {
|
|||
var alpha = this.selectedAlpha(alpha);
|
||||
|
||||
if ( alpha != "all" ) {
|
||||
nothingToSeeHere = '<p class="no-individuals">There are no '+ vclass.name +' individuals whose name starts with <em>'+ alpha.toUpperCase() +'</em>.</p> <p class="no-individuals">Please try another letter or browse all.</p>';
|
||||
nothingToSeeHere = '<p class="no-individuals">' + browseByVClass.thereAreNo + ' ' + vclass.name + ' ' + browseByVClass.indNamesStartWith + ' <em>'+ alpha.toUpperCase() +'</em>.</p> <p class="no-individuals">' + browseByVClass.tryAnotherLetter + '</p>';
|
||||
} else {
|
||||
nothingToSeeHere = '<p class="no-individuals">There are no '+ vclass.name +' individuals in the system.</p> <p class="no-individuals">Please select another class from the list.</p>';
|
||||
nothingToSeeHere = '<p class="no-individuals">' + browseByVClass.thereAreNo + ' ' + vclass.name + ' ' + browseByVClass.indsInSystem + '</p> <p class="no-individuals">' + browseByVClass.selectAnotherClass + '</p>';
|
||||
}
|
||||
|
||||
browseByVClass.individualsContainer.prepend(nothingToSeeHere);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
var menuManagementEdit = {
|
||||
onLoad: function() {
|
||||
$.extend(this, i18nStrings);
|
||||
this.initObjects();
|
||||
this.bindEventListeners();
|
||||
this.toggleClassSelection();
|
||||
|
@ -93,33 +94,33 @@ var menuManagementEdit = {
|
|||
|
||||
// Check menu name
|
||||
if ($('input[type=text][name=menuName]').val() == "") {
|
||||
validationError += "You must supply a name<br />";
|
||||
validationError += menuManagementEdit.supplyName + "<br />";
|
||||
}
|
||||
// Check pretty url
|
||||
if ($('input[type=text][name=prettyUrl]').val() == "") {
|
||||
validationError += "You must supply a pretty URL<br />";
|
||||
validationError += menuManagementEdit.supplyPrettyUrl + "<br />";
|
||||
}
|
||||
if ($('input[type=text][name=prettyUrl]').val().charAt(0) != "/") {
|
||||
validationError += "The pretty URL must begin with a leading forward slash<br />";
|
||||
validationError += menuManagementEdit.startUrlWithSlash + "<br />";
|
||||
}
|
||||
|
||||
// Check custom template
|
||||
if ($('input:radio[name=selectedTemplate]:checked').val() == "custom") {
|
||||
if ($('input[name=customTemplate]').val() == "") {
|
||||
validationError += "You must supply a template<br />";
|
||||
validationError += menuManagementEdit.supplyTemplate + "<br />";
|
||||
}
|
||||
}
|
||||
|
||||
// if no class group selected, this is an error
|
||||
if ($('#selectClassGroup').val() =='-1') {
|
||||
validationError += "You must supply a content type<br />";
|
||||
validationError += menuManagementEdit.supplyContentType + "<br />";
|
||||
} else {
|
||||
//class group has been selected, make sure there is at least one class selected
|
||||
var allSelected = $('input[name="allSelected"]:checked').length;
|
||||
var noClassesSelected = $('input[name="classInClassGroup"]:checked').length;
|
||||
if (allSelected == 0 && noClassesSelected == 0) {
|
||||
//at least one class should be selected
|
||||
validationError += "You must select the type of content to display<br />";
|
||||
validationError += menuManagementEdit.selectContentType + "<br />";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -149,7 +150,7 @@ var menuManagementEdit = {
|
|||
var selectedClassesList = menuManagementEdit.classesForClassGroup.children('ul#selectedClasses');
|
||||
|
||||
selectedClassesList.empty();
|
||||
selectedClassesList.append('<li class="ui-state-default"> <input type="checkbox" name="allSelected" id="allSelected" value="all" checked="checked" /> <label class="inline" for="All"> All</label> </li>');
|
||||
selectedClassesList.append('<li class="ui-state-default"> <input type="checkbox" name="allSelected" id="allSelected" value="all" checked="checked" /> <label class="inline" for="All"> ' + menuManagementEdit.allCapitalized + '</label> </li>');
|
||||
|
||||
$.each(results.classes, function(i, item) {
|
||||
var thisClass = results.classes[i];
|
||||
|
|
|
@ -93,6 +93,8 @@ var pageManagementUtils = {
|
|||
$.extend(this, vitro.customFormUtils);
|
||||
// Get the custom form data from the page
|
||||
$.extend(this, customFormData);
|
||||
$.extend(this, i18nStrings);
|
||||
|
||||
},
|
||||
initObjects:function(){
|
||||
this.counter = 0;
|
||||
|
@ -297,7 +299,7 @@ var pageManagementUtils = {
|
|||
pageManagementUtils.classGroupSection.show();
|
||||
pageManagementUtils.fixedHTMLSection.hide();
|
||||
pageManagementUtils.sparqlQuerySection.hide();
|
||||
pageManagementUtils.headerBar.text("Browse Class Group - ");
|
||||
pageManagementUtils.headerBar.text(pageManagementUtils.browseClassGroup + " - ");
|
||||
pageManagementUtils.headerBar.show();
|
||||
$('div#selfContainedDiv').hide();
|
||||
}
|
||||
|
@ -305,12 +307,12 @@ var pageManagementUtils = {
|
|||
pageManagementUtils.classGroupSection.hide();
|
||||
//if fixed html show that, otherwise show sparql results
|
||||
if ( _this.contentTypeSelect.val() == "fixedHtml" ) {
|
||||
pageManagementUtils.headerBar.text("Fixed HTML - ");
|
||||
pageManagementUtils.headerBar.text(pageManagementUtils.fixedHtml + " - ");
|
||||
pageManagementUtils.fixedHTMLSection.show();
|
||||
pageManagementUtils.sparqlQuerySection.hide();
|
||||
}
|
||||
else {
|
||||
pageManagementUtils.headerBar.text("SPARQL Query Results - ");
|
||||
pageManagementUtils.headerBar.text(pageManagementUtils.sparqlResults + " - ");
|
||||
pageManagementUtils.sparqlQuerySection.show();
|
||||
pageManagementUtils.fixedHTMLSection.hide();
|
||||
}
|
||||
|
@ -420,8 +422,8 @@ var pageManagementUtils = {
|
|||
html: "<span class='pageContentTypeLabel'>" + contentTypeLabel + " - " + varOrClass
|
||||
+ "</span><span id='clickable" + counter
|
||||
+ "' class='pageContentExpand'><div id='woof' class='arrow expandArrow'></div></span><div id='innerContainer" + counter
|
||||
+ "' class='pageContentWrapper'><span class='deleteLinkContainer'> or <a id='remove" + counter // changed button to a link
|
||||
+ "' href='' >delete</a></span></div>"
|
||||
+ "' class='pageContentWrapper'><span class='deleteLinkContainer'> " + pageManagementUtils.orString + " <a id='remove" + counter // changed button to a link
|
||||
+ "' href='' >" + pageManagementUtils.deleteString + "</a></span></div>"
|
||||
});
|
||||
//Hide inner div
|
||||
var $innerDiv = $newDivContainer.children('div#innerContainer' + counter);
|
||||
|
@ -638,7 +640,7 @@ var pageManagementUtils = {
|
|||
var selectedClassesList = pageManagementUtils.classesForClassGroup.children('ul#selectedClasses');
|
||||
|
||||
selectedClassesList.empty();
|
||||
selectedClassesList.append('<li class="ui-state-default"> <input type="checkbox" name="allSelected" id="allSelected" value="all" checked="checked" /> <label class="inline" for="All"> All</label> </li>');
|
||||
selectedClassesList.append('<li class="ui-state-default"> <input type="checkbox" name="allSelected" id="allSelected" value="all" checked="checked" /> <label class="inline" for="All"> ' + pageManagementUtils.allCapitalized + '</label> </li>');
|
||||
|
||||
$.each(results.classes, function(i, item) {
|
||||
var thisClass = results.classes[i];
|
||||
|
@ -740,11 +742,11 @@ var pageManagementUtils = {
|
|||
return jsonObject;
|
||||
} else {
|
||||
//ERROR handling
|
||||
alert("An error has occurred and the map of processors for this content is missing. Please contact the administrator");
|
||||
alert(pageManagementUtils.mapProcessorError);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
alert("An error has occurred and the code for processing this content is missing a component. Please contact the administrator.");
|
||||
alert(pageManagementUtils.codeProcessingError);
|
||||
//Error handling here
|
||||
return null;
|
||||
},
|
||||
|
@ -785,21 +787,21 @@ var pageManagementUtils = {
|
|||
|
||||
// Check menu name
|
||||
if ($('input[type=text][name=pageName]').val() == "") {
|
||||
validationError += "You must supply a name<br />";
|
||||
validationError += pageManagementUtils.supplyName + "<br />";
|
||||
}
|
||||
// Check pretty url
|
||||
if ($('input[type=text][name=prettyUrl]').val() == "") {
|
||||
validationError += "You must supply a pretty URL<br />";
|
||||
validationError += pageManagementUtils.supplyPrettyUrl + "<br />";
|
||||
}
|
||||
if ($('input[type=text][name=prettyUrl]').val().charAt(0) != "/") {
|
||||
validationError += "The pretty URL must begin with a leading forward slash<br />";
|
||||
validationError += pageManagementUtils.startUrlWithSlash + "<br />";
|
||||
}
|
||||
|
||||
// Check custom template and self contained template
|
||||
var selectedTemplateValue = $('input:radio[name=selectedTemplate]:checked').val();
|
||||
if (selectedTemplateValue == "custom" || selectedTemplateValue == "selfContained") {
|
||||
if ($('input[name=customTemplate]').val() == "") {
|
||||
validationError += "You must supply a template<br />";
|
||||
validationError += pageManagementUtils.supplyTemplate + "<br />";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -813,7 +815,7 @@ var pageManagementUtils = {
|
|||
var validationErrorMsg = "";
|
||||
//If there ARE not contents selected, then error message should indicate user needs to add them
|
||||
if(pageContentSections.length == 0) {
|
||||
validationErrorMsg = "You must select content to be included on the page <br /> ";
|
||||
validationErrorMsg = pageManagementUtils.selectContentType + " <br /> ";
|
||||
} else {
|
||||
//For each, based on type, validate if a validation function exists
|
||||
$.each(pageContentSections, function(i) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
$.extend(this, i18nStringsBrowseGroups);
|
||||
//Process sparql data getter and provide a json object with the necessary information
|
||||
//Depending on what is included here, a different type of data getter might be used
|
||||
var processClassGroupDataGetterContent = {
|
||||
|
@ -34,7 +35,7 @@ var processClassGroupDataGetterContent = {
|
|||
},
|
||||
//For the label of the content section for editing, need to add additional value
|
||||
retrieveContentLabel:function() {
|
||||
return "Browse Class Group";
|
||||
return i18nStringsBrowseGroups.browseClassGroup;
|
||||
},
|
||||
retrieveAdditionalLabelText:function(existingContentObject) {
|
||||
var label = "";
|
||||
|
@ -61,7 +62,7 @@ var processClassGroupDataGetterContent = {
|
|||
|
||||
selectedClassesList.empty();
|
||||
var newId = "allSelected" + contentNumber;
|
||||
selectedClassesList.append('<li class="ui-state-default"> <input type="checkbox" name="allSelected" id="' + contentNumber + '" value="all" checked="checked" /> <label class="inline" for="All"> All</label> </li>');
|
||||
selectedClassesList.append('<li class="ui-state-default"> <input type="checkbox" name="allSelected" id="' + contentNumber + '" value="all" checked="checked" /> <label class="inline" for="All"> ' + i18nStringsBrowseGroups.allCapitalized + '</label> </li>');
|
||||
|
||||
$.each(results.classes, function(i, item) {
|
||||
var thisClass = results.classes[i];
|
||||
|
@ -134,14 +135,14 @@ var processClassGroupDataGetterContent = {
|
|||
validateFormSubmission: function(pageContentSection, pageContentSectionLabel) {
|
||||
var validationError = "";
|
||||
if (pageContentSection.find('select[name="selectClassGroup"]').val() =='-1') {
|
||||
validationError += pageContentSectionLabel + ": You must supply a class group <br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsBrowseGroups.supplyClassGroup + " <br />";
|
||||
} else {
|
||||
//class group has been selected, make sure there is at least one class selected
|
||||
var allSelected = pageContentSection.find('input[name="allSelected"]:checked').length;
|
||||
var noClassesSelected = pageContentSection.find('input[name="classInClassGroup"]:checked').length;
|
||||
if (allSelected == 0 && noClassesSelected == 0) {
|
||||
//at least one class should be selected
|
||||
validationError += pageContentSectionLabel + ":You must select the classes to display<br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsBrowseGroups.selectClasses + "<br />";
|
||||
}
|
||||
}
|
||||
return validationError;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
$.extend(this, i18nStringsFixedHtml);
|
||||
//Process sparql data getter and provide a json object with the necessary information
|
||||
var processFixedHTMLDataGetterContent = {
|
||||
dataGetterClass:null,
|
||||
|
@ -30,7 +31,7 @@ var processFixedHTMLDataGetterContent = {
|
|||
},
|
||||
//For the label of the content section for editing, need to add additional value
|
||||
retrieveContentLabel:function() {
|
||||
return "Fixed HTML";
|
||||
return i18nStringsFixedHtml.fixedHtml;
|
||||
},
|
||||
//For the label of the content section for editing, need to add additional value
|
||||
retrieveAdditionalLabelText:function(existingContentObject) {
|
||||
|
@ -43,17 +44,17 @@ var processFixedHTMLDataGetterContent = {
|
|||
//Check that query and saveToVar have been input
|
||||
var variableValue = pageContentSection.find("input[name='saveToVar']").val();
|
||||
if(variableValue == "") {
|
||||
validationError += pageContentSectionLabel + ": You must supply a variable to save HTML content. <br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsFixedHtml.supplyVariableName + " <br />";
|
||||
}
|
||||
if(processFixedHTMLDataGetterContent.stringHasSingleQuote(variableValue)) {
|
||||
validationError += pageContentSectionLabel + ": The variable name should not have an apostrophe . <br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsFixedHtml.noApostrophes + " <br />";
|
||||
}
|
||||
if(processFixedHTMLDataGetterContent.stringHasDoubleQuote(variableValue)) {
|
||||
validationError += pageContentSectionLabel + ": The variable name should not have a double quote . <br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsFixedHtml.noDoubleQuotes + " <br />";
|
||||
}
|
||||
var htmlValue = pageContentSection.find("textarea[name='htmlValue']").val();
|
||||
if(htmlValue == "") {
|
||||
validationError += pageContentSectionLabel + ": You must supply some HTML or text. <br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsFixedHtml.supplyHtml + " <br />";
|
||||
}
|
||||
return validationError;
|
||||
},
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
$.extend(this, i18nStringsSparqlQuery);
|
||||
|
||||
//Process sparql data getter and provide a json object with the necessary information
|
||||
var processSparqlDataGetterContent = {
|
||||
dataGetterClass:null,
|
||||
|
@ -35,7 +37,7 @@ var processSparqlDataGetterContent = {
|
|||
},
|
||||
//For the label of the content section for editing, need to add additional value
|
||||
retrieveContentLabel:function() {
|
||||
return "SPARQL Query Results";
|
||||
return i18nStringsSparqlQuery.sparqlResults;
|
||||
},
|
||||
//For the label of the content section for editing, need to add additional value
|
||||
retrieveAdditionalLabelText:function(existingContentObject) {
|
||||
|
@ -48,13 +50,13 @@ var processSparqlDataGetterContent = {
|
|||
//Check that query and saveToVar have been input
|
||||
var variableValue = pageContentSection.find("input[name='saveToVar']").val();
|
||||
if(variableValue == "") {
|
||||
validationError += pageContentSectionLabel + ": You must supply a variable to save query results. <br />"
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsSparqlQuery.supplyQueryVariable + " <br />"
|
||||
}
|
||||
if(processSparqlDataGetterContent.stringHasSingleQuote(variableValue)) {
|
||||
validationError += pageContentSectionLabel + ": The variable name should not have an apostrophe . <br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsSparqlQuery.noApostrophes + " <br />";
|
||||
}
|
||||
if(processSparqlDataGetterContent.stringHasDoubleQuote(variableValue)) {
|
||||
validationError += pageContentSectionLabel + ": The variable name should not have a double quote . <br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsSparqlQuery.noDoubleQuotes + " <br />";
|
||||
}
|
||||
//Check that query model does not have single or double quotes within it
|
||||
//Uncomment this/adapt this when we actually allow display the query model input
|
||||
|
@ -71,7 +73,7 @@ var processSparqlDataGetterContent = {
|
|||
|
||||
var queryValue = pageContentSection.find("textarea[name='query']").val();
|
||||
if(queryValue == "") {
|
||||
validationError += pageContentSectionLabel + ": You must supply a Sparql query. <br />";
|
||||
validationError += pageContentSectionLabel + ": " + i18nStringsSparqlQuery.supplyQuery + " <br />";
|
||||
}
|
||||
return validationError;
|
||||
},
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
$.extend(this, i18nStrings);
|
||||
|
||||
var pageDeletion = {
|
||||
// on initial page setup
|
||||
onLoad:function(){
|
||||
|
@ -17,7 +19,7 @@ var pageDeletion = {
|
|||
this.deleteLinks.click(function(event) {
|
||||
var href=$(this).attr("href");
|
||||
var pageTitle = $(this).attr("pageTitle");
|
||||
var confirmResult = confirm("Are you sure you wish to delete this page: " + pageTitle + "?");
|
||||
var confirmResult = confirm( i18nStrings.confirmPageDeletion + " " + pageTitle + "?");
|
||||
if(confirmResult) {
|
||||
//Continue with the link
|
||||
return true;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
var classHierarchyUtils = {
|
||||
onLoad: function(urlBase,displayOption) {
|
||||
$.extend(this, i18nStrings);
|
||||
this.imagePath = urlBase + "/images/";
|
||||
this.displayOption = displayOption;
|
||||
this.initObjects();
|
||||
|
@ -58,15 +59,15 @@
|
|||
if ( this.displayOption == "group" ) {
|
||||
this.expandAll.click(function() {
|
||||
|
||||
if ( classHierarchyUtils.expandAll.text() == "hide subclasses" ) {
|
||||
if ( classHierarchyUtils.expandAll.text() == i18nStrings.hideSubclasses ) {
|
||||
$('td.subclassCell').parent('tr').hide();
|
||||
$('table.innerDefinition').hide();
|
||||
classHierarchyUtils.expandAll.text("show subclasses");
|
||||
classHierarchyUtils.expandAll.text(i18nStrings.showSubclasses);
|
||||
}
|
||||
else {
|
||||
$('td.subclassCell').parent('tr').show();
|
||||
$('table.innerDefinition').show();
|
||||
classHierarchyUtils.expandAll.text("hide subclasses");
|
||||
classHierarchyUtils.expandAll.text(i18nStrings.hideSubclasses);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -98,10 +99,10 @@
|
|||
}
|
||||
|
||||
if ( this.data.classGroup.length > 0 ) {
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>Class Group:</td><td class='subclassCell'>" + this.data.classGroup + "</td></tr>";
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.classGroup + ":</td><td class='subclassCell'>" + this.data.classGroup + "</td></tr>";
|
||||
}
|
||||
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>Ontology:</td><td class='subclassCell'>" + this.data.ontology + "</td></tr>";
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.ontologyString + ":</td><td class='subclassCell'>" + this.data.ontology + "</td></tr>";
|
||||
|
||||
|
||||
if ( descendants.length > 1 ) {
|
||||
|
@ -129,7 +130,7 @@
|
|||
var ctr = 0
|
||||
$.each(node.children, function() {
|
||||
if ( ctr == 0 ) {
|
||||
childDetails += "<tr><td class='classDetail'>Subclasses:</td>";
|
||||
childDetails += "<tr><td class='classDetail'>" + i18nStrings.subclassesString + ":</td>";
|
||||
ctr = ctr + 1;
|
||||
}
|
||||
else {
|
||||
|
@ -156,10 +157,10 @@
|
|||
}
|
||||
|
||||
if ( this.data.classGroup.length > 0 ) {
|
||||
childDetails += "<tr><td class='classDetail'>Class Group:</td><td class='subclassCell'>" + this.data.classGroup + "</td></tr>";
|
||||
childDetails += "<tr><td class='classDetail'>" + i18nStrings.classGroup + ":</td><td class='subclassCell'>" + this.data.classGroup + "</td></tr>";
|
||||
}
|
||||
|
||||
childDetails += "<tr><td class='classDetail'>Ontology:</td><td class='subclassCell'>" + this.data.ontology + "</td></tr>";
|
||||
childDetails += "<tr><td class='classDetail'>" + i18nStrings.ontologyString + ":</td><td class='subclassCell'>" + this.data.ontology + "</td></tr>";
|
||||
|
||||
if ( this.children ) {
|
||||
var grandChildren = classHierarchyUtils.getTheChildren(this);
|
||||
|
@ -213,15 +214,15 @@
|
|||
|
||||
wireExpandLink: function() {
|
||||
this.expandAll.click(function() {
|
||||
if ( classHierarchyUtils.expandAll.text() == "expand all" ) {
|
||||
classHierarchyUtils.expandAll.text("collapse all");
|
||||
if ( classHierarchyUtils.expandAll.text() == i18nStrings.expandAll ) {
|
||||
classHierarchyUtils.expandAll.text(i18nStrings.collapseAll);
|
||||
$('span.headerSpanPlus').addClass("headerSpanMinus");
|
||||
$('table.classHierarchy').find('span.subclassExpandPlus').addClass("subclassExpandMinus");
|
||||
$('table.classHierarchy').find('table.subclassTable').show();
|
||||
$('section#container').find('span.headerSpanPlus').attr('view','more');
|
||||
}
|
||||
else {
|
||||
classHierarchyUtils.expandAll.text("expand all");
|
||||
classHierarchyUtils.expandAll.text(i18nStrings.expandAll);
|
||||
$('span.headerSpanPlus').removeClass("headerSpanMinus");
|
||||
$('table.classHierarchy').find('span.subclassExpandPlus').removeClass("subclassExpandMinus");
|
||||
$('table.classHierarchy').find('table.subclassTable').hide();
|
||||
|
@ -245,10 +246,10 @@
|
|||
}
|
||||
|
||||
if ( this.data.classGroup.length > 0 ) {
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>Class Group:</td><td>" + this.data.classGroup + "</td></tr>";
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.classGroup + ":</td><td>" + this.data.classGroup + "</td></tr>";
|
||||
}
|
||||
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>Ontology:</td><td>" + this.data.ontology + "</td></tr>";
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.ontologyString + ":</td><td>" + this.data.ontology + "</td></tr>";
|
||||
|
||||
classHierarchyUtils.classHtml += "</table>";
|
||||
|
||||
|
@ -271,7 +272,7 @@
|
|||
var ctr = 0;
|
||||
$.each(this.children, function() {
|
||||
if ( ctr == 0 ) {
|
||||
descendants += "<tr><td class='classDetail'>Classes:</td>";
|
||||
descendants += "<tr><td class='classDetail'>" + i18nStrings.classesString + ":</td>";
|
||||
ctr = ctr + 1;
|
||||
}
|
||||
else {
|
||||
|
@ -289,7 +290,7 @@
|
|||
+ classHierarchyUtils.classCounter + "'>" ;
|
||||
|
||||
if ( this.data.displayRank.length > 0 ) {
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>Display Rank:</td><td>" + this.data.displayRank + "</td></tr>"
|
||||
classHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.displayRank + ":</td><td>" + this.data.displayRank + "</td></tr>"
|
||||
}
|
||||
|
||||
classHierarchyUtils.classHtml += descendants;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
var objectPropHierarchyUtils = {
|
||||
onLoad: function(urlBase,displayOption,type) {
|
||||
$.extend(this, i18nStrings);
|
||||
this.imagePath = urlBase + "/images/";
|
||||
this.propType = type;
|
||||
this.initObjects();
|
||||
|
@ -89,13 +90,13 @@
|
|||
if ( this.propType == "group" ) {
|
||||
this.expandAll.click(function() {
|
||||
|
||||
if ( objectPropHierarchyUtils.expandAll.text() == "hide properties" ) {
|
||||
if ( objectPropHierarchyUtils.expandAll.text() == i18nStrings.hideProperties ) {
|
||||
$('td.subclassCell').parent('tr').hide();
|
||||
objectPropHierarchyUtils.expandAll.text("show properties");
|
||||
objectPropHierarchyUtils.expandAll.text(i18nStrings.showProperties);
|
||||
}
|
||||
else {
|
||||
$('td.subclassCell').parent('tr').show();
|
||||
objectPropHierarchyUtils.expandAll.text("hide properties");
|
||||
objectPropHierarchyUtils.expandAll.text(i18nStrings.hideProperties);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -138,16 +139,16 @@
|
|||
objectPropHierarchyUtils.classHtml += "<div>" + this.name + headerSpan + "</div>" + "<table class='classHierarchy' id='classHierarchy"
|
||||
+ objectPropHierarchyUtils.classCounter + "'>" ;
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>Local Name:</td><td>"
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.localNameString + ":</td><td>"
|
||||
+ (this.data.internalName.length > 0 ? this.data.internalName : "none" ) + "</td></tr>";
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>Group:</td><td>"
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.groupString + ":</td><td>"
|
||||
+ (this.data.group.length > 0 ? this.data.group : "unspecified" ) + "</td></tr>";
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>Domain Class:</td><td>"
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.domainClass + ":</td><td>"
|
||||
+ (this.data.domainVClass.length > 0 ? this.data.domainVClass : "none" ) + " ";
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "<span class='rangeClass'>Range Class:</span>"
|
||||
objectPropHierarchyUtils.classHtml += "<span class='rangeClass'>" + i18nStrings.rangeClass + ":</span>"
|
||||
+ (this.data.rangeVClass.length > 0 ? this.data.rangeVClass : "none" ) + "</td></tr>";
|
||||
|
||||
if ( descendants.length > 1 ) {
|
||||
|
@ -174,7 +175,7 @@
|
|||
var ctr = 0
|
||||
$.each(node.children, function() {
|
||||
if ( ctr == 0 ) {
|
||||
childDetails += "<tr><td class='classDetail'>Subproperties:</td>";
|
||||
childDetails += "<tr><td class='classDetail'>" + i18nStrings.subProperties + ":</td>";
|
||||
ctr = ctr + 1;
|
||||
}
|
||||
else {
|
||||
|
@ -182,10 +183,10 @@
|
|||
}
|
||||
|
||||
if ( this.children.length == 1 ) {
|
||||
subclassString += "<span style='font-size:0.8em'> (1 subproperty)</span>";
|
||||
subclassString += "<span style='font-size:0.8em'> (1 " + i18nStrings.subProperty + ")</span>";
|
||||
}
|
||||
else if ( this.children.length > 1 ) {
|
||||
subclassString += "<span style='font-size:0.8em'> (" + this.children.length + " subproperties)</span>";
|
||||
subclassString += "<span style='font-size:0.8em'> (" + this.children.length + " " + i18nStrings.subProperties + ")</span>";
|
||||
}
|
||||
|
||||
childDetails += "<td class='subclassCell' colspan='2'><span class='subclassExpandPlus' id='subclassExpand"
|
||||
|
@ -199,16 +200,16 @@
|
|||
|
||||
objectPropHierarchyUtils.expandCounter += 1;
|
||||
|
||||
childDetails += "<tr><td class='classDetail'>Local Name:</td><td>"
|
||||
childDetails += "<tr><td class='classDetail'>" + i18nStrings.localNameString + ":</td><td>"
|
||||
+ (this.data.internalName.length > 0 ? this.data.internalName : "none" ) + "</td></tr>";
|
||||
|
||||
childDetails += "<tr><td class='classDetail'>Group:</td><td>"
|
||||
childDetails += "<tr><td class='classDetail'>" + i18nStrings.groupString + ":</td><td>"
|
||||
+ (this.data.group.length > 0 ? this.data.group : "unspecified" ) + "</td></tr>";
|
||||
|
||||
childDetails += "<tr><td class='classDetail'>Domain Class:</td><td>"
|
||||
childDetails += "<tr><td class='classDetail'>" + i18nStrings.domainClass + ":</td><td>"
|
||||
+ (this.data.domainVClass.length > 0 ? this.data.domainVClass : "none" ) + " ";
|
||||
|
||||
childDetails += "<span class='rangeClass'>Range Class:</span>"
|
||||
childDetails += "<span class='rangeClass'>" + i18nStrings.rangeClass + ":</span>"
|
||||
+ (this.data.rangeVClass.length > 0 ? this.data.rangeVClass : "none" ) + "</td></tr>";
|
||||
|
||||
if ( this.children ) {
|
||||
|
@ -263,15 +264,15 @@
|
|||
|
||||
wireExpandLink: function() {
|
||||
this.expandAll.click(function() {
|
||||
if ( objectPropHierarchyUtils.expandAll.text() == "expand all" ) {
|
||||
objectPropHierarchyUtils.expandAll.text("collapse all");
|
||||
if ( objectPropHierarchyUtils.expandAll.text() == i18nStrings.expandAll ) {
|
||||
objectPropHierarchyUtils.expandAll.text(i18nStrings.collapseAll);
|
||||
$('span.headerSpanPlus').addClass("headerSpanMinus");
|
||||
$('table.classHierarchy').find('span.subclassExpandPlus').addClass("subclassExpandMinus");
|
||||
$('table.classHierarchy').find('table.subclassTable').show();
|
||||
$('section#container').find('span.headerSpanPlus').attr('view','more');
|
||||
}
|
||||
else {
|
||||
objectPropHierarchyUtils.expandAll.text("expand all");
|
||||
objectPropHierarchyUtils.expandAll.text(i18nStrings.expandAll);
|
||||
$('span.headerSpanPlus').removeClass("headerSpanMinus");
|
||||
$('table.classHierarchy').find('span.subclassExpandPlus').removeClass("subclassExpandMinus");
|
||||
$('table.classHierarchy').find('table.subclassTable').hide();
|
||||
|
@ -290,16 +291,16 @@
|
|||
objectPropHierarchyUtils.classHtml += "<div>" + this.name + "</div>" + "<table class='classHierarchy' id='classHierarchy"
|
||||
+ objectPropHierarchyUtils.classCounter + "'>" ;
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>Local Name:</td><td>"
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.localNameString + ":</td><td>"
|
||||
+ (this.data.internalName.length > 0 ? this.data.internalName : "none" ) + "</td></tr>";
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>Group:</td><td>"
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.groupString + ":</td><td>"
|
||||
+ (this.data.group.length > 0 ? this.data.group : "unspecified" ) + "</td></tr>";
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>Domain Class:</td><td>"
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.domainClass + ":</td><td>"
|
||||
+ (this.data.domainVClass.length > 0 ? this.data.domainVClass : "none" ) + " ";
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "<span class='rangeClass'>Range Class:</span>"
|
||||
objectPropHierarchyUtils.classHtml += "<span class='rangeClass'>" + i18nStrings.rangeClass + ":</span>"
|
||||
+ (this.data.rangeVClass.length > 0 ? this.data.rangeVClass : "none" ) + "</td></tr>";
|
||||
|
||||
objectPropHierarchyUtils.classHtml += "</table>";
|
||||
|
@ -337,7 +338,7 @@
|
|||
var ctr = 0;
|
||||
$.each(this.children, function() {
|
||||
if ( ctr == 0 ) {
|
||||
descendants += "<tr><td class='classDetail'>Properties:</td>";
|
||||
descendants += "<tr><td class='classDetail'>" + i18nStrings.propertiesString + ":</td>";
|
||||
ctr = ctr + 1;
|
||||
}
|
||||
else {
|
||||
|
@ -355,7 +356,7 @@
|
|||
+ objectPropHierarchyUtils.classCounter + "'>" ;
|
||||
|
||||
if ( this.data.displayRank.length > 0 ) {
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>Display Rank:</td><td>" + this.data.displayRank + "</td></tr>"
|
||||
objectPropHierarchyUtils.classHtml += "<tr><td class='classDetail'>" + i18nStrings.displayRank + ":</td><td>" + this.data.displayRank + "</td></tr>"
|
||||
}
|
||||
|
||||
objectPropHierarchyUtils.classHtml += descendants;
|
||||
|
|
|
@ -5,6 +5,8 @@ $(document).ready(function(){
|
|||
// Use jQuery() instead of $() alias, because dwr/util.js, loaded on back end editing
|
||||
// pages, overwrites $.
|
||||
// fade out welcome-message when user logs in
|
||||
$.extend(this, i18nStrings);
|
||||
|
||||
jQuery('section#welcome-message').css('display', 'block').delay(2000).fadeOut(1500);
|
||||
|
||||
// fade in flash-message when user logs out
|
||||
|
@ -23,7 +25,7 @@ $(document).ready(function(){
|
|||
|
||||
if (!$isFilterOpen) {
|
||||
|
||||
console.log("Filer is close = " + $isFilterOpen);
|
||||
console.log("Filter is closed = " + $isFilterOpen);
|
||||
|
||||
//Change button filter state to selected
|
||||
//$(this).css('background','url(../../themes/vivo-cornell/images/filteredSearchActive.gif) no-repeat right top');
|
||||
|
@ -47,7 +49,7 @@ $(document).ready(function(){
|
|||
|
||||
$isFilterOpen = false;
|
||||
|
||||
console.log("close");
|
||||
console.log("closed");
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -57,7 +59,7 @@ $(document).ready(function(){
|
|||
$(this).click(function(ev){
|
||||
ev.preventDefault();
|
||||
|
||||
if ($(this).text() == 'All') {
|
||||
if ($(this).text() == i18nStrings.allCapitalized) {
|
||||
//Selected filter feedback
|
||||
$('.search-filter-selected').text('');
|
||||
$('input[name="classgroup"]').val('');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue