Font Awesome 5/6 (pro/subset) Icon Picker

Overview

Font Awesome Icon Picker

Icon-Picker für Font Awesome ab Version 5.

Screenshot

Der Iconpicker wird an Text-Eingabefelder angebunden. Beim Klick öffnet sich ein Picker Widget. Anschließend werden die Icons des aktuell eingestellten Pakets dynamisch nachgeladen. Über die Einstellungen zu Zeilen und Spalten im Picker Widget kann der Picker beim Scrollen kalkulieren, welche Seite vom Server nachgeladen werden soll. Dies beugt der Überlastung des Browsers vor und sichert so eine flüssige Navigation.

Nutzer mit entsprechender Berechtigung können im Verwaltungsbereich des AddOns mehrere Font Awesome Pakete hochladen und unter diesen das für die Ausgabe präferierte Paket als Standard-Paket auswählen.

Ausgeliefert wird das AddOn mit einer aktuellen Version des freien Paketes. Liegt eine entsprechende Lizenz für ein Pro-Paket vor, kann dieses hochgeladen und genutzt werden.

ACHTUNG: Font Awesome bietet auch Desktop-Pakete zum Download an. Sollten diese hochgeladen werden, erfolgt keine Einbindung in den Paket-Pool. Es erscheint eine entsprechende Fehlermeldung.

Das Picker Widget wird am Ende des <body>-Tags eingebunden und beim Öffnen absolut unter das zugehörige Eingabefeld positioniert. Damit ist sichergestellt , dass besondere Layouts (flex, grid etc.) durch das Picker Widget nicht beeinflusst werden.

Die Schrift-Ressourcen für das aktuelle Paket werden auch im Backend geladen. Für die Einbidnung im Frontend siehe unten.

Features

  • Paket-Manager
  • komplexer Picker mit zugehöriger Setup-Seite und vielseitigen Anpassungsmöglichkeiten siehe "Anpassungen"
  • am Ziel-Feld (input type=text oder textarea) initialisierbar mit von den Standardeinstellungen abweichenden Settings
  • Picker-Features (alles einstellbar):
    • Suche nach Name, Label, Code, Search Terms
    • umschaltbare Vorschau-Stile
    • Mehrfachauswahl
    • Ergänzung der Stil-Klasse (fat,fal,far,fas,fad,fab)
    • verschiebbar
    • Wahl des Rückgabewerts (Name, Code, ID, Label, SVG-Code)
    • Event-Handler
    • Daten-Anfragen via REX API Klasse
  • MBlock-Support

Einbindung Font Awesome im Frontend

Für die Ausgabe eines <link>-Tags für das Font Awesome CSS muss folgender Code im <head> Bereich des Templates eingefügt werden. ACHTUNG: Funktioniert nur direkt im Template, nicht bei includes!

REX_FA_ICONPICKER[]

Nutzung des Pickers im Backend

Der Picker wird über die Angabe der Klasse rex-fa-iconpicker in Text-Eingabefeldern initialisiert. Moduleingaben.

<input type="text" class="form-control rex-fa-iconpicker" />

Alternativ kann man eine Initialisierung mit JavaScript wie folgt vornehmen (im Beispiel mit speziellen Settings für diese Instanz):

let fap = new FAPicker(
    document.getElementById('<ID_OF_INPUT_OR_TEXTAREA>'),
    {
        'multiple': true,
        'add-weight': false
    }
);

Man kann nach der Initialisierung auf die Picker-Instanz zugreifen:

let fap = $("#<ID_OF_INPUT_OR_TEXTAREA>").get(0).FAPicker;

Standardmäßig wird der Picker geöffnet, sobald man in diesen klickt und schließt, sobald man ein Icon auswählt oder den Schließen-Button X oben rechts im Popup klickt.

Anpassungen

Funktionen und Aussehen des Pickers können über Attribute für besondere Anwendungsfälle angepasst werden. Viele Einstellungen können, entsprechende Berechtigung vorausgesetzt, generell angepasst werden.

Die Einstellungen werden über HTML-Attribute mit dem Schema data-fa-X="VALUE" direkt am Eingabefeld vorgenommen. Ein Beispiel für 6 Icon-Spalten im Picker -Popup:

