Firefox Such-Plugins für Application Express-Anwendungen

Wenn Sie den Webbrowser Firefox nutzen, kennen Sie sicherlich die Möglichkeit, Suchmaschinen direkt in die Browserleisten zu integrieren; man spart sich dann das vorherige Aufrufen der Suchmaschinen-Homepage.

Suchplugin für Google im Firefox-Browser

Abbildung 1: Suchplugin für Google im Firefox-Browser

Schön wäre es, wenn man ein solches Plugin direkt für eine APEX-Seite einrichten könnte - man gibt einen Kundennamen ein und wird dann auf einen APEX-Bericht verwiesen, in dem das Suchkriterium bereits eingegeben ist. Das ist nicht sehr schwierig und lässt sich in wenigen Minuten umsetzen.

Die Firefox-Suchplugins liegen als XML-Dateien in einem Unterverzeichnis der Firefox-Installation. Auf Windows-Systemen ist das typischerweise "C:\Program Files\Mozilla Firefox\searchplugins"; in einer deutschsprachigen Installation wäre es "C:\Programme\Mozilla Firefox\searchplugins". Dort sollten bereits einige Dateien liegen. Schauen Sie sich die Datei google.xml einmal genauer an - sie sollte in etwa so aussehen:

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Google</ShortName>
<Description>Google Search</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">
  data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2
  Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAaRJREFUeNpiVIg5JRURw0A0YAHio943kYV%2B%2Ff33%
  2BdvvX7%2F%2FMjEx8nKycrGzwKXOiPKzICvdeezLhCV3jp15%2Bfv%2FX0YGhv8MDDxMX2qKTIw0RK10eY
  D6QYqATvoPBkt3f5K0W9Ew4fjTFz%2F%2Bw8Dm3W8UPeZxqFa%2BevsFyD0twgfVsOfkRxHrtfV9u5BVQ8C
  rd98%2FffkGYQM1QJ20%2FfSPv79eNxQGYfpSVJADmcvEAHbr7oOX2dj%2FERNKIA2%2F%2F%2Fz%2FxfCD
  hYVoDUDw5P6vf9%2B5iY0HVmZGQWm%2BN3fff%2Fn2k4eLHS739x%2FDiRs%2Ff%2F%2F5x8HO%2FOHzN3d
  jfqgNjIwMgc6qzLx%2Fpy47j2zY%2Feff06tXhOUucgxeun33AUZGpHh4%2Bvo7t8EyIJqz%2FhpasD59%2
  B5dNrqdnznZIsEL9ICXCsWuBCwvTv%2FymS5PWPP32ExEALz%2F%2BB5r848cPCJcRaMP9xaYQzofPPzfuv
  rnj0Jst%2B5%2F8%2Bc4sLPeDkYlRgJc93VPE18NIXkYUmJYQSQMZ%2FP3379uPH7%2F%2F%2FEETBzqJ0W
  qLGvFpe2LCC4AAAwAyjg7ENzDDWAAAAABJRU5ErkJggg%3D%3D
</Image>
<Url 
  type="application/x-suggestions+json" 
  method="GET"
  template="http://suggestqueries.google.com/complete/search?output=firefox&amp;client=firefox&amp;hl={moz:locale}&amp;q={searchTerms}"/>
<Url type="text/html" method="GET" template="http://www.google.com/search">
  <Param name="q" value="{searchTerms}"/>
  <Param name="ie" value="utf-8"/>
  <Param name="oe" value="utf-8"/>
  <Param name="aq" value="t"/>
  <!-- Dynamic parameters -->
  <Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/>
  <MozParam name="client" condition="defaultEngine" trueValue="firefox-a" falseValue="firefox"/>
</Url>
<SearchForm>http://www.google.com/firefox</SearchForm>
</SearchPlugin>

Das sieht nur auf den ersten Blick sehr kompliziert aus. Sie werden in diesem Tipp erfahren, wie Sie in wenigen Minuten eine solche Datei für APEX erstellen - ist wirklich sehr einfach!

Im wesentlichen wird in dieser Datei nur konfiguriert, wie der Firefox mit dem ins Textfeld eingegebenen Suchbegriff eine URL aufbauen soll, die er dann aufruft. Der unleserliche Code innerhalb des Tags <Image> ist ein Base64-kodiertes Icon, welches links vom Textfeld dargestellt werden soll. Das Bildchen muss 16 mal 16 Pixel groß sein.

