Tile-Clock und die Windows 8-Benutzerschnittstelle

Eigentlich sind Apps recht leicht zu bedienen, die Funktionen werden in der Regel durch mehr oder weniger ansprechende Icons dem Benutzer auf dem Bildschirm angezeigt.

Und um als schick und schön aussehen zu lassen, wird ein Teil dieser Icons und Funktionen in die App-Bar und in die Einstellungen gelegt. So bleibt der Bildschirm aufgeräumt.

Doch was, wenn der Benutzer nichts von App-Bar und Einstellungen kennt? Was, wenn er als Benutzer eines Desktop-Rechner gar nicht auf die Idee kommt, mal die rechte Maustaste zu drücken oder mit der Maus in die rechte untere Bildschirmecke zu gehen?

Tja, dann hat man als Entwickler ein kleines Problem: Die App-Oberfläche ist schön aufgeräumt, aber der Benutzer kann sie nicht bedienen. Pech gehabt. Oder auch nicht: Man fügt halt einfach zwei Schaltflächen hinzu und schon ist auch dem unwissenden Nutzer geholfen:

 

Settings

App-Bar

Und wenn der Nutzer noch den Tooltip liest (Win+I, Win+Z), dann hat er sogar noch etwas für sein Windows 8-Leben gelernt.

 

TYPO3 CMS 6 Konfiguration auf Serverway Webhosting X1-Paket

Webseitenerstellung liegt ja voll im Trend und so liegt es nahe, sich Typo3 mal näher anzuschauen. Und wenn schon denn schon:  Dann doch gleich in der neuen Version Typo3 CMS 6.0.2. Nach anfänglichen Schwierigkeiten (gibt es eigentlich irgendetwas ohne anfängliche Schwierigkeiten?) ist die Installation durchgelaufen und das Backend konnte seinen Betrieb aufnehmen. Getestet wird der Betrieb einer Typo3-Seite zur Zeit beim Webhoster ServerWay mit dem Paket Webhosting X1. Das ist für eine größere Seite sicher unterdimensioniert, für die Testzwecke soll es erstmal reichen.

Erste Hürde: PHP-Version, php.ini und DB-Konfiguration

Mit voller Euphorie wurde das typo3_src+dummy-6.0.2-Paket auf die Seite hochgeladen und dann die Installation gestartet (…/typo3/Installation/index.php). Allerdings kam ich immer nur bis zur Eingabe des Adminpasswortes, mmmh, DB-Probleme? Na gut, schauen wir uns mal die Konfigurationsmöglichkeiten an. Schnell die LocalConfiguration.php in …/typo3/typo3conf als Ziel ausfindig gemacht und festgestellt, das dort überhaupt nichts hinterlegt ist. Okay, das soll eigentlich durch die Installation erfolgen, aber wenn ich mich nicht anmelden kann? Nach ein bisschen Netzrecherche waren die erforderlichen Parameter allerdings schnell gefunden und mit den entsprechenden Angaben im Webinterface von ServerWay (Vertrag auswählen und dann unter Dienste MySQL anklicken. Es erscheint die Seite Übersicht der MySQL-Zugänge) war der Datenbankzugang schnell konfiguriert:

