Icon class


Icon::Get() returns the "img src" tag or "<i></i>" tags for an icon, depending on configuration (see the fake $_CONF['use_image_icons'] variable). CSS icons can come from Uikit or Fontawesome since I've noticed that non-Uikit themes include Fontawesome fonts. Not sure if this is still true.

Personally I like switching all to the CSS icons which have the advantage of taking color attributes like "danger", "warning", "grey", etc.

<?php


class Icon
{
    private static $images = array(
            'add', 'edit', 'copy', 'delete',
            'list', 'mail', 'group', 'user',
            'greyuser','check', 'greycheck',
            'cross', 'disk', 'accept', 'addchild',
            'update', 'wrench', 'info', 'greyinfo',
            'blank'
        );
    private static $icons = array(
            'add'       => 'plus-circle',
            'edit'      => 'edit',
            'copy'      => 'copy',
            'delete'    => 'remove',
            'list'      => 'list',
            'mail'      => 'enveloope-o',
            'group'     => 'group',
            'user'      => 'user',
            'greyuser'  => 'user',
            'check'     => 'check',
            'greycheck' => 'check',
            'cross'     => 'plus',
            'disk'      => 'save',
            'accept'    => 'check',
            'addchild'  => 'user-plus',
            'update'    => 'save',
            'wrench'    => 'wrench',
            'info'      => 'info-circle',
            'greyinfo'  => 'info-circle',
            'blank'     => '',
    );
    private static $prefix = NULL;

    /**
    *   Get a glFusion image icon
    *
    *   @param  string  $name   Name of icon, following the iconset prefix
    *   @param  array   $attrs  Optional attributes to embed in the icon HTML
    *   @return string      Full <img .../> tag for the icon
    */
    public static function getImage($name, $attrs = array())
    {
        global $_CONF, $_IMAGE_TYPE, $LANG_ADMIN, $_SYSTEM;

        if (!in_array($name, self::$icons)) $name = 'blank';

        $icon_url = "{$_CONF['layout_url']}/images/admin/$name.$_IMAGE_TYPE";
        if (!isset($attrs['alt'])) {
            $alt = isset($attrs['title']) ? $attrs['title'] : $LANG_ADMIN[$name];
        } else {
            $alt = $attrs['alt'];
        }
        return COM_createImage($icon_url, $alt, $attrs);
    }


    /**
    *   Get a CSS icon from Uikit or Fontawesom
    *
    *   @param  string  $name   Name of icon, following the iconset prefix
    *   @param  array   $attrs  Optional attributes to embed in the icon HTML
    *   @return string      Full <i...></i> tag for the icon
    */
    public static function getCSS($name, $attrs = array())
    {
        global $LANG_ADMIN, $_SYSTEM;

        if (self::$prefix === NULL) {
            self::$prefix = ($_SYSTEM['framework'] == 'uikit') ? 'uk-icon uk-' : 'fa fa-';
        }

        $attr_str = '';
        if (!isset($attrs['alt'])) {
            $attrs['alt'] = isset($attrs['title']) ? $attrs['title'] : $LANG_ADMIN[$name];
        }

        if (isset(self::$icons[$name])) {
            $name = self::$icons[$name];
        }

        foreach ($attrs as $attr_name=>$attr_value) {
            $attr_str .= ' ' . $attr_name . '="' . $attr_value . '"';
        }
        $icon = '<i class="' . self::$prefix . $name . '"' . $attr_str . '></i>';
        return $icon;
    }


    /**
    *   Get the image or CSS icon depending on configuration.
    *
    *   @param  string  $name   Name of icon, following the iconset prefix
    *   @param  array   $attrs  Optional attributes to embed in the icon HTML
    *   @return string      Full <i...></i> tag for the icon
    */
    public static function Get($name, $attrs = array())
    {
        global $_CONF;

        if ($_CONF['use_image_icons']) {
            return self::getImage($name, $attrs);
        } else {
            return self::getCSS($name, $attrs);
        }
    }

}

?>

Share It!

Comments are closed