[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Monatsseite automatisch generieren - InDesign CS5, Windows, JS

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

Martin Fischer
  
Beiträge gesamt: 12783

7. Jul 2011, 12:49
Beitrag # 16 von 41
Beitrag ID: #475393
Bewertung:
(4641 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die Bezeichnung Deines XML-Attributs, Rubrik[@Vom], ist etwas seltsam. Das XML-Element Rubrik hat die Attribute Typ und Vom.

Außerdem meinst Du wahrscheinlich substr() statt substring().
(Das verwechsle ich auch ständig; weiß jemand eine Eselsbrücke?)

Versuch mal das:

Code
var _dok = app.activeDocument;  
var _root = _dok.xmlElements[0];
var Jahr = _root.xmlElements[0].xmlElements[0].xmlAttributes.itemByName('Vom').value.substr(6, 4);
var Monat = _root.xmlElements[0].xmlElements[0].xmlAttributes.itemByName("Vom").value.substr(3, 2);
alert(Monat + " " + Jahr)



als Antwort auf: [#475371]
X

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

JonesRidder
Beiträge gesamt: 85

7. Jul 2011, 15:23
Beitrag # 17 von 41
Beitrag ID: #475437
Bewertung:
(4622 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Attributproblem gelöst (das seltsame @ kommt von evaluateXPathExpression) - aber das Attributproblem ist gelöst.

Andere Frage:
Beim ausführen des folgenden Code werden im alert (ganz unten im Code) in die Variable "jetzt" die Daten für den 1.1.2011 abgelegt - es soll aber ausgehend vom 09.07.2011 der 1.9.2011 abgelegt werden (siehe Code, vgl. Dritt- und Viertletzte zeile).
Was läuft da schief?
Code
var Datum = _artikel.xmlElements[0].xmlAttributes.itemByName('EventVon').value; // hier steht z.B. drin: "09.07.2011" 
//Datum in Jahr, Monat, Tag splitten
var Jahr = Datum.substring(6, 10);
var Monat = Datum.substring(3, 5);
var Tag = Datum.substring(0, 2);
//Datum des ersten im Monat
var jetzt = new Date(Jahr,Monat,1); //Da werden unten im letzten alert die Daten vom 1. Januar 2011 ausgegeben - FALSCH also
//var jetzt = new Date(2011,9,1); //Da werden unten im letzten alert die Daten vom 1. September 2011 ausgegeben - so wäre es richtig
//Letzter alert:
alert("Jahr: " + Jahr + "\nMonat" + Monat + "\nTag: " + Tag + "\njetzt = " + jetzt);


Gruß
J.R.


als Antwort auf: [#475393]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

WernerPerplies
Beiträge gesamt: 2762

7. Jul 2011, 16:41
Beitrag # 18 von 41
Beitrag ID: #475457
Bewertung:
(4601 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
var germanDate = "09.07.2011"; 
var year = germanDate.substr(6);
var month = germanDate.substr(3,2);
alert(new Date(parseInt(year), parseInt(month)-1, 1));


HTH


als Antwort auf: [#475437]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

WernerPerplies
Beiträge gesamt: 2762

7. Jul 2011, 20:16
Beitrag # 19 von 41
Beitrag ID: #475473
Bewertung:
(4571 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

Zitat //var jetzt = new Date(2011,9,1); //Da werden unten im letzten alert die Daten vom 1. September 2011 ausgegeben - so wäre es richtig

Hast Du einen anderen Interpreter?
Normalerweise beginnt die Monatszählung bei Javascript bei 0.

Bei mir wird deshalb
Sat Oct 01 2011 00:00:00 GMT+0200
angezeigt.


noch eine Ergänzungen:
Die Zerlegung des Datums sollte vielleicht besser so erfolgen, dann spielen fehlende Vornullen keine Rolle:
Code
var dayMonthYear = "1.12.2011".split("."); 
alert(new Date(parseInt(dayMonthYear[2]), parseInt(dayMonthYear[1])-1,1));
// und den letzten Tag des Vormonats kann man auch so bestimmen:
alert(new Date(parseInt(dayMonthYear[2]), parseInt(dayMonthYear[1])-1));
// und auch so etwas geht:
alert(new Date(parseInt(dayMonthYear[2]), parseInt(dayMonthYear[1])-1,-10));
alert(new Date(parseInt(dayMonthYear[2]), parseInt(dayMonthYear[1])-1,123));



als Antwort auf: [#475457]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

JonesRidder
Beiträge gesamt: 85

8. Jul 2011, 09:27
Beitrag # 20 von 41
Beitrag ID: #475506
Bewertung:
(4537 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Antworten, klappt alles wunderbar!

Zum Abschluss möchte ich die Daten aus dem Array folgendermaßen ausgeben:
[XterTagImMonat] >> RECHTBÜNDIGER TABULATOR
gefolgt von
[Wochentage] >> LINKSBÜNDIGER TABULATOR (normales \t)
Code
 1  Di 
2 Mi
3 Do
...
10 Fr

Mein aktueller Code dazu:
Code
... 
var AusgabeTag = XterTagInMonat + "\t\t" + WochenTage[XterTagInWoche]; //Ausgabestring des Tags
...


Das erste "\t" muss durch einen rechtsbündigen Tabulator ersetzt werden (habe da irgendetwas von "~y" gelesen, aber es hat nicht funktioniert.

Hat jemand eine Idee?


als Antwort auf: [#475473]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

Martin Fischer
  
Beiträge gesamt: 12783

8. Jul 2011, 09:35
Beitrag # 21 von 41
Beitrag ID: #475509
Bewertung:
(4544 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Zeichen hört auf die Bezeichnung »SpecialCharacters.RIGHT_INDENT_TAB«.

Code
var AusgabeTag = XterTagInMonat + SpecialCharacters.RIGHT_INDENT_TAB + WochenTage[XterTagInWoche]; //Ausgabestring des Tags 



als Antwort auf: [#475506]
(Dieser Beitrag wurde von Martin Fischer am 8. Jul 2011, 09:36 geändert)

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

JonesRidder
Beiträge gesamt: 85

8. Jul 2011, 10:05
Beitrag # 22 von 41
Beitrag ID: #475515
Bewertung:
(4531 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für die Antwort!

... aber mit diesem SpecialCharacters.Right_INDENT_TAB verhaut er mir meine Tageszahlen:
Code
1 Do //Das 
1397909877 Do //wird zu dem (scheint das Value von Right_IDENT_TAB zu sein.


vor dem SpecialCharacters.Right_INDENT_TAB wurde es richtig ausgegeben (die Zahl) - irgendeine Idee woran das liegt?

Gruß
J.R.


als Antwort auf: [#475509]
(Dieser Beitrag wurde von JonesRidder am 8. Jul 2011, 10:10 geändert)

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

Martin Fischer
  
Beiträge gesamt: 12783

8. Jul 2011, 10:37
Beitrag # 23 von 41
Beitrag ID: #475526
Bewertung:
(4512 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah, offensichtlich wird der SpecialCharacters.RIGHT_INDENT_TAB durch die Stringoperation (Verknüpfung) in einen Enumerator 1397909876 verwandelt.

Ich habe im Moment keine Idee, wie man an den SpecialCharacters.RIGHT_INDENT_TAB als String, der sich mit anderen Strings verknüpfen lässt, herankommt.


als Antwort auf: [#475515]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

JonesRidder
Beiträge gesamt: 85

8. Jul 2011, 10:55
Beitrag # 24 von 41
Beitrag ID: #475532
Bewertung:
(4503 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Schade,

und was ist mit diesem "~y" soweit ich das verstanden habe, soll das ein Gegenstück zu "\t"

habe ich hier gelesen:
Auszug aus dem Buch
»Adobe InDesign CS3 - Das Nachschlagewerk für Fortgeschrittene«
von Gerald Singelmann

da steht bei Seite 71 oben unter "Sonderzeichen":
"InDesign hat eine Reihe eigener Sonderzeichen wie den Tabulator für Einzug rechts ((Shift)(Tab), ^y). Diese werden für grep in der Regel durch eine Tilde gekennzeichnet (da ^ schon reserviert ist), hier also ~y.

1. Kann man so etwas im Code schreiben (ich habs probiert, kann aber sein, dass meine Syntax falsch war).

2. Gehe ich die Sache vielleicht falsch an?
In der ID Vorlage gibt es ein Absatzformat für die zeilen des Kalenders, die die richtigen Tabs bereits enthalten (also Zahl rechtsbündig, Tab, Tage linksbündig). Kann ich dem zusammengesetzten String sagen, dass er sich an diesen Tabs irgendwie orientieren soll?

Gruß
J.R.


als Antwort auf: [#475526]
(Dieser Beitrag wurde von JonesRidder am 8. Jul 2011, 11:04 geändert)

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

Martin Fischer
  
Beiträge gesamt: 12783

8. Jul 2011, 11:03
Beitrag # 25 von 41
Beitrag ID: #475533
Bewertung:
(4495 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jones,

möglicherweise geht es über den Unicodewert des Zeichens – 0x8.
Versuch's mal damit.
Code
var AusgabeTag = XterTagInMonat + String.fromCharCode(8) + WochenTage[XterTagInWoche]; //Ausgabestring des Tags 


Aber selbst wenn dies funktionieren würde, so richtig befriedigend wäre das nicht.
Mich würde schon interessieren, wie man den SpecialCharacters.RIGHT_INDENT_TAB mit Strings kombinieren kann.


als Antwort auf: [#475532]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

JonesRidder
Beiträge gesamt: 85

8. Jul 2011, 11:05
Beitrag # 26 von 41
Beitrag ID: #475535
Bewertung:
(4494 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich werde es mal testen.

Wenn du das übersehen hast (habe letzten Post geändert während geantwortet wurde):

2. Gehe ich die Sache vielleicht falsch an?
In der ID Vorlage gibt es ein Absatzformat für die zeilen des Kalenders, die die richtigen Tabs bereits enthalten (also Zahl rechtsbündig, Tab, Tage linksbündig). Kann ich dem zusammengesetzten String sagen, dass er sich an diesen Tabs irgendwie orientieren soll?

Gruß
J.R.


als Antwort auf: [#475533]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

Martin Fischer
  
Beiträge gesamt: 12783

8. Jul 2011, 11:10
Beitrag # 27 von 41
Beitrag ID: #475537
Bewertung:
(4493 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Kann ich dem zusammengesetzten String sagen, dass er sich an diesen Tabs irgendwie orientieren soll?


Sicherstellen, dass der Absatz das entsprechende Absatzformat zugewiesen bekommt und keine lokalen Abweichungen enthalten sind.


als Antwort auf: [#475535]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

JonesRidder
Beiträge gesamt: 85

8. Jul 2011, 11:21
Beitrag # 28 von 41
Beitrag ID: #475539
Bewertung:
(4469 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das:
Code
var AusgabeTag = XterTagInMonat + String.fromCharCode(8) + WochenTage[XterTagInWoche]; 

bewrikt das (so siehts im Textrahmen aus):
Code
+---------------------------------+ 
| 1 Mo |
| 2 Di |
+---------------------------------+


Martin Fischer:
"Sicherstellen, dass der Absatz das entsprechende Absatzformat zugewiesen bekommt und keine lokalen Abweichungen enthalten sind. "

Es ist das richtige Absatzformat zugewiesen
Was meinst du mit lokale Abweicheungen?
Woher soll ID wissen, dass er nach der Zahl den tab setzen muss etc.?

gruß
J.R.


als Antwort auf: [#475533]
(Dieser Beitrag wurde von JonesRidder am 8. Jul 2011, 11:23 geändert)

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

WernerPerplies
Beiträge gesamt: 2762

8. Jul 2011, 11:34
Beitrag # 29 von 41
Beitrag ID: #475545
Bewertung:
(4464 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

eigentlich wollte ich mich ja zu diesem Teil des Themas nicht äußern, aber mich quält ;-) einfach die Frage, warum Du die Sache, wie von mir vorgeschlagen, nicht einfach templateorientiert gemacht hast?

Dann hättest Du vermutlich diese Probleme alle nicht.

Was sprach dagegen?


als Antwort auf: [#475532]

Monatsseite automatisch generieren - InDesign CS5, Windows, JS

Martin Fischer
  
Beiträge gesamt: 12783

8. Jul 2011, 12:19
Beitrag # 30 von 41
Beitrag ID: #475556
Bewertung:
(4436 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Woher soll ID wissen, dass er nach der Zahl den tab setzen muss etc.?


Indem Du dem String einen Tag \t mitgibst. ;-)
Die Ausrichtung des Tabs erfolgt dann laut Definition im Absatzformat (bzw. Absatzformatierung).


als Antwort auf: [#475539]
X