Beiträge der Kategorie TYPO3

Fehlermeldung mit Fluid direkt neben dem Feld ausgeben

In Fluid-Templates, die in TYPO3 Extensions mit Extbase verwendet werden, werden die Fehlermeldungen in der Regel in einem Block ausgegeben. Mit <f:form.errors /> können die Fehlermeldungen ausgegeben werden, die beim Validieren des Formulars aufgetreten sind. Der Kickstarter erstellt dabei einen Schnipsel, der ungefähr so aussieht:

<f:form.errors>
	<div class="error">
		{error.message}
		<f:if condition="{error.propertyName}">
			<p>
				<strong>{error.propertyName}</strong>:
				<f:for each="{error.errors}" as="errorDetail">
					{errorDetail.message}
				</f:for>
			</p>
		</f:if>
	</div>
</f:form.errors>

Und mit <f:render partial=“FormErrors“ /> wird dieses Partial in einem Template verwendet und gibt alle Fehler aus. Der Wert propertyName enthält in der äußeren Schleife den Namen des Formulars, im Beispiel Simpleblog also Blog oder Post. Und in der inneren Schleife den Namen des Feldes, z.B. title oder description.

Was ist aber, wenn man die Fehlermeldung direkt neben dem Feld ausgeben möchte. Es gibt natürlich die Möglichkeit einen ViewHelper zu schreiben. Ich wollte aber ohne zusätzlichen ViewHelper auskommen. Das Ergebnis ist ein Partial FieldError:

<f:form.errors for="{formName}">
    <f:if condition="{0:error.propertyName} == {0:'{fieldName}'}">
        <f:for each="{error.errors}" as="errorItem">
            <strong style="color: red;">{errorItem.message}</strong>
        </f:for>
    </f:if>
</f:form.errors>

Diese Partial kann in einem weiteren Partial oder einem Template einfach aufgerufen werden und gibt die Fehlermeldungen für ein Feld aus.

<f:render partial="FieldError" arguments="{ errors: errors, formName: 'blog', fieldName: 'title' }" />

Der erste Parameter sind die Fehlermelodungen, der zweite Parameter der Name des Formulars und der dritte der Name des Feldes.

Neue Seiten automatisch einer Benutzergruppe zuweisen

Wenn in TYPO3 eine Seite angelegt wird, kann man sie so automatisch einer Benutzergruppe zuweisen und die Zugriffsberechtigungen angeben. Dieser Schnipsel wird im Page TsConfig Feld der Root-Seite abgelegt.

TCEMAIN.permissions {
	# ID des Benutzer, der der Besitzer der Seite sein soll
	userid = 3
	# ID der Benutzergruppe
	groupid = 1
 
	# optional Zugriffsrechte
	#user = show, editcontent, edit, delete, new
	#group = show, editcontent, edit, delete, new
}

PS: ich habe gerade bestimmt 15 Minuten nach diesem Schnipsel gesucht, bis ich es hier gefunden habe

Tags: , , ,

Geschrieben in TYPO3 | Kommentare deaktiviert für Neue Seiten automatisch einer Benutzergruppe zuweisen

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

Fluid: Select in Formularen mit weiteren Optionen

Ich habe ein wenig gesucht und es scheint mir, als würde die Select-Box von Fluid, die als View-Helper zur Verfügung gestellt wird, nur aus den Daten ein Auswahlfeld machen, die ihr gegeben werden. Wenn man z.B. Kategorien hat und man möchte nicht nur die Kategorien in der Auswahlliste anzeigen, sondern auch eine Option zum Zurücksetzen der Auswahl, also sowas wie „Alle Kategorien“, dann gibt es keinen Tag dafür.

Dazu habe ich einen View Helper erstellt, der von dem Select View Helper ableitet (Tx_Fluid_ViewHelpers_Form_SelectViewHelper). Dann habe ich einen zusätzlichen Parameter registriert in der Init-Function:

public function initializeArguments() {
	parent::initializeArguments();
	$this->registerArgument('additionalOptions', 'array', 'Associative array with values to prepend', FALSE);
}

Und die getOptions-Funktion so weit angepasst, dass die zusätzlichen Optionen vor die automatisch zusammengestellten angehängt werden:

protected function getOptions() {
	$options = parent::getOptions();
	$additionalOptions = array();
	foreach ($this->arguments['additionalOptions'] as $key => $value) {
		$additionalOptions[$key] = $value;
	}
	return array_merge($additionalOptions, $options);
}

Und so kann man es dann im eigenen Template verwenden:

<custom:advSelect name="category" options="{categories}" optionLabelField="title" additionalOptions="{0 : 'Alle Kategorien'}" />

UPDATE:
Es gibt mit dem Code ein kleines Problem, und zwar werden beim Zusammenfügen von Arrays die Schlüssel neu nummeriert. Daher:

protected function getOptions() {
	$options = parent::getOptions();
	if(empty($this->arguments['additionalOptions'])) {
		return $options;
	}
	foreach ($this->arguments['additionalOptions'] as $key => $value) {
		$additionalOptions[$key] = $value;
	}
	return $additionalOptions + $options;
}

Downloadliste: Beschreibungen statt Dateinamen verlinken

Eine normale TYPO3 Downloadliste stellt normalerweise eine Liste von Dateien als Tabelle dar, die Dateinamen sind dabei verlinkt und der Beschreibungstext, den man zusätzlich angeben kann, erscheint darunter. Man kann das Rendering der Liste jedoch anpassen, wenn man weiß, was zur Verfügung steht.
Ein Blick in den Quellcode zeigt, dass viele Informationen ins TYPO3-Register geschoben werden, auf das Register kann mit dem Keyword „register:“ per TS zugegriffen werden. Folgende Informationen werden ins Register gespeichert: linkedIcon, linkedLabel, filename, path, description, fileSize, fileExtension
So kann man das Rendering anpassen, damit anstatt Dateinamen die Beschreibung angezeigt wird. Einziger Nachteil dieses Schnipsels: es muss immer eine Beschreibung angegeben werden.

(mehr …)