- First, can you give us an overview of what Advagg is?
- Are you the main maintainer of the D8 version?
- What was the porting process like?
- What features are in the Drupal 8 version right now?
- What's the status of the Drupal 8 version?
- Do you know of any compatibility issues with other modules?
- What do you have planned for the future?
Drupal 8 has amazing features for everyone that can help you to build any Web site you want to. easier to customize components than never before. Drupal 8 uses Semantic HTML5 helps you to create interactions. You can make content structures easier to understand for people with disabilities.
In this tutorial series, we will learn how to use Drupal 8 to create your website. During the process, you will find How to work with various component and their usability.
How to Create a Website with Drupal
We had a blast going to Mumbai for DrupalCon Asia. On day 1 of the conference, we presented our new Drupal 8 Theming training for a group of 50 first-time DrupalCon attendees.read more
Each day, more Drupal 7 modules are being migrated over to Drupal 8 and new ones are being created for 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: Coder.Tags: acquia drupal planetPHPCScoderupgrade
This module provides NAB Transact functionality via the Hosted Payment Page.
It uses the Payment API and does not necessarily need Drupal Commerce.
This module simply exports the permissions configuration of a Drupal 7 site to CSV for auditing.
Sebastian Bergmann, the maintainer of the PHPUnit testing framework, came to our office in Cologne, Germany to talk with Campbell Vertesi (@CampbellVertesi) and me about PHP, PHP FIG and the PSRs, and of course testing. It is another in the series of interviews we carried out with important and interesting people from the PHP community in preparation for DrupalCon Asia in Mumbai. Now we're releasing those to you!
Our session, "Meet PHP-FIG: Your community just got a whole lot bigger, Drupal" is about Drupal 8’s membership in the world of PHP interoperability. We’re covering the basics of what the PHP Framework Interoperability Group (PHP-FIG) is, what the various PSRs are and do, and talking about testing and dependency management, and what it means to be a part of the new PHP community — including having better architecture, cleaner code, and less risk thanks to more interoperability. All of this adds up to a big move to get projects “off their islands,” saving developers a lot of code and companies a lot of money, among other benefits.
“Hi. I’m Sebastian Bergmann. About 15 years ago I created PHPUnit to help PHP developers build better software. I would like to congratulate the Drupal community on the release of Drupal 8. As far as I know PHPUnit played some role in it.” :-)
Q: You discovered PHP in 1997 or 1998, why did you stick with it for the last 18 years?
Sebastian: I like the language. I like the very pragmatic approach to solving the web problem, which does not mean that I’m happy with everything that is in PHP. There are some things in PHP that I don’t think should be in PHP. There are some things missing that I think should be in there. Some things have been implemented in a way that I wouldn’t have done it, wouldn’t have done that way if I were the only one to decide but I can see the compromise was necessary for the greater good, but all in all, I’m very happy with PHP.
Q: What is PHPUnit? How can I benefit from it?
Sebastian: PHPUnit is a so-called unit testing framework that’s stands in the tradition of the XUnit family of testing frameworks that began a really, really long time ago. So, it’s a unit testing framework or at least that’s how PHPUnit started. It’s used for so much more than just unit testing these days. The unit test helps you test one unit of code in isolation from all collaborating objects. So, for instance, you have one method of a class and you want to test this known input that you get the expected output. That’s the smallest kind of test that you can do. You can do all kinds of other tests in a much larger scope. One of the biggest, one of the most important things in testing software is finding the smallest scope in which you can test what you want to verify and the smallest thing that you can test and the smallest scope that you can test in is the unit test scope.
If you make it larger then you come to integration tests when you, for instance, test that one piece of code interacts correctly with another system, be it a web service or a database or whathaveyou. The largest thing that you can test in an automated way would be to test the entire application as a whole, which in the case of a web application it usually means, if you take a real HTTP client, send them real HTTP requests to a real HTTP server, get it to real HTTP response back and inspect that. That you can also do with PHPUnit.
Q: What does a PHPUnit bring for Drupal developers? What do they get out of your collaboration with Drupal?
Sebastian: Hopefully, better code, hopefully less bugs and hopefully fun.
Sebastian: Yes, it’s hard to believe and when I started working on PHPUnit and got interested in testing, I really couldn’t believe it, but it turns out there are many, many people out there, many developers for whom testing is a lot of fun. It brings, to some ... it has this feeling of being destructive in a constructive way ... like trying to find ways to break their code and writing that down in the form of tests and then they’re really happy when they see, “Okay. I cannot think of any other way to break this code and everything is fine. Everything is green so I’m having a good feeling that this code is correct, is robust and there's this nice synergy between when it’s easy to test a piece of code that means that the code is well-written, well-crafted, so in the future when your requirements change or you get new requirements, then, it will be easy and convenient and not a horrific experience to adapt the code to the new requirements.
"There's this nice synergy: when it’s easy to test a piece of code that means that the code is well-written and well-crafted. So in the future when your requirements change or you get new requirements, then, it will be easy and convenient and not a horrific experience to adapt the code to the new requirements.
Sebastian: What I could describe is very a common experience when you as a developer starts using the tool for testing. PHPUnit is, by no means, the only testing tool in the PHP community, just the one that is used the most. And contrary to what some people believe, I’m not an angry German that does all those bad changes in PHPUnit to hurt them intentionally :-D But it’s common that whatever testing tool you start using, you will not have fun with it at first if your code is not testable. Many people curse at the testing tool and say, “Oh, this is stupid.” That’s okay but it’s not the real issue. It’s just that the testing tool makes it obvious that the code you’re trying to test is not as well-crafted as it could be. You feel this pain and that pain hopefully makes you reconsider the way that you have written your code and you start making changes to make the pain go away.
Q: Do you have any pro tips for people who are trying to learn how to write a good testable code?
Sebastian: Writing tests first helps a lot of people, but over the years I’ve met plenty of people that said that they cannot think like that and that’s also okay. If I were to give a rule for that, then, it would be, “Don’t commit code to your version control without a test.” That’s a very pragmatic way of thinking about it, so by the time you share the code with the rest of the team, the tests are there and the rest of the team doesn’t care about whether or not you have written the test first or the code, but having to have the tests by the time you commit means that the code is testable.
“Don’t commit code to your version control without a test.”Guest dossier
- Name: Sebastian Bergmann
- Work affiliation: "I’m a co-founder and principal consultant with the PHP Consulting Company, thePHP.cc. We help companies from small web agencies to Fortune 500 companies make better use of the PHP platform."
- Twitter: @s_bergmann
- GitHub: sebastianbergmann
- LinkedIn: Sebastian Bergmann
- Blog/Website: sebastian-bergmann.de
- FOSS role: Maintainer of PHPUnit
- Current projects: PHPUnit [Wikipedia article on PHPUnit]
- 1st version of PHP: PHP 3
- About: "Hi, I’m Sebastian and it’s 2016 now, so about 15 years ago, I started to work on a tool that is called PHPUnit, which I, at least, back then, never believed and sometimes even today, don’t really believe that it has happened, has become the de-facto standard in the PHP world for doing unit testing, integration testing and all other kinds of testing."
Video Embed is a very useful module for Drupal 8 users.
Video Embed creates a field type that allows you to embed videos from YouTube, Facebook, Vimeo, Vine and many other sources. All you have to do is enter the video URL and this module will do the rest.
Video Embed will create a thumbnail preview, control the autoplay settings and also ensure that the video is responsive.
Having eventually got my new VM up and running, I ended up down another rabbit hole for a little while. It took me longer than it should have done to figure out that configuration can be included in an installation profile. Having seen an issue on drupal.org, I got the idea into my head that I needed to mess about with the config directory, or use the Configuration installer profile. Thankfully the reality was much simpler.
As is so often the case, the way I figured it out was by looking at the source code of something that did work - in this instance the standard installation profile in core revealed that all the config files should be in the config/install directory. If I find any other confusing or unintuitive things like this, I'll try to update the documentation on drupal.org, as well as making some notes here.
It feels like a common problem with a lot of code that the documentation isn't in sync with the code. It's not just an issue with open source, but given that a lot of developers are reluctant to write documentation when they're getting paid for it, it's hardly surprising that there's a real need for more people to contribute to documentation.
Once that was out of the way I was able to start poking about with the actual migration. I've had a little bit of experience with migration in Drupal 6 and 7, although not as much as some of my old colleagues, and the migrate_example module was again helpful for figuring out how it all fits together.
It's tricky because a lot of the migrations depend on other migrations, and I want to manipulate the data on the way in so that it works with slightly different field names. The tutorial by Cheppers is the most helpful article I've found. Here's the basic workflow that I've been using so far:
- Edit settings.php to include the old database connection
- Run migrate-upgrade to get the migrations
- Export the site configuration
- Put the exported migration definitions in to the config/install directory of your custom module
- Tweak the migration definitions:
- Define a migration group: migration_group: gall that defines the database source
- remove database_state_key: migrate_upgrade_6 from the migrations
- Re-install the site using the installation profile
- Check the migration status drush ms
- Run the migrations: drush mi --all - for The Gallery Guide this takes a long time
- Try changing the prepareRow function in the migration class
- Re-run individual migrations to test : drush mi d6_node__gallery --update
At the moment one of the migrations is choking on a problem in core/lib/Drupal/Core/Utility/LinkGenerator.php:Error: Unsupported operand types in /var/www/drupalvm/drupal/core/lib/Drupal/Core/Utility/LinkGenerator.php, line 152 <div data-quickedit-field-id="node/511/field_exhib_website/und/search_index" class="field field--name-field-exhib-website field--type-link field--label-hidden field__item">
It's a puzzling one, but at least I've got some idea of where to start digging.
This process has reminded me once again of how useful Drush is, and more generally, the value of using the command line, especially for complex or repetitive tasks. I remember when I first started as a developer, being slightly intimidated by the terminal. A bit like the old text adventure games, it can be difficult to know where to start. None of the functionality is made obvious to the beginner.
But once you have a vague idea what you're doing, you can save so much time. Because the interface doesn't need to bother making things look pretty, it's much quicker. You can chain commands and set up shortcuts. All kinds of power is available if you know where to look.Tags: DrupalDrupal 8The Gallery Guide
With just over a day left until online registration for GDC 2016 ends Wednesday, March 9th at 11:59 PM PT, conference organizers are encouraging anyone interested in attending to register now! ...
Welcome to this week’s Secret Sauce, a short podcast by Palantir.net that offers a quick tip on some small thing you can do to help your business run a little bit better. Today’s advice comes from one of our colleagues at Pantheon. Steve Persch is an Agency and Community Engineer at Pantheon and former Palantir team member, and he’s sharing his thoughts on using the Panels module in Drupal.iTunes | RSS Feed | Download | Transcript Want to learn more about the Panels module and other ways to do more with your web project? Let's schedule a time to talk.
SP: Hi, I’m Steve Persch. Today I’m going to be talking about Panels Module in Drupal.
So I use Panels Module because I think of it as a really direct way of doing style guide driven development, which is a topic that’s getting discussed a lot in the Drupal community these days. Style guide driven development is the idea that development is directed by a style guide understanding of how a site is put together. What I mean by that is components like global headers, global footers, the styling of teasers, the styling of common article header elements is a really accessible way for clients, for stakeholders to conceptualize the visual understanding of a site.
So if you’re starting at that point with a style guide and you’re working in Drupal, it can be difficult to make Drupal match the markup that’s present in the style guide. A lot of Drupal developers like to complain about the CSS classes, the excessive wrapping divs that come from Drupal, and there’s this pain point of “how do we get Drupal to print the markup that we want.”
At DrupalCon Los Angeles I did a presentation called Rendering HTML with Drupal: Past, Present and Future. Anyway, in that I described how in earlier versions of Drupal it was really common to just take whatever markup you get from Drupal and write CSS against that. It may have too many divs, too many classes . . . it doesn’t matter, just write CSS against it. As we move towards this world where where we’re doing more style guide driven development, we generally don’t want the markup that comes out of Drupal by default.
Here’s where Panels Module comes in. Panels Module, I think, is a great mapping layer between Drupal’s internal understanding of elements like nodes, like headers and blocks, and that style guide understanding. So Panels has this concept called the Layout PlugIn. The Layout PlugIn is that mapping layer between a Drupal template file and the style guide design component. So you may have a Layout PlugIn called Global Header, and that’s your global header design component. You can then use that Global Header layout plugin at all these different layers of Panels.
There are four main layers of Panels that I like to use. There’s the Mini-Panels Layer, which is analogous to core’s block system. A mini-panel is basically an individual block, so you make an individual block, and that’s your site header. You can look at that mini panel and you can see this uses the global header design component and that becomes a mapping layer between . . . all right, we had this understanding of a design component called a global header, and we had to plug in all this Drupal data like search forms, like menus . . . Panels is a user interface that lets you insert all of that Drupal data into a template that you can still think of as an independent design component.
Doing that in traditional Drupal is really hard conceptually because in a more traditional Drupal build, the header might just be a conglomeration of things in the global template file, your page.tpl file. And it’s hard to keep track of where does this design component start and stop? Is there even a single representation of the header, or is it just a mix of menus that are thrown into the global template?
So with Mini-Panels you can encapsulate blocks. With the Panelizer level, you can encapsulate view modes. Panelier is essentially an alternative user interface on top of Core’s view modes. So in Drupal Core you have the ability to say, “this article teaser is going to display these fields in this order, drag and drop . . . cool. I’d still like to have that mapping layer too. Well, our style guide says article teasers are really illustrated list items, our style guide calls them illustrated list items. So we can map in Panelizer from the Drupal concept article teaser to the style guide concept illustrated list item.
The next layer up is the Page Manager level. This is basically: what is this page? If you have a page that’s your taxonomy term listing page . . . you’ve got a vocabulary of musical genres . . . you’re going to have a page that is genres/jazz. What happens on that page? If you just have Drupal Core, that page is going to be nothing but a list of all nodes tagged in jazz. But your style guide says jazz needs to show this design component, it’s a complex design component. It shows the most popular albums in jazz, it shows these songs, it shows artists, it shows all these different things and we have a name for that component. At the Page Manager level you can map the Drupal concept of jazz page to the style guide concept of whatever is the name of that design component . . . maybe you call it genre landing page. So that’s our third layer, the “what is this page” layer.
Finally there’s the global layer [Panels Everywhere], where you do things that in Core that you would otherwise do with the Core blocks system. We’ve got a global header, we’ve got a globar footer, maybe we have a global sidebar . . . panels everywhere lets you control that global template and use all the Panels UI niceness to line up your variables to say, “actually on this page we have no global header and footer whatsoever, we have just this one element. On this other page we have a variation that says we use a mini-header.” Panels Everywhere is a way of more deterministically saying how those variants shake out, whereas in Drupal Core all of your core blocks are responsible in and of themselves for figuring out, “do I show up on this page?” With Panels Everywhere you can say on a given URL, on a given pattern this is our global template, this is our global design component.
That’s why I like Panels. If you want to know more, check out the Palantir blog. I’ve basically given a summary here. There’s one blog post explaining Panels that runs down these four concepts, these four main modules, and then there’s another follow-up blog post called “Why I Use Panels” that digs a little deeper into the concept of mapping between Drupal data and a style guide or independent representation of design.
AM: Thank you Steve. That’s the end of this week’s Secret Sauce! For more great tips, follow us on twitter at @palantir, or visit our website at palantir.net. Enjoy your day.
The 30th edition of GDC kicks off next week, and organizers are eager to let you know about all the great sessions, bootcamps, roundtables, interactive spaces and cool events at the show! ...
This week you have a chance to vote twice for Schnitzel!Michael Schmid Tue, 03/08/2016 - 15:50
People who know Amazee and the Amazee spirit, know that we are all about the Drupal community and contributing back to it; not only in the form of code, but in many other ways.
These other types of contribution need help from you to actually become a reality.#1: Drupal Association At-Large Board position
The Drupal Association Board has two members that are elected to their seat by the community, called "At-Large" Board members. This role is designed to represent the community within the board.
Community representation is very important and therefore these board members should bring two qualities: Broad knowledge of the community and and governance experience. Both qualities I bring to the board:
- I am a volunteer in the issue queue pushing Drupal forward, an event attendee, trainer, speaker, sponsor and organizer.
- I also have experience serving as a board member of Amazee Holding and Amazee Labs.
Additionally with traveling and managing a team on three different continents, I understand the pain points and opportunities of Drupal diverse cultures, languages, nationalities, genders, time-zones, and unique personalities.
If you would like to know more about my campaign for the Drupal Association At-Large Board position, see my Candidate Profile, then, please vote!:
How to vote: You need a Drupal.org account that is at least one month old in order to be eligible to vote. Don't wait - voting ends March 18.#2: Community Keynote at DrupalCon New Orleans
Another big other part of my community contributions is sharing Drupal knowledge in the form of sessions at Drupal Camps, DrupalCons and other events.
In the past I mostly focused on technical topics and case studies, but most recently at DrupalCamp London and DrupalCon Barcelona, I gave a presentation about the topic of stress and stress prevention. Afterwards I received a lot of great feedback and people told me that my tricks helped them. I now realize that we are not sharing enough about this topic.
I would like the opportunity to talk about this very important topic at a community keynote where my message will reach the necessary audience this topic requires: all of us.
So I submitted a session called "Your brain health is more important than your standing desk", where I would present about this topic in front of the whole DrupalCon audience.
How to vote: To vote you need to be logged in to see and click on "vote for this session".
Thank you very much for your support!
Drupal 6 was released in February of 2008 and on February 26th, 2016, after 7 years, Drupal 6 was retired, in accordance with the Drupal community’s policy of only providing active support for two major versions of Drupal at any given time. While it is possible to migrate a Drupal 6 (or 7) site to Drupal 8, the tools are still in flux. While simple sites make for simple migrations—since most sites are not simple and require considerable research, planning, and effort to migrate—migration remains a complex process. Continue reading to find out more about how Drupal 6's end-of-life impacts Drupal site owners and what options you have if you still run a Drupal 6 site.
This guest article by Brian Holland talks about effects and consequences, and theme-wise it seemed perfect to follow up our time travel bender. What was that crunch under my gnome boot? – John
When we hear “The Butterfly Effect” we conjure images of bad sci-fi time-travel movies, or maybe even recite the popular statement “A butterfly flapping its wings in Texas can start a tornado in Tennessee”. The effect is best summed up by the concept that small causes can have huge effects (you can read all about it here if you’re interested). However you choose think about it, it’s really cool, and that’s why it occurs so often in fiction. The fiction we read and see in books, movies and video games is very different than roleplaying games, however. A great example of a video game doing it well was the recent “Until Dawn” – a cabin-in-the-woods teen-horror game – where very small decisions could lead to major outcomes (as when NOT shooting a squirrel very early in the story with one character can lead to another character escaping the psycho… you’d have to play it to see how that plays out). A video game that uses the Butterfly Effect needs to be very meticulously planned out. A roleplaying game needs planning too, but not necessarily in the same way.Butterflies Of The Past
Years ago I was in a game where our party was rushing along a narrow mountain pass to get back to our home town minutes ahead of a huge zombie hoard. We needed to rouse the town guard and possibly get some residents to safety before town was overrun. In despair, our wizard asked if he could use a fireball to cause a rock slide and slow the hoard down a bit. Sure he could. Some dice were rolled and – WOW – the slide was even larger than we could have hoped for. It took out a good portion of the hoard and hemmed them in for us. It was like shooting zombies in a barrel! We saved the town and everyone in it!
A couple sessions later, we desperately needed to find Captain Humli of the town guard. He had vital information for us! It turned out that the rock slide had completely cut off trade, and was causing riots in town as basic supplies were becoming scarce. The good captain led some of his men and a contingent of prisoners to clear the rubble and reopen the pass so that trade could resume. The prisoners escaped, killing all but one of the guards, including Captain Humli. We spent two sessions tracking down the information we needed, one of the prisoners became a semi-major NPC, and riots had ruined half our town – all because of ONE fireball!!
Sometime after that campaign ended I remarked about how cool that was that a single fireball had completely changed the story. Brad, the GM, laughed and said that all of that would have happened anyway! Humli would have been killed by zombies, an NPC in town was slated to become much more important, and zombies would have wrecked the town instead of rioting inhabitants. I was shocked. It had seemed so cause-and-effect while we played! Brad said he’d done things like that all through the campaign. He had big things planned, but could tweak and change the details based on our choices and actions, giving us the illusion of the Butterfly Effect.Door A Or Door B
I feel like that’s the best way to handle the Butterfly Effect in a roleplaying game. Don’t play the “what if” game: What if they do this, what if they do that? That could lead to all kinds of planning that may never come to fruition! Instead, play the “so what” game: They did this, so what can happen because of it, and HOW CAN I USE IT? There are two keys to using it properly though. First thing is that you need to apply this to small actions and decisions. We (hopefully) already do that for the big “Door A or Door B” decisions, but it can be truly effective when applied to a minor decision or action. Second, you must let the players know that “Thing B” happened because of “Choice/Action A” that they made, or they may not even notice it.
A very simple example comes to mind: Upon character creation, a player is trying to decide whether his Wizard character will purchase a dagger or a staff. Make note of it. If the wizard chose the staff, then when the group of druids – whom you’ve already decided will be hostile towards the party – meets them they’re hostile because that staff is made from the wood of a tree that’s sacred to them. If he chose the dagger, then find another character-based action or decision to be the reason for their hostility (maybe the party forgot to extinguish their camp fire, which caused a small forest fire).
All that being said, it’s really up to you as the GM to track a whole bunch of little things that you normally wouldn’t, and after each session or so play the “so what” game with what you’ve got. Then weave those things into your campaign so that the players truly get the feeling that their everyday actions have affected the story. Make big plans, but let the small decisions add flavor and sense of the Butterfly Effect in your campaign.
I’d love to hear some fun examples or comments about using the Butterfly Effect in your games!
I recently came across situation where the .ppsx files were displayed as some weird characters instead of getting downloaded. For those who aren't aware of the .ppsx file extension, it is nothing but the extension for files created through Microsoft PowerPoint. You can find more information about the Powerpoint file formats here.suresh Tue, 03/08/2016 - 17:45