Merge branch 'develop' of https://github.com/vivo-project/Vitro into develop

This commit is contained in:
tworrall 2013-10-10 14:51:45 -04:00
commit aa72757cb8
6 changed files with 122 additions and 2 deletions

View file

@ -23,6 +23,7 @@ auth:ADMIN
auth:hasPermission simplePermission:UseAdvancedDataToolsPages ;
auth:hasPermission simplePermission:UseMiscellaneousAdminPages ;
auth:hasPermission simplePermission:UseSparqlQueryPage ;
auth:hasPermission simplePermission:PageViewableAdmin ;
# permissions for CURATOR and above.
auth:hasPermission simplePermission:EditOntology ;
@ -31,6 +32,7 @@ auth:ADMIN
auth:hasPermission simplePermission:ManageTabs ;
auth:hasPermission simplePermission:SeeVerbosePropertyInformation ;
auth:hasPermission simplePermission:UseMiscellaneousCuratorPages ;
auth:hasPermission simplePermission:PageViewableCurator ;
# permissions for EDITOR and above.
auth:hasPermission simplePermission:DoBackEndEditing ;
@ -38,6 +40,7 @@ auth:ADMIN
auth:hasPermission simplePermission:SeeRevisionInfo ;
auth:hasPermission simplePermission:SeeSiteAdminPage ;
auth:hasPermission simplePermission:UseMiscellaneousEditorPages ;
auth:hasPermission simplePermission:PageViewableEditor ;
# permissions for ANY logged-in user.
auth:hasPermission simplePermission:DoFrontEndEditing ;
@ -46,9 +49,11 @@ auth:ADMIN
auth:hasPermission simplePermission:QueryUserAccountsModel ;
auth:hasPermission simplePermission:UseBasicAjaxControllers ;
auth:hasPermission simplePermission:UseMiscellaneousPages ;
auth:hasPermission simplePermission:PageViewableLoggedIn ;
# permissions for ANY user, even if they are not logged in.
auth:hasPermission simplePermission:QueryFullModel ;
auth:hasPermission simplePermission:PageViewablePublic ;
# role-based permissions for ADMIN
auth:hasPermission displayByRole:Admin ;
@ -66,6 +71,7 @@ auth:CURATOR
auth:hasPermission simplePermission:ManageTabs ;
auth:hasPermission simplePermission:SeeVerbosePropertyInformation ;
auth:hasPermission simplePermission:UseMiscellaneousCuratorPages ;
auth:hasPermission simplePermission:PageViewableCurator ;
# permissions for EDITOR and above.
auth:hasPermission simplePermission:DoBackEndEditing ;
@ -73,6 +79,7 @@ auth:CURATOR
auth:hasPermission simplePermission:SeeRevisionInfo ;
auth:hasPermission simplePermission:SeeSiteAdminPage ;
auth:hasPermission simplePermission:UseMiscellaneousEditorPages ;
auth:hasPermission simplePermission:PageViewableEditor ;
# permissions for ANY logged-in user.
auth:hasPermission simplePermission:DoFrontEndEditing ;
@ -81,9 +88,11 @@ auth:CURATOR
auth:hasPermission simplePermission:QueryUserAccountsModel ;
auth:hasPermission simplePermission:UseBasicAjaxControllers ;
auth:hasPermission simplePermission:UseMiscellaneousPages ;
auth:hasPermission simplePermission:PageViewableLoggedIn ;
# permissions for ANY user, even if they are not logged in.
auth:hasPermission simplePermission:QueryFullModel ;
auth:hasPermission simplePermission:PageViewablePublic ;
# role-based permissions for CURATOR
auth:hasPermission displayByRole:Curator ;
@ -100,6 +109,7 @@ auth:EDITOR
auth:hasPermission simplePermission:SeeRevisionInfo ;
auth:hasPermission simplePermission:SeeSiteAdminPage ;
auth:hasPermission simplePermission:UseMiscellaneousEditorPages ;
auth:hasPermission simplePermission:PageViewableEditor ;
# permissions for ANY logged-in user.
auth:hasPermission simplePermission:DoFrontEndEditing ;
@ -108,9 +118,11 @@ auth:EDITOR
auth:hasPermission simplePermission:QueryUserAccountsModel ;
auth:hasPermission simplePermission:UseBasicAjaxControllers ;
auth:hasPermission simplePermission:UseMiscellaneousPages ;
auth:hasPermission simplePermission:PageViewableLoggedIn ;
# permissions for ANY user, even if they are not logged in.
auth:hasPermission simplePermission:QueryFullModel ;
auth:hasPermission simplePermission:PageViewablePublic ;
# role-based permissions for EDITOR
auth:hasPermission displayByRole:Editor ;
@ -129,9 +141,11 @@ auth:SELF_EDITOR
auth:hasPermission simplePermission:QueryUserAccountsModel ;
auth:hasPermission simplePermission:UseBasicAjaxControllers ;
auth:hasPermission simplePermission:UseMiscellaneousPages ;
auth:hasPermission simplePermission:PageViewableLoggedIn ;
# permissions for ANY user, even if they are not logged in.
auth:hasPermission simplePermission:QueryFullModel ;
auth:hasPermission simplePermission:PageViewablePublic ;
# role-based permissions for SELF_EDITOR
# For role-based display and editing, SelfEditor is like Public.
@ -146,6 +160,7 @@ auth:PUBLIC
# permissions for ANY user, even if they are not logged in.
auth:hasPermission simplePermission:QueryFullModel ;
auth:hasPermission simplePermission:PageViewablePublic ;
# role-based permissions for PUBLIC
auth:hasPermission displayByRole:Public ;

