Posts

[DRAFT] Review Linevast cloud hosting made in Germany

Motivation Currently we have several discussions about data security and that the major hosting providers offering real cloud experience are simply sitting in the US. Due to several projects I’m involved in I wanted to checkout modern hosting providers, fully complaining with the German Data Protection law (no EU rules, easy german rules) also providing advanced functionality like docker hosting, easy up and down scaling etc. So i found linevast.

How to use nextcloud files in TYPO3 7.6+

Motivation In one of our customers environments it was very common that the grafics department used a well defined directory structure including sync with nextcloud to allow access from outside of the company network. During the TYPO3 setup we recognized that our customers editors always did the following steps: Open Windows explorer Use preview functionality / view select a file, note or remember the file open TYPO3 File > Filelist Module Rebuild folder structure if the folders have been missing, to match the structure of the fileserver Upload image Edit content element As you might see, we also recognized really fast that the first part of the process should be simplified.

How to deploy your static website easily with gitlab

For some very simple projects we wanted ensure, that we can use git as we do it in nearly every project. Prerequisites: Project managed with Git Gitlab CE / EE Requirements: Branch based deployment Master branch should be published for production Other branches should be deployed as well, but in other folder like builds/{branch} Website users should not see the subfolders if they visit the website Basicly we manage our projects like in git flow, but any branch based way of using git should be sufficient.

EXT:Webdav for TYPO3 CMS

I’ve started to migrate my webdav extension to the CMS 6.x branch and i’d like to get some feedback. What it does: provide webdav access to your TYPO3 CMS installation also piping FAL storages (local and remote as API is used) If you never heard about FAL it the short form of „file abstraction layer“ this is used to provide access to files stored in any type of storage, can be locally, ftp, dropbod, webdav, whatever.

Usefull PHPStorm Plugins for TYPO3 FLOW and TYPO3 CMS

Today i just publish a short Post.

Have a look into these PHPStorm Plugins – they are great 😀

Warum 1und1 das Potential hat glückliche DSL Kunden zu haben

Sicher werdet ihr jetzt denken, „wow noch ein Werbetext von 1und1“, leider muss ich da enttäuschen. Ich will in den folgenden Zeilen, nach einem DSL Ausfall bei mir, analysieren, was besser laufen könnte, und das ganze bei minimalem Mitteleinsatz. Hardware Im Gegensatz zu den meisten großen Providern liefert 1und1 AVM Produkte als Router aus, diese werden unter dem Namen „1und1 Homeserver“ (7390) oder „1und1 Homeserver+“ (7490) versendent. Zu diesen Geräten gibt es je nach Anschluss mit der Sofortstart Option noch einen UMTS Stick (XS Stick P14v) dazu.

Setup Jabber notifications for Jenkins (Continuous Integration Server)

If you ever wondered how to tell Jenkins to send you Jabber messages to Google Talk here is how:

  1. create a google profile for you jenkins server
  2. login as this user, make a g+ profile (do not fill to much information)
  3. login into Jenkins and install the Jabber Plugin (Manage Jenkins -> Plugins), do not forget the dependencies
  4. go to Manage -> General and setup the Jabber connection (as in the image below
  5. go to the job configuration and set the recipient
  6. you’re done

Using Knowledgetree with PHP 5.3 – an Odysee ;)

Perhaps you needed to upgrade PHP on your Servers too. I needed to do this, because i wanted to use tine20.org with my local thunderbird. I thought nothing easier than that and contacted my server maintainer, the guys @hosteurope.de did a great job and upgraded php very fast – thanks guys. After some time i found out knowledgetree is out of order and the odysee began. After digging into the code and having used google heavily i found a solution:

Neues Design für meinen Blog – oder wie man TV-Framework Skins aus TYPO3 in WordPress nutzt – Teil 3

Mittlerweile wurde eine frühe Version des Skins auf WordPress.org für das theme directory eingereicht.

In der aktuellen Fassung wurde nun das ersetzen der jeweiligen Bereich noch vereinfacht.

Wir haben drei kleine Schritte:

  1. initialisieren der Klasse und laden der Default Ersetzungen (Styles, JavaScript für Plugins, etc.)
$helper = new GrabIt_Xml_Helper($options['layoutUri']);
$helper->enableDefaultPostProcessingForWP();
  1. Wir definieren was wohin geschrieben werden soll, das pre- und postProcessing wurde nun auf einen Funktionsaufruf gekürzt:
$helper->setPlaceHolder(
  'contentBlock-1',
  GrabIt_Util_Functions::renderSiteContent('page')
);
$helper->setPlaceHolder(
  'contentBlock-2',
  GrabIt_Util_Functions::renderSiteContent('sidebar1')
);
$helper->setPlaceHolder(
  'contentBlock-3',
  GrabIt_Util_Functions::renderSiteContent('sidebar2')
);
  1. Im letzten Schritt wird die Seite noch ausgegeben:
echo $helper->parseDocument();

Neues Design für meinen Blog – oder wie man TV-Framework Skins aus TYPO3 in WordPress nutzt – Teil 2

Wie versprochen kommen nun noch einige Details zum „Grabben“ des Themes. <?php class GrabIt_Xml_Helper { protected $prePlaceHolders = array( ‘contentBlock-1’ => ‘##CONTENT-1###’, ‘contentBlock-2’ => ‘##CONTENT-2###’, ‘contentBlock-3’ => ‘##CONTENT-3###’, ‘feature’ => ‘##FEATURE###’, ); protected $postPlaceHolders = array( ‘##CONTENT-1###’ => ‘content-1’, ‘##CONTENT-2###’ => ‘content-2’, ‘##CONTENT-3###’ => ‘content-3’, ‘##FEATURE###’ => ‘feature’, ‘##FOOTER###’ => ‘footer’, ‘##MENU###’ => ‘menu’, ); protected $debug = false; function __construct($url) { $this->setUrl($url); } function setUrl($url) { $this->url = $url; } function setPrePlaceHolders($array) { $this->prePlaceHolders = $array; } function setPrePlaceHolder($name, $value) { $this->prePlaceHolders[$name] = $value; } function setPostPlaceHolder($name, $value) { $this->postPlaceHolders[$name] = $value; } function parseDocument() { if(!