Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 59 min 38 sec ago

BlackMesh: Our Ongoing Commitment to Security: Partnering with Tag1 Consulting

Mon, 08/22/2016 - 14:22
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encoded p As you may already know, the BlackMesh team is committed to ensuring developers can focus on their website goals without worrying about scalability, infrastructure, and – in particular – security. That’s why we’re thrilled to have partnered with leading Drupal security agency a href= target=_blankTag1 Consulting/a to provide our Drupal clients a comprehensive tool for managing site updates./p p strongemWhat?/em/strong/p p The new a href= target=_blankTag1 Quo/a is a hosted security dashboard that provides up-to-the-minute snapshots of a client’s security status and potential vulnerabilities. Basically, this innovative tool provides Drupal users consolidated and critical security updates for their websites. Tag1 Quo features include essentials for a website’s success, such as self-service monitoring, security notifications for out-of-date modules, and patch and release delivery./p p strongemHow?/em/strong/p p Tag1 Quo automatically monitors upstream releases and security advisories in collaboration with module maintainers and other Drupal 6 long term support (LTS) providers. The Tag1 team of Drupal security experts review and decide which issues affect the client, carefully backporting those that are applicable to their site. Quo then delivers timely notifications to the client’s inbox. Quo users can choose to either leverage pre-patched releases or quickly apply the patches themselves to bring their website up-to-date and secure against all known vulnerabilities. For extra peace of mind, the Quo dashboard provides at-a-glance visualization of all client websites, highlighting all outstanding updates across them./p p class=rtecenter img alt= class=media-image attr__typeof__foaf:Image img__fid__579 img__view_mode__media_large attr__format__media_large height=230 src= typeof=foaf:Image width=480 //p p align=center emTag1 Quo Dashboard/em/p p strongemWhy?/em/strong/p p Though D6 was phased out earlier this year, Tag1 Consulting continues to provide long-term D6 support to those who need it. As a way to adequately manage the significant maintenance and monitoring of these systems, the Tag1 team developed Tag1 Quo./p p If you are currently managing a D6 site, a href= target=_blanksigning up/a for Tag1 Quo is a no-brainer. It provides affordable long-term support for all of your core and contributed modules and themes, tested and delivered by an approved LTS provider, backed by a team of renowned Drupal experts./p p strongemYour Security. Your Options …/em/strong/p p Even if you don’t maintain a D6 site, you’ll still want to a href= target=_blankcheck it out/a./p p Depending on your needs and budget, Tag1 Quo offers three different a href= target=_blankplan options/a. Tag1’s roadmap includes upcoming support for D7 and D8, WordPress 4.6 and 4.7, application programming interface (API) access, upgrade planning, and more./p p Signing up for Tag1 Quo means less time spent on maintenance and security – and that means more time focusing on your goals and overall mission. Whenever BlackMesh teams up with companies like Tag1, we’re advancing our commitment to your security. a href= target=_blankContact us/a to learn more about how we can make the Tag1 Quo dashboard solution fit your needs./p p  /p p emLike this article? Follow us on /ema href= target=_blankemFacebook/em/aem and share your thoughts!/em/p /div/div/divspan class=submitted-by/spandiv class=field field-name-field-tags field-type-taxonomy-term-reference field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/tags/security typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Security/a/divdiv class=field-item odda href=/tags/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a/div/div/div

Blair Wadman: How to create a custom block and assigning to a region in Drupal 8

Mon, 08/22/2016 - 07:12
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpOne of the many changes in Drupal 8 is adding a block to a region. The block interface has been pretty consistent over the years, so changes to how it works can be confusing at first. You do something over and over again and then “Wait a minute! Things have moved, what do I do?!”. But never fear, the new way of adding blocks to regions is pretty straight forward once you get your head around it./p /div/div/div

PreviousNext: Drupal 8 FTW: Is it a test or is it a form? Actually, its both

Mon, 08/22/2016 - 02:25
pAs you'd be aware by now - Drupal 8 features lots of refactoring of from procedural code to object-oriented./p pOne such refactoring was the way forms are build, validated and executed./p pOne cool side-effect of this is that you can now build and test a form with a single class./p pYep that's right, the form and the test are one and the same - read on to find out more./p span property=dc:title content=Drupal 8 FTW: Is it a test or is it a form? Actually, its both class=rdf-meta element-hidden/span

