Planet Drupal

Syndicate content - aggregated feeds in category Planet Drupal
Updated: 14 min 16 sec ago

KnackForge: How to update Drupal 8 core?

Sat, 03/24/2018 - 06:01
span data-quickedit-field-id=node/328/title/en/rss class=field field--name-title field--type-string field--label-hiddenHow to update Drupal 8 core?/span div data-quickedit-field-id=node/328/body/en/rss class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itemp dir=ltrLet's see how to update your Drupal site between 8.x.x minor and patch versions. For example, from 8.1.2 to 8.1.3, or from 8.3.5 to 8.4.0. I hope this will help you./p ulli dir=ltr p dir=ltrIf you are upgrading to Drupal version x.y.z/p /li /ulp dir=ltr           x -gt; is known as the major version number/p p dir=ltr           y -gt; is known as the minor version number/p p dir=ltr           z -gt; is known as the patch version number./p/div span data-quickedit-field-id=node/328/uid/en/rss class=field field--name-uid field--type-entity-reference field--label-hiddena title=View blogs by rajamohamed. href=/blog/rajamohamed lang= about=/rajamohamed typeof=schema:Person property=schema:name datatype= itemprop=url rel=author class=usernamerajamohamed/a/span span data-quickedit-field-id=node/328/created/en/rss class=field field--name-created field--type-created field--label-hiddenSat, 03/24/2018 - 10:31/span span class=a2a_kit a2a_kit_size_32 addtoany_list data-a2a-url= data-a2a-title=How to update Drupal 8 core?a class=a2a_dd addtoany_share_save href=;title=How%20to%20update%20Drupal%208%20core%3F/aa class=a2a_button_facebook/a a class=a2a_button_twitter /a a class=a2a_button_google_plus/a a class=a2a_button_linkedin /a a class=a2a_button_pinterest /a/span

ActiveLAMP: Shibboleth Authentication in Symfony 2.8+|3.0+

0 sec ago
divimg src= //divpWe recently had the opportunity to work on a Symfony app for one of our Higher Ed clients that we recently built a Drupal distribution for. Drupal 8 moving to Symfony has enabled us to expand our service offering. We have found more opportunities building apps directly using Symfony when a CMS is not needed. This post is not about Drupal, but cross posting to emDrupal Planet/em to demonstrate the value of emgetting off the island/em. Writing custom authentication schemes in Symfony used to be on the complicated side. But with the a href= of the Guard authentication component/a, it has gotten a lot easier./p a href= more.../a

Jeff Geerling's Blog: Use a Drupal 8 BLT project with Drupal VM on Windows 7 or Windows 8

1 hour 4 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:encodedpWindows 10 is the only release Acquia's BLT a href= supports/a. But there are still many people who use Windows 7 and 8, and most of these people don't have control over what version of Windows they use./p pimg src=// width=650 height=366 alt=Windows 7 - Drupal VM and BLT Setup Guide class=insert-image //p pDrupal VM has supported Windows 7, 8, and 10 since I started building it a few years ago (at that time I was still running Windows 7), and using a little finesse, you can actually get an entire modern BLT-based Drupal 8 project running on Windows 7 or 8, as long as you do all the right things, as will be demonstrated in this blog post./p/div/div/div

Sooper Drupal Themes: Are you ready for Drupal 8?

Wed, 03/22/2017 - 21:30
div class=field-blog-image img typeof=foaf:Image class=img-responsive src= width=1140 height=589 / /div div class=field-body pBetween the rush of product updates we're putting out lately, a moment of reflection.../p pLike many other Drupal shops and theme/product developers I've been taking it easy with major investment in D8. But times are changing. Now we are seeing a time where Google searches including Drupal 8 are more numerous than searches containing Drupal 7. This is by no means a guarantee that D8 is a clear winner but to me it is a sign of progress and it inspires enough confidence to push ahead with our Drupal 8 product upgrades. SooperThemes is on schedule to release a href=http://www.sooperthemes.comour Drupal themes and modules/a on Drupal 8 soon and I'm sure it will be great for us and our customers./p p2017 will be an interesting year for Drupal, a year in which Drupal 8 will really show whether it can be as popular as it's younger brother. The lines in the chart might be crossing but Drupal 8 some way to go before it is as popular as 7. Understanding that Drupal 8 is more geared towards developers one might say it never will, but I think that it's important for the open web that Drupal will stay competitive in the low end market. Start-ups like Tesla and SpaceX have demonstrated how Drupal can grow along with your business all the way towards IPO and beyond./p h2Is your business ready for Drupal 8?/h2 pPersonally I think I will need a month or 2 before I can say I'm totally comfortable with shifting focus of development to Drupal 8. Most of my existing customers are on Drupal 7 and my Drupal 7 expertise and productsnbsp;will not be irrelevant any time soon. One thing that is holding me back is uncertainty about media library features in Drupal 8, I hope the D8media team will be successful with their awesome work that puts this critical feature set in core./p pIf you are a Drupal developer, themer, or business owner, how do you feel about Drupal 8? Are you getting more business for Drupal 8 than Drupal 7? How is your experience with training yourself or your staff to work with Drupal 8 and it's more object oriented code?nbsp;/p pLet me know in the comments if you have anything to share about what Drupal 8 means to you!/p /div div class=field-content-banner glazed-util-float-right float-right a href= typeof=foaf:Image class=img-responsive src= width=300 height=140 alt= //a /div

Hook 42: Stanford Drupal Camp 2017 - Ready, Git Set, Go!