Nun zu Application Express: Der Ausgangspunkt ist eine Seite mit einem Interaktiven Bericht (Abbildung 2).

Application Express-Seite mit interaktivem Bericht

Abbildung 2: Application Express-Seite mit interaktivem Bericht"

Zunächst gilt es, den Suchbegriff nicht ins Textfeld einzugeben, sondern in der URL als Parameter zu übergeben. Für interaktive Berichte gibt es hier spezielle Elementnamen. Ein erster Versuch wäre folgender (natürlich müssen Sie Host, Port, APEX-Pfad, Applikations- und Seiten-ID an Ihre Umgebung anpassen).

http://[host]:[port]/pls/apex/f?p=130:1:::::IR_ENAME:KI

Wenn Sie einen Elementnamen mit IR beginnen lassen, steuern Sie damit den Filter des interaktiven Berichts an. Das Ergebnis sollte wie in Abbildung 3 aussehen.

Interaktiven Bericht per URL ansteuern: 1. Versuch

Abbildung 3: Interaktiven Bericht per URL ansteuern: 1. Versuch

Es wurde das Sichkriterium ENAME = 'KI' erzeugt. Dieses Ergebnis stellt aber noch nicht zufrieden - schließlich soll eher eine Art Contains-Abfrage ausgeführt werden. Dazu muss die URL ein wenig geändert werden: Bauen Sie direkt hinter dem IR ein "C" ein ...

http://[host]:[port]/pls/apex/f?p=130:1:::::IRC_ENAME:KI

Mit den Buchstaben direkt in hinter dem IR können Sie die Vergleichsmethode wählen. Für numerische Spalten können Sie auch IRGT (für "größer-als") oder IRLT (für "kleiner-als") verwenden. Das Ergebnis ist schon besser - Sie sollten nun die Zeile mit dem "KING" sehen. Allerdings findet die Suche bisland nur in der Spalte ENAME statt - schöner wäre eine Suche über die ganze Zeile ...

http://[host]:[port]/pls/apex/f?p=130:1:::::IRC_:KI

Lassen Sie also das "ENAME" hinter dem "IRC_" weg. Das Ergebnis sieht dann wie in Abbildung 4 aus.

Erfolgreiches Ansteuern des interaktiven Berichts per URL

Abbildung 4: Erfolgreiches Ansteuern des interaktiven Berichts per URL

Nun können Sie die URL in der XML-Datei konfigurieren: Firefox unterscheidet dabei zwischen URL-Pfad und HTTP-Parametern. APEX verwendet in einem normalen Seitenaufruf nur einen HTTP-Parameter: "p". Die URL muss also so konfiguriert werden:

<Url type="text/html" method="GET" template="http://192.168.2.140:7777/pls/apex/f">
  <Param name="p" value="130:1:::::IRC_:{searchTerms}"/>
</Url>

Mit {searchTerms} wird der ins Textfeld eingegebene Suchbegriff referenziert; wiederum müssen Sie Host, Port, APEX-Pfad, Application- und Seiten-ID an Ihre Umgebung anpassen. Ins XML-Tag <SearchForm> können Sie nun die URL für die "normale" Berichtsdarstellung eintragen ...

<SearchForm>http://192.168.2.140:7777/pls/apex/f?p=130:1</SearchForm>

Füllen Sie dann die XML-Tags <ShortName> und <Description> nach Belieben aus.

<ShortName>APEX IR</ShortName>
<Description>APEX IR</Description>

Nun geht es ans Symbol. Erzeugen Sie sich ein Symbol von 16 Pixeln Höhe und 16 Pixeln Breite und speichern Sie es mit einem Bildbearbeitungsprogramm als .ico-Datei ab. Wandeln Sie die Datei anschließend in das Base64-Format um; dazu gibt es im Internet zahlreiche Werkzeuge (viele können sogar online genutzt werden). Eine einfache Google-Suche nach "base64 encoder" fördert einige Ergebnisse zutage.

Das Ergebnis tragen Sie dann ins XML-Tag<Image> ein - achten Sie darauf, dass vor dem Symbolcode der Text " data:image/x-icon;base64," steht. Es sollte in etwa so aussehen.

<Image width="16" height="16">
  data:image/x-icon;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAA
  :
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</Image>

