Hauptmenü

Werkzeuge

Kategorien

Archiv

Einhell

TemplaVoila! Probleme nach Update auf 4.7.2

Erstellt in TYPO3 am 29. Juli 2012 vom Daschmi

Während des Updates auf TYPO3 4.7.2 wird die Spalte „t3ver_swapmode“ von der Tabelle „pages“ entfernt. Die templavoila Version 1.7.0 benötigt diese Spalte aber zur Korrekten bearbeitung der Inhaltselemente. Das Problem äußert sich darin, dass über die Web Ansicht keine Inhaltselemente angelegt werden könnne. Über die List Ansicht ist dies weiterhin möglich, die Sortierung in mögliche templavoila Spalten funktioniert aber dann auch nicht.

Abhilfe schaft es die Spalte „t3ver_swapmode“ nicht zu löschen, in dem man die entsprechende Aktion beim Update deaktiviert. Alternativ kann man die Spalte auch wieder mit folgendem SQL Query anlegen:

[sql]
ALTER TABLE pages ADD t3ver_swapmode tinyint(4) NOT NULL default ‚0‘
[/sql]

Problem trit mit folgenden Versionen auf:

TYPO3: 4.7.2
templavoila: 1.7.0

Weitere Informationen findet man auch im TYPO3 Bugtracker.

WordPress AdminBar ausblenden

Erstellt in Wordpress am 19. Juli 2012 vom Daschmi

Wenn man eine Seite validieren will kann es zu Problemen mit der AdminBar kommen, die in WordPress Blogs angezeigt wird wenn man parallel im Backend eingelogt ist. Das kann mitunter recht nervig sein. Um sie zu deaktivieren kann man folgenden Code in die functions.php eines Themes/Plugins einbinden:

add_filter('show_admin_bar', '__return_false');

Alternativ kann man auch das folgende kleine Plugin installieren, welches die Bar dann ausblendet wenn das Plugin aktiviert ist.

Download

Schriftgröße eines mehrzeiligen UILabel automatisch anpassen.

Erstellt in IPhone SDK am 30. Juni 2012 vom Daschmi

UILabel unterstützt die automatische Schriftgrößenanpassung von Haus aus. Allerdings nur bei einzeiligen Texten. Mit folgender Funktion wird die Schriftgröße an das übergebene Label angepasst:


- (void)sizeFontForLabel:(UILabel *)label {

 for(int i = 28; i > 10; i = i-2)
 {

 label.font = [UIFont fontWithName:label.font.fontName size:i];
 CGSize constraintSize = CGSizeMake(label.frame.size.width, MAXFLOAT);
 CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

 if(labelSize.height <= label.frame.size.height) break;

 }

}

Zugriff auf die Kamera und das Album aus einer IPhone Anwendung

Erstellt in IPhone SDK am 10. Juni 2012 vom Daschmi

Um Bilder zu seiner Anwendung hinzuzufügen macht kann man den Zugriff auf die eingebaute Kamera oder das Album nutzen. Für den Zugriff sollte man die internen Schnittstellen verwenden. Der Zugriff auf die iPhone Funktionen wird über die UIImagePicker Klasse realisiert.

Um den ImagePicker zu nutzen geht man wie folgt vor:

UIImagePickerController *picker1 = [[UIImagePickerController alloc]init];
 picker1.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
 picker1.sourceType = UIImagePickerControllerSourceTypeCamera;
 picker1.allowsEditing = YES;
 picker1.delegate = self;
 [self presentModalViewController:picker1 animated:YES];

Möchte man auf die Kamera statt auf das Album zugreifen ersetzt man den Sourcetyp mit:

picker1.sourceType = UIImagePickerControllerSourceTypeCamera;

Über die Delegate Klasse kann man das zurückgegebene Bild steuern.

Dazu muss man folgende Klasse überschreiben:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

Auf das bearbeitete Bild kann man dann wie folgt zugreifen:

UIImage *img = [info objectForKey:@"UIImagePickerControllerEditedImage"]];

Es macht Sinn das Ganze über ein UIActionSheet zu steuern, um die gewohnte iPhone Bedienung zu erhalten. Die Kamera Funktion lässt sich im übrigen nicht im Simulator testen.

wpShopGermany Tutorial

Erstellt in Wordpress am 22. Mai 2012 vom Daschmi

Da es immer wieder zu Fragen und Problemen mit der Einrichtung eines WordPress Online Shops mit dem wpShopGermany WordPress Plugin kommt, habe ich hier die wichtigsten Schritte mal erklärt. Zu erst muss man sich das Plugin besorgen. Dies kann als 14 tägige Demo Version unter http://shop.maennchen1.de heruntergeladen werden.