Wed, 03/22/2017 - 20:03
div class=image div class=field-items class=field-items div class=field-item even rel=og:image rdfs:seeAlso resource= class=field-item evenimg typeof=foaf:Image src= width=198 height=220 alt=Stanford Drupal Camp 2017 title=Stanford Drupal Camp 2017 //div /div /div div class=field field-name-body field-type-text-with-summary field-label-hidden field-wrapper body field div class=field-items class=field-items div class=field-item even property=content:encoded class=field-item evenpI fully embraced the motto “go big or go home” when I started to think about my first solo community presentation for a href= Drupal Camp 2017/a. I wanted to force myself to learn a subject well enough that I could explain it to others. I like a challenge, so I set my eyes on understanding the fundamentals of Git. My presentation slides can be found here: a href=* /div /div /div

Acquia Developer Center Blog: 254: Mumbai Memories - meet Rakesh James

Wed, 03/22/2017 - 18:13
div class=field field-name-field-podcast-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image class=img-responsive src= width=340 height=260 alt=DrupalCon Asia Mumbai 2016 logo title=DrupalCon Asia Mumbai 2016 logo //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedp My trusty microphone, camera, and I recorded a few great conversations at DrupalCon in Mumbai that have never been released until now. Today, a conversation with a href= James/a, who credits Dries for giving him a way to live and support his family with Drupal. Rakesh is an extraordinary and generous person; he's personally paid that forward, giving others in India the chance to change their lives, too, by teaching a href=;feature=youtu.beamp;t=1h13m4shundreds of people/a Drupal and giving them a shot at a career, too. He's also a a href= 30 contributor to Drupal 8 core/a. /p p Rakesh told me about the moment he both discovered and fell in love with Drupal. His manager gave him permission to check out Drupal for a project, I started it with Drupal 5. I got a big error. My senior [colleague] said I could post on because he was sitting far away and could not debug for me. I posted the error ... After one hour somebody from the community replied that it would be better if you started with Drupal 6. That was amazing. If you post it, somebody from the [other side] of the planet replied to me, 'You should do this.' From that amazing [moment] till now, I have that feeling. All the time when you go to the community and post something, you'll be getting the right answer. In an hour's time. That is so amazing. /p p I feel like when I have gotten something, I should give back to others who are struggling. If they have a little education, know how to play with the computer, I should teach them Drupal. That is the best way of doing it. I spread the word because I got something. The people are around, this magic should be with them also ... So they will have a better life. They'll have a better salary. It's a better way to do that; teach the kids in pre-university colleges. We should teach them. I volunteer my time for that. Two Saturdays a month, we go out to the colleges. Every first Saturday, we have a community meet-up; the other Saturday we go to a college and teach them Drupal. /p p If you have any doubts about Rakesh's sincerity in all this, watch how moved he is in the video from about 10:30 to 11:50 :-) /p p DrupalCon Asia Mumbai 2016 was almost exactly a year ago now. Of all the conferences I have been to, Mumbai was probably my favorite. I met an incredible, active, enthusiastic Drupal community that welcomed everyone with open arms, incredible food (!), and a LOT of selfies :-) /p piframe width=640 height=360 src= frameborder=0/iframe/p h2 Subscribe to the podcast!br //h2 p Subscribe to the a href= Podcast in iTunes/a and rate this episode! /p p Subscribe via our a href= feed/a. /p /div/div/divdiv class=field field-name-field-podcast-audio field-type-file field-label-hiddendiv class=field-itemsdiv class=field-item evenaudio controls=controlssource src= type=audio/mpeg //audio/div/div/divdiv class=field field-name-field-skill-level field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelSkill Level:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/skill-level/beginner typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Beginner/a/divdiv class=field-item odda href=/skill-level/intermediate typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Intermediate/a/divdiv class=field-item evena href=/skill-level/advanced typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Advanced/a/div/div/div

Mediacurrent: Using Normalizers to Alter REST JSON Structure in Drupal 8

Wed, 03/22/2017 - 13:20
img typeof=foaf:Image src= width=200 height=152 alt=alt=”” title=Drupal bits and bytes / h2Overview/h2 pDrupal 8 core provides for solid REST capabilities out-of-the-box, which is great for integrating with a web service or allowing a third-party application to consume content. However, the REST output provided by Drupal core is in a certain structure that may not necessarily satisfy the requirements as per the structure the consuming application /br /In comes normalizers that will help us alter the REST response to our liking. For this example, we will be looking at altering the JSON response for node / /p

Janez Urevc: Get ready for the Media workshop at Drupal dev days Seville

Wed, 03/22/2017 - 12:43
spanGet ready for the Media workshop at Drupal dev days Seville/span spanspan lang= about= typeof=schema:Person property=schema:name datatype= xml:lang=slashrsm/span/span spanWed, 22.03.2017 - 12:43/span div class=field field--name-body field--type-text-with-summary field--label-hidden field--itempTomorrow I'll be giving a a href= about the Drupal 8 media/a. As part of it we'll build a media site from scratch. We will start with the standard Drupal installation, add modules and configuration and see how far we can get./p pIf you are planning to attend the workshop and want to be fully productive I'd ask you to take some time and prepare your development environment. We will need Drupal 8 checkout with the following modules:/p ullia href= lia href= lia href= lia href= API/a/li lia href= browser/a/li lia href= embed/a/li lia href= formatter/a/li lia href= entity form/a/li lia href= entity/a/li lia href= entity image/a/li lia href= entity Instagram/a/li lia href= entity Slideshow/a/li lia href= entity Twitter/a/li lia href= lia href= media/a/li lia href= embed/a/li lia href= embed field/a/li /ulpBesides that we'll also need Dropzone and Slick libraries, which you can install based on the docs provided in the README files of the respective modules (a href=[1]/a, a href=[2]/a)./p pYou can download all dependencies manually or use the a href= template that I provided for you/a. Simply clone the repository and run codecomposer install/code in the project root./p /div div class=field field--name-field-related field--type-entity-reference field--label-above div class=field--labelEnjoyed this post? There is more!/div div class=field__items div class=field--itema href= hreflang=enWant to learn Entity browser?/a/div div class=field--itema href= hreflang=enPossible solution for knowledge sharing in the Drupal 8 media domain/a/div div class=field--itema href= hreflang=enCall for Drupal 8 media ecosystem co-maintainers/a/div /div /div