<input type="text" class="rex-fa-iconpicker" data-fa-columns="6" />

Alle Einstellungen im Überblick:

  • rows - Zeilen im Picker Widget
  • columns - Spalten im Picker Widget
  • offset - Seiten im Picker Widget die beim Nachladen zusätzlich geladen und gerendert werden (Bsp.: ein Offset von 1 bei 4 Spalten und 5 Zeilen bedeutet, dass nicht nur 20 Icons (1 Seite, 4 * 5) nachgeladen werden, sondern 60 - 1 Seite davor und 1 danach)
  • max-pages - Performance-Einstellung; legt fest, wieviele Seiten maximal in einem Picker Widget geladen sein dürfen
  • weight-selector - zeigt Stil-Auswahl am Rand des Picker Widgets an [0, 1]
  • movable - macht das Picker Widget verschiebbar, Doppelklick auf den Move-Button zum Zurücksetzen [0, 1]
  • details-on-hover - Bei Mouseover über ein Icon wird ein komplexer Tooltip mit mehr Infos gezeigt und das Icon in den erlaubten Schriftschnitten (siehe weights) abgebildet [0, 1]
  • close-with-button - Schließen wird nur explizit über einen Close Button oben rechts im Picker Widget durchgeführt [0, 1]
  • multiple - erlaubt Mehrfach-Auswahl [0, 1]
  • weights - Verfügbare Schriftschnitte als zusammenhängender String (l = Light, r = Regular, s = Solid, d = Duotone, b = Brand), Bsp. ldb blendet die Vorschauen für Light, Duotone und Brand Icons ein und erlaubt auch deren Auswahl, wenn add-weight = 1 ist
  • add-weight - fügt bei Auswahl eines Icons nicht nur den Namen des Icons ein (bspw. fa-user) sondern auch den aktuell eingestellten Schriftschnitt (Beispiel-Ergebnis: fas fa-user wenn aktuell der solid-Schriftschnitt ausgewählt war) [0, 1]
  • preview-weight - fügt bei Auswahl eines Icons nicht nur den Namen des Icons ein (bspw. fa-user) sondern auch den aktuell eingestellten Schriftschnitt (Beispiel-Ergebnis: fas fa-user wenn aktuell der solid-Schriftschnitt ausgewählt war) [0, 1]
  • insert-value - Wert, der bei Auswahl des Icons ins Ziel-Feld eingetragen werden soll (Standard: name) [name, label, icon, svg]
  • sort-by - legt die Sortierung der Icons fest (Optionen: id,name,label,code,createdate)
  • sort-direction - legt die Sortierungsrichtung fest (asc für aufsteigend oder desc für absteigend)
  • icons - legt die Liste der zur Auswahl zugelassen Icons fest; erlaubt Platzhalter mit * (Bsp.: question,user*,*virus*,*-up - lädt das Icon question explizit, alle Icons die mit user beginnen, alle Icons die irgendwo im Namen virus enthalten und alle Icons, die auf -up enden)
  • hide-search - Suchfeld im Kopf des Picker Popups wird versteckt [0, 1]
  • hide-latest-used - zuletzt benutzte Icons werden in einem Cookie gespeichert; in der "zuletzt benutzt" Sektion werden bis zu 2 Zeilen davon gezeigt; wenn das Feld auf 1 gesetzt wird, ist diese Sektion im Widget versteck [0, 1]
  • class - CSS-Klasse, die am äußersten Wrapper-Element des Picker Widgets für eigene Anpassungen angehängt wird
  • icon-class - CSS-Klasse, die an den Icon Buttons für eigene Anpassungen angehängt wird
  • onbeforeselect - Event-Handler für den Zeitpunkt, bevor ein Icon in das zugehörige Eingabefeld eingecheckt wird (return false verhindert das Einfügen in das Eingabefeld, der 1. Funktionsparameter ist das auslösende Button-Object, der 2. Parameter das Ziel-Objekt)
  • onselect - Event-Handler für den Zeitpunkt, nachdem ein Icon in das zugehörige Eingabefeld eingecheckt wurde (der 1. Funktionsparameter ist der Name des Icons, der 2. Parameter das gelöscht-Flag, der 3. Parameter das Ziel-Objekt)
  • onbeforeshow - Event-Handler: Vor dem Anzeigen des Widgets | 1. Param: Ziel-Feld als DOM-Object
  • onshow - Event-Handler: Nach dem Anzeigen des Widgets | 1. Param: Ziel-Feld als DOM-Object
  • onbeforehide - Event-Handler: Vor dem Ausblenden des Widgets | 1. Param: Ziel-Feld als DOM-Object
  • onhide - Event-Handler: Nach dem Ausblenden des Widgets | 1. Param: Ziel-Feld als DOM-Object

