Beiträge getaggt mit typo3

Fehler im allgemeinen Validator an ein Feld hängen

(attach object errors to a specific field)

Es gibt die Möglichkeit in Extbase Validatoren für Objekte zu definieren. Wenn man also ein Model mit dem Namen „Domain_Model_ObjectModel“ hat, wird falls vorhanden der Validator mit dem Namen „Domain_Validator_ObjectValidator“. Dabei wird nachdem die einzelnen Felder geprüft wurden mit dem angegebenen Validator das komplette Objekt überprüft. So kann man wie in meinem Beispiel feststellen, ob der Titel bereits vergeben worden ist (Unique). Normalweise wird die Fehlermeldung bei einer nicht erfolgreichen Validierung an das Objekt drangehängt. Da ich die Fehlermeldungen neben dem Feld ausgebe (siehe dazu Fehlermeldung mit Fluid direkt neben dem Feld ausgeben), wollte ich den Fehler an das Attribut title dranhängen.

class Tx_MyExtension_Domain_Validator_ObjectValidator 
	extends Tx_Extbase_Validation_Validator_AbstractValidator
{
 
    /**
     * Check if there is a object with the same name
     * @param  Tx_MyExtension_Domain_Model_Object $object
     * @return bool
     */
	public function isValid($object) {
		$objectRepository = t3lib_div::makeInstance('Tx_MyExtension_Domain_Repository_ObjectRepository');
		$sameNameCount = $objectRepository->countByTitleExcludeUid($object->getTitle(), $object->getUid());
		if($sameNameCount > 0) {
			if (!isset($this->errors['title'])) {
				$this->errors['title'] = new Tx_Extbase_Validation_PropertyError('title');
			}
			$error = new Tx_Extbase_Validation_Error(Tx_Extbase_Utility_Localization::translate('error.object_title_exists', 'MyExtension'), '1312448731');
			$this->errors['title']->addErrors(array($error));
			return FALSE;
		}
		return TRUE;
    }
 
}

Tags: , ,

Geschrieben in TYPO3 | Kommentare deaktiviert für Fehler im allgemeinen Validator an ein Feld hängen

T3CON 2010 Frankfurt

Am 1. und 2. Oktober fand in Frankfurt am Main die 10. TYPO3 Konferenz (T3CON) statt. Nach der offiziellen Konferenzeröffnungsrede, bei der auch einige Mitglieder der Community ausgezeichnet wurden, hielt Kasper Skårhøj, der Erfinder von TYPO3 eine unterhalsame Präsentation, die sich vor allem mit der Entwicklung der Community in den letzten Jahren befasste. Er zeigte einige Webseiten bekannter Marken und Hersteller, die alle mit TYPO3 umgesetzt worden sind und zeigte Anhand von anschaulichen Grafiken die weite Verbreitung von TYPO3 in Deutschland.

Da mich die Entwicklung der neuen TYPO3 Version 5 (Codename Phoenix) und des dazugehörigen Frameworks FLOW3 besonders interessiert, habe ich mir viele Vorträge zu dem Thema angeschaut. Beim Vortrag „The current state of TYPO3 Phoenix“ von Robert Lemke (einer der Hauptentwickler von Phoenix) wurden viele der neuen Entwicklungen vorgestellt, meistens anhand von beeindruckenden Beispielen – so z.B. der neue Editor Aloha, das User Interface und die Security Implementation.

(mehr …)

TYPO3 Certified Integrator

Nachdem ich im Juli die Prüfung abgelegt habe und lange gewartet habe, nun die freudige Nachricht – ich bin Certified TYPO3 Integrator. Ich fand die Prüfung nicht einfach, die Fragen waren schon sehr kniffelig, manche so einfach, dass man daran zweifelt, ob man die Frage richtig verstanden hat. Manche so schwer, dass ich fast raten musste, was von den mehreren Antworten möglich sei. Dann noch die Schwierigkeit, dass man nicht weiß, wie viele Antworten denn nun richtig sind. Aber das Warten und Bangen ist endlich zu Ende – Juhuu!

DAM: Titel mit metaExtract aus PDF extrahieren

Der Service metaExtract für DAM sucht alle möglichen Informationen aus den Meta-Daten des PDFs raus, aber irgendwie wird der Titel ignoriert. Dieser ist (aus dem Adobe PDF Reader) über Dokument > Eigenschaften (oder auch Strg + D) im Tab Beschreibung zu finden. Ein Blick in den Service hat ergeben, dass es nicht vorgesehen ist, den Titel aus dem Dokument als Titel des Datensatzes zu übernehmen. Abhilfe schafft die kleine Zeile Code in der Klasse des Service:

