SelectIcon

Hallo Leute,

in einem Modul soll der Nutzer ein Icon wählen können. Eine Formularfeld wie „SelectIcon“ gibt es leider (noch) nicht.

Deswegen habe ich eine kleine Funktion erstellt die mir die Icons in ein „normales“ Select im Konfigurationsformular abbilden sollte. Da es sich im Standard-Webfront-Skin um 228 Icons handelt, ist das wohl auch nicht die beste Idee.
Diese Funktion könnte ich jetzt ggf. zumindest dazu nutzen, um eine normale Textangabe zu verifizieren.

Gibt es einen besseren Weg?

Bei der Gelegenheit: Wo befinden sich die Icons der anderen Skins?

Joachim

Schon wieder im falschen Bereich gelandet :smiley:

Ich habe es so gelöst:

Und der String ist dann Teil der CSS Klasse.
Somit passt es auch zum gewählten Skin des WebFront.

Michael

Hallo Michael,

vielen Dank für Deine Links. Die zwei „Operationen“ sind mir offenbar ganz gut gelungen:

  • Deine Funktion zur Ermittlung der verfügbaren Icons war (erwartungsgemäß) besser als meine, weswegen ich diese im Kern übernommen und an meine Bedürfnisse angepasst habe
function GetIconsList()
	{
	    	$id = IPS_GetInstanceListByModuleID('{B69010EA-96D5-46DF-B885-24821B8C8DBD}')[0];
	    	$Icons = array();
	    	$Icons[] = ['caption' => 'Standard', 'value' => 'Transparent'];
	    	foreach (UC_GetIconList($id) as $Icon) {
			$Icons[] = ['caption' => $Icon, 'value' => $Icon];
	    	}
	return $Icons;
	}

Insbesondere die Nutzung der IPS-Icons ohne expliziten Datei-Pfad war für mich interessant und eine Herausforderung, weil HTML, css usw. nicht so ganz meine Welt sind.
Auszug:

$content .= '<td class="iconMediumSpinner ipsIcon' .$Image. '"></td>';

Das funktioniert im Standard-Skin wunderbar, im IPS-Light-Skin, sind die Icons aber offenbar trotzdem weiß, was sie dort quasi unsichtbar macht.
Ich suche jetzt die Stelle, die dafür sorgt das diese sich auch der Farbe der anderen Icons im Skin automatisch anpassen.
Magst Du mir die Bitte (noch einmal) zeigen?

Joachim

Öhhh, den Skin habe ich selber nicht ausprobiert. Muss ich mir anschauen.
Michael

…habe die Funktion dahingehend geändert, dass die Liste alphabetisch erstellt wird:

private function GetIconsList()
	{
	    	$id = IPS_GetInstanceListByModuleID('{B69010EA-96D5-46DF-B885-24821B8C8DBD}')[0];
	    	$Icons = array();
	    	foreach (UC_GetIconList($id) as $Icon) {
			$Icons[] = ['caption' => $Icon, 'value' => $Icon];
	    	}
		sort($Icons);
            	array_unshift($Icons, ['caption' => 'Standard', 'value' => 'Transparent']);
	return $Icons;
	}

Vielleicht kann es ja jemand gebrauchen…

Joachim

Sehe gerade, da ist ein Ticket oben angehängt :slight_smile:
CONSOLE-857 PHP-SDK: SelectIcon anbieten
Danke Dr.Niels :smiley:
Michael

@Dr.Niels
Jetzt brauchen wir es so langsam :slight_smile:
Michael