Membership lite UI skinning v1.6

Similar documents
Table Basics. The structure of an table

Updating Users. Updating Users CHAPTER

User Guide. Kronodoc Kronodoc Oy. Intelligent methods for process improvement and project execution

Basics of Web Design, 3 rd Edition Instructor Materials Chapter 2 Test Bank

eschoolplus+ Cognos Query Studio Training Guide Version 2.4

Administration. STILOG IST, all rights reserved

By Ryan Stevenson. Guidebook #2 HTML

As we design and build out our HTML pages, there are some basics that we may follow for each page, site, and application.

Web Development & Design Foundations with HTML5 & CSS3 Instructor Materials Chapter 2 Test Bank

irc Pro (Not for diagnostic use)

HTML CS 4640 Programming Languages for Web Applications

Colligo Engage Outlook App 7.1. Connected Mode - User Guide

1. Begin by selecting [Content] > [Add Content] > [Webform] in the administrative toolbar. A new Webform page should appear.

Colligo Engage Outlook App 7.1. Offline Mode - User Guide

Table of contents. Pure ASP Upload 3 Manual DMXzone

Table of Contents. Navigate the Management Menu. 911 Management Page

Updated PDF Support Manual:

Product Parts Finder for Magento 2

User and Hierarchy Import Guide Consortium (Multi-School) CSV Update Tool

MONEY TRANSFER. Import & Approval User Guide

Adobe Connect Pro Building Block. Install Guide

1/6/ :28 AM Approved New Course (First Version) CS 50A Course Outline as of Fall 2014

AGENT123. Full Q&A and Tutorials Table of Contents. Website IDX Agent Gallery Step-by-Step Tutorials

Cox Business Online Backup Administrator Guide. Version 2.0

Adding Users. Adding Users CHAPTER

Process Director Documentation. System Administrator's Guide

Chapter 2 Autodesk Asset Locator... 3

Call Detail Reporting

ORACLE USER PRODUCTIVITY KIT USAGE TRACKING ADMINISTRATION & REPORTING RELEASE SERVICE PACK 1 PART NO. E

Contents. Batch & Import Guide. Batch Overview 2. Import 157. Batch and Import: The Big Picture 2 Batch Configuration 11 Batch Entry 131

Chapter 2:- Introduction to XHTML. Compiled By:- Sanjay Patel Assistant Professor, SVBIT.

MailEnable Connector for Microsoft Outlook

Clearspan OpEasy Basic Provisioning User Guide MAY Release

As part of our commitment to continuously updating and enhancing our fundraising system, we are thrilled to announce our latest enhancements.

InSite User Guide. InSite User Guide. InSite User Guide

A Brief Introduction to HTML

Importing Existing Data into LastPass

HTTPS The New B2Bi Portal. Bank of America s secure web transmission interface user guide

RITIS Training Module 4 Script

BASICS OF WEB DESIGN CHAPTER 2 HTML BASICS KEY CONCEPTS

MailEnable Connector for Microsoft Outlook

WLAN MIERUZZO BASIC SOFTWARE

Grouper new UI. Other screens not captured here. General information. These topics are discussed in the "Grouper UI" training series.

Running PeopleSoft Query Viewer and Running Query to Excel Basic Steps

WebHare Application Portal - WebPack Module

Review of HTML. Chapter Pearson. Fundamentals of Web Development. Randy Connolly and Ricardo Hoar

S-Drive User Guide v1.27

Creating HTML files using Notepad

Web Development & Design Foundations with HTML5 & CSS3 Instructor Materials Chapter 2 Test Bank

HTML: Parsing Library

Web Development and Design Foundations with HTML5 8th Edition

BMC FootPrints 12 Integration with Remote Support

USER MANUAL. SEO Hub TABLE OF CONTENTS. Version: 0.1.1

A Guide to Creating QuickReports

Using Your New Webmail

Powerlink for WebCT CE 6/ Vista 4 User Guide (updated )

PRODUCT MANUAL. idashboards Data Hub Manual. Version 9.6