Das Plugin wird als zip Archiv ausgeliefert und kann ganz normal über die WordPress Plugin Verwaltung installiert werden. Hat man das WordPress Shop Plugin erfolgreich installiert, so erscheint links im Menü ein neuer Menüpunkt „Shop“.

Zu aller erst sollte man in die Konfiguration gehen. Hier sollte man ein paar wichtige Einstellungen tätigen. Zum Beispiel die Mehrwertsteuer Sätze:

Viele Funktionen im wpShopGermany werden durch Module realisiert, die je nach Anwendung aktiviert oder deaktiviert werden können. So gibt es z.B. Module für folgende Anwendungsfälle:

  • Füllmengenberechnung (Errechnet die Füllmenge, die bei Flüssigkeiten in deutschen Shops ausgewiesen werden muss)
  • Gewichtsangaben (Ermöglicht die Erfassung von Gewichten und gewichtsabhängige Berechnung von Versandkosten)
  • Gutschein (Ermöglicht die Generierung von Gutscheinen)
  • Produktauswahl (Ermöglicht das einfache Einfügen von Produkten im Editor)
  • Lagerbestand (Verwaltung eines Lagerbestandes)
  • Bestellvariablen (Ermöglicht das Erfassen von Kundeneingaben zu einer Bestellung z.B. „Woher kennen Sie uns?“)
  • Produktvariablen (Ermöglicht das Erfassen von Variablen zu einem Produkt während der Bestellung z.B. „Text auf dem T-Shirt“)
  • Produktattribute (Ermöglicht das Erfassen und Anzeigen von zusätzlichen Produktfeldern z.B. Ausführung, Farbe etc.)
  • Kundenlogin (Kunden können sich während der Bestellung registrieren)
  • Rabatt (Verschiedene Rabatt Möglichkeiten auf Produkte oder Produktgruppen)
  • Produktgruppen (Um eine Kategoriesierung der Produkte zu ermöglichen)
  • Downloadprodukt (Für den Verkauf und die Versendung von digitalen Produkten)
  • Rechnungsmodul (Generierung von PDF Rechnungen/Gutschriften muss optional nachgeladen werden)
  • Lieferanten/Versandkosten (Eingabe von Lieferanten mit unterschiedlichen Versandkosten)
  • Zahlungsmodule (PayPal, Sofortüberweisung, Rechnung usw.)
  • u.v.a.

Ein paar dieser Module sind standardmäßig aktiviert.

Der Shop benötigt ein paar WordPress Seiten, um korrekt zu funktionieren. Diese Seiten müssen zugeordnet werden oder man muss sie mit dem Shop anlegen. Das Ganze passiert unter Konfiguration -> Einstellungen -> Seiteneinstellungen

Hat man die nötigen Einstellungen getätigt, so sollte man mindestens ein Produkt anlegen. Dies kann man in der Produktverwaltung erledigen.

Jetzt fragt man sich vielleicht wie man das Produkt auf einen WordPress Artikel oder Seite bekommt. Dies erreicht man über Shortcodes, ein Shortcode sieht beispielsweise wie folgt aus:

Bei der Ausgabe im Frontend wird dieser Shortcode dann durch das Produkt ersetzt. Das klingt vielleicht auf den ersten Blick kompliziert, ermöglicht aber das flexible Integrieren in ihre bestehenden Artikel. Die „6“ im Beispiel Shortcode ist die ID des Produktes, zur Auswahl können sie aber auch den Produktauswahl Assistenten nutzen:

Den Assistenten können sie einfach aus dem Editor starten wenn sie auf den „Warenkorb“ Button klicken. Dazu muss allerdings das wpShopGermany Modul „Produktauswahl“ aktiviert sein.

Hat man jetzt alles richtig gemacht, so wird das Produkt in dem ausgewählten Artikel oder der ausgewählten Seite angezeigt.

Nützliche Links zu wpShopGermany:

C# Notitzen

