FormSolutions Schnittstelle: Unterschied zwischen den Versionen
Sed (Diskussion | Beiträge) K |
Sed (Diskussion | Beiträge) |
||
Zeile 11: | Zeile 11: | ||
* Es muß ein CMS-Key für die Form-Solutions-Schnittstelle bekannt sein der vom IES verwendet werden kann. Dieser Key wird den Kunden von Form-Solutions genannt. Der Key sollte keine Sonderzeichen enthalten! | * Es muß ein CMS-Key für die Form-Solutions-Schnittstelle bekannt sein der vom IES verwendet werden kann. Dieser Key wird den Kunden von Form-Solutions genannt. Der Key sollte keine Sonderzeichen enthalten! | ||
* Die zu verwendenden Formulare werden zur Personalisierung mit einem Form-Solutions-Nutzer verknüpft. Hier muss ein Default-Nutzer bekannt sein, der Initial für neue Formular-Links verwendet wird. Diese Nutzer kann bei der weiteren Konfiguration des Formulars geändert werden. Für die Form-Solutions-Schnittelle ist eine Default-Nutzer-Nummer erforderlich. Sie muss das Format <code>00000000-0001-0001</code> haben. | * Die zu verwendenden Formulare werden zur Personalisierung mit einem Form-Solutions-Nutzer verknüpft. Hier muss ein Default-Nutzer bekannt sein, der Initial für neue Formular-Links verwendet wird. Diese Nutzer kann bei der weiteren Konfiguration des Formulars geändert werden. Für die Form-Solutions-Schnittelle ist eine Default-Nutzer-Nummer erforderlich. Sie muss das Format <code>00000000-0001-0001</code> haben. | ||
+ | * Es muss ein ArtikelPool mit dem Anchor '<code>formsolutions</code>' existieren. | ||
+ | * Es muss folgendes Template mit dem Anchor '<code>formsolutions.template.config</code>' angelegt sein: | ||
+ | <source lang="xml"> | ||
+ | <sp:io type="in"> | ||
+ | <em> | ||
+ | Diese Konfigurationswerte werden über den Form-Solutions import gesetzt und können an dieser Stellen nicht geändert werden. | ||
+ | Ist eine Änderung der Werte nötig, muss diese Änderung am Importer vorgenommen werden. | ||
+ | </em> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | Webservice Url<br> | ||
+ | <spt:text name="wsurl" readonly="false" size="80"/><br/> | ||
+ | CMS-Key<br> | ||
+ | <spt:text name="cms" readonly="true" size="80"/><br/> | ||
+ | Nutzer-Nummer<br> | ||
+ | <spt:text name="user" readonly="true" size="80"/><br/> | ||
+ | </sp:io> | ||
+ | </source> | ||
+ | * Es muss folgendes Template mit dem Anchor '<code>formsolutions.template.form</code>' angelegt sein: | ||
+ | <source lang="xml"> | ||
+ | <sp:io type="in"> | ||
+ | Formular-Nummer<br/> | ||
+ | <spt:text name="fs_fnr"/><br/> | ||
+ | Anzahl der Seiten<br/> | ||
+ | <spt:text name="fs_pagecount"/><br/> | ||
+ | Erzeugt am<br/> | ||
+ | <spt:text name="fs_created"/><br/> | ||
+ | Letzte Änderung am<br/> | ||
+ | <spt:text name="fs_changed"/><br/> | ||
+ | Bemerkung<br/> | ||
+ | <spt:text name="fs_bem"/><br/> | ||
+ | Beschreibung<br/> | ||
+ | <spt:text name="fs_beschr"/><br/> | ||
+ | Typ<br/> | ||
+ | <spt:text name="fs_type"/><br/> | ||
+ | </sp:io></source> | ||
+ | ===Konfiguration=== | ||
+ | Um den Import einrichten zu können müssen von dem Kunden folgende Informationen bereit gestellt werden: | ||
+ | * CMS-Key des Kunden-Accounts | ||
+ | * Kunden-Account: Login und Passwort | ||
+ | Dann sind folgende Dateien in <code>/etc/sitepark</code> anzulegen und anzupassen: | ||
+ | |||
+ | <code>form-solutions.xml</code> | ||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <ies-client> | ||
+ | <logging> | ||
+ | <appender name="FILE" class="org.apache.log4j.RollingFileAppender"> | ||
+ | <layout class="org.apache.log4j.PatternLayout"> | ||
+ | <param name="ConversionPattern" value="%d %-5p %m%n"/> | ||
+ | </layout> | ||
+ | <param name="File" value="${sitepark.home}/form-solutions.log"/> | ||
+ | <param name="MaxFileSize" value="10MB"/> | ||
+ | <param name="MaxBackupIndex" value="10"/> | ||
+ | </appender> | ||
+ | <logger name="com.sitepark.ies" additivity="false"> | ||
+ | <appender-ref ref="FILE"/> | ||
+ | <priority value="INFO"/> | ||
+ | </logger> | ||
+ | </logging> | ||
+ | <ies-connection login="login" password="password" client="anchor_of_the_client" module="Form Solutions Importer"/> | ||
+ | <properties> | ||
+ | <property name="ies.xip.import.deleteWorkDir">true</property> | ||
+ | <property name="ies.xip.import.syncfile">${sitepark.home}/conf/form-solutions.sync</property> | ||
+ | <property name="ies.xip.import.publishMode">all-file</property> | ||
+ | <property name="ies.xip.import.ignoreParents">false</property> | ||
+ | <property name="ies.xip.import.deleteElements">true</property> | ||
+ | <property name="ies.xip.import.deletePools">true</property> | ||
+ | <property name="ies.xip.import.deleteOnlyEmptyPools">true</property> | ||
+ | <property name="ies.xip.import.variables">wsurl=https://pdf.form-solutions.net/ws2</property> | ||
+ | <property name="ies.xip.import.variables">cmskey=293478912hskdfh238</property> | ||
+ | <property name="ies.xip.import.variables">user=12345678-1234-1234</property> | ||
+ | </properties> | ||
+ | <xip command="import"> | ||
+ | <!-- | ||
+ | <source type="file" file="imports/form-solutions.response.xml"/> | ||
+ | --> | ||
+ | <source type="http" url="${wsurl}/getformlist.php" method="post"> | ||
+ | <header name="SOAPAction">"urn:FS#getformlist"</header> | ||
+ | <body content-type="text/xml; charset=UTF-8"><![CDATA[<?xml version="1.0" encoding="UTF-8"?> | ||
+ | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:FS" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> | ||
+ | <SOAP-ENV:Body> | ||
+ | <tns:getformlist xmlns:tns="urn:FS"> | ||
+ | <cms xsi:type="xsd:string">awo3049%ukjdf&(sdf6§df=</cms> | ||
+ | </tns:getformlist> | ||
+ | </SOAP-ENV:Body> | ||
+ | </SOAP-ENV:Envelope>]]></body> | ||
+ | </source> | ||
+ | <transform xslt="${sitepark.home}/conf/form-solutions.xslt"/> | ||
+ | </xip> | ||
+ | </ies-client> | ||
+ | </source> | ||
+ | |||
+ | <code>form-solutions.xslt</code> | ||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
+ | <xsl:stylesheet version="1.0" | ||
+ | xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | ||
+ | xmlns:xip="http://ies.sitepark.com/xip" | ||
+ | extension-element-prefixes="xip"> | ||
+ | |||
+ | <xsl:output method="xml" encoding="UTF-8" indent="yes"/> | ||
+ | |||
+ | <xsl:function name="xip:getCategoryId"> <xsl:param name="s"/> | ||
+ | <!-- Erstes Zeichen ermitteln --> | ||
+ | <xsl:variable name="id" select="substring-before($s,' ')"/> | ||
+ | <xsl:value-of select="substring-before($s,' ')"/> | ||
+ | </xsl:function> | ||
+ | |||
+ | <xsl:key name="categoryId" match="item" use="xip:getCategoryId(kat)"/> | ||
+ | |||
+ | <xsl:template match="/"> | ||
+ | <xip> | ||
+ | <resource parent="formsolutions" anchor="formsolutions.config" name="Form Solutions Konfiguration" template="formsolutions.template.config"> | ||
+ | <text name="wsurl">${wsurl}</text> | ||
+ | <text name="cms">${cmskey}</text> | ||
+ | <text name="user">${user}</text> | ||
+ | </resource> | ||
+ | <!-- Schleife über Kategorien --> | ||
+ | <xsl:for-each select="//item[generate-id() = generate-id(key('categoryId', xip:getCategoryId(kat))[1])]"> | ||
+ | |||
+ | <xsl:variable name="category" select="xip:getCategoryId(kat)"/> | ||
+ | <!-- gelöschte Formulare haben keine Kategorie --> | ||
+ | <xsl:if test="$category != ''"> | ||
+ | <xsl:variable name="categoryName" select="kat/text()"/> | ||
+ | <articlepool parent="formsolutions" anchor="formsolutions.category.{$category}" name="{$categoryName}"> | ||
+ | <resource> | ||
+ | <text name="container" anchor="is5:gui.container.infosite.standard"/> | ||
+ | <text name="registrationTemplate" anchor="is5:gui.container.infosite.standard.all"/> | ||
+ | <text name="editorTemplatePool" anchor="standard.container.editing"></text> | ||
+ | </resource> | ||
+ | <!-- Schleife über alle mit gleicher Kategorie --> | ||
+ | <xsl:for-each select="key('categoryId',$category)"> | ||
+ | <resource anchor="formsolutions.form.{fnr}" name="{title} ({fnr})" template="formsolutions.template.form"> | ||
+ | <comment><xsl:value-of select="bem"/></comment> | ||
+ | <text name="fs_fnr"><xsl:value-of select="fnr"/></text> | ||
+ | <text name="fs_pagecount"><xsl:value-of select="pagecount"/></text> | ||
+ | <text name="fs_created"><xsl:value-of select="created"/></text> | ||
+ | <text name="fs_changed"><xsl:value-of select="changed"/></text> | ||
+ | <text name="fs_beschr"><xsl:value-of select="beschr"/></text> | ||
+ | <text name="fs_type"><xsl:value-of select="type"/></text> | ||
+ | </resource> | ||
+ | </xsl:for-each> | ||
+ | </articlepool> | ||
+ | </xsl:if> | ||
+ | </xsl:for-each> | ||
+ | </xip> | ||
+ | </xsl:template> | ||
+ | </xsl:stylesheet> | ||
+ | </source> | ||
+ | |||
+ | Zur regelmäßigen Synchronisation ist weiterhin ein Cronjob folgender Form notwendig: | ||
+ | <source lang="bash"> | ||
+ | # m h dom mon dow command | ||
+ | # Formulare von form-solutions aktualisieren. | ||
+ | 1 1 * * * /srv/sitepark/bin/iespkg /etc/form-solutions.xml | ||
+ | </source> | ||
<noinclude> | <noinclude> | ||
[[Kategorie:InfoSite5]] | [[Kategorie:InfoSite5]] | ||
[[Kategorie:CityGov3]] | [[Kategorie:CityGov3]] | ||
</noinclude> | </noinclude> |
Version vom 19. Januar 2010, 15:33 Uhr
Formulare der Firma Form-Solutions können in den IES integriert werden. Hierzu ist eine Form-Solutions Lizenz erforderlich.
Funktionsweise
Referenzen der Formulare werden in den IES importiert und durch regelmäßige Imports synchron gehalten. Mit Hilfe des spt:formsolutions-Tag kann ein Link-Dialog geöffnet werden, um ein Formulare zu verwendet. Für jede erzeugte Verlinkung wird eine neue URL erzeugt. Über dieser URL kann das Formular vom Form-Solutions-Server geladen werden (Z.B. PDF). Der spt:formsolutions-Tag erzeugt einen Button über den das Formular konfiguriert werden kann. Nach Klick auf diesen Button öffnet sich eine Seite des Form-Solutions-Servers mit der das Formular konfiguriert wird.
Voraussetzungen
Um die Form-Solutions-Schnittstelle einrichten zu können müssen folgende Voraussetzungen gegeben sein:
- Der Kunde muss eine Form-Solutions Lizenz besitzen, um den den Form-Solutions-Server ansprechen zu können
- Der IES müssen Zugang zum Internet haben, um den Formsolutions-Server erreichen zu können.
- Die Redakteure, die die Formulare Verknüpfen sollen, müssen Zugang zum Internet haben, um den Formsolutions-Server erreichen zu können.
- Es muß ein CMS-Key für die Form-Solutions-Schnittstelle bekannt sein der vom IES verwendet werden kann. Dieser Key wird den Kunden von Form-Solutions genannt. Der Key sollte keine Sonderzeichen enthalten!
- Die zu verwendenden Formulare werden zur Personalisierung mit einem Form-Solutions-Nutzer verknüpft. Hier muss ein Default-Nutzer bekannt sein, der Initial für neue Formular-Links verwendet wird. Diese Nutzer kann bei der weiteren Konfiguration des Formulars geändert werden. Für die Form-Solutions-Schnittelle ist eine Default-Nutzer-Nummer erforderlich. Sie muss das Format
00000000-0001-0001
haben. - Es muss ein ArtikelPool mit dem Anchor '
formsolutions
' existieren. - Es muss folgendes Template mit dem Anchor '
formsolutions.template.config
' angelegt sein:
<sp:io type="in">
<em>
Diese Konfigurationswerte werden über den Form-Solutions import gesetzt und können an dieser Stellen nicht geändert werden.
Ist eine Änderung der Werte nötig, muss diese Änderung am Importer vorgenommen werden.
</em>
<br/>
<br/>
Webservice Url<br>
<spt:text name="wsurl" readonly="false" size="80"/><br/>
CMS-Key<br>
<spt:text name="cms" readonly="true" size="80"/><br/>
Nutzer-Nummer<br>
<spt:text name="user" readonly="true" size="80"/><br/>
</sp:io>
- Es muss folgendes Template mit dem Anchor '
formsolutions.template.form
' angelegt sein:
<sp:io type="in">
Formular-Nummer<br/>
<spt:text name="fs_fnr"/><br/>
Anzahl der Seiten<br/>
<spt:text name="fs_pagecount"/><br/>
Erzeugt am<br/>
<spt:text name="fs_created"/><br/>
Letzte Änderung am<br/>
<spt:text name="fs_changed"/><br/>
Bemerkung<br/>
<spt:text name="fs_bem"/><br/>
Beschreibung<br/>
<spt:text name="fs_beschr"/><br/>
Typ<br/>
<spt:text name="fs_type"/><br/>
</sp:io>
Konfiguration
Um den Import einrichten zu können müssen von dem Kunden folgende Informationen bereit gestellt werden:
- CMS-Key des Kunden-Accounts
- Kunden-Account: Login und Passwort
Dann sind folgende Dateien in /etc/sitepark
anzulegen und anzupassen:
form-solutions.xml
<?xml version="1.0" encoding="UTF-8"?>
<ies-client>
<logging>
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p %m%n"/>
</layout>
<param name="File" value="${sitepark.home}/form-solutions.log"/>
<param name="MaxFileSize" value="10MB"/>
<param name="MaxBackupIndex" value="10"/>
</appender>
<logger name="com.sitepark.ies" additivity="false">
<appender-ref ref="FILE"/>
<priority value="INFO"/>
</logger>
</logging>
<ies-connection login="login" password="password" client="anchor_of_the_client" module="Form Solutions Importer"/>
<properties>
<property name="ies.xip.import.deleteWorkDir">true</property>
<property name="ies.xip.import.syncfile">${sitepark.home}/conf/form-solutions.sync</property>
<property name="ies.xip.import.publishMode">all-file</property>
<property name="ies.xip.import.ignoreParents">false</property>
<property name="ies.xip.import.deleteElements">true</property>
<property name="ies.xip.import.deletePools">true</property>
<property name="ies.xip.import.deleteOnlyEmptyPools">true</property>
<property name="ies.xip.import.variables">wsurl=https://pdf.form-solutions.net/ws2</property>
<property name="ies.xip.import.variables">cmskey=293478912hskdfh238</property>
<property name="ies.xip.import.variables">user=12345678-1234-1234</property>
</properties>
<xip command="import">
<!--
<source type="file" file="imports/form-solutions.response.xml"/>
-->
<source type="http" url="${wsurl}/getformlist.php" method="post">
<header name="SOAPAction">"urn:FS#getformlist"</header>
<body content-type="text/xml; charset=UTF-8"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:FS" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<tns:getformlist xmlns:tns="urn:FS">
<cms xsi:type="xsd:string">awo3049%ukjdf&(sdf6§df=</cms>
</tns:getformlist>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>]]></body>
<transform xslt="${sitepark.home}/conf/form-solutions.xslt"/> </xip>
</ies-client> </source>
form-solutions.xslt
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xip="http://ies.sitepark.com/xip"
extension-element-prefixes="xip">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:function name="xip:getCategoryId"> <xsl:param name="s"/>
<!-- Erstes Zeichen ermitteln -->
<xsl:variable name="id" select="substring-before($s,' ')"/>
<xsl:value-of select="substring-before($s,' ')"/>
</xsl:function>
<xsl:key name="categoryId" match="item" use="xip:getCategoryId(kat)"/>
<xsl:template match="/">
<xip>
<resource parent="formsolutions" anchor="formsolutions.config" name="Form Solutions Konfiguration" template="formsolutions.template.config">
<text name="wsurl">${wsurl}</text>
<text name="cms">${cmskey}</text>
<text name="user">${user}</text>
</resource>
<!-- Schleife über Kategorien -->
<xsl:for-each select="//item[generate-id() = generate-id(key('categoryId', xip:getCategoryId(kat))[1])]">
<xsl:variable name="category" select="xip:getCategoryId(kat)"/>
<!-- gelöschte Formulare haben keine Kategorie -->
<xsl:if test="$category != ''">
<xsl:variable name="categoryName" select="kat/text()"/>
<articlepool parent="formsolutions" anchor="formsolutions.category.{$category}" name="{$categoryName}">
<resource>
<text name="container" anchor="is5:gui.container.infosite.standard"/>
<text name="registrationTemplate" anchor="is5:gui.container.infosite.standard.all"/>
<text name="editorTemplatePool" anchor="standard.container.editing"></text>
</resource>
<!-- Schleife über alle mit gleicher Kategorie -->
<xsl:for-each select="key('categoryId',$category)">
<resource anchor="formsolutions.form.{fnr}" name="{title} ({fnr})" template="formsolutions.template.form">
<comment><xsl:value-of select="bem"/></comment>
<text name="fs_fnr"><xsl:value-of select="fnr"/></text>
<text name="fs_pagecount"><xsl:value-of select="pagecount"/></text>
<text name="fs_created"><xsl:value-of select="created"/></text>
<text name="fs_changed"><xsl:value-of select="changed"/></text>
<text name="fs_beschr"><xsl:value-of select="beschr"/></text>
<text name="fs_type"><xsl:value-of select="type"/></text>
</resource>
</xsl:for-each>
</articlepool>
</xsl:if>
</xsl:for-each>
</xip>
</xsl:template>
</xsl:stylesheet>
Zur regelmäßigen Synchronisation ist weiterhin ein Cronjob folgender Form notwendig:
# m h dom mon dow command
# Formulare von form-solutions aktualisieren.
1 1 * * * /srv/sitepark/bin/iespkg /etc/form-solutions.xml