LakeDrops Drupal Consulting, Development and Hosting: Migrate to Drupal 8

Tue, 03/21/2017 - 20:54
span class=field field--name-title field--type-string field--label-hiddenMigrate to Drupal 8/span div class=field field--name-field-image field--type-image field--label-hidden field__item img src= width=220 height=103 alt=Drupal 8 Migration typeof=foaf:Image class=image-style-medium //div span class=field field--name-uid field--type-entity-reference field--label-hiddena title=View user profile. href= lang= about= typeof=schema:Person property=schema:name datatype= class=username xml:lang=Richard Papp/a/span span class=field field--name-created field--type-created field--label-hiddenTue, 03/21/2017 - 20:54/span div class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itemThe first meeting of the Drupal User Group Bodensee (Lake Constance) in 2017 will be about migration to Drupal 8./div

MidCamp - Midwest Drupal Camp: Call for Volunteers

Tue, 03/21/2017 - 20:12
h2We need you!/h2 p dir=ltrWant to give back to the Drupal Community without writing a line of code? Volunteer to help out at MidCamp 2017. nbsp;Wersquo;re looking for people to help with all kinds of tasks including:span style=font-family:sans-serif,arial,verdana,trebuchet msnbsp;/span/p h3 dir=ltrSetup/Teardown/h3 ul li dir=ltr p dir=ltrFor setup, we need help making sure registration is ready to roll, and getting T-shirts ready to move./p /li li dir=ltr p dir=ltrFor teardown, we need to undo all the setup including packing up all the rooms, the registration desk, cleaning signage, and making it look like we were never there./p /li /ul h3 dir=ltrRegistration and Ticketing/h3 ul li p dir=ltrWe need ticket scanners, program dispersers, and people to answer questions./p /li /ul h3 dir=ltrRoom Monitors/h3 ul li p dir=ltrPick your sessions and count heads, make sure the speakers have what they need to survive, and help with the in-room A/V/p /li /ul p dir=ltrIf yoursquo;re interested in volunteering or would like to find out more, please contact us./p pa class=btn href=!/a/p

Acquia Lightning Blog: Forward Revisions and Translated Content

Tue, 03/21/2017 - 19:46
span class=field field--name-title field--type-string field--label-hiddenForward Revisions and Translated Content/span span class=field field--name-uid field--type-entity-reference field--label-hiddenspan lang= about= typeof=schema:Person property=schema:name datatype= xml:lang=Adam Balsam/span/span span class=field field--name-created field--type-created field--label-hiddenTue, 03/21/2017 - 14:46/span div class=clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__itempCore contributors are currently working on a solution for a href= Forward revisions + translation UI can result in forked draft revisions/em/a. This issue can affect users of Workbench Moderation (that is, users of Lightning) too though./p pThe problem presents itself when:/p ulliThe site uses Lightning Workflow/li liContent Translation is enabled with at least one additional language defined (let's say English and Spanish) /li liA piece of content exists where: ulliThere is a published English and a published Spanish version of the content./li liBoth the English and Spanish version have unpublished edits (AKA forward revisions)./li /ul/li liAn editor publishes the forward revision for either the English or Spanish version (let's say English)./li /ulpThe result is the existing published Spanish version becomes unpublished - even though the editor took no action on that version at all. This is because the system is marking the unpublished Spanish version as the default revision./p pA workaround exists in the a href= Translation Workflow/a module. If you are still using Drupal core 8.2.x (which, as of this writing, Lightning is) you will also need a a href= patch/a that a href= a getLoadedRevisionId() method to ContentEntityBase/a./p h2Workaround Summary/h2 olliApply a href= core patch/a./li liAdd the a href= Translation Moderation/a module to your codebase and enable it./li /olpFor more information and demonstration of the bug and the fix, see the video below./p article class=embedded-entityarticle class=media media-video view-mode-embeddeddiv class=field field--name-field-media-video-embed-field field--type-video-embed-field field--label-hidden field__itemdiv class=video-embed-field-responsive-videoiframe width=854 height=480 frameborder=0 allowfullscreen=allowfullscreen src= /div /div /article/articlepstrongNote:/strong This is an alpha module with known issues and, by definition, is not covered by the Drupal Security policy and may have security vulnerabilities publicly disclosed./p pstrongNote:/strong The Content Translation Workflow module works around the original issue by creating an additional revision based on the current default revision. This preserves existing forward revisions and their content, but effectively makes them empast/em (rather than emforward/em) revisions./p pstrongBonus:/strong The author of Content Translation Workflow, a href=, has also created a companion module a href= Translation Revision/a which adds a nice UI to translate individual revisions./p/div