Erstellt in C# am 10. Mai 2012 vom Daschmi

  • Pfad zur Programmdatei in C# ermitteln
    [csharp]string pathBase = System.Threading.Thread.GetDomain().BaseDirectory;[/csharp]
  • Externes Programm mit C# aufrufen und Rückgabe verarbeiten (Die Funktion sollte mittels try/catch behandelt werden)
    [csharp]public string Externcall(string cmd, string parameter)
    {

    ProcessStartInfo procStartInfo = new ProcessStartInfo(cmd, parameter);

    procStartInfo.RedirectStandardOutput = true;
    procStartInfo.UseShellExecute = false;
    procStartInfo.CreateNoWindow = true;

    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    proc.StartInfo = procStartInfo;
    proc.Start();

    string result = proc.StandardOutput.ReadToEnd();

    return result;

    } // public string Externcall(string cmd, string parameter)[/csharp]

  • ini Datei mit C# einlesen und verarbeiten (Im Beispiel m1_app.ini im Programmverzeichnis)
    [csharp]
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section,
    string key, string def, StringBuilder retVal, int size, string filePath);

    public string GetConf(string section, string key)
    {

    const int size = 255;
    string file = System.Threading.Thread.GetDomain().BaseDirectory + "m1_app.ini";
    string def = "";

    StringBuilder sb = new StringBuilder(size);
    GetPrivateProfileString(section, key, def, sb, size, file);

    return sb.ToString();

    } // public string GetConf(string section, string key)

    [/csharp]

  • Datei mit C# schreiben
    [csharp]public void writeFile(string file, string content)
    {

    StreamWriter mySaveFile = new StreamWriter(file);
    mySaveFile.Write(content);
    mySaveFile.Close();

    } // void public writeFile(string file, string content)[/csharp]

  • Datei mit C# einlesen und zurückgeben
    [csharp]
    public string readFile(string file)
    {

    return File.ReadAllText(file, Encoding.Default);

    } // public string readFile(string file)[/csharp]

  • String Ersetzung mit C#
    [csharp]strConf = strConf.Replace("###WINVERSION###", strWinVersion);[/csharp]

Keine Admin Bar im WordPress

Erstellt in Wordpress am 27. April 2012 vom Daschmi

Um die Admin Bar für ein WordPress Theme zu deaktivieren kann folgende Funktion genutzt werden:

add_filter( 'show_admin_bar', '__return_false' );

TYPO3 auf PHP 5.4

Erstellt in TS Schnipsel, TYPO3 am 29. März 2012 vom Daschmi

Wer TYPO3 auf PHP 5.4 betreibt, bekommt unter Umständen seltsame Ausgaben von Notices und Warnungen im Backend und Installtool. In PHP 5.4 wurde E_STRICT in E_ALL aufgenommen.

Abhilfe schafft hier folgender Eintrag in der localconf.php:

$TYPO3_CONF_VARS['SYS']['errorHandlerErrors'] = 'E_ALL ^ E_NOTICE ^ E_DEPRECATED ^ E_NOTICE';

Pflichtfelder in einem Magento Shop deaktivieren

Erstellt in Magento am 23. März 2012 vom Daschmi

Wer in einem Magento Shop die Pflichtfelder im Backend und Frontend verändern möchte, der kann dies über die Datenbank erledigten. Dazu gibt es in der Tabelle eav_attribute eine entsprechende Spalten („required“).

Um zum Beispiel das Geburtsdatum nicht mehr als Pflichtfeld zu deklarieren kann folgender Query genutzt werden:

UPDATE `eav_attribute` SET `is_required` = '0' WHERE `attribute_code` = 'dob' LIMIT 1 ;
UPDATE `eav_attribute` SET `is_required` = '0' WHERE `attribute_code` = 'customer_dob' LIMIT 1 ;

Kompass, Richtung, Geschwindigkeit und Position in einer iOS App

Erstellt in IPhone SDK am 26. Februar 2012 vom Daschmi

Möchte man den GPS Sensor und den Kompass für die Positions und Richtungsbestimmung benutzen, so kann das CoreLocation Framework verwendet werden. Als erstes muss man das Framework dem Projekt hinzufügen und anschließend in seine Klasse mit folgendem Code includieren:

#import <CoreLocation/CoreLocation.h> 

Nun muss man eine Delegate Klasse mit dem Interface CLLocationManagerDelegate implementieren. Hier gibt es zwei wesentliche Funktionen die man implementieren kann.

Um den Kompass zu nutzen muss folgende Funktion verwendet werden. Die Funktion bekommt newHeading übergeben, in diesem Objekt sind die Daten des Kompass und des Gyrosensors enthalten. Siehe auch iOS Referenz.

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {

    NSLog(@"%@", newHeading);

}

Eine weitere Funktion kann implementiert werden um die Geschwidigkeit, Position und Richtung zu bestimmen.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

NSLog(@"Position:       %f:%f", here.longitude, here.latitude);
NSLog(@"Richtung: %f", [newLocation course]);
NSLog(@"Geschwindigkeit in km/h %.2f", (newLocation.speed * 3.6));

}

Damit die Funktionen auch aufgerufen werden muss natürlich der Delegate definiert werden:

    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    // Für Geschwindigkeit, Richtung und Position
    [locationManager startUpdatingLocation];

    // Für Kompass und Gyrosensor Funktion
    [locationManager startUpdatingHeading];