Drupal 7 - Symfony - Dependency Injection Documentation

Size: px
Start display at page:

Download "Drupal 7 - Symfony - Dependency Injection Documentation"

Transcription

1 Drupal 7 - Symfony - Dependency Injection Documentation Release Makina Corpus Dec 22, 2017

2

3 Contents: 1 Getting started Installation Write your first forward-compatible Drupal 8 module Working with event dispatcher A few weird things this modules does you should be aware of Services this Module Provides 5 3 Bringing Symfony 3 Fullstack and Bundles into Drupal Installation Configuration Working with bundles (Symfony 3.x) Other considerations Using Twig For Drupal Installation Usage Using Drupal 8 Forms in Drupal Defining your form Using the form builder Using your forms in menu Using the Symfony Web Debug Toolbar in Drupal Enable the debug and web profiler bundles Add the necessary configuration Next step: have fun! Using Monolog in Drupal Installing monolog Configuring Monolog Using Drupal 8 Path Alias Manager in Drupal Additional features Using Symfony event sucriber for Drupal events Event Classes list Example i

4 10 Introduction Support 27 ii

5 CHAPTER 1 Getting started 1.1 Installation Easy way : if your Drupal 7 project is composer based This module works with composer, and should be installed using it, go in your project repository and just type the following line in your terminal : composer require makinacorpus/drupal-sf-dic Please refer to this Composer template for Drupal projects to have a nice exemple for doing this. Once Composer is installed and autoload dumped, you may add these lines to your settings.php : <? php include_once DRUPAL_ROOT. '/../vendor/autoload.php'; $conf['kernel.cache_dir'] = DRUPAL_ROOT. '/../cache/'; $conf['kernel.logs_dir'] = DRUPAL_ROOT. '/../logs/'; Hard way : if your Drupal 7 project is not composer based You may use the Composer Manager module although it s untested, or if it s not too late you probably should provide a global composer.json for your Drupal site. 1.2 Write your first forward-compatible Drupal 8 module Step 1: Define this module as a dependency Any module relying on it should express it s dependency via the its info file: 1

6 dependencies[] = sf_dic You may also provide a valid composer.json (not required, but it would be a good practice to provide one) Step 2: Define your service Then you just need to write a MYMODULE.services.yml file in your module folder: parameters: mymodule_some_param: 42 services: mymodule_some_service: class: "\MyModule\Class" argument:... # Anything that is Symfony compatible Please refer to Symfony s dependency injection container documentation Step 3: Fetch your services via the Drupal 8 compatibility layer Note: The right way of doing this would be to never use the compatibility layer and introduce all your services via your services definition file. Nevertheless, at some point, you will need to get a specific service in the Drupal 7 oldschool legacy procedural code, in case you would just need to : <? php function mymodule_do_something() { $myservice \MyModule\SomeService */ $myservice = \Drupal::service('mymodule_some_service'); The container itself is supposed to be kept hidden, but if you wish to fetch at some point the container, you might do it this way : <? php function mymodule_do_something() { // The Drupal 8 way. $container = \Drupal::getContainer(); // A more generic way (choose either one, the one upper is prefered). $container \Symfony\Component\DependencyInjection\ContainerInterface */ $container = \Drupal::service('service_container'); // From this point, you might use some parameters given by the various modules // services definitions. $somevalue = $container->getparameter('some_module.some_param'); 2 Chapter 1. Getting started

7 1.2.4 Step 4: Register compiler pass I am sorry for this one, it d need a little bit of magic to make it easy and working at the same time, so here is the arbitrary choose way: In Drupal 8 you can define classes implementing the Drupal\Core\DependencyInjection\ServiceProviderInterface interface, which is also defined by this module. But, because Drupal 7 is not Drupal 8, you will need to arbitrarily write a class named `Drupal\Module\MYMODULE\ServiceProvider` which implements this interface, and write it into the MYMODULE.container.php file. For example, let s say your module name is kitten_killer, you would write the kitten_killer. container.php file containing the following code : <?php // Note that the namespace here contains the lowercased Drupal internal // module name, if you don't, the container builder won't find it. namespace Drupal\Module\kitten_killer; use Drupal\Core\DependencyInjection\ServiceProviderInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; // You MUST NOT change the class name. class ServiceProvider implements ServiceProviderInterface { /** * {@inheritdoc */ public function register(containerbuilder $container) { // From this point you can arbitrarily use the container the way you // wish and register anything you need. $container->addcompilerpass(new MyModule\DependencyInjection\SomeCompilerPass()); 1.3 Working with event dispatcher Create an event subscriber implementing Symfony\Component\EventDispatcher\EventSubscriberInterface then register it in your my_module.services.yml file by adding it the event_subscriber tag : services: my_module_some_event: class: MyVendor\MyModule\EventSubscriber\SomeEventSubscriber tags: [{ name: event_subscriber ] 1.4 A few weird things this modules does you should be aware of Both \Drupal\node\NodeInterface and \Drupal\user\UserInterface are implemented and automatically in use via the Drupal 7 entity controllers but you may also load them using entity storage services 1.3. Working with event dispatcher 3

8 path_inc variable is enforced and you cannot change it using your settings.php file, instead your module should override the path.alias_storage or path.alias_manager services Global $language variable is replaced by a \Drupal\Core\Language\LanguageInterface instance All the Drupal variables are set as a container parameters, which mean that you can use all of them as services parameters. Please note that the side effect of this is that if you wish to change a variable and use the new value as a service parameter, you will need to rebuild the container. And that s pretty much it Not all services can go in the container There is no way to allow this module to get the enabled module list before the DRUPAL_BOOTSTRAP_CONFIGURATION phase (unless you are lucky and caches are set) or before the DRUPAL_BOOTSTRAP_DATABASE phase (because Drupal 7 will need the database to get the module list). That s why the hook_boot() implementation in this module will remain. This means that there is absolutly no way to allow cache backends services to be in the service container, sad, but true story. Long story short: any service you would want to involve in any pre-hook_boot() running code cannot be set in the container Compiled container is a PHP file Which means that if you run Drupal with multiple web heads that don t share the same filesystem, you might experience container desync problems on rebuild. Future plans to solve this is to provide a cache based container such as Drupal 8 does. 4 Chapter 1. Getting started

9 CHAPTER 2 Services this Module Provides Note: This list is not complete, but is updated from time to time, the best way to have a complete list is to read the services.yml file. This modules provides a set of Drupal 8 API-compatible services that you should use in your own Drupal 7 module in order to reduce the future porting time to Drupal 8 : service_container : \Symfony\Component\DependencyInjection\ContainerInterface instance that points to the current container itself request_stack : \Symfony\Component\HttpFoundation\RequestStack instance, yes, a real one in your Drupal 7 database : \DatabaseConnection instance that points to the Drupal default database event_dispatcher : Symfony\Component\EventDispatcher\EventDispatcher which allows you to use it at your convenence; Note: please be aware that only the KernelEvents::TERMINATE event is run as of now (others are not revelant in a Drupal 7 site) entity.manager : \Drupal\Core\Entity\EntityManager passthru that only defines the getstorage($entity_type) method that will return \DrupalEntityControllerInterface instance You can fetch \Drupal\Core\Entity\EntityStorageInterface instances via the entity manager service, which are compatible with Drupal 8 interface module_handler: \Drupal\Core\Extension\ModuleHandler passthru uses Drupal 7 module.inc functions cache_factory : \Drupal\Core\Cache\CacheFactory instance, working as expected 5

