Hallo,
die einfachste Möglichkeit wäre, wenn Novabit ein Datentyp
„phonelink“ analog zu „hyperlink“ einführen würden. Ein Link würde
wie folgt aussehen „tel:089100200“. Diese Protokoll verstehen
Android und iOS, d.h. bei einem Klick auf den Link wird automatisch
gewählt. Unter Windows kann man das Protokoll in die registry
eintragen, hier ein Beispiel mit dem Programm PhoneSuite (TAPI, Windows 7 64Bit):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTtel]
@="URL:Tel Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOTtelDefaultIcon]
@="c:\Program Files (x86)\PhoneSuite_CTI_Client\phonesuite.exe,0"
[HKEY_CLASSES_ROOTtelshell]
[HKEY_CLASSES_ROOTtelshellopen]
[HKEY_CLASSES_ROOTtelshellopencommand]
@="c:\Program Files (x86)\PhoneSuite_CTI_Client\phonesuite.exe /dial %l".
Eine Lösung mit Nuclos 4.2.8 bzw. 4.3.0 sieht wie folgt aus:
Im Businessobjekt ein Textfeld z.B. „telefongeschaeftlich“ anlegen. Im Layout
das Textfeld einfügen. Folgende Groovy Regel im Feld „Aktiv (dynamisch)“ in den Eigenschaften
des Textfeldes einfügen:
import java.net.URI;
import java.awt.Desktop;
def tel = context."#{DEF.Kontakte.telefongeschaeftlich}"
if (tel.contains("w")) {
def phoneLink = new URI("tel:" + tel.replaceAll(/[^0-9;,+]/, ""))
if (Desktop.isDesktopSupported()) {
desk = Desktop.getDesktop()
desk.browse(phoneLink)
}
else {
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + phoneLink)
}
}
Diese Regel wählt, wenn im Feld „telefongeschaeftlich“ ein „w“ eingetragen
wird. Dieser Trick ist notwendig, da ich noch keine Möglichkeit/Anleitung gefunden haben, eine „Regel (clientseitig)“ anzulegen. Beim Anlegen einer neuen Regel kommt
der Fehler „..Source … EventSource Typ .. darf nicht leer sein“. Falls jemand
Infos zum Anlegen einer clientseitigen Regeln hat bitte hier posten.
Nachteil der Lösung ist im Moment noch, dass beim Speichern ein „w“ (oder mehrere)
im Telefonfeld stehen. Hier kann man noch eine Serverregel „Aktualisieren“ hinterlegen,
die das „w“ wieder entfernt. Evlt. hat jemand noch eine Idee, wie sich die Regel
im Layout über ein anderes Feld ausführen läßt.