Palantir: Competitive Analysis: The Key to a Woman's Healthy Heart - Part 1

Tue, 03/21/2017 - 19:45
spanCompetitive Analysis: The Key to a Woman's Healthy Heart - Part 1/span spana title=View user profile. href= lang= about= typeof=schema:Person property=schema:name datatype= xml:lang=brandt/a/span spanTue, 03/21/2017 - 13:45/span Michelle Jackson time datetime=2017-03-21T12:00:00ZMar 21, 2017/timeimg src= width=1300 height=731 alt=Photo of woman holding up paper cutout of heart over face typeof=foaf:Image /div class=lede pIn the healthcare field, meeting the needs of patients can be a matter of life and death./p /div In this post we will cover... ulli dir=ltr p dir=ltrHow health systems can conduct competitive analysis/p /li li dir=ltr p dir=ltrHow navigation organization and prioritization impacts the ability of people to find information on specific health topics such as heart disease and its impact on women’s health/p /li li dir=ltr p dir=ltrHow competitive analysis can help health systems conduct a cursory evaluation and improve information architecture to better serve people suffering from critical illnesses/p /li li dir=ltrHow looking at peer competitors can help health systems better serve the needs of patients and their caregivers/li /ulsection class=ctah3 class=cta__title /h3pStrategy work is essential to a project's success./p span class=cta__link a href='s Chat. /a /span /sectionpCompetitive analysis is an exercise, the importance of which transcends the borders of many industries, including healthcare. By taking a look at how your site compares to your competitors, you can ultimately make changes that allow you to better serve your patient’s specific needs./p pIn recognition of Women’s History Month, we are focusing on women’s health, specifically heart disease, a href= number one cause of death for women/a in the United States. We are also honing in on on a href= city Baltimore, which has launched several initiatives to combat cardiovascular disease. The goal is to take a look at how two health systems in Charm City categorize and present information about cardiovascular disease on their public-facing websites./p pLet’s imagine you have been tasked by the American Heart Association (AHA) to compare and evaluate websites of local health systems in the field of cardiology in how they serve women patients who suffer from cardiovascular disease. Where do we begin? What competitors will we look at? What dimensions or features/site attributes are we comparing? What key tasks are important to patients and caregivers? How does search impact the site visitor journey to each competitor website./p pBy the time you finish reading this post, you will have the know-how to do a competitive analysis for a health-system or hospital website with a focus on particular health specialties and demographics. You will be able to see how your website measures against the competition at the specialty level and also in meeting the needs of specific patient and caregiver audiences./p h2What is competitive analysis?/h2 pAs we discussed in a href= Analysis on a Budget/a, competitive analysis is a user experience research technique that can help you see how your site compares with competitor websites in terms of content, design, and functionality. It can also lead to better decision-making when selecting new design and technical features for your site (e.g. search filter terms or search listing display). In this post, we’ll focus on the navigation and internal menu labels as our dimensions./p h2A Tale of Two Hospitals/h2 pJohns Hopkins Medicine and the University of Maryland Medical Center are two large university hospitals local to Baltimore that have centers dedicated to women and heart disease. The two centers are considered direct competitors because both offer the same service and function in the same way./p blockquote h3Fast Facts for Context/h3 ulliWomen’s heart disease a href= are complex/a and often differ from mens’ symptoms. /li liWomen suffering from heart disease may not experience any symptoms at all./li liIn 2015, the Baltimore City Health Department a href= a report/a that cited cardiovascular disease as the leading cause of death in the city./li liAccording to the a href= Maryland Vital Statistics Annual Report/a, approximately 1 in 4 deaths in the Baltimore Metro Area were related to heart disease./li liNational and statewide statistics confirm cardiovascular disease is the leading cause of death for men and women./li /ul/blockquote h3It all begins with search/h3 pSearch plays a key role in how patients and caregivers, especially women, find information about health conditions and treatment. In 2013, Pew Research’s a href= Online Report/a noted that “women [were] more likely than men to go online to figure out a possible diagnosis.” The report also noted that “77% of online health seekers say they began at a search engine such as Google, Bing, or Yahoo.”/p pSpecific search queries will likely bring this group of site visitors to a specific page, rather than to the homepage. This means the information architecture of health system internal pages plays a key role in providing patients and caregivers with information and resources about medical conditions and services. Competitive analysis can help us understand if and how these pages are meeting patient and caregiver needs./p h3Keywords are key/h3 pKeyword selection drastically impacts the results that are returned during a patient and caregiver search query. To demonstrate this, let’s start with a basic keyword search to evaluate how sites are optimizing search for topics like women and heart disease. As shown below, keywords can transform the information-seeking experience for women./p figure role=groupimg alt=Figure 1: Google search with “women heart disease baltimore md” as key words data-entity-type=file data-entity-uuid=d88a2d67-b346-42f9-bcc8-a5c2fb1e36cb src= /figcaptionFigure 1: Google search with “women heart disease baltimore md” as key words/figcaption/figurepThe first figure shows the search query results for “women heart disease baltimore md.” Johns Hopkins Women’s Cardiovascular Health Center and University of Maryland Medical Center Women’s Heart Program landing pages are both listed in the search results (Figures 2 and 3)./p figure role=groupimg alt=Figure 2: Johns Hopkins Women’s Cardiovascular Health Center landing page data-entity-type=file data-entity-uuid=c20da832-4dd8-4e5e-95e9-89dc7fd442f4 src= /figcaptionFigure 2: Johns Hopkins Women’s Cardiovascular Health Center landing page/figcaption/figurep /p figure role=groupimg alt=Figure 3: University of Maryland Medical Center Women’s Heart Health Program landing page data-entity-type=file data-entity-uuid=3cb70019-465e-4e3d-84ce-86177dff2334 src= /figcaptionFigure 3: University of Maryland Medical Center Women’s Heart Health Program landing page/figcaption/figurep /p figure role=groupimg alt=Figure 4: Google search with “heart disease hospital baltimore md” data-entity-type=file data-entity-uuid=9dbabfc4-cc7e-4293-a182-35b2709cb6ff src= /figcaptionFigure 4: Google search with “heart disease hospital baltimore md”/figcaption/figurepSearch significantly impacts patient and caregiver access to health and hospital information. Google provides results based on previous search behavior, so results may vary by browser and search history, among other factors. We tried these terms using a private session and when logged into Google and saw little to no variance./p pAs shown in Figure 4, using different keywords in the search query yields different search results. “Heart disease hospital baltimore md” returns Johns Hopkins Heart Vascular Institute as one of the top search results, but University of Maryland Medical Center’s Heart and Vascular Center is not returned as a top result when logged into Google Chrome on during a private session./p pThis is important to note because the University of Maryland Medical Center may want to look into methods to improve search engine optimization. There are different ways to address the absence of your website or landing page, product or service at the top of the site visitor’s search results listing./p h3Menu hierarchy and landing pages - when alphabetization complicates user experience/h3 pIf women with heart disease choose keywords like “heart disease hospital baltimore md,” and do not indicate their gender in their query, they are brought to Heart Vascular Health landing pages for each respective health system. Both landing pages use alphabetization to organization centers and programs, Because the centers or programs dedicated to women and heart disease begin with “W,” they are situated at the bottom of the internal navigations./p pThis may pose a challenge to patients and caregivers entering the site from search queries that omit the word “women” (i.e. heart disease hospital baltimore md). These search query examples are not meant to represent the most common queries for people looking for information about heart disease in Baltimore; rather they demonstrate how different search queries can yield different results for people seeking this information./p figure role=groupimg alt=Figure 5: Johns Hopkins Heart Vascular Institute landing page data-entity-type=file data-entity-uuid=e4465640-ba2b-4057-bae9-c65635f25d9d src= /figcaptionFigure 5: Johns Hopkins Heart Vascular Institute landing page/figcaption/figurep /p figure role=groupimg alt=Figure 6: University of Maryland Medical Center Heart and Vascular Center data-entity-type=file data-entity-uuid=e2f2e16f-1d1c-4b78-9e6c-40d07a933398 src= /figcaptionFigure 6: University of Maryland Medical Center Heart and Vascular Center/figcaption/figureh3Internal Menu Labeling and Nesting/h3 pNow that we see how search impacts visitor pathways to the health system sites, let’s take a closer look at how Johns Hopkins Medicine and the University of Maryland Medical Center, differ in presenting information in the internal menus for the centers and programs dedicated to women’s heart disease and heart health./p figure role=groupimg alt=Figure 7: Johns Hopkins Heart Vascular Institute landing page navigation data-entity-type=file data-entity-uuid=42ffc5d2-9378-4988-a5b5-ef88eb8db22d src= /figcaptionFigure 7: Johns Hopkins Heart Vascular Institute landing page navigation/figcaption/figurepMultiple internal navigations within the Johns Hopkins Heart Vascular Institute landing page and the current placement of the Women’s Cardiovascular Health Center at the bottom of the navigation hierarchy might make it challenging for patients looking for this particular center. Since centers provide services for patients, the placement of “centers of excellence” under “clinical services” may complicate site visitors’ understanding of resources and the relationship between services and centers. These types of naming conventions should be examined more closely./p figure role=groupimg alt=Figure 8: Johns Hopkins Heart Vascular Institute landing page internal navigations data-entity-type=file data-entity-uuid=3edf5133-ad9e-42e3-83b2-f941ae5a5140 src= /figcaptionFigure 8: Johns Hopkins Heart Vascular Institute landing page internal navigations/figcaption/figurep /p figure role=groupimg alt=Figure 9: University of Maryland Medical Center Women’s Heart Health Program landing page navigations data-entity-type=file data-entity-uuid=cc2363d6-31b2-49b6-aaa9-211b9dae4137 src= /figcaptionFigure 9: University of Maryland Medical Center Women’s Heart Health Program landing page navigations/figcaption/figurepLike its competitor, the University of Maryland Medical Center has multiple internal navigations, which may also be cumbersome to users. Patients and caregivers have too many options which may make it difficult for them to understand what they should do on this page. It may also make it challenging for them to complete key tasks (i.e. researching risk factors, find a physician, schedule an appointment, etc)./p pThe University of Maryland Medical Center’s “Centers and Services might resonate better with site visitors because they can find both Centers and Services under “Centers and Services;” Johns Hopkins Medicine’s placement of Centers of Excellence under Clinical Services could be confusing. Patients typically go to a center to receive clinical services; they don’t often go to a clinical service to find a center./p pThe University of Maryland Medical Center’s Heart Vascular Center use of “Services’” for one of its navigations might not be intuitive to site visitors. “Services” plays the role of a catch-all for conditions (i.e. aortic disease), topics (i.e. women’s heart health) and treatment options (i.e. heart and lung transplant) and may make it challenging for visitors to find what they are looking for on this page./p pMore specifically, a patient or caregiver looking for women’s heart health may not necessarily expect to find a program under “Services.” These items could be surfaced more quickly and more efficiently organized within Centers and Services so that the pathways to Women’s Heart Health are more intuitive to patients and their caregivers./p pWe’ll know if this is the case after we test these health system site pages with real visitors./p figure role=groupimg alt=Figure 10: Competitive analysis matrix data-entity-type=file data-entity-uuid=93ab0f24-87d1-42ad-a0f3-ab297bfccd19 src= /figcaptionFigure 10: Competitive analysis matrix/figcaption/figureh2In sum/h2 pSo how do you design a website for women who may have asymptomatic heart disease? How do you integrate the needs of potential patients who experience neck and back pain as a symptom of their heart disease? We can gain a better understanding of specific cases like this by understanding the user journey of patients who exhibit non-traditional symptoms of heart disease and their caregivers by conducting competitive usability tests of these sites./p h3So what next?/h3 pNow that we’ve provided a cursory analysis and heuristic evaluation of the internal navigations of two health system sites, we’ll perform user tests on the websites to validate the some of the hypotheses we discuss in this blog post and compare the content and design of the two health system sites. Keep an eye out for that post in a couple weeks!/p aside class=ctah3 class=cta__title /h3pWe want to make your project a success./p span class=cta__link a href='s Chat./a /span /asideul class=list--simpleli class=taga href= hreflang=enContent Strategy/a/li li class=taga href= hreflang=enStrategy/a/li /ul

