Die ClassID der Palette Publikationen und ihrer Objekte ist 9.
Die ClassID der Palette Publikationsinfos ist 19.
Der aktuelle Dokumentstatus wird in der ersten Spalte der Publikationsliste gezeigt.
Folgende Stati sind definiert:
Icon | Beschreibung |
Das Dokument steht zum Herunterladen bereit. | |
Von einem anderen Benutzer ausgebucht. | |
Das Dokument ist auf dem Server als "vom Benutzer ausgebucht" markiert, aber in der lokalen Liste nicht enthalten. Wurde das Dokument mit demselben Account auf einem anderen Rechner ausgebucht? | |
Das Dokument ist ausgebucht, aber aktuell nicht geöffnet: Klick öffnet, Alt-Klick bucht ein. | |
Das Dokument ist ausgebucht, aber existiert aktuell nicht: Klick lädt das Dokument erneut herunter. | |
Das Dokument ist ausgebucht und geöffnet: Klick führt Checkin-Script aus und schließt das Dokument. | |
Normale lokale Datei, die nicht vom Server geladen werden muß und existiert. | |
Normale lokale Datei, die nicht vom Server geladen werden muß aber nicht existiert. |
ID | Beschreibung |
⇨ Publikationen | |
36 | Suche der Listeneinträge
Unter XML und SOAP lädt diese Anweisung auch die Daten der einzelnen Einträge, das folgende Statement 37 wird dann nicht benötigt. |
37 | Laden der einzelnen Einträge (nur SQL) |
130 | Suchen der Musterdokumente. Die Syntax der Anweisung entspricht dem Panelstatement 36. |
131 | Laden der Musterdokument-Einträge (nur SQL). Die Syntax der Anweisung entspricht dem Panelstatement 37. |
38 | Laden der Einträge des Popupmenüs Bereich |
96 | Lade die ID des Skriptes, das bei Doppelklick eines Dokumentes ausgeführt werden soll. |
⇨ Publikationsinfos | |
100 |
Wieviel Previews sind für die aktuelle Publikation verfügbar? Die Anweisung wird zum Laden der Previews benötigt. In der Anweisung muß ein ? enthalten sein, das automatisch durch die ID1 der Publikation ersetzt wird. Zusätzlich können die Tags <ID>, <ID2>, <ID3> und <STRINGID> verwendet werden, die jeweils durch die entsprechenden Teile der Publikations-ID ersetzt werden. Default für ODBC select id from documentpreviews where id > 0 and docid = ? order by id Default für XML/SOAP "documentpreviews.xml" |
101 |
Lade ein Preview. In der Anweisung muß ein ? enthalten sein, das automatisch durch die ID1 der Publikation ersetzt wird. Zusätzlich können die Tags <ID>, <ID2>, <ID3> und <STRINGID> verwendet werden, die jeweils durch die entsprechenden Teile der Publikations-ID ersetzt werden. Die Ergebnisspalte preview hat folgenden Datentyp:
Default für ODBC select preview, pagestr from documentpreviews where id = ? Default für XML/SOAP "documentpreviews.xml" |
102 |
Hole die letzte verwendete Preview-ID. Die Anweisung wird benötigt, wenn neue Previews angelegt werden sollen (Button Default für ODBC select max (id) from documentpreviews where id > 0 Default für XML/SOAP "documentpreviews.xml" |
103 |
Anlegen eines neuen Previews für eine Publikation (Button Die Anweisung enthält fünf ?, die bei der Ausführung automatisch der Reihe nach durch folgende Werte ersetzt werden:
Default für ODBC insert into documentpreviews (ID, docid, page, pagestr, preview) values (?, ?, ?, ?, <LATIN1> ?) Default für XML/SOAP : "documentpreviews.xml" |
104 |
Lösche alle Previews einer Publikation (Button In der Anweisung muß ein ? enthalten sein, das automatisch durch die ID1 der Publikation ersetzt wird. Zusätzlich können die Tags <ID>, <ID2>, <ID3> und <STRINGID> verwendet werden, die jeweils durch die entsprechenden Teile der Publikations-ID ersetzt werden. Default für ODBC delete from documentpreviews where docid = ? Default für XML/SOAP "documentpreviews.xml" |
105 |
Füllen Sie das große Info-Feld der Palette mit beliebigem Text. In der Anweisung muß ein ? enthalten sein, das automatisch durch die ID1 der Publikation ersetzt wird. Zusätzlich können die für die Listeneinträge definierten Tags und die Tags <ID>, <ID2>, <ID3> und <STRINGID> verwendet werden. Default für ODBC select info || to_char (chr (10)) || info2 || to_char (chr (10)) || info3 from documents, dual where id = ? Default für XML/SOAP "documentpreviews.xml" |
Eine Zeile der Publikationen-Liste enthält die folgenden Informationen:
Die gelben Zahlen entsprechen den Ergebnisspalten nach der ObjektID der Panelstatements 36 (XML) bzw. 37 (ODBC), mit denen die Listeneinträge geladen werden.
In den Publikationsinfos werden die folgenden Werte angezeigt:
Die gelben Zahlen entsprechen den Ergebnisspalten nach der ObjektID der Panelstatements 36 (XML) bzw. 37 (ODBC), mit denen die Listeneinträge geladen werden. Zum Laden der Previews und des Beschreibungstextes rechts neben dem Preview verwenden Sie die Panelstatements 100-105.
Für XML-Daten können Sie die folgenden Anweisungen verwenden. Beispiele für Datendateien, die zu diesen Standardanweisungen passen, finden Sie hier.
Panelstatement 36 unter XML
<panelstatement> <id>36</id> <usage></usage> <domain></domain> <statement> "documents.xml" select id, 0, 0, "" <!-- ID des Eintrages --> name, <!-- (1) --> info, <!-- (2) --> "in Bearbeitung", <!-- (3) --> info2, <!-- (4) --> info3, <!-- (5) --> domainname, <!-- (6) --> title, <!-- (7) --> path, <!-- (8) --> url, <!-- (9) Nur Mac OSX, unter Windows ignoriert! --> canoverrideurl, <!-- (10) --> canoverridelocal, <!-- (11) 0 oder 1, wird der Wert mit 2 addiert, wird das Downloadbutton ausgeblendet --> subStatementID, <!-- (13) optional Untereinträge laden --> iconID <!-- (13) optional Icon des Eintrages, siehe unten --> node documents.document where id > ? and (domainid = ? or 0 = ?) $1 $2 $3 <!-- Suchparameter, siehe unten --> </statement> <in_parameters></in_parameters> <out_parameters></out_parameters> <description></description> </panelstatement>
Unter SOAP wird zur Suche und Laden der Listeneinträge "getList" aufgerufen, ein passendes Panelstatement (36) kann wie hier gezeigt aussehen. Ab R1145 (Februar 2009) kann für die Suche auch "normaler" XML-Query wie unter XML verwendet werden (siehe oben).
Ab R1145 (Feb. 2009) kann das Panelstatement 36 auch unter SOAP ein "normales" XML-Query enthalten. Es gehen also beide Anweisungsformen, getList und XML-Query, die Unterscheidung wird dadurch getroffen, ob der erste Begriff ein String in Anführungszeichen (Datei für den XML-Query) ist oder nicht (SOAP-Call).
Panelstatement 36 unter SOAP
getlist sql SELECT id, 0, 0, "", -- id1 ., sgtringID 3 name, status, docinfo, market, info1, info2, domain, path, url, canoverrideurl, canoverridelocal, IF( hasChildren >0, 20000, 0), -- subtree 2007 -- icon id FROM `publication` WHERE parent =0
Panelstatement 37 unter XML und SOAP
<!-- Die Anweisung wird nicht benötigt -->
Panelstatement 38 unter XML und SOAP
<panelstatement> <id>38</id> <usage></usage> <domain>Lade die Bereiche fuer Publikationen </domain> <statement> "documents.xml" select domainid, domainname node documents.document </statement> <in_parameters></in_parameters> <out_parameters></out_parameters> <description></description> </panelstatement>
Im folgenden sind Beispiele für korrekte Panelstatements für SQL, mit denen die Palette gefüllt werden kann.
Wenn Sie eigene Panelstatements verwenden möchten, achten Sie insbesondere darauf, dass Anzahl und Datentyp der ? in den Anweisungen stimmt.
Panelstatements 36 unter SQL
rem rem 36 : Laden der Listen-IDs rem delete from PanelStatements where ID = 36; insert into PanelStatements values ( 36, '', 'Lade die IDs der Liste der Dokumente', 'select ID, 0, 0,"" from Documents where ID > ? -- Wird durch 0 ersetzt (also int) and (DomainID = ? or 0 = ?) -- ID des ausgewählten Bereiches (int) and rownum < ? -- Wird durch 400 ersetzt (also int) and platform = ? -- 1 (Windows), 2 (Mac) $1 $2 $3', -- Suchparameter, siehe unten '', '');
Panelstatement 37 unter SQL
rem rem 37 : Laden der Listen-Einträge rem delete from PanelStatements where ID = 37; insert into PanelStatements values ( 37, '', 'Lade ein Dokument in die Liste', 'select d.name, -- (1) ''Marktname'', -- (2) ''Status'', -- (3) ''Auftragsinfo 1'', -- (4) ''Auftragsinfo 2'', -- (5) p.name, -- (6) ''Dokumentinfo'', -- (7) d.path, -- (8) d.url, -- (9) d.canOverrideURL, -- (10) 0 oder 1 d.canOverrideLocal, -- (11) 0 oder 1, wird der Wert mit 2 addiert, wird das Downloadbutton ausgeblendet subStatementID, -- (12) optional Untereinträge laden iconID -- (13) optional Icon des Einrages from documents d, domain p where d.id = ? -- ID des Dokumentes and p.id = d.domainid', '', '');
Panelstatements 38 unter SQL
rem rem 38 : Laden der Bereiche rem delete from PanelStatements where ID = 38; insert into PanelStatements values ( 38, '', 'Alle Domains laden', 'select distinct (d.id), d.name from domain d, userxdomain x where d.ID > 0 and (x.userid=? or 0=?) -- BenutzerID (int) and d.id = x.domainid', '', ''); commit;
Ab R678 werden in den Statements 36 und den Statements zum Laden der Untereinträge durchgängig StringIDs unterstützt. Die Datei panelstatements.xml bzw. die Tabelle panelstatements müssen hierfür ebenfalls StringIDs unterstützen:
<panelstatement> <id>36</id> <usage></usage> <domain>Lade die Dokumente gemäss den Sucheingaben in der Palette </domain> <statement> ... </statement> <in_parameters></in_parameters> <out_parameters></out_parameters> <description></description> <hasstringids>1</hasstringids> </panelstatement>
Die Reihenfolge der Rückgabespalten ändert sich dadurch wie folgt:
Als 4. Wert (nach den drei numerischen IDs) wird die StringID erwartet, alle folgenden Spaltenindexe erhöhen sich um 1.
Zusätzlich zu den palettenspezifischen Standardtags sind für die Palette eine Reihe von eigenen Tags definiert, mit denen auf die Werte von Publikationen zugegriffen werden kann. In der Skriptsprache werden dieselben Namen verwendet, um auf Werte von Publikationen zugreifen zu können. Die folgende Tabelle gibt die in der Palette Publikationen definierten Sonder-Tags an. Die Tags werden wie gewohnt als <TagName> in die Anweisungen eingetragen und zur Ausführzeit durch ihre aktuellen Werte ersetzt. Stringwerte werden dabei automatisch in Anführungszeichen gesetzt. Anführungszeichen in den Werten werden plattformabhängig maskiert. In den Tagnamen wird zwischen Groß- und Kleinschreibung unterschieden.
Tag | Typ | Beschreibung | |
ID, ID2, ID3 | int | IDs der Publikation | |
StringID, STRINGID | String | Leerstring, StringID wird nicht gequoted. | |
depth, level, Level | int | Ebene (0-basiert) | |
Name | String | Wert der Spalte (siehe rechts) in der Ladeanweisung 36 (XML) bzw. 37 (ODBC)
URL-Pfade werden bisher nur unter Mac OSX unterstützt. Unter Windows wird die URL-Angabe ignoriert. |
1 |
Status, State | 2 | ||
DokumentInfo, DocumentInfo | 3 | ||
Markt, Market | 4 | ||
AuftragsInfo1, Info1 | 5 | ||
AuftragsInfo2, Info2 | 6 | ||
Bereich, Domain | 7 | ||
Pfad, Path | 8 | ||
URL | 9 | ||
CanOverrideURL | int | 10 | |
CanOverrideLocal | 11 | ||
SubStatementID | 12 | ||
IconID | 13 | ||
Exists | int | Existiert die Datei Pfad/Name? | |
DoubleClickID | ID des Doppelklick-Skriptes |
Um in Treeviews auf Werte von Elterneinträgen zugreifen zu können, können den einzelnen Tags ein oder mehrere "parent." vorangestellt werden. Ist die entsprechende Vorgänger-Generation nicht verfügbar, werden diese Einträge durch Leerstring bzw. 0 ersetzt.
Name der Großeltern. Bei Einträgen der Ebene 0 und 1 ist der Wert des Tags leer ('').
<parent.parent.Name>
Die Werte von Tags mit Strings werden automatisch in einfache Anführungszeichen gesetzt. Einfache Anführungszeichen im String werden verdoppelt. Um dieses Verhalten zu vermeiden, können Tags mit Stringwerten mit den Präfixen versehen werden.
Der alte Bezeichner StringID (in dieser Schreibweise) wird nicht in Anführungszeichen gesetzt.
Prefix | Beschreibung | Beispiel | abc'def ergibt |
ohne | einfache Anführungszeichen im Strings werden verdoppelt, der String wird in einfache Anführungszeichen gesetzt | <Markt> | 'abc''def' |
Unquoted_ | einfache Anführungszeichen im Strings werden verdoppelt | <Unquoted_Markt> <parent.parent.Unquoted_Markt> |
abc''def |
Content_ | Wert unverändert übernehmen | <Content_StringID> <parent.parent.Content_Markt> |
abc'def |
Diese Strings produzieren mit Sicherheit Fehler und werden nicht unterstützt | 'abc'def' |
Bitte beachten Sie, dass die Angaben Unquoted_ und Content_ immer vor dem letzten Wort des Tags angegeben werden!
Die Einträge der Palette können in Treeviews gezeigt werden. Dazu müssen die Anweisungen zum Laden der Liste (36 für SOAP und XML, 37 für SQL) die Parameter subStatementID und iconID haben. Hat ein Eintrag Untereinträge, verweist subStatementID auf ein Panelstatement zum Laden dieser Einträge. Hat ein Eintrag keine weiteren Untereinträge, ist subStatementID leer (=0). Die IconID gibt an, welches Icon vor dem Eintrag in der Palette gezeigt werden soll.
Die Parameter sind optional, aber es gilt : Alle beide oder keins.
Die subStatementID verweist auf ein Panelstatement, mit dem die Untereinträge einet Publikation geladen werden sollen oder ist 0. Als ID wählen Sie eine freie Zahl größer 10.000 in panelstatements[.xml]. Diese Anweisung gibt jeweils die drei IDs der Untereinträge zurück. Hinter den drei IDs folgen die selben Parameter, wie in der übergeordneten Anweisung 36 für SOAP und XML bzw. 37 für SQL. Aber hier sind subStatementID und iconID nicht mehr optional. Haben Sie das Ende des Baumes erreicht, bekommt subStatementID den Wert 0 sonst bekommt es eine weitere freie Panelstatement-ID.
Panelstatement 10000+x zum Laden von Untereinträgen unter SQL. Das Anweisung lädt die Publikation noch einmal als Untereintrag von sich selbst, usw..
rem rem 10200 : Laden der Listen-Einträge rem delete from PanelStatements where ID = 10200; insert into PanelStatements values ( 10200, '', 'Lade ein Dokument in die Liste', 'select id, 0, 0, d.name, -- (1) ''Marktname'', -- (2) ''Status'', -- (3) ''Auftragsinfo 1'', -- (4) ''Auftragsinfo 2'', -- (5) p.name, -- (6) ''Dokumentinfo'', -- (7) d.path, -- (8) d.url, -- (9) d.canOverrideURL, -- (10) Nur Mac OSX, unter Windows ignoriert! d.canOverrideLocal, -- (11) 10200, -- (12) 2012 -- (13) from documents d, domain p where d.id = <parent.ID>', '', '');
Panelstatement 10000+x zum Laden von Untereinträgen unter XML und SOAP. Das Anweisung lädt die Publikation noch einaml als Untertrag von sich selbst, usw..
<panelstatement> <id>102000</id> <usage>Dokumentuntereintraege laden</usage> <domain></domain> <statement> "documents.xml" select id, 0, 0, name, <!-- (1) --> title, <!-- (2) --> info2, <!-- (3) --> info3, <!-- (4) --> "", <!-- (5) --> "", <!-- (6) --> domainname, <!-- (7) --> path, <!-- (8) --> url, <!-- (9) Nur Mac OSX, unter Windows ignoriert! --> canoverrideurl, <!-- (10) --> canoverridelocal, <!-- (11) --> 10200, <!-- (12) --> 2012 <!-- (13) --> node documents.document where id = <parent.ID> </statement> <in_parameters>int</in_parameters> <out_parameters>string</out_parameters> <description></description> <hasstringids>0</hasstringids> </panelstatement>
In den Publikationen können alle definierten Comet-Icons verwendet werden.
Nachdem Sie die nötigen Paletteninstallationen gemacht haben, können Sie die Suche nach ihren Bedürfnissen anpassen.
Wird die Suche ausgelöst (), werden die Menüs wie folgt ausgewertet :
Kompliziert? Hier ein Beispiel für das erste Menü:
Im ersten Schritt definieren wir ein Menü. (Die Einträge des Menüs werden im zweiten Schritt definiert.). In der aktuellen Version sind für ein Menü nur die ID, der Schlüssel und der Defaultwert wichtig. Der Defaultwert gibt an, welcher Eintrag des Menüs beim Programmstart ausgewählt werden soll. Zählen Sie dazu einfach die Menüeinträge durch (Sortierreihenfolge ist deren Sequenznr..)
insert into ConditionMenues ( ID, Description, Label, Keyword, DefaultSelection) values ( 1, 'Suchkriterium 1 der Palette "Dokumente"', '', '$1', -- Ersetze $1 im Panelstatement 36 6); -- 6. Menüeintrag zu Beginn ausgewählt
Jetzt legen Sie im zweiten Schritt die einzelnen Menüeinträge fest. Geben Sie jedem Eintrag eine eindeutige ID, einen Name (der in der Palette zu sehen ist), einen Suchwert und den Datentyp an. Die Angabe ReplaceByValue wird zur Zeit nicht ausgewertet. Hier der erste Eintrag:
insert into Conditions ( ID, ConditionMenueID, SequenceNr, Label, Value, TypeID, ReplaceByValue) values ( 1, 1, -- Eintrag des Menüs mit der ID 1 1, 'Auftragsnummer', 'and (upper(name) like ? || ''%'' or '''' = ?)', 3, -- 1=int, 2=float, 3=String 0);
Die Einträge der Liste können auf Doppelklicks reagieren. Die selbe Aktion, die nach dem Doppelklick einer Zeile ausgeführt wird, wird auch nach erfolgreichem Download/Öffnen () des Eintrages ausgeführt. Beide Situationen können dadurch unterschieden werden, dass nach Doppelklick das globale Skriptdokument nicht gesetzt ist :
if (document::is_valid (gDocument)) { // Download/Open } else { // Doppelklick }
Die auszuführende Aktion wird wie folgt definiert :
Hier einige Beispiele von gültigen Panelstatements mit denen die Doppelklick-ID definiert werden kann.
Jede Schachtlungstiefe hat ein eigenes Doppelklickskript (SQL)
select 900+<depth> from dual;
Jede Schachtlungstiefe hat ein eigenes Doppelklickskript (XML). Statt dual verwenden Sie eine beliebige (aber existierende) XML-Datei.
"datafiles.xml" select 900+<depth>
Diese Doppelklickaktion hat am Wochenende Pause
select IF(<dayOfWeek><5,1,0) from dual
Drei Fragezeichen dürfen im Statement enthalten sein, sie werden durch die aktuelle ID der Publikation ersetzt. Die folgenden beiden Anweisungen sind identisch
select id%3 from ... where ID = ? select id%3 from ... where ID = <ID> -- Die ? sind optional
Hier ein einfaches Doppelklick-Skript. Es zeigt ein paar Infos über die aktuell geklickte Zeile. Wurde das Skript durch einen Doppelklick ausgelöst, wird es danach verlassen. Wurde das Skript über ein Download/Öffnen-Button ausgelöst, wird jetzt die Document-ID1 um 1 hochgezählt.
int main () { int id = 0; showmessage ("Row %d : %d (%s of %s of %s)", gClicked+1, gRecordID, "<Name>", "<DokumentInfo>", "<parent.DokumentInfo>"); // Finish script in case of a double click // if (!document::is_valid (gDocument)) return 0; document::getid (gDocument, &id); showmessage ("Document-ID = %d", id); document::setid (gDocument, id+1); return 0; }
Ab R1818 v3.1 unterstützt das Panel einige weitere Panelstatements und Mechanismen zur Verwaltung des Dokumentstatus. Der Hauptanwendungsfall ist die Integration der Desktop-Plugins in eine priint:cometserver-Umgebung. Die Erweiterungen können aber auch für andere ODBC- und SOAP-Verbindungen verwendet werden.
Die Erweiterungen werden aktiviert, wenn das Panelstatement 114 (Dokumentstatus) definiert und nicht leer ist.
Die Verbindung zum priint:cometserver wird hergestellt, wenn das Panelstatement 110 (Verbindungsdaten) definiert und nicht leer ist.
ClassID | ID | Description |
9 | 110 | Verbindungsdaten für priint:cometserver laden |
111 | Auschecken | |
112 | Nach Sichern | |
113 | Vor dem Schließen | |
114 | Dokumentstatus ermitteln | |
115 | Einchecken eines zuvor ausgecheckten Dokumentes | |
116 | Nach Schließen | |
117 | Freigabe eines Dokumentes | |
125 | Nach Auschecken / Öffnen | |
135 | Optionen für die Generierung der Metadaten | |
136 | Welche Metadatendateien sollen erzeugt werden? |
Panelstatement 110: Laden der Verbindungsdaten für priint:cometserver. Folgende Rückgabewerte (in dieser Reihefolge) werden erwartet:
In der 6. Spalte (serverendpoint ) kann für InDesign® Server definiert ein alternativer Endpunkt werden. Grund ist, dass der InDesign® Server in der Regel in einer anderen Netzwerkumgebung läuft und über eine interne Adresse/IP auf den priint:cometserver zugreifen muß.
Die folgenden Platzhalter in der Anweisung werden durch die Einstellungen der aktuellen Datenverbindung ersetzt:
Hier ist ein Beispiel.
SELECT 'http://demo.priint.com/CometServerSOAP/CometPriintService', '<user>', '<password>', '<client>', '<language>'
Panelstatement 111 : Auschecken eines Dokumentes. Die Anweisung muß als cScript implementiert sein. Bitte beachten Sie auch die Hinweise zur Skriptumgebung weiter unten.
Das Skript wird vor dem Öffnen des Dokuments ausgeführt und soll die dafür notwendigen Vorbereitungen treffen (Setzen von Zuständen, Herunterladen von Daten, etc..). Wenn das Skript irgendetwas != 0 zurückgibt, wird das Freigabe-Skript (panelstatement 117) aufgerufen (falls es definiert ist) und kein lokaler Status gespeichert.
int main () { char * path = alloc (4096); // Request the document from the server. // priint::checkout requires an established connection to a priint:cometserver. // The document may not be available locally and has to be downlaoded via SOAP. // After successful checkout, the return variable path contains the real path to // the document - either the original on a file server, or a temporary working // copy in the local file system. // int result = priint::checkout ("<Content_StringID>", path); if (result == 0) { strcpy (gDocumentPath, path); } else { wlog ("", "checkout <Name> (<StringID>) failed with result code %d\n", result); } release (path); return result; }
Mit Panelstatement 111 wird das "normale" Verhalten (automatischer Download, Duplizieren von Modelldokumenten etc.) deaktiviert. Unabhängig davon wird das Doppelklick-Skript nach erfolgreicher Skriptausführung oder Öffnen des Dokuments ausgeführt.
Panelstatement 112: Skript nach dem Sichern eines ausgebuchten Dokumentes. Die Anweisung muß als cScript implementiert sein. Bitte beachten Sie auch die Hinweise zur Skriptumgebung weiter unten.
Dieses Skript wird nach dem Speichern eines über die Publikations-Palette geöffneten Dokuments ausgeführt. Sie können (unabhängig von der Sichtbarkeit des Dokumentes beim Speichern) die gleichen Tags wie in einem Doppelklick-Skript verwenden. Wenn Sie auf das Schließen von Dokumentes nicht reagieren müssen, können Sie diese Panelstatement leer oder undefiniert lassen.
Hier ist ein Beispiel.
int main () { wtlog ("", "Still working on <Content_Name> (<Content_StringID>) ...\n"); return 0; }
Panelstatement 113: Skript vor dem Schließen eines Dokumentes. Die Anweisung muß als cScript implementiert sein. Bitte beachten Sie auch die Hinweise zur Skriptumgebung weiter unten.
Dieses Skript wird ausgeführt, bevor ein über die Publikations-Palette geöffnetes Dokument geschlossen wird. Sie können (unabhängig von der Sichtbarkeit des Dokumentes beim Speichern) die gleichen Tags wie in einem Doppelklick-Skript verwenden. Wenn Sie auf das Schließen von Dokumentes nicht reagieren müssen, können Sie diese Panelstatement leer oder undefiniert lassen.
Hier ist ein Beispiel.
int main () { // This script uploads the document's meta data // to the server before closing (Spreads, Groups, Placeholders, Notes ...) // Note that this may not be the ideal place to do this - a more sensible // approach may be doing so in panelstatenebt 115 (on explicit checkin) // return priint::upload_metadata ("<Content_StringID>", gDocumentPath); }
Bitte beachten Sie: Das Panelstatement 113 wird auch ausgeführt, wenn ein Publikationsdokument durch Einchecken geschlossen wird (durch das Einchecken-Button, einen Menübefehl oder einen Aufruf der Funktion priint:call_checkin) - es sei denn, priint::call_checkin wurde aus dem Skript selbst aufgerufen.
Mit dem folgenden Beispiel können Dokumente beim Schließen automatisch eingecheckt werden:
int main () { return priint::call_checkin ("<Content_StringID>", gDocumentPath); }
Panelstatement 114: Status Script. Die Anweisung muß als cScript implementiert sein. Bitte beachten Sie auch die Hinweise zur Skriptumgebung weiter unten.
Dieses Skript wird für jede Zeile der Publikationspalette ausgeführt, das einen "Checkout/In"-Button hat und ermittelt den aktuellen Status des Publikationsdokumentes. Der berechnete Status muß an die globale Variable gDocumentStatus übergeben werden. Folgende in "internal/types.h" definierte, Werte sind erlaubt:
Hier ist ein Beispiel.
int main ()
{
int status = priint::document_status ("<Content_StringID>");
if (status >= 0)
{
*gDocumentStatus = status;
}
else
{
wlog ("", "document <Name> (<Content_StringID>) status could not be obtained: %d\n", status);
return -1;
}
return 0;
}
Panelstatement 115: Checkin Skript. Die Anweisung muß als cScript implementiert sein. Bitte beachten Sie auch die Hinweise zur Skriptumgebung weiter unten.
Das Skript wird ausgeführt, wenn die das Einchecken-Button des Dokumentes angeklickt oder der Menüeintrag "Alle Dokumente einchecken" ausgewählt wird. Bei Erfolg wird das Dokument, falls es geöffnet war, geschlossen.
Hier ist ein Beispiel.
int main () { int result = priint::checkin ("<Content_StringID>", gDocumentPath); if (result != 0) { wlog ("", "checkin <Name> (<Content_StringID>) failed with result %d\n", result); } return result; }
Panelstatement 116: After Close Skript. Die Anweisung muß als cScript implementiert sein. Bitte beachten Sie auch die Hinweise zur Skriptumgebung weiter unten.
Das Script wird ausgeführt, nachdem ein Publikationsdokument geschlossen wurde.
Hier ist ein Beispiel.
int main () { int result = priint::checkin ("<Content_StringID>", gDocumentPath); if (result != 0) { wlog ("", "checkin <Name> (<Content_StringID>) failed with result %d\n", result); } return result; }
Panelstatement 117: Freigaben eines Dokumentes ohne Zurückschreiben. Die Anweisung muß als cScript implementiert sein. Bitte beachten Sie auch die Hinweise zur Skriptumgebung weiter unten.
Dieses Skript wird ausgeführt, wenn das Ausbuchen fehlschlägt (Panelstatement 111), das Menü Dokument freigeben oder Alle ausgebuchten Dokumente freigeben gewählt wurde, oder das Einbuchen-Button mit SHIFT + ALT geklickt wurde.
Hier ist ein Beispiel.
int main () { int result = priint::revert ("<Content_StringID>", gDocumentPath); if (result != 0) { wlog ("", "revert <Name> (<Content_StringID>) failed with result %d\n", result); } return result; }Panelstatement 125: Skript nach dem Ausbuchen eines Publikationsdokumentes. Die Anweisung muß als cScript implementiert sein. Bitte beachten Sie auch die Hinweise zur Skriptumgebung weiter unten.
Dieses Skript wird nach erfolgreichem Checkout oder nach dem (erstmaligen) Öffnen eines Publikationsdokuments ausgeführt. Der Zugriff auf das Dokument erfolgt über die globale Variable gDocument. In der Regel setzt dieses Skript dokumentenspezifische Attribute.
Hier ist ein Beispiel.
int main () { int result = xml::set_document_attribute(gDocument, "documentId", gDocumentID); return result; }
Panelstatement 135: Optionen zum Anlegen der Metadaten des Publikationsdokumentes. Die Anweisung muß ein SQL- bzw. SOAP-Statements sein. Ist dieses Panelstatement leer oder nicht definiert, wird die Standardeinstellung (content:none;svg:bbox;) (oder ein zuvor an priint::checkin als Parameter übergebener Wert) verwendet.
Mit diesen Optionen wird das Ausgabeformat an die projektspezifischen Anforderungen angepasst, ohne dass der Aufruf der Funktion priint::checkin (normalerweise in Panelstatement 115 zu finden) geändert werden muss (siehe Optionen).
SOAP-Anweisung zur Erzeugung von "reinem" TaggedText-Inhalt ohne SVG-Koordinaten:
BOUNCE 'content:raw;svg:none;'
Panelstatement 136: Meta data files to be generated. Die Anweisung muß ein SQL- bzw. SOAP-Statements sein. ist die Anweisung leer oder undefiniert, wird ein Metadatensatz in Abhängigkeit vom Parameter env der der Funktion priint::checkin erzeugt:
Als Rückgabewert wird eine Liste aller gewünschten Dateien erwartet. Die gültigen Werte (case insensitiven) sind
Hier ist ein Beispiel.
SELECT formatname FROM metadataformat WHERE active = 1;
In Publikationsskripten sind eine Reihe von globalen Variablen verfügbar:
// Index of the current record in the current list on the panel // int gClicked; // ID of the record // int gRecordID; // ID2 and 3 of the record // int gRecordID2; int gRecordID3; // StringID1, 2, 3 of the record // char gRecordStringID[]; char gRecordStringID1[]; char gRecordStringID2[]; char gRecordStringID3[]; // Save path of the document, may differ from the path provided by the server, if the // document had to be downloaded. In Panelstatement 111 the actual path (e.g. provided // by the command priint::checkout) has to be copied into this variable // char * gDocumentPath; // Status of the document. In Panelstatement 114, this variable has to be set to the correct value // int * gDocumentStatus; // Path or ID of the document template // char gMasterDoc []; // documentID (see below). This variable is not available in the checkout script // (Panelstatement 111), because it is not yet known, which value will be used as documentID! // char gDocumentID[];
TDie für das Einchecken und Auschecken relevanten Befehle werden im Modul priint von cScript beschrieben.
Der Status der ausgecheckten Dokumente wird lokal in einer XML-Datei gespeichert. Diese Datei befindet sich in den WERK II-Voreinstellungen und heißt checkout.xml. Bei der Anzeige des Publikationsbaums werden die Zustände erneut vom Server oder der Datenbank abgefragt und aktualisiert.
Mit dem Menübefehl Lokalen Status löschen können Sie den Status der aktuellen Verbindung löschen. Sie sollten diese Daten nur in Notfällen manuell ändern (durch Bearbeiten oder Löschen der XML-Datei).
Der von den meisten priint-Befehlen geforderte Parameter documentID ist ein Schlüssel, mit dem - zusammen mit dem aktuellen Mandant - priint:cometserver eine Dateiressource eindeutig und unabhängig von der Publikationsverwaltung identifizieren kann. Die Publikationsverwaltung muss sicherstellen, dass die Zuordnung von Publikationsdatensätzen zu documentIDs möglich ist. Der Einfachheit halber wird in den Beispielen immer davon ausgegangen, dass die StringID eines Publikationsdatensatzes der documentID auf dem priint:cometserver entspricht.
Um ein Dokument auf dem priint:cometserver nutzbar zu machen, muss das Dokument hochgeladen oder mit der entsprechenden documentID registriert werden. Das Dokumeent muss zu diesem Zeitpunkt noch nicht existieren (z.B. wenn Sie später aus einem Musterdokument ein neues Dokument erzeugen wollen). Genauere Informationen hierzu finden Sie in der priint:cometserver-Dokumentation. To make a document / file on the priint:cometserver usable, it has to be uploaded or registeres with the respective documentID. It does not have to exist at this point in time (e.g. if you want to generate a new document from a model document later). You can find more specific information about this in the priint:cometserver documentation.
[Seit v5.0 36660] Durch Klicken des Buttons
links unten in der Palette können Sie alle ausgewählten Dokumente der Palette bearbeiten lassen.
NUR in priint:suite PubServer-Verbindungen, XML-Offline und ODBC/SQL-Datenverbindungen! In anderen Datenverbindugen inkl. kunden-implementierter SOAP-Verbindugnen kann das Verfahren nicht unterstützt werden. Verwenden Sie hier zum Sammeln der Dokumente ein Skript analog dem Besipiel aus publication::get_subnodes und die Funktionen des Moduls jobs.
Natürlich können Sie die ausgewählten Dokumente in und unterhalb der Auswahl der Publikationspalette auch per Skript sammeln. Ein Beispiel dazu finden Sie hier. Aber wenn Sie dann loslegen und alle Dokumente bearbeiten wollen, werden Sie sehr schnell bemerken, dass diesem Verfahren enge Grenzen gesetzt sind: InDesign® wird nämlich alle Dokumente, die Sie sorgfältig geschlossen und wieder eingebucht haben, bis zum Skriptende (zur nächsten sog. Idle Time) weiter im Arbeitsspeicher behalten. Und dagegen ist leider kein Kraut gewachsen - außer man startet die Bearbeitung überhaupt erst während einer Idle Time-Phase. Und genau das tut die Warteschlangen-Bearbeitung.
Dafür werden zuerst die DocumentIDs aller ausgewählten Dokumente und aller Dokumente aller ausgewählten Publikationen gesammelt. Danach werden Sie nach einer Funktion zum Bearbeiten der Dokumente gefragt. Folgende Skript-Quellen sind möglich:
Mit gehaltener SHIFT-Taste wird das Skript zum Anlegen der Warteschlange in die Zwischenablage kopiert (und nicht gestartet).
Was mit den Dokumenten gemacht wird, hängt vollständig von der Implementierung des ausgewählten Skriptes ab. In aller Regel werden diese Skripte aber die ausgewählten Dokumente ausbuchen, bearbeiten, sichern und wieder einbuchen. Eine vollständige Beschreibung der Warteschlangen-Skripte und ihr Verhalten finden Sie hier.
Zur Installation der für die Dokumente-Palette nötigen Tabellen und Daten öffnen sie bitte den Installationsordner und führen der Reihe nach die folgenden Dateien in einem SQL-Programm aus :
@'Daten/Documents/00_Condition.sql' @'Daten/Documents/01_Documents.sql' @'Daten/Documents/02_Documents_PanelStatements.sql'
Wollen Sie auch eine Standardversion der konfigurierbaren Suche haben, führen Sie auch die restlichen SQL-Dateien aus.
Beispiele für Konfiguration der Checkin / Checkout Erweiterungen siehe oben.