Drupal Planet

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 1 hour 22 min ago

Joachim's blog: Dorgflow: a tool to automate your drupal.org patch workflow

5 hours 22 min ago
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpI’ve written previously about git workflow for working on drupal.org patches, and about how we don’t necessarily need to move to a github-style system on drupal.org, we just maybe need better tools for our existing workflow. It’s true that much of it is repetitive, but then repetitive tasks are ripe for automation. In the two years since I released Dorgpatch, a shell script that handles the making of patches for drupal.org issues, I’ve been thinking of how much more of the drupal.org patch workflow could be automated./p pNow, I have released a new script, a href=https://github.com/joachim-n/dorgflowDorgflow/a, and the answer is just about everything. The only thing that Dorgflow doesn’t automate is uploading the patch to drupal.org (and that’s because drupal.org’s REST API is read-only). Oh, and writing the code to actually fix bugs or create new features. You still have to do that yourself, along with your cup of coffee./p pSo assuming you’ve made your own hot beverage of choice, how does Dorgflow work?/p pSimply! To start with, you need to have an up to date git clone of the project you want to work on, be it Drupal core or a contrib project./p pTo start work on an issue, just do:/p precode$ dorgflow https://www.drupal.org/node/123456 /code/pre pYou can copy and paste the URL from your browser. It doesn’t matter if it has an anchor link on the end, so if you followed a link from your issue tracker and it has ‘#new’ at the end, or clicked down to a comment and it has ‘#comment-1234’ that’s all fine./p pThe first thing this comment does it make a new git branch for you, using the issue number and the name. It then also downloads and applies all the patch files from the issue node, and makes a commit for each one. Your local git now shows you the history of the work on the issue. (Note though that if a patch no longer applies against the main branch, then it’s skipped, and if a patch has been set to not be displayed on the issue’s file list, then it’s skipped too.)/p pLet’s see how this works with an actual issue. Today I wanted to review the patch on an issue for Token module. The issue URL is https://www.drupal.org/node/2782605. So I did:/p precode$ dorgflow https://www.drupal.org/node/2782605 /code/pre pThat got me a git history like this:/p precode * 6d07524 (2782605-Move-list-of-available-tokens-from-Help-to-Reports) Patch from Drupal.org. Comment: 35; URL: https://www.drupal.org/node/2782605#comment-11934790; file: token-move-list-of-available-tokens-2782605-34.patch; fid 5784728. Automatic commit by dorgflow. * 6f8f6e0 Patch from Drupal.org. Comment: 15; URL: https://www.drupal.org/node/2782605#comment-11666939; file: 2782605-13.patch; fid 5710235. Automatic commit by dorgflow. / * a3b68cc (8.x-1.x) Issue #2833328 by Berdir: Handle bubbleable metadata for block title token replacements * [older commits…] /code/pre pWhat we can see here is:/p ul liGit is now on a feature branch, called ‘2782605-Move-list-of-available-tokens-from-Help-to-Reports’. The first part is the issue number, and the rest is from the title of the issue node on drupal.org./li liTwo patches were found on the issue, and a commit was made for each one. Each patch’s commit message gives the comment index where the patch was posted, the URL to the comment, the patch filename, and the patch file entity ID (these last two are less interesting, but are used by Dorgflow when you update a feature branch with newer patches from an issue)./li /ul pThe commit for patch 35 will obviously only show the difference between it and patch 15, an interdiff effectively. To see what the patch actually contains, take a diff from the master branch, 8.x-1.x./p p(As an aside, the trick to applying a patch that’s against 8.x-1.x to a feature branch that already has commit for a patch is that there is a way to check out files from any git commit while still keeping git’s HEAD on the current branch. So the patch applies, because the files look like 8.x-1.x, but when you make a commit, you’re on the feature branch. Details are on a href=http://stackoverflow.com/questions/13896246/reset-git-to-commit-without-changing-head-to-detached-statethis Stack Overflow question/a.)/p pAt this point, the feature branch is ready for work. You can make as many commits as you want. (You can rename the branch if you like, provided the ‘2782605-’ part stays at the beginning.) To make your own patch with your work, just run the Dorgflow script without any argument:/p precode$ dorgflow /code/pre pThe script detects the current branch, and from that, the issue number, and then fetches the issue node from drupal.org to get the number of the next comment to use in the patch filename. All you now have to do is upload the patch, and post a comment explaining your changes./p pAlternatively, if you’re a maintainer for the project, and the latest patch is ready to be committed, you can do the following to put git into a state where the patch is applied to the main development branch:/p precode$ dorgflow commit /code/pre pAt that point, you just need to obtain the git commit command from the issue node. (Remember the drupal standard git message format, and to check the attribution for the work on the issue is correct!)/p pWhat if you’ve previously reviewed a patch, and now there’s a new one? Dorgflow can download new patches with this command:/p precode$ dorgflow update /code/pre pThis compares your feature branch to the issue node’s patches, and any patches you don’t yet have get new commits./p pIf you’ve made commits for your own work as well, then effectively there’s a fork in play, as your development in your commits and the other person’s patch are divergent lines of development. Appropriately, Dorgflow creates a separate branch. Your commits are moved onto this branch, while the feature branch is rewound to the last patch that was already there, and then has the new patches applied to it, so that it now reflects work on the issue. It’s then up to you to do a git merge of these two branches in order to combine the two lines of development back into one./p pDorgflow is still being developed. There are a few ideas for further features in the issue queue on github (not to mention a couple of bugs for some of the various possible cases the update command can encounter). I’m also pondering whether it’s worth the effort to convert the script to use Symfony Console; feel free to chime in with any opinions on the issue for that./p pThere are tests too, as it’s pretty important that a script that does things to your git repository does what it’s supposed to (though the only command that does anything destructive is ‘dorgflow cleanup’, which of course asks for confirmation). Having now written this, I’m obviously embarking upon cleaning it up and to some extent rewriting it, though I do have the excuse that the early weeks of working on this were the days after the late nights awake with my newborn daughter, and so the early versions of the code were written in a haze of sleep deprivation. If you’d like to submit a pull request, please do check in with me first on an issue to ensure it’s not going to clash with something I’m partway through changing./p pFinally, if you find this as useful as I do (this was definitely an itch I’ve been wanting to scratch for a long time, as well as being a prime case of condiment-passing), please tell other Drupal developers about it. Let’s all spend less time downloading, applying, and rolling patches, and more time writing Drupal code!/p /div/div/divul class=links inlineli class=comment-add first lasta href=/comment/reply/40#comment-form title=Share your thoughts and opinions related to this posting.Add new comment/a/li /ul
Categories: Drupal Feeds

Jeff Geerling's Blog: Thoughts on the Acquia Certified Back end Specialist - Drupal 8 Exam

