T3Rookies Summer Camp

7 May 2015 Comments Off

Did you know about T3Rookies? This is a new project, initiated and coordinated with great enthusiasm by Andrea Herzog. The purpose is to gather students and young people, help them integrate in the big TYPO3 community and provide them opportunities, logistics and support to become the developers and contributors of the TYPO3 future.

Arxia is proud to support this project and will offer this summer, from 27th of June – 4th of July 2015 a hands-on training to 6 T3Rookies. We prepared a nice project: a website for a foster home in Cluj, named Aksza. The Rookies will have the opportunity to meet those kids, with ages from 7 to 20 years and focus on learning and school (the oldest one is a student) and create a website from start to end: to conceive the site’s concept, design and content (in 4 languages: English, Romanian, Hungarian and German), of course to implement the site and to optimize it for search engines. The website should be ready and live at the end of the week, so there will be some intensive work (but don’t worry, no more than 6 hours per day), but rewarded in the free time with the great pubs, clubs and bars of Cluj Napoca (which is, this year, awarded with the title European Youth Capital).

And we have a surprize for the attendees: in the same period (25-28 June), one of the best music events in Romania is taking place near Cluj Napoca: Electric Castle

Remember T3EE 2014

15 April 2015 Comments Off

TYPO3 East Europe 2015 has been announced and it will be held on the 13th-14th of November. It is now a good time to remember the previous edition, T3EE 2014.

T3EE 2014 was the second edition of this event, initially started in 2013, its goal was to bring together developers, agencies and community members, from all around Europe. Also this year, Arxia is volunteering the organization of T3EE 2015.

Predating the main event, on Thursday we had a workshop at the Casino Urban Culture Center, organized by Arxia in partnership with the Cluj-Napoca City Hall and Cluj IT Cluster. The workshop focused on sustainable software solutions for the public administration, fostering a dialogue between the institutions from our region and our guests from Germany and the Netherlands, who shared their experiences and best practices in e-government, the use of open standards and web accessibility.

colaj-blog-casino

 

In the evening we had a welcome dinner held at the Matei Corvin restaurant, where we indulged ourselves with tasty local dishes and drinks.

colaj-blog-casa-matei

The main event started on Friday morning, at the Golden Tulip Ana Dome Hotel. At the entrance, the Halloween atmosphere was given to the participants by a vampire, which offered some “blood”, to loosen up a bit.

colaj-photo-2-welcome

After the opening ceremony, presented by Daniel Homorodean, the presentations started with a speech made by Rens Admiraal entitled “The current state of TYPO3 Neos + the short term roadmap”. The event continued with talks about community software, NEOS and TYPO3 CMS.

colaj-blog-1st-day

After the talks ended, everybody prepared for the main party, the Halloween party, held at Casa TIFF, in a Halloween theme decorated cellar. There you could find: witches, clowns, dark angels, vampires, scuba divers, Frankenstein and even Batman joined the party. Like all the others T3EE parties, we had a great time, with plenty of food, drinks (open bar, how else?) and had a lot of fun together till the break of dawn.

colaj-blog-halloween

The second day started at 10 AM, in the same location, this time on two session tracks. On this day the topics were more diverse, with talks like the TYPO3 Campus Project, Atomic development, WebGL – 3D World in your Browser and so on.

colaj-blog-2nd-day

For the afterparty we went out to a brewery, formerly a local beer factory – Fabrica de Bere Ursus – where as usual we had a good time, shared experiences and talk about different things concerning the TYPO3 world.

All in all, it was another great event, where everybody came together, shared their thoughts, opinions and experiences.

We expect to see you all and experience our future T3EE events!

FAL Code Sprint 2015

15 February 2015 Comments Off

At the end of January I attended to FAL Code Sprint in Essen , organized at the initiative of Andrea Herzog. The result of 3 working days is 71 fixed FAL issues which were merged to the Core. The event was focused on involving new people in the contribution process. T3Rookies involvement was appreciated and they had a great contribution on testing fixed issues and reporting some new ones (that were of course also fixed).