View file

@ -157,3 +157,23 @@ action:UseMiscellaneousPages
a display:RequiredAction ;
rdfs:label "USE_MISCELLANEOUS_PAGES" .
##Page specific permissions
action:PageViewableAdmin
a display:RequiredAction ;
rdfs:label "PAGE_VIEWABLE_ADMIN" .
action:PageViewableCurator
a display:RequiredAction ;
rdfs:label "PAGE_VIEWABLE_CURATOR" .
action:PageViewableEditor
a display:RequiredAction ;
rdfs:label "PAGE_VIEWABLE_EDITOR" .
action:PageViewableLoggedIn
a display:RequiredAction ;
rdfs:label "PAGE_VIEWABLE_LOGGEDIN" .
action:PageViewablePublic
a display:RequiredAction ;
rdfs:label "PAGE_VIEWABLE_PUBLIC" .

View file

@ -95,6 +95,22 @@ public class SimplePermission extends Permission {
public static final SimplePermission USE_MISCELLANEOUS_PAGES = new SimplePermission(
NAMESPACE + "UseMiscellaneousPages");
// ----------------------------------------------------------------------
// These instances are permissions that can be specified for a given page created/managed through page management,
// e.g. this page is viewable only by admins, this page is viewable to anyone who is logged in, etc.
// ----------------------------------------------------------------------
public static final SimplePermission PAGE_VIEWABLE_ADMIN = new SimplePermission(
NAMESPACE + "PageViewableAdmin");
public static final SimplePermission PAGE_VIEWABLE_CURATOR = new SimplePermission(
NAMESPACE + "PageViewableCurator");
public static final SimplePermission PAGE_VIEWABLE_LOGGEDIN = new SimplePermission(
NAMESPACE + "PageViewableLoggedIn");
public static final SimplePermission PAGE_VIEWABLE_EDITOR = new SimplePermission(
NAMESPACE + "PageViewableEditor");
public static final SimplePermission PAGE_VIEWABLE_PUBLIC = new SimplePermission(
NAMESPACE + "PageViewablePublic");
public static List<SimplePermission> getAllInstances() {
return new ArrayList<SimplePermission>(allInstances.values());
}

View file

@ -40,6 +40,7 @@ import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.fields.FieldVTwo;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.ManagePagePreprocessor;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessDataGetterN3;
import edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors.utils.ProcessDataGetterN3Utils;
import edu.cornell.mannlib.vitro.webapp.i18n.I18n;
import edu.cornell.mannlib.vitro.webapp.utils.dataGetter.DataGetterUtils;
import edu.cornell.mannlib.vitro.webapp.utils.menuManagement.MenuManagementDataUtils;
@ -98,7 +99,7 @@ public class ManagePageGenerator extends BaseEditConfigurationGenerator implemen
private void setUrisAndLiteralsOnForm(EditConfigurationVTwo conf,
VitroRequest vreq) {
conf.setUrisOnForm(new String[]{"page", "menuItem"}); //new resources: should this be on form for new - should be for existing
conf.setUrisOnForm(new String[]{"page", "menuItem", "action"}); //new resources: should this be on form for new - should be for existing
conf.setLiteralsOnForm(new String[]{"pageName", "prettyUrl", "menuPosition", "menuLinkText", "customTemplate", "isSelfContainedTemplate", "pageContentUnit"}); //page content unit = data getter JSON object
}
@ -118,7 +119,8 @@ public class ManagePageGenerator extends BaseEditConfigurationGenerator implemen
//body template is not required, and a given page may or may not be a menu item, but should linked to menu if menu item
conf.setN3Optional(new ArrayList<String>(Arrays.asList(prefixes + pageBodyTemplateN3,
prefixes + menuItemN3 + menuN3,
prefixes + isSelfContainedTemplateN3)));
prefixes + isSelfContainedTemplateN3,
prefixes + permissionN3)));
}
private void setN3Required(EditConfigurationVTwo conf) {
@ -155,6 +157,10 @@ public class ManagePageGenerator extends BaseEditConfigurationGenerator implemen
FieldVTwo isSelfContainedTemplateField = new FieldVTwo().setName("isSelfContainedTemplate");
conf.addField(isSelfContainedTemplateField);
//Permission for the page
FieldVTwo permissionField = new FieldVTwo().setName("action");
conf.addField(permissionField);
//The actual page content information is stored in this field, and then
//interpreted using the preprocessor
FieldVTwo pageContentUnitField = new FieldVTwo().setName("pageContentUnit");
@ -413,6 +419,7 @@ public class ManagePageGenerator extends BaseEditConfigurationGenerator implemen
private HashMap<String, String> generateSparqlForExistingUris() {
HashMap<String, String> map = new HashMap<String, String>();
map.put("menuItem", getExistingMenuItemQuery());
map.put("action", getExistingActionQuery());
return map;
}
@ -420,6 +427,11 @@ public class ManagePageGenerator extends BaseEditConfigurationGenerator implemen
String query = getSparqlPrefix() + "SELECT ?menuItem WHERE {?menuItem display:toPage ?page .}";
return query;
}
private String getExistingActionQuery() {
String query = getSparqlPrefix() + "SELECT ?action WHERE {?page display:requiresAction ?action .}";
return query;
}
//Page level literals:
//"pageName", "prettyUrl", "menuPosition", "menuLinkText", "customTemplate"
@ -509,6 +521,8 @@ private String getExistingIsSelfContainedTemplateQuery() {
MenuManagementDataUtils.includeRequiredSystemData(vreq.getSession().getServletContext(), data);
data.put("classGroup", new ArrayList<String>());
data.put("classGroups", DataGetterUtils.getClassGroups(vreq));
data.put("availablePermissions", this.getAvailablePermissions(vreq));
data.put("availablePermissionOrderedList", this.getAvailablePermissonsOrderedURIs());
}
private void addExistingPageData(VitroRequest vreq, Map<String, Object> data) {
@ -531,6 +545,31 @@ private String getExistingIsSelfContainedTemplateQuery() {
}
}
private HashMap<String, String> getAvailablePermissions(VitroRequest vreq) {
HashMap<String, String> availablePermissions = new HashMap<String, String>();
String actionNamespace = "java:edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission#";
availablePermissions.put(actionNamespace + "PageViewableAdmin", I18n.text(vreq, "page_admin_permission_option"));
availablePermissions.put(actionNamespace + "PageViewableCurator", I18n.text(vreq,"page_curator_permission_option"));
availablePermissions.put(actionNamespace + "PageViewableEditor", I18n.text(vreq,"page_editor_permission_option"));
availablePermissions.put(actionNamespace + "PageViewableLoggedIn", I18n.text(vreq,"page_loggedin_permission_option"));
availablePermissions.put(actionNamespace + "PageViewablePublic", I18n.text(vreq,"page_public_permission_option"));
return availablePermissions;
}
//To display the permissions in a specific order, we can't rely on the hashmap whose keys are not guaranteed to return in a specific order
//This is to allow the display to work correctly
private List<String> getAvailablePermissonsOrderedURIs() {
List<String> availablePermissionsOrdered = new ArrayList<String>();
String actionNamespace = "java:edu.cornell.mannlib.vitro.webapp.auth.permissions.SimplePermission#";
availablePermissionsOrdered.add(actionNamespace + "PageViewableAdmin");
availablePermissionsOrdered.add(actionNamespace + "PageViewableCurator");
availablePermissionsOrdered.add(actionNamespace + "PageViewableEditor");
availablePermissionsOrdered.add(actionNamespace + "PageViewableLoggedIn");
availablePermissionsOrdered.add(actionNamespace + "PageViewablePublic");
return availablePermissionsOrdered;
}
//N3 strings
//For new or existing page
@ -563,6 +602,9 @@ private String getExistingIsSelfContainedTemplateQuery() {
final static String menuN3 = "display:DefaultMenu display:hasElement ?menuItem .";
//N3 that will assign a permission to a page
final static String permissionN3 = "?page display:requiresAction ?action .";
//These are public static methods that can be used in the preprocessor
public final static String getDataGetterN3(String dataGetterVar) {
return prefixes + "?page display:hasDataGetter " + dataGetterVar + ".";

View file

@ -403,6 +403,14 @@ pages = pages
menu_management = Menu Management
setup_navigation_menu = Setup the primary navigation menu for your website
save_button = Save
page_select_permission = Select page permissions
page_select_permission_option = Select permission
page_admin_permission_option = Only admins can view this page
page_curator_permission_option = Curators and above can view this page
page_editor_permission_option = Editors and above can view this page
page_loggedin_permission_option = Logged in individuals can view this page
page_public_permission_option = Anyone can view this page
recompute_inferences = Recompute Inferences

View file

@ -4,12 +4,15 @@
<#--------Set up variables-------->
<#assign pageData = editConfiguration.pageData />
<#assign menuAction = pageData.menuAction />
<#assign pageAvailablePermissions = pageData.availablePermissions />
<#assign pageAvailablePermissionsURIsList = pageData.availablePermissionOrderedList />
<#assign pageName = "" />
<#assign selectedTemplateType = "default" />
<#assign prettyUrl = ""/>
<#assign menuItem = ""/>
<#assign menuLinkText = "" />
<#assign action = "" />
<#assign menuPosition = pageData.highestMenuPosition />
<#assign addMenuItem = "" />
<#assign pageHeading = "${i18n().add_new_page}" />
@ -27,6 +30,8 @@
<#assign menuLinkText = lvf.getFormFieldValue(editSubmission, editConfiguration, "menuLinkText")/>
<#assign customTemplate = lvf.getFormFieldValue(editSubmission, editConfiguration, "customTemplate")/>
<#assign selfContainedTemplate = lvf.getFormFieldValue(editSubmission, editConfiguration, "isSelfContainedTemplate")/>
<#assign action = lvf.getFormFieldValue(editSubmission, editConfiguration, "action")/>
<#assign pageHeading = "${i18n().edit_page(pageName)}" />
<#assign saveBtnText = "${i18n().save_changes}" />
<#if customTemplate?has_content>
@ -121,10 +126,24 @@
</#if>
>
<label for="default">${i18n().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="hidden" id="menuPosition" name="menuPosition" value="${menuPosition!''}" />
<p class="note">${i18n().if_blank_page_title_used}</p>
</section>
<section id="pagePermissions>
<label for="default">${i18n().page_select_permission}</label>
<select id="action" name="action">
<option value="">${i18n().page_select_permission_option}</option>
<#list pageAvailablePermissionsURIsList as permissionURI>
<option value="${permissionURI}"<#if action=permissionURI> selected="selected"</#if>>${pageAvailablePermissions[permissionURI]}</option>
</#list>
</select>
</section>
<br />
</section>