Feature Proposal: Replace the old ICON macro with JQICON
Motivation
While Investigating
Item14493, it became obvious that our ICON rendering and update / skinning features were horribly complex. Turns out the JQICON does mostly everything that ICON should do.
Description and Documentation
Remove the Foswiki::Render::IconImage module. Replace the Foswiki::Macros::ICON with the JQICON functionality from the
JQueryPlugin. Add some minor features to improve compatibility.
This is mostly refactoring of existing code. The following features of ICON would need porting into JQICON
- Support for the
quote=
argument. I propose that this should be added for backwards compatibility, but documented as deprecated. The quote=
feature can be handled by overriding the format= string.
- The ability to render ICONs from templates should be preserved, but also documented as deprecated.
- Remove the icons.tmpl template.
- Support for the ICONTOPIC setting.
- Add DocumentGraphics to the end of the search path. (The FamFam icons are missing some important icons).
- Allow it to be manually set in the search path
- Allow it to be a list.
- Remove it from DefaultPreferences.
My thinking on ICONTOPIC. Some sites may have replaced
DocumentGraphics with their own local graphics files. These sites can move it to the front of the search path if they want their ICONs to always apply. This also allows web and application specific ICON overrides.
There are a couple of features supported by the templates that could be improved for easier access.
- Specify alt= and topic= strings for the icon
- Specify non-standard sizes
- Specify a default format= string for the icon
This needs some discussion, but my thought is to add a | table | to the Icon topic with the attached icon. When an ICON is found on the search path, the topic can be read to retrieve any defaults. (These should be cached). if not found, then the defaults as currently used by JQICON would be applied.
This could all be accomplished just by the format string override, however that requires writing html.
Examples
It's pretty compatible. Adding the following Set to the
SitePreferences, along with adding
DocumentGraphics to the ICON search path allows ICON to be replaced today.
Set ICON = %JQICON{"%DEFAULT%" alt="%alt{default=""}%" title="%title{default=""}%"}%
Impact
Implementation
--
Contributors: GeorgeClark - 30 Sep 2017
Discussion
Discussion in the 10/2 release meeting. Adding tabular override of ICON defaults is too much overhead. ICON needs to be extremely fast. The recommended solution is for applications to pre-define ICONs with custom macros eg.
Set OPEN = %ICON{icon with desired overrides to the settings}%
ICONTOPIC can probably be supported but needs to be restricted by a
bin/configure
setting. There may be implications of allowing graphics to be loaded from any topic.
--
GeorgeClark - 02 Oct 2017