I had a great feeling to know that my work is part of something so important as TYPO3 and it will be used by so many people to create websites. To be sincere, at the beginning I was also kind of scared, as it was my first participation to such an event: I wanted to make a contribution, not only to participate – can I make something useful? But in the end I had 3 great days of coding and deep learning about TYPO3 Core and I was impressed by the focus on writing quality code and testing. I also want to thank Mathias Schreiber, Frans Saris and Fabien Udriot for their help and guidance in terms of code and good practice.
A bonus was the pleasure to talk with people that I already knew, but also to meet some new nice people.

Check more on typo3.org.

 Author: Alina Fleșer

Exercise with extbase and Ajax

25 July 2014 Comments Off

Introduction

This example is a dummy problem, which aims to create a basis for explaining the use of 3 concepts: format parameter, StandaloneView and PHP based views. The solution works with TYPO3 version >= 6.0

The problem

Let’s suppose that we need to implement the following task: we have a page that looks, at load, like in the below model:

Box C

When clicking on the link “Show Items” from box A, 2 new boxes (D & E) should be loaded, without page refresh (ajax call)

Box E

 

We will assume that Box D and Box E display the same records, let’s call them Items. Let’s also consider that Box D and Box E need to be templatable. As we can’t include the both boxes in the same Fluid template, due to the page layout, we need 2 different Fluid templates, one for each box. As they display the same records, for performance reasons, we can load them using a single ajax call, which will return a JSON object with 2 attributes, having as values the HTML for Box D and the HTML for BOX E. On clicking the title of the Item, the user will be redirected to a page displaying the details of the item.

Solution

Let’s call the extension test_extension, the controller Test.We will need:
an action to return the JSON, let’s call it ajax,
an action to display the detail (single) page of the item, let’s call it show
let’s consider we would also need an action to display the “Show items” link (although in the current example this is not necessary), let’s call it tease

So we need to resolve 2 issues: 1. the ajax call should return a JSON and 2. the ajax action should parse 2 different templates.

1. The ajax call should return a JSON

Let’s suppose we registered the plugin in ext_localconf.php with the name Test:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
Arxia.’ . $_EXTKEY,
‘Test’,
array(
Test=> ajax,show,tease,
),
);

The most convenable solution to handle this ajax request is using typenum (typenum allows to create different versions of the same page, accessible by adding the type GET/POST parameter in the url of the page). So we need to configure a new version of the site (let’s choose typenum 121) in the test_extension/Configuration/Typoscript/setup.txt file.

My favorite way of including a plugin through Typoscript is to actually select a content (tt_content). A container page may be used to add the content. This is my favorite way because we will have access to all the configurations of the plugin’s flexform – that will allow to an advanced editor to easily change some parameters, like the page which contains the records.

testPage = PAGE
testPage.typeNum = 121
testPage.config.disableAllHeaderCode = 1
testPage.config.additionalHeaders = Content-type:application/json
testPage.config.xhtml_cleaning = 0
testPage.10 = CONTENT
testPage.10{
table = tt_content

#
# a content of type plugin, will have in the list_type field a value which will respect the following format
# <extensionname>_<plugin_name>, in lowercase; if the extension name has “_” they will be ignored;
# as we registered the plugin Test in ext_localconf.php, the list_type value will be “testextension_test”;
# adding the below condition, we ensure that no undesired content is selected
#
select.andWhere = list_type = “testextension_test”
select.pidInList = <the container page id>

renderObj < tt_content

# below we remove tt_content default wrapping
# and preserve only the plugin output
renderObj.stdWrap >
renderObj.list.10 >
renderObj.list.20.stdWrap >

}

Although we can simply return the JSON from the action, let’s return it from a view, as, in real life, some output related decisions may be managed from the view. But as we may need the PHP power inside the view, we are going to use a PHP based view. This type of view use pure PHP to generate the output.

We need to add the file corresponding the view in the folder <extension>/Classes/View/<ControllerName>. The file name should follow the naming convention <Action><Format>.php. We need the format to be JSON, so the path for our file should be “test_extension/Classes/View/Test/AjaxJson.php”.

The view should extend TYPO3\CMS\Extbase\Mvc\View\AbstractView (which implements the interface TYPO3\CMS\Extbase\Mvc\View\ViewInterface) and it should implement the method render. Let’s consider that we will assign to the view, from the ajax action, 2 variables: boxAContent and boxBContent. We will retrieve them as keys of the variables attribute of the view. The content of our view file will be:

