ClassID | ID | Beschreibung | Bemerkungen |
3 | 55 | Laden der Einträge der obersten Ebene | Der Befehl lädt IDs und Inhalte der Produkte. Der Befehl liefert darüberhinaus die ID des Panelstatements, mit dem die Untereinträge geladen werden. In der Anweisung dürfen Angaben zur Beschriftung der Suchfelder stehen. |
3 | >= 10000 | Laden der Untereinträge | Befehl zum Laden von Untereinträgen |
18 | 95 | Lade die ID des Skriptes, das bei Doppelklick eines Produktes ausgeführt werden soll. |
Zum Laden der Produkte im Treeview wird folgender Mechanismus verwendet:
Der eigentlich Lade-Befehl ist abhängig von der Art der Datenverbindung. ODBC-Verbindungen erwarten eine SQL-SELECT-Anweisung, XML-Datenpools eine XML-SELECT-Anweisung, SOAP-Verbindungen erwarten eine getProductList-Anweisung.
Nur Panelstatement 55 (oberste) Ebene wertet die Sucheingaben aus, deshalb hat nur dieses Statement Eingabewerte, die im Befehl mit ? markiert werden müssen. Folgende Eingaben werden erwartet.
Parameter | Typ | Beschreibung | Bemerkungen |
1 | int | Einschränkung der ID auf ID > 0 | wird vom Plugin immer durch 0 ersetzt |
2 | string | Inhalt des ersten Suchfeldes mit angefügtem % | nur Standardsuche. Zu weiteren Suchkriterien siehe hier. |
3 | Inhalt des zweiten Suchfeldes mit angefügtem % | ||
4 | int | rownum < | wird vom Plugin immer durch 100 ersetzt (nur bei ODBC-Verbindungen) |
Alle Anweisungen verwenden das gleiche Schema von Rückgabewerten.
Spalte
normal/ SOAP getList |
Parameter | Typ | Beschreibung | Bemerkungen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | 1 | ID | int | Eindeutige ID des Datensatzes. | über die ID des Datensatzes wird der Status (+, x, ...) des Produkte in der Palette gesetzt. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | 2 | ID2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | 3 | ID3 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | - | StringID | char* | StringID des Datensatzes | NICHT BEI SOAP (Benutzen Sie bei SOAP die Spalte 17 für die StringID)
Damit die StringID verwendet werden kann, müssen die folgenden zwei Bedinungen erfüllt sein :
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5 | 4 | classID | int | interne ClassID des Objektes | wird zur Zeit nicht ausgewertet | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | 5 | iconID | int | Nummer für das Icon, das für das Objekt verwendet werden soll |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7 | 6 | 1. Spalte der Palette | string | Werte, die in der Palettenliste gezeigt werden | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8 | 7 | 2. Spalte der Palette | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9 | 8 | forceDelete | int | Objektstatus |
>0 : Ist das Objekt nicht im Dokument verplant, wird es nicht in die Produktliste aufgenommen. Ist das Objekt im Dokument verplant, wird es aus der Liste gelöscht, wenn alle Verweise auf dieses Produkt aus dem Dokument entfernt sind. 0 : Normales verplanbares Produkt <0 : Das Objekt soll nicht im Dokument verplant werden. Der Link-Button ist deaktiviert und das Objekt wird beim überprüfen der Stati mit |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | 9 | panelStatementID | int | >= 10000, Verweis auf ein Panelstatement der gleichen Bauart, mit dem die Untereinträge geladen können. | Ist der Wert gleich 0, kann das Objekt nicht weiter aufgeklappt werden. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11 | 10 | docID | int | ID des Dokumentes | Der Parameter ist zur Zeit unbenutzt und kann mit 0 gefüllt werden. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12 | 11 | masterpage | string | Musterseitenname in der Form Prefix-Name (z.B. "C-Doppelseite") | Muss beim Produktaufbau eine neue Seite für dieses Produkt angelegt werden, wird dazu die angegebene Musterseite verwendet. Existiert die Musterseite nicht oder ist die Angabe leer, wird die Standardseite des Aufbaus verwendet.
Die Angabe hat nur beim raster-orientierten Produktaufbau Bedeutung. Im seitentemplate-basierten Aufbau werden Musterseiten über die Seitentemplates vergeben. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 | 12 | Reserviert | string | Tragen Sie hier den Wert "" ein. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14 | 13 | Eigenes Icon | string | Icon-Beschreibung | "" oder Definition eines eigenen Icons für den Eintrag. Ist das Feld nicht leer, wird die Angabe iconID aus Spalte 6 (bzw. 5 bei SOAP) ignoriert. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
15 | 14 | pagetemplateID | int | Vor dem Aufbau des Produktes eine neue Seite mit dem Seitentemplate anlegen |
0 oder gültige ID eines Seitentemplates. In der Palette wird der Name des Seitentemplates durch @ getrennt hinter dem Templatenamen gezeigt: Template@Pagetemplate Verwenden Sie diese Option mit Bedacht: Durch die Angabe eines Seitentemplates wird das Produkt beim Produktaufbau automatisch auf einer neuen Seite angelegt. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16 | 15 | Reserviert | int | Tragen Sie hier den Wert 0 ein. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
17 | 16 | pageItemID | int | Template mit dem das Produkt eingefügt werden soll |
Templates werden seitenbezogen ermittelt: Ist das gegebene Template auf linke Seiten beschränkt hat aber eine Angabe für ein rechtsseitiges Template, wird auf rechten Seiten automatisch das rechtsseitig Template verwendet. Ist die Angabe 0 oder existiert das angegebene Template nicht, wird das Standardtemplate des Aufbaus verwendet. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
- | 17 | stringID | string | StringID des Produktes | NUR SOAP
Damit die StringID verwendet werden kann, müssen die folgenden zwei Bedinungen erfüllt sein :
|
Die Befehle unterstützen den vollständigen Satz der Panelstatement-Tags wie <user>, <now>. Eine vollständige Liste dieser Variablen finden Sie hier.
Damit beim Laden von Untereinträgen auf Werte der übergeordneten Objekte zugegriffen werden kann, wird in den Statements zum Laden dieser Objekte eine Reihe weiterer Variable unterstützt.
Name | Typ | Beschreibung | Bemerkungen |
parent.ID | int | ID des Elterndatensatzes | Mit parent.parent wird auf den Elterndatensatz des Elterndatensatzes verwiesen, usw. |
parent.ID2 | |||
parent.ID3 | |||
parent.StringID | string | ||
parent.classID | int | interne ClassID des Elterndatensatzes | |
parent.Row1 | string | Listentext des Elterndatensatzes | |
parent.Row2 | |||
parent.ForceDelete | int | Forcedelete-Wert des Elterndatensatzes |
Ausserdem können Sie auf jeder Ebene auf die aktuellen Werte in den Suchfeldern der Palette zurückgreifen. Die Abbildung zeigt die Tags, die den Suchfeldern zugeordnet sind. Ist ein Suchfeld leer, bekommt das Tag den Wert "%", sonst exakt den Inhalt des Suchfeldes (also nicht in Großbuchstaben umgewandelt).
Die Anweisungen haben für Datenbank und XML und für Haupt- und Untereinträge die selben Spalten, mit dem einzigen Unterschied, dass unter XML und für alle Untereinträge (Datenbank und XML) die Reihenfolge von ClassID und IconID vertauscht ist : ... IconID, ClassID, ...
Um Suchfelder umzubennen oder schon beim Start zu belegen verwenden Sie den hier beschriebenen Mechanismus.
Ab Version 1.4.2 R 504 können die Einträge der Produktrecherche mit eigenen Icons versehen werden. Die folgende Tabelle gibt eine vollständige Liste aller unterstützten Quellen:
Schlüsselwort | Quelle | Beschreibung | Transparenz | Beispiel |
ImagePath |
lokales Dateisystem |
Vollständiger Pfad zur Bilddatei Der Pfad darf mit den gültigen Alias-Name für Ordner beginnen. |
keine |
ImagePath: "$DESKTOP/../../InDesign/Plugins/Bilder/aaa.png" |
IconPath |
Weiß |
|||
ImageURL |
Netz |
Gültige URL zur Bilddatei |
keine |
ImageURL : "http://www.hi13.de/tantarantana.jpg" |
IconURL |
Weiß |
|||
SOAPImage | aktuelle SOAP-Verbindung |
fieldID einer Bilddatei des SOAP-Dienstes Es muß eine SOAP-Verbindung bestehen. |
keine |
SOAPImage : "icons/123" |
SOAPIcon |
Weiß |
Achtung : Vor und hinter dem Doppelpunkt muß in allen Fällen jeweils ein Leerzeichen stehen.
Bilder werden automatisch so skaliert, dass sie vollständig sichtbar sind. Von Bildern, die nicht PNG sind, werden dazu skalierte Versionen der Bilder auf Ihrem Rechner abgelegt:
$PREFS/Werk [2]/CS_VERSION/ProductPreviews/17x 17/... mit CS_VERSION gleich CS6 für ID CS6, CS7 für ID CC, CS8 für ID CC 2014 usw.
Dieser Ordner oder beliebige Einträge dieser Ordner dürfen gelöscht werden - dann werden Previews bei Bedarf automatisch neu erzeugt. Aber Dateien dieser Ordner dürfen nicht geändert werden. Die Bilder sind, auch wenn sie bekannte Bildformate haben, von anderen Grafikprogrammen nicht lesbar.
Damit Icons auf dem skalierbaren Grau der Illustratur Benutzeroberfläche immer sichtbar sind, müssen unterschiedliche Icons für helle und dunkle Oberflächen verwendet werden. Es wird automatisch versucht, Bilddateien mit den folgenden Namenserweiterung zu suchen :
Werden die benötigte Varianten nicht gefunden, wird die Stammdatei ohne zusätzliche Namenserweiterung verwendet.
Auch die Transparenz kann bei unterschiedlichen UI-Farben natürlich nicht mehr Weiß-basiert sein. Verwenden Sie für Transparenzen daher immer PNG-Bilder mit Alphakanal. Die Angabe Image- oder Icon- ist in diesem Fall gleichwertig. Hier ist ein Beispielbild mit den Farben, die auch für die Comet-Icons verwendet werden:
Als Pfadtrenner können Sie systemunabhängig / oder \ verwenden.
Bei der Verwendung von \ als Pfadtrenner denken Sie bitte daran, dass dieses Zeichen, wie in Strings üblich, mit \ maskiert werden muss, also als \\ angegben werden muss. Da auch die meisten Programme zur Bearbeitung von Datenbankinhalten erwarten, dass \ verdoppelt wird, wenn Sie es in einem insert oder update übergeben wollen, müssen Sie also bei der Definition der Suchanweisung in den meisten Fällen alle \ als \\\\ übergeben:
select
1, 0, 0, a.id,
3,
2020,
a.label, '''',
0,
10000,
0,
''A-Mustervorlage'',
'''',
''ImagePath : "\\\\Users\\\\paul\\\\Desktop/../../InDesign/Plugins/Bilder/buffer.png"'',
0,
0,
0
from comet_container a, comet_planningtypes r
where a.container_id=''0'' and a.active = 1 and r.keyname = a.type_name
order by sort, label
Ob Sie das Zeichen bei der Definition der Suchanweisung für die Datenbank maskieren müssen oder nicht (ob Sie also \\ oder \\\\ schreiben müssen), müssen Sie mit Ihrem jeweiligen Eingabeprogramm testen. Wenn Sie die Suche in der Produktrecherche ausführen, wird die Anweisung ins Logfile geschrieben, dort sollten dann jeweils alle Pfadtrenner als \\ erscheinen. Erhalten Sie dann immer noch kein eingenes Bild, zeigt der Pfad nicht auf ein lesbares Bild.
Hier zwei Beispiele für SQL und XML.
Zuerst das Panelstatement 55 zum Laden der Objekte der ersten Ebene.
select ID, 1401, 1702, '' 3, -- unbenutzt 2012, -- Haus Num, Name, ForceDelete, 10000, -- Lade die Untereinträge 0, '', '', '', 0, 0, 7 -- Template 7 from WIIProducts where ID > ? and upper (num) like ? and upper (name) like ? and rownum < ?
Lade die Objekte der zweiten Ebene.
select ID, <parent.ID>, 123 ,'', 2009, -- Zahnrad ObjectType, Name, Value, ForceDelete, 10001, -- Lade die Untereinträge 0, '', '', '', 0, 0, 7 -- Template 7 from WIIElements where productID = <parent.ID> union select ID, <parent.ID>, 123, '', 2010, -- No passing ObjectType, Name, Value, ForceDelete, 10001, 0, '', '', '', 0, 0, 7 -- Template 7 from WIIElements2 where productID = <parent.ID> union select ID, <parent.ID>, 123, '', 2011, -- Herz ObjectType, Name, Value, ForceDelete, 10001, 0, '', '', '', 0, 0, 7 -- Template 7 from WIIElements3 where productID = <parent.ID>'
Lade die Objekte der dritten Ebene.
select 1, 1401, 1702, '', 2003, -- Glühlampe -1, <parent.Row1>||' '||to_char(<parent.ID>), <parent.Row2>||' '|| to_char(<parent.ID2>), 0, 0, -- Keine Untereinträge mehr 0, '', '', '', 0, 0, 7 -- Template 7 from dual union select 1, 1401, 1702, '', 2002, -- Buch mit Stift -1, <parent.Row1>||' '|| to_char(<parent.ID>), <parent.Row2>||' '|| to_char(<parent.ID2>), 0, 0, -- Keine Untereinträge mehr 0, '', '', '', 0, 0, 7 -- Template 7 from dual
Ganz analog zu den Panelstatements für Datenbanken werden auch die Anweisungen für XML gegeben. Lediglich folgenden Unterschiede sind zu beachten :
Hier ein Beispieleintrag, der StringIDs unterstützt. Die orange hinterlegten Definitionsteile geben eine StringId zurück. Der Rückgabewert von id wird automatisch in einen String umgewandelt. Damit die Untereinträge der so gefundenen Produkte geladen werden können, muss ausserdem eine Definition für das Panelstatement 10001 gemacht werden.
<panelstatement> <id>10000</id> <usage>1</usage> <domain></domain> <statement> "$MYFILE" select id, <parent.ID>, 123, id objecttype, 2009, name, value, forcedelete, 10001, docid, masterpage, grid.name, grid.elem, grid.id, grid.elemid, pageitemid node elements.element where productid = <parent.ID> </statement> <in_parameters></in_parameters> <out_parameters></out_parameters> <description>Untereinträge laden</description> <hasstringids>1</hasstringids> </panelstatement>
SOAP-Dienste müssen einen speziellen Befehl zum Laden von (Unter)produktlisten zur Verfügung stellen. Eine vollständige Beschreibung des SOAP-Dienstes finden Sie hier. Auf der Pluginseite der SOAP-Verbindung wird getProductList in vier verschiedenen Ausprägungen verwendet :
Das folgende Beispiel zeigt eine gültige SOAP-Anweisung zum Laden der Produkte der obersten Ebene (Panelstatement 55) :
<panelstatement> <id>55</id> <usage>Lade Produkte der Produktrecherche als Treeview</usage> <domain></domain> <statement> getProductList id > ? and name like ? and num LIKE ? </statement> <in_parameters></in_parameters> <out_parameters></out_parameters> <description></description> </panelstatement>Im Gegensatz zu den oben beschriebenen Anweisungen für Datenbankverbindungen und XML-Daten können Sie in der SOAP-Anweisung getProductList nicht festlegen, welches Panelstatement zum Laden der Untereinträge verwendet werden soll. Diese Einstellung wird serverseitig gemacht. Gibt der Server beispielsweise die 20000 zurück, könnte der Eintrag in Panelstatements wie folgt aussehen :
<panelstatement> <id>20000</id> <usage>Unterprodukte laden SOAP</usage> <domain></domain> <statement> getSubProductList id = <parent.ID> </statement> <in_parameters></in_parameters> <out_parameters></out_parameters> <description></description> </panelstatement>
Die Einträge der Liste können auf Doppelklicks reagieren. Die auszuführenden Aktion wird wie folgt definiert :
Hier einige Beispiele von gültigen Panelstatements mit denen die Doppelklick-ID definiert werden kann.
select 900+<depth> from dual; "datafiles.xml" -- beliebige XML-Datei select 900+<depth> select id%3 from ... where ID = ? select id%3 from ... where ID = <ID> -- Die ?en sind optional
Und hier ein einfaches Doppelklick-Skript
int main ()
{
showmessage ("Zeile %d, ID = %d",
gClicked+1,
gRecordID);
return 1;
}
Platzhalter von Texten und Rahmen können durch Shift-Klick in die erste Spalte der Produktliste mit dem jeweiligen Produkt verknüpft werden. Dabei werden die Platzhalter aller ausgewählten Rahmen und/oder Texte mit dem Produkt verknüpft. Ist das sog. Autoload-Button der Palette aktiviert (rot)
werden nach dem Verknüpfen alle Platzhalter sofort geladen.
Die Palette hat die ClassID 3