Query Studio Training Guide Cognos 8 February 2010 DRAFT. Arkansas Public School Computer Network 101 East Capitol, Suite 101 Little Rock, AR 72201

HTML: Parsing Library

WebStudio User Guide. OpenL Tablets BRMS Release 5.18

Finding Your Way Around Aspen IMS

Documentation for the new Self Admin

HTML Forms. 10 September, Dr Derek Peacock. This is a short introduction into creating simple HTML forms. Most of the content is

Perceptive Matching Engine

SAS Visual Analytics 7.3 for SAS Cloud: Onboarding Guide

SymphonyThemes Quick Start Guide. Build a great theme with SymphonyThemes

Static Webpage Development

c122sep814.notebook September 08, 2014 All assignments should be sent to Backup please send a cc to this address

Web development using PHP & MySQL with HTML5, CSS, JavaScript

CDP Data Center Console User Guide CDP Data Center Console User Guide Version

Athletic schedules Book lists Coaches Alumni. District

Web Development and HTML. Shan-Hung Wu CS, NTHU

recall: a Web page is a text document that contains additional formatting information in the HyperText Markup Language (HTML)

Simple Form Documentation

Manage Phone Books. Phone Books and Contacts

c122jan2714.notebook January 27, 2014

More Skills 11 Export Queries to Other File Formats

Using the Control Panel

pt_opensesame Guide v1.6 - December 2015

BI Office. Release Notes 6.41

ChronoForms v3.0 Tutorials #5 Saving data to the database.

CSC 121 Computers and Scientific Thinking

Login: Quick Guide for Qualtrics May 2018 Training:

MySciLEARN Student Update Administrator Guide. For system administrators managing the Fast ForWord and Reading Assistant programs

Batch and Import Guide

Electronic Committees (ecommittees) Frequently Asked Questions v1.0

A HTML document has two sections 1) HEAD section and 2) BODY section A HTML file is saved with.html or.htm extension

CST272 Getting Started Page 1

User Manual. SmartLite WebQuiz SQL Edition

Clearspan OpEasy Basic Provisioning Guide NOVEMBER Release

Sostenuto 4.1 title page. System Management User s Guide

1.2. Extract the downloaded file to the local drive. Generally copied at C:\SchedulingTool-master.

HTML. HTML Evolution

Oracle User Productivity Kit User and Content Management. E August 2016

MotionBoard Agent Usage Guidelines

Client Side JavaScript and AJAX

For those working on setting up Super Star Online for the school year, here are a few tips:

OpEasy Basic Provisioning User Guide Release

DISCLAIMER Whilst every effort has been made

Transcription:

Membership lite UI skinning v1.6 This document shows how to add UI skins to the membership lite UI in Grouper 1.6+ Summary You can make skins on the server side, or users can use attributes and remote config files to manage their own skins (if enabled). The text, CSS, and (certain) settings can be affected There are three places where configs and text can be configured: remote URLs, locally, or the default for a membership lite ui. The resolver will check for each in that order so you can override whichever properties and text you want without having to override all. Note that this is different than the normal admin UI text so tooltips will not work the same way. Server-side skinning If you want to maintain the control of the skins centrally by the grouper admin, the config files can be placed in the UI webapp. Each group could have more than one skin, based on URL and membershiplitename. So the URL to edit a group (in this case by name) used to be: http://localhost:8090/grouper/grouperui/apphtml/grouper.html?operation=simplemembershipupdate.init&groupname=astem:agroup But now you add membershiplitename with a name to the end. The name must be alphanumeric or underscore http://localhost:8090/grouper/grouperui/apphtml/grouper.html?operation=simplemembershipupdate.init&groupname=astem: agroup&membershiplitename=groupermembershipexample That name corresponds to a config file. This is be in one of two places: on the classpath or on the file system webapp/web-inf/classes/membershiplitename/groupermembershipexample.properties of configure this setting in media.properties: simplemembershipupdate.confdir to a directory, and put the file in that directory. e.g. simplemembershipupdate.confdir = c:/temp/membershiplitename File is: c:/temp/membershiplitename/groupermembershipexample.properties Attribute-based skinning If you want distributed control of skinning, then Grouper users can maintain their skins without requiring help from the central Grouper administrator. Group group type is groupergroupmembershipsettings and the attribute is groupergroupmshipsettingsurl. You can have grouper auto create this attribute, set this to true in the grouper.properties and restart grouper: membershipupdatelitetypeautocreate=true Or, here is the GSH to create: typeadd("groupergroupmembershipsettings"); typeaddattr("groupergroupmembershipsettings", "groupergroupmshipsettingsurl", AccessPrivilege.ADMIN, AccessPrivilege.ADMIN, false); By default, only wheel users can edit that attribute based on this in the grouper.properties: security.types.groupergroupmembershipsettings.wheelonly = true You can change that so that only a certain group is allowed to edit it, or everyone. The value of the attribute on a group will be a URL which is a properties file that will be retrieved remotely. This should be stored on a secure server so it isnt tampered with. e.g. https://school.edu/dept/whatever/somefile.properties. If you like, you can restrict the IP address of requesters for the properties file and text file to the Grouper UI server(s). External CSS cannot be protected this way as the request comes from the user's browser.