<?php
namespace Arxia\TestExtension\View\Test;

class AjaxJson extends \TYPO3\CMS\Extbase\Mvc\View\AbstractView {

public function render() {
$jsonArray = array(
‘boxAContent’ => $this->variables['boxAContent'],
‘boxBContent’ => $this->variables['boxBContent']
);
return json_encode($jsonArray);
}
}
?>

However, we need to tell extbase the request is in JSON format, in order to correctly recognize the view. We can do this using the less known parameter: format. Also let’s suppose we want to cache the JSON response (as any other page would be cached). We will create the link to “Show items” in Box A. As this is outputted by the tease action, we also have a corresponding view, which should contain the following code:

<f:link.action action=”ajax” controller=”Test” format=”json” pageType=”121″>
<f:translate key=”LLL:EXT:test_extension/Resources/Private/Language/locallang_db.xlf:show_items” />
</f:link.action>

The parameter format will add tx_testextension_test[format]=json, which will tell extbase that the request is using JSON format. After we have this link, we can use Javascript to change the normal navigation when clicking the link with an ajax request.

2. The ajax action should parse 2 different templates (Fluid files)

In order to parse from an action 2 different Fluid files, we will need to use a special view provided by extbase: TYPO3\CMS\Fluid\View\StandaloneView. We will create in Test controller a protected function which also assign to the specific template some variables. Let’s consider we added the Fluid files in Partial folder, as they may be used in other FLUID views.

protected function renderFileTemplate($templateFile, $variables) {
$view = $this->objectManager->get(‘TYPO3\\CMS\\Fluid\\View\\StandaloneView’);

$view->setControllerContext($this->controllerContext);

$extbaseFrameworkConfiguration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);

// generate the template path
$relativeTemplateFilePath = $extbaseFrameworkConfiguration['view']['partialRootPath'] . $this->request->getControllerName() . ‘/’ . $templateFile;
$absoluteTemplateFilePath = TYPO3\CMS\Core\Utility\GeneralUtility::getFileAbsFileName($relativeTemplateFilePath);
$view->setTemplatePathAndFilename($absoluteTemplateFilePath);

// asign variables to the template
$view->assignMultiple($variables);

return $view->render();
}

The ajax action will call this function 2 times and it will assign the result of the 2 parsed templates to the PHP based view

public function ajaxAction() {
$items = $this->itemRepository->findAll();

// generate Box A
$boxATemplate = ‘BoxA.html’;
$variables = array(‘items’ => $items);
$boxAContent = $this->renderFileTemplate($boxATemplate, $variables));
$this->view->assign(‘boxAContent’, $boxAContent);

// generate Box B
$boxBTemplate = ‘BoxB.html’;
$variables = array(‘items’ => $items);
$boxAContent = $this->renderFileTemplate($boxATemplate, $variables));
$this->view->assign(‘boxBContent’, $boxBContent);
}

Final thoughts
Although the above example is just a dummy problem, all of the 3 concepts may be used in various real problems. An example of a real-life problem solved by StandaloneView can be found here: forge.typo3.org: How to use the Fluid Standalone view to render template based emails

Other useful links are:

Notes:
Most of the comments code were removed in order to save space.

 

Author: Alina Fleşer

TYPO3 Neos – Ready for production?

30 June 2014 Comments Off

TYPO3 Neos logo

TYPO3 Neos is the next-generation open source content management system made by the TYPO3 community. Neos is based on the PHP framework TYPO3 Flow.
There was & still is a lot of hype lately around the new TYPO3 product, TYPO3 Neos, that makes many people ask one simple question: Is TYPO3 Neos ready for production? For different clients, with different needs, for “impossible” projects?
Many TYPO3 agencies ask if Neos is ready for production. We will try to answer, from our direct experience gathered while implementing several Neos projects

TYPO3 Neos hands on - Case Study #1

Naturally, we were excited when we saw the first opportunity to propose TYPO3 Neos as a solution for a small local institution that had an old website on a deprecated platform. The reason we chose to go with TYPO3 Neos was a combination of eagerness to try it on a real world project and also because it really fit well with the needs of our client. Our client’s editors were people who weren’t technical at all, people from the medical sector. TYPO3 Neos is a perfect candidate for simple editor:

  1. Simple editing method
  2. Short learning period
  3. No training required
  4. Intuitive use