6 hours 59 min ago
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpContinuing along with my series of reviews of Acquia Developer Certification exams (see the previous one: a href=/blog/2017/thoughts-on-acquia-certified-drupal-8-site-builder-examDrupal 8 Site Builder Exam/a, I recently took the a href=https://www.acquia.com/customer-success/learning-services/acquia-certified-back-end-specialist-d8-exam-blueprintBack End Specialist – Drupal 8 Exam/a, so I'll post some brief thoughts on the exam below./p p style=text-align: center;img src=//www.jeffgeerling.com/sites/jeffgeerling.com/files/images/acquia-certified-site-builder-2016.png width=150 height=150 alt=Acquia Certified Drupal Site Builder - Drupal 8 2016 class=insert-image /br /emI didn't get a badge with this exam, just a cert... so here's the previous exam's badge!/em/p/div/div/div
Categories: Drupal Feeds

myDropWizard.com: Drupal 6 security update for Views

7 hours 25 min ago
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpemAs you may know, a href=https://www.mydropwizard.com/blog/weve-reached-drupal-6-end-life-date-what-does-meanDrupal 6 has reached End-of-Life (EOL)/a 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 a href=https://www.mydropwizard.com/blog/how-official-drupal-6-long-term-support-will-workDrupal 6 LTS vendors/a are and we're one of them!/em/ppstrongToday, there is a Moderately Critical security release for the a href=https://www.drupal.org/project/viewsViews/a module to fix an Access Bypass vulnerability./strong/pp class=p1span class=s1The Views module allows site builders to create listings of various data in the Drupal database./span/pp class=p1span class=s1The Views module fails to call db_rewrite_sql() on queries that list Taxonomy Terms, which could cause private data stored on Taxonomy Terms to be leaked to users without permision to view it./span/pp class=p1span class=s1This is mitigated by the fact that a View must exist that lists Taxonomy Terms which contain private data. If all the data on Taxonomy Terms is public or there are no applicable Views, then your site is unaffected./span/ppSee the a href=https://www.drupal.org/node/2854980security advisory for Drupal 7/a for more information./ppHere you can download a href=http://cgit.drupalcode.org/d6lts/plain/common/contrib/views/SA-CONTRIB-2017-022.patchthe Drupal 6 patch/a./ppstrong/strongIf 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. :-)/ppstrongIf you'd like all your Drupal 6 modules to receive security updates and have the fixes deployed the same day they're released, please a href=https://www.mydropwizard.com/drupal-6-ltscheck out our D6LTS plans/a./strong/ppemNote: if you use the a href=https://www.drupal.org/project/mydropwizardmyDropWizard/a 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)./em/pp/div/div/div
Categories: Drupal Feeds

Amazee Labs: This was Drupal Mountain Camp

15 hours 22 min ago
spanThis was Drupal Mountain Camp/span div class=field field-node--field-lead field-name-field-lead field-type-text-long field-label-hidden div class=field-items div class=field-itemp dir=ltrFrom 16-19 February, the first Drupal Mountain Camp took place in Davos, Switzerland. A very diverse crowd of 135 attendees from, 17 different countries, came together to share the latest and greatest in Drupal 8 development, as well as case studies from Swiss Drupal vendors./p/div /div /div spana href=/en/josef-dabernig title=View user profile. lang= about=/en/josef-dabernig typeof=schema:Person property=schema:name datatype= class=usernameJosef Dabernig/a/span spanWed, 02/22/2017 - 14:14/span div class=field field-node--field-image field-name-field-image field-type-image field-label-hidden div class=field-items div class=field-itemimg class=image-style-blog-full src=https://www.amazeelabs.com/sites/default/files/styles/blog_full/public/drupal_mountain_camp_group_picture.jpg?itok=W-CbuRyo width=580 height=387 alt=Drupal Mountain Camp Group Picture typeof=foaf:Image / /div /div /div div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden div class=field-items div class=field-itemp dir=ltrWhen we started organizing Drupal Mountain Camp in the summer of 2016, it was hard to predict how much interest it would attract and how many people would join for the camp. By reaching out to the local and international Drupal ecosystem we were excited to get so many people to attend from all around the world including Australia, India, and the US./p p dir=ltrimg alt=Drupal Mountain Camp Team data-entity-type=file data-entity-uuid=8ef1bbed-26a4-48c4-a200-aab25b21a754 src=https://www.amazeelabs.com/sites/default/files/inline-images/drupal_mountain_camp_team.jpg //p p dir=ltrAs a team of a dozen organizers; we split up the tasks, like setting up the venue, registration, social media, room monitoring and much more. It was great seeing that we were able to split the workload across the entire team and keep it well balanced./p p dir=ltrimg alt=Drupal Mountain Camp Workshops data-entity-type=file data-entity-uuid=236daa22-d282-4bda-be08-8c062431af66 src=https://www.amazeelabs.com/sites/default/files/inline-images/drupal_mountain_camp_workshops.jpg //p p dir=ltrWe are very thankful for 30 different speakers who travelled from afar and worked hard to share their expertise with the crowd. As a program organizer I might be biased, but I truly believe that the a href=https://drupalmountaincamp.ch/scheduleschedule/a was packed with great content :)/p p dir=ltrIn addition to the sessions, we also provided free workshop trainings to help spread some more Drupal love./p p dir=ltrimg alt=Drupal Mountain Camp Speaker Dinner data-entity-type=file data-entity-uuid=25fc6d55-12ab-46cb-9324-3693e006a1ff src=https://www.amazeelabs.com/sites/default/files/inline-images/drupal_mountain_camp_speaker_dinner.jpg //p p dir=ltrWe took all the speakers up to the mountain for Switzerland's most popular dish, cheese fondue, to say thank you for their sessions and inputs./p p dir=ltrimg alt=Drupal Mountain Camp Speaker Sledding data-entity-type=file data-entity-uuid=27768965-2e9c-42ca-9307-7f8c1d7a8e23 src=https://www.amazeelabs.com/sites/default/files/inline-images/drupal_mountain_camp_sledding.jpg //p p dir=ltrWith Drupal Mountain Camp we wanted to set a theme that would not only excite attendees with Swiss quality sessions but also create a welcoming experience for everyone. On top of our a href=https://drupalmountaincamp.ch/code-conductCode of Conduct/a, we organized various a href=https://drupalmountaincamp.ch/social-activitiessocial activities/a that would allow attendees to experience Switzerland, snow and the mountains.  /p p dir=ltrimg alt=Drupal Mountain Camp Sprints data-entity-type=file data-entity-uuid=cb376050-2bfc-40ad-a706-6efdc445d5f4 src=https://www.amazeelabs.com/sites/default/files/inline-images/drupal_mountain_camp_sprints.jpg //p p dir=ltrSprints are an essential way to get started with contributing to Drupal. At Drupal Mountain Camp, we organized a First-time sprinter workshop and had Sprint rooms from Thursday until Sunday with many sprinters collaborating./p p dir=ltrimg alt=Drupal Mountain Camp Amazee.io data-entity-type=file data-entity-uuid=0c816a77-dc46-4164-b600-f07b148c139f src=https://www.amazeelabs.com/sites/default/files/inline-images/drupal_mountain_camp_amazeeio.jpg //p p dir=ltrFor our hosting company a href=https://www.amazee.io/amazee.io/a, Drupal Mountain Camp was a great opportunity to demonstrate our docker based development environment and scalable a href=https://docs.amazee.io/architecture/stack-types/cluster.htmlcluster stack/a using a set of raspberry pies./p p dir=ltrimg alt=Drupal Mountain Camp Snow data-entity-type=file data-entity-uuid=b803133b-b8b0-45d1-a300-fe4e5e9226b7 src=https://www.amazeelabs.com/sites/default/files/inline-images/drupal_mountain_camp_snow.jpg //p p dir=ltrAnd of course, we ended the conference with skiing and snowboarding at the Swiss mountains :)/p p dir=ltrPictures from the camp: a href=https://www.flickr.com/photos/amazeelabs/sets/72157680479609776selection/a and a href=https://www.flickr.com/photos/amazeelabs/sets/72157680276553486all/a. Curious about the next Drupal Mountain Camp? a href=https://twitter.com/mountaincampchFollow us on twitter/a to stay on top and see you at the next event./p/div /div /div
Categories: Drupal Feeds

Third Grove: Seniorlink Drupal Case Study

20 hours 37 min ago
span property=schema:name class=field-name--titleSeniorlink Drupal Case Study/span span class=field-name--uid rel=schema:authorspan lang= about=https://www.thirdandgrove.com/user/3 typeof=schema:Person property=schema:name datatype= xml:lang=antonella/span/span span property=schema:dateCreated content=2017-02-22T08:00:00+00:00 class=field-name--createdWed, 02/22/2017 - 03:00/span
Categories: Drupal Feeds

Flocon de toile | Freelance Drupal: Introduction to Protected file module on Drupal 8

Tue, 02/21/2017 - 4:30pm
div class=field field--name-body field--type-text-with-summary field--label-hidden field--itempDrupal 8 has several solutions and methods to manage access rights on each elements included in a content, and this in a very granular way. Enabling view or edit access on some field included in a content type can be achieved very simply, with a few lines of code, or with the a href=https://www.drupal.org/project/field_permissions target=_blankField Permissions/a module. We can use this module to allow certain roles to view or update a particular field./p/div
Categories: Drupal Feeds

OhTheHugeManatee: What Crell Doesn't Want You to Know: How to Automate Letsencrypt on platform.sh

Tue, 02/21/2017 - 3:33pm
pIf you believe the a href=https://docs.platform.sh/development/going-live.html#prerequisitesdocs/a and the a href=https://twitter.com/damz/status/672559665377501184twitters/a, there is no way to automate a href=https://letsencrypt.org/letsencrypt/a certificates updates on a href=https://platform.sh/platform.sh/a. You have to create the certificates manually, upload them manually, and maintain them manually./p pBut as readers of this blog know, the docs are only the start of the story. Irsquo;ve really enjoyed working with platform.sh with one of my private clients, and I couldnrsquo;t believe that with all the flexibility ndash; all the POWER ndash; letsencrypt was really out of reach. I found a few attempts to script it, and one really great a href=https://gitlab.com/snippets/27467snippet on gitlab/a. But no one had ever really synthesized this stuff into an easy howto. So here we go./p h31) Add some writeable directories where platform.sh CLI and letsencrypt need them./h3 pNormally when Platform deploys your application, it puts it all in a read-only filesystem. Wersquo;re going to mount some special directories read-write so all the letsencrypt/platform magic can work./p pEdit your applicationrsquo;s code.platform.app.yaml/code file, and find the codemounts:/code section. At the bottom, add these three lines. Make sure to match the indents with everything else under the codemounts:/code section!/p figure class='code'div class=highlighttabletrtd class=gutterpre class=line-numbersspan class='line-number'1/span span class='line-number'2/span span class='line-number'3/span /pre/tdtd class='code'precode class=''span class='line'/web/.well-known: shared:files/.well-known /spanspan class='line'/keys: shared:files/keys /spanspan class='line'/.platformsh: shared:files/.platformsh/span/code/pre/td/tr/table/div/figure pLetrsquo;s walk through each of these:/p ul li/web/.well-known: In order to confirm that you actually control example.com, letsencrypt drops a file somewhere on your website, and then tries to fetch it. This directory is where itrsquo;s going to do the drop and fetch. My webroot is codeweb/code, you should change this to match your own environment. You might use codepublic/code or codewww/code or something./li li/keys: You have to store your keyfiles SOMEWHERE. This is that place./li li/.platformsh: Your master environment needs a bit of configuration to be able to login to platform and update the certs on your account. This is where that will go./li /ul h32) Expose the .well-known directory to the Internet/h3 pI mentioned above that letsencrypt test your control over a domain by creating a file which it tries to fetch over the Internet. We already created the writeable directory where the scripts can drop the file, but platform.sh (wisely) defaults to hide your directories from the Internet. Wersquo;re going to add some configuration to the ldquo;webrdquo; app section to expose this .well-known directory. Find the codeweb:/code section of your code.platform.app.yaml/code file, and the codelocations:/code section under that. At the bottom of that section, add this:/p figure class='code'div class=highlighttabletrtd class=gutterpre class=line-numbersspan class='line-number'1/span span class='line-number'2/span span class='line-number'3/span span class='line-number'4/span span class='line-number'5/span span class='line-number'6/span span class='line-number'7/span span class='line-number'8/span /pre/tdtd class='code'precode class=''span class='line' '/.well-known': /spanspan class='line' # Allow access to all files in the public files directory. /spanspan class='line' allow: true /spanspan class='line' expires: 5m /spanspan class='line' passthru: false /spanspan class='line' root: 'web/.well-known' /spanspan class='line' # Do not execute PHP scripts. /spanspan class='line' scripts: false/span/code/pre/td/tr/table/div/figure pMake sure you match the indents of the other location entries! In my (default) code.platform.app.yaml/code file, I have 8 spaces before that code'/.well-known':/code line. Also note that the coderoot:/code parameter there also uses my webroot directory, so adjust that to fit your environment./p h33) Download the binaries you need during the application ldquo;buildrdquo; phase/h3 pIn order to do this, wersquo;re going to need to have the platform.sh CLI tool, and a letrsquo;s encrypt CLI tool called lego. Wersquo;ll download them during the ldquo;buildrdquo; phase of your application. Still in the codeplatform.app.yaml/code file, find the codehooks:/code section, and the codebuild:/code section under that. Add these steps to the bottom of the build:/p figure class='code'div class=highlighttabletrtd class=gutterpre class=line-numbersspan class='line-number'1/span span class='line-number'2/span span class='line-number'3/span /pre/tdtd class='code'precode class=''span class='line' cd ~ /spanspan class='line' curl -sL https://github.com/xenolf/lego/releases/download/v0.3.1/lego_linux_amd64.tar.xz | tar -C .global/bin -xJ --strip-components=1 lego/lego /spanspan class='line' curl -sfSL -o .global/bin/platform.phar https://github.com/platformsh/platformsh-cli/releases/download/v3.12.1/platform.phar/span/code/pre/td/tr/table/div/figure pWersquo;re just downloading reasonably recent releases of our two tools. If anyone has a better way to get the latest release of either tool, please let me know. Otherwise wersquo;re stuck keeping this up to date manually./p h34) Configure the platform.sh CLI/h3 pIn order to configure the platform.sh CLI on your server, we have to deploy the changes from steps 1-3. Go ahead and do that now. Irsquo;ll wait./p pNow connect to your platform environment via SSH (codeplatform ssh -e master/code for most of us). First wersquo;ll add a config file for platform. Edit a file in code.platformsh/config.yaml/code with the editor of choice. You donrsquo;t have to use vi, but it will win you some points with me. Here are the contents for that file:/p figure class='code'div class=highlighttabletrtd class=gutterpre class=line-numbersspan class='line-number'1/span span class='line-number'2/span span class='line-number'3/span span class='line-number'4/span /pre/tdtd class='code'precode class=''span class='line'updates: /spanspan class='line' check: false /spanspan class='line'api: /spanspan class='line' token_file: token/span/code/pre/td/tr/table/div/figure pPretty straightforward: this tells platform not to bother updating the CLI tool automatically (it canrsquo;t ndash; read-only filesystem, remember?). It then tells it to login using an API token, which it can find in the file code.platformsh/token/code. Letrsquo;s create that file next./p pLog into the platform.sh web UI (you can launch it with codeplatform web/code if yoursquo;re feeling sassy), and navigate to your account settings api tokens. Thatrsquo;s at codehttps://accounts.platform.sh/user/12345/api-tokens/code (with your own user ID of course). Add an API token, and copy its value into code.platformsh/token/code on the environment wersquo;re working on. The token should be the only contents of that file./p pNow letrsquo;s test it by running codephp /app/.global/bin/platform.phar auth:info/code. If you see your account information, congratulations! You have a working platform.sh CLI installed./p h35) Request your first certificate by hand/h3 pStill SSH#8217;ed into that environment, letrsquo;s see if everything works./p figure class='code'div class=highlighttabletrtd class=gutterpre class=line-numbersspan class='line-number'1/span span class='line-number'2/span span class='line-number'3/span /pre/tdtd class='code'precode class=''span class='line'lego --email=support@example.com --domains=www.example.com --webroot=/app/public/ --path=/app/keys/ -a run /spanspan class='line'csplit -f /app/keys/certificates/www.example.com.crt- /app/keys/certificates/www.example.com.crt '/-----BEGIN CERTIFICATE-----/' '{1}' -z -s /spanspan class='line'php /app/.global/bin/platform.phar domain:update -p $PLATFORM_PROJECT --no-wait --yes --cert /app/keys/certificates/www.example.com.crt-00 --chain /app/keys/certificates/www.example.com.crt-01 --key /app/keys/certificates/www.example.com.key example.com/span/code/pre/td/tr/table/div/figure pThis is three commands: register the cert with letsencrypt, then split the resulting file into itrsquo;s components, then register those components with platform.sh. If you didnrsquo;t get any errors, go ahead and test your site ndash; itrsquo;s got a certificate! (yay)/p h36) Set up automatic renewals on cron/h3 pBack to code.platform.app.yaml/code, look for the codecrons:/code section. If yoursquo;re running drupal, you probably have a drupal cronjob in there already. Add this one at the bottom, matching indents as always./p figure class='code'div class=highlighttabletrtd class=gutterpre class=line-numbersspan class='line-number'1/span span class='line-number'2/span span class='line-number'3/span /pre/tdtd class='code'precode class=''span class='line'letsencrypt: /spanspan class='line' spec: '0 0 1 * *' /spanspan class='line' cmd: '/bin/sh /app/scripts/letsencrypt.sh'/span/code/pre/td/tr/table/div/figure pNow letrsquo;s create the script. Add the file codescripts/letsencrypt.sh/code to your repo, with this content:/p figure class='code'figcaptionspan/span/figcaptiondiv class=highlighttabletrtd class=gutterpre class=line-numbersspan class='line-number'1/span span class='line-number'2/span span class='line-number'3/span span class='line-number'4/span span class='line-number'5/span span class='line-number'6/span span class='line-number'7/span span class='line-number'8/span span class='line-number'9/span span class='line-number'10/span span class='line-number'11/span span class='line-number'12/span span class='line-number'13/span span class='line-number'14/span span class='line-number'15/span /pre/tdtd class='code'precode class='bash'span class='line'span class=c#!/usr/bin/env bash/span /spanspan class='line' /spanspan class='line'span class=c# Checks and updates the letsencrypt HTTPS cert./span /spanspan class='line' /spanspan class='line'span class=nbset/span -e /spanspan class='line' /spanspan class='line'span class=kif/span span class=o[/span span class=s2quot;$PLATFORM_ENVIRONMENTquot;/span span class=o=/span span class=s2quot;master-7rqtwtiquot;/span span class=o]/span /spanspan class='line' span class=kthen/span /spanspan class='line' span class=c# Renew the certificate/span /spanspan class='line' lego --emailspan class=o=/spanspan class=s2quot;example@example.orgquot;/span --domainsspan class=o=/spanspan class=s2quot;example.orgquot;/span --webrootspan class=o=/span/app/web/ --pathspan class=o=/span/app/keys/ -a renew /spanspan class='line' span class=c# Split the certificate from any intermediate chain/span /spanspan class='line' csplit -f /app/keys/certificates/example.org.crt- /app/keys/certificates/example.org.crt span class=s1#39;/-----BEGIN CERTIFICATE-----/#39;/span span class=s1#39;{1}#39;/span -z -s /spanspan class='line' span class=c# Update the certificates on the domain/span /spanspan class='line' php /app/.global/bin/platform.phar domain:update -p span class=nv$PLATFORM_PROJECT/span --no-wait --yes --cert /app/keys/certificates/example.org.crt-00 --chain /app/keys/certificates/example.org.crt-01 --key /app/keys/certificates/example.org.key example.org /spanspan class='line'span class=kfi/span /span/code/pre/td/tr/table/div/figure pObviously you should replace all those codeexample.org/codes and email addresses with your own domain. Make the file executable with codechmod u+x scripts/letsencrypt.sh/code, commit it, and push it up to your platform.sh environment./p h37) Send a bragging email to Crell/h3 pTechnically this isnrsquo;t supposed to be possible, but YOU DID IT! Make sure to rub it in./p pimg class=center src=http://ohthehugemanatee.github.io/images/larry-garfield.jpg title=#34;Larry is waiting to hear from you. (photo credit Jesus Manuel Olivas)#34; alt=#34;Larry is waiting to hear from you. (photo credit Jesus Manuel Olivas)#34;/p pGood luck!/p pPS ndash; Irsquo;m just gonna link one more time to the guy whose snippet made this all possible: a href=https://www.drupal.org/u/hanoiiAriel Barreiro/a did the hardest part of this. Irsquo;m grateful that he made his notes public!/p
Categories: Drupal Feeds

Palantir: The Coolest Camp Ever

Tue, 02/21/2017 - 10:31am
spanThe Coolest Camp Ever/span spana title=View user profile. href=https://www.palantir.net/people/alex-brandt lang= about=https://www.palantir.net/people/alex-brandt typeof=schema:Person property=schema:name datatype= xml:lang=brandt/a/span spanTue, 02/21/2017 - 10:31/span Alex Brandt time datetime=2017-02-21T12:00:00ZFeb 21, 2017/timeimg src=https://www.palantir.net/files/styles/hero/public/hero/2017-02/Iceland%20hero_0.png?itok=4kZ8kxUN width=1300 height=731 alt=Illustration of Northern Lights typeof=foaf:Image /div class=lede pWe’re heading to Iceland February 24 - 26!/p /div In this post we will cover... ulli dir=ltr p dir=ltrWhy we’re excited for this new event/p /li li dir=ltr p dir=ltrWho from Palantir will be speaking/p /li li dir=ltrSome fun facts about Iceland/li /ulsection class=ctah3 class=cta__title /h3pStay connected with the latest news on web strategy, design, and development./p span class=cta__link a href=http://palantir.net/newsletterSign up for our newsletter./a /span /sectionpBesides being the recent desired destination for Instagram #wanderlust-ers, Iceland is now home to an exciting new Drupal event: a href=https://dcnlights.drupal.is/DrupalCamp Northern Lights/a. With twenty speakers, lots of coffee, and a planned sightseeing trip to see the Golden Circle and Northern Lights, it is sure to be an exciting inaugural event./p pA small crew of Palantiri will be proudly representing, so if you are making the trek overseas, keep an eye out and say hi to a href=https://www.palantir.net/people/allison-manleyAllison Manley/a, a href=https://www.palantir.net/people/michelle-jacksonMichelle Jackson/a, and a href=https://www.palantir.net/people/meghan-plunkettMegh Plunkett/a while you’re taking in the sessions and sights./p pCheck out the a href=https://dcnlights.drupal.is/sessionsschedule/a and make sure to stop by our sessions./p p /p pstrongKickoff Meetings, by Allison Manley /strong/p ulliTime: Saturday, 10:45 - 11:35/li liLocation: Room ÞINGVELLIR/li /ulpHow do you make the most use of your face-to-face time with your client and lay the groundwork for a successful project?/p pAllison will outline how to get the most out of the kickoff meetings that initiate any project. She'll talk about pre-meeting preparation and how to keep organized, and also give some tips on agenda creation, how to keep meetings productive (and fun), and what steps need to be taken once the meetings adjourn./p p /p pstrongCompetitive Analysis: Your UX must-have on a budget, by Michelle Jackson /strong/p ulliTime: Sunday, 14:15-15:00/li liLocation: Room ÞINGVELLIR/li /ulpA tight budget and time constraints can make dedicating time and resources to understanding audience needs challenging. Competitive analysis is an affordable way to evaluate how competitor sites are succeeding or failing to meet the needs of your audience./p pMichelle will cover how competitive analysis can help you avoid competitor pitfalls, gain insight into what your users want, and lead to better decision-making before you invest in and implement new designs and technical features./p h37 Facts You Might Not Have Known About Iceland/h3 ulliIceland was one of the last places on earth to be settled by humans./li liThey are getting their first Costco in May./li li60% of the Icelandic population lives in Reykjavík./li liBabies in Iceland are routinely left outside to nap./li liSurprisingly, Iceland is not the birthplace of ice cream./li liFirst names not previously used in Iceland must be approved by the Icelandic Naming Committee./li liOwning a pet turtle is against the law. Sorry Rafael, Franklin, and this kid:/li /ulpimg alt=I like turtles data-entity-type=file data-entity-uuid=957ce4d0-23f9-49ec-98d0-44de552f91e8 src=https://www.palantir.net/files/inline-images/giphy.gif //p p /p pFact Sources: http://www.portsmouth.co.uk/news/people/31-odd-facts-about-iceland-but-how-many-did-you-know-1-7445785, http://icelandreview.com//p aside class=ctah3 class=cta__title /h3pWe want to make your project a success./p span class=cta__link a href=https://www.palantir.net/contactLet's Chat./a /span /asideul class=list--simpleli class=taga href=https://www.palantir.net/topics/community hreflang=enCommunity/a/li li class=taga href=https://www.palantir.net/topics/people hreflang=enPeople/a/li /ul
Categories: Drupal Feeds

InternetDevels: Collection of some useful Drupal 8 modules in 2017

Tue, 02/21/2017 - 10:01am
div class=field field--name-field-preview-image field--type-image field--label-hiddendiv class=field__itemsdiv class=field__item evenimg src=http://st2.internetdevels.net/sites/default/files/public/blog_preview/modules_for_drupal_8_in_2017.png width=937 height=622 alt=Collection of some useful Drupal 8 modules in 2017 //div/div/divdiv class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenpOur tradition of presenting you short overviews of several modules of the month continues with today’s article. Previously we offered you a href=http://internetdevels.com/blog/contributed-modules-for-drupal8-in-june target=_blanksome great contributed Drupal 8 modules in June 2016/a a collection of a href=http://internetdevels.com/blog/may-2016-contributed-modules-for-Drupal8 target=_blankmodules in May 2016/a. In 2017 we published some modules, with the latest available release for Drupal 8 scheduled for the beginning of this year./p a href=http://internetdevels.com/blog/2017-modules-for-drupal-8Read more/a/div/div/div
Categories: Drupal Feeds

Xeno Media: Xeno Media's Jim Birch presents at DrupalCamp Northern Lights 2017

Tue, 02/21/2017 - 9:01am
pOrganized by the Icelandic Drupal community, the inaugural a href=https://dcnlights.drupal.is/Northern Lights Drupal Camp/a will take place on the this weekend, February 24th - 26th, 2017 at the University of Iceland in Reykjavik. We are honored that our Digital Strategist, Jim Birch was invited to speak./p pJim will present his a href=http://jimbir.ch/holistic-seoHolistic SEO and Drupal/a talk--which covers the modern state of Search Engine Optimization and how we at Xeno Media define best practices for technical SEO using Drupal.  It also presents ideas on how to guide and empower clients to create the best content to achieve their digital goals./p pThis presentation will review:/p ulliWhat Holistic SEO is, and some examples of modern search results explained./li liThe most common search engine ranking factors, and how to keep up to date./li liAn overview of Content strategy and how it can guide development./li liAn overview of technical SEO best practices in Drupal./li /ulpThe presentation is:/p ulliSession time slot: Sunday 15:15 - 16:00/li liSession room: Room Eyjajallajökull/li /ulpa href=https://dcnlights.drupal.is/sessionsView the full schedule/a./p
Categories: Drupal Feeds

J-P Stacey: Last of the Drupal 8 API blogposts... for now, anyway

Tue, 02/21/2017 - 6:23am
pI've been having tremendous fun writing a href=http://www.jpstacey.info/d8apitutorials about each of the Drupal 8 APIs/a in turn, and I hope people have been finding them useful. They've certainly been eye-openers for me, as I've always focussed on achieving a clear worked example, and doing that alone unearths all sorts of questions (and usually—but not always—answers) about how Drupal 8's core itself works./p pa href=http://www.jpstacey.info/blog/2017-02-21/last-drupal-8-api-blogposts-now-anywayRead more of Last of the Drupal 8 API blogposts... for now, anyway/a/p
Categories: Drupal Feeds

Wim Leers: OpenTracker

Mon, 02/20/2017 - 3:26pm
pThis is an ode to Dirk Engling#8217;s a href=http://erdgeist.org/arts/software/opentracker/OpenTracker/a./p pIt#8217;s a a href=https://wiki.theory.org/BitTorrentSpecificationBitTorrent tracker/a./p pIt#8217;s what powered a href=https://en.wikipedia.org/wiki/The_Pirate_Bay#Technical_detailsThe Pirate Bay in 2007–2009/a./p pI#8217;ve been using it to power the downloads on a href=http://driverpacks.nethttp://driverpacks.net/a since the end of November 2010. gt;6 years. It facilitated 9839566 downloads since December 1, 2010 until today. That#8217;s almost 10 millionnbsp;downloads!/p h2Stability/h2 pIt#8217;s one of the most stable pieces of software I ever encountered. I compiled it in 2010, it never oncenbsp;crashed./p precodewim@ajax:~$ ls -al /data/opentracker total 456 drwxr-xr-x 3 wim wim 4096 Feb 11 01:02 . drwxr-x--x 10 root wim 4096 Mar 8 2012 .. -rwxr-xr-x 1 wim wim 84824 Nov 29 2010 opentracker -rw-r--r-- 1 wim wim 3538 Nov 29 2010 opentracker.conf drwxr-xr-x 4 wim wim 4096 Nov 19 2010 src -rw-r--r-- 1 wim wim 243611 Nov 19 2010 src.tgz -rwxrwxrwx 1 wim wim 14022 Dec 24 2012 whitelist /code/pre h2Simplicity/h2 pThe simplicity is fantastic. Getting up and running is fantastically simple: codegit clone git://erdgeist.org/opentracker .; make; ./opentracker/code and you#8217;re up and running. Let me quote a bit from its homepage, to show that it goes the extra mile to make usersnbsp;successful:/p blockquote pemopentracker/em can be run by just typing code./opentracker/code. This will make emopentracker/em bind to code0.0.0.0:6969/code and happily serve all torrents presented to it. strongIf ran as root, emopentracker/em will immediately chroot to code./code and drop all priviliges after binding to whatever tcp or udp ports it isnbsp;requested./strong/p /blockquote pEmphasis mine. And I can#8217;t emphasize my emphasisnbsp;enough./p h2Performance span class=ampamp;/spannbsp;efficiency/h2 pAll the while handling dozens of requests per second, codeopentracker/code causes less load than background processes of the OS. Let me again quote a bit from itsnbsp;homepage:/p blockquote pemopentracker/em can easily serve multiple thousands of requests on a standard plastic span class=capsWLAN/span-router, limited only by your kernels capabilitiesnbsp;;)/p /blockquote pThat#8217;s also what it said in 2010. I didn#8217;t test it on a “plastic span class=capsWLAN/span-router”, but everything I#8217;ve seen confirmsnbsp;it./p h2Flexibility/h2 pIts defaults are sane, but what if you want to have anbsp;whitelist?/p ol liUncomment the code#FEATURES+=-DWANT_ACCESSLIST_WHITE/code line in the codeMakefile/code./li liRecompile./li liCreate a file called codewhitelist/code, with one torrent hash pernbsp;line./li /ol pHave a need to update this whitelist, for example a new release of your software to distribute? Of course you don#8217;t want to reboot your codeopentracker/code instance and lose all current state. It#8217;s got younbsp;covered:/p ol liAppend a line to codewhitelist/code./li liSend the codeSIGHUP/code UNIX signal to make codeopentracker/code reload its whitelistsup id=fnref:3a href=#fn:3 class=footnote-ref1/a/sup./li /ol h2Deployment/h2 pI#8217;ve been in the process of moving off of my current (super reliable, but also expensive) hosting. There are plenty of specialized span class=capsHTTP/span server hostssup id=fnref:1a href=#fn:1 class=footnote-ref2/a/sup and even codersync/code hostssup id=fnref:2a href=#fn:2 class=footnote-ref3/a/sup. Thanks to their standardization and consequent scale, they can offer very lownbsp;prices./p pBut I also needed to continue to run my own BitTorrent tracker. There are no hosts that offer that. I don#8217;t want to rely on another tracker, because I want there to be zero affiliation with illegal files. This is a BitTorrent tracker that does not allow emanything/em to be shared: it only allows the software releases made by a href=http://driverpacks.nethttp://driverpacks.net/a to benbsp;downloaded./p pSo, I found the cheapest span class=capsVPS/span I could find, with the least amount of resources. For span class=capsUSD/span $13.50sup id=fnref:4a href=#fn:4 class=footnote-ref4/a/sup, I got a span class=capsVPS/span with 128 span class=capsMB/span span class=capsRAM/span, 12 span class=capsGB/span of storage and 500 span class=capsGB/span of monthly traffic. Then I set itnbsp;up:/p ol licodessh/code‘d ontonbsp;it./li licodersync/code‘d over the files from my current server (alternatively: codegit clone/code and codemake/code)/li liadded code@reboot /data/opentracker/opentracker -f /data/opentracker/opentracker.conf/code to my codecrontab/code./li liremoved the codeCNAME/code record for codetracker.driverpacks.net/code, and instead made it an codeA/code record pointing to my newnbsp;VPS./li liwatched codehttp://tracker.driverpacks.net:6969/stats?mode=tpbsamp;format=txt/code on both the new and the old server, to verify traffic was moving over to my new cheap codeopentracker/code VPS as the DNS changesnbsp;propagated/li /ol h2Drupalnbsp;module/h2 pSince a href=http://driverpacks.netdriverpacks.net/a runs on a href=https://www.drupal.orgDrupal/a, there of course is an a href=https://www.drupal.org/project/opentrackerOpenTracker Drupal module/a which I wrote. It provides an span class=capsAPI/spannbsp;to:/p ul licreate code.torrent/code files for certain files uploaded tonbsp;Drupal/li liappend to the OpenTracker codewhitelist/code file sup id=fnref:5a href=#fn:5 class=footnote-ref5/a/sup/li liparse the statistics provided by the OpenTrackernbsp;instance/li /ul pYou can see the live stats at a href=http://driverpacks.net/statshttp://driverpacks.net/stats/a./p h2Conclusion/h2 pcodeopentracker/code is the sort of simple, elegant software design that makes it a pleasure to use. And considering the a href=http://erdgeist.org/gitweb/opentracker/log/low commit frequency/a over the past decade, with many of those commits being nitpick fixes, it also seems its simplicity also leads to excellent maintainability. It involves the span class=capsHTTP/span and BitTorrent protocols, yet only relies on a single I/O library, and its source code is very readable. Not only that, but it#8217;s also highlynbsp;scalable./p pIt#8217;s the sort of software many of us aspire tonbsp;write./p pFinally, its license. A glorious licensenbsp;indeed./p blockquote pThe beerware license is very open, close to public domain, but insists on honoring the original author by just not claiming that the code is yours. Instead assume that someone writing Open Source Software in the domain you’re obviously interested in would be a nice match for having a beernbsp;with./p pSo, just keep the name and contact details intact and if you ever meet the author in person, just have an appropriate brand of sparkling beverage choice together. The conversation will be worth the time for both ofnbsp;you./p /blockquote pDirk, if you read this: I#8217;d love to buy you sparkling beverages some timenbsp;:)/p div class=footnotes hr / ol li id=fn:3 pcodekill -s HUP codepidof opentracker/code/code#160;a href=#fnref:3 class=footnote-backref#8617;#xFE0E;/a/p /li li id=fn:1 pI#8217;m using a href=https://www.gandi.net/hosting/simpleGandi#8217;s Simple Hosting/a.#160;a href=#fnref:1 class=footnote-backref#8617;#xFE0E;/a/p /li li id=fn:2 pa href=https://rsync.nethttps://rsync.net/a#160;a href=#fnref:2 class=footnote-backref#8617;#xFE0E;/a/p /li li id=fn:4 p$16.34 including 21% Belgian span class=capsVAT/span.#160;a href=#fnref:4 class=footnote-backref#8617;#xFE0E;/a/p /li li id=fn:5 preload code*/10 * * * * kill -s HUP codepidof opentracker/code/code#160;a href=#fnref:5 class=footnote-backref#8617;#xFE0E;/a/p /li /ol /div ul class=tags lispan class=lineage-item lineage-item-level-0DriverPacks.net/span/li lispan class=lineage-item lineage-item-level-0Drupal/span/li lispan class=lineage-item lineage-item-level-0deployment/span/li lispan class=lineage-item lineage-item-level-0open source/span/li /ul
Categories: Drupal Feeds

Web Wash: How to Create Responsive Image Galleries using Juicebox in Drupal 8

Mon, 02/20/2017 - 12:53pm
There are a lot of image gallery libraries out there, but today I want to show you how to use Juicebox. Juicebox is an HTML5 responsive image gallery and it integrates with Drupal using the Juicebox module. Juicebox is not open source, instead it offers a free version which is fully useable but you are limited to 50 images per gallery. The pro version allows for unlimited images and more features. If you’re looking for an alternative solution look at Slick, which is open source, and it integrates with Drupal via the Slick module. I will cover this module in a future tutorial. In this tutorial, you’ll learn how to display an image gallery from an image field and how to display a gallery using Views.
Categories: Drupal Feeds

Chromatic: A Taco-Friendly Guide to Cache Metadata in Drupal 8

Mon, 02/20/2017 - 8:30am
pExplaining Drupal 8's cache metadata with the help of tacos./p
Categories: Drupal Feeds

Web Omelette: How to render your images with image styles in Drupal 8

Mon, 02/20/2017 - 2:19am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpIn this article we are going to look at how we can render images using image styles in Drupal 8./p pIn Drupal 7, rendering images with a particular style (say the default thumbnail) was by calling the codetheme_image_style()/code theme and passing the image uri and image style you want to render (+ some other optional parameters):/p pre class=brush: php$image = theme('image_style', array('style_name' =gt; 'thumbnail', 'path' =gt; 'public://my-image.png')); /prepYou'll see this pattern all over the place in Drupal 7 codebases./p pThe theme prepares the URL for the image, runs the image through the style processors and returns a themed image (via codetheme_image()/code). The function it uses internally for preparing the url of the image is codeimage_style_url()/code which returns the URL of the location where the image is stored after being prepared. It may not yet exist, but on the first request, it would get generated./p pSo how do we do it in Drupal 8?/p pFirst of all, image styles in Drupal 8 are configuration entities. This means they are created and exported like many other things. Second of all, in Drupal 8 we no longer (should) call theme functions like above directly. What we should do is always return render arrays and expect them to be rendered somewhere down the line. This helps with things like caching etc./p pSo to render an image with a particular image style, we need to do the following:/p pre class=brush: php$render = [ '#theme' =gt; 'image_style', '#style_name' =gt; 'thumbnail', '#uri' =gt; 'public://my-image.png', // optional parameters ]; /prepThis would render the image tag with the image having been processed by the style./p pFinally, if we just want the URL of an image with the image style applied, we need to load the image style config entity and ask it for the URL:/p pre class=brush: php$style = \Drupal::entityTypeManager()-gt;getStorage('image_style')-gt;load('thumbnail'); $url = $style-gt;buildUrl('public://my-image.png'); /prepSo that is it. You now have the image URL which will generate the image upon the first request./p pRemember though to inject the entity type manager if you are in such a context that you can./p /div/div/div
Categories: Drupal Feeds

Savas Labs: Docker and the Drupal Pattern Lab Starter Theme

Sun, 02/19/2017 - 6:00pm
p img src=http://savaslabs.com/assets/img/blog/docker-drupal-pattern-lab.jpg alt=Docker Drupal 8 Pattern Lab logos on a circuited background How to build a Docker Pattern Lab image for local Drupal development with the Pattern Lab Starter theme and/or with other common front-end applications such as npm, Gulp, and Bower. a href=http://savaslabs.com/2017/02/20/drupal-docker-pattern-lab.htmlContinue reading…/a /p
Categories: Drupal Feeds

agoradesign: Drupal's great little helpers: Random utility class

Sat, 02/18/2017 - 6:50am
div class=field field-name-body field-type-text-with-summary field-label-hidden div class=field-items div class=field-item evenDrupal's API has a huge number of very useful utitlity classes and functions, especially in Drupal 8. Although the API docs are great, it's rather impossible to always find every little feature. Today I want to show you the Random utility class, which I've nearly overseen and found rather by accident./div /div /div
Categories: Drupal Feeds

Drupal Association blog: Drupal Association membership campaign: February 20 to March 8

Fri, 02/17/2017 - 12:51pm
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpa href=http://www.drupal.org/association/campaign/value-2017 rel=nofollowimg alt=Join as a member to keep Drupal.org thriving. Coffee cup with words We are happy to serve you. Drupal Association logo. class=right height=117 src=/files/mem_campaign_2017_q1_300x140.jpg width=251 //astrongDrupal.org/strong is home of the Drupal project and the Drupal community. It has been continuously operating since 2001. The Engineering Team— along with amazing community webmasters— keeps Drupal.org alive and well. As we launch the first membership campaign of 2017, our story is all about this small and productive team./p pJoin us as we celebrate all that the engineering team has accomplished. From helping grow Drupal adoption, to enabling contribution; improving infrastructure to making development faster. The team does a lot of good for the community, the project, and Drupal.org./p pa href=https://www.drupal.org/association/campaign/value-2017 rel=nofollowCheck out/a some of their accomplishments and if you aren't yet a Drupal Association member, join us! Help us continue the work needed to make Drupal.org better, every day./p pShare these stories with others - now until our membership drive ends on March 8./p pimg alt=Facebook logo class=left height=40 src=/files/1475626591_Facebook_Color.png width=40 /a class=action-button href=https://www.facebook.com/sharer/sharer.php?u=https%3A//www.drupal.org/association/campaign/value-2017 title=Facebook rel=nofollowShare/a/p pimg alt=Twitter logo class=left height=40 src=/files/1475626581_Twitter_Color.png width=40 /a class=action-button href=https://twitter.com/home?status=I'm%20a%20member%20because%20%40DrupalAssoc%20brings%20value%20to%20%23Drupal%20and%20to%20you%20%23joinDrupalAssoc%20https%3A//www.drupal.org/association/campaign/value-2017 title=Twitter rel=nofollowTweet/a/p pimg alt=LinkedIn logo class=left height=40 src=/files/1475626586_Linkedin_Color.png width=40 /a class=action-button href=https://www.linkedin.com/shareArticle?mini=trueamp;url=https%3A//www.drupal.org/association/campaign/value-2017amp;title=Drupal%20Association%20brings%20value%20to%20Drupal%20and%20to%20you.amp;summary=I'm%20a%20member%20of%20the%20Drupal%20Association.%20Join%20and%20keep%20the%20home%20of%20the%20Drupal%20community%20thriving.amp;source= title=LinkedIn rel=nofollowShare/a/p pThank you for supporting our work!/p/div/div/div
Categories: Drupal Feeds

Gábor Hojtsy: Improving Drupal 8's usability and the impact

Fri, 02/17/2017 - 10:09am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpWe a href=https://groups.drupal.org/node/509409started regular Drupal usability meetings/a twice a week almost a year ago in March 2016. That is a long time and we succeeded in supporting many key initiatives in this time, including reviews on new media handling and library functionality, feedback on workflow user experience, outside-in editing and place block functionality. We helped set scope for the changes required to inline form errors on its way to stability. Those are all supporting existing teams working on their respective features where user interfaces are involved./p pHowever, we also started to look at some Drupal components and whether we can gradually improve them. One of the biggest tasks we took on was a href=https://www.drupal.org/node/665790redesigning the status page/a, where Drupal's system information is presented and errors and warnings are printed for site owners to resolve. While that looks like a huge monster issue, a href=http://yoroy.com/pieces/status-page-redesign-reviewRoy Scholten in fact posted a breakdown of how the process itself went/a. If we were to start a fresh issue (which we should have), the process would be much easier to follow and would be more visible. The result is quite remarkable:/p div style=text-align: center; margin: 2em 0;img src=http://hojtsy.hu/files/status-page__desktop--toggle-left_0.png alt=New status page in Drupal 8.3 //div /div/div/div
Categories: Drupal Feeds

Drupal core announcements: Updates from Drupal 8 core initiatives for February 2017

Fri, 02/17/2017 - 9:24am
pNow that a href=drupal.org/project/drupal/releases/8.3.0-beta1Drupal 8.3 is in beta/a, it is time to look at progress around core initiatives again and see how you can help move one or more of them forward. Once again I asked initiative contributors to help compile this post to inform you all of progress across the board. This is just a sampling of some improvements, there are a lot more that we could not cover here./p h3Default content and new core theme/h3 pThe default content and new core theme teams decided to join forces because the goals are intertwined. The teams found it hard to demonstrate good default content without a supporting visual look and vice versa. The plan to go with a farmer's market site changed to a more general publication site, but that still allows for plenty of things to showcase. a href=https://groups.drupal.org/node/516091We are looking for a designer / art director for the project (deadline today!)/a./p pa href=https://drupaltwig.slack.com/archives/new-core-theme-designUse the Slack channel/a if you want to help or if you just want to follow our progress. Get an invite at a href=https://drupaltwig-slack.herokuapp.com/https://drupaltwig-slack.herokuapp.com//a./p h3Media/h3 pThe media team a href=http://www.md-systems.ch/en/blog/md-systems/2017/01/09/current-status-of-media-in-drupal-8-core-and-next-stepsheld a sprint in Berlin in December/a. Unfortunately none of these media improvements landed in Drupal 8.3, however we are very close to complete a href=https://www.drupal.org/node/2831274the base media functionality early in Drupal 8.4/a. There was a href=https://www.drupal.org/node/2834729significant progress on the visual media library/a too. Next step is to finalise the plugins for images, documents and oEmbed./p pJoin in the #drupal-media channel on IRC./p h3Migrate/h3 pThe Migrate API became beta in Drupal 8.2.x with 8.2.5 and will apply to 8.3.0 as well. On the other hand other parts of the migration system like the Migrate Drupal API are still alpha stability and received some big updates. Two huge additions are the a href=https://www.drupal.org/node/2669964migration path for Drupal 7 node translations to Drupal 8 content translation/a and a href=https://www.drupal.org/node/2225717support added for configuration translations/a (and implemented initially for user profile fields)./p pJoin in the #drupal-migrate channel on IRC./p h3Multilingual/h3 pMost of the recent progress on the multilingual initiative was in collaboration with the migration team and that is still heavily ongoing. Further feature development around multilingual features is not on the table currently, as most contributors moved on to more pressing areas given the advances achieved in multilingual with Drupal 8 already. Therefore it is being proposed to a href=https://www.drupal.org/node/2850540officially remove the multilingual initiative from the list/a./p h3PHPUnit/h3 pThe work in the PHPUnit initiative is focusing on converting a large part of old Simpletest web tests to PHPUnit based browser tests. The goal is to a href=https://www.drupal.org/node/2735005commit a larger patch on February 21st/a to the Drupal 8.3.x branch. After that one third of Drupal core’s web tests would be converted to PHPUnit browser tests. We are also discussing the a href=https://www.drupal.org/node/2847678timeline for deprecating Simpletest/a./p pWe are also working on improving our JavaScript browser tests in multiple issues. For documentation there is also a a href=https://www.drupal.org/docs/8/phpunit/phpunit-javascript-testing-tutorialJavascript browser test tutorial/a now!/p pIf you want to convert your tests in your contrib / custom module, please read a href=https://www.drupal.org/docs/8/phpunit/phpunit-browser-test-tutorialthe PHPUnit browser test tutorial/a and help out on a href=https://www.drupal.org/node/2794285https://www.drupal.org/node/2794285/a in case you run into problems. Please follow the a href=https://www.drupal.org/node/2807237PHPUnit initiative issue/a for status updates. Join us in IRC in #drupal-phpunit./p p(This update written by klausi amp; dawehner)/p h3Workflow/h3 pThe biggest user facing change with workflows since the last update is the a href=https://www.drupal.org/node/2779647introduction of the Workflows module/a as a separate concept from content moderation. Now other modules can use workflows for user levels, commerce and other needs as well, when the workflow has nothing to do with content moderation. Many API changes were also made including support for moderation of non-translatable entity types and entity types without bundles (as long as revisions are enabled). Publishing entities implementing EntityPublishedInterface is also possible now, not just nodes./p pWondering how to join an initiative? Meeting information for each initiative is listed at a href=https://groups.drupal.org/node/514585 title=https://groups.drupal.org/node/514585https://groups.drupal.org/node/514585/a/p
Categories: Drupal Feeds