Membership lite settings Here is an example config file with the available settings: ## can be subjectid, sourceid, name, description, screenlabel, memberid, or attribute name which is single valued ## comma separated. will be sorted by sourceid, then the sort field (recommended to be screenname) #simplemembershipupdate.exportallsubjectfields=sourceid, screenlabel, entityid, name, description #simplemembershipupdate.exportallsortfield=screenlabel ## if by default the screen will delete multiple ## (screen is easier to use but takes longer potentially and defaults to false) #simplemembershipupdate.defaultdeletemultiple=false ## if by default the screen will show the import by file instead of direct textarea input ## this defaults to true which helps with large imports, there might be memory problem with textarea import #simplemembershipupdate.defaultimportfile=true #add an extra css to the simple membership update. use relative or absolute urls, comma separated #e.g. http://localhost:8090/grouper/membershipliteexample.css #note, this is loaded from browser, so if the site is SSL and CSS is not, browser might give a warning to user #simplemembershipupdate.extracss = #properties file via url to look for text first (before nav.properties) #simplemembershipupdate.textfromurl = http://localhost:8090/grouper/membershiplitetextexample.properties External text If the simplemembershipupdate.textfromurl setting is set (in any context), it will use that text (in addition to defaults if applicable) for text on screen. Note that not *all* text is available, only text in the membership lite module. E.g. some central text is not available e.g. text on the paging control. There is a processor for this text to make it web safe. This is configured in the media.properties: #if allowing external text by url, this is the filter to strip invalid html tags. blank for none simplemembershipupdate.externalurltextproperties.grouperhtmlfilter = edu.internet2.middleware.grouper.util. GrouperHtmlFilter If that is blank, it will not process the text. You can configure your own to the interface: edu.internet2.middleware.grouper.util.htmlfilter. The default will only allow simple HTML tags (with no attributes): b, br, p, i, em, strong, blockquote, ul, li, ol, div, tt, hr, s, span Here is the available text (uncomment to enable): #simplemembershipupdate.updatetitle=group membership update lite #simplemembershipupdate.groups.summary.display-extension=name #simplemembershipupdate.groups.summary.display-name=path #simplemembershipupdate.groups.summary.description=description #simplemembershipupdate.groups.summary.extension= ID #simplemembershipupdate.groups.summary.name= ID path #simplemembershipupdate.field.displayname.alternatename=alternate ID path #simplemembershipupdate.groups.summary.id=uuid #simplemembershipupdate.tooltiptargetted.field.displayname.displayextension=name is the label that identifies this group, and might change. #simplemembershipupdate.tooltiptargetted.field.displayname.displayname=path consists of the name of each enclosing folder plus the group name, separated by colons. #simplemembershipupdate.tooltiptargetted.field.displayname.description=description contains notes about the group, which could include: <br />what the group represents, why it was created, etc. #simplemembershipupdate.tooltiptargetted.field.displayname.extension=id is the unique identifier chosen by the group creator for this group. <br /><br />The ID is unique within this folder, and should rarely change. It can be used by other systems to refer to this group.