Future Plans / TODO

  • Wahl eines Subsets direkt am Ort der Initialisierung (Überschreibung des Standard-Pakets)
  • Extension Points für REX API Rückgaben (überhaupt möglich?)
  • Preview-Overlay bei Mouseover über Icon-Value im Text-Feld > zeigt, wie das aktuell gesetzte Icon aussieht ohne den Picker zu öffnen
  • evtl. Webfont-URL in den .css-Files manipulieren, sodass der korrekte absolute Pfad eingetragen wird. Damit wären "elegantere" Einbindungen im FE möglich, ohne den Speicherort der Paketdaten offen zu legen (via index.php mit URL-Params)
  • FA6 Support sobald finale Package-Struktur releast ist
Comments
  • javascript error Safari 13.1.2

    javascript error Safari 13.1.2

    Vielen Dank von einem Programmier Anfänger für dieses vielversprechende Addon!

    In Safari 13.1.2 erhalte ich folgenden js Error in Zeile 5 vom Script "fa-iconpicker.js": SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list.

    Das Icon Auswahl Feld öffnet sich nicht.

    Getestet lokal auf Mamp mit frischer redaxo 5.13.2 Installation und fa_iconpicker 1.1.2 ohne andere Addons.

    Unter Crome v.99 & Firefox v.98 gab es keine Probleme.

    opened by willigimbel 5
  • Auf FA Version 6.2 updaten

    Auf FA Version 6.2 updaten

    Feature description / Feature Beschreibung

    Der Release von FA Version 6 steht aktuell hinter einem großen Fragezeichen. Im Oktober 2021 entschied man sich, den /metadata/-Ordner aus den FA6-Archiven zu entfernen und stattdessen auf die offizielle GraphQL-API zu verweisen. Gegenwärtig ist FA6 daher nur bis zur Version beta 1 unterstützt. Ihr könnt diese hier herunterladen.

    Das kann ich nicht erkennen.

    image

    opened by alxndr-w 4
  • release 1.1.2

    release 1.1.2

    • Pfad-Korrektur für aktives CSS-File, wenn Subset ausgewählt ist
    • Backend-Formulare mit korrigierter Form-Action verhindert Probleme mit Installationen in Unterordnern (Packages Page)
    enhancement 
    opened by bitshiftersgmbh 0
  • Svensk översättning

    Svensk översättning

    Danke @interweave-media!

    ⚠️ Für Traduko-PRs bitte »Rebase and merge« verwenden! Nicht »Squash and merge« benutzen! Das ist für normale PRs oft sinnvoll, würde hier aber dazu führen, dass der Commit nicht interweave-media zugeordnet werden könnte.

    opened by ytraduko-bot 0
  • Fehler beim Installieren

    Fehler beim Installieren

    Moin. Ich nutze zwar den Picker nicht, habe ihn aber für die mal zum Test rausgesucht.

    Leider kommt gleich beim Installieren folgender Fehler im Rex 5.12.1 bei mir:

    Argument 1 passed to Symfony\Component\Yaml\Yaml::parse() must be of the type string, null given, called in C:\webserver7.4\htdocs\web1.localhost.de\redaxo\src\core\lib\util\string.php on line 146

    TypeError: Argument 1 passed to Symfony\Component\Yaml\Yaml::parse() must be of the type string, null given, called in C:\webserver7.4\htdocs\web1.localhost.de\redaxo\src\core\lib\util\string.php on line 146 File: redaxo\src\core\vendor\symfony\yaml\Yaml.php Line: 76

    Stacktrace

    | Function | File | Line | | ---------------------------------- | ------------------------------------------------------ | -------- | | Symfony\Component\Yaml\Yaml::parse | redaxo\src\core\lib\util\string.php | 146 | | rex_string::yamlDecode | redaxo\src\addons\fa_iconpicker\lib\rex.fa.package.php | 343 | | rex_fa_package::import | redaxo\src\addons\fa_iconpicker\install.php | 33 | | include | redaxo\src\core\lib\packages\package.php | 280 | | rex_package->includeFile | redaxo\src\core\lib\packages\manager.php | 143 | | rex_package_manager->install | redaxo\src\core\lib\packages\addons\manager.php | 27 | | rex_addon_manager->install | redaxo\src\core\lib\packages\api_package.php | 34 | | rex_api_package->execute | redaxo\src\core\lib\api_function.php | 180 | | rex_api_function::handleCall | redaxo\src\core\backend.php | 229 | | require | redaxo\src\core\boot.php | 141 | | require | redaxo\index.php | 9 |

    System report (REDAXO 5.12.1, PHP 7.4.9, MariaDB 10.4.14)
    bug 
    opened by iceman-fx 14