10 cache.name (where NAME in bootstrap, default, entity, menu, render, data) : \Drupal\Core\Cache\CacheBackendInterface specific implementation that will proxify toward the Drupal 7 cache layer, fully API compatible with Drupal 8 logger.factory : Drupal\Core\Logger\LoggerChannelFactory compatible service that will allow you to inject loggers into your services instead of using the watchdog function logger.channel.name (where NAME in default, php, image, cron, file, form) : Psr\Log\LoggerInterface instances, also happen to be Drupal\Core\Logger\LoggerChannelInterface implementations form_builder : Drupal\Core\Form\FormBuilder instance, with a single method implemented: getform which allows you to spawn Drupal 8 style forms in your Drupal 7 site, the implementation is transparent current_user : Drupal\Core\Session\AccountProxy compatible with Drupal\Core\Session\AccountInterface which proxifies the current user, note that it also replaces the $GLOBALS['user'] object path.alias_manager : Drupal\Core\Path\AliasManagerInterface that does pretty much the same thing as Drupal 7 does but keeping compatibility path.alias_storage : Drupal\Core\Path\AliasStorageInterface that does pretty much the same thing as Drupal 7 does but keeping compatibility path.current : Drupal\Core\Path\CurrentPathStack that you should always use as your object dependencies whenever you need the current path, instead of using current_path() or $_GET['q'] You should use \Drupal\Core\Session\AccountInterface whenever you need a user account which is not meant to be manipulated as an entity, for example for various access checks 6 Chapter 2. Services this Module Provides

11 CHAPTER 3 Bringing Symfony 3 Fullstack and Bundles into Drupal 7 This module can natively use Symfony bundles into the Drupal application, but you must ackowledge the fact that you cannot use the whole Symfony API : you may use *Bundle class, the Extension class, and provide services via the Resource/config folder; you may use Twig natively (the TwigBundle is automatically registered in the kernel if the classes are found) where template naming convention are the Symfony naming conventions; this module provide an abstract controller class MakinaCorpus\Drupal\Sf\Controller that you may extend in order to provide controllers, you must then now that your controllers won t behave like symfony components, but there return will only be used to fill in the page content Drupal region; use the router component, as any Symfony application, but you must know that controllers will be executed by a specific Drupal menu router callback instead of being run by the HttpKernel. Router usage is disabled per default; you may use anything you want as long as you set it as composer dependencies case in which you might want to see the next chapter. Please note that it will only work to the packages you pulled extend. 3.1 Installation Note: Bringing Symfony 3 Fullstack into Drupal 7 can only work with the Drupal Clean URL function enabled Bringing in required dependencies You must require a few packages for this to work, if you want twig you must : composer require symfony/twig-bundle 7

12 You probably also want to add the twig/extensions package. Alternatively, if you are not afraid and have beard, you could just: composer require symfony/symfony Which should work gracefully, note that we are not using the Symfony full stack so most of its code won t be in use Enable the fullstack framework usage You must use the symfony/symfony package as a dependency, then add the following variables to your settings.php file : <? php $conf['kernel.symfony_all_the_way'] = true; 3.2 Configuration Configuration directory structure (Symfony 3.x) Symfony will need a kernel root directory for loading its configuration and default resources, the commonly seen app folder in Symfony applications. Directory structure when using this module is exactly the same, if the app directory exists as follows : <? php /path/to/project/www/index.php # Where Drupal lives /path/to/project/app You will then find the following directory structure : app/config/config.yml where your configuration is stored; app/config/config_environment.yml in opposition to a common Symfony application, these files are optional and will fallback on the config.yml file, but you may use them; app/config/parameters.yml where your parameters are stored; app/routing.yml where the routing happens; app/resources/ where you may put additional resources, such as Twig template overrides. In case the app directory does not exists, the module will fallback onto the following structure : www/sites/default/config/config.yml; www/sites/default/config/config_environment.yml; www/sites/default/config/parameters.yml; www/sites/default/routing.yml; www/sites/default/resources/. Please also note that if you don t provide any config.yml file, the module will automatically fallback on its own implementation, you might find in : drupal-sf-dic/resources/config/config.yml. 8 Chapter 3. Bringing Symfony 3 Fullstack and Bundles into Drupal 7

13 3.2.2 Configuration directory structure (Symfony 4.x) Symfony will need a kernel root directory for loading its configuration and default resources, the commonly seen config folder in Symfony applications. Directory structure when using this module is exactly the same, if the app directory exists as follows : <? php /path/to/project/public/index.php # Where Drupal lives /path/to/project/config /path/to/project/config/packages /path/to/project/config/bundles.php # Required by Symfony project template /path/to/project/config/src /path/to/project/config/src/controller # Required by Symfony project template /path/to/project/templates # Required by Symfony project template This has yet to be fully documented, but as quick start, just copy the Resources/docs/sample/symfony-4 folder contents into your project root folder. The other steps are optional for Symfony 4, use symfony-flex for bundles auto configuration, and the dotenv component for environment specific configuration Overriding configuration (Symfony 3.x) In order to override the configuration and provide your own, you must copy the following files into the previously mentionned config/ directory : drupal-sf-dic/resources/config/config.yml; drupal-sf-dic/resources/config/parameters.yml. 3.3 Working with bundles (Symfony 3.x) You may, as any Symfony application, provider your own kernel implementation, for this, copy the sample/appkernel.php file and set your own bundles. For it to work, you need the AppKernel.php file to be automatically loaded, for this use composer. Let s consider you placed the file at this location : app/appkernel.php, you may add the following into your composer.json file : { "autoload" : { "files" : [ "app/appkernel.php" ] And then : composer dump-autoload 3.3. Working with bundles (Symfony 3.x) 9

14 3.4 Other considerations Using Symfony for 403 and 404 pages You may use Symfony for your basic error pages, yet Drupal cannot catch exceptions without modifying its source code, we still can catch 403 and 404 errors using the Drupal configuration. For this, you need to go Symfony all the way as described above, then add the following variables into your settings.php file : <? php $conf['site_403'] = 'symfony/access-denied'; $conf['site_404'] = 'symfony/not-found'; Using the router You can use the Symfony router, and build 100% Symfony compatible code, please see current/book/routing.html Register your bundle s services.yml file You must first tell this module you will use the Symfony router by adding the following variable to your settings. php file : <? php $conf['kernel.symfony_router_enable'] = true; Then add a sites/default/routing.yml file, containing : my_bundle: resource: "@MyVendorMyBundle/Resources/config/routing.yml" prefix: / 10 Chapter 3. Bringing Symfony 3 Fullstack and Bundles into Drupal 7

15 CHAPTER 4 Using Twig For Drupal Installation To the twig engine, first install the dependencies with : composer require "symfony/twig-bundle:3.1.*" Note: If you want to use Twig, all the dependencies written above are mandatory, and you must use them in the specified versions. Add engine = twig to your theme info file, rebuild your cache, and that s it. Note: If you plan to inherit from a non twig-theme, you may need the latest patch from Usage Twig template naming convention The only thing you have to know is that any module may provide.html.twig files, and the twig engine will automatically take over it. If you want to do a more advanced twig usage, and benefit from all Twig advanced features, you need to know that all the Drupal provided Twig templates will have the following identifier : [theme module]:name:path/to/file.html.twig 11

