Kategorien
Adobe InDesign Script

Adobe InDesign Script – Sprache aller ParagraphStyles ändern

Mit diesem Skript kann man die Sprache aller Paragraph Styles einfach ändern und z.B. auf italienisch setzen:

#target InDesign
$.writeln ("Change Language");
var allParagraphStyles = app.activeDocument.paragraphStyles;
for (i=1; i<allParagraphStyles.length; i++)
{
    $.writeln (allParagraphStyles[i].appliedLanguage.name);
    allParagraphStyles[i].appliedLanguage = "Italian";
    $.writeln (allParagraphStyles[i].appliedLanguage.name);
}

 

Kategorien
Adobe InDesign Script Buch Empfehlungen

Adobe InDesign Scripten mit Javascript Tutorial

Adobe Indesign sowie Photoshop lassen sich mit Javascript plattformübergreifend auf MAC und PC skripten mit der Javascript Erweiterung ExtendScript von Adobe.

Über das Menü Fenster->Hilfsprogramme->Skripte werden die bereits mit gelieferten Skripte angezeigt. Eigene Skripte gehören in den Ordner Benutzer und haben die Endung .jsx. Um im Dateibrowser in das Verzeichnis zu gelangen, wo die Skripte zu finden sind, muss man einfach mit der rechten Maustaste auf das Skript und dann auf „Im Finder öffnen“ klicken, so gelangt man am einfachsten zu den sehr tief verstecktem Ordner. Dort kann man dann neue eigene Skripte anlegen.

Zum testen kann die Datei „changeLanguage.jsx“ im selben Ordner (bei mir /…/Library/Preferences/Adobe InDesign/Version 7.0/en_GB/Scripts/Scripts Panel) angelegt werden. Diese erscheint dann autotmatisch auch in InDesign.

Um die Dati zu bearbeiten, muss man einfach in InDesign rechter Maustaste auf die Datei und Skript bearbeiten auswählen und es öffnet sich der Editor/Light IDE von Adobe: ExtendScript Toolkit.

Wichtig ist, als erstes einzustellen, für welches Programm das Skript laufen soll, in unserem Fall: Adobe InDesign CS5 auswählen im Dropdown oben rechts.

Außerdem sollte die Autovervollständigung aktiviert werden: ExtendScript Toolkit->Voreinstellungen->Hilfe->Autom. Vervollständigung aktivieren.

Beispiel 1: Hallo Welt

Das Hallo Welt ist schnell geschrieben und beinhaltet vorher noch eine Direktive auf InDesign, damit klar ist, für welches Programm das Skript laufen soll:

#target InDesign
alert("Hallo Welt");

Das ganze kann mit F5 oder Apfel+R ausgeführt werden.

Debuggen lässt sehr gut mit der Funktion writln für Strings, die im Fenster Javascript-Konsole ausgegeben wird:

#target InDesign
//alert("Hallo Welt");
$.writeln ("Konsole log");

Ich hatte das Problem, dass Kommentare ausgeblendet wurde, das lag daran, dass die Schriftart für Kommentare nicht installiert war. Einfach Schriftart ändern: ExtendScript Toolkit->Voreinstellungen->Schriften und Farben:

  • alle Anzeigeelemente entkreuzen
  • Comment /**/ ->Schrift: Verdana auswählen
  • Comment // ->Schrift: Verdana auswählen

Eine Referenz/Übersicht über das Objekt Model von InDesign findet man hier.

Kategorien
Amazon MWS PHP

Products API gibt keine richtigen Fehlermledungen nur Fatal Error

Um aus Amazon die richtigen Fehlermeldungen heraus zu kitzeln, müssen die Fatals gefangen werden und ausgegeben, sonst kann man lange suchen:

                try
                {
                    $this->getListMatchingProductsForEanOrQueryData($ean, $country);
                }
                catch(MarketplaceWebServiceProducts_Exception $e)
                {
                    var_dump($e);
                    die();
                }
Kategorien
PHP

Führende Nullen oder Komma am Ende entfernen

Mit den Funktionen ltrim und rtrim lassen sich Leerzeichen und bestimmte störende Buchstaben am Anfang oder am Ende von Strings entfernen.

Bsp. Entfernen von führenden Nullen:

$string = "03423452";
$string = ltrim($string,'0');
//03423452

oder Komma am Ende entfernen

$string = "bla, bla,bla,";
$string = rtrim($string,',');
//bla, bla,bla
Kategorien
PHP XT-Commerce

XTCommerce Sofortüberweisungs Modul leitet bei Abbruch auf Warenkorb weiter

