Skript zum ein/ausblenden von Links (Boolean)

Hallo zusammen,

ich hab im Webfront viele Boolean-Links für Servicemeldungen (Erreichbarkeit von Aktoren, Batteriestatus, etc.). Ich will diese Links aber nur sehen wenn die zugehörige Variable = true ist. (mich interessieren ja nur die Problemfälle). Dazu habe ich mir ein Skript geschrieben.

  1. Das Skript legt automatisch beim Aufruf für jede verlinkte Variable ein Ereignis an (somit wird das Skript bei Variablenänderung aufgerufen).
  2. Außerdem werden alle Links auf Variablen die den Wert FALSE haben auf unsichtbar gesetzt.

Anleitung
Skript 1: einmal anlegen (es ist egal wo das Skript liegt)

<?

$ScriptID = $OriginalScript;
$Objects = IPS_GetChildrenIDs(IPS_GetParent($ScriptID));

foreach ($Objects as $CurrentObjectID) {
	$Object = IPS_GetObject($CurrentObjectID);
	if ($Object['ObjectType'] == 6){
	   /*Link sichtbar oder unsichtbar machen */
		$Link = IPS_GetLink($CurrentObjectID);
		$LinkValue = GetValue($Link['LinkChildID']);
		if ($LinkValue==true){
		   if ($Object['ObjectIsHidden'] == true){
		      IPS_SetHidden($CurrentObjectID, false);
		   }
		} else {
		   if ($Object['ObjectIsHidden'] == false){
		      IPS_SetHidden($CurrentObjectID, true);
		   }
		}
		/*Event anlegen falls noch nicht vorhanden*/
		$EventName = "LinkID: ".$CurrentObjectID." ObjectID: ".$Link['LinkChildID'];
		$EventID = @IPS_GetEventIDByName($EventName, $ScriptID);
		if ($EventID === false){
  			$EventID = IPS_CreateEvent(0);
  			IPS_SetName($EventID, $EventName);
  			IPS_SetEventTrigger($EventID, 1, $Link['LinkChildID']);
  			IPS_SetParent($EventID, $ScriptID);
  			IPS_SetEventActive($EventID, true);
		}
	}
}

?>

Skript 2: in jede Kategorie anlegen, deren Links automatisch aus- und eingeblendet werden sollen. Das Skript selbst ausblenden. Skript einmal ausführen. Am Anfang die Skript-ID von Skript 1 anpassen!!!

<?

IPS_RunScriptEx(10638 /*[WebFronts\LinksAusblenden]*/, Array("OriginalScript" => $IPS_SELF));

?>

Das Skript 2 muss in der Kategorie der Links liegen:

Vielen Dank ! Das und das andere Skript sind für mich Gold wert !

Viele Grüße
Martin

Hallo Gemeinde,

der thread ist ja schon was älter…

gabs da nicht mal was neues in jüngster Zeit ?
Von der Funktion her, würde ich genau das suchen…

LG
Sascha

Gibt dafür ein Modul im Store :slight_smile:
VisuControl glaube ich.
Michael

habe ich gerade gefunden…von dir natürlich :slight_smile:

Das ist ja ein Traum !!!
Das ist natürlich die Deluxe Version, bei der keine Wünsche offen bleiben :slight_smile:

Vielen Dank für dieses tolle Modul !

Liebe Grüße