Planet Drupal

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

Drupalize.Me: Embed YouTube Videos with Media and Media Internet Sources

Tue, 12/16/2014 - 15:30
div class=field field-name-body field-type-text-with-summary field-label-hidden text-content text-secondarydiv class=field-itemsdiv class=field-item evenpYouTube is a great service for storing and managing your videos. While this is handy, many people want to be able to display their videos within their own website as well. In this tutorial we'll see how the Media, Media Internet Sources, and Media: YouTube modules can help give you a nice, seamless way to integrate YouTube videos into your site, and give really nice control over how those videos look, along with some built-in media management tools./p /div/div/divdiv id=comment-wrapper-nid-1987/div

Paul Booker: Hiding view records based on the value of a new field

Tue, 12/16/2014 - 13:36
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpre class=brush: php function mymodule_views_query_alter($view, $query) { global $user; if (($view-name === 'coaches') || ($view-name === 'trainers')) { if (!in_array('trainer', $user-roles) !in_array('admin', $user-roles)) { $view-query-fields['field_data_field_profile_hidden'] = array( 'field' = 'field_profile_hidden_value', 'table' = 'field_data_field_profile_hidden', 'alias' = 'field_data_field_profile_hidden' ); $join = new views_join; $join-table ='field_data_field_profile_hidden'; $join-left_table = 'users'; $join-left_field = 'uid'; $join-field = 'entity_id'; $join-extra = array( 0 = array('field' = 'entity_type', 'value' = 'user'), ); $join-type = LEFT; $join-extra_type = 'AND'; $join-adjusted = 'TRUE'; // add the join $view-query-table_queue['field_data_field_profile_hidden'] = array( 'table' = 'field_data_field_profile_hidden', 'num' = 1, 'alias' = 'field_data_field_profile_hidden', 'join' = $join, 'relationship' = 'users' ); $view-query-tables['node']['field_data_field_profile_hidden'] = array( 'count' = 1, 'alias' = 'field_data_field_profile_hidden' ); $view-query-where[2]['conditions'][] = array( 'field' = 'field_profile_hidden_value', 'value' = 0, 'operator' = '=' ); } } } /prepre class=brush: php /** * Implements hook_update_N(). */ function mymodule_update_7001($sandbox) { $uids = db_select('users', 'u') -fields('u', array('uid')) -execute() -fetchCol(); foreach ($uids as $uid) { db_insert('field_data_field_profile_hidden') -fields(array( 'entity_type' = 'user', 'bundle' = 'user', 'entity_id' = $uid, 'revision_id' = $uid, 'language' = 'und', 'delta' = 0, 'field_profile_hidden_value' = 0, )) -execute(); } } /pre/div/div/divdiv class=field field-name-field-tags field-type-taxonomy-term-reference field-label-above clearfixh3 class=field-labelTags: /h3ul class=linksli class=taxonomy-term-reference-0a href=/drupal-developer/tags/hookviewsqueryalter typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=hook_views_query_alter/a/lili class=taxonomy-term-reference-1a href=/drupal-developer/tags/views typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=views/a/lili class=taxonomy-term-reference-2a href=/drupal-developer/tags/field typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=field/a/lili class=taxonomy-term-reference-3a href=/drupal-developer/tags/hookupdaten typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=hook_update_N/a/lili class=taxonomy-term-reference-4a href=/drupal-developer/tags/drupalplanet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupalplanet/a/li/ul/divdiv class=easy_social_box clearfix horizontal easy_social_lang_und div class=easy_social-widget easy_social-widget-twitter firsta href=http://twitter.com/share class=twitter-share-button data-url=http://www.paulbooker.co.uk/drupal-developer/code-snippet/hiding-view-records-based-value-new-field data-count=horizontal data-lang = en data-via= data-related=:Check it out! data-text=Hiding view records based on the value of a new field Tweet/a/div div class=easy_social-widget easy_social-widget-facebookiframe src=//www.facebook.com/plugins/like.php?locale=en_USamp;href=http%3A//www.paulbooker.co.uk/drupal-developer/code-snippet/hiding-view-records-based-value-new-fieldamp;send=falseamp;layout=button_countamp;width=88amp;show_faces=trueamp;action=likeamp;colorscheme=lightamp;font=amp;height=21amp;appId= scrolling=no frameborder=0 style=border:none; overflow:hidden; width:88px; height:21px; allowTransparency=true/iframe/div div class=easy_social-widget easy_social-widget-googleplusdiv class=g-plusone data-size=medium data-annotation=bubble data-href=http://www.paulbooker.co.uk/drupal-developer/code-snippet/hiding-view-records-based-value-new-field/div/div div class=easy_social-widget easy_social-widget-linkedin lastscript type=in/share data-url=http://www.paulbooker.co.uk/drupal-developer/code-snippet/hiding-view-records-based-value-new-field data-counter=right/script/div /div !-- /.easy_social_box --

Code Drop: Thoughts on taking the Acquia Drupal certification exam

Tue, 12/16/2014 - 02:52
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpimg style=float: right; src=https://codedrop.com.au/sites/default/files/logo2104april.png alt= width=147 height=147 /Earlier this week I had the opportunity to be the first developer at Code Drop to sit an exam to become an a href=https://www.acquia.com/customer-success/learning-services/acquia-certification-program-overviewAcquia Certified Developer/a. I managed to clear the exam with the following results:/p ulliSection 1 - Fundamental Web Development Concepts: 87%/li liSection 2 - Site Building: 87%/li liSection 3 - Front end development (Theming) : 92%/li liSection 4 - Back end development (Coding) : 81%/li /ulpLike many others who have done the exam, I will briefly run over my experience and thoughts on the whole process./p/div/div/div

Tag1 Consulting: yumrepos Puppet Module

Mon, 12/15/2014 - 21:12
pEarlier this year we undertook a project to upgrade a client's infrastructure to all new servers including a migration from old Puppet scripts which were starting to show their age after many years of server and service changes. During this process, we created a new set of Puppet scripts using a href=https://docs.puppetlabs.com/hiera/1/Hiera/a to separate configuration data from modules./p pa href=http://tag1consulting.com/blog/yumrepos-puppet-module target=_blankread more/a/p

Drupal Association News: Meeting Personas: The Drupal Newcomer

Mon, 12/15/2014 - 20:01
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpimg alt=Bronwen Buswell, Drupal Newcomer class=left src=https://assoc.drupal.org/files/bronwen.jpg style=width: 240px; height: 231px; / emThis post is part of an ongoing series detailing the a href=https://assoc.drupal.org/blog/tvn/introducing-drupal.org-user-personasnew personas/a that have been drawn up as part of our Drupal.org user research./em/p pBronwen Buswell is a newcomer to Drupal. Based out of Colorado Springs, Colorado, Bronwen works as a Conference and Communications Coordinator at a nonprofit called PEAK Parent Center, which is dedicated to supporting the families of children with disabilities. While Bronwen’s role isn’t technical, she needs to use her company’s website as part of getting her work done./p p“We’re federally designated by the US Department of Education, so we try to be a total one-stop shop information and referral center,” Bronwen said. “Families can call us about any situation related to their child, and we will either refer them to the right agency or provide what they need. We’re focused on helping families navigate the education and special education systems, and we serve families with children ages birth through 26, with all sorts of disabilities, including autism, down syndrome, learning disabilities, and so on./p h2 Keeping Up With Technology/h2 pIn the past few years, PEAK Parent Center’s website became very outdated, and this was a problem. Bronwen’s clients were very dependent on being able to receive assistance over the phone, as many of the resources that the center provides are not readily available online. When updates needed to be made, Bronwen and her company were forced to rely on their tech vendors to make changes to the website, as they were working with a custom solution rather than a CMS./p p“Our website was pre-cutting edge, made by local vendors, all in HTML code and SQL database. We had excellent tech vendors who helped us create what we needed, and this was before the CMS options came along so it was really good at first. However, in the past 5 to 6 years, it has gotten really archaic, and we’re super reliant upon our vendors for updating our website. What’s simple in a CMS is complex for us,” Bronwen said./p pAfter doing lots of research and working with the federal government to find the best solution for PEAK Parent Center and other centers like it, Bronwen and her colleagues decided to explore using Drupal to create a site template that could be deployed for PEAK Parent Center  and for other similar centers that it supports across the country./p p“We're the technical assistance center for parent centers like ours in a 12 state region,” said Bronwen. “When [Drupal Association Executive Director] Holly Ross was at NTEN we started going to their conferences, which led us to launch a tech leadership initiative where we supported participating parent centers across the nation. As part of that, we got connected with great consultants and thinkers in tech, and we were asked by the US Department of Education to participate in the creation of website templates in 2 content management systems — Wordpress and Drupal — that could be used in other parent centers in the future./p h2 Getting Experienced Assistance/h2 pWith help from Aaron Pava and Nikki Pava at Alegria Partners, the staff at PEAK Parent Center has been learning to use their new Drupal website. Aaron has advised Bronwen and her colleagues every step of the way, from proposing solutions in the discovery process to walking Bronwen and her coworkers through specific tasks./p pOccasionally, Bronwen encounters small problems due to updates or little glitches with distributions, which is why Aaron has encouraged her to get involved and do some training on Drupal. Unfortunately, most of Bronwen’s time is spent trying to get the website ready to launch, as she’s under pressure from the federal government and her board of directors to deploy the new site. Though Bronwen isn’t working on the technical side of the website, she’s busy populating it with content and making sure that it will be a useful tool for her clients./p p“What I haven’t done is specific Drupal training,” said Bronwen. “I know about Lynda and Build A Module, but I’ve only had time to do sessions one-on-one with Aaron, for example, ‘Here’s how to upload content in this template.’/p pI have learned a lot on Drupal.org, but it’s been primarily through Aaron sending me a link— for example, he’ll send me links about Red Hen since we’re exploring our CRM options— but I haven’t surfed around it much,” Bronwen added./p h2 Areas For Improvement/h2 pBronwen wishes there was a recommended Drupal 101 section on Drupal.org, something that would help content editors like herself learn to use the CMS better, but for now, she is limited to relying on more educated ambassadors for Drupal to point her in the right direction./p p“It’s delicate to recommend vendors,” said Bronwen, but it seems that the community is really powerful, and is certainly one of the most unique aspects that sets Drupal aside from other CMS options. Even a few vendors recommended by the community, or a recommend Drupal 101 lesson where you can go through it, go off and work in Drupal, and come back and get Drupal 201 would be really valuable for me./p p“I know that there are local Drupal meet-ups that happen all over the country” Bronwen added. “[One group we talked with] told us that nonprofits can go to these events and say “I need this or that,” and some hardcore Drupal techie will take the work on pro bono. That was another factor that helped draw us to using Drupal — the availability of the community. It would be useful if there was more information on how to tap into those meetups, perhaps, when they’re happening./p pBronwen knows that the Drupal community is really powerful, and considers it one of the most unique aspects that sets Drupal aside from other CMS options. She is excited by the availability of the Drupal community, and is looking forward to interacting with it and working with them as she continues to run and improve PEAK Parent Center’s website./p /div/div/divdiv class=field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-abovediv class=field-labelPersonal blog tags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/personal-blog-tags/drupal.org-user-researchdrupal.org user research/a/divdiv class=field-item odda href=/personal-blog-tags/persona-interviewspersona interviews/a/div/div/div

Midwestern Mac, LLC: Highly-Available PHP infrastructure with Ansible

Mon, 12/15/2014 - 17:03
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpI just posted a large excerpt from a href=http://ansiblefordevops.com/Ansible for DevOps/a over on the Server Check.in blog: a href=https://servercheck.in/blog/highly-available-infrastructure-provisioning-ansibleHighly-Available Infrastructure Provisioning and Configuration with Ansible/a. In it, I describe a simple set of playbooks that configures a highly-available infrastructure primarily for PHP-based websites and web applications, using Varnish, Apache, Memcached, and MySQL, each configured in a way optimal for high-traffic and highly-available sites./p pHere's a diagram of the ultimate infrastructure being built:/p p style=text-align: center;img src=/sites/midwesternmac.com/files/8-highly-available-infrastructure.png width=450 height=562 alt=Highly Available Infrastructure //p/div/div/div

SitePoint PHP Drupal: AngularJS in Drupal Apps

Mon, 12/15/2014 - 17:00
ppa href=https://docs.angularjs.orgAngular.js/a is the hot new thing right now for designing applications in the client. Well, it’s not so new anymore but is sure as hell still hot, especially now that it’s being used and backed by Google. It takes the idea of a JavaScript framework to a whole new level and provides a great basis for developing rich and dynamic apps that can run in the browser or as hybrid mobile apps. /p img src=http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2014/11/1417342899logo_drupal.png alt=logo_drupal width=170 height=179 class=alignnone size-full wp-image-95615 / pIn this article I am going to show you a neat little way of using some of its magic within a Drupal 7 site. A simple piece of functionality but one that is enough to demonstrate how powerful Angular.js is and the potential use cases even within heavy server-side PHP frameworks such as Drupal. So what are we doing?/p pWe are going to create a block that lists some node titles. Big whoop. However, these node titles are going to be loaded asynchronously using Angular.js and there will be a textfield above them to filter/search for nodes (also done asyncronously). As a bonus, we will also use a small open source Angular.js module that will allow us to view some of the node info in a dialog when we click on the titles. /p/ppemContinue reading %a rel=nofollow href=http://www.sitepoint.com/angularjs-drupal-apps/AngularJS in Drupal Apps/a%/em/p

Cheppers blog: Apache Solr and Drupal - Part I: Set up Apache Solr to enhance Drupal search

Mon, 12/15/2014 - 16:40
div class=field field-name-field-front-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item even rel=schema:image resource=http://cheppers.com/sites/default/files/styles/blog_promoted-image/public/drupal_solr.png?itok=csO6IZava href=/blog/apache-solr-and-drupal-part-i-set-up-apache-solr-to-enhance-drupal-searchimg typeof=foaf:Image src=http://cheppers.com/sites/default/files/styles/blog_promoted-image/public/drupal_solr.png?itok=csO6IZav width=350 height=210 alt= //a/div/div/divdiv class=field field-name-field-lead field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item even property=schema:headlinepToday most of the websites have search functionality. With the help of Apache Solr strongthe time spent on waiting for a search result can be radically reduced/strong. In this article we are going to set up a basic searching infrastructure on a *nix-based system./p /div/div/divspan rel=schema:url resource=/blog/apache-solr-and-drupal-part-i-set-up-apache-solr-to-enhance-drupal-search class=rdf-meta/spanspan property=schema:name content=Apache Solr and Drupal - Part I: Set up Apache Solr to enhance Drupal search class=rdf-meta/span

Drupal Commerce: Major improvements in addressfield 7.x-1.0-rc1

Mon, 12/15/2014 - 16:39
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpMany people know that a href=https://drupal.org/project/addressfieldaddressfield/a hasn’t been the easiest module to maintain. There are over 200 countries in the world, each with its own addressing requirements. Addressfield attempted to provide a sane default for all of them, along with a plugin architecture for handling per-country customizations. But with so many countries, the list of needed improvements became never-ending, and the customizations themselves started gathering in only one plugin (address.inc), which quickly became impossible to maintain./p pA radical change was needed, so after a lot of research we a href=https://drupalcommerce.org/blog/16864/commerce-2x-stories-addressingintroduced a new plan/a for Drupal 8, along with a a href=https://github.com/commerceguys/addressingbrand new PHP library/a we can depend on from addressfield 8.x-2.x. The new plan resolves around two powerful ideas:/p ulliThe introduction of address formats, which hold information on how a country’s address and its form need to be rendered and validated./li liThe use of Google’s addressing dataset, freely available and built for Chrome and Android, with address formats for 200 countries./li /ulpThe introduced solutions were obviously superior to anything we had before that, but Drupal 8 is still far from production, and we needed improvements on our Drupal 7 sites today, so we decided to try and backport as many concepts as we could into the 7.x-1.x codebase. The result of that is a href=https://www.drupal.org/node/2393489addressfield 7.x-1.0-rc1/a:/p pa href=https://drupalcommerce.org/blog/31546/major-improvements-addressfield-7x-10-rc1Read more.../a/p /div/div/div

Annertech: Best Modules for Media in Drupal: How to Install and Configure Scald

Mon, 12/15/2014 - 16:19
span class=field field-node--title field-name-title field-type-string field-label-hiddenBest Modules for Media in Drupal: How to Install and Configure Scald/span div class=field field-node--body field-name-body field-type-text-with-summary field-label-hidden div class=field-items div class=field-itempIn the first part of this series, “a href=/blog/media-management-drupal-websitesScalable amp; Sustainable Media Management for Drupal Websites/a”, I talked about media management solutions for Drupal. Specifically, I am interested in managing large amounts of files in a reusable manner. The solution I like best at the moment is a href=https://drupal.org/project/scald target=_blankScald/a./p pJust so we don't get confused with some phrasing, Scald stores all media items as custom entities called atoms; Scald contexts are very similar to view modes./p/div /div /div

Liran Tal's Enginx: Drupal Performance Tip – “I’m too young to die” – know your DB engines

Mon, 12/15/2014 - 08:16
div class=seriesmetaThis entry is part 4 of 4 in the series a href=http://enginx.com/series/drupal-performance-tips/ class=series-60 title=Drupal Performance TipsDrupal Performance Tips/a/divpIn the spirit of the computer video game a href=http://doom.wikia.com/wiki/Doom target=_blankDoom /aand its a href=http://doom.wikia.com/wiki/Skill_level target=_blankskill levels/a, we#8217;ll review a few ways you can improve  your a href=http://drupal.org target=_blankDrupal /aspeed performance     and optimize for better results and server response time. These tips that we#8217;ll cover may be at times specific to Drupal 6 versions, although     you can always learn the best practices from these examples and apply them on your own code base./p pimg class=alignleft src=http://adamatomic.com/pics/blog/doom/doom2.jpg alt=Doom width=298 height=212 //p pDoom skill levels: (easiest first)/p p1.strong I#8217;m too young to die/strong/p p2. Hey, not too rough/p p3. Hurt me plenty/p p4. Ultra-violence/p p5. Nightmare!/p pstrong  This post is rated #8220;I#8217;m too young too die#8221; difficulty level/strong./p pnbsp;/p pa href=http://drupal.org target=_blankDrupal /a6 shipped with all tables being a href=http://drupal.stackexchange.com/questions/20893/drupal-database-innodb-or-myisam target=_blankMyISAM/a, and then Drupal 7 changed all that and shipped with all of its tables using the a href=http://drupal.stackexchange.com/questions/20893/drupal-database-innodb-or-myisam target=_blankInnoDB /adatabase engine. Each one with its own a href=https://www.drupal.org/node/1553474 target=_blankstrengths and weaknesses/a but it#8217;s quite clear that InnoDB will probably perform better for your Drupal site (though it has quite a bit of fine tuning configuration to be tweaked on my.cnf)./p pSome modules, whether on Drupal 6, or those on Drupal 7 that simply upgraded but didn#8217;t quite review all of their code, might ship with queries like a href=http://www.percona.com/blog/2006/12/01/count-for-innodb-tables/ target=_blankSELECT COUNT() which if you have migrated your tables to InnoDB (or simply using Drupal 7) then this will hinder on database performance/a. That#8217;s mainly because InnoDB and MyISAM work differently, and where-as this proved as quite a fast responding query being executed on a MyISAM database which uses the main index to store this information, for InnoDB the situation is different and will result in doing a full table scan for the count. Obviously, on an InnoDB configuration running such queries on large tables will result in very poor performance/p pa href=http://enginx.com/wp-content/uploads/2014/11/drupal_perf-5.pngimg class=aligncenter size-full wp-image-513 src=http://enginx.com/wp-content/uploads/2014/11/drupal_perf-5.png alt=drupal_perf-5 width=535 height=256 //a/p pNote to ponder upon #8211; what about the Views module which uses similar type of COUNT() queries to create the pagination for its views?/p !-- Easy AdSense V7.43 -- !-- [leadout: 1 urCount: 1 urMax: 0] -- div class=ezAdsense adsense adsense-leadout style=text-align:center;margin:12px; script async src=//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js/script !-- enginx-blog-wide-post -- ins class=adsbygoogle style=display:inline-block;width:728px;height:90px data-ad-client=ca-pub-9677997565991773 data-ad-slot=6746030703/ins script (adsbygoogle = window.adsbygoogle || []).push({}); /script/div !-- Easy AdSense V7.43 -- pThe post a rel=nofollow href=http://enginx.com/blog/drupal-performance-tip-im-young-die-know-db-engines/Drupal Performance Tip #8211; #8220;I#8217;m too young to die#8221; #8211; know your DB engines/a appeared first on a rel=nofollow href=http://enginx.comLiran Tal#039;s Enginx/a./p

Drupal core announcements: Drupal core security release window on Wednesday, December 17

Mon, 12/15/2014 - 00:15
div class=field field-type-datestamp field-field-start7 div class=field-items div class=field-item odd div class=field-label-inline-first Start:nbsp;/div span class=date-display-single2014-12-17 (All day) America/New_York/span /div /div /div div class=field field-type-text field-field-event-type div class=field-items div class=field-item odd Online meeting (eg. IRC meeting) /div /div /div div class=field field-type-userreference field-field-organizers div class=field-labelOrganizers:nbsp;/div div class=field-items div class=field-item odd a href=/user/14705 title=View user profile.David_Rothstein/a /div /div /div pThe monthly security release window for Drupal 6 and Drupal 7 core will take place on Wednesday, December 17./p pThis does not mean that a Drupal core security release will necessarily take place on that date for either the Drupal 6 or Drupal 7 branches, only that you should prepare to look out for one (and be ready to update your Drupal sites in the event that the Drupal security team decides to make a release)./p pThere will be no bug fix release on this date; the next window for a Drupal core bug fix release is Wednesday, January 7./p pFor more information on Drupal core release windows, see the documentation on a href=http://drupal.org/documentation/version-info#whenrelease timing/a and a href=http://drupal.org/node/1173280security releases/a, and the a href=http://groups.drupal.org/node/260803discussion/a that led to this policy being implemented./p

Drupal Association News: Introducing the Drupal.org User Personas

Sun, 12/14/2014 - 20:15
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpimg class=left width=300px src=https://www.drupal.org/files/persona-distribution.png /br / As part of our mission to reinvent Drupal.org, we’ve been digging deep to understand who uses the website and how. At DrupalCon Austin, we a href=/blog/tvn/drupal.org-user-research-stakeholder-workshop-outcomesbegan the process/a of discovering the personas of users who visit Drupal.org: to do so, we interviewed numerous Drupal.org users and asked questions about how frequently they use Drupal.org, how they use the website, their frustrations with Drupal.org, the things they enjoy about the site, and how we can make it easier for people to learn, use, and connect on Drupal.org./p pOnce we had that data, we set about looking for patterns and common themes. We built categories where we grouped people's similar experiences and frustrations together, and at the end of the process we had come up with five distinct personas that can apply to everyone who visits Drupal.org. These personas detail our users’ familiarity with Drupal software and Drupal community, how they use Drupal.org, how they contribute (or don’t), and more./p pThe a href=https://www.drupal.org/personasfive personas/a that we drew up are based on proficiency in Drupal and the Drupal ecosystem. They are:/p ullistrongNewcomer/strong: This person has heard of Drupal, but has never built a Drupal site and doesn’t know where to start./li listrongLearner/strong: This person knows a bit about Drupal and the general Drupal ecosystem. He or she may have built a Drupal website, but likely has used only a few contrib modules and hasn’t made any customizations./li listrongSkilled/strong: This person understands and is fluent in Drupal-specific terminology, can build a Drupal website themselves using contributed modules, themes or distributions, or with the help of Drupal service providers. She or he has spent a decent amount of time working with Drupal, and is lightly engaged with the community, often not directly, via some sort of liaison./li listrongExpert/strong: This person has a deep understanding of Drupal and the Drupal ecosystem, knows how to build advanced websites with Drupal. Expert typically has been working with Drupal for at least a couple of years, is actively engaged with the community online and via local/national events, and actively contributes back in a variety of ways./li listrongMaster/strong: This person has pervasive knowledge of Drupal and the Drupal ecosystem. He or she knows how to build Drupal websites of great complexity, is deeply engaged in the Drupal community, knows and has access to other Masters. Usually this person has been using Drupal and been around the Drupal community for a long time./li /ulpProficiency-based personas are a new facet through which we can look at our community. It’s important to note that these personas are NOT only about developers. All kinds of roles can be on different levels of this ladder — UX designers, project managers, and business owners can be Experts and Masters, just like developers and themers. Simultaneously, people can have different backgrounds and be experts in other areas, but when it comes to fluency in Drupal and Drupal ecosystem, they would be represented as Newcomers, or Learners, or any of the other personas./p h2How will we use personas?/h2 pUser personas will guide feature prioritization and feature development for Drupal.org, as we improve the site to make it easier for our users to progress from Newcomers to Masters. There are a variety of different ways we can go about it, but since our resources are limited, we will focus on just a few critical areas that will have the biggest impact on the overall user experience. So, to start our work, we’ll be focused on removing barriers and helping our users move more easily from Learners to Skilled. We found that our users have great success moving from Newcomer to Learner today, whereas moving from Learner to Skilled is much more difficult, since so much of the project is focused on doing things “the Drupal way” and learning the processes. Our secondary focus will be on moving users from Skilled to Expert./p pGrowing our pool of Skilled users is crucial, because by doing so we grow the number of people who own and/or build websites using Drupal, thus grow Drupal adoption. On the path from Skilled to Expert is when our users begin to give back by contributing patches, writing documentation, building and sharing modules and themes, helping others in the issue queues, and bringing in their friends. By growing the number of Skilled and Expert users on Drupal.org, we’ll directly grow our community. It’s a win-win./p pBy growing Drupal adoption and growing our community, we directly support our mission and goals as an organization (you can read more about those in our a href=https://assoc.drupal.org/blog/holly.ross.drupal/2015-leadership-plan-budget2015 Leadership plan and budget/a), and that’s why improving Drupal.org is one of our organizational imperatives in the coming year. The a href=https://www.drupal.org/roadmap/2015 Drupal.org roadmap/a outlines the numerous ways we’re planning to do it./p pAs we use personas in our work, you may hear us refer to our “Primary” (Learner and Skilled), “Secondary” (Expert), and “Tertiary” (Master and Newcomer) personas — these distinctions correspond to the order of conversions we look to make easier, not to the users’ importance. Every Drupal.org user is important to us! /p pAs we modify Drupal.org, we’ll be using the personas to help us make the experience for the whole community better. After all, that’s what these personas are — a representation of the entire Drupal community. To help bring our personas to life, we talked to five different community members, each representing one user persona. Over the next few days we’ll share the stories of each person’s unique Drupal journey so that we can see how they got to where they are now. We’d like to say a big thank you to each of our volunteers for sharing their personal stories — as always, they’ve reminded us how fantastic our community really is./p pAt the end of the series, we’ll close it all off with interviews with several prominent community members who will share their views on how personas can be used outside of Drupal.org development./p pWe enjoyed working on the user research project and are excited to share user personas with the Drupal community. As a reminder, you can a href=https://www.drupal.org/personasview and download the full report/a. Take them, use them, go out and make great things!/p /div/div/divdiv class=field field-name-taxonomy-vocabulary-4 field-type-taxonomy-term-reference field-label-abovediv class=field-labelPersonal blog tags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/personal-blog-tags/drupal.org-user-researchdrupal.org user research/a/div/div/div

Friendly Machine: Drupal 8 and Backdrop CMS - A Brief Comparison

Sun, 12/14/2014 - 18:28
pI recently had the opportunity to see Nate Haug deliver a presentation about thenbsp;a href=https://backdropcms.org/Backdrop CMS/a project and it#39;s upcoming 1.0.0 release (Jan. 15). It had been a while since I had taken a look at Backdrop and I came away quite impressed with both its progress and direction./p pMany of you reading this will be familiar with Backdrop, but for those of you who haven#39;t heard of the project, it is the first fork of the Drupal project, and the source of a great deal of controversy and angst in the Drupal community./p pBackdrop has been perceived as a threat by many Drupalists, but I think as we step through the features and approaches of the two projects, those fears will be at least somewhat allayed. My own take is that the two systems seem complementary instead of competitive./p pAs a bit of background for the origin of Backdrop CMS, Nate told the story of his reaction to the massive changes in Drupal 8. He realized that his own business, a href=https://webform.com/Webform.com/a, was going to have major issues with the upgrade path./p pIt was going to take a huge effort to upgrade his site - we#39;re talking many, many months -nbsp;to simply replicate the work he had already done in Drupal 7. He didn#39;t want to throw away the huge investment he had already made in his business and start over. His solution to the problem was forking Drupal to createnbsp;Backdrop CMS./p pAnd then...all hell broke loose./p h2Feature Comparison/h2 pI#39;ll set the controversy behind Backdrop asidenbsp;and get straight into a comparison of the features. Keep in mind, however, I#39;m using the term quot;featuresquot; here a bit loosely. That#39;s because I also want to talk about how Backdrop is managed as well as other differences betweennbsp;the two projects. This list is not exhaustive. It just has some of the things that seemnbsp;to me the most significant or interesting./p h3Target Market/h3 pI know many will squirm uncomfortably when I say this, but the target market for Drupal 8 is large enterprises. By contrast, the target for Backdrop is small to medium size businesses and non-profits - really the original market of the Drupal project. As we go through this list, you#39;ll see how this targeting plays out in some of the decisions the two projects have made./p h3Configuration Management/h3 pThis has been widely touted as strongthe/strong killer feature of Drupal 8. If you#39;ve dreamed of having all the cool a href=https://www.drupal.org/documentation/administer/configconfiguration management/a features in D8 availablenbsp;for Drupal 7, then Backdrop may be temptingnbsp;because that is essentially what itnbsp;offers. Instead of using YAML files to store configuration data, however, Backdrop uses JSON. Otherwise, it#39;s pretty much the same./p h3Theming/h3 pAnother one of the major additions to Drupal 8 is the a href=https://www.drupal.org/node/2186401Twig template engine/a. This is a big plus for many front-end folks and it#39;s something that is not available in Backdrop at this time -nbsp;and I#39;m not sure I would look for it in the a href=https://github.com/backdrop/backdrop-issues/issues/83near future/a. Backdrop currently uses the Drupal 7 PHPTemplate theme engine./p h3Responsive Images/h3 pAs a front-end developer, I have a particular interest in this one. Drupal 8 includes the a href=https://drupalize.me/blog/201405/drupal-8-responsive-what-does-meanResponsive Image/a module, which is essentially a reworking of the a href=https://www.drupal.org/project/picturePicture/a module in D7./p pAt this writing, Backdrop doesn#39;t have a responsive image solution. I asked Nate about this and he#39;s not a fan of the Picture module approach (he favors using a href=http://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-srcset/srcset/a, something that maynbsp;possibly be added in versions 1.1 or 1.2 of Backdrop), so ifnbsp;that is something you require, it will need to be added as either a custom ornbsp;contributed module./p h3Contributed Modules/h3 pSpeaking of contrib, most of you reading this will be familiar with Drupal#39;s massive collection of contributed modules. The contributed modules for Backdrop CMS will be hosted on GitHub and managed similar to how the jQuery project organizes its a href=http://plugins.jquery.com/plugin registry/a. I don#39;t think there have been any ports as of yet (all the energy is going to the 1.0.0 release), so this is pending./p pSome of you may have heard that Drupal 7 modules will be compatible with Backdrop. This isn#39;t true, primarily due to modules needing to be rewritten to support configuration management. Porting a Drupal 7 module should be fairly straightforward, however. Instead of storing config in the variables table, it needs to be in JSON files. Here#39;s a a href=https://twitter.com/backdropcms/status/544009350906277890video/a that will help get you started./p pAs a quick aside, having Backdrop (and eventually the contrib modules)nbsp;a href=https://github.com/backdrop/backdrophosted on GitHub/anbsp;seems like it will be a more familiar and friendly environment for potential project contributors./p h3Project Organization/h3 pThe quot;do-ocracyquot; that is the Drupal project has been a href=https://www.lullabot.com/blog/podcasts/drupalizeme-podcast/52-drupal-community-leadershipmuch discussed/a lately. Nate has organized the a href=https://backdropcms.org/leadershipBackdrop CMS project/a along the same lines as the Project Management Committee of the Apache project. That was very wisenbsp;in my opinion. It bodes well for the project./p h3WYSIWYG/h3 pAnother really nice thing in Drupal 8 is the inclusion of a default WYSIWYG editor. Love them or hate them, virtually every client wants one, so now with D8 you won#39;t have to add one yourself for every project. As of version 1.0.0, Backdrop doesn#39;t have this functionality, but look for it in version 1.1 or 1.2./p pI remember Nate saying something about it being ironic that Backdrop was launching both without Twig or a WYSIWYG sincenbsp;he and Backdrop co-founder Jen Lamptonnbsp;had been instrumental in bringing those to Drupal 8./p pI suppose I should mention that Backdrop minor versions - from 1.0 to 1.1, for example - will occur regularly at an interval of about three or four months. So for the features mentionednbsp;that may be in version 1.1 or 1.2, it means they can be expected in eithernbsp;late spring or late summer./p h3Panels and Views/h3 pHow about Panels and Views in core? Yeah, I like it! And that#39;s what you get with Backdrop. Drupal 8 provides Views in core, but not Panels. It may be a while before Panels is ready for D8, but it may also be a while a href=http://drupalreleasedate.com/before D8 is ready/a,nbsp;so I guessnbsp;that#39;s not a problem./p h3System Requirements and Backwards Compatibility/h3 pIt may seem odd to group these two, but this is one point where the intended audiences (enterprise vs small organizations) are put into stark contrast. For example, Backdrop is intentionally friendly to cheap hosting. Drupal 8, by contrast, is almost certainly going to use more server resources than Drupal 7, empotentially/em causing issues for those on shared hosting plans.nbsp;/p pFor large organizations, the cost of hosting is not a big deal, but for some small organizations, itnbsp;can be. So a solution architected to work well with limited resources may be attractive and also serves to highlight the different approaches between the two projects./p pWith backwards compatibility, we see the same philosophical divergence. Drupal has never focused much onnbsp;backwards compatibility, making it a pain in the ass (and often expensive) to upgrade across major versions. The benefit of that approachnbsp;is that Drupal has been able to innovate without being constrained by past decisions./p pBackdrop, however, places a lot of value on carefully managing change so that existing sites can be upgraded affordably. I would recommend looking at a href=https://backdropcms.org/philosophyBackdrop#39;s philosophy/a, because it#39;s there where you really find the motivations for the project and how it differs (and will differ more in the future) from the Drupal project. From system requirements, to upgrade path, to reaching out to hear voices not found in the issue queue, Backdrop CMS is consistently friendly to the needs of the little guy./p h3Wrap Up/h3 pAgain, this isn#39;t a comprehensive list of all the features or differences between the two systems. There is a href=https://github.com/backdrop/backdrop-issues/issues/378an issue/a on GitHub that might be of some help in learning more as well as this a href=https://www.drupal.org/drupal-8.0/featuresDrupal 8 feature list/a./p pTo me, these two projects don#39;t compete with one another. Sure, some enterprises may use Backdrop and many small organizations may use Drupal 8. But really, the changes in Drupal 8 are a move toward the enterprise and the talk around Drupal 8 has reinforced that message. Having an alternative for small organizations on a budget and with a need to preserve software investments isn#39;t a bad thing./p pYou may politely leave any comments below./p a href=/tags/drupalDrupal/a

Paul Booker: Updating a user role when a class (group) is flagged as finished

Sun, 12/14/2014 - 14:38
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpre class=brush: php function mymodule_training_class_node_form_submit($form, $form_state) { if ($form_state['input']['field_class_is_finished']['und'] == 1) { $nid = $form_state['values']['nid']; $query = db_select('og_membership', 'ogm') -condition('ogm.gid', $nid, '=') -fields('ogm', array('etid')); $result = $query-execute(); foreach ($result as $record) { $uid = $record-etid; _mymodule_training_class_assign_alumni_role($uid); } } } function _mymodule_training_class_assign_alumni_role($uid){ $rid = db_select(users_roles, ur) -fields(ur, array(rid)) -condition('ur.uid', $uid, '=') -execute() -fetchField(); if (empty($rid)) { db_insert('users_roles') -fields(array( 'uid' = $uid, 'rid' = ALUMNI, )) -execute(); } } /prepre class=brush: sql mysql describe field_data_field_class_is_finished - ; +-------------------------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------------------+------------------+------+-----+---------+-------+ | entity_type | varchar(128) | NO | PRI | | | | bundle | varchar(128) | NO | MUL | | | | deleted | tinyint(4) | NO | PRI | 0 | | | entity_id | int(10) unsigned | NO | PRI | NULL | | | revision_id | int(10) unsigned | YES | MUL | NULL | | | language | varchar(32) | NO | PRI | | | | delta | int(10) unsigned | NO | PRI | NULL | | | field_class_is_finished_value | int(11) | YES | MUL | NULL | | +-------------------------------+------------------+------+-----+---------+-------+ 8 rows in set (0.00 sec) mysql mysql describe og_membership; +-------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | type | varchar(255) | NO | | | | | etid | int(10) unsigned | NO | MUL | 0 | | | entity_type | varchar(32) | NO | | | | | gid | int(11) | NO | MUL | NULL | | | group_type | varchar(32) | NO | MUL | | | | state | varchar(255) | YES | | | | | created | int(11) | NO | | 0 | | | field_name | varchar(255) | NO | | | | | language | varchar(12) | NO | | | | +-------------+------------------+------+-----+---------+----------------+ 10 rows in set (0.00 sec) mysql select * from og_membership where gid=1304; +------+----------------------------+-------+-------------+------+------------+-------+------------+--------------+----------+ | id | type | etid | entity_type | gid | group_type | state | created | field_name | language | +------+----------------------------+-------+-------------+------+------------+-------+------------+--------------+----------+ | 8275 | og_membership_type_default | 1 | user | 1304 | node | 1 | 1402485115 | og_user_node | en | | 8276 | og_membership_type_default | 10106 | user | 1304 | node | 1 | 1402485280 | og_user_node | en | | 8277 | og_membership_type_default | 10113 | user | 1304 | node | 1 | 1402485286 | og_user_node | en | | 8278 | og_membership_type_default | 10114 | user | 1304 | node | 1 | 1402485292 | og_user_node | en | +------+----------------------------+-------+-------------+------+------------+-------+------------+--------------+----------+ 4 rows in set (0.00 sec) mysql describe users; +------------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------+------+-----+---------+-------+ | uid | int(10) unsigned | NO | PRI | 0 | | | name | varchar(60) | NO | UNI | | | | pass | varchar(128) | NO | | | | | mail | varchar(254) | YES | MUL | | | | theme | varchar(255) | NO | | | | | signature | varchar(255) | NO | | | | | signature_format | varchar(255) | YES | | NULL | | | created | int(11) | NO | MUL | 0 | | | access | int(11) | NO | MUL | 0 | | | login | int(11) | NO | | 0 | | | status | tinyint(4) | NO | | 0 | | | timezone | varchar(32) | YES | | NULL | | | language | varchar(12) | NO | | | | | picture | int(11) | NO | MUL | 0 | | | init | varchar(254) | YES | | | | | data | longblob | YES | | NULL | | +------------------+------------------+------+-----+---------+-------+ 16 rows in set (0.01 sec) mysql select * from users where uid=10106; +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+------------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | uid | name | pass | mail | theme | signature | signature_format | created | access | login | status | timezone | language | picture | init | data | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+------------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | 10106 | user_authenticated_1 | $S$DBGDqh770IDr09aztKD8Ey8aNGxwx8iiCaYo/rGCcBpa5XzNKnDF | identity+user_authenticated_1@paulbooker.co.uk | | | full_html | 1401792983 | 1401794533 | 0 | 1 | America/New_York | | 0 | identity+user_authenticated_1@paulbooker.co.uk | NULL | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+------------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ 1 row in set (0.00 sec) mysql select * from users where uid=10113; +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | uid | name | pass | mail | theme | signature | signature_format | created | access | login | status | timezone | language | picture | init | data | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | 10113 | user_authenticated_2 | $S$DeG84e0QP/H2h2rGv6cw93krL3CDoQ6CZOzhiSQCZa4OpZOAeP21 | identity+user_authenticated_2@paulbooker.co.uk | | | full_html | 1402485227 | 0 | 0 | 1 | America/New_York | | 0 | identity+user_authenticated_2@paulbooker.co.uk | NULL | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ 1 row in set (0.00 sec) mysql select * from users where uid=10114; +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | uid | name | pass | mail | theme | signature | signature_format | created | access | login | status | timezone | language | picture | init | data | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | 10114 | user_authenticated_3 | $S$D4xWR53hWUcyoZmIuZOLv7K8oasOsPCmqWaQGT.kpMQiX9k7XpfD | identity+user_authenticated_3@paulbooker.co.uk | | | full_html | 1402485256 | 0 | 0 | 1 | America/New_York | | 0 | identity+user_authenticated_3@paulbooker.co.uk | NULL | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ 1 row in set (0.00 sec) mysql select rid from users_roles where uid=10106; +-----+ | rid | +-----+ | 7 | +-----+ 1 row in set (0.00 sec) /pre/div/div/divdiv class=field field-name-field-tags field-type-taxonomy-term-reference field-label-above clearfixh3 class=field-labelTags: /h3ul class=linksli class=taxonomy-term-reference-0a href=/drupal-developer/tags/drupalplanet typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupalplanet/a/li/ul/divdiv class=easy_social_box clearfix horizontal easy_social_lang_und div class=easy_social-widget easy_social-widget-twitter firsta href=http://twitter.com/share class=twitter-share-button data-url=http://www.paulbooker.co.uk/drupal-developer/code-snippet/updating-user-role-when-class-group-flagged-finished data-count=horizontal data-lang = en data-via= data-related=:Check it out! data-text=Updating a user role when a class (group) is flagged as finishedTweet/a/div div class=easy_social-widget easy_social-widget-facebookiframe src=//www.facebook.com/plugins/like.php?locale=en_USamp;href=http%3A//www.paulbooker.co.uk/drupal-developer/code-snippet/updating-user-role-when-class-group-flagged-finishedamp;send=falseamp;layout=button_countamp;width=88amp;show_faces=trueamp;action=likeamp;colorscheme=lightamp;font=amp;height=21amp;appId= scrolling=no frameborder=0 style=border:none; overflow:hidden; width:88px; height:21px; allowTransparency=true/iframe/div div class=easy_social-widget easy_social-widget-googleplusdiv class=g-plusone data-size=medium data-annotation=bubble data-href=http://www.paulbooker.co.uk/drupal-developer/code-snippet/updating-user-role-when-class-group-flagged-finished/div/div div class=easy_social-widget easy_social-widget-linkedin lastscript type=in/share data-url=http://www.paulbooker.co.uk/drupal-developer/code-snippet/updating-user-role-when-class-group-flagged-finished data-counter=right/script/div /div !-- /.easy_social_box --

nielsdefeyter.nl: Setup Entity Translation the right way

Sat, 12/13/2014 - 14:36
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encoded pThis article contains a detailed instruction on how to setup the Entity Translation module for Drupal 7 websites.br / Entity Translation is part of Drupal 8 core and its approach is to translate fields instead of full nodes/entities./p pGoal of this tutorial is to set up a multilingual website that can be navigated in multiple languages by visitors and to enable the content to be easily manageable by editors / cms administrators.br / To get multilingual right, it’s critical that you configure your content-types and fields with care and precision and upfront, because if content is already in your database it is almost impossible to change these configurations.br / So let's go./p /div/div/div

Pixelite: Adding Apple and Android favicons to Drupal

Sat, 12/13/2014 - 01:00
pAs you end up building more and more websites that target mobile devices (e.g. iPhone, iPad, Android, Windows), you need to supply an ever increasing amount of favicons. This process can be complex if done by hand, luckily there is an easy way to introduce these into your Drupal site./p h2 id=what-you-will-needWhat you will need/h2 pBefore we start you will need a high quality icon to begin with, the icon should be:/p ul li260x260px (i.e. square)/li lia PNG with transparency as needed/li lirecognizable when shrunk right done to your browser favicon (so don’t use your entire logo complete with words)./li /ul h2 id=generating-the-faviconsGenerating the favicons/h2 pThis is where the really handy a href=http://realfavicongenerator.net/realfavicongenerator.net/a website comes into play. I have used many other websites that offer similar functionality, but this seems to be the best, and is dead simple to use./p pYou will need to upload the 260x260px PNG file, and also select a hex color for the Windows 8 tile, but this should be straight forward./p pI also opt for the option “I will place favicon files (favicon.ico, apple-touch-icon.png, etc.) at the root of my web site.” as this seems the most sensible place for them anyway./p pWhen you complete the process, you will be able to download a zip file containing a whole bunch of icons and XML files, this is fine, extract them to your docroot for Drupal./p h2 id=adding-the-favicons-to-drupalAdding the favicons to Drupal/h2 pYou now will need to edit your codehtml.tpl.php/code inside your theme, and add the code that the generator provides. The code should resemble something like this:/p div class=highlightprecode class=language-html data-lang=htmlspan class=lineno 1/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;57x57quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-57x57.pngquot;/spanspan class=ntgt;/span span class=lineno 2/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;114x114quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-114x114.pngquot;/spanspan class=ntgt;/span span class=lineno 3/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;72x72quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-72x72.pngquot;/spanspan class=ntgt;/span span class=lineno 4/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;144x144quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-144x144.pngquot;/spanspan class=ntgt;/span span class=lineno 5/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;60x60quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-60x60.pngquot;/spanspan class=ntgt;/span span class=lineno 6/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;120x120quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-120x120.pngquot;/spanspan class=ntgt;/span span class=lineno 7/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;76x76quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-76x76.pngquot;/spanspan class=ntgt;/span span class=lineno 8/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;152x152quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-152x152.pngquot;/spanspan class=ntgt;/span span class=lineno 9/span span class=ntlt;link/span span class=narel=/spanspan class=squot;apple-touch-iconquot;/span span class=nasizes=/spanspan class=squot;180x180quot;/span span class=nahref=/spanspan class=squot;/apple-touch-icon-180x180.pngquot;/spanspan class=ntgt;/span span class=lineno10/span span class=ntlt;link/span span class=narel=/spanspan class=squot;iconquot;/span span class=natype=/spanspan class=squot;image/pngquot;/span span class=nahref=/spanspan class=squot;/favicon-192x192.pngquot;/span span class=nasizes=/spanspan class=squot;192x192quot;/spanspan class=ntgt;/span span class=lineno11/span span class=ntlt;link/span span class=narel=/spanspan class=squot;iconquot;/span span class=natype=/spanspan class=squot;image/pngquot;/span span class=nahref=/spanspan class=squot;/favicon-160x160.pngquot;/span span class=nasizes=/spanspan class=squot;160x160quot;/spanspan class=ntgt;/span span class=lineno12/span span class=ntlt;link/span span class=narel=/spanspan class=squot;iconquot;/span span class=natype=/spanspan class=squot;image/pngquot;/span span class=nahref=/spanspan class=squot;/favicon-96x96.pngquot;/span span class=nasizes=/spanspan class=squot;96x96quot;/spanspan class=ntgt;/span span class=lineno13/span span class=ntlt;link/span span class=narel=/spanspan class=squot;iconquot;/span span class=natype=/spanspan class=squot;image/pngquot;/span span class=nahref=/spanspan class=squot;/favicon-16x16.pngquot;/span span class=nasizes=/spanspan class=squot;16x16quot;/spanspan class=ntgt;/span span class=lineno14/span span class=ntlt;link/span span class=narel=/spanspan class=squot;iconquot;/span span class=natype=/spanspan class=squot;image/pngquot;/span span class=nahref=/spanspan class=squot;/favicon-32x32.pngquot;/span span class=nasizes=/spanspan class=squot;32x32quot;/spanspan class=ntgt;/span span class=lineno15/span span class=ntlt;meta/span span class=naname=/spanspan class=squot;msapplication-TileColorquot;/span span class=nacontent=/spanspan class=squot;#b91d47quot;/spanspan class=ntgt;/span span class=lineno16/span span class=ntlt;meta/span span class=naname=/spanspan class=squot;msapplication-TileImagequot;/span span class=nacontent=/spanspan class=squot;/mstile-144x144.pngquot;/spanspan class=ntgt;/span/code/pre/div pYou will notice though that Drupal likes to place it’s default favicon into the codelt;headgt;/code section of the page, we need to remove this in order for it not to mess up the above code you inserted./p div class=highlightprecode class=language-html data-lang=htmlspan class=ntlt;link/span span class=narel=/spanspan class=squot;shortcut iconquot;/span span class=nahref=/spanspan class=squot;http://[YOURSITE]/misc/favicon.icoquot;/span span class=natype=/spanspan class=squot;image/vnd.microsoft.iconquot;/span span class=nt/gt;/span/code/pre/div pThe following code below can be inserted into your codetemplate.php/code file for your theme to remove the default favicon from Drupal:/p div class=highlightprecode class=language-php data-lang=phpspan class=lineno 1/span span class=cplt;?php/span span class=lineno 2/span span class=sd/**/span span class=lineno 3/span span class=sd * Remove the unneeded favicon from the head section./span span class=lineno 4/span span class=sd *//span span class=lineno 5/span span class=kfunction/span span class=nfYOURTHEME_html_head_alter/spanspan class=p(/spanspan class=oamp;/spanspan class=nv$head_elements/spanspan class=p)/span span class=p{/span span class=lineno 6/span span class=kforeach/span span class=p(/spanspan class=nv$head_elements/span span class=kas/span span class=nv$key/span span class=o=gt;/span span class=nv$element/spanspan class=p)/span span class=p{/span span class=lineno 7/span span class=kif/span span class=p(/spanspan class=o!/spanspan class=kempty/spanspan class=p(/spanspan class=nv$element/spanspan class=p[/spanspan class=s1#39;#attributes#39;/spanspan class=p]))/span span class=p{/span span class=lineno 8/span span class=kif/span span class=p(/spanspan class=nbarray_key_exists/spanspan class=p(/spanspan class=s1#39;href#39;/spanspan class=p,/span span class=nv$element/spanspan class=p[/spanspan class=s1#39;#attributes#39;/spanspan class=p]))/span span class=p{/span span class=lineno 9/span span class=kif/span span class=p(/spanspan class=nbstrpos/spanspan class=p(/spanspan class=nv$element/spanspan class=p[/spanspan class=s1#39;#attributes#39;/spanspan class=p][/spanspan class=s1#39;href#39;/spanspan class=p],/span span class=s1#39;misc/favicon.ico#39;/spanspan class=p)/span span class=ogt;/span span class=mi0/spanspan class=p)/span span class=p{/span span class=lineno10/span span class=nbunset/spanspan class=p(/spanspan class=nv$head_elements/spanspan class=p[/spanspan class=nv$key/spanspan class=p]);/span span class=lineno11/span span class=p}/span span class=lineno12/span span class=p}/span span class=lineno13/span span class=p}/span span class=lineno14/span span class=p}/span span class=lineno15/span span class=p}/span span class=lineno16/span span class=cp?gt;/spanspan class=x/span/code/pre/div pThere you have it all done./p h2 id=extra-for-experts---googles-theme-color-meta-tagExtra for experts - Google’s theme-color meta tag/h2 pa href=http://updates.html5rocks.com/2014/11/Support-for-theme-color-in-Chrome-39-for-AndroidGoogle recently announced/a that from Chrome 39 onwards on Android Lollipop (5.0+), a new meta tag will be supported/p div class=highlightprecode class=language-html data-lang=htmlspan class=ntlt;meta/span span class=naname=/spanspan class=squot;theme-colorquot;/span span class=nacontent=/spanspan class=squot;#b91d47quot;/span span class=nt/gt;/span/code/pre/div pThis is what your site’s title bar now looks like (instead of boring and grey)./p pimg src=http://www.pixelite.co.nz/img/favicon-theme-color.png alt=The theme-color meta tag in use on www.maoritelevision.com class=img-responsive img-thumbnail style=max-height:600px; //p pThis meta tag can be added to your codehtml.tpl.php/code file as above./p h2 id=commentsComments/h2 pLet me know if this has helped you, and also if you have any other tips and tricks when it comes to favicons on your mobile devices./p

Mediacurrent: Protect thyself! Don#039;t send TESTING emails to REAL users

Fri, 12/12/2014 - 22:05
img typeof=foaf:Image src=http://d1l4od7sxc8nwf.cloudfront.net/sites/default/files/styles/thumb_blog_spotlight/public/dont-send-testing-emails3-01.png?itok=X7DHYpXl width=200 height=152 / pHave you ever accidentally triggered emails to real users while working in a development environment? Or how about accidentally pushed data to a live third party service from a development environment?/p

CiviCRM Blog: Drupal Views in CiviCRM Dashlets

Fri, 12/12/2014 - 19:58
div class=field field-name-body field-type-text-with-summary field-label-hidden div class=field-item even property=content:encodedp dir=ltr id=docs-internal-guid-13ccb544-3fcd-ff6b-cdb2-d15fbfe436a0Here ata href=https://skvare.com Skvare/a, we strive to make Drupal and CiviCRM work as one to accomplish goals in a way that is simple and intuitive. Continuing our work in Drupal/CiviCRM integrations, we’ve cooked something new up for you all. We would now like to take this opportunity to introduce Views in Dashlets./p h3 dir=ltr What is Views in Dashlets?/h3 p dir=ltrViews in Dashlets is a Drupal module that allows one to create a dashlet containing a Drupal View. That is right, in addition to CiviCRM reports you can use the power of Drupal Views to create a customizable experience. This opens grand new opportunities to use our imagination and drive to strengthen the bond between Drupal and CiviCRM. A majority of the functionality of Views is currently at your fingertips, with further enhancements on the horizon./p h3 dir=ltr How did we get to this point?/h3 p dir=ltrWe had the idea of rendering a View in a dashlet, but that’s all it was. An idea. We researched extensively trying to find out how exactly a dashlet works. Curiously, I created a forum post where I received a small piece of knowledge and took our first big step in creating this module. After that, it was a matter of development of ideas. Thank you totten for the quick and helpful response./p h3 dir=ltr Basic Instructions/h3 p dir=ltrIt is very simple to create a dashlet. All you have to do is:/p ol dir=ltrli Open/create your view and add a new “CiviCRM Dashlet” display/li li Configure the display to your liking and save/li li Visit a href=http://www.yourdomain.com/civicrmwww.yourdomain.com/civicrm/a and click “Configure Dashboard”/li li Add your created dashlet to a column and click “Done”/li /olp dir=ltrAnd now your brand new dashlet is on your dashboard!/p h3 dir=ltr Why Views in Dashlets?/h3 ul dir=ltrli Simplicity -- Using CiviCRM reports to create dashlets is a great feature of CiviCRM, but new reports require PHP and SQL coding skills. Some organizations have staff with these skills, but many do not. Many more people do have the ability to use site-building techniques to create Views through its powerful UI./li li Customize - Customize your view to render your CiviCRM or Drupal data just how YOU want it. Quickly add sorts, filters, fields, relationships, no results behaviors, and rewrite field output functionality./li li Style - Make it pretty! Use View’s built in style features to wrap fields in html elements and add classes to fields for css styling./li li Content -- More than just data, place content on the dashboard. Display a node, add links to documentation, or list your latest Drupal Commerce orders. If it can be Viewed, it can be on the Dashboard./li li Combine - Use in combination with the a href=https://www.drupal.org/project/civicrm_entityCiviCRM Entity/a and a href=https://www.drupal.org/project/entityreferenceEntity Reference/a modules to create rich data structure displays combining Drupal content with CiviCRM data. Also, there are tons of great modules that expand Views functionality and most will work with Views in Dashlets./li li Reuse - Use the same view for a Drupal page and CiviCRM dashlet./li li Much more that we have not thought of!/li /ulh3 dir=ltr What can I do to help?/h3 p dir=ltrIf you would like to join the journey of Views in Dashlets then go ahead and create an issue. This issue could be a bug report or even a feature request. Views in Dashlets is a work in progress, but there is ALOT you can do with it already. We would be very grateful for your feedback. This is a team effort, and our community is the number one team./p p dir=ltrFor more information, visit the project page at a href=https://www.drupal.org/sandbox/brandonferrell/2389543https://www.drupal.org/sandbox/brandonferrell/2389543/a/p p dir=ltrimg alt= height=436 src=http://i.imgur.com/xibBoQO.png width=539 /img alt= height=426 src=http://i.imgur.com/P1O4Xye.png width=745 //p /div /div div class=field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-hidden clearfix ul class=field-items li class=field-item even a href=/category/civicrm-blog-categories/civicrm typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=CiviCRM/a /li li class=field-item odd a href=/category/civicrm-blog-categories/drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal/a /li li class=field-item even a href=/civicrm-blog-categories/release typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Release/a /li /ul /div

Drupal Watchdog: Migrate API

Fri, 12/12/2014 - 19:29
div class=field field--article-edit-printtype field-type-list-text field-label-hidden field--rss Article /div div class=field field--article-body field-type-text-long field-label-hidden field--rss pimg src=http://cdn1.drupalwatchdog.com/sites/default/files/images/web/4.1-migrate-api.jpg alt=Magnified digits width=50% class=img-responsive img-thumbnail margin-left align=right //p p The migrate API works with emplugins/em and stores the configuration for those plugins in a emconfiguration entity/em. There are a number of plugin types offered: emsource/em, emprocess/em, and emdestination/em are the most important. Source merely provides an iterator and identifiers, and most of the time the destination plugins provided by core are adequate, so this article will focus on process plugins./p h3Process plugins/h3 p Nothing gets into the destination unless it is specified under the top level span class=geshifiltercode class=php geshifilter-phpprocess/code/span key in the configuration entity. Each key under span class=geshifiltercode class=php geshifilter-phpprocess/code/span is a destination property and the value of it is a emprocess pipeline/em. Each “stage” of this pipeline is a plugin which receives the output of the previous stage as input, does some transformation on it, and produces the new value of the pipeline./p p There are a few plugins which indeed only use the pipeline value as input – for example, the machine name plugin transliterates the input (presumably a human name) and replaces non-alphanumeric characters with underscores. However, if that was all plugins could do they wouldn’t be too useful. Instead, every plugin receives the whole row and the name of the destination property currently being created./p p Each stage in the process pipeline is described by an array, where the span class=geshifiltercode class=php geshifilter-phpplugin/code/span key is mandatory and the rest is just the plugin configuration. For example:/p pre process: vid: - plugin: machine_name source: name - plugin: dedupe_entity entity_type: taxonomy_vocabulary field: vid /prep The above mentioned machine name transformation is run on span class=geshifiltercode class=php geshifilter-phpname/code/span and then the entity deduplication plugin adds a numeric postfix ensuring the vid field of the span class=geshifiltercode class=php geshifilter-phptaxonomy_vocabulary/code/span entity is unique. That is the canonical format of the process pipeline./p /div