Bei einem Abbruch findet ein Redirect auf den Warenkorb statt, weil die verkaufte Artikel Mange schon um 1 erniedrigt wurde und die Artikel nicht mehr kaufbar sind laut Datenbank.

Deswegen muss in der checkout_payment.php folgender Code eingefügt werden

if($_GET['payment_error'] == 'sofortueberweisung_direct')
{
/*    require (DIR_WS_CLASSES . 'payment.php');
    $payment_modules = new payment('sofortueberweisung_direct');
    if ($confirmation = $payment_modules->confirmation())
    {

    }*/

    require_once (DIR_WS_CLASSES.'order.php');
    require_once (DIR_FS_INC.'xtc_db_query.inc.php');
    require_once (DIR_FS_INC.'xtc_get_prid.inc.php');
    $order = new order();

    for ($i = 0, $n = sizeof($order->products); $i < $n; $i ++)
    {
         xtc_db_query("update ".TABLE_PRODUCTS." set products_quantity = products_quantity + 1 where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
    }
    unset($order);

}

oberhalb von

// if there is nothing in the customers cart, redirect them to the shopping cart page
if ($_SESSION['cart']->count_contents() < 1)
    xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));

 

Kategorien
CSS Web Frontend Webdeveloper Tools

Wieso sollte man kein inline CSS/JS verwenden

Es gilt als schlechter Stil inline CSS zu verwenden:

<span style="color: #666666; display: block; float:left; width: 250px;padding-bottom:5px;">

d.h. das CSS eines Elements direkt über das style Attribut zu aktivieren.

Dasselbe gilt auch für Inline Javascript:

<div></div>
<script type="text/javascript">
    alert("hallo");
</script>

Folgende Gründe gibt es dafür:

Kategorien
jQuery

jQuery animate ruckelt im Chrome

Folgender Code ruckelt im Chrome:

        $('#foo')
            .animate({
            'marginLeft' : '100px'
        }, 900) ;

die Lösung war ziemlich einfach:

        $('#foo').css({WebkitTransform: 'translateX(0px)'})
            .animate({
            'marginLeft' : '100px'
        }, 900) ;

Bei Problemen: jQuery updaten auf die neueste Version (1.8.2.)

Kategorien
jQuery

Javascript Page Cookie setzen

Um mit Javascript einen Cookie zu setzen, der nur auf der aktuellen Seite gültig ist bspw. foo.de/mySite3.php muss man den passenden Pfad setzen, den man mit Javascript folgender maßen auslesen kann. Ich benutze zum Setzen von Cookies die Lib jQuery Cookies. Der Pfad muss im Format „/mySite3.php“ gesetzt werden, dazu wird der vordere Teil der URL bis nach der Domain abgeschnitten.

    function setCurrentPageCookie(expiresHours) {
        var domain = document.domain;
        var path = document.URL;
        console.log(domain);
        console.log(path);
        var relativePath = path.substring(path.indexOf(domain) + domain.length);
        console.log(relativePath);
        $.cookies.set('cookieName', '1', {
            path: relativePath,
            hoursToLive : expiresHours
        });
    }
Kategorien
PHP SEO

PHP Redirect Header funktioniert nicht

Um Seiten SEO-freundlich umzuleiten, kann man in PHP einen 301 Redirect machen_

header("Location: http://www. new-location.de/foo_new.php",true,301);
exit;

Ich hatte dabei das Problem, das keine Fehlermeldung „Header already sent“ ausgegeben wurde, um herauszufinden, warum der Befehl nicht funktioniert. Es ist nämlich so, dass der header() Befehl nur funktioniert, wenn noch keine Bildschirmausgabe stattgefunden hat. Das betrifft auch Leerzeichen, wie sie oft bei PHP-Dateien vorkommen am Anfang oder Ende des Quellcodes:

_<?php

oder

?>_

Um diesen Stellen zu finden sollte man vor dem Redirect folgenden Code einfügen, wenn man keine Fehlermeldung „header already sent in line“bekommt:

    if(headers_sent($file, $line)){
        echo "Headers already sent in $file on line $line";
    }

 

Kategorien
Diverses

Strassenkrieg in Russland Videos

Auf Spiegel TV bin ich auf die russische Fernsehserie „Strassenkrieg“ gestoßen, in der Autofahrer ihr Können in Sachen Vorfahrtsmissachtung und Straßenkampf unter Beweis stellen können, gefilmt von Amateur Kameras, die andere Fahrer mitlaufen lassen. Da ich über Google noch keine Ergebnisse finden konnte, hab ich mit ein bisschen Russisch die besten Videos zusammengestellt.