Code Enigma: Do you really need composer in production?

Tue, 03/21/2017 - 17:26
div id=node-472 class=node node-page clearfix h2a href=/build/blog/do-you-really-need-composer-productionDo you really need composer in production?/a/h2 div class=content div class=form-item form-type-item labelLanguage /label English /div articleheader class=rev altdiv class=aside a href=/blog class=section-backReturn to Blog/a /divdiv class=main h1Do you really need composer in production?/h1 /div/headerdiv class=alt revdiv class=main p class=leadIt is now a common practice to use composer as part of the deployment stack. Is this always such a good idea?/p /divfooter class=aside vcarda href=/community/blog?author=pascalimg src= width=240 height=240 alt=Photo of Pascal Morin //adiv class=vcard-detailsabbr class=published command contemporary title=2017-03-21T16:26:13+00:00Tue, 2017-03-21 16:26/abbrspan class=author contemporary secondaryBy a href=/community/blog?author=pascal class=fn urlpascal/a/span/div/footer/divdiv class=alt revdiv class=mainpThe recipe goes like this : gitignore your vendor directory (or whatever folder your dependencies end up in), but commit your composer.lock file, then deploy. Your CI job will then « composer install » all the dependencies where there belong to, magically reproducing your initial files layout exactly how they were./p pThere are generally a few additional steps involved in between though. Typically, you lost half a day figuring out the right file permissions so that the var/cache of your app can be cleared and recreated properly by the webserver user, wondered for days why some of the builds were randomly failing before realizing that no token was set in this given job, meaning github API rate limit was sometime hit. Then another good day or two finding out how to apply two patches for the same projects when they slightly conflict. And your sysadmin might be slightly suspicious about those files being downloaded and executed directly on production outside of any VCS, and anxiously watching for exploit reports./p pNow, you will assure me, you’ve nailed all that, and, apart from an occasional network glitch preventing packages to be fetched, all is running smoothly. Great./p pBut please, re-read above. Why are you doing all this? To reproduce your initial files layout exactly how they were. Then why don’t you just commit the files and push them, then?/p pThat is normally the point in the discussion when you’re supposed to use the words « reproducible » and « best practices »./p blockquote pReproducible/p /blockquote pstyle type=text/css !--/*--![CDATA[/* !--*/ p { margin-bottom: 0.25cm; line-height: 120%; } /*--!]]*/ /style/p pRight, but what is more reproducible than moving prebuilt files around? You played the recipe once already on your dev environment, taking the risk of re-running it on production feels a bit like recompiling binaries from source simply because you can./p pComposer is not magic. What it does is grab a bunch of PHP files, ensuring they are at the right version and that they end up in the right place, so they can play nicely together. Once you have the resulting file set already, why would you want to redo this over and over on each and every environment?/p blockquote pBest practices/p /blockquote pLet’s have a closer looks at a href= is stated in the Composer documentation/a and the reasons why the project recommends not committing your dependencies:/p ullilarge VCS repository size and diffs when you update code;/li liduplication of the history of all your dependencies in your own VCS; and/li liadding dependencies installed via git to a git repo will show them as submodules./li /ulpI’ll just ignore the repository size (because, frankly ?) and focus on the diff and history parts./p pFor one, the argument here is slightly misleading: reading the statement, you might be under the impression your repository will contain the whole git history of each and every dependency in your project. Nope, it will not. What you will end up with, along the life of your project, is the history of updates to your dependencies after your initial commit./p pstrongWhich is rather the most important point here. This is a good thing! /strongWhy would emnot/em you want to be able to look at - and keep track of in your VCS - what was in update from Guzzle 3.8.0 to 3.8.1 or what difference there is between ctools 8.x-3.0-alpha27 and alpha26? Your « live » project is not only your custom code./p pWhat would you find most useful, next time your client opens a ticket because the image embedding in the WYSIWYG editor has stopped working since the last release, when looking back at the commit « Upgrade contrib module media_entity from 8.x-1.5 to 8.x-1.6 » ? Seeing a one line hash change in composer.lock, or seeing a nice diff of the actual changes in code, so you can track down what went wrong?/p pThe .git submodules point is fair, but easy to workaround, as explained on this very same best practices page. Also keep in mind it only applies if you use dev versions or obscure non-packaged dependencies./p pstyle type=text/css !--/*--![CDATA[/* !--*/ p { margin-bottom: 0.25cm; line-height: 120%; } /*--!]]*/ /style/p p /p pSo, to sum it up, if you use Composer to build your code in production, you get:/p pspan style=color:#FF0000;strong   -/strong /spanUn-needed and time consuming deployment complexity increase, with small but real risks of failure on each and every build for external causebr /br /span style=color:#FF0000;strong   -/strong /spanNo auditing of changes that are not your own custom codebr /br /span style=color:#008000;strong   +/strong /spanEasier handling of .git « false » submodules for a few dev dependencies/p p /p pOn the other hand, if you commit the vendor directory, you get:/p pspan style=color:#008000;strong   +/strong /spanEasier and straightforward deploymentbr /br /span style=color:#008000;strong   +/strong /spanAll code that lands on production gets audited/versionedbr /br /span style=color:#FF0000;strong   -/strong /spanSmall amount of work involved in dealing with possible .git « false » submodules/p p /p p /p blockquote pThen why ?/p /blockquote pstyle type=text/css !--/*--![CDATA[/* !--*/ p { margin-bottom: 0.25cm; line-height: 120%; } /*--!]]*/ /style/ppBut then, why is that such a widespread practice? I can only guess here, but I suspect there are several factors at play:/p ulliFashion, to some extent, must play a role. There are very good reasons to do this for certain workflows, which may lead people to think that it can apply to any deployment workflow./li liThe fact that it is presented as « best practice » on the Composer project page. Many people apply it without questioning whether it is applicable to their use case./li /ulpMy interpretation is that, more fundamentally, the root cause is confusion between deploying code and distributing code./p pMoving a « living thing » for one environment over to another environment is emnot the same process/em as making a component or app available for other projects to reuse and build upon. Composer is a fantastic building tool, it is great for the latter case, and using it to assemble your project totally makes sense. Using it as a deployment tool, less so./p pIf we take another look at the arguments above from a strongdistribution/strong perspective, the analysis is totally different:/p ulliLarge VCS repository size and diffs when you update code./li liDuplication of the history of all your dependencies in your own VCS./li /ulpIndeed, in this use case, it all makes total sense: you definitively do not need the whole git history of any component you are re-using for your project. Nor do you want your repo for the nice web-crawler library you contribute on GitHub to contain the Guzzle codebase you depend upon./p pIn short, strongthink about the usage/strong. If you maintain, say, a Drupal custom distro that you use internally as a starting point for your projects, by all means yes, ignore the vendor directory. Build it with Composer when you use it to start a new project. And continue to use Composer to manage dependencies updates in your dev environment. However, once this is no longer a re-usable component, but instead a living project that will need to be deployed from environment to environment, do yourself a favour and consider carefully whether using Composer to strongdeploy/strong really brings any benefit./p p /p p /p p /p /div/divaside class=article-list max div class=article-list-item divdiv class=article-list-item-typeBlog/diva href=/community/blog/integrating-drupal-microsoft-sharepoint-2013 class=article-list-item-linkIntegrating Drupal with Microsoft SharePoint 2013/a/div /div div class=article-list-item divdiv class=article-list-item-typeBlog/diva href=/host/blog/introducing-blackfire-code-enigma-servers class=article-list-item-linkIntroducing Blackfire on Code Enigma servers/a/div /div div class=article-list-item divdiv class=article-list-item-typeBlog/diva href=/community/blog/entity-reference-autocomplete-module class=article-list-item-linkThe Entity Reference Autocomplete module/a/div /div div class=article-list-item divdiv class=article-list-item-typeBlog/diva href=/build/blog/saml-adfs-authentication-drupal class=article-list-item-linkSAML ADFS authentication in Drupal/a/div /div /aside/article /div /div Most common Drupal site building pitfalls and how to avoid them! (Part 2 of 3)