#simplemembershipupdate.tooltiptargetted.field.displayname.name=id Path consists of the unique ID of each enclosing folder plus the group ID, separated by colons. <br /><br />The ID Path is unique for each group and should rarely change. It can be used by other systems to refer to this group. #simplemembershipupdate.tooltiptargetted.groups.summary.id=uuid stands for Universal Unique Identifier, a generated key that is distinct from any other UUID in this or any other system. <br /><br />The UUID does not change, and can be used as an identifier in other systems. #simplemembershipupdate.tooltiptargetted.field.displayname.alternatename=alternate ID Path allows groups to be searchable using an alternate name. The format is the same as the format of ID Path.<br /><br />This is especially useful when moving a group, which will add the old ID Path of the group as the Alternate ID Path by default. Like the ID Path, the Alternate ID Path can be used by other systems to refer to this group. #infodot.title.simplemembershipupdate.updatetitle=this page lets you view and update the memberships of a group. <br /><br />It is meant for only simple operations. #simplemembershipupdate.find.browse.here = Current location is: #simplemembershipupdate.viewinadminui=admin UI #tooltiptargetted.simplemembershipupdate.viewinadminui=switch to the Admin UI for a more complete set of features #simplemembershipupdate.groupsubtitle=group #simplemembershipupdate.changelocation=find a group #simplemembershipupdate.addmembersubtitle=add member #simplemembershipupdate.addmemberbutton=add member #simplemembershipupdate.membershiplistsubtitle=membership list #simplemembershipupdate.paginglabelprefix=showing group members: #simplemembershipupdate.nomembersfound=there are no members in this group #simplemembershipupdate.deleteconfirm =Are you sure you want to delete this membership? #simplemembershipupdate.pagingresultprefix =Result page: #simplemembershipupdate.errornotenoughsubjectchars=enter 2 or more characters #simplemembershipupdate.errornotenoughfilterchars=enter 3 or more characters #simplemembershipupdate.errornotenoughfiltercharsalert=enter 3 or more characters in the filter field #simplemembershipupdate.successmemberdeleted=success: the member was deleted: {0} #simplemembershipupdate.errorusersearchnothingentered=enter search criteria into the auto-complete box for an entity to add to the group #simplemembershipupdate.warningsubjectalreadymember=entity already a member: {0} #simplemembershipupdate.successmemberadded=success: member added: {0} #simplemembershipupdate.errorsubjectnotfound=entity not found: {0} #simplemembershipupdate.errorsubjectnotunique=entity not unique: {0} #simplemembershipupdate.errorsourceunavailable=source unavailable #simplemembershipupdate.errorusersearchtoomanyresults=too many results, narrow your search #simplemembershipupdate.errorusersearchnoresults=no results found, change your search criteria #simplemembershipupdate.deleteimagealt=delete #simplemembershipupdate.errortoomanybrowsers=the group you are editing is out of sync in the user interface. Perhaps you have two browser tabs open editing different groups. This group will be refreshed, please start over. #simplemembershipupdate.advancedmenudeletemultiple=delete multiple #simplemembershipupdate.advancedmenudeletemultipletooltip=selecting this option will show checkboxes next to members and a delete button at the bottom #simplemembershipupdate.advancedmenushowgroupdetails=show group details #simplemembershipupdate.advancedmenushowgroupdetailstooltip=selecting this option will show more information about the group such as the id. #simplemembershipupdate.advancedmenushowmemberfilter=search for member #simplemembershipupdate.advancedmenushowmemberfiltertooltip=selecting this option will show a search box above the membership list where you can search for members in this group #simplemembershipupdate.advancedmenuimportexport=import / export #simplemembershipupdate.advancedmenuimportexporttooltip=import members from a comma separated values file (CSV) or export to a CSV file #simplemembershipupdate.advancedmenuexport=export #simplemembershipupdate.advancedmenuexporttooltip=export members to a comma separated values file (CSV) which can be opened in a spreadsheet program and manipulated #simplemembershipupdate.advancedmenuexportsubjectids=export entity IDs #simplemembershipupdate.advancedmenuexportsubjectidstooltip=export entity IDs and source IDs to a comma separated values file (CSV) which can be opened in a spreadsheet program and manipulated #simplemembershipupdate.advancedmenuexportall=export all member data #simplemembershipupdate.advancedmenuexportalltooltip=export all member data (configured on server which fields), e.g. subject ID, login ID, name, etc to a comma separated values file (CSV) which can be opened in a spreadsheet program and manipulated