<?php
 return array(
 ...
 'DB' => array(
 'database' => 'ServerWay-MySQL-Datenbankname',
 'host' => 'ServerWay-MySQL-Servername',
 'password' => 'Das Passwort',
 'username' => 'ServerWay-MySQL-Benutzername',
 'extTablesDefinitionScript' => 'extTables.php',
 ),
 ...

Ok, war nicht so schwer, funktionierte allerdings immer noch nicht. Obwohl Typo3 CMS 6 mit PHP-Version 5.4 kompatibel sein soll, lag wohl hier das Problem. Nachdem die PHP-Version auf 5.3 umgestellt war. lief alles fehlerfrei, sobald die PHP-Version wieder auf 5.4 umgestellt war, scheiterte ich wieder am Login. Wenn also von Anfang an die PHP-Version auf 5.3 steht, dann sollte der typo3-Installer auch wie gewünscht funktionieren. Na gut, ich hatte ein wenig mehr über die DB-Konfiguration gelernt – kann ja auch nicht schaden. Blieb noch ein Meckerpunkt der Typo3-Installation bezüglich eines PHP-Parameters: Für suhosin.get.max_value_length soll der Wert auf mindestens 2000 stehen. Bei ServerWay kann die php.ini (leider) nicht selbst geändert werden (zu mindestens nicht im X1-Paket), allerdings ist der Support dort echt auf Zack und nach zwei EMails war der Parameter schon angepasst. Nachdem mit dem Installationstool die Datenbank angelegt war und alle Tests ohne Fehler durchgelaufen waren (ok, beim Grafik-Test passten jetzt nicht alle Anzeigen, aber vom Prinzip her sah es schon sehr gut aus) stand dem Start des Backends nichts mehr im Wege.

Zweite Hürde: Admin-User

Und wieder ein Login-Problem: Es fehlt der Admin-User. Der lässt sich allerdings leicht mit dem Installationstool anlegen. Ich habe an der Stelle kein Admin-Konto angelegt, sondern für mich ein Konto mit Admin-Rechten. Der Name Admin ist mir immer zu offensichtlich und ich muss die Administration ja sowieso machen :).

Geschafft: Das Backend läuft

Nachdem die ersten Hürden genommen waren, konnte nun endlich das Backend gestartet werden: Uiiih, das sieht ja richtig gut aus – Läuft! Hurra, war doch gar nicht so schwer. Okay, der Teufel hat sich natürlich wieder in den Details versteckt und da ich nicht explizit nach ihm Suche, taucht er (der Teufel) natürlich an unerwarteten Stellen auf:

Sprache einstellen

Einer der ersten Schritte ist natürlich die Konfiguration der Sprache und die Prüfung des Extensionmanager. Schnell deutsch ausgewählt und auf „update from repository“ geklickt. Na prima, alles rot, lauter Errors. Schnell Tante Google befragt und siehe da: In der Konfiguration muss im Sys-Bereich ein Parameter aktiviert werden:

[SYS][curlUse] = 1

Jetzt klappt es auch mit dem Update from Resository.

Extension-Manager

Der Extension-Manager bereitete das schon größere Probleme. Die Liste der Extensions zum Herunterladen war nach Klick auf den Reiter Get Extensions leer und ein Klick auf Retrieving Extension-List from TYPO3 Extension Resository (TER) lieferte einen leeren Bereich mit der Meldung

{"updated":false,"message":"last update: 2013-02-19 (5904 extensions)","errorMessage":""}

Gut, drücken wir mal F5 zum Aktualisieren. Ah, jetzt ja: Eine Liste. Okay kann ja mal passieren, allerdings war in der Titelleiste der Tabelle das Datum des letzten Abruf nicht zu sehen. Es wurde wieder Retrieving Extension-List from TYPO3 Extension Resository (TER) angezeigt.

Egal Karl, zum Test mal schnell die Extension Lorem Ipsum installieren: klick – klick klick:

Oops, an error occurred!
No module "" could be found.
More information regarding this error might be available online.

Mmmmh, das geht auch und erst recht gar nicht: Error-Seite und von einer installierten Extension nichts zu sehen. Das Problem war schon etwas hartnäckiger und letztendlich stellte sich der Internet Explorer (ja, ja – ich nutze ihn :)) als Ursache für die Extension-Manager-Probleme heraus. Kaum ruft man das Backend mit dem Firefox auf schon geht alles. Grrrrh.

Lorem Ipsum Extension

Obwohl die Lorem Ipsum Extension mit Version 1.1.1 als stabil angegeben wird, läuft sie gar nicht, sondern erzeugt die Fehlermeldung

Lorem Ipsum hat einen einen Fehler in der Datei class.tx_loremipsum_wiz.php in Zeile 106