Tue, 03/21/2017 - 17:24
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpThis is the a href= in a series of articles/a, in which I'd like to share the most common pitfalls we've seen, so that you can avoid making the same mistakes when building your sites!/ppa href= offers support and maintenance for Drupal sites that we didn't build initially. We've learned the hard way which site building mistakes have the greatest potential for creating issues later./ppstrongAnd we've seen a href= lot of sites/a! Besides our clients, we also do a a href= in-depth site audit/a as the first step when talking to a potential client, so we've seen loads of additional sites that didn't become customers./strong/ppIn the a href= article/a, we looked at security updates, badly installed module code and issues with patching modules, as well as specific strategies for addressing each of those problems. In this article, we'll look at how to do the most common Drupal customizations without patching!/ppemNOTE: even though they might take a slightly different form depending on the version, most of these same pitfalls apply equally to Drupal 6, 7 and 8! It turns out that bad practices are quite compatible with multiple Drupal versions ;-)/em/pp/div/div/div

InternetDevels: Great responsive Drupal themes for construction websites: built for builders!

Tue, 03/21/2017 - 15:12
div class=field field--name-field-preview-image field--type-image field--label-hiddendiv class=field__itemsdiv class=field__item evenimg src=/sites/default/files/public/blog_preview/great_drupal_themes_for_construction_websites_-_cover.png width=937 height=622 alt=Great responsive Drupal themes for construction websites: built for builders! //div/div/divdiv class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenp style=text-align: right;emWe once offered you a selection of a href= target=_blankfree responsive Drupal themes/a,/embr /em as well as advanced tutorials on a href= target=_blankcreating themes/a and a href= target=_blanksubthemes/a./embr /em Today, our focus will be very specific: we will discuss/em/p a href= more/a/div/div/div

