updates for page management, and replacing empty options with Constant empty options for pageData in EditConfigurationTemplateModel in populateDropdowns and also logging error if name in pageData already in use for that field name

This commit is contained in:
hjkhjk54 2012-06-24 01:39:58 +00:00
parent a3fec6ed18
commit 7e2a5d22d4
14 changed files with 403 additions and 50 deletions

View file

@ -60,7 +60,7 @@ display:pageListData
OPTIONAL {?listedPageUri display:requiresBodyTemplate ?listedPageTemplate .}
OPTIONAL {?listedPageMenuItem display:toPage ?listedPageUri .}
OPTIONAL {?listedPageUri display:cannotDeletePage ?listedPageCannotDeletePage .}
} """ .
} ORDER BY ?listedPageTitle """ .
###Page Management and Data Getters
#Data getter type labels
<java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.ClassGroupPageData> rdfs:label "Class Group Page" .

View file

@ -359,6 +359,8 @@
<url-pattern>/deletePropertyController</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>PostEditCleanupController</servlet-name>
<servlet-class>edu.cornell.mannlib.vitro.webapp.edit.n3editing.controller.PostEditCleanupController</servlet-class>
@ -368,6 +370,15 @@
<url-pattern>/postEditCleanupController</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DeletePageController</servlet-name>
<servlet-class>edu.cornell.mannlib.vitro.webapp.controller.edit.DeletePageController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeletePageController</servlet-name>
<url-pattern>/deletePageController</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>EditRequestDispatch</servlet-name>
<servlet-class>edu.cornell.mannlib.vitro.webapp.edit.n3editing.controller.EditRequestDispatchController</servlet-class>

View file

@ -214,6 +214,8 @@ var pageManagementUtils = {
//Submission: validate as well as create appropriate hidden json inputs
$("form").submit(function (event) {
var validationError = pageManagementUtils.validateMenuItemForm();
//Add any errors from page content sections
validationError += pageManagementUtils.validatePageContentSections();
if (validationError == "") {
//Create the appropriate json objects
pageManagementUtils.createPageContentForSubmission();
@ -273,8 +275,6 @@ var pageManagementUtils = {
pageManagementUtils.adjustSaveButtonHeight();
},
collapseAllExistingContent:function() {
var $clickableSpan = $newDivContainer.children('span#clickable' + counter);
var $innerDiv = $newDivContainer.children('div#innerContainer' + counter);
var spanArrows = pageManagementUtils.savedContentDivs.find("span.pageContentExpand div.arrow");
spanArrows.removeClass("collapseArrow");
spanArrows.addClass("expandArrow");
@ -682,8 +682,38 @@ var pageManagementUtils = {
if(pageManagementUtils.contentTypeSelect.find("option[value='browseClassGroup']").length == 0) {
//if removed, add browse class group back
var classGroupOption = '<option value="browseClassGroup">Browse Class Group</option>';
pageManagementUtils.contentTypeSelect.find('option:eq(0)').after(classGroupGroupOption);
pageManagementUtils.contentTypeSelect.find('option:eq(0)').after(classGroupOption);
}
},
//get label of page content section
getPageContentSectionLabel:function(pageContentSection) {
var label = pageContentSection.closest("div.pageContentContainer").find("span.pageContentTypeLabel").html();
if(label == null) {
label = "";
}
return label;
},
//Validation across different content types
validatePageContentSections:function() {
//Get all page content sections
var pageContentSections = $("section[class='pageContent']");
var validationErrorMsg = "";
//For each, based on type, validate if a validation function exists
$.each(pageContentSections, function(i) {
if(pageManagementUtils.processDataGetterUtils != null) {
var dataGetterType = pageManagementUtils.processDataGetterUtils.selectDataGetterType($(this));
if(pageManagementUtils.dataGetterProcessorMap != null) {
var dataGetterProcessor = pageManagementUtils.dataGetterProcessorMap[dataGetterType];
//the content type specific processor will create the json object to be returned
if($.isFunction(dataGetterProcessor.validateFormSubmission)) {
//Get label of page content section
var label = pageManagementUtils.getPageContentSectionLabel($(this));
validationErrorMsg += dataGetterProcessor.validateFormSubmission($(this), label);
}
}
}
});
return validationErrorMsg;
}
};

View file

@ -126,6 +126,22 @@ var processClassGroupDataGetterContent = {
//Should probably remove this entire method and copy there
processClassGroupDataGetterContent.displayClassesForClassGroup(results, pageContentSection);
});
},
//Validation on form submit: Check to see that class group has been selected
validateFormSubmission: function(pageContentSection, pageContentSectionLabel) {
var validationError = "";
if (pageContentSection.find('select[name="selectClassGroup"]').val() =='-1') {
validationError += pageContentSectionLabel + ": You must supply a class group <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 />";
}
}
return validationError;
}

View file

@ -27,7 +27,21 @@ var processFixedHTMLDataGetterContent = {
retrieveAdditionalLabelText:function(existingContentObject) {
var saveToVarValue = existingContentObject["saveToVar"];
return saveToVarValue;
}
},
//Validation on form submit: Check to see that class group has been selected
validateFormSubmission: function(pageContentSection, pageContentSectionLabel) {
var validationError = "";
//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 />"
}
var htmlValue = pageContentSection.find("textarea[name='htmlValue']").val();
if(htmlValue == "") {
validationError += pageContentSectionLabel + ": You must supply some HTML or text. <br />";
}
return validationError;
}
}

