Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Grouper UI Properties

Include Page
spaceKeyGrouper
pageTitleNavigation

Panel
borderColor#ccc
bgColor#FcFEFF
titleColorwhite
bgColor#FcFEFF
titleBGColor#00a400

 These topics are discussed in the "Grouper UI" training series.

...

It is possible to turn off the style sheets. This may be useful for testing the accessibility of the Grouper UI and any customisations you make (see the Remove CSS stylesheet references? form field in Determining How a Customising the Grouper UI Page Was Constructed.

Anchor
logo
logo

...

Currently, there is nowhere in the UI to select a different locale from the default, however, if a lang parameter is passed as part of the URL which invokes login, the value will be used as the locale for the current session.

See Determining How a Customising the Grouper UI Page Was Constructed for details of how to display which key / value pairs were used in an actual page in the UI.

...

Even if you don't need to change/add any actions, a Tiles plugin must be configured in order to make custom templates available (see Using Custom Templates instead of the standard templates):

No Format

<plug-in className="org.apache.struts.tiles.TilesPlugin">
  <set-property property="moduleAware" value="true"/>
  <set-property property="definitions-debug" value="0"/>
  <set-property property="definitions-parser-details" value="0"/>
  <set-property property="definitions-parser-validate" value="false"/>
  <set-property property="definitions-config" value="/WEB-INF/tiles-def.xml,/WEB-INF/tiles-def-custom.xml"/>
</plug-in>

...

Note: The standard UI does not have a logout link, because it is not possible to safely logout of basic HTTP authentication. Other authentication schemes will generally work by setting an HttpSession attribute - which is cleared when an HttpSession is invalidated, so a logout link is provided.

See debug information in logs, edit log4j.properties

Code Block
log4j.logger.edu.internet2.middleware.grouper.ui.GrouperUiFilter = DEBUG

 

Anchor
authorization
authorization

...

As of v1.3.0 it is possible to override how the UI decides what the current user can do with a group. The primary motivation for this feature is to allow some UI features to be turned off i.e. when the feature should be maintained by a loader. Customization is achieved by implementing the UIGroupPrivilegeResolver interface, and configuring it through media.properties e.g.

No Format

edu.internet2.middleware.grouper.ui.UIGroupPrivilegeResolver=uk.ac.bris.is.grouper.ui.UoBUIGroupPrivilegeResolver

...

As of version 1.2.1 a new MenuFilter interface has been introduced to allow a more structured approach to customizing menus. Two implementations are provided, configured as:

No Format

menu.filters=edu.internet2.middleware.grouper.ui.RootMenuFilter edu.internet2.middleware.grouper.ui.GroupMembershipMenuFilter

...

As of Grouper v1.2.0 it is possible to configure a single arbitrary attribute to use when displaying a subject, group or stem. The default media.properties keys are:

No Format

#Default if an attribute is not configured for a specific subject source. 'description' is set for backwards compatability
subject.display.default=description

#used for subjects which are groups sourced by Grouper
subject.display.g\:gsa=displayExtension

#used for internal subjects i.e. GrouperSystem and GrouperAll
subject.display.g\:isa=name

#default attribute for groups (when not viewed as a subject)
group.display=displayExtension

#flat = context i.e. flat mode in the UI. Here the hierarchy is not shown and names displayExtension need not be unique across
#multiple stems.
group.display.flat=displayName

#default attribute for stems
stem.display=displayExtension

 In the QuickStart the following key is also used:

No Format

subject.display.qsuob=name

 When displaying search results sites can configure a default attribute to display:

No Format

search.group.result-field=name
search.stem.result-field=name

in addition sites can configure a set of attributes from which the user may select one to display:

No Format

search.group.result-field-choice=name displayExtension displayName
search.stem.result-field-choice=name displayExtension displayName

As of Grouper v1.2.1 it is possible, for the SubjectSummary page, to specify a subset of available attributes to display and the order in which to display them:

No Format

# subject.attributes.order.<SOURCE_ID>=comma separated list of case sensitive attribute names
subject.attributes.order.g\:gsa=displayExtension,displayName,name,extension,createTime,createSubjectId,createSubjectType,modifySubjectId,modifySubjectType,modifyTime,subjectType,id

#subject.attributes.order.qsuob=LOGINID,LFNAME,subjectType,id

The UI wraps API objects as specific subclasses of ObjectAsMap. As of v1.3.0 it is possible to configure your own implementations. Typically these would subclass the Grouper UI concrete subclasses and add/modify behaviour. Configuration is through media.properties e.g.

No Format

objectasmap.StemAsMap.impl=uk.ac.bris.is.grouper.ui.util.UOBStemAsMap

...

As of Grouper v1.2.1 you can sort subjects from the same source together by defining strings which are pre-pended to the usual sort string:

No Format

subject.pre-sort.g\:gsa=AAA
subject.pre-sort.qsuob=BBB

...

In the QuickStart import and export is 'activated' using:

No Format

membership-export.config=resources/custom/membership-export.xml
membership-import.config=resources/custom/membership-import.xml

...

As of Grouper v1.2.1 you can configure the UI to allow import of data from a text area:

No Format

membership-import.allow-textarea=true

...

The first web.xml fragment is grouper-qs/custom-grouper-ui/webapp/WEB-INF/web.custom.xml and it overrides the default action servlet definition to ensure that it loads the Struts config customisations - which in turn load the Tiles definition customisations.

No Format

<servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config-custom.xml,/WEB-INF/struts-config.xml,/WEB-INF/struts-config-custom.xml</param-value>
  </init-param>
  <init-param>
    <param-name>config/i2mi</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
  </init-param>
  <load-on-startup>2</load-on-startup>
</servlet>

...