#simplemembershipupdate.advancedmenuimport=import #simplemembershipupdate.advancedmenuimporttooltip=import from a comma separated values (CSV) file #simplemembershipupdate.deletemultiplebutton=remove selected members #simplemembershipupdate.deletemultipletooltip=select multiple members by checking checkboxes next to the members. Click this button to remove them from the group. #simplemembershipupdate.deleteallbutton=remove all members #simplemembershipupdate.deletealltooltip=remove all members in the group, including members not shown on the screen if there are more than the page size. #simplemembershipupdate.errordeletecheckboxrequired=error: select one or more members to remove from the group #simplemembershipupdate.successmembersdeleted=success: {0} members were deleted #simplemembershipupdate.successallmembersdeleted=success: all {0} members were deleted #simplemembershipupdate.advancedbutton=advanced features #simplemembershipupdate.addmembercombohint=enter search text to find a member to add #simplemembershipupdate.filtermembercombohint=enter search text to find a member in the list #simplemembershipupdate.downloadsubjectidslabel=click the link to download the subjectids of the members: #simplemembershipupdate.downloadalllabel=click the link to download the members information: #simplemembershipupdate.importlabel=select a comma separated values (CSV) file (e.g. from a spreadsheet program like Excel) which has a column for sourceid, and any of: subjectid, subjectidentifier, subjectidoridentifier. <br /><br />Alternately, you can upload a text file of subjectidoridentifiers, each on a new line, with the first line labeled as: subjectidoridentifer #simplemembershipupdate.importsubtitle=import members #infodot.subtitle.simplemembershipupdate.importsubtitle=upload members from a file. You check replace existing members, or just add new members.<br /><br />The file must be a comma separated values (CSV) file, e.g. from a spreadsheet program like Microsoft Excel. There should be a column sourceid, and a column of any of the following: entityid, entityidentifier, entityidoridentifier. If there is no sourceid, then all sources will be found (this is less efficient), and if two sources have the same entityid, there will be an error. Each member is on its own line. The sourceid is one of a few entity source IDs configured in the Grouper server.<br /><br />The entityid is typically a person ID, the entityidentifer could be a login ID, and the entityidoridentifier will look by ID, and if not found, look by identifier.<br /><br />Note if you omit the sourceid column, it will be less efficient, but it will still work if you dont have two sources with the same entityid. This does not need to be CSV, it could be a text file. e.g. you could upload a text file of entityidoridentifiers, each on a new line, with the first line labeled as: entityidoridentifier<br /><br />Example CSV file 1: <br /><br /><tt>sourceid,entityid<br />somesourceid,12345<br />anothersourceid,23456</tt><br /><br /><br />Example 2:<br /><br /><tt>sourceid,entityidentifier<br />somesourceid,sjohnson<br />anothersourceid,jsmith</tt><br /><br /><br />Example 3:<br /><br /><tt>sourceid,entityidoridentifier<br />somesourceid,45678<br />anothersourceid, jsmith</tt><br /><br /><br />Example 4:<br /><br /><tt>sourceid,entityid,entityidentifier<br />somesourceid, 45678<br />anothersourceid,,jsmith</tt><br /><br /><br />Example 5:<br /><br /><tt>entityid<br />56789<br />67890</tt><br /><br /><br />Example 6:<br /><br /><tt>entityidentifier<br />sjohnson<br />jsmith</tt><br /><br /><br />Example 7:<br /><br /><tt>entityidoridentifier<br />76543<br />jsmith</tt><br /><br /><br /> #simplemembershipupdate.importavailablesourceids=available sourceids: #simplemembershipupdate.importreplaceexistingmembers=replace existing members: #simplemembershipupdate.importcommaseparatedvaluesfile=entities file (CSV or list of id's each on new line): #simplemembershipupdate.importcancelbutton=cancel #simplemembershipupdate.importbutton=submit #simplemembershipupdate.importerrornowrongfile=please submit a non-empty CSV file, the file name must end with. csv, or.txt : #simplemembershipupdate.importerrorblanktextarea=please enter in the CSV or entity id list in the textarea #simplemembershipupdate.importerrornoid=cant find any identifer, need to pass in a entityid or entityidentifier or entityidoridentifier #simplemembershipupdate.importerrornoidcol=cant find any identifer column header on first line, need to pass in entityid or entityidentifier or entityidoridentifier #simplemembershipupdate.importerrorsubjectproblems=error: did not remove any members since there were entity problems in import file #simplemembershipupdate.importsuccesssummary=success: import completed #simplemembershipupdate.importerrorsummary=error: import was not successful, see {0} errors below #simplemembershipupdate.importsizesummary=the immediate membership size was {0} and is now {1} #simplemembershipupdate.importaddsdeletessummary=there were {0} successful adds, and {1} successful deletes #simplemembershipupdate.importsubjecterrorslabel=entity errors #simplemembershipupdate.importadderrorslabel=errors adding members #simplemembershipupdate.importremoveerrorslabel=errors deleting members #simplemembershipupdate.importdirectinput=entities (CSV or list of id's each on new line) #simplemembershipupdate.membershipliteimportfilebutton=input members directly on screen #simplemembershipupdate.membershipliteimporttextfieldbutton=input members from file #simplemembershipupdate.membermenudetailslabel=member details