View file

@ -37,6 +37,10 @@ var processIndividualsForClassesDataGetterContent = {
//For the label of the content section for editing, need to add additional value
retrieveAdditionalLabelText:function(existingContentObject) {
return processClassGroupDataGetterContent.retrieveAdditionalLabelText(existingContentObject);
}
},
//Validation on form submit: Check to see that class group has been selected
validateFormSubmission: function(pageContentSection) {
return processClassGroupDataGetterContent.validateFormSubmission(pageContentSection);
}
}

View file

@ -32,7 +32,21 @@ var processSparqlDataGetterContent = {
retrieveAdditionalLabelText:function(existingContentObject) {
var saveToVarValue = existingContentObject["saveToVar"];
return saveToVarValue;
}
},
//Validation on form submit: Check to see that class group has been selected
validateFormSubmission: function(pageContentSection, pageContentSectionLabel) {
var validationError = "";
//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 />"
}
var queryValue = pageContentSection.find("textarea[name='query']").val();
if(queryValue == "") {
validationError += pageContentSectionLabel + ": You must supply a Sparql query. <br />";
}
return validationError;
}
};

View file

@ -0,0 +1,49 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
var pageDeletion = {
// on initial page setup
onLoad:function(){
if (this.disableFormInUnsupportedBrowsers()) {
return;
}
this.initObjects();
this.bindEventListeners();
},
initObjects:function() {
this.deleteLinks = $("a[cmd='deletePage']");
},
bindEventListeners:function() {
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 + "?");
if(confirmResult) {
//Continue with the link
return true;
} else {
event.preventDefault();
return false;
}
});
},
disableFormInUnsupportedBrowsers: function() {
var disableWrapper = $('#ie67DisableWrapper');
// Check for unsupported browsers only if the element exists on the page
if (disableWrapper.length) {
if (vitro.browserUtils.isIELessThan8()) {
disableWrapper.show();
$('.noIE67').hide();
return true;
}
}
return false;
}
};
$(document).ready(function() {
pageDeletion.onLoad();
});

View file