Having experience with TYPO3 Flow was also a factor when we made the decision for TYPO3 Neos because the CMS itself is no more than a TYPO3 Flow application.

TYPO3 Neos 1.0 was the starting point for us and during the development we saw how easy custom elements can be created with the power of nodes & TypoScript 2.0. But what hurt us the most was the acute lack of documentation. Finding the right documentation was not a matter of looking into wikis, but mailing lists or even IRC chats on Freenode channel #typo3-neos
That can be really frustrating, but with lots of coffee & patience that can be overcome.

The project didn’t hit us with any surprises and development went really smooth despite that fact that it was a new CMS for everyone involved in the team. Version 1.0 was buggy especially in the backend, problems usually occurred with the editing of content, most of the times exception were thrown if the user deleted content in some cases.
After delivery we were surprised that the client didn’t need any training, everything was so intuitive for him that content was added by editors without any help / training from our side. Impressive.

TYPO3 Neos hands on - Case Study #2

Another project that came to us as a explicit request for TYPO3 Neos, gave us the opportunity to test drive the freshly released TYPO3 Neos 1.1. We must say that the Neos team did a great job making a more stable version, problems that usually occurred in backend were fixed and a great improvement in performance was very welcomed. Also, some new minor features were introduced, like node type switching, which was badly needed for editors.

But the localization & translation are still missing from the backend, although the foundation was set already in 1.1. For now, the easiest way to do multilingual websites with TYPO3 Neos is to use the old fashion way that was used also early on in TYPO3 CMS, different page trees for each language. The TYPO3 Neos team promises to deliver Content Dimensions, an alternative to the translation handling that currently exists in TYPO3 CMS. The content dimension concept is the foundation to work with different content variants and have a very flexible localization solution in Neos. The user interface to work with content dimensions and translations will be part of the next version (1.2).
For example, you can have more than languages, you could make variants of a content element for people ages 13 -25 and other variants for people ages 26 +. This cool features will help websites present relevant information not only by language, but also depending on the website user characteristics.

Getting back to our project, integration of template was easy and even if the website was multilanguage we managed to get by the missing translations infrastructure quite easily.
Since the website was responsive, we needed to target different devices and here our experience with Flow / Fluid kicked in. This is one of the advantages of TYPO3 Neos for agencies that are working with Extbase / Fluid / Flow is that even if they never touched it, it will feel familiar and custom plugins will be no more than simple packages. But most of the time you won’t need dedicated plugins, like extensions in TYPO3 CMS. Nodes & Fluid are extremely flexible that in most cases you won’t need a plugin.

TYPO3 Neos & Deployment

Another aspect that we love about TYPO3 Neos is deployment. Having from the start each website as a Flow package is just awesome, during development and also after. Working with a team under VCS is extremely easy and once you are done, all the content can be exported into a single XML file. No database dumps, we just installed a fresh Neos on the clients server and installed the package, et voila! Everything was working perfectly.

Production ready can have different meanings for different people, but some key factors are still missing:

  1. Translation / localization
  2. Multi domain support
  3. Documentation

Once all the above are stable and in good shape, we can state that TYPO3 Neos is indeed production ready.

Conclusion

TYPO3 Neos is already good for small presentation websites, we are glad to see how easy the inexperienced editors get to manage the content with Neos and we believe that given time it will have a bright future.

We believe in the power & concepts that TYPO3 Neos brings to the CMS market and with the new skills we acquired, we are ready to deliver TYPO3 Neos projects!

Author: Tomita Militaru

 

Arxia at T3DD14 in Eindhoven

23 June 2014 Comments Off

We’ve just returned from the TYPO3 Developer Days held in Eindhoven the Netherlands. The T3DD is one of the most important events in the TYPO3 Universe gathering together more then 200 developers from different countries and continents. It’s the place where you can meet almost all the core developers of TYPO3, TYPO3 Neos and TYPO3 Flow. Our team was represented by László Bodor and Tomiţă Militaru, both TYPO3 integrators and extension developers.