InternetDevels: Great responsive Drupal themes for construction websites: built for builders!

Tue, 03/21/2017 - 15:12
div class=field field--name-field-preview-image field--type-image field--label-hiddendiv class=field__itemsdiv class=field__item evenimg src=/sites/default/files/public/blog_preview/great_drupal_themes_for_construction_websites_-_cover.png width=937 height=622 alt=Great responsive Drupal themes for construction websites: built for builders! //div/div/divdiv class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenp style=text-align: right;emWe once offered you a selection of a href= target=_blankfree responsive Drupal themes/a,/embr /em as well as advanced tutorials on a href= target=_blankcreating themes/a and a href= target=_blanksubthemes/a./embr /em Today, our focus will be very specific: we will discuss/em/p a href= more/a/div/div/div

Acquia Developer Center Blog: Cultivating Open Source and Drupal in China

Tue, 03/21/2017 - 14:18
div class=field field-name-field-blog-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image class=img-responsive src= width=140 height=85 alt=china map title=china map //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpFollowing on from a href= previous blog posts/a around how Drupal and open-source are growing in China, we must start looking at how the overall ecosystem can be nurtured to turn one of the most populous countries in the world on to Drupal./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 evena href=/tags/acquia-drupal-planet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=acquia drupal planet/a/div/div/div Blog: AGILEDROP: Drupal Logos representing National Identities

