Elsewhere

myDropWizard.com: Drupal 6 security update for Secure Password Hashes!

Planet Drupal - mer, 22/06/2016 - 20:42

As you may know, Drupal 6 has reached End-of-Life (EOL) which means the Drupal Security Team is no longer doing Security Advisories or working on security patches for Drupal 6 core or contrib modules - but the Drupal 6 LTS vendors are and we're one of them!

Today, there is a security release for Secure Password Hashes to fix a security bug.

By default in Drupal 6, all of a user's existing login sessions will be closed and the current session regenerated when a user changes their password. There was a bug in the Secure Password Hashes module that prevented this from happening.

With the help of the D6LTS vendors, a new version was released.

You can also download the patch the patch.

If you have a Drupal 6 site using the Views module, we recommend you update immediately! We have already deployed the patch for all of our Drupal 6 Long-Term Support clients. :-)

If you'd like all your Drupal 6 modules to receive security updates and have the fixes deployed the same day they're released, please check out our D6LTS plans.

Note: if you use the myDropWizard module (totally free!), you'll be alerted to these and any future security updates, and will be able to use drush to install them (even though they won't necessarily have a release on Drupal.org).

Catégories: Elsewhere

Lullabot: Using the Template Method pattern in Drupal 8

Planet Drupal - mer, 22/06/2016 - 18:01

Software design patterns are a very good way to standardize on known implementation strategies. By following design patterns you create expectations and get comfortable with the best practices. Even if you read about a design pattern and realize you have been using it for a long time, learning the formal definition will help you avoid eventual edge cases. Additionally, labeling the pattern will enhance communication, making it clearer and more effective. If you told someone about a foldable computer that you can carry around that contains an integrated trackpad, etc, you could have been more efficient by calling that a laptop.

I have already talked about design patterns in general and the decorator pattern in particular, and today I will tell you about the Template Method pattern. These templates have nothing to do with Drupal’s templates in the theme system.

Imagine that we are implementing a social media platform, and we want to support posting messages to different networks. The algorithm has several common parts for posting, but the authentication and sending of actual data are specific to each social network. This is a very good candidate for the template pattern, so we decide to create an abstract base class, Network, and several specialized subclasses, Facebook, Twitter, …

In the Template Method pattern, the abstract class contains the logic for the algorithm. In this case we have several steps that are easily identifiable:

  1. Authentication. Before we can do any operation in the social network we need to identify the user making the post.
  2. Sending the data. After we have a successful authentication with the social network, we need to be able to send the array of values that the social network will turn into a post.
  3. Storing the proof of reception. When the social network responds to the publication request, we store the results in an entity.

The first two steps of the algorithm are very specific to each network. Facebook and Instagram may have a different authentication scheme. At the same time, Twitter and Google+ will probably have different requirements when sending data. Luckily, storing the proof of reception is going to be generic to all networks. In summary, we will have two abstract methods that will authenticate the request and send the data plus a method that will store the result of the request in an entity. More importantly, we will have the posting method that will do all the orchestration and call all these other methods.

One possible implementation of this (simplified for the sake of the example) could be:

<?php namespace Drupal\template; use Drupal\Component\Serialization\Json; /** * Class Network. * * @package Drupal\template */ abstract class Network implements NetworkInterface { /** * The entity type manager. * * @var \Drupal\Core\Entity\EntityTypeManagerInterface. */ protected $entityTypeManager; /** * Publish the data to whatever network. * * @param PostInterface $post * A made up post object. * * @return bool * TRUE if the post was posted correctly. */ public function post(PostInterface $post) { // Authenticate before posting. Every network uses a different // authentication method. $this->authenticate(); // Send the post data and keep the receipt. $receipt = $this->sendData($post->getData()); // Save the receipt in the database. $saved = $this->storeReceipt($receipt); return $saved == SAVED_NEW || $saved == SAVED_UPDATED; } /** * Authenticates on the request before sending the post. * * @throws NetworkException * If the request cannot be authenticated. */ abstract protected function authenticate(); /** * Send the data to the social network. * * @param array $values * The values for the publication in the network. * * @return array * A receipt indicating the status of the publication in the social network. */ abstract protected function sendData(array $values); /** * Store the receipt data from the publication call. * * @return int * Either SAVED_NEW or SAVED_UPDATED (core constants), depending on the operation performed. * * @throws NetworkException * If the data was not accepted. */ protected function storeReceipt($receipt) { if ($receipt['status'] > 399) { // There was an error sending the data. throw new NetworkException(sprintf( '%s could not process the data. Receipt: %s', get_called_class(), Json::encode($receipt) )); } return $this->entityTypeManager->getStorage('network_receipts') ->create($receipt) ->save(); } }

The post public method shows how you can structure your posting algorithm in a very readable way, while keeping the extensibility needed to accommodate the differences between different classes. The specialized class will implement the steps (abstract methods) that make it different.

<?php namespace Drupal\template; /** * Class Facebook. * * @package Drupal\template */ class Facebook extends Network { /** * {@inheritdoc} */ protected function authenticate() { // Do the actual work to do the authentication. } /** * {@inheritdoc} */ protected function sendData(array $values) { // Do the actual work to send the data. } }

After implementing the abstract methods, you are done. You have successfully implemented the template method pattern! Now you are ready to start posting to all the social networks.

// Build the message. $message = 'I like the new article about design patterns in the Lullabot blog!'; $post = new Post($message); // Instantiate the network objects and publish. $network = new \Drupal\template\Facebook(); $network->post($post); $network = new \Drupal\template\Twitter(); $network->post($post);

As you can see, this is a behavioral pattern very useful to deal with specialization in a subclass for a generic algorithm.

To summarize, this pattern involves a parent class, the abstract class, and a subclass, called the specialized class. The abstract class implements an algorithm by calling both abstract and non-abstract methods.

  • The non-abstract methods are implemented in the abstract class, and the abstract methods are the specialized steps that are subsequently handled by the subclasses. The main reason why they are declared abstract in the parent class is because the subclass handles the specialization, and the generic parent class knows nothing about how. Another reason is because PHP won’t let you instantiate an abstract class (the parent) or a class with abstract methods (the specialized classes before implementing the methods), thus forcing you to provide an implementation for the missing steps in the algorithm.
  • The design pattern doesn’t define the visibility of these methods, you can declare them public or protected. If you declare these methods public, then you can surface them in an interface to make the base class abstract.

In one typical variation of the template pattern, one or more of the abstract methods are not declared abstract. Instead they are implemented in the base class to provide a sensible default. This is done when there is a shared implementation among several of the specialized classes. This is called a hook method (note that this has nothing to do with Drupal's hooks).

Coming back to our example, we know that most of the Networks use OAuth 2 as their authentication method. Therefore we can turn our abstract authenticate method into an OAuth 2 implementation. All of the classes that use OAuth 2 will not need to worry about authentication since that will be the default. The authenticate method will only be implemented in the specialized subclasses that differ from the common case. When we provide a default implementation for one of the (previously) abstract methods, we call that a hook method.

At this point you may be thinking that this is just OOP or basic subclassing. This is because the template pattern is very common. Quoting Wikipedia's words:

The Template Method pattern occurs frequently, at least in its simplest case, where a method calls only one abstract method, with object oriented languages. If a software writer uses a polymorphic method at all, this design pattern may be a rather natural consequence. This is because a method calling an abstract or polymorphic function is simply the reason for being of the abstract or polymorphic method.

You will find yourself in many situations when writing Drupal 8 applications and modules where the Template Method pattern will be useful. The classic example would be annotated plugins, where you have a base class, and every plugin contains the bit of logic that is specific for it.

I like the Template Method pattern because it forces you to structure your algorithm in a very clean way. At the same time it allows you to compare the subclasses very easily, since the common algorithm is contained in the parent (and abstract) class. All in all it's a good way to have variability and keep common features clean and organized.

Catégories: Elsewhere

LevelTen Interactive: LevelTen, Open Enterprise, and 6 Strategic Advantages for Using Pantheon

Planet Drupal - mer, 22/06/2016 - 16:04

When LevelTen gets into talks with potential clients or even current clients, our first thought is to recommend businesses to Pantheon hosting for scalable websites. When we first began looking for partners to host and manage our Open Enterprise Pro CMS, a Drupal distribution, Pantheon was a clear choice. Our company philosophy is built around providing infinitely scalable content management and marketing solutions that are simple enough for nontechnical people to manage and maintain their websites. That...Read more

Catégories: Elsewhere

Mark Shropshire: Type Less with Drush site-set

Planet Drupal - mer, 22/06/2016 - 05:53

I use drush aliases between Drupal VM and Drupal hosting services quite a bit. It was great to learn that drush site-set allows me to set the alias to use for the current session, so I don't have to type the alias name over and over again. For instance, I can set an alias like this: $ drush site-set @drupalvm.drupal8.dev, allowing me to check the status of the site on the Drupal VM with $ drush status. To make it even easier, use is an alias for site-set. Example: $ drush use @drupalvm.drupal8.dev.

Drush site-set has some other useful options beyond setting drush aliases. Check out the options available at the link below:

https://drushcommands.com/drush-8x/core/site-set/

Blog Category: 
Catégories: Elsewhere

Talha Paracha: GSoC’16 – Pubkey Encrypt – Week 4 Report

Planet Drupal - mer, 22/06/2016 - 02:00

I started the week by providing test coverage for functionalities I added to the module in week 3. Since the main functionality I added was the automatic generation of keys, the tests I wrote assert for these capabilities:

Catégories: Elsewhere

Acquia Developer Center Blog: Drupal 8 Module (Distro!) of the Week: Lightning

Planet Drupal - mar, 21/06/2016 - 23:29

Each day, new functionality is being created for and built with Drupal 8. At the same time, more and more Drupal 7 modules are also being migrated to the Drupal community’s latest major release. In this series, the Acquia Developer Center is profiling some of the most prominent, useful modules, projects, and tools available for Drupal 8. This week: the Drupal 8 Lightning distribution.

Tags: acquia drupal planetlightningdistrodistributionauthoring
Catégories: Elsewhere

Zivtech: Attention: A Key Component of UX and Cognitive Psychology

Planet Drupal - mar, 21/06/2016 - 21:30


​Technology is cool. New features are cool. Shouldn’t your site show all these cool things off?

The short answer, unfortunately, is no. All those bells and whistles rapidly overwhelm users. They may be thinking: Wow, look at this magical 3D scrolling effect! Wow, look at this video background! Wow, check out this slideshow! Wow, look at those cool drawings!

And very quickly, users get lost in the hubbub of cool things and lose track of mission. Guess what? Your website’s goal is not to show off cool stuff. It’s to get and keep visitors’ attention to your product or service, and to convert customers. That’s why it’s so important to understand how attention comes into play when designing your website.


​How Psychology Aids Website Design

Recent advances in technology spotlight two increasingly important fields: user experience (UX), or how people interact with websites and apps; and cognitive psychology, a discipline that examines mental processes such as thinking and memory.

User experience is an exemplary application of cognitive psychology, though it’s not always framed that way. In order for a user experience designer to work from a research driven, human focused standpoint, it’s necessary to understand key aspects of cognition.

Attention is one of the main tenets of human cognition. When you understand the principles of attention, you can greatly improve the way websites are designed for both the producer and the consumer.


Look Away From the Light

Psychologists used to compare visual attention to a spotlight: people set their eyes on a certain visual of a certain size and that was that. Cognitive psychologists have made great strides in the field of attention. It turns out that attention is not as limited as scientists once imagined.

Contrary to what most people assume, attention is not finite. It does not have to be focused where the eyes are looking, and it can be focused in multiple spots. People take in stimuli even if they aren’t immediately focused on them. Specific things like movement divert attention from the initial focus. Attention is not a spotlight as psychologists once thought, but rather it is an ever-shifting amorphous scan.

When you take a more holistic approach to building a website, guide the user’s attention without inducing a headache. When too many exciting things distract the user, it prevents them from accomplishing their goals.
​Order is Beauty

Strive for a visual hierarchy. Not everything should immediately try to grab the user’s attention; rather, the most important part of the website should be obvious. Some websites have begun to prioritize the user’s attention-- for example, Zivtech’s blog page phases out the header image by blurring it as the user scrolls down, shifting focus to the articles below.

​Anyone can tell you that a web page looks cluttered, but a good designer should know how a cluttered web page impacts user attention. So if you want to boost your site metrics like traffic, session duration, and conversion, pay attention.

Catégories: Elsewhere

Dries Buytaert: The long path to being understood

Planet Drupal - mar, 21/06/2016 - 19:29

I sent an internal note to all of Acquia's 700+ employees today and decided to cross-post it to my blog because it contains a valuable lesson for any startup. One of my personal challenges — both as an Open Source evangelist/leader and entrepreneur — has been to learn to be comfortable with not being understood. Lots of people didn't believe in Open Source in Drupal's early days. Some people still don't understand why you'd give the software away for free. Lots of people didn't believe Acquia could succeed. It can be difficult to deal with the naysayers and rejections. In many cases, an idea takes years to gain general acceptance. Open Source software and its new commercial approaches are starting to reach that point just now. If you ever have an idea that is not understood, I want you to think of my story.

Team,

This week, Acquia got a nice mention on Techcrunch in an article written by Jake Flomenberg, a partner at Accel Partners. For those of you who don't know Accel Partners, they are one of the most prominent venture capital investors and were early investors in companies like Facebook, Dropbox, Slack, Etsy, Atlassian, Lynda.com, Kayak and more.

The article, called "The next wave in software is open adoption software", talks about how the enterprise IT stack is being redrawn atop powerful Open Source projects like MongoDB, Hadoop, Drupal and more. Included in the article is a graph that shows Acquia's place in the latest wave of change to transform the technology landscape, a place showing our opportunity is bigger than anything before as the software industry migrated from mainframes to client-server, then SaaS/PaaS and now - to what Flomenberg dubs, the age of Open Adoption Software.

It's a great article, but it isn't new to any of us per se – we have been promoting this vision since our start nine years ago and we have seen over and over again how Open Source is becoming the dominant model for how enterprises build and deliver IT. We have also shown that we are building a successful technology company using Open Source.

Why then do I feel compelled to share this article, you ask? The article marks a small but important milestone for Acquia.

We started Acquia to build a new kind of company with a new kind of business model, a new innovation model, all optimized for a new world. A world where businesses are moving most applications into the cloud, where a lot of software is becoming Open Source, where IT infrastructure is becoming a metered utility, and where data-driven services make or break business results.

We've been steadily executing on this vision; it is why we invest in Open Source (e.g. Drupal), cloud infrastructure (e.g. Acquia Cloud and Site Factory), and data-centric business tools (e.g. Acquia Lift).

In my 15+ years as an Open Source evangelist, I've argued with thousands of people who didn't believe in Open Source. In my 8+ years as an entrepreneur, I've talked to thousands of business people and dozens of investors who didn't understand or believe in Acquia's vision. Throughout the years, Tom and I have presented Acquia's vision to many investors – some have bought in and some, like Accel, have not (for various reasons). I see more and more major corporations and venture capital firms coming around to Open Source business models every day. This trend is promising for new Open Source companies; I'm proud that Acquia has been a part of clearing their path to being understood.

When former skeptics become believers, you know you are finally being understood. The Techcrunch article is a small but important milestone because it signifies that Acquia is finally starting to be understood more widely. As flattering as the Techcrunch article is, true validation doesn't come in the form of an article written by a prominent venture capitalist; it comes day-in and day-out by our continued focus and passion to grow Drupal and Acquia bit by bit, one successful customer at a time.

Building a new kind of company like we are doing with Acquia is the harder, less-traveled path, but we always believed it would be the best path for our customers, our communities, and ultimately, our world. Success starts with building a great team that not only understands what we do, but truly believes in what we do and remains undeterred in its execution. Together, we can build this new kind of company.

--
Dries Buytaert
Founder and Project Lead, Drupal
Co-founder and Chief Technology Officer, Acquia

Catégories: Elsewhere

DrupalCon News: The Business of Drupal

Planet Drupal - mar, 21/06/2016 - 19:10

Drupal is a CMS. Drupal is a framework. Drupal is a piece of software which allows us to create amazing online experiences. Drupal is its awesome community. For some of us Drupal is a way of life. But what else is Drupal?

Drupal is our business.

Catégories: Elsewhere

Cheeky Monkey Media: Custom Sorting of Views Content

Planet Drupal - mar, 21/06/2016 - 17:58
Custom Sorting of Views Content ryan Tue, 06/21/2016 - 15:58

Have you ever had a list of related items, related by say by a taxonomy term or another node, and needed some way to sort that list, fully, or even partially? If so, there are a few good views modules out there to help you out.

The Nodequeue Module

My first introduction to setting up a custom sort on a list of content was to use the Nodequeue module. Nodequeue is a multi-faceted module which has a lot of queue/listing functionality. One of which is integrating with views.

I’ll go through the steps necessary for setting up a nodequeue and linking it to your view to have it use your sorting.

Catégories: Elsewhere

Acquia Developer Center Blog: How to Ensure That Your Website is Launch-Ready

Planet Drupal - mar, 21/06/2016 - 17:08

Launching a new application can be a scary event. Many potential bottlenecks, although not readily apparent, can cause problems on the go-live day, or the first time there’s a surge in site traffic.

At Acquia, we conduct a site audit to ensure that a new site is not subject to unnecessary delays. We do this by identifying potential problems, and proposing clear and specific remediation and optimization measures during development.

That’s the big picture. Here’s a close-up view on how we do it.

Tags: acquia drupal planet
Catégories: Elsewhere

ImageX Media: When Responsive Websites May Not Be Enough: Why You Need a Mobile Business App

Planet Drupal - mar, 21/06/2016 - 16:07

Mobile usage shows no signs of slowing down. Many web design and development agencies encourage clients to deploy websites using a responsive design in place. For those in need a refresher, a responsive website is a design approach based on fluid grids and CSS3 media queries. A responsive site's layout will change based on the size (height x width) of a device.

Catégories: Elsewhere

Drupal Commerce: Commerce 2.x: Unit, Kernel, and Functional Tests Oh My!

Planet Drupal - mar, 21/06/2016 - 16:01

At the end of May, I made an initiative to move all of the Drupal Commerce tests away from Simpletest and to use the available test classes built off of PHPUnit. Why? Simpletest is a test framework within Drupal and not used by the PHP community at large.

With the KernelTestBaseTNG™ issue, Drupal core officially moved to being based on top of PHPUnit for Kernel and Unit tests. Soon more test types were to follow, such as browser tests and JavaScript testing.

Death to Simpletest, Long Live PHPUnit, Mink, and PhantomJS

We now have PHPUnit as our test framework, the choice of the greater PHP community. The browser tests use the Mink browser emulator, which anyone working with Behat should be somewhat familiar. Testing JavaScript is done by pointing PhantomJS configuration to Mink. No longer are we limited to the functionalities of Simpletest and our community to develop it.

Catégories: Elsewhere

ComputerMinds.co.uk: How to write a PHPUnit test for Drupal 8

Planet Drupal - mar, 21/06/2016 - 14:00

This article will talk you through the steps to follow to write a simple PHPUnit test for Drupal 8.

I have been doing a lot of work on Drupal 8 migrations for the past few months so that will be the focus of the test.

Step 1: Create a Fixture

To quote the PHPUnit manual:

Catégories: Elsewhere

Web Wash: Debug Site Performance Using Web Profiler in Drupal 8

Planet Drupal - mar, 21/06/2016 - 13:50

In the beginning of any Drupal project the site loads very quickly because there aren't many modules installed. But as you add modules, the performance of the site will become slower and slower.

There's always a certain point in the project where you realize it's time to look at the problem and see if it's a rogue module or some dodgy code, we've all seen this.

Trying to debug a performance issue can be tedious work. But often, it comes down to having too many queries loaded on a page.

If you're on Drupal 7, just enable query logging using the Devel module. This will show all the queries generated at the bottom of the page.

But for Drupal 8 we have something better: Web Profiler.

Web Profiler is a Drupal 8 port of the Symfony WebProfiler bundle. The port is possible because Drupal 8 uses Symfony components.

Web Profiler adds a toolbar at the bottom of every page and shows you all sorts of stats such as the amount of database queries loaded on the page, which services are used and much more.

Catégories: Elsewhere

Into my Galaxy: GSoC’ 16: Port Search Configuration module; coding week #4

Planet Drupal - mar, 21/06/2016 - 13:45

 

Google Summer of Code (GSoC), has entered into the mid-Term evaluation stage. This is a 1 week period from 21- 27 June, were students and mentors present the progress of their projects. Based on the reports submitted, students are made pass/ fail.

I have been working on porting Search Configuration to Drupal 8 in the past few weeks. If you would like to have a quick glimpse of my past activities on this port process, please go through these posts.

last week, I could learn some Drupal concepts which were really helpful for my project. In the previous versions of Drupal, the role permissions were stored in a role_permissions table in the Database. But now, in Drupal 8, the role permissions are directly stored in the role configuration entity.

So, as described above, in D7 and its preceding versions, role permissions were stored in a role_permissions database which had the role Id and the corresponding permissions. The permissions distributed to a role was retrieved in D7 using:

$permissions = role->getPermissions();

But, in D8, this is done by the

$permissions = role->getPermissions();

Another instance is that, to grant certain permissions to roles.

In D7 it was controlled by,

user_role_grant_permissions($rid, array(‘ access content’));

The role configuration entity remodels this functionality in D8 to:

$role->grantPermission(‘ access content’);

In connection with the term permissions, the most important aspect in Drupal is a hook: hook_permissions(). This hook, obviously as you might have guessed, distributes the permissions to various users; decides whether a particular user should be allowed to access a page or a content, granting and restricting the access.

This hook has been replaced in Drupal 8 by a module.permissions.yml file. This file contains the permissions and its specifications. We can write a driver function in a php file to add the dynamic permissions. This can be achieved by making a driver class in the php file and adding the behaviour of the permission we need in the member functions of the class. We also have to link this PHP file with our yml file to keep it active. This is done by adding a callback function in the yml file which references this php file.

To display special characters in a plain text string for display as HTML format, Drupal earlier versions used the function check_plain.  This had the general syntax:

check_plain($text); // where $text was the string to be processed.

This function has got deprecated in Drupal 8. This has been replaced by the \Drupal\Compoent\Utility\Html::escape($text).

 


Catégories: Elsewhere

Miloš Bovan: Detecting a footer of an email

Planet Drupal - mar, 21/06/2016 - 13:22
Detecting a footer of an email

This is the 5th blog post of the Google Summer of Code 2016 project - Mailhandler.

Implementing authentication and authorization for a mail sender provided an additional layer of security for Mailhandler project. The module was extended to support both PGP signed and unsigned messages.

The goal for the last week was to create a mail Footer analyzer and to add support for node (content) type detection via mail subject. The pull request has been created and it is in the review status. This analyzer has a purpose of stripping the message footer/signature from the message body. As of now, 2 types of signature/footer separators are supported:

  • -- \n as the separator line between the body and the signature of a message recommended by RFC 3676
  • On {day}, {month} {date}, {year} at {hour}:{minute} {AM|PM} pattern which is trickier and currently used by Gmail to separate replied message from the response.

First of all, we had to create inmail.analyzer.footer config entity and the corresponding analyzer plugin - FooterAnalyzer. Since footer, subject and content type properties are relevant for all types of mail messages supported by Mailhandler, these properties were put in MailhandlerAnalyzerResultBase class.

FooterAnalyzer currently depends on the analyzed result provided by MailhandlerAnalyzer. The reason why one plugin depends on another is to support PGP signed messages. MailhandlerAnalyzer will try to analyze the message body of signed (and unsigned) messages and extract the actual mail body. Next, FooterAnalyzer will parse the processed body stored in MailhandlerAnalyzerResult. As mentioned above, the footer analyzer currently supports footers separated by -- \n and On {day}, {month} {date}, {year} at {hour}:{minute} {AM|PM} lines. The content after these lines is put into the footer property of the analyzer result. In case the body message has one of the supported separators, detected footer is stripped out from the actual message body.

Furthermore, the content type detection via message subject has been implemented. As we are going to support creating comments via email in the following weeks, we had to create a “protocol” that will allow us to differentiate between nodes and comments. We agreed to add [{entity_type}][{bundle}] before the actual message subject. For now, only node entity type and its bundle (content/node type) are parsed and extracted. All the assertions of the analyzed message are happening in the handler plugin (MailhandlerNode). The handler plugin will check if the configured content type is set to “Detect” mode and if so, it will get the parsed content type and create an entity of the parsed node type.

This week, students and their mentors are requested to submit mid-term evaluations. The evaluation represents a sum of the project after 5 weeks of the work. By finishing FooterAnalyzer, Mailhandler is now capable of processing signed (and unsigned) emails, extracting the actual body and creating a node of the detected node type for an authorized user.

The plan for the next week is to extend the project with validation support. We will use entity (node) validation and extend content type to bundle validation too. Also, I will work on splitting the Mailhandler analyzer to the smaller analyzers and adapting the handler to the changes.

 

 

Milos Tue, 06/21/2016 - 13:22 Tags Drupal Open source Google Summer of Code Drupal Planet Add new comment
Catégories: Elsewhere

TheodorosPloumis blog: DrupalCamp Greece is 3B!

Planet Drupal - mar, 21/06/2016 - 13:19

DrupalCamp Greece is "3B". Back, Bigger, Better!

The Greek community orginizes the 3rd (or 4th I can't remember) Drupal Camp Athens, 1 - 3 July 2016.

3 days with our "true one love" Drupal with social events straight in the heart of Athens and so many interesting sessions for Drupal and the new ecosystem around it (yes we are out of the island now and so are our DrupalCamps :-)

Schedule is ready.

MortenDK is going to open the event with a special keynote and a session about - what else - "DrupalTwig". There will be several sessions about Drupal 8.x Plugin system, migration, CKEditor, frontend, backend, REST API, content strategy, Aegir, security and my - temporary - favourite topic: Docker!

Oh, I forgot to mention the workshops. An introduction to Drupal 8.x and a special workshop about 8.x Commerce Kickstart. There will also be a sprint.

Are you a Drupal <whatever> traveling to Greece, why not join us? You can still get your ticket.

drupal-camp.gr

And don’t forget to register for news and updates about the event.

Hope to see you around.

(PS. I am not representing the organizers or the Greek Drupal community and this post contains my own opinion)

Catégories: Elsewhere

Drop Guard: Live webinar recording: Build your recurring revenue machine

Planet Drupal - mar, 21/06/2016 - 10:00
Were you too busy to join our live webinar on 06/20? No problem, we present you the whole story right here: Enjoy 30 minutes about how to
  • sell support contracts with value to your clients
  • automate update processes to save developer time
  • establish a support process with existing resources
  • maximise data security for clients as added value support
Drupal Drupal Planet Business
Catégories: Elsewhere

TimOnWeb.com: Default Search API Sorts Per View in Drupal 7

Planet Drupal - mar, 21/06/2016 - 04:46

It's been a while since I've written a post here (especially, Drupal-related). But today I have something interesting to share.

There's a module called Search API sorts (https://drupal.org/project/search_api_sorts) that provides custom sorts and a global sort block for Search API. The module itself is ok, but ...

Read now

Catégories: Elsewhere

Pages

Subscribe to jfhovinne agrégateur - Elsewhere