In der Datei muss es in Zeile 106 statt

t3lib_div::intInRange($PA['params']['count'],2,100),

richtigerweise

t3lib_utility_Math::forceIntegerInRange($PA['params']['count'],2,100, 10),

heißen. Bin ja erst am Anfang von Typo3, aber das wird ja spaßig. Mal sehen, was noch so für Problemchen auftauchen – ggf. werde ich diesem Bericht ergänzen.

Losungen der Hermhuter Brüdergemeine (sowie Extension Karussell)

So kann man sich auch Arbeit machen: Die Extension losungen der Bruderschaft lässt sich unter CMS6 nicht direkt installieren. Als Fehlermeldung erscheint „Dependencies could not be resolved“ „Could not resolve dependency for „div““: Fehlermeldung Losungen Na gut – kein Problem: Laden wir die Extension eben nicht über das TER sondern direkt. Schnell die losungen_1.5.0.t3x gedownloaded und direkt im Extensionmanager geuploaded. Das hätte ich besser nicht getan. Nun kann die Seite gar nicht mehr geöffnet werden – weder im Backend noch im Frontend. Um wieder ins System zu kommen, habe ich in der ext_localconf.php der losungen-Extension die dritte Zeile auskommentiert:

<?php
if (!defined ('TYPO3_MODE'))  die ('Access denied.');
/* require_once(t3lib_extMgm::extPath('div') . 'class.tx_div.php'); */
if(TYPO3_MODE == 'FE') tx_div::autoLoadAll($_EXTKEY);
?>

Danach konnte ich das Backend wieder öffnen. Zunächst erst mal die losungen-Extension komplett gelöscht (Klick auf den Mülleimer) und anschließend auf die Fehlersuche begeben. Und siehe da, in den FAQs von losungen steht es beschrieben: Die Extensions div und lib müssen VORHER installiert werden, dann klappt es auch mit den losungen (die ich nun ganz normal über den Extensionmanager installieren konnte). In der …\losungen\configurations\class.tx_losungen_wizicon.php muss dann noch

     function includeLocalLang() {
      $llFile = t3lib_extMgm::extPath('losungen').'locallang.xml';
      $LOCAL_LANG = t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang);