Tomi and Laci

Although not there physically, our colleagues Alina Fleşer and Daniel Homorodean were also there in pictures (see below)

Alina and Daniel

The event started on Thursday 19th of June with an opening speech from Patrick Broens followed by Ben van’t Ende and Olivier Dobberkau. The opening session featured an interesting community building moment. Ten veteran TYPO3 people become so called buddies of 10 newcomers into the TYPO3 world, it’s an interesting idea and it will probably help the newcomers to integrate into the TYPO3 community more easier.

After the opening ceremony the workshops kickstarted in full force in the different rooms of the TechniekHuys. Even from the first day it was obvious that there is a very big interest in subjects related to TYPO3 Neos (full rooms at almost every Neos related workshop). Due to the nature of the T3DD (having several parallel tracks) we could attend only a limited number of workshops but from what we’ve seen there was quite some number of interesting workshops. The true value of the T3DD is that these workshops are held by people who actually created that feature, extension or product. This way the attendees can direct their questions directly to the developer and can get a qualified opinion on the subject. The first day ended with the the lunch and some socializing.

Friday I’ve attended the THEMES workshops and Tomiţă went to the Flow/ Neos contribution workshop. The THEMES project aims to bring interchangeable themes to the TYPO3 world just like other CMS’s do so and this is a subject i was always interested in. The workshop held by Kay Strobach, Jo Hasenau and Thomas Deuling presented the progress of the project so far. And then we’ve even created a theme in the second part of the workshop based on the bootstrap package done by the developers. When the themes extension will be mature enough and a distribution will be available with some prepackaged themes and extensions it will be much easier for newcomers to kickstart their website with TYPO3 and some themes. The second day ended with the coding night where people could work on different bugs and features from within the TYPO3 family of products (TYPO3, Neos, Flow) and extensions.

Photo credits: R. Kuthe – @mixedpixel

On the 3rd day it was Flow / Neos time for us. First the Flow beginner workshop with Robert Lemke – although I’m not really a beginner anymore but i attended to pick up maybe some new things or best practices. Then in the afternoon we’ve attended the TYPO3 Neos Advanced integration workshop held by Christian Müller and Sebastian Kurfürst. This night was the social event night which started with a barbeque just outside of the TechniekHuys and then continued with the soccer game Germany – Ghana projected on a big screen. Unfortunately for the audience Germany only managed a draw 2-2 with Ghana. Remains to be seen who will be the winner of group G on Thursday when Germany meets the USA. Of course the social event wasn’t just about the game, there were lots of discussions, beer, wine and whatnot.

Unfortunately for us we had to leave after this night because on Sunday morning we’ve had our plane back. We have to thanks to the organizers for this great event which gave us the opportunity to learn more, to meet nice people from the Netherlands, Germany and Poland. Also a big thank you for all the sponsors, especially jweiland.net , domainfactory, aoe and networkteam.

Greetings to all of you from Cluj Napoca – The heart of Transylvania and we hope to see you all at TYPO3 East Europe in 31 October / 1 November 2014.

Author: László Bodor

It’s time to upgrade to TYPO3 6.2 LTS

3 April 2014 Comments Off

As you probably know on the 25th of March the newest version of TYPO3 CMS has been released. Version 6.2 is a Long Term Support version, the second LTS released by the TYPO3 community and it will be supported until 2017. This release is focused on enterprises which use the 4.5 LTS version.

There are quite some new features in TYPO3 6.2, you can read all about those in the release notes or if you would want a more technical overview of the new features then you can look at the What’s new slides of the 6.2 version. The new features appeal for a broad user base: editors, integrators, administrators, developers and security specialists. We believe that these  new additions to the TYPO3 feature set along with the stability and performance improvements are a good reason to upgrade to version 6.2 LTS.

Selection_055

Upgrading from TYPO3 4.5 to TYPO3 6.2 

TYPO3 4.5 LTS is supported with security and stability fixes until March 2015. This gives roughly one year to current users of TYPO3 4.5 LTS to upgrade to TYPO3 6.2 LTS. The upgrade path is in most cases straightforward and smooth. There is also an extension called smoothmigration which will analyse your current setup, the installed extensions and configuration to check for features and functions which have been removed or changed during the update.