#simplemembershipupdate.membermenudetailstooltip=view all attributes about this member #simplemembershipupdate.membermenuenableddisabled=edit start and end dates #simplemembershipupdate.membermenuenableddisabledtooltip=edit the dates this membership will start or end #simplemembershipupdate.membermenualt=member menu #simplemembershipupdate.memberdetailssubtitle=member details #simplemembershipupdate.enableddisablesubtitle=edit start and end dates #simplemembershipupdate.enableddisablegrouppath=group path: #simplemembershipupdate.enableddisableentity=entity: #simplemembershipupdate.enableddisableentityid=entity id: #simplemembershipupdate.enableddisableentitysource=entity source: #simplemembershipupdate.enableddisablestartdate=start membership on date: #simplemembershipupdate.enableddisableenddate=end membership on date: #simplemembershipupdate.enableddisableokbutton=submit #simplemembershipupdate.enableddisablecancelbutton=cancel #simplemembershipupdate.enableddisabledatemask=(yyyy/mm/dd) #simplemembershipupdate.enableddisabledsuccess=success: member was saved #simplemembershipupdate.filtermemberbutton=search for member #simplemembershipupdate.filterlabel=searching for member: #simplemembershipupdate.clearfilterbutton=clear member search #simplemembershipupdate.errormemberfiltertoomanyresults=too many results, narrow your search #simplemembershipupdate.disabledprefix=until Internal skinned text You can have text in the nav.properties be specific to a named membership lite updater. Just do it like this, if the property is: simplemembershipupdate. updatetitle, and the name of the skin is: groupermembershipexample: membershiplitename.groupermembershipexample.simplemembershipupdate.updatetitle=group membership update lite3 You can customize the same text that external can, see list above Additional CSS You can append additional CSS to the existing CSS. You can append multiple CSS (comma separated). These CSS requests come from the user's browser. This is configured in media.properties, or a skin file, or a remote skin file #add an extra css to the simple membership update. use relative or absolute urls, comma separated #e.g. http://localhost:8090/grouper/membershipliteexample.css #note, this is loaded from browser, so if the site is SSL and CSS is not, browser might give a warning to user simplemembershipupdate.extracss = http://localhost:8090/grouper/membershipliteexample.css Here is an example css file:.actionheadercontainer td { background-color:#f4efde; }