in

     function includeLocalLang() {
      $llFile = t3lib_extMgm::extPath('losungen').'locallang.xml';
      $LOCAL_LANG = t3lib_div::readLLfile($llFile, $GLOBALS['LANG']->lang);

geändert werden.

Hinweis:
Für die Extension karussell muss in der class.tx_karussell_pi1_wizicon.php und für die Extension t3s_jslidernews in der class.tx_t3sjslidernews_pi1_wizicon.php dieselbe Änderung vorgenommen werden.

Leider war das noch nicht alles. In der lib-Extension muss in der Datei class.tx_lib_t3loader.php

function makeInstanceClassName($class, $alternativeKey='', $prefix = 'class.', $suffix = '.php') {
  if(tx_lib_t3Loader::load($class, $alternativeKey, $prefix, $suffix)) {
   return t3lib_div::makeInstanceClassName($class);
  } else {
   return false;
  }
 }

der Funktionsname geändert werden:

 function makeInstanceClassName($class, $alternativeKey='', $prefix = 'class.', $suffix = '.php') {
  if(tx_lib_t3Loader::load($class, $alternativeKey, $prefix, $suffix)) {
   return t3lib_div::makeInstance($class);
  } else {
   return false;
  }
 }

Damit nicht genug. In der class.tx_lib_parameters.php muss

 function tx_lib_parameters ($controller) {
  parent::tx_lib_object($controller);
  $this->setArray(t3lib_div::GParrayMerged($controller->getDesignator()));
  // Initialize the cHash system if there are parameters available
  if ($GLOBALS['TSFE'] && count($parameters)) {
   $GLOBALS['TSFE']->reqCHash();
  }
 }

in

function tx_lib_parameters ($controller) {
  parent::tx_lib_object($controller);
  $this->setArray(t3lib_div::_GPmerged($controller));
  // Initialize the cHash system if there are parameters available
  if ($GLOBALS['TSFE'] && count($parameters)) {
   $GLOBALS['TSFE']->reqCHash();
  }
 }

geändert werden. Jetzt, endlich, klappt es prima mit den Losungen: Screenshot_losungen Um die Umlaute korrekt zu sehen, bedarf es, falls das noch nicht geschehen ist, folgender Einstellungen in den Konstanten des Templates:

plugin.tx_losungen {
  serverUrl = www.brueder-unitaet.de/download
  zipName = Losung_%04d_XML.zip
  xmlName = Losungen Free %04d.xml
  termsName = Nutzungsbedingungen.pdf
  treeName = Losungen
  verse1txt = Losungstext
  verse1verse = Losungsvers
  verse2txt = Lehrtext
  verse2verse = Lehrtextvers
  dateFormat = %A, %e. %B %Y:
  encoding = utf-8
}

Sowie im config-Abschnitt des Templates:

config {
  sys_language_uid = 0
  language = de
  locale_all = de_DE.UTF-8 
}

So, jetzt ist aber gut.

Datentyp HTML ohne Funktion?

Das CObject HTML gibt es unter Typo 3 CMS 6 nicht mehr. Für Neueinsteiger wie mich ist das ebenso neu wie für alle anderen, nur eben nicht so offensichtlich. Und wie will man, wenn man nicht einmal weiß, dass es sich hier um ein CObjekt in Typo3 handelt, mit Tante G nach HTML suchen? Trilliarden von Antworten durchlesen? Na gut, in jedem Anfang wohnt ja ein Zauber inne…

Im alten Typo3 (vor Version CMS 6) hat dieser Code noch hervorragend funktioniert (Quelle siehe Realisierung einer Schriftgrößenauswahl):

fontsize = COA
fontsize{

  1 = HTML
  1.value = A   
  1.value.typolink.parameter.data = page:uid
  1.value.typolink.additionalParams = &fsize=0
  1.value.typolink.ATagParams = title="Schriftgröße: normal"

  2 < .1
  2.value = A+   
  2.value.typolink.additionalParams = &fsize=1
  2.value.typolink.ATagParams = title="Schriftgröße: groß"

  3 < .1
  3.value = A++
  3.value.typolink.additionalParams = &fsize=2
  3.value.typolink.ATagParams = title="Schriftgröße: sehr groß"
  }
marks.FONTSIZE < fontsize

Nur unter CMS6 bekommt man als Ergebnis nur ein leeres div:

<div id="fontsize"></div>

Spielt man ein wenig mit dem Code herum, stellt man schnell fest, das man mit TEXT schon ein Stückchen weiterkommt:

...
  1 = TEXT
  1.value = A   
  1.value.typolink.parameter.data = page:uid
  1.value.typolink.additionalParams = &fsize=0
  1.value.typolink.ATagParams = title="Schriftgröße: normal"
...

Die Texte „A“, „A+“, „A++“ sind jetzt zu sehen. Nur leider funktionieren die Links immer noch nicht. Da wir nun allerdings nicht mehr mit einem HTML-Element sondern mit einem TEXT-Element arbeiten, hat sich die Objektstruktur „natürlich“ auch geändert: typolink ist jetzt direkt ein Element des COA-Elementes 1 und nicht mehr ein Element vom value:

...
  1 = TEXT
  1.value = A   
  1.typolink.parameter.data = page:uid
  1.typolink.additionalParams = &fsize=0
  1.typolink.ATagParams = title="Schriftgröße: normal"
...

Kaum macht man es richtig, schon klappt es auch mit den Links. Welcome at Typo3 CMS 6.

Static Info Table: Fehler beim Aufruf der Konfiguration (6.4.2013)

Ich weiß nicht mehr wann sich dieser Fehler eingeschlichen hat, aber plötzlich und unerwartet lies sich die Konfiguration der Extension Static Info Table nicht mehr aufrufen:

Oops, an error occurred!

PHP Catchable Fatal Error: Argument 2 passed to tx_staticinfotables_emconfhelper::buildCharsetField() must be an instance of TYPO3\CMS\Core\TypoScript\ConfigurationForm, instance of TYPO3\CMS\Extensionmanager\ViewHelpers\Form\TypoScriptConstantsViewHelper given in .../typo3conf/ext/static_info_tables/classes/class.tx_staticinfotables_emconfhelper.php line 45

Die Lösung war schnell gefunden (Patch): Der Datentyp t3lib_tsStyleConfig im Aufruf buildCharset von passt nicht mehr. Ändert man den Aufruf

public function buildCharsetField(array $params, t3lib_tsStyleConfig $pObj) {

in

public function buildCharsetField(array $params, TYPO3\CMS\Extensionmanager\ViewHelpers\Form\TypoScriptConstantsViewHelper $pObj) {

dann ist die Konfigruation von Static Info Table wieder möglich. Alles wird gut.

Die erste App: Tile-Click

Was als kleine Fingerübung begann endete in einer kleinen App für Windows 8.

Auf jedem Handy kann man jederzeit die Uhrzeit sehen – auf dem Windows 8 Startbildschirm nur, wenn man die Cham-Bar öffnet. Irgendwie unbefriedigend – so empfanden es wenigstens einige Nutzer.

Naja, komm, ’ne Uhr ist ja fast so simple wie ein Hallo-Welt-Programm. Das ist doch keine App wert. Und warum fehlt die eigentlich? Wieso liefert Microsoft nicht gleich eine Uhr mit?

Wie so oft steckt der Teufel im Detail und so stellte sich schnell heraus, dass es nicht ganz so einfach ist und so war die Idee schnell geboren, daraus eine App zu machen. Und um das ganze noch spannender zu gestalten, wurde die App gleich in vier Sprachen (deutsch, englisch, französisch und spanisch) angelegt. So kann man die Fallstricke der Internationalisierung auch gleich erkennen.

Als Ergebnis entstand Tile-Clock, eine Weltzeit-Uhr für die Kacheloberfläche, die jedoch die Uhrzeit auch auf dem gesamte Bildschirm anzeigen kann – mit persönlichen Hintergrundbild und eigener Farbgebung.

Man findet sie hier im Windows-8-Appstore:
Tile-Clock

Und hier ein paar Screenshots:

Screenshots_DE8

Screenshots_DE1

Screenshots_DE3

Screenshots_DE2

Hallihallo, ich bin’s: Jana

HAALIHALLO , ich bin eins der J´s vom PJJJR-Team.

Genauer gesagt bin ich das dritte J der Rasselbande.

Demnächst werdet Ihr hier noch mehr von mir erfahren: Was ich so treibe, was ich erlebt habe und wie es mir so geht.

 

Also bis bald und schreibt mir viele Kommentare.

Gruß

eure Jana

PJJJR?

Dies ist der Blog von PJJJR, den Geocachern auch als PJJJRTeam bekannt.

Wir sind ein fünfer Rudel und schlagen uns so durch die Welt: Familie, Freunde, Freizeitbeschäftigungen, Arbeit und Beruf stellen ja so manch interessante Aufgaben.

Das soll an dieser Stelle erst einmal reichen, wenn der Blog richtig läuft, dann melden wird uns wieder.

Gruß
Ralf (das R von PJJJR)

Hallo Welt!

Willkommen zur deutschen Version von WordPress. Dies ist der erste Beitrag. Du kannst ihn bearbeiten oder löschen. Um Spam zu vermeiden, geh doch gleich mal in den Pluginbereich und aktiviere die entsprechenden Plugins. So, und nun genug geschwafelt – jetzt nichts wie ran ans Bloggen!