Roy Scholten: Content workflow initiative, the concept map

Sun, 08/21/2016 - 20:34
div class=field field-name-field-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/pieces/content-workflow-initiative-concept-mapimg src= width=640 height=453 alt=Concept map of the content workflow initiative //a/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpMapping out the moving parts of the content workflow initiative a href= arrived at this high level grouping of related activities:/p ulliemCreate/em content/li liemReview amp; approve/em content/li liemPublish/em content/li liemManage/em the creation, review and publishing process/li liemConfigure/em the tools that enable all of the above/li /ulpFor either single items of content or a set of multiple items, bundled in a href= workspace/a./p h2Create content/h2 pEverything related to creating new, editing existing content in the first place./p h3Roles/h3 ulliAuthor/li liCopy writer/li liPhoto/image editor/li /ulh3Tasks amp; activities/h3 ulliReview assignments/li liCreate content/li liFormat content/li liPreview content/li liRequest review/li liEdit content based on feedback/li liReview other people’s content/li liReview existing, live content/li /ulh2Review amp; approve content/h2 pAll the things that need to happen to get new content ready for publication. a href=’s a more elaborate example/a of a moderation workflow using a workspace./p h3Roles/h3 ulliEditor/li liMarketing associate/li liArchivist/li /ulh3Tasks amp; activities/h3 ulliReview content, give feedback/li liEdit content/li liPreview content/li liGet notified of content conflicts/li liAdapt content for different channels/li liAnalyse impact of content changes/li liReview existing content/li liRecover content/li /ulh2Publish content/h2 pActual publication of content and managing its life cycle from then on./p h3Roles/h3 ulliSection editor/li liLegal/li liCompliance/li /ulh3Tasks amp; activities/h3 ulliDefine/specify content packages/li liReview content (packages)/li liAudit (legal, compliance)/li liPreview content/li liApprove revivisions/li li(un)publish content items/li li(un)publish content packages/li liSchedule (un)publishing of content/li liArchive/delete content/li /ulh2Manage content workflow/h2 pSet the strategic agenda, coordinate with other business units, oversee all of the above./p h3Roles/h3 ulliManaging editor/li liMarketing executive/li liSupport amp; maintenance/li /ulh3Tasks amp; activities/h3 ulliDefine content strategy/li liContent planning/li liCoordinate with the business/li liCoordinate with IT/li liCoordinate content delivery/li liDefine content assignments/li liSchedule content production/li liMonitor progress/li liReview audit trail/li /ulh2Configure content workflow tools/h2 pProviding the tools and processes to enable all of the above./p h3Roles/h3 ulliAdministrator/li liDeveloper/li /ulh3Tasks amp; activities/h3 ulliConfigure workflows for content moderation/li liConfigure content workspaces/li liCMS configuration: content types, roles amp; permissions, notification settings…/li liTechnical development/li /ulpHave a look at the a href= definition of a workspace/a and a more fleshed out a href= of a moderation workflow/a as well./p pHope this helps clarify the main concepts, activities and relationships in the workflow initiative./p /div/div/divdiv class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/tag/drupaldrupal/a/divdiv class=field-item odda href=/tag/uxux/a/divdiv class=field-item evena href=/tag/workflow-initiativeworkflow initiative/a/divdiv class=field-item odda href=/drupaldrupalplanet/a/div/div/divdiv class=field field-name-field-sub-title field-type-text field-label-abovediv class=field-labelSub title:nbsp;/divdiv class=field-itemsdiv class=field-item evenMust not make spelling mistakes or I have to start over again/div/div/div

Danny Englander: Drupal 8 Development: How to Import an Existing Site Configuration Into a New Site