Die fertige XML-Datei sieht dann so aus - achten Sie darauf, alle Ihre Tags mit dem <SearchPlugin>-Tag "einzurahmen".

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>APEX IR</ShortName>
<Description>APEX IR</Description>
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">
  data:image/x-icon;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAA
  AAAAAAAAAEgAAABIAAAAAAAAAAAAAAD////////////////////////////4+Pja2trx8fH+/v7////
  ////////////////////////////////29fXo5+fk4OCiuZBZfkeBgYDS0tL5+fn///////////////
  /////////29vbm5eXr5ubt5eXj1taRsHgasgAliQpARi+Fenrk4+P9/f3////////////////o6Oj7+
  vr18fHt5eXj1taPt3gP0wAQ0AAXuwEpYxBdV1LKysr29vb////////////r6ur7+vru6enc1tbUy8uF
  uXME8wAG7wAL4AATyAAklQhVbUi7u7v7+/v////////i4uLm5eXs6urx6+vo3t6Ux4If/x8V/xUF9wI
  M3gAXvQBMmy7T18/9/f3////////f39/8+/v49fXx6+vo3t6ix5Bo/2hT/1MZ/xkS1AVokE/w8fD+/v
  7////////////r6+v8+/vx7+/f2trWzc2kvpS7/7uM+YpTrz+DZlmlhob////////////////////i4
  uLl5eXp5eXt5eXj1tasw5mp2J2TkXehgICXcnKmior////////////////////f3t77+vr18fHt5eXj
  1tbCvK2+qaW5mpqqg4OYaWmmjIz////////////////////r6ur7+vrv6+vc1dXWzMzPw8PHtbW2np6
  og4OYaWmlhob////////////////////i4uLg29vj2trv5OTv5OTv5OTv5OTv5OTf1dW4oaGmior///
  /////////////////X0dHv5OTv5OTv5OTv5OTv5OTv5OTv5OTv5OTv5OTTzMz//////////////////
  //g3Nzv5OTv5OTv5OTv5OTv5OTv5OTv5OTv5OTv5OTi3t7////////////////////9/f3k4eHf2Njm
  3Nzv5OTv5OTv5OTl29vg2dnl4+P+/v7////////////////////////////////29vbr6+vq6enr6+v
  39/f///////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
</Image>
<Url type="text/html" method="GET" template="http://192.168.2.140:7777/pls/apex/f">
  <Param name="p" value="130:1:::::IRC_:{searchTerms}"/>
</Url>
<SearchForm>http://192.168.2.140:7777/pls/apex/f?p=130:1</SearchForm>
</SearchPlugin>

Speichern Sie die Datei im Verzeichnis searchplugins (siehe oben) Ihrer Firefox-Installation ab, schließen Sie alle Browserfenster und starten Sie Firefox neu. In der Suchmaschinen-Leiste sollten Sie nun in der Liste das neue Plugin finden ...

Das neue Suchplugin für den APEX "Interactive Report"

Abbildung 5: Das neue Suchplugin für den APEX "Interactive Report"

Probieren Sie es aus: Tragen Sie etwas ein, bspw. "CLER" und schauen Sie sich das Ergebnis an ...

Das neue Suchplugin für den APEX "Interactive Report" in Aktion

Abbildung 5: Das neue Suchplugin für den APEX "Interactive Report" in Aktion

Noch ein Wort zum Thema Login: Wenn die APEX-Anwendungsseite öffentlich ist, gibt es weiter nichts zu beachten. Wenn sie dagegen eine Anmeldung erfordert, wäre diese Anmeldung für jede Eingabe in das Suchplugin erneut erforderlich, denn die in der XML-Datei konfigurierte URL enthält keine Session-ID. Wenn Sie erreichen möchten, dass der Anwender sich nur einmal anmelden muss, müssen Sie auf ein Login-Verfahren umstellen, welches sich eine einmal getätigte Anmeldung "merken" kann (Single Sign On). Dazu stehen verschiedene Varianten zur Verfügung, eine Auswahl der am häufigsten diskutierten Varianten finden Sie hier:

Übrigens: Ein solches Suchplugin lässt sich auch für den Microsoft Internet Explorer (ab Version 7) einrichten. Die Vorgehensweise dazu finden Sie in diesem HowTo-Dokument von Ralph Hertrampff von der Karl Storz GMBH & Co KG.

Zurück zur Community-Seite