switch ($name) {
// neu ab hier
	case 'Title':
		$this->out['fields']['title'] = $value;
	break;
// bis hier
	case 'Producer':
		$this->out['fields']['file_creator'] = $value;
	break;

And it works!

Tags: , , ,

Geschrieben in TYPO3 | Kommentare deaktiviert für DAM: Titel mit metaExtract aus PDF extrahieren

DAM: Inhalte aus PDFs extrahieren

Eingentlich ist das kein Voodoo, wenn mans weiß. Zunächst mal befand sich ein Hinweis darauf, dass es möglich ist, Inhalte aus PDFs beim Extrahieren in die Datenbank zu schreiben, um z.B. danach zu suchen, in diesem Artikel auf t3n: Digital Asset Management mit TYPO3.

Dann fand sich im Manual des DAM Indexers (dam_index) ein Hinweis, dass es eine Liste der Services gibt. Ich habe allerdings ein wenig gesucht, bis ich diese Liste gefungen habe. Dazu im Modulmenü (linke Spalte) auf Media > Tools klicken und dann (wenn nicht bereits ausgewählt), im Drop Down oben Indexing Setup auswählen, dort bekommt man dann eine Ansicht, wie im Manual zu dam_index beschrieben.

Da man ja nun weiß, dass der Service textExtract heißt, braucht man nur im TER danach zu suchen und findet die Extension cc_txtextexec. Diese Extension muss man installieren und dann den Indexer erneut laufen lassen, dabei ist wichtig, den Haken bei reindex zu setzen.

Tags: , , ,

Geschrieben in TYPO3 | Kommentare deaktiviert für DAM: Inhalte aus PDFs extrahieren

Konfiguration (Setup, Constants) im BE auslesen

Im BackEnd steht die Konfiguration aus dem Setup nicht zur Verfügung. Daher muss man sich alles selbst zusammenbauen. Die Konfiguration bezieht sich natürlich auf eine Seite, die dem PageObject mitgegeben werden muss, damit die Konfiguration richtig ausgelesen werden kann.

$sysPageObj = t3lib_div::makeInstance('t3lib_pageSelect'); 
$rootLine = $sysPageObj->getRootLine($pageId);
$TSObj = t3lib_div::makeInstance('t3lib_tsparser_ext');
$TSObj->tt_track = 0;
$TSObj->init();
$TSObj->runThroughTemplates($rootLine);
$TSObj->generateConfig();
$subject = $TSObj->setup[...];

Evtl. könnte auch dieser Eintrag von mir interessant sein: Neuer Name für Page Select
Quelle: old.nabble.com

Tags: ,

Geschrieben in TYPO3 | Kommentare deaktiviert für Konfiguration (Setup, Constants) im BE auslesen

Neuer Name für pageSelect

Seit TYPO3 Version 4.2.X heißt die Klasse, die ein Seitenobjekt repräsentiert zwar immer noch pageSelect, liegt aber nicht wie zuvor in der gleichnamigen Datei, sondern in t3lib_page.php. Das hat zur Folge, dass wenn man ein Objekt der Klasse erzeugen möchte, man zunächst die Datei richtig inkludieren muss.
Vorher hat also das ausgereicht:

$sysPageObj = t3lib_div::makeInstance(‚t3lib_pageSelect‘);

Nun ist auch das notwenig (wobei der Pfad zu t3lib auch in einer anderen Variable stecken kann, in meinem Kontext war nur diese verfügbar):

require_once($GLOBALS[‚temp_path_t3lib‘].’class.t3lib_page.php‘);

Mein Vorschlag ist, zu prüfen, ob die Datei t3lib_page.php exisitert und diese bei Bedarf zu laden, so sollte das Erzeugen des Page Objektes sowohl in alten als auch in neuen TYPO3 Versionen funktionieren.

if(file_exists($GLOBALS[‚temp_path_t3lib‘].’class.t3lib_page.php‘)) {
require_once($GLOBALS[‚temp_path_t3lib‘].’class.t3lib_page.php‘);
}
$sysPageObj = t3lib_div::makeInstance(‚t3lib_pageSelect‘);

UPDATE:
Gleiches Problem bei den Basic file funcitons:

if(file_exists($GLOBALS[‚temp_path_t3lib‘].’class.t3lib_basicfilefunc.php‘)) {
require_once($GLOBALS[‚temp_path_t3lib‘].’class.t3lib_basicfilefunc.php‘);
}
$fileFunc = t3lib_div::makeInstance(‚t3lib_basicFileFunctions‘);

Redakteure dürfen Cache löschen

Das ins TS-Config, dann dürfen die Redakteure auch den Cache aller Seiten löschen:

options {
clearCache.all=1
clearCache.pages=1
}

Tags: ,

Geschrieben in TYPO3 | Kommentare deaktiviert für Redakteure dürfen Cache löschen