Sun, 08/21/2016 - 01:31
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item oddpimg title=Drupal 8 Configuration Experiment alt=Drupal 8 Configuration Experiment src= width=880 height=360 class=image-adaptive inline-adaptive/p pstrongDisclaimer:/strong The steps in this tutorial are not recommend for a live site and are experimental!/p pRecently, I ran into an issue in my local Drupal 8 development environment where uninstalling a module failed. I was getting errors related to the module in question in both the UI and in drush. My bad for not having a recent DB backup for my local, the one I had was too old to use. (I've since fixed that with an automated backup script!) Double my bad for having installed a not-ready-for-primetime module./p pThat being said, my local site had a ton of configuration and custom entities and I really wanted a clean database. I first attempted to use Features to transport all my config to a new install but kept getting an emUnmet Dependancies/em error and was not able to get to the bottom of it. (There are a a href=;status=Openamp;priorities=Allamp;categories=Allamp;version=8.xamp;component=Allnumber of Drupal 8 Features issues open/a related to this.) I didn't understand this error as I was simply using the same root folder with a new database./p pFeatures aside, I knew that by nature, an existing site configuration export can't be imported into another site, this makes sense at face value. But I got to thinking, emwell, I just want to take all this nice config and pop it into a brand new site/em -- less anything relating to the aforementioned bad module./p h2Get the site UUID/h2 pI did more searching and sure enough there is roundabout way to do what I was intending. It involves a few drush commands, codedrush cget/code and codedrush cset/code. The first command is to get the existing UUID from your present site./p precode class=bash drush cget uuid /code/pre pThis will print out the Site UUID as:/p precode class=bash '': bfb11978-d1a3-4eda-91fb-45decf134e25 /code/pre pOnce you get this, be sure to run codedrush cex/code one last time which will export the current configuration./p h2Install and reset/h2 pOnce I had the current UUID, I put my settings files back to default, created a new database and installed Drupal 8 from scratch. Once the new site installed, I updated my codesettings.local.php/code to point to my existing configuration files:/p precode class=bash /sites/default/files/config_......./sync/ /code/pre pIf your remote is on Pantheon, the local config path would be like this:/p precode class=bash /sites/default/files/config/ /code/pre pOnce this was set, all I had to do was reset the new site UUID to my old one that I derived from the codedrush cget/code command by running this:/p precode class=bash drush cset uuid bfb11978-d1a3-4eda-91fb-45decf134e25 /code/pre pThis resets the new site's UIID to the old site's UUID and that will allow you to run your config import./p h2Import the existing config/h2 pNow it was time to run codedrush cim/code which imports your site configuration. Running the command the first time gave me a rather nasty looking error./p precode class=bash The import failed due for the following reasons: [error] Entities exist of type em class=placeholderShortcut link/em and em class=placeholder/em em class=placeholderDefault/em. These entities need to be deleted before importing. /code/pre pThis might seem like a scary error but it just has to do with admin emShortcut links/em and a href= is a core issue open for this/a. At any rate this was a new site so I didn't really care about deleting these. I did more searching and discovered an obscure a href= command/a to fix this:/p precode class=bash drush ev '\Drupal::entityManager()-getStorage(shortcut_set)-load(default)-delete();' /code/pre pOnce I did that, my configuration imported like a charm, all 300 config files and several dozens of entities. I didn't see any errors after that, and everything was perfect now./p h2Summary/h2 pI am not sure there would be many use cases for doing what is outlined here but it did solve a specific issue, your milage may vary. I would be suspect of using this method for an existing site that has lots of things already built out. Keep in mind, I imported my existing config into a brand new site install./p /div/div/divh2 class=field-labelTagsnbsp;/h2ul class=field-items tag-itemsli class=field-item odd firstDrupal/lili class=field-item evenDevOps/lili class=field-item oddDrupal 8/lili class=field-item evenDrush/lili class=field-item odd lastDrupal Planet/li/ulh2 class=field-labelResourcesnbsp;/h2ul class=field-items tag-itemsli class=field-item odd firsta href= target=_blank rel=nofollowHow can I import the configuration on a different site?/a/lili class=field-item evena href= target=_blank rel=nofollowShortcut: Errors validating the config synchronization/a/lili class=field-item odd lasta href= target=_blank rel=nofollowProblem during import configuration/a/li/ul

Anchal: GSoC'16 - Porting Comment Alter Module

Sun, 08/21/2016 - 01:00
hr / pFor the last 3 months I’ve been working on strongPorting the Comment Alter module to Drupal 8/strong as my GSoC’16 project under mentorship of a href= and a href= This blog is an excerpt of the work I did during this time period. Weekly blog posts for the past 12 weeks can be accessed a href=https://anchal29.github.iohere/a./p h2 id=achievementsAchievements/h2 pstrongCreating schema for the module:/strong Implemented code class=highlighter-rougehook_schema()/code to store the old and new entity revision IDs along with the parent entity type as altered by a comment. The revision IDs are used to show the differences over comments. The parent entity type is used to delete the entries from the comment_alter table when any revision of the parent entity is deleted, because in Drupal 8 we can have same revision IDs from different entity types. So to remove entries of particular entity type we need the entity type./p pstrongUsing ThirdPartySettings to alter field config edit form -/strong Implemented code class=highlighter-rougehook_form_FORM_ID_alter()/code for code class=highlighter-rougefield_config_edit_form/code. This provides an interface to:/p ol li pstrongMake any field comment alterable -/strong Makes it possible to select any field we want to be altered by the comment. Currently all the Drupal core provided fields works well with the module./p /li li pstrongHide alteration from diff -/strong If the comment alterable option is enabled, then this option hides the differences shown over the comments. Instead of the differences, a link to the revision comparison is displayed for nodes. For the rest of the entities a “Changes are hidden” message is shown./p /li li pstrongUse latest revision -/strong When a module like Workbench makes the current revision of an entity not the latest one, this option forces the Comment Alter module to use the latest revision instead of the current one. This option is present on the comment field settings./p /li li pstrongAdds Diff link on comments -/strong Adds a Diff link on comments which takes us to the comparison page of two revisions, generated by the Diff module./p /li li pstrongComment altering while replying to a comment -/strong By default comment alterable fields can not be altered while replying to a comment. This option allows altering of fields even while replying to comments./p /li /ol pstrongAdding pseudo fields:/strong Implemented code class=highlighter-rougehook_entity_extra_field_info()/code to add one pseudo field for each comment alterable field on respective comment form display, and one pseudo field on comment display to show the changes made at the comment. Using these pseudo fields the position of the comment alterable fields can be re-ordered in the comment form. This gives site-builders flexibility to alter the position of any alterable fields./p pstrongAttaching comment alterable fields’ widgets on comment form:/strong Comment alterable field widgets are retrieved from the form-display of the parent entity and they are attached to the comment form only after ensuring that there are no side effects. To support same name fields on both comment and parent entity, code class=highlighter-rouge#parent/code property is provided so that the submitted field values for our alterable field widgets appears at a different location, not at the top level of code class=highlighter-rouge$form_state-gt;getValues()/code. All these added fields are re-orderable. Column informations and old values are also stored to the form at this stage, to later check if there were any changes made on the comment alterable fields./p pstrongAdding submit and validation callback for the altered comment form:/strong First the submitted values are checked against the old values to see if the values of the alterable field changed at all or not. If they changed, then the parent entity values are updated and this is done by building the parent entity form display and copying the altered field values into it. Then the form is saved. In case the parent entity doesn’t support revisions, then do nothing else just save the parent entity with altered values. Otherwise create a revision and store the comment ID, old and new revision IDs and parent entity type in the comment alter database table, which is used to show the differences on comments using the Diff module./p pstrongShowing differences on comments:/strong Using the Diff module and comment alter database table, the differences are shown over a particular comment. Only possible if the parent entity supports revisions. Diff module is used to get the differences between the two revisions and then those differences are rendered on comments in table format along with some custom styling./p pstrongAdding PHPUnit tests:/strong Added automated unit tests to check the functionality of the module for different field types and widgets. The tests are written for EntityTestRev entity types to keep them as generic as possible. This was the toughest part for me as I was stuck at some places in tests for quite a while as thses tests took lot of time to run and debugging them really is hard. But in the end I’m happy that I was able to complete all the tests./p pstrongScreencast/Demo video:/strong Created a a href= video/a showing how the Comment Alter module works, along with a simple use case./p h2 id=whats-leftWhat’s left?/h2 pMy mentors asked me to skip the Rules Integration part because the Rules module doesn’t have a stable or a beta release yet, only their first alpha release is there. So, the Rules Integration part is postponed till we get a stable or beta release./p h2 id=some-important-linksSome important links/h2 ul li pMy a href= repo/a contains all the a href= which I made during this project/p /li li pThe a href= Alter module’s project page/a on /li /ul pThank you!/p

Roy Scholten: Getting something in the box

Sat, 08/20/2016 - 22:53
div class=field field-name-field-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/pieces/getting-something-boximg src= width=640 height=491 alt=3 generic target audiences: individual, small group, everybody //a/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpFirst impressions matter. The first glance has a lot if impact on further expectations. Drupal core doesn’t do well there. As a href= points out/a, after installation the opening line is “you have no content”./p pYeah, thanks./p pThis empty canvas makes Drupal appear very limited in functionality. Which is the exact opposite of how Drupal is advertised (flexible, extensible, there’s a module for that!)/p pThis is not news. a href= issue for adding sample content/a is over 10 years old. a href= image I posted earlier/a is from a core conversation 6 years ago. Eaton and moi presented on a href= in Prague 3 years ago./p pBut now we do have Drupal 8, with essential features available right out of the box. We have a new release schedule that encourages shipping new features and improvements every 6 months. And we’re settling on a better process for a href= out the part from initial idea to fleshed out plan/a first, before implementing that plan./p pSo lets work together and come up with a plan for sample content in core. Which means answering product focussed questions like:/p ulliAudience: who do we make this for?/li liGoals: what do these people want to achieve?/li liFeatures: which tools (features) to provide to make that possible?/li liPriorities: which of those tools are essential, which are nice to haves?/li /ulpBut purpose first: audience and goals./p pWe’re always balancing product specifics with framework generics in what core provides. Pretty sure we can do something more opiniated than our current default “Article” and “Page” content types without painting ourselves in a corner./p pWe’ll discuss this topic during a href=;ctz=Europe/Amsterdamupcoming UX meetings/a and in the UX channel in a href= (get your automatic invite a href= /div/div/divdiv class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/tag/drupaldrupal/a/divdiv class=field-item odda href=/tag/onboardingonboarding/a/divdiv class=field-item evena href=/drupaldrupalplanet/a/div/div/divdiv class=field field-name-field-sub-title field-type-text field-label-abovediv class=field-labelSub title:nbsp;/divdiv class=field-itemsdiv class=field-item evenTabula rasa is not an effective onboarding strategy/div/div/div

ImageX Media: Complete Content Marketing with Drupal

Sat, 08/20/2016 - 01:11
!-- field.tpl -- div class=field field-name-body field-type-text-with-summary field-label-hidden !-- theme hook suggestions: -- !-- hook:field -- !-- tpl file: * field--text-with-summary.tpl.php -- !-- tpl file: * field--body.tpl.php -- !-- tpl file: * field--blog.tpl.php -- !-- tpl file: * field--body--blog.tpl.php -- pAt its most basic, content marketing is about a href= or changing consumer /aa href= Or a href= elaborately/a, it’s “a marketing technique of creating and distributing valuable, relevant and consistent content to attract and acquire a clearly defined audience -- with the objective of driving profitable customer action.”/p /div !--/field.tpl --

ImageX Media: Want to be a Content Marketing Paladin? Then Automate Your Content Production Workflows with These (Free) Tools

Sat, 08/20/2016 - 01:07
!-- field.tpl -- div class=field field-name-body field-type-text-with-summary field-label-hidden !-- theme hook suggestions: -- !-- hook:field -- !-- tpl file: * field--text-with-summary.tpl.php -- !-- tpl file: * field--body.tpl.php -- !-- tpl file: * field--blog.tpl.php -- !-- tpl file: * field--body--blog.tpl.php -- pFlat-lining content experiences and withering conversion rates can be the kiss of death to almost any website. When content experiences deteriorate one issue seems to make an appearance time and time again: the amount of time and resources required to produce and manage content marketing initiatives. Among the many best practices and strategies that will accelerate growth includes the all-powerful move towards productivity automation. /p /div !--/field.tpl -- Getting started with a Core Initiative

Fri, 08/19/2016 - 22:00
div class=thumbnail div class=img-wrapper img src= /div div class=captionDriesnote where GraphQL was featured. Picture from a href=''Josef Jerabek/a/div /div pAfter some time contributing to the Drupal project in different ways, I finally decided to step up and get involved in one of the a href= Initiatives/a. I was on IRC when I saw an announcement about the JSON API / GraphQL initiative weekly meeting and it seemed like a great chance to join. So, this blog post is about how you can get involved in a Core Initiative and more specifically, how can you get involved in the JSON API / GraphQL Initiative./p pa href= reading…/a/p

ImageX Media: Debugging Your Migrations in Drupal 8

Fri, 08/19/2016 - 20:04
!-- field.tpl -- div class=field field-name-body field-type-text-with-summary field-label-hidden !-- theme hook suggestions: -- !-- hook:field -- !-- tpl file: * field--text-with-summary.tpl.php -- !-- tpl file: * field--body.tpl.php -- !-- tpl file: * field--blog.tpl.php -- !-- tpl file: * field--body--blog.tpl.php -- pOne of the most useful features of a href= 8/a is the migration framework in core, and there are already plenty of plugins to work with different sources that are available in contributed modules. /p pWhen writing your own code, it must always be debugged. As migrations can only be started with Drush, the debugging can be a bit challenging. And it gets even more interesting when you develop your website in a Vagrant box. /p pIn this tutorial, we will go through setting up xDebug and PhpStorm to debug your migrations./p /div !--/field.tpl --

OSTraining: How to Use the Drupal Group Module

Fri, 08/19/2016 - 14:22
pIn this tutorial, I'm going to explain how you can use the new Group module to organize your site's users. Group is extremely powerful Drupal 8 module./p pAt the basic level, Group allows you to add extra permissions to content.nbsp;/p pAt the more advanced level, this module is potentially a Drupal 8 replacement for Organic Groups./p

Mediacurrent: Friday 5: 5 Ways to Use Your Browser Developer Tools

Fri, 08/19/2016 - 13:12
img typeof=foaf:Image src= width=200 height=188 / pTGIF! We hope the work week has treated you well./p

Nuvole: Optimal deployment workflow for Composer-based Drupal 8 projects

Fri, 08/19/2016 - 12:20
div class=field field-name-field-blog-subtitle field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item evenConsiderations following our Drupal Dev Day Milan and Drupalaton presentations; and a preview of our DrupalCon training./div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpemThis post is an excerpt from the topics covered by our a href= Dublin training: Drupal 8 Development - Workflows and Tools/a/em./p pDuring the recent Nuvole presentations at a href= Dev Days Milan 2016/a and a href= Hungary 2016/a we received a number of questions on how to properly setup a Drupal 8 project with Composer. An interesting case where we discovered that existing practices are completely different from each other is: What is the best way to deploy a Composer-based Drupal 8 project?./p pWe'll quickly discuss some options and describe what works best for us./p h3What to commit/h3 pYou should commit:/p ulliThe codecomposer.json/code file: this is obvious when using Composer./li liThe codecomposer.lock/code file: this is important since it will allow you to rebuild the entire codebase at the same status it was at a given point in the past./li /ulpThe fully built site is commonly left out of the repository. But this also means that you need to find a way for rebuilding and deploying the codebase safely./p h3Don't run Composer on the production server/h3 pYou would clearly never run codecomposer update/code on the production server, as you want to be sure that you will be deploying the same code you have been developing upon. For a while, we considered it to be enough to have Composer installed on the server and run codecomposer install/code to get predictable results from the (committed) codecomposer.lock/code file./p pThen we discovered that this approach has a few shortcomings:/p ullipThe process is not robust. A transient network error or timeout might result in a failed build, thus introducing uncertainty factors in the deploy scripts. Easy to handle, but still not desirable as part of a delicate step such as deployment./p/li lipThe process will inevitably take long. If you run codecomposer install/code in the webroot directly, your codebase will be unstable for a few minutes. This is orders of magnitude longer than a standard update process (i.e., running codedrush updb/code and codedrush cim/code) and it may affect your site availability. This can be circumvented by building in a separate directory and then symlinking or moving directories./p/li lipEven codecomposer install/code can be unpredictable, especially on servers with restrictions or running different versions of Composer or PHP; in rare circumstances, a build may succeed but yield a different codebase. This can be mitigated by enforcing (e.g., through Docker or virtualization) a dev/staging environment that matches the production environment, but you are still losing control on a relatively lengthy process./p/li lipYou have no way of properly testing the newly built codebase after building it and before making it live./p/li lipComposer simply does not belong in a production server. It is a tool with a different scope, unrelated to the main tasks of a production server./p/li /ulh3Where to build the codebase? CI to the rescue/h3 pAfter ruling out the production server, where should the codebase be built then?/p pBuilding it locally (i.e., using a developer's environment) can't work: besides the differences between the development and the production (code--no-dev/code) setup, there is the risk of missing possible small patches applied to the local codebase. And a totally clean build is always necessary anyway./p pWe ended up using Continuous Integration for this task. Besides the standard CI job, which operates after any push operation to the branches under active development, performs a clean installation and runs automated tests, another CI job builds the full codebase based on the codemaster/code branch and the codecomposer.lock/code file. This allows sharing it between developers, a fast deployment to production through a tarball or rsync, and opportunities for actually testing the upgrade (with a process like: automatically import the production database, run database updates, import the new configuration, run a subset of automated tests to ensure that basic site functionality has no regressions) for maximum safety./p pSlides from our recent presentations, mostly focused on Configuration Management but covering part of this discussion too, are below./p /div/div/divdiv class=field field-name-field-blog-tags field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evenDrupal Planet/divdiv class=field-item oddDrupal 8/divdiv class=field-item evenDrupalCon/divdiv class=field-item oddTraining/div/div/divdiv class=field field-name-field-blog-attachments field-type-file field-label-abovediv class=field-labelAttachments:nbsp;/divdiv class=field-itemsdiv class=field-item evenspan class=fileimg class=file-icon alt= title=application/pdf src=/modules/file/icons/application-pdf.png / a href= type=application/pdf; length=1105449 title=Configuration Management in Drupal 8 - DDD2016.pdfSlides: Configuration Management in Drupal 8/a/span/div/div/div

Jim Birch: Styling Views Exposed Filters Selects in Drupal 8

Fri, 08/19/2016 - 10:20
a href=;utm_medium=drupal-planetamp;utm_campaign=node/62 title=Styling Views Exposed Filters Selects in Drupal 8img class=img-responsive src= width=620 height=465 alt=Lego Uncle Jim Votes! //abr pStyling the HTML lt;selectgt; tag to appear similar in all the different browsers is a task unto itself.  It seems on each new site , I find myself back visiting a href= post by Ivor Reić/a for a CSS only solution.  My task for today is to use this idea to theme an exposed filter on a view./p pThe first thing we need to do is add a div around the select.  We can do this by editing the select's twig template from Drupal 8 core's stable theme.  Copy the file from/p pcode class=language-markup/core/themes/stable/templates/form/select.html.twig/code to/p pcode class=language-markup/themes/yourtheme/templates/form/select.html.twig/code/p pThen add the extra lt;div class=select-stylegt; and closing lt;/divgt; as so./p script src= is the LESS file that I compile which includes Ivor's CSS, but also some adjustments I added to event the exposed filter out. Each rule is commented, explaining what they do./p script src= will compile this into my final CSS and we are good to go.  The display of the form, and the select list should be pretty accurate to what I want across all modern browsers.  Adjust as needed for your styles and design./p pa href=;utm_medium=drupal-planetamp;utm_campaign=node/62 title=Styling Views Exposed Filters Selects in Drupal 8Read more/a/p

Cocomore: The Central Data Hub of VDMA - Tango REST Interface (TRI)

Thu, 08/18/2016 - 23:00
pOn the VDMA website (Association of German Machinery and Plant Engineering) various professional associations are specifically listed with their individual information. To provide each page with information from the Tango Backend, a specific interface has been developed: The so-called Tango REST interface. In the seventh part of our series “The Central Data Hub of VDMA” we will introduce this interface, its technical realization and its functions. /p