Firefox und Muse Inhalt von IFrames wird nicht geladen

Muse erstellt Seiten mit Parallax. Hierbei kommen mehrere IFrames zum Einsatz die von der Logik nach bedarf ein und ausgeblendet werden. Allerdings hat der FireFox ein Problem damit versteckte IFrames zu initialisieren.
Dafür haben wir ein kleines Workaround programmiert, dass die IFrames direkt nach dem start erstmal alle einbeldet und sie nach einer Sekunde wieder ausblendet damit die Logik von Muse greifen kann.

Zuerst muss im CSS eine neue Klasse angelegt werden:

.lazyIFrame {
  display: block !important; 
}

Zusätzlich wird im JavaScript eine Funktion angelgt die den IFrames diese Klasse zuteilt:

	$('iframe').parent().addClass('lazyIFrame');
	setTimeout(function () {
		$('iframe').parent().removeClass('lazyIFrame');
	}, 1000);

gitignore: Verzeichnisse ignorieren aber einzelne Dateien darin dennoch verfolgen

Einfaches Problem, nicht ganz so einfache Lösung. Man möchte ganze Verzeichnisse von der Versionierung ausschließen, aber einzelne darin befindliche Dateien sollen dennoch versioniert werden. Dies geht nur über einen kleinen Umweg, da bei genauer Pfadangabe alle untergeordneten Dateien und Verzeichnisse von Git außer  Acht gelassen werden. Man muss also eine Hierarchie weiter oben ansetzen und Git über Wildcards mitteilen, was ignoriert werden soll und was nicht.

Dementsprechend setzen wir die Wildcards folgendermaßen ein:

 
assets/files/*/* 
!assets/files/*/notignored.txt 

Somit werden alle Dateien in allen Unterverzeichnissen von files ignoriert, aber alle notignored.txt verbleiben dennoch im Repository.

Schützen einer bestimmten Domain per htaccess ohne andere Domains auf dem gleichen Server zu stören

Wenn man über einen Server mehrere Domains betreibt und man eine der Domains per htaccess schützen möchte kommt man an die Stelle wo die gewohnten htaccess Befehle nicht mehr reichen.
Trotzdem gibt es eine Lösung für das Problem:

SetEnvIf Host www.domain.de passreq
AuthType Basic
AuthName "Passwortschutz"
AuthUserFile /pfad/zur/.htpasswd
Require valid-user
Order allow,deny
Allow from all
Deny from env=passreq
Satisfy any

Auf diese Art wird nur für die Domain „www.domain.de“ ein Passwort verlangt, während der Rest der Seite normal zugreifbar bleibt.

externe mySQL Verbindung in phpStorm (IntelliJ) einbinden (Webmin/Virtualmin)

Zunächst einmal müssen wir den mySQL Server anweisen, externe Verbindungen zuzulassen. Standardmäßig ist diese Funktion auf den meisten Server aus Sicherheitsgründen deaktiviert.

Exemplarisch zeige ich das anhand Virtualmin/Webmin. Ob und wie dies bei anderen Oberflächen bzw. Hostern funktioniert müsstet ihr selbst herausfinden. externe mySQL Verbindung in phpStorm (IntelliJ) einbinden (Webmin/Virtualmin) weiterlesen

Verschiedene PHP Versionen für Contao auf Webmin compilieren

Mittels PHPbrew kann man leicht beliebige PHP Versionen compilieren. Damit diese für Contao dann nutzbar sind müssen noch einige Zusatzoptionen mit compiliert werden.

Eine bis jetzt guter Compilierbefehl ist der folgende:

phpbrew install 5.5.20 +default+mysql+soap+mcrypt+gd=shared+iconv -- --with-mysqli=/usr/bin/mysql_config

Wenn man diese neue PHP Version in Virtualmin zur auswahl haben möchte, geht man in den Ordner „/opt/rh“ und erstellt dort eine symbolische Verknüpfung die auf die neue PHP Version verweist.

ln -s /opt/phpbrew/php/php-5.5.20/ php55

Zusatzinfo:

Wählt ihr nun eine neue PHP Version im Backend von Virtualmin aus müsst ihr noch die vorhandene php.ini kopieren und ggf. anpassen.

Geht dazu in (Verzeichnis Domain)/etc/ kopiert dort den php5 Ordner und benennt ihn nach der zu verwendenden PHP Version, z.B. php54 für PHP 5.4.x. Falls ihr mit der gd Bibliothek arbeiten wollt müsst ihr in der php.ini noch die Zeile:

extension = gd.so
extension = iconv.so

hinzufügen:

04.05.2015 (Daniel): +gd=shared hinzugefügt und Info für separate php.ini ergänzt
04.05.2015 (Daniel): +iconv hinzugefügt und Info für php.ini ergänzt

Contao Katalog mit gesicherten Downloads und Referenzen

Beim Katalog in Contao kann es zu Problemen kommen, wenn man zu einem Objekt andere referenziert, die Dateien enthalten. Wenn diese Dateien durch den Contaozugriffschutz laufen, muss auf die Ordnerstruktur geachtet werden, damit die referenzierten Dateien ausgeliefert werden können.

Wenn zum Beispiel die referenzierten Dateien unter „/tl_files/Downloads/Projekt-A“ liegen, dann muss auch eine Datei im Hauptobjekt unter diesem Pfad liegen. Das System überprüft ob im Hauptprojekt eine Datei unter dem angefordeten Pfad liegt. Wenn dem so ist wird die Datei ausgegeben. Ansonsten landet man nur wieder auf der gleichen Seite ohne das etwas passiert.

Contao Sprachumschalter für eigene Module (Item Selector)

Wenn man selbst erstellte Module hat, die Daten verwalten, ist in diesen standardmäßig keine Sprachumschaltfunktion vorhanden. Dafür kann man mit dem Hook ‚generateFrontendUrl‘ abhilfe schaffen.

$GLOBALS['TL_HOOKS']['generateFrontendUrl'][] = array('ModuleExtend', 'languageUrl');
$GLOBALS['MODULE_NAME'] = array('de/alias', 'en/alias');
public function languageUrl ($arrRow, $strParams, $strUrl) {
        if (in_array($strUrl, $GLOBALS['MODULE_NAME']) && $this->Input->get('auto_item')) {
            $strUrl = $strUrl.'/'.$this->Input->get('auto_item');
        }
        return $strUrl;
    }