Merge branch 'develop' of https://github.com/vivo-project/Vitro into develop
This commit is contained in:
commit
aa72757cb8
6 changed files with 122 additions and 2 deletions
|
@ -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 ;
|
||||
|
|
|
@ -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" .
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -421,6 +428,11 @@ public class ManagePageGenerator extends BaseEditConfigurationGenerator implemen
|
|||
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 + ".";
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue