Bookmarkable URLs and JS Back Button Support
Thankfully, with HTML 5 History support we can give the browser the necessary information about our requests, so that the user may bookmark a certain point, or use the back button to go back to a previous point. Examples where this is used are page changes and dialogs (lightboxes).
Bootstrap, Less, and the Theme Builder
Breadcrumbs and History
Breadcrumbs come in two flavors: location based and path based. Location based breadcrumbs serve as a site index. They tell you where you are at in terms of the application structure (e.g. 'Home -> Course Administration -> Edit Course 103'). The other flavor, path based breadcrumbs, show you where you came from. They give you the ability to navigate back to a view within a sequence of requests (e.g. 'Lookup A -> Lookup B -> Lookup C'). Applications can choose which type of Breadcrumbs works best for a particular view or context.
To support path based breadcrumbs, KRAD has also introduced the concept of 'flow'. Currently this is implemented using request parameters and controller methods (side note: down the road this could morph into declarative flow management, or possibly use of Spring Web Flow). Besides supporting path based breadcrumbs, the history manager also supports controller navigation actions (such as going back to the previous view).
- Dirty Fields - The third party dirty fields plugin has been dropped and replaced with a custom plugin. The previous plugin had several issues which are now resolved.
- Row CSS - Adding custom CSS classes for table rows is now easier with use of map configuration. Classes can be specified by index, the 'even', 'odd' keywords, or even based on an EL expression that can check values for the current line.
- Performance - As development approaches completion of KNS Equivalency and KRAD Phase 3 (functional requirements for Kuali applications), performance tuning is becoming a high priority. 2.3 improves the general runtime performance and also provides optimizations that can be taken advantage of in certain situations. Profiling shows reductions of up to 80% off the response time.
In addition to feature completion, this effort includes developing a conversion guide and a set of conversion scripts. Our goal is to make the conversion effort as painless as possible for existing KNS applications.
KRAD Phase 3
- Events - Simply put, this will bring the ability to generate client side events and client side updates declaratively in KRAD. Tools such as Angular JS are being looked at to provide the backbone for this functionality. We are really excited about this work! In fact, I will likely dedicate a post for describing this enhancement in the near future. It will be a killer feature!
- Nested Views - Nested views will be our take on iframes, without all the problems inherent to iframe use. Currently in KRAD, only a single view can be rendered at one time. With this enhancement, multiple views can be rendered asynchronously (by nesting).
- Accessibility - Phase 3 is also slated to include a second round of accessibility work using ARIA. Creating accessible table and tab structures, along with general cleanup for achieving WCAG 2.0 certification will be the priorities.
- Keyboard Support - Keyboard support (beyond standard browser keyboard support) will be added in 2.4. Out of the box KRAD components (such as navigation) will be enriched with keyboard shortcuts. Applications will also be able to define enter key actions based on the user's location within a view. Finally, applications will be able to create custom shortcuts where desired.
- Performance - Performance work will continue in 2.4 (more accurately, there are plans for a 2.3 patch which will likely contain the remaining performance improvements). This will also include cleanup/optimization of the HTML output.
- Security - KNS equivalency mandates a certain level of security be implemented. In addition, Kuali is taking a close look at security (developer training, tools, etc.) and discovered issues are being addressed in the software.
- Tooling - KRAD tooling has not been top priority so far, but a lot of good work has occurred 'on the side'. Some of this will come to fruition for 2.4. This includes a custom schema for the UIF, along with support for Emmet. The new UXI project is also spinning up and will be contributing work to Rice. This is likely to include things such as the ability to build UIs outside of the normal Java development environment (for example, just with a standard text editor, this is another likely post in the near future!) and much more work with the KRAD Bootstrap theme, UI best practices, and accessibility.
You can see why Rice 2.4 is a critical release for the Kuali projects and the community. This will end a three year cultivation of KRAD, and marks the start of the KNS conversion process. Forward Charge!