16 4.2.2 Other template usage within your twig templates For example, let s say you have the tabouret module defining the tabouret/templates/chaises.html.twig the identifier would then be : module:tabouret:templates/chaise.html.twig If you want to write a twig file extending this one, you may add into your.html.twig file : {% extends 'module:tabouret:templates/chaise.html.twig' % My maginificient HTML code. And you re good to do Twig files from bundles You can use Twig files from bundles, you have to follow the Symgfony Twig usage conventions and it ll work transparently Arbitrary render a template You may just: <? php return sf_dic_twig_render('module:tabouret:templates/chaise.html.twig', ['some' => $variable]); And you re good to go. 12 Chapter 4. Using Twig For Drupal 7

17 CHAPTER 5 Using Drupal 8 Forms in Drupal Defining your form In order to be able to use Drupal 8 style forms, you may spawn them with 2 different methods. First you should define a form implementing FormInterface or extending FormBase. Note: This API is compatible with Drupal 8 so you should read the Drupal 8 documentation. Please notice there are a few missing methods a few differences when dealing with entites and URLs, since Drupal 8 does not handle those the same way as Drupal 7. <?php namespace MyVendor\MyModule; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; class MyForm extends FormBase { public function buildform($form, FormStateInterface $form_state) { // build a form API array, classical then return $form; public function submitform(&$form, FormStateInterface $form_state) { // do something... 13

18 5.2 Using the form builder In any kind of code returning a render array, directly call : <?php function my_module_some_page() { $build = []; $build['form'] = \Drupal::formBuilder()->getForm('\\MyVendor\\MyModule'); return $build; 5.3 Using your forms in menu Because we had to hack a bit the way Drupal spawn this forms (don t worry they still are 100% Drupal working forms) if you use the hook menu you must replace the drupal_get_form page callback with sf_dic_page_form in order for it to work, and that s pretty much it : <?php /** * Implements hook_menu(). */ function sf_dic_test_menu() { $items = []; $items['test/form/implements'] = [ 'page callback' => 'sf_dic_page_form', 'page arguments' => ['MakinaCorpus\Drupal\Sf\Tests\Mockup\FormImplements', "42 "], 'access callback' => true, 'type' => MENU_CALLBACK, ]; //... return $items; 14 Chapter 5. Using Drupal 8 Forms in Drupal 7

19 CHAPTER 6 Using the Symfony Web Debug Toolbar in Drupal 7 Warning: Please consider the fact that this remains an experimental feature and it might interfer with some Drupal AJAX queries. If you use the Symfony full stack, and registered the framework bundle, you can now, if you wish, make use of the Symfony profiler and web debug toolbar in Drupal. For this, start with : Bringing Symfony 3 Fullstack and Bundles into Drupal 7 and set-up both Symfony full-stack framework and the router Using Twig For Drupal Enable the debug and web profiler bundles You need to provide your own AppKernel implementation via the app/appkernel.php file. See Working with bundles (Symfony 3.x) for more details about how to provide your own custom kernel. Once you have your own kernel, add this into the registerbundles() method: <? php public function registerbundles() { $bundles = [ new \Symfony\Bundle\FrameworkBundle\FrameworkBundle(), //... ]; if (in_array($this->getenvironment(), ['dev', 'test'], true)) { $bundles[] = new \Symfony\Bundle\DebugBundle\DebugBundle(); 15

20 $bundles[] = new \Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); return $bundles; 6.2 Add the necessary configuration In the app/config_dev.yml file: framework: router: resource: "%kernel.root_dir%/config/routing_dev.yml" strict_requirements: true profiler: { only_exceptions: false web_profiler: toolbar: true intercept_redirects: false In the app/routing_dev.yml file: _wdt: resource: "@WebProfilerBundle/Resources/config/routing/wdt.xml" prefix: /_wdt _profiler: resource: "@WebProfilerBundle/Resources/config/routing/profiler.xml" prefix: /_profiler _errors: resource: "@TwigBundle/Resources/config/routing/errors.xml" prefix: /_error _main: resource: routing.yml Of course, you need to create those files, or merge them accordingly to what already exists into. 6.3 Next step: have fun! It should be enough for it to work. 16 Chapter 6. Using the Symfony Web Debug Toolbar in Drupal 7

21 CHAPTER 7 Using Monolog in Drupal 7 Warning: This feature is experimental, enable test it before running it in production! Notably, formatting is broken with dblog as of now. This module brings integration for monolog into Drupal 7 with the condition that you use Symfony s FrameworkBundle and MonologBundle, both being registered to you container. For a correct setup please follow the Bringing Symfony 3 Fullstack and Bundles into Drupal 7 documentation first. There is two ways of it setting up: either Drupal is master of logging, and monolog is just a bridge over the Drupal watchdog system; either monolog is master of logging, and this module provides a hook_watchdog() implementation that fowards everything that Drupal catches to monolog. You may use either one or the other, but you cannot use both at the same time. 7.1 Installing monolog First install the Monolog bundle dependency: composer require symfony/monolog-bundle Then add to your AppKernel.php file, in the registerbundles method: <? php new \Symfony\Bundle\MonologBundle\MonologBundle() 17

22 7.2 Configuring Monolog As a bridge to Drupal watchdog Formatter and handler implementations are provided by this module. In order to set it up, you only need to add to you config.yml file : monolog: handlers: drupal: type: service id: drupal.monolog_handler level: warning Note: Of course, you can still add as many handlers as you wish, but beware that since Drupal s watchdog is not bridged to Monolog, Drupal own s errors won t pass into those handlers As the master of things Warning: This is not yet implemented, will come soon! Set into your Drupal s settings.php file : <? php $conf['kernel.symfony_monolog_is_master'] = true; This will enable this module s hook_watchdog() implementation that will bridge all messages to the various Monolog handlers. Please also ensure you disabled all other Drupal logging modules, for example using Drush : drush -y dis dblog syslog You may then proceed with advanced configuration. Advanced configuration Here is a sample config.yml monolog section : monolog: handler: # Per default send everything to the current environment file main: type: stream path: "%kernel.logs_dir%/%kernel.environment%.log" level: debug For a more advanced configuration, please refer to Symfony s manual : Logging with Monolog. 18 Chapter 7. Using Monolog in Drupal 7

23 CHAPTER 8 Using Drupal 8 Path Alias Manager in Drupal 7 This module provides an API-compatible with strictly the same behaviour as the Drupal 8 component with the same name. It overrides the runtime to provides its own path.inc include, which means that you cannot override it anymore. Intead, you MUST override the AliasManager or the AliasStorageInterface components using the dependency injection container. 8.1 Additional features Path alias blacklist You can provide an alias blacklist, which means that no aliases will ever be displayed for entries that match this blacklist. For convenience reasons, existing aliases will still match the original path source, but displaying links using those sources will never use the stored aliases. In order to use this, set the path_alias_blacklist variable, which can be either: a string with path that may contain wildcards (eg. user/*) each string must be separated by a newline character n; an array of strings, each string must be a path that may contain wildcards as well. Internally it uses the drupal_match_path() function for matching the blacklist. 19

24 20 Chapter 8. Using Drupal 8 Path Alias Manager in Drupal 7

25 CHAPTER 9 Using Symfony event sucriber for Drupal events The sf_entity_event submodule essentially provides Symfony events related to Drupal event hooks. 9.1 Event Classes list MakinaCorpus\Drupal\Sf\EventDispatcher\EntityCollectionEvent: EVENT_LOAD: Fired when multiple entities are loaded (hook_entity_load) EVENT_PREPAREVIEW: Fired when multiple entities are prepared for view (hook_entity_prepare_view) MakinaCorpus\Drupal\Sf\EventDispatcher\EntityEvent: EVENT_DELETE: Fired when a single entity is deleted (hook_entity_delete) EVENT_INSERT: Fired when a single entity is inserted (hook_entity_insert) EVENT_PREINSERT: Fired when a single entity is about to be inserted (hook_entity_presave) EVENT_PREPARE: Fired when a single entity is prepared (hook_entity_prepare) EVENT_PREUPDATE: Fired when a single entity is is about to be updated (hook_entity_presave) EVENT_PRESAVE: Fired when a single entity is about to be saved (hook_entity_presave) EVENT_SAVE: Fired when a single entity is saved (hook_entity_save) EVENT_UPDATE: Fired when a single entity is updated (hook_entity_update) EVENT_VIEW: Fired when a single entity is viewed (hook_entity_view) MakinaCorpus\Drupal\Sf\EventDispatcher\NodeAccessEvent: EVENT_NODE_ACCESS: Node access is checked (hook_node_access) MakinaCorpus\Drupal\Sf\EventDispatcher\NodeAccessGrantEvent: EVENT_NODE_ACCESS_GRANT: Node grants are collected for user (hook_node_grants) 21

26 MakinaCorpus\Drupal\Sf\EventDispatcher\NodeAccessRecordEvent: EVENT_NODE_ACCESS_RECORD: Node access record are being collected (hook_node_access_records) MakinaCorpus\Drupal\Sf\EventDispatcher\NodeCollectionEvent: EVENT_LOAD: Fired when multiple nodes are loaded (hook_node_load) MakinaCorpus\Drupal\Sf\EventDispatcher\NodeEvent: EVENT_DELETE: Fired when a single node is deleted (hook_node_delete) EVENT_INSERT: Fired when a single node is inserted (hook_node_insert) EVENT_PREINSERT: Fired when a single node is about to be insertd (hook_node_presave) EVENT_PREPARE: Fired when a single node is prepared (hook_node_prepare) EVENT_PREUPDATE: Fired when a single node is about to be updated (hook_node_presave) EVENT_PRESAVE: Fired when a single node is about to be saved (hook_node_presave) EVENT_SAVE: Fired when a single node is saved (hook_node_save) EVENT_UPDATE: Fired when a single node is updated (hook_node_update) EVENT_VIEW: Fired when a single node is viewed (hook_node_view) 9.2 Example your_module.services.yml: your_module.node_subscriber: public: true class: YourPackage\EventSubscriber\NodeEventSubscriber arguments: ["@database"] tags: [{ name: event_subscriber ] src/eventsubscriber/nodeeventsubscriber.php : <?php namespace YourPackage\EventSubscriber; use MakinaCorpus\Drupal\Sf\EventSubscriber\NodeEvent; class NodeEventSubscriber implements EventSubscriberInterface { /** \DatabaseConnection */ private $db; /** * {@inheritdoc */ static public function getsubscribedevents() { return [ 22 Chapter 9. Using Symfony event sucriber for Drupal events

27 ]; NodeEvent::EVENT_SAVE => [ ['onsave', 0] ], /** * Constructor * \DatabaseConnection $db */ public function construct(\databaseconnection $db) { $this->db = $db; public function onsave(nodeevent $event) { $node = $event->getnode(); // Do something... $this->db->select(/*... */); 9.2. Example 23

28 24 Chapter 9. Using Symfony event sucriber for Drupal events

29 CHAPTER 10 Introduction Drupal-sf-dic is a Drupal 7 module that serves the purpose of bringing the Symfony 3 dependency injection container to Drupal 7 along with a limited Drupal 8 API compatibility layer. This project has been maturing enough to fill those needs : Brings the Symfony 3 dependency injection container to Drupal 7 ; Brings a Drupal 8 forward-compatibility layer for easier module porting ; Brings the ability to use Symfony bundles into Drupal 7 as long as they use a limited set of Symfony features. 25

30 26 Chapter 10. Introduction

31 CHAPTER 11 Support Please ask questions on the Github issues page. 27

Payment Suite. Release

Payment Suite. Release Payment Suite Release Apr 25, 2017 Contents 1 User Documentation 3 1.1 Installation................................................ 3 1.2 Configuration............................................... 4

More information

Newscoop Plugin Development Documentation Release 4.2.1

Newscoop Plugin Development Documentation Release 4.2.1 Newscoop Plugin Development Documentation Release 4.2.1 SW February 04, 2016 Contents 1 Plugin Design 3 1.1 Managing the Plugin Lifecycle..................................... 3 1.2 Creating Database Entities........................................

More information

SYMFONY2 WEB FRAMEWORK

SYMFONY2 WEB FRAMEWORK 1 5828 Foundations of Software Engineering Spring 2012 SYMFONY2 WEB FRAMEWORK By Mazin Hakeem Khaled Alanezi 2 Agenda Introduction What is a Framework? Why Use a Framework? What is Symfony2? Symfony2 from

More information

Composer and Drupal. CIDUG Meeting December 13, 2018 John Rearick

Composer and Drupal. CIDUG Meeting December 13, 2018 John Rearick Composer and Drupal CIDUG Meeting December 13, 2018 John Rearick * Similar to other dependency managers such as: yum, apt, brew, macports, npm, pip, etc. * Helps manage dependency hell. * Lots of dependencies

More information

GearmanBundle. Release

GearmanBundle. Release GearmanBundle Release Nov 28, 2017 Contents 1 User Documentation 3 1.1 Installing/Configuring.......................................... 3 1.2 Configuration...............................................

More information

UI Patterns Documentation

UI Patterns Documentation UI Patterns Documentation Release 1.x Nuvole Web Nov 19, 2017 Table of Contents 1 Project overview 3 1.1 Try it out................................................. 3 i ii The UI Patterns module allows

More information

The Quick Tour Version: master

The Quick Tour Version: master The Quick Tour Version: master What could be better to make up your own mind than to try out Symfony yourself? Aside from a little time, it will cost you nothing. Step by step you will explore the Symfony

More information

Magento 2 Certified Professional Developer. Exam Study Guide

Magento 2 Certified Professional Developer. Exam Study Guide Magento 2 Certified Professional Developer Exam Study Guide U Contents Contents Introduction... 1 Topics and Objectives... 3 1 Magento Architecture and Customization Techniques... 3 1.1 Describe Magento

More information

ReferralSystemDemoBundle Documentation

ReferralSystemDemoBundle Documentation ReferralSystemDemoBundle Documentation Release 0.1 Vyacheslav Enis June 14, 2014 Contents 1 Installation 3 1.1 Prerequisites............................................... 3 1.2 Installation................................................

More information

Drupal 8 THE VIDER ITY APPR OACH

Drupal 8 THE VIDER ITY APPR OACH Drupal 8 THE VIDER ITY APPROACH Introduction DR UPAL 8: THE VIDER ITY APPROACH Viderity focuses on designing the Total User Experience for Drupal sites, using a user-centered design approach Traditionally,

More information

with your

with your with your friend @weaverryan It s-a me, Ryan! > Lead of the Symfony documentation team > Writer for KnpUniversity.com > Symfony fanboy/evangelist > Husband of the much more talented @leannapelham > Father

More information

Dependency Injection Container Documentation

Dependency Injection Container Documentation Dependency Injection Container Documentation Release v1.0.0 Filipe Silva Dec 08, 2017 Contents 1 Getting started 3 1.1 Introduction...............................................

More information

Using the Code Review Module

Using the Code Review Module Szeged DrupalCon Doug Green doug@civicactions.com Stella Power stella@stellapower.net Coder Module Overview History Developer Module, built for you (and me) What does it do? Why should you use it? http://drupal.org/project/coder

More information

PHP XPDF Documentation

PHP XPDF Documentation PHP XPDF Documentation Release 0.1 Romain Neutron - Alchemy February 02, 2017 Contents 1 Introduction 1 2 Installation 3 3 PDF2Text 5 3.1 Basic Usage............................................... 5 3.2

More information

D8 Module Porting 101. Porting Simple FB Connect Module to D8. Tanay Sai. Drupal is a registered trademark of Dries Buytaert.

D8 Module Porting 101. Porting Simple FB Connect Module to D8. Tanay Sai. Drupal is a registered trademark of Dries Buytaert. D8 Module Porting 101 Porting Simple FB Connect Module to D8 Tanay Sai Drupal is a registered trademark of Dries Buytaert. Preface This is no definitive resource. And is no where close to being completely

More information

Drupal Command Line Instructions Windows 7 List All Users >>>CLICK HERE<<<

Drupal Command Line Instructions Windows 7 List All Users >>>CLICK HERE<<< Drupal Command Line Instructions Windows 7 List All Users Last updated January 7, 2015. Alternatively, Windows users can often just use the Drush Command Prompt You will find out about all the other options

More information

Behat Kickstart. For Drupal 8 Developers. Stanford Drupal Camp 2016 Stanford, CA -- April 1-2, Peter Sawczynec Customer Success Engineer

Behat Kickstart. For Drupal 8 Developers. Stanford Drupal Camp 2016 Stanford, CA -- April 1-2, Peter Sawczynec Customer Success Engineer Behat Kickstart For Drupal 8 Developers Stanford Drupal Camp 2016 Stanford, CA -- April 1-2, 2016 \ Peter Sawczynec Customer Success Engineer D8 Testing Ecosystem Behat SimpleTest PHPUnit JMeter Drupal

More information

Configuration Management in Drupal 8

Configuration Management in Drupal 8 Configuration Management in Drupal 8 Antonio De Marco - antonio@nuvole.org Fabian Bircher - fabian@nuvole.org Nuvole a 100% Drupal company Our Distributed Team Italy Belgium Czech Republic Our Clients

More information

Drupal Command Line Instructions Windows 7 List All >>>CLICK HERE<<<

Drupal Command Line Instructions Windows 7 List All >>>CLICK HERE<<< Drupal Command Line Instructions Windows 7 List All Drush is a command-line interface for Drupal that provides a wide set of utilities for administering and drush @pantheon.drupal-7-sandbox.dev status

More information

Advanced Configuration Management with Config Split et al. Fabian Bircher

Advanced Configuration Management with Config Split et al. Fabian Bircher Advanced Configuration Management with Config Split et al. Fabian Bircher fabian@nuvole.org web: nuvole.org twitter: @nuvoleweb Our Distributed Team Nuvole: a 100% Drupal company with a distributed team

More information

Con guration Management

Con guration Management Con guration Management Theory and practice Andrea Pescetti andrea@nuvole.org Fabian Bircher fabian@nuvole.org Antonio De Marco antonio@nuvole.org web: nuvole.org twitter: @nuvoleweb Our Distributed Team

More information

Using DRY (Don't Repeat Yourself) Principle in Drupal 8 Site Life Cycle

Using DRY (Don't Repeat Yourself) Principle in Drupal 8 Site Life Cycle Using DRY (Don't Repeat Yourself) Principle in Drupal 8 Site Life Cycle www.vardot.com Mohammed J. Razem CEO & Founder at Vardot m.razem@vardot.com @moerazem drupal.org/vardot Open Source Products Built

More information

The main differences with other open source reporting solutions such as JasperReports or mondrian are:

The main differences with other open source reporting solutions such as JasperReports or mondrian are: WYSIWYG Reporting Including Introduction: Content at a glance. Create A New Report: Steps to start the creation of a new report. Manage Data Blocks: Add, edit or remove data blocks in a report. General

More information

Bldr.io Documentation

Bldr.io Documentation Bldr.io Documentation Release 0.0.2 Aaron Scherer February 10, 2017 Contents 1 Content 5 1.1 Installation................................................ 5 1.2 Usage...................................................

More information

PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017

PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON. Alexander Lichter June 27, 2017 PHP-Einführung - Lesson 8 - Composer (Dependency manager) and JSON Alexander Lichter June 27, 2017 Content of this lesson 1. Recap 2. Composer 3. JSON 4. Collections (next lesson) 1 Recap Recap Recap Recap

More information

Theming with Twig in Drupal 8. John Jennings Developer, Johnson & Johnson

Theming with Twig in Drupal 8. John Jennings Developer, Johnson & Johnson Theming with Twig in Drupal 8 John Jennings Developer, Johnson & Johnson What is Twig? From SensioLabs, the developers about Twig: A templating engine for PHP, thus requiring PHP (v. 5.3.3 minimum) Compiles

More information

Configuration Management

Configuration Management Configuration Management A True Life Story October 16, 2018 Page 1 Configuration Management: A True Life Story John E. Picozzi Senior Drupal Architect Drupal Providence 401-228-7660 oomphinc.com 72 Clifford

More information

EMARSYS FOR MAGENTO 2

EMARSYS FOR MAGENTO 2 EMARSYS FOR MAGENTO 2 Integration Manual July 2017 Important Note: This PDF was uploaded in July, 2017 and will not be maintained. For the latest version of this manual, please visit our online help portal:

More information

Quick.JS Documentation

Quick.JS Documentation Quick.JS Documentation Release v0.6.1-beta Michael Krause Jul 22, 2017 Contents 1 Installing and Setting Up 1 1.1 Installation................................................ 1 1.2 Setup...................................................

More information

Blast Project. Release

Blast Project. Release Blast Project Release Nov 03, 2017 Reference Guide 1 Installation 1 2 Getting started with Blast CoreBundle 3 3 Configuration 5 4 Architecture 7 5 The Contribution Guide 9 6 Other Bundles 11 i ii CHAPTER

More information

Drupal 7 Hook Schema Not Called

Drupal 7 Hook Schema Not Called Drupal 7 Hook Schema Not Called Categories: Drupal 7.x Hi, hook_install needs to be.install file and it is only called when you first activate your module in Drupal. Log in or register to will not work

More information

The journey of a module from Drupal 7 to Drupal 8

The journey of a module from Drupal 7 to Drupal 8 The journey of a module from Drupal 7 to Drupal 8 Heymo Vehse https://twitter.com/heymo https://www.drupal.org/u/heymo About Me Heymo Vehse https://twitter.com/heymo https://www.drupal.org/u/heymo heymo@thebrickfactory.com

More information

MonoLog - Logging and Monitoring Specifications

MonoLog - Logging and Monitoring Specifications The ObjectWeb Consortium Interface Specification MonoLog - Logging and Monitoring Specifications AUTHORS: S. Chassande-Barrioz (INRIA) CONTRIBUTORS: JB. Stefani (INRIA) B. Dumant (Kelua) Released: March

More information

Bernard. Release latest

Bernard. Release latest Bernard Release latest Jul 06, 2018 Contents 1 Installation 1 2 Examples 3 2.1 Producing messages........................................... 3 2.2 Queues..................................................

More information

Tolerance Documentation

Tolerance Documentation Tolerance Documentation Release 0.1.0 sroze Oct 31, 2017 Contents 1 Introduction 3 1.1 Why?................................................... 3 1.2 Getting started..............................................

More information

wagtailmenus Documentation

wagtailmenus Documentation wagtailmenus Documentation Release 2.12 Andy Babic Nov 17, 2018 Contents 1 Full index 3 1.1 Overview and key concepts....................................... 3 1.1.1 Better control over top-level menu

More information

Drupal Command Line Instructions Windows 7 List All Files >>>CLICK HERE<<<

Drupal Command Line Instructions Windows 7 List All Files >>>CLICK HERE<<< Drupal Command Line Instructions Windows 7 List All Files The command line patch utility can run on Windows natively with GnuWin32 or select all text and copy it to clipboard (Ctrl+ C), Menu _ project

More information

AngularJS Fundamentals

AngularJS Fundamentals AngularJS Fundamentals by Jeremy Zerr Blog: http://www.jeremyzerr.com LinkedIn: http://www.linkedin.com/in/jrzerr Twitter: http://www.twitter.com/jrzerr What is AngularJS Open Source Javascript MVC/MVVM

More information

Build & Launch Tools (BLT) Automating best practices for enterprise sites

Build & Launch Tools (BLT) Automating best practices for enterprise sites Build & Launch Tools (BLT) Automating best practices for enterprise sites Who are you? Matthew Grasmick @grasmash on Drupal.org, twitter, etc. Acquia Professional Services, 4yrs Drupalist, 9yrs Maintainer

More information

Scaffold Documentation

Scaffold Documentation Scaffold Documentation Release 1.1 Alin Eugen Deac Oct 29, 2017 Contents 1 Contents 3 1.1 How to Install.............................................. 3 1.2 Install Scaffolds.............................................

More information

A Tutorial on using Code::Blocks with Catalina 3.0.3

A Tutorial on using Code::Blocks with Catalina 3.0.3 A Tutorial on using Code::Blocks with Catalina 3.0.3 BASIC CONCEPTS...2 PREREQUISITES...2 INSTALLING AND CONFIGURING CODE::BLOCKS...3 STEP 1 EXTRACT THE COMPONENTS...3 STEP 2 INSTALL CODE::BLOCKS...3 Windows

More information

Easy Authcache documentation

Easy Authcache documentation Easy Authcache documentation Contents Contents... 1 Description... 2 Advantages of module differs it from Authcache:... 2 Disadvantages of module differs it from Authcache:... 2 Installation... 2 Easy

More information

Release notes 3.3. silver.solutions GmbH Färberstr Berlin. Telefon:

Release notes 3.3. silver.solutions GmbH Färberstr Berlin. Telefon: Release notes 3.3 silver.solutions GmbH Färberstr. 26 12555 Berlin Telefon: 030.65.48.19.90 contact@silversolutions.de 1. Silver.e-shop version 3.3... 3 1.1. Server requirements... 3 1.2. New features

More information

Understanding the Dark Side

Understanding the Dark Side Understanding the Dark Side An Analysis of Drupal (and Other!) Worst Practices Kristen Pol Understanding the Dark Side An Analysis of Drupal (and Other!) Worst Practices Kristen Pol Image Source: http://bit.ly/1pb9en9

More information

dja Documentation Release 0.1 Igor idle sign Starikov

dja Documentation Release 0.1 Igor idle sign Starikov dja Documentation Release 0.1 Igor idle sign Starikov Jun 10, 2017 Contents 1 Requirements 3 2 Table of Contents 5 2.1 Introduction............................................... 5 2.2 Quick start................................................

More information

Drupal Training. Introduction to Module Development

Drupal Training. Introduction to Module Development Drupal Training Introduction to Module Development Alex Urevick- Ackelsberg Alex Urevick- Ackelsberg Partner & Business Developer Alex Urevick- Ackelsberg Partner & Business Developer Alex UA on Drupal.org

More information

AVOIDING THE GIT OF DESPAIR

AVOIDING THE GIT OF DESPAIR AVOIDING THE GIT OF DESPAIR EMMA JANE HOGBIN WESTBY SITE BUILDING TRACK @EMMAJANEHW http://drupal.org/user/1773 Avoiding The Git of Despair @emmajanehw http://drupal.org/user/1773 www.gitforteams.com Back

More information

django-contact-form Documentation

django-contact-form Documentation django-contact-form Documentation Release 1.4.2 James Bennett Aug 01, 2017 Installation and configuration 1 Installation guide 3 2 Quick start guide 5 3 Contact form classes 9 4 Built-in views 13 5 Frequently

More information

COMPOSER IN DRUPAL WORLD

COMPOSER IN DRUPAL WORLD #drupaldevdays / Composer in Drupal World / @derhasi COMPOSER IN DRUPAL WORLD Johannes Haseitl - @derhasi ME Johannes Haseitl @derhasi everywhere Maintainer of Master, Search API Override,... CEO of undpaul

More information

CONFIGURATION AS DEPENDENCY. Managing Drupal 8 Configuration with Git and Composer

CONFIGURATION AS DEPENDENCY. Managing Drupal 8 Configuration with Git and Composer CONFIGURATION AS DEPENDENCY Managing Drupal 8 Configuration with Git and Composer ERICH BEYRENT Senior Drupal Developer at BioRAFT Working with Drupal since 2004 Drupal: https://drupal.org/u/ebeyrent Twitter:

More information

Guides SDL Server Documentation Document current as of 04/06/ :35 PM.

Guides SDL Server Documentation Document current as of 04/06/ :35 PM. Guides SDL Server Documentation Document current as of 04/06/2018 02:35 PM. Overview This document provides the information for creating and integrating the SmartDeviceLink (SDL) server component with

More information

MIRO DIETIKER Founder

MIRO DIETIKER Founder DRUPAL SECURITY MIRO DIETIKER Founder I am I am consulting End User Agencies Site builder Hosters Developer Maintainer Open Source Initiative Leader Spring 2017 Security - Responsible disclosure...a vulnerability

More information

Guides SDL Server Documentation Document current as of 05/24/ :13 PM.

Guides SDL Server Documentation Document current as of 05/24/ :13 PM. Guides SDL Server Documentation Document current as of 05/24/2018 04:13 PM. Overview This document provides the information for creating and integrating the SmartDeviceLink (SDL) server component with

More information

A Sweet Test Suite. DrupalCon NA A Sweet Test Suite

A Sweet Test Suite. DrupalCon NA A Sweet Test Suite A Sweet Test Suite A Sweet Test Suite Dan Gurin Twitter @dgurin dangur @ D.O, GitHub, LinkedIn... Organizer @ Drupal Camp Asheville Engineer @CivicActions Test Driven Development Test Driven Development

More information

Simple AngularJS thanks to Best Practices

Simple AngularJS thanks to Best Practices Simple AngularJS thanks to Best Practices Learn AngularJS the easy way Level 100-300 What s this session about? 1. AngularJS can be easy when you understand basic concepts and best practices 2. But it

More information

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read) 1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?

More information

Revision control. INF5750/ Lecture 2 (Part I)

Revision control. INF5750/ Lecture 2 (Part I) Revision control INF5750/9750 - Lecture 2 (Part I) Problem area Software projects with multiple developers need to coordinate and synchronize the source code Approaches to version control Work on same

More information

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018

Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018 Working in Teams CS 520 Theory and Practice of Software Engineering Fall 2018 Version Control September 18, 2018 Thursday (September 20) First in-class exercise On using git (today is a prelude with useful

More information

django-ratelimit-backend Documentation

django-ratelimit-backend Documentation django-ratelimit-backend Documentation Release 1.2 Bruno Renié Sep 13, 2017 Contents 1 Usage 3 1.1 Installation................................................ 3 1.2 Quickstart................................................

More information

Drupal Drivers Documentation

Drupal Drivers Documentation Drupal Drivers Documentation Release 1.0 Jonathan Hedstrom September 03, 2015 Contents 1 Installation 3 2 Comparison of Drivers 5 3 Usage 7 3.1 Drupal API driver............................................

More information

Policy Based Device Access Security Position Paper to Device Access Policy Working Group

Policy Based Device Access Security Position Paper to Device Access Policy Working Group 1 (8) Policy Based Device Access Security Position Paper to Device Access Policy Working Group 2 (8) 1. INTRODUCTION Nokia has implemented a policy-based device access security model for its Web runtime

More information

Behat Drupal Integration Documentation

Behat Drupal Integration Documentation Behat Drupal Integration Documentation Release 1.1 Brendan MacDonald Jul 19, 2017 Contents 1 Introduction 3 2 System Requirements 5 3 Installation 7 4 Adding it to an existing project 9 5 Initial setup

More information

django-xross Documentation

django-xross Documentation django-xross Documentation Release 0.6.0 Igor idle sign Starikov Jan 14, 2018 Contents 1 Description 3 2 Requirements 5 3 Table of Contents 7 3.1 Quickstart................................................

More information

Working with the Seagull Framework. By Demian Turner, Seagull Systems

Working with the Seagull Framework. By Demian Turner, Seagull Systems Working with the Seagull Framework By Demian Turner, Seagull Systems seagullproject.org Who is Demian Turner? Developing websites since 1996, using PHP since 1999 Committer on several open source projects:

More information

5. Application Layer. Introduction

5. Application Layer. Introduction Book Preview This is a sample chapter of Professional PHP - Building maintainable and secure applications. The book starts with a few theory chapters and after that it is structured as a tutorial. The

More information

Migration Tool Developer's Guide

Migration Tool Developer's Guide Migration Tool Developer's Guide Overview o Repositories o System requirements Internal structure o Directory Structure o Entry Point o Configuration o Step internals Stages o Running Modes Settings migration

More information

Peter Sawczynec Engineer

Peter Sawczynec Engineer 2016 Peter Sawczynec Engineer FLORIDA DRUPALCAMP 2016 BEHAT KICKSTART FOR DRUPAL DEVELOPERS PETER SAWCZYNEC PETER.SAWCZYNEC@CIVICACTIONS FLORIDA DRUPALCAMP 2016 BEHAT KICKSTART FOR DRUPAL DEVELOPERS PETER

More information

wagtailmenus Documentation

wagtailmenus Documentation wagtailmenus Documentation Release 2.11 Andy Babic Aug 02, 2018 Contents 1 Full index 3 1.1 Overview and key concepts....................................... 3 1.1.1 Better control over top-level menu

More information

Sonata AdminBundle Release

Sonata AdminBundle Release AdminBundle Release September 26, 2014 Contents 1 Reference Guide 3 1.1 Installation................................................ 3 1.2 Getting started with AdminBundle................................

More information

Blackfin Online Learning & Development

Blackfin Online Learning & Development Presentation Title: Multimedia Starter Kit Presenter Name: George Stephan Chapter 1: Introduction Sub-chapter 1a: Overview Chapter 2: Blackfin Starter Kits Sub-chapter 2a: What is a Starter Kit? Sub-chapter

More information

esperanto-cms Documentation

esperanto-cms Documentation esperanto-cms Documentation Release 0.2 Gerhard Seidel July 02, 2015 Contents 1 Contents 1 1.1 Installation................................................ 1 1.2 AdminBundle..............................................

More information

Drupal 8 / Theming Quickstart

Drupal 8 / Theming Quickstart Drupal 8 / Theming Quickstart Introduction to themes in Drupal 8» New theme layer based in Twig (used in other CMSs)» 2 new core base themes: Stable & Classy» Both contain all the templates Drupal puts

More information

Client Side JavaScript and AJAX

Client Side JavaScript and AJAX Client Side JavaScript and AJAX Client side javascript is JavaScript that runs in the browsers of people using your site. So far all the JavaScript code we've written runs on our node.js server. This is

More information

Drupal Command Line Instructions Windows 7 List >>>CLICK HERE<<<

Drupal Command Line Instructions Windows 7 List >>>CLICK HERE<<< Drupal Command Line Instructions Windows 7 List Drush is a command-line interface for Drupal that provides a wide set of utilities directory in your home, or the aliases directory of your local Drush installation.

More information

If you re the administrator on any network,

If you re the administrator on any network, Let s do an inventory! If you re the administrator on any network, chances are you ve already faced the need to make an inventory. In fact, keeping a list of all the computers, monitors, software and other

More information

Project Name Documentation

Project Name Documentation Project Name Documentation Release 0.1 Copyright holder December 01, 2016 Contents 1 Introduction 3 2 Design 5 3 Installation 7 4 The SDK 9 4.1 Phraseanet SDK client..........................................

More information

ESIGATE MODULE DOCUMENTATION DIGITAL EXPERIENCE MANAGER 7.2

ESIGATE MODULE DOCUMENTATION DIGITAL EXPERIENCE MANAGER 7.2 1 SUMMARY 1 OVERVIEW... 3 1.1 About Esigate... 3 1.2 About this module... 3 2 INSTALLATION AND SETUP... 4 2.1 Requirements... 4 2.2 Installation on Digital Experience Manager... 4 2.2.1 Method 1 (a link

More information

Full Stack Web Developer

Full Stack Web Developer Full Stack Web Developer Course Contents: Introduction to Web Development HTML5 and CSS3 Introduction to HTML5 Why HTML5 Benefits Of HTML5 over HTML HTML 5 for Making Dynamic Page HTML5 for making Graphics

More information

BIG-IP DataSafe Configuration. Version 13.1

BIG-IP DataSafe Configuration. Version 13.1 BIG-IP DataSafe Configuration Version 13.1 Table of Contents Table of Contents Adding BIG-IP DataSafe to the BIG-IP System...5 Overview: Adding BIG-IP DataSafe to the BIG-IP system... 5 Provisioning Fraud

More information

apy Documentation Release 1.0 Felix Carmona, stagecoach.io

apy Documentation Release 1.0 Felix Carmona, stagecoach.io apy Documentation Release 1.0 Felix Carmona, stagecoach.io July 19, 2014 Contents 1 Starting up an Application 3 1.1 The directory structure.......................................... 3 1.2 Running the

More information

Linux desktop app guide Documentation. Thomas Kluyver & contributors

Linux desktop app guide Documentation. Thomas Kluyver & contributors Linux desktop app guide Documentation Thomas Kluyver & contributors Dec 13, 2018 Contents: 1 User Interface options 3 1.1 Desktop style: GTK or Qt........................................ 3 1.2 Web tech:

More information

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon

EmberJS A Fitting Face for a D8 Backend. Taylor Solomon EmberJS A Fitting Face for a D8 Backend Taylor Solomon taylor.solomon @jtsolomon http://interactivestrategies.com 2 Years Ago 2 Years Ago URL Ember Data assumes a few things. - Your API format is JSON

More information

User Manual. Admin Report Kit for IIS 7 (ARKIIS)

User Manual. Admin Report Kit for IIS 7 (ARKIIS) User Manual Admin Report Kit for IIS 7 (ARKIIS) Table of Contents 1 Admin Report Kit for IIS 7... 1 1.1 About ARKIIS... 1 1.2 Who can Use ARKIIS?... 1 1.3 System requirements... 2 1.4 Technical Support...

More information

Building Websites with Zend Expressive 3

Building Websites with Zend Expressive 3 Building Websites with Zend Expressive 3 Rob Allen, Nineteen Feet February 2018 ~ @akrabat A microframework with full stack components µframework core Router Container Template renderer Error handler Configuration

More information

ECM Extensions xcp 2.2 xcelerator Abstract

ECM Extensions xcp 2.2 xcelerator Abstract ECM Extensions xcp 2.2 xcelerator Abstract These release notes outline how to install and use the ECM Extensions xcelerator. October 2015 Version 1.0 Copyright 2015 EMC Corporation. All Rights Reserved.

More information

Prosphero Intranet Sample Websphere Portal / Lotus Web Content Management 6.1.5

Prosphero Intranet Sample Websphere Portal / Lotus Web Content Management 6.1.5 www.ibm.com.au Prosphero Intranet Sample Websphere Portal / Lotus Web Content Management 6.1.5 User Guide 7th October 2010 Authors: Mark Hampton & Melissa Howarth Introduction This document is a user guide

More information

Building a Django Twilio Programmable Chat Application

Building a Django Twilio Programmable Chat Application Building a Django Twilio Programmable Chat Application twilio.com/blog/08/0/python-django-twilio-programmable-chat-application.html March 7, 08 As a developer, I ve always wanted to include chat capabilities

More information

DECOUPLING PATTERNS, SERVICES AND CREATING AN ENTERPRISE LEVEL EDITORIAL EXPERIENCE

DECOUPLING PATTERNS, SERVICES AND CREATING AN ENTERPRISE LEVEL EDITORIAL EXPERIENCE DECOUPLING PATTERNS, SERVICES AND CREATING AN ENTERPRISE LEVEL EDITORIAL EXPERIENCE Who we are and Why we are here? Saurabh Chugh Started Drupal journey in 2010 with Drupal 6, long journey with Drupal

More information

CS 520: VCS and Git. Intermediate Topics Ben Kushigian

CS 520: VCS and Git. Intermediate Topics Ben Kushigian CS 520: VCS and Git Intermediate Topics Ben Kushigian https://people.cs.umass.edu/~rjust/courses/2017fall/cs520/2017_09_19.zip Our Goal Our Goal (Overture) Overview the basics of Git w/ an eye towards

More information

Configuring Autocomplete & Suggest

Configuring Autocomplete & Suggest Search Autocomplete & Suggest current How to install extension 1. Backup your store database and web directory. 2. Login to SSH console of your server and navigate to root directory of Magento 2 store.

More information

Garment Documentation

Garment Documentation Garment Documentation Release 0.1 Evan Borgstrom March 25, 2014 Contents i ii A collection of fabric tasks that roll up into a single deploy function. The whole process is coordinated through a single

More information

Code architecture and organisation

Code architecture and organisation RenderDoc Code architecture and organisation This document covers RenderDoc at a high level, giving you an idea of how the UI is separated from the rest of the code and generally how the capture & replay

More information

git commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b

git commit --amend git rebase <base> git reflog git checkout -b Create and check out a new branch named <branch>. Drop the -b Git Cheat Sheet Git Basics Rewriting Git History git init Create empty Git repo in specified directory. Run with no arguments to initialize the current directory as a git repository. git commit

More information

Vijaya Chandran

Vijaya Chandran Testing Vijaya Chandran Mani @vijaycs85 Overview Introduction Types Sample tests Lessons learned 1. Introduction What? Code to test code by coder for coder Lives and runs as part of project code base Quality

More information

Deep Dive into Logging and Error Handling. Miro Dietiker (miro_dietiker) Eric Peterson (iameap)

Deep Dive into Logging and Error Handling. Miro Dietiker (miro_dietiker) Eric Peterson (iameap) Deep Dive into Logging and Error Handling By: Miro Dietiker (miro_dietiker) Eric Peterson (iameap) WSOD & friends How to know when your kittens just die()d. PHP Exception handler set_exception_handler(

More information

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA Distributed CI: Scaling Jenkins on Mesos and Marathon Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA About Me Roger Ignazio QE Automation Engineer Puppet Labs, Inc. @rogerignazio Mesos In Action

More information

Paul Boisvert. Director Product Management, Magento

Paul Boisvert. Director Product Management, Magento Magento 2 Overview Paul Boisvert Director Product Management, Magento Platform Goals Release Approach 2014 2015 2016 2017 2.0 Dev Beta 2.0 Merchant Beta 2.x Ongoing Releases 2.0 Dev RC 2.0 Merchant GA

More information

Building and Maintaining a Distribution in Drupal 7 with Features.

Building and Maintaining a Distribution in Drupal 7 with Features. Building and Maintaining a Distribution in Drupal 7 with Features Antonio De Marco Andrea Pescetti http://nuvole.org @nuvoleweb Nuvole: Our Team ),3.0

More information

Handel-CodePipeline Documentation

Handel-CodePipeline Documentation Handel-CodePipeline Documentation Release 0.0.6 David Woodruff Dec 11, 2017 Getting Started 1 Introduction 3 2 Installation 5 3 Tutorial 7 4 Using Handel-CodePipeline 11 5 Handel-CodePipeline File 13

More information