no group link to edit custom ui for sysadmins; you need to go to Misc and find the config that refers to this group
logo should be for the whole banner, allow html (create a new config type of banner?)
config text should default enabled, unlikely to want false
default query group name to the group the custom UI is on, either in UI or code
enrollButtonShow should default to boolean. What other option is possible??
don't make order required for queries; default to highest unused order for new items
don't make order required for ui text items; make it work like gsh templates where you can set it if the order matters; default to highest unused order for new items
don't make label required for queries; it's just for debugging right?
configuration improvements
add membership as a query type; so can get create time, expire time, etc.
allow other object types for grouper queries, scripts can use details on group or membership
allow sql query to return multiple columns by hash, so don't need to run the same query twice to get 2 columns
bind var only allows string or integer, but is free text
allow more bind var types (boolean, timestamp, etc)
allow CRLF in scripts
behavior bugs
anyone can access the custom UI, but if you click enroll, it looks at OPTIN privileges and rewrites the url as the grouper home if no access (can't even hit the back button); logo and help link are still for custom UI
any other error on page, nothing changes, no error displayed or logged
gshScripts run after queries, so queries don't reflect changes made by the script
code improvements
substitute map not consistent; for gshScript, cu_joinGroupButtonPressed is false but cu_grouperEnroll is true
jexl should be cached, don't recalculate the value for multiple widgets
don't use LazySubject; is security really an issue?
don't cache for 2 minutes; makes it hard to debug
optin is required for enrollment functionality; so you could bypass the custom ui by directly opting in, bypassing custom gsh scripts