@ -46,11 +46,10 @@
<td>
<a href="${urls.base}/individual?uri=${pagex.listedPageUri?url}&switchToDisplayModel=1"><img src="${urls.images!}/profile-page-icon.png" title="view the profile properties for this page" alt="profile page"></a>
&nbsp;&nbsp;
<#-- <#if pagex.listedPageCannotDeletePage?? >
<#else>
<a href="#"><img src="${urls.images!}/individual/deleteIcon.gif" title="delete this page" alt="delete"></a>
<#if !pagex.listedPageCannotDeletePage?has_content >
<a cmd="deletePage" pageTitle=" ${pagex.listedPageTitle!}" href="${urls.base}/deletePageController?pageURI=${pagex.listedPageUri?url}"><img src="${urls.images!}/individual/deleteIcon.gif" title="delete this page" alt="delete"></a>
</#if>
--> </td>
</td>
</tr>
@ -73,7 +72,13 @@
</section>
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/menupage/pageList.css" />',
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/js/jquery-ui/css/smoothness/jquery-ui-1.8.9.custom.css" />',
'<link rel="stylesheet" href="${urls.base}/css/menupage/pageList.css" />',
'<link rel="stylesheet" href="${urls.base}/css/menumanagement/menuManagement.css" />')}
${scripts.add('<script type="text/javascript" src="${urls.base}/js/jquery-ui/js/jquery-ui-1.8.9.custom.min.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/js/customFormUtils.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/js/browserUtils.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/js/pageDeletion.js"></script>')}

View file

@ -2,9 +2,9 @@
<#--Browse Class Groups Section-->
<#-----------Variable assignment-------------->
<#--Requires Menu action be defined in parent template-->
<#assign classGroup = pageData.classGroup />
<#assign classGroups = pageData.classGroups />
<#assign includeAllClasses = false/>
<#-- some additional processing here which shows or hides the class group selection and classes based on initial action-->
<#assign existingClassGroupStyle = " " />
<#assign selectClassGroupStyle = 'class="hidden"' />
@ -25,7 +25,7 @@
<select name="selectClassGroup" id="selectClassGroup" role="combobox">
<option value="-1" role="option">Select one</option>
<#list classGroups as aClassGroup>
<option value="${aClassGroup.URI}" <#if aClassGroup.URI = associatedPageURI>selected</#if> role="option">${aClassGroup.publicName}</option>
<option value="${aClassGroup.URI}" role="option">${aClassGroup.publicName}</option>
</#list>
</select>
</section>

View file

@ -8,11 +8,9 @@
<#assign pageName = "" />
<#assign selectedTemplateType = "default" />
<#assign prettyUrl = ""/>
<#assign associatedPage = ""/>
<#assign associatedPageURI = ""/>
<#assign menuItem = ""/>
<#assign menuLinkText = "" />
<#assign menuPosition = "" />
<#assign menuPosition = pageData.highestMenuPosition />
<#--Existing Values For Editing condition-->
<#assign literalValues = editConfiguration.existingLiteralValues />
<#assign uriValues = editConfiguration.existingUriValues />
@ -21,12 +19,15 @@
<#assign prettyUrl = lvf.getFormFieldValue(editSubmission, editConfiguration, "prettyUrl")/>
<#assign menuItem = lvf.getFormFieldValue(editSubmission, editConfiguration, "menuItem")/>
<#assign menuLinkText = lvf.getFormFieldValue(editSubmission, editConfiguration, "menuLinkText")/>
<#assign menuPosition = lvf.getFormFieldValue(editSubmission, editConfiguration, "menuPosition")/>
<#assign customTemplate = lvf.getFormFieldValue(editSubmission, editConfiguration, "customTemplate")/>
<#if customTemplate?has_content>
<#assign selectedTemplateType = "custom" />
</#if>
<#assign editMenuPosition = lvf.getFormFieldValue(editSubmission, editConfiguration, "menuPosition")/>
<#--if menu position exists for a menu item, then use that, otherwise use the highest available menu position number from page data-->
<#if editMenuPosition?has_content && editMenuPosition != "">
<#assign menuPosition = editMenuPosition/>
</#if>
</#if>
<#------------HTML Portion------------->
@ -97,7 +98,7 @@
<label for="default">Menu Item Name</label>
<input type="hidden" id="menuItem" name="menuItem" value="${menuItem!''}" />
<input type="text" id="menuLinkText" name="menuLinkText" value="${menuLinkText!''}" size="28" role="input" />
<input type="text" id="menuPosition" name="menuPosition" value="${menuPosition!''}" />
<input type="hidden" id="menuPosition" name="menuPosition" value="${menuPosition!''}" />
<p class="note">If left blank, the page title will be used.</p>
</section>
<br />