However in some cases changes will be required, either to configurations or existing extensions which are not compatible with TYPO3 6.2 LTS. During the last several months our team upgraded several websites from TYPO3 4.5 LTS to TYPO3 6.1 and we have begun the first upgrades to TYPO3 6.2 LTS. During our upgrades we encountered problems especially on custom 3rd party extensions which were not compatible with this newest TYPO3 release.

In light of the above we recommend our customers not to postpone the upgrades until the second part of the year because the March 2015 deadline will be very close and professional help will be scarce (as many people will be upgrading projects by then). And we can’t even imagine leaving your TYPO3 installation potentially vulnerable due to lack of updates after March 2015.

If you need help upgrading or you just want to evaluate how much effort is needed for upgrading your TYPO3 installation to 6.2 LTS then don’t hesitate to contact us.

AWS CloudFormation TYPO3 Introduction Package Template

21 October 2013 Comments Off

Hosting in the cloud becomes more and more a common practice, including for TYPO3 projects, and easy deployment is very important.  Amazon is one of the most popular providers and we had the opportunity to try it out for one of our projects.

AWS CloudFormation offers the possibility to create new instances using custom or existing configuration templates. For details about the AWS CloudFormation and the configuration templates use the following links: http://aws.amazon.com/cloudformation/aws-cloudformation-templates, http://aws.amazon.com/cloudformation.

As we did not find an existing template for TYPO3, we have made one, and as you can see further, it is actually quite simple to do that.

To create a new instance which downloads automaticaly the TYPO3 Introduction Package you have to:

  • - download the configuration file
  • - login to your amazon web service account
  • - go to the CloudFormation page
  • - create a new stack by uploading the TYPO3 Introduction Package template file
  • - specify the TYPO3 database name and the mysql acces to the database you need, the keyname for the ssh acces
  • - go to the last step, save and the new instance is ready

After you have created the instance, use the instance’s link into the browser, follow the steps to install the TYPO3 Introduction Package and the site will be ready to use.

The AWS CloudFormation template for the TYPO3 Introduction package contains the settings for:

  • - install the apache, mysql and php
  • - download the TYPO3 Introduction Package source from http://get.typo3.org/introduction
  • - unzip de code and copy the folders to /var/www/hml/
  • - create the ENABLE_INSTALL_TOOL file into the typo3conf folder
  • - add write access to the following folders:
    • - fileadmin
    • - typo3conf
    • - typo3temp
    • - uploads

You can download the template from here.

Author: Diana Precup

Certified TYPO3 Integrators at Arxia

30 January 2012 Comments Off

certificationLast December Arxia sponsored the 2nd TYPO3 Usergroup Romania Meetup. The event was a great success and was followed by the first ever TYPO3 Certification Event in Romania. The certification exam was conducted by officials of the TYPO3 Association.

Three of our colleagues registered for the Certification Event and participated in the exam. Today we received word that all 3 passed the exam. As a result in the Arxia team there are 3 Certified TYPO3 Integrators. So our congratulations go to:

  • Fleșer Alina
  • Bodor László
  • Militaru Tomiță

Arxia is as good as its people are, so that’s why we invest in trainings and certifications in order to be able to deliver quality services to our customers. Having three Certified TYPO3 Integrators is another important step and a guarantee of the quality of our work.

New TYPO3 version and security bulletin

27 July 2011 Comments Off

The TYPO3 Core Team just released new versions 4.3.12 , 4.4.9 and 4.5.4 of the TYPO3 Enterprise Content Management System.

logo-typo3These version are maintenance and bugfix versions as several bugs and security vulnerabilities were discovered in the TYPO3 core. These issues were also announced yesterday after the new versions were available. It is common practice that once these issues are discovered by the Core Team they are fixed and then announced after the patch version is available.

Because bugs and security issues are discovered from time to time in every software package, it is strongly recommended that users keep their TYPO3 version and also 3rd party extensions up to date in order to avoid their server being compromised

Arxia offers its customers a complementary service for a monthly fee that will ensure that the TYPO3 version and the used extensions are updated as soon as a patch is available. More details about this service will be available in a separate posting on this blog. Until then you can contact us anytime for more information.