Releases(1.2.0)
  • 1.2.0(Oct 23, 2022)

  • 1.1.2(Feb 18, 2022)

    Version 1.1.2 - 18.02.2022

    • Pfad-Korrektur für aktives CSS-File, wenn Subset ausgewählt ist
    • Backend-Formulare mit korrigierter Form-Action verhindert Probleme mit Installationen in Unterordnern (Packages Page)

    Bitte nach der Installation / dem Update Cache löschen!

    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Jan 28, 2022)

    Version 1.1.1 - 28.01.2022

    • Bugfix mit i18n-Problemen bei install/update
    • Bugfix bei Yaml::parse() beim Paket-Import
    • Neu: Uninstall hinzugefügt, vollständige Bereinigung

    Bitte nach der Installation / dem Update Cache löschen!

    Version 1.1.0 - 27.01.2022

    • Zugriff auf Paketinhalte im /data/-Ordner via eigener MediaManager-Effekte
    • Highlighting der Major Version in der Paketverwaltung
    • voller Support für FA6 Beta 1 (inkl. Thin-Schriftschnitt)

    ACHTUNG: Releases nach FA6 Beta 1 enthalten keinen /metadata/-Ordner mehr, weshalb diese gegenwärtig nicht unterstützt werden. Für spätere Releases dieses AddOns ist ein Workaround in Planung.

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Jan 28, 2022)

    Version 1.1.0 @bitshiftersgmbh 27.01.2022

    • Zugriff auf Paketinhalte im /data/-Ordner via eigener MediaManager-Effekte
    • Highlighting der Major Version in der Paketverwaltung
    • voller Support für FA6 Beta 1 (inkl. Thin-Schriftschnitt)

    ACHTUNG: Releases nach FA6 Beta 1 enthalten keinen /metadata/-Ordner mehr, weshalb diese gegenwärtig nicht unterstützt werden. Für spätere Releases dieses AddOns ist ein Workaround in Planung.

    Source code(tar.gz)
    Source code(zip)
  • 0.3.0-beta2(Aug 11, 2021)

  • 0.3.0-beta1(Jul 12, 2021)

Owner
Friends Of REDAXO
Gemeinsame REDAXO-Entwicklung!
Friends Of REDAXO
PHP 7+ Payment processing library. It offers everything you need to work with payments: Credit card & offsite purchasing, subscriptions, payouts etc. - provided by Forma-Pro

Supporting Payum Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our

Payum 1.7k Dec 27, 2022
TeamCal Pro is a legacy web application of a day-based calendar

TeamCal Pro is a legacy web application of a day-based calendar. It's generic purpose is the absence management of project teams, more precisely of their members.

George Lewe 1 Jan 7, 2022
A curated list of awesome Laravel bookmarks, packages, tools, articles, tutorials and related resources.

ATTENTION: This list is obsolete and discontinued. Please find a much more comprehensive, much more well-maintained awesome-laravel list at chiraggude

Unnawut Leepaisalsuwanna 96 Aug 5, 2022
Date/Time Picker widget for Yii2 framework Based on Eonasdan's Bootstrap 3 Date/Time Picker

Yii2 Date/Time Picker Widget Date/Time Picker widget for Yii2 framework Based on Eonasdan's Bootstrap 3 Date/Time Picker Demo Since this is a part of