Tue, 03/21/2017 - 11:23
a href= src= //a We are now very deep into our »Druplicon marathon«. After already presenting you Drupal Logos in Human and Superhuman forms, Drupal Logos as Fruits and Vegetables, Druplicons in the shapes of Animals and Drupal Logos taking part in the outdoor activities, it's now time to look at Drupal Logos representing the national identities. A sense of belonging to one nation can be very strong. National identities are therefore also present in various Druplicons. Latter mostly represent active or inactive Drupal Groups from the specific countries. These groups connect Drupalistas from that specific… a href= MORE/a

MD Systems blog: Drupal 8 security features: Cross site request forgery (XSRF)

Tue, 03/21/2017 - 10:27
Recently, we had to create a security report for one of our clients about their Drupal 8 project. We described how Drupal 8 protects against most common vulnerabilities and added some project specific tests to secure as good as possible that it cannot be attacked. This resulted in a document that we thought is worth to be transferred into a series of blog /

Web Omelette: Storing user data such as preferences in Drupal 8 using the UserData service

Tue, 03/21/2017 - 09:30
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpHave you ever needed to persist some irregular data relating with a user account? Things like user preferences or settings that are emkinda/em configuration but not really? Storing them as configuration means having to export them, and that’s no option. Storing them in State is an option, but not a good one as you’d have to maintain a State value map with each of your users and who wants to deal with that…/p pIn Drupal 7, if you remember way back when, we had this codedata/code column in the user table which meant that we could add to the code$user-gt;data/code array whatever we wanted and it would get serialised and saved in that column (if we saved the user object). So what is the equivalent of this in Drupal 8?/p pI’m happy to say we have the exact same thing, but of course much more flexible and properly handled. So not exactly the same. But close. We have the service provided by the User module and the codeusers_data/code table for storage. So how does this work?/p pFirst of all, it’s a service. So whenever we need to work with it, we have to get an instance like so:/p pre class=brush: php/** @var UserDataInterface $userData */ $userData = \Drupal::service(''); /prepOf course, you should inject it wherever possible./p pThe resulting object (by default) will be codeUserData/code which implements codeUserDataInterface/code. And using this object we can store as many pieces of data or information for a given user as we want. Let’s explore this a bit to learn more./p pThe interface has 3 methods or handling data: codeget()/code, codeset()/code, codedelete()/code. But the power comes in the method arguments. This is how we can store some data for User 1:/p pre class=brush: php$userData-gt;set('my_module', 1, 'my_preference', 'this is my preference'); /prepSo as you can see, we have 4 arguments:/p ul liThe module name we want this piece of data to be findable by/li liThe user ID/li liThe name of the piece of data/li liThe value of the piece of data/li /ul pThis is very flexible. First, we can have module specific data. No more colluding with other modules for storing user preferences. Stay in your lane. Second, we can have multiple pieces of data per user, per module. And third, the value is automatically serialised for us so we are not restricted to simple strings./p pRetrieving data can be done like so:/p pre class=brush: php$data = $userData-gt;get('my_module', 1, 'my_preference'); /prepThis will return exactly codethis is my preference/code (in our case). And deserialisation also happens automatically if your data got serialised on input./p pDeleting data is just as easy:/p pre class=brush: php$userData-gt;delete('my_module', 1, 'my_preference'); /prepMoreover, most of the arguments of the codeget()/code and codedelete()/code methods are optional. Meaning you can load/delete multiple pieces of data at once. Check out codeUserDataInterface/code to see how omitting some arguments can return/delete sets of records rather than individual ones./p pAnd that is pretty much it. And in true Drupal 8 form, there’s nobody stopping you from overriding the service and using your own codeUserDataInterface/code implementation that has that little extra something you are missing. So no, you probably don’t have to create that custom table after all./p /div/div/div