Yevhen Terentiev 8 Mar 14, 2022
🚀 Font Awesome Icons ⚐ for Hyvä Themes

Awesome Hyvä by JaJuMa Awesome Hyvä extension by JaJuMa allows to use Font Awesome 5 icons as SVGs on Magento 2 sites using Hyvä Themes. The module in

JaJuMa GmbH 7 Dec 2, 2022
Icônes Form Widget for October and winter CMS. One library, over 100,000 vector icons, and 108+ icon sets powered by Iconify

Icônes Form Widget ?? ?? ?? Access thousands of SVG icons as a backend form widget. One library, over 100,000 vector icons, Modern replacement for ico

Adil Chehabi 12 Aug 29, 2022
A package for Myanmar Font, Phone and other Myanmar tools using Laravel Macro

Laravel Myanmar Tools A package for Myanmar Font, Phone and other Myanmar tools using Laravel Macro. Installation composer require pyaesoneaung/larave

Pyae Sone Aung 22 Dec 20, 2022
Iconify icon sets in JSON format

100+ open source icon sets. Icons are validated, cleaned up, optimised, ready to render as SVG

Iconify 255 Dec 29, 2022
A Laravel clone of the Javascript Flatpickr (Date picker) library

A Laravel clone of the Javascript Flatpickr (Date picker) library Using this package you can add a beautiful date or datetime picker into your project

Laratips 49 Dec 28, 2022
A media picker plugin for Filament Admin.

Filament Curator A media picker plugin for Filament Admin. ‼️ This package is still in development ‼️ This package does not work with Spatie Media Lib

Adam Weston 84 Jan 7, 2023
The Popular Datetime, Flatpickr Picker as a Filament Form Field

Flatpickr Date/Time Picker as a Filament Field Flatpickr is one of the most popular js datepickers. This filament plugin allows you to use flatpickr a

Savannabits 4 Aug 29, 2022
PHP 7+ Payment processing library. It offers everything you need to work with payments: Credit card & offsite purchasing, subscriptions, payouts etc. - provided by Forma-Pro

Supporting Payum Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our

Payum 1.7k Jan 5, 2023
Message Queue, Job Queue, Broadcasting, WebSockets packages for PHP, Symfony, Laravel, Magento. DEVELOPMENT REPOSITORY - provided by Forma-Pro

Supporting Enqueue Enqueue is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and

Enqueue 2.1k Dec 22, 2022
PHP CLI tool which allows publishing zipped MODX extra to modstore.pro marketplace

MODX Extra Publisher PHP CLI tool which allows publishing zipped MODX extra to modstore.pro marketplace. Installation global? local? To install packag

Ivan Klimchuk 3 Aug 6, 2021
Module to generate a mega dropdown menu for YOOtheme Pro

YOOtheme Mega Menu module Joomla module to generate a mega dropdown menu for YOOtheme Pro. Installation instructions Download the latest release here.

Rene Kreijveld 14 Sep 14, 2022
A library written in PHP to interact with Coinbase Pro via API.

A library written in PHP to interact with Coinbase Pro via API.

Blake Hamilton 4 Mar 31, 2022
php command line script to DCA crypto from Coinbase Pro

dca.php A simple php script designed to be run via the command line via a cron job. This will connect to coinbase pro and buy the crypto coins specifi

Ben Suffolk 2 Oct 22, 2021
Source Code for 'Pro PHP 8 MVC' by Christopher Pitt

Apress Source Code This repository accompanies Pro PHP 8 MVC by Christopher Pitt (Apress, 2021). Download the files as a zip using the green button, o

Apress 27 Dec 25, 2022
A Statamic Pro addon that provides alternative GraphQL queries for collections, entries and global sets.

Statamic Enhanced GraphQL A Statamic CMS GraphQL Addon that provides alternative GraphQL queries for collections, entries and global sets. ⚠️ This is

Grischa Erbe 2 Dec 7, 2021
PHP 7+ Payment processing library. It offers everything you need to work with payments: Credit card & offsite purchasing, subscriptions, payouts etc. - provided by Forma-Pro

Supporting Payum Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our

Payum 1.7k Dec 27, 2022