Drupal Planet

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

Acquia: Working with simplytest.me and Drupal.org

15 hours 14 min ago
div class=form-item form-type-item labelLanguage /label Undefined /div div class=field field-name-body field-type-text-with-summary field-label-hidden div class=field-items div property=content:encoded class=field-item evenpstrongTips and tricks for getting the most out of simplytest.me –/strong Patrick Drotleff is a passionate contributor to the Drupal project whose work – including a href=http://simplytest.me/simplytest.me/a, a href=http://pareview.sh/pareview.sh/a, and the tongue-in-cheek a href=https://github.com/patrickd-/BreakingHeadBreakingHead/a card game – often centers around building tools that help others contribute to Drupal. Within minutes of Drupal 8 beta being announced at DrupalCon Amsterdam, I saw a tweet saying it was available to try out on simplytest.me. Though I had used the service before, I wanted to know how it actually worked and Patrick was kind enough to agree to show it off here on jam's Drupal Camp./p /div /div /div figure class=field-item even rel= resource=https://www.acquia.com/sites/default/files/jdc_simplytestme_image_0.jpg class=field-item even div id=styles-2 class=styles styles-field-image styles-style-scale_width_280 styles-container-image styles-preset-scale_width_280 img typeof=foaf:Image src=https://www.acquia.com/sites/default/files/styles/scale_width_280/public/jdc_simplytestme_image_0.jpg?itok=qm5qOgH8 alt= title= //div !-- render the title tag as caption -- /figure span property=dc:title content=Working with simplytest.me and Drupal.org class=rdf-meta element-hidden/span
Categories: Drupal Feeds

lakshminp.com: The Drupal 8 plugin system - part 3

16 hours 43 min ago
pCheckout a href='http://www.lakshminp.com/the-drupal-8-plugin-system-part-1/' part 1/a and a href='http://www.lakshminp.com/the-drupal-8-plugin-system-part-2/' part 2/a for understanding the concept of plugins. br / In this installment, we will be /p ol liImplementing a new plugin from existing plugin types. /li liImplementing a new plugin emtype/em using the annotation based discovery mechanism./li /ol pAs an exercise, let's first construct an imaginary scenario where the user of your Drupal site wants choose what they want for breakfast from a list of breakfast menu items. To add a dash of variety, all the breakfast items in the code are of South Indian culinary. You can checkout the a href='https://github.com/badri/breakfast' code/a and suit yourself, change the breakfast items etc./p pFor this exercise, checkout the module code first and enable it./p precode class=language-bash$ git clone git@github.com:badri/breakfast.git /code/pre pIn order to select their breakfast item of choice, the user needs to be presented with a list of choices in their profile. The lame way is to create a list field in the user profile and add all the breakfast choices. This offers limited functionality and is not pluggable. We can do better than that. So, let's ahead and create a custom field called breakfast choice./p pThis functionality is there in the codecustom-field-no-plugin/code tag of the code you previously checked out. You can switch to that tag by:/p precode class=language-bash$ git checkout -f custom-field-no-plugin /code/pre pAfter you enable the breakfast module, go to the user profile and create a new field of type breakfast choice. As the tag says, we haven't created any custom plugin type yet. But we do create a new plugin from the existing plugin types for our custom field. In fact, we create 3 new plugins(one each for the field type, field formatter and field widget). Our directory structure looks like this:/p pimg src='http://www.lakshminp.com/content/images/2015/Mar/custom-field.png' alt=Custom field //p pAll the breakfast menu items come from a single location, your custom field widget, the codeBreakfastWidget.php/code file./p precode class=language-php public function formElement(FieldItemListInterface $items, $delta, array $element, array amp;$form, FormStateInterface $form_state) { $value = isset($items[$delta]-gt;value) ? $items[$delta]-gt;value : ''; $options = array( 'idly' =gt; 'Idly', 'dosa' =gt; 'Dosa', 'uppuma' =gt; 'Uppuma', ); $element = array( '#type' =gt; 'select', '#options' =gt; $options, '#default_value' =gt; $value, '#multiple' =gt; FALSE, ); return array('value' =gt; $element); } /code/pre pThough it works, this is not a good design for 2 reasons:/p ol liYou are hardcoding in the presentation layer. Widgets define the way you present the input element in a form. You can't define your data there. /li liIt is not pluggable. Other developers have to open codeBreakfastWidget.php/code to add new Breakfast items. /li liIt cannot be extended. What if I want to add additional properties to my breakfast items, like images, ingradients or price? I cannot do this in the current setup./li /ol pWe will address problems 1 and 2 for now. i.e., we add the ability to create new breakfast items outside of the Breakfast Widget file. We make breakfast items pluggable. Other modules can add new breakfast items it were a plugin, which is exactly what we do next./p pTo get the plugin version of the module, do:/p precode class=language-bash$ git checkout -f plugin-default-annotation /code/pre pNow, our directory structure looks like this:/p pimg src='http://www.lakshminp.com/content/images/2015/Mar/default-annotation-plugin.png' alt=New plugin type structure //p pThe codeBreakfastPluginManager/code is, as the name says, a service used to manage various breakfast plugins across modules. br / The plugin manager's constructor class deserves some explanation./p precode class=language-php public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, LanguageManager $language_manager, ModuleHandlerInterface $module_handler) { $subdir = 'Plugin/Breakfast'; /code/pre pThe code$subdir/code tells the plugin manager where to look for Breakfast plugins in a module./p precode class=language-php $plugin_definition_annotation_name = 'Drupal\Component\Annotation\Plugin'; /code/pre pThe code$plugin_definition_annotation_name/code is the namespaced name of the annotation class which is used to a href='http://www.lakshminp.com/annotations-in-drupal-8/' annotate/a all Breakfast plugins. codePlugin/code is the default annotation. We can define custom annotations as well, which will be the subject of the next installment in this series./p precode class=language-php parent::__construct($subdir, $namespaces, $module_handler, $plugin_definition_annotation_name); $this-gt;alterInfo('breakfast_info'); $this-gt;setCacheBackend($cache_backend, 'breakfast_choice'); } /code/pre pcodealterInfo/code tells us that this plugin definition can be altered by implementing codehook_breakfast_info_alter/code./p pPlugin definitions are cached, which is why we need to run codedrush cr/code(the equivalent of codedrush cc all/code in D8) every time we alter the plugin definitions. The codesetCacheBackend/code defines the cache backend for our plugin. In the current context, we are not customizing it too much./p pAnother major change is the new file codebreakfast.services.yml/code. It contains metadata about the breakfast plugin manager service which we discussed above./p precode class=language-yamlservices: plugin.manager.breakfast: class: Drupal\breakfast\BreakfastPluginManager arguments: ['@container.namespaces', '@cache.default', '@language_manager', '@module_handler'] /code/pre pOne or more a href='https://www.drupal.org/node/2133171' services/a can be defined in the services.yml file. Each entry contains a machine name of the service, the class that implements the service and dependencies(if any) can be a href='http://www.webomelette.com/drupal-8-dependency-injection-service-container-and-all-jazz' passed as arguments/a. The code@/code prefix for the arguments indicates that the corresponding argument is in itself a service./p pThe field type we added earlier hasn't changed, but the widget has been revamped. We no longer hardcode any breakfast items. Instead, we dynamically pull all plugin instances of type Breakfast./p pHere's how:/p precode class=language-php $options = array(); $breakfast_items = \Drupal::service('plugin.manager.breakfast')-gt;getDefinitions(); foreach($breakfast_items as $plugin_id =gt; $breakfast_item) { $options[$plugin_id] = $breakfast_item['label']; } /code/pre pAny module can now define a new breakfast menu item and expect it to show up in the user profile's breakfast field dropdown. We've created 3 breakfast items in our module to illustrate this. Let's pick an example breakfast plugin, my favorite. Masala dosa./p pimg src='http://www.lakshminp.com/content/images/2015/Mar/263672034_e00e25c3a6_z.jpg' alt=masala dosa plugin / a href='https://www.flickr.com/photos/cell105/263672034/in/photolist-piovy-5GfsKV-5rouGz-7Mb7Qa-ktQrE-dfiYJR-hRCQM-hRDBY-hRDfQ-hRDr9-hRD4z-hRDQf-FSfDP-FSdjJ-aHQF9a-5kjGYt-5koZQS-FWBbS-FWBBN-FWBpA-8YE421-nkNL1h-nkNKho-9hHLJZ-fpiWqc-phmDEr-6kAts1-kjPYmi-bBfvho-bPQ3Sz-gYHUdA-3rBMTL-mnvWj1-87KkuP-dXRbkX-7dSKpw-2THD6E-9KSUe2-e2Qp2Q-4NCmE6-5MR3fq-5PD1Pt-5PD16V-pyP7jL-5MLNuV-g5acaM-94FkHt-ae9MmY-ae6YK2-oa6Yij' Image courtesy/a/p perr, I meant:/p precode class=language-php/** * Adds Masala Dosa to your Breakfast menu. * * * @Plugin( * id = masala_dosa, * label = @Translation(Masala Dosa) * ) */ class MasalaDosa extends PluginBase { // Nothing here yet. Just a placeholder class for a plugin } /code/pre pNothing fancy there. Just a placeholder class and some metadata in the code@Plugin/code annotation./p pPhew! It took more time to add a masala dosa plugin that to make a masala dosa. Each breakfast item being a unique plugin instance sounds a bit like an overkill. We will address this and problem #3 detailed above(plugins having different properties like picture) in the next post!/p
Categories: Drupal Feeds

Drupal @ Penn State: Memory profiling in hooks

Tue, 03/03/2015 - 3:19pm
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedh3To start../h3 pThis tutorial involves hacking core. If you aren't comfortable with doing that, you're probably in the wrong place :).  I created a dropbucket.org drop called stronga href=http://dropbucket.org/node/2036Memory profiling in hooks /a/strongwhich has all the code details in case you want to dig in yourself.  You'll need to modify includes/module.inc and also have a href=http://drupal.org/project/develdevel module/a enabled for this to work./p/div/div/div
Categories: Drupal Feeds

Mediacurrent: Premature Optimization is (still) Bad

Tue, 03/03/2015 - 3:13pm
img typeof=foaf:Image src=http://d1l4od7sxc8nwf.cloudfront.net/sites/default/files/styles/thumb_blog_spotlight/public/premature-optimization-bad-01.png?itok=-oxJ_cWd width=200 height=171 alt=Premature Optimization is Still Bad title=Premature Optimization is Still Bad / h3Knuth is a pretty smart person/h3 pA long time ago, in a galaxy right here, Donald Knuth wrote “premature optimization is the root of all evil”. This was in his 1974 paper “Structured Programming With Go To Statements”, yet this issue is still with us in various forms./p
Categories: Drupal Feeds

Urban Insight: What to visit while at the Los Angeles DrupalCon

Tue, 03/03/2015 - 3:07pm
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpSo you are planning to visit LA for a href=https://events.drupal.org/losangeles2015/ target=_blankDrupalCon/a? Want to site see or enjoy local flavors but not sure where to focus your efforts? I polled the team at Urban Insight, and we collected ected a few of our own favorites that will, hopefully, become some of your favorites as well./p h2#10 LA Metro/h2 pa href=http://www.metro.net/http://www.metro.net//a/p/div/div/div
Categories: Drupal Feeds

Red Crackle: Using Views Exposed Filter In Drupal 8

Tue, 03/03/2015 - 1:05pm
This article takes you through the steps required to use Views Exposed Filter in Drupal 8. Exposed filters provide users with the freedom to sort content on their own. This feature is beneficial, in particular, for online stores where customers seek to filter products of their choice. The filter could be based on price, brand or size. In this article, a new view is created, a path provided and the display format altered to showcase content titles. The Filter Criteria is then configured. The screenshots accompanying this article will provide you with clear instructions in setting up exposed filters in your application.
Categories: Drupal Feeds

Open Source Training: How Do I Get a Job in Drupal?

Tue, 03/03/2015 - 11:59am
div class=ost-intro-imageimg src=https://www.ostraining.com/images/drupal/mike-anello.jpg alt=mike-anello width=200 height=200 //divpAre you looking for a job? Have you considered working in the Drupal world? pSeveral OSTraining members have. They wondered about the skills they would need and the income level they could expect./p pTo give you an overview of what it takes to make a living in the Drupal world, we spoke with Mike Anello. Mike is a long-time Drupal contributor, based near us in Orlando, Florida. If you've ever seen a Dries keynote address at a Drupal, Mike is often the person asking Dries questions at the end./p pOne of my key takeaways from talking with Mike -nbsp; the Drupal jobs are out there, but companies are now expecting applicants to bring more than emjust/em Drupal knowledge./pimg src=//feeds.feedburner.com/~r/ostrainingdrupal/~4/Rrgn2J4AsWM height=1 width=1 alt=/
Categories: Drupal Feeds

Drupal Association News: Thank you for a great Global Training Day

Tue, 03/03/2015 - 11:31am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpimg alt=GTD logo class=left src=https://assoc.drupal.org/files/da-global-training-days-rgb.png style=width: 240px; height: 68px; /As many of you know, Global Training Day was this weekend, and it was a great one. We had 29 trainings in 20 countries around the world, showing once again that our community is second to none in passion and enthusiasm./p pIt's so exciting and humbling to help make GTD a reality. Watching the tweets pour in from around the world is truly awe-inspiring. Here's a selection of a few of our favorites from this year./p pFor those of you who didn't participate this time around but want to join in next quarter, a href=https://www.drupal.org/learn-drupal target=_blankcheck our Global Training Day page/a and sign up to host a training in your community. Again, thank you to everyone who helped make this GTD a reality./p blockquote class=twitter-tweet lang=en xml:lang=en p150 new Drupalistas in the last a href=https://twitter.com/hashtag/Drupal?src=hash#Drupal/a Global Trainind Day in Barcelona a href=http://t.co/7nmqhtVPxChttp://t.co/7nmqhtVPxC/a . Thanks a href=https://twitter.com/DrupalAssoc@DrupalAssoc/a a href=https://twitter.com/lsheydrupal@lsheydrupal/a !/p — Atenea tech (@ateneatech) a href=https://twitter.com/ateneatech/status/572436303494709248March 2, 2015/a/blockquote script async= src=//platform.twitter.com/widgets.js charset=utf-8/scriptp /p blockquote class=twitter-tweet lang=en xml:lang=en pAfter 8 hours of a href=https://twitter.com/hashtag/Drupal_Global_Training?src=hash#Drupal_Global_Training/a Days at a href=https://twitter.com/hashtag/EPI?src=hash#EPI/a Sousse a href=https://twitter.com/hashtag/Tunisia?src=hash#Tunisia/a a href=https://twitter.com/hashtag/Drupal?src=hash#Drupal/a a href=https://twitter.com/hashtag/DrupalGTD?src=hash#DrupalGTD/a a href=https://twitter.com/lsheydrupal@lsheydrupal/a a href=http://t.co/eNhx0g5Bihpic.twitter.com/eNhx0g5Bih/a/p — Ward Marzouki (@digitives4ward) a href=https://twitter.com/digitives4ward/status/571704627986616320February 28, 2015/a/blockquote script async= src=//platform.twitter.com/widgets.js charset=utf-8/scriptp /p p /p blockquote class=twitter-tweet lang=en xml:lang=en pDrupal Global Training Day concludes at a href=https://twitter.com/drupakpakistan@drupakpakistan/a a href=https://twitter.com/hashtag/Peshawar?src=hash#Peshawar/a a href=https://twitter.com/hashtag/Pakistan?src=hash#Pakistan/a a href=https://twitter.com/hashtag/DrupalGTD?src=hash#DrupalGTD/a a href=https://twitter.com/lsheydrupal@lsheydrupal/a a href=http://t.co/6oS9T1siFFpic.twitter.com/6oS9T1siFF/a/p — Drupak (@drupakpakistan) a href=https://twitter.com/drupakpakistan/status/571657703887540224February 28, 2015/a/blockquote script async= src=//platform.twitter.com/widgets.js charset=utf-8/scriptp /p /div/div/div
Categories: Drupal Feeds

Another Drop in the Drupal Sea: Drupal + Udemy = Drudemy. Come join in the fun!

Tue, 03/03/2015 - 10:35am
pI have settled on using Udemy as my exclusive platform for delivering Drupal education. I'm so excited to start taking advantage of all the great tools the platform offers and I am laying the groundwork for engaging extensively with my students. I've got four challenges I'll be issuing to my students during the month of March, with a prize for each one as well as a Grand Prize at the end. It would be great to have you play along!/p pa href=https://www.udemy.com/getting-started-with-drupal-for-total-beginners/?couponCode=anotherDropPilotJoin for free!/a/p
Categories: Drupal Feeds

Promet Source: Developing the Promet Way: Part III

Tue, 03/03/2015 - 10:30am
p /p pPart I highlighted the challenges of deployments, defined good deployments, and introduced the tools for developing the Promet way. If you haven’t already, you should probably a href=https://www.prometsource.com/blog/developing-promet-way-part-iread Part I now/a./p
Categories: Drupal Feeds

Drupal.org Featured Case Studies: The Roman Baths

Tue, 03/03/2015 - 10:01am
div class=field field-name-field-mainimage field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg src=https://www.drupal.org/files/styles/case588x306/public/ABOUT.jpg?itok=I_PkFWEw width=588 height=306 alt=The Roman Baths //div/div/divdiv class=field field-name-field-link field-type-link-field field-label-abovediv class=field-labelCompleted Drupal site or project URL:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=http://www.romanbaths.co.ukhttp://www.romanbaths.co.uk/a/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpThe Roman Baths is the primary attraction of the six Bath amp; North East Somerset Council Heritage Services; the Roman Baths, the Fashion Museum, the Victoria Art Gallery, Bath Venues, the Bath Record Office and the World Heritage Site./p pThe Heritage Services team wished to migrate all six of the websites from Immediacy to Drupal, and included a full re-design as part of the project. The contract was won in open tender by a href=http://www.microserveltd.co.uk target=_BLANKMicroserve/a and a href=http://torchbox.com target=_BLANKTorchbox/a against stiff competition nationwide./p pTorchbox carried out the Design and UX Phase before passing responsibilities to Microserve for the Development Phase. By working to each organization's individual strengths, Microserve and Torchbox were able to provide an efficient and cost effective partnership whilst still keeping a collaborative and concise communication channel between all three parties throughout the project./p /div/div/divdiv class=field field-name-field-module field-type-node-reference field-label-abovediv class=field-labelKey modules/theme/distribution used:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/project/feedsFeeds/a/divdiv class=field-item odda href=/project/sassonSasson/a/divdiv class=field-item evena href=/project/adminimal_themeAdminimal - Responsive Administration Theme/a/divdiv class=field-item odda href=/project/ckeditorCKEditor - WYSIWYG HTML editor/a/divdiv class=field-item evena href=/project/draggableviewsDraggableViews/a/divdiv class=field-item odda href=/project/gathercontentGatherContent/a/divdiv class=field-item evena href=/project/honeypotHoneypot/a/divdiv class=field-item odda href=/project/styleguideStyle Guide/a/divdiv class=field-item evena href=/project/featuresFeatures/a/divdiv class=field-item odda href=/project/eckEntity Construction Kit (ECK)/a/divdiv class=field-item evena href=/project/flexsliderFlex Slider/a/div/div/divdiv class=field field-name-field-developed-org field-type-node-reference field-label-abovediv class=field-labelOrganizations involved:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/marketplace/microserveMicroserve/a/divdiv class=field-item odda href=/node/2330965Torchbox/a/div/div/div
Categories: Drupal Feeds

Cheppers blog: Rebuilding the Cheppers website with Drupal 8: The Age of Innocence

Tue, 03/03/2015 - 9:50am
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=https://cheppers.com/sites/default/files/styles/blog_promoted-image/public/blog_pic-d8.png?itok=b5xxEZPYa href=/blog/rebuilding-the-cheppers-website-with-drupal-8-the-age-of-innocenceimg typeof=foaf:Image src=https://cheppers.com/sites/default/files/styles/blog_promoted-image/public/blog_pic-d8.png?itok=b5xxEZPY 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:headlinepAfter a lively meeting, the Cheppers team decided to make our new website with Drupal 8. You can a href=https://cheppers.com/blog/rebuilding-the-cheppers-website-with-drupal-8-brave-new-world target=_blankread about how and why we made this decision in the previous post/a. The following series of posts will document our progress, share the important lessons we learn, and highlight any mistakes we make in order to help others as they set out to use Drupal 8. This post will focus on our initial work for this project./p /div/div/divspan rel=schema:url resource=/blog/rebuilding-the-cheppers-website-with-drupal-8-the-age-of-innocence class=rdf-meta element-hidden/spanspan property=schema:name content=Rebuilding the Cheppers website with Drupal 8: The Age of Innocence class=rdf-meta element-hidden/span
Categories: Drupal Feeds

Modules Unraveled: Free Command Line Basics Series is Complete!

Tue, 03/03/2015 - 8:59am
div class=field field--name-field-image field--type-image field--label-hiddendiv class=field__itemsdiv class=field__item even rel=og:image rdfs:seeAlso resource=http://modulesunraveled.com/sites/default/files/styles/large/public/field/image/CommandLine00.png?itok=dD5B2zQiimg typeof=foaf:Image src=http://modulesunraveled.com/sites/default/files/styles/large/public/field/image/CommandLine00.png?itok=dD5B2zQi width=480 height=270 alt=Command Line for Beginners - Introduction //div/div/divspan class=submitted-by/spandiv class=field field--name-field-embed field--type-text-long field--label-hiddendiv class=field__itemsdiv class=field__item evendiv id=wistia_jgegrillms class=wistia_embed style=width:1040px;height:585px; div itemprop=video itemscope= itemtype=http://schema.org/VideoObjectmeta itemprop=name content=Command Line 00 - Introduction /meta itemprop=duration content=PT1M38S /meta itemprop=thumbnailUrl content=https://embed-ssl.wistia.com/deliveries/9ab48e1c64a91100a745cab8a1ed5e4efa312dc2.bin /meta itemprop=contentURL content=https://embed-ssl.wistia.com/deliveries/cee1f8b7f0ca4d110fbe31bcfc412d9e15d01463.bin /meta itemprop=embedURL content=https://embed-ssl.wistia.com/flash/embed_player_v2.0.swf?2015-02-27amp;autoPlay=falseamp;banner=falseamp;controlsVisibleOnLoad=trueamp;customColor=252625amp;endVideoBehavior=defaultamp;fullscreenDisabled=trueamp;hdUrl%5B2pass%5D=trueamp;hdUrl%5Bext%5D=flvamp;hdUrl%5Bheight%5D=720amp;hdUrl%5Bsize%5D=32341966amp;hdUrl%5Btype%5D=hdflvamp;hdUrl%5Burl%5D=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2F66d85f9c8e791ff3d439f809a425afa68ec56683.binamp;hdUrl%5Bwidth%5D=1280amp;mediaDuration=98.588amp;playButtonVisible=trueamp;showPlayButton=trueamp;showPlaybar=trueamp;showVolume=trueamp;stillUrl=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2F9ab48e1c64a91100a745cab8a1ed5e4efa312dc2.jpg%3Ft%3D1422953489206%26image_crop_resized%3D1040x585amp;unbufferedSeek=falseamp;videoUrl=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2Fcee1f8b7f0ca4d110fbe31bcfc412d9e15d01463.bin /meta itemprop=uploadDate content=2015-02-02T15:02:31Z /object id=wistia_jgegrillms_seo classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 style=display:block;height:585px;position:relative;width:1040px;param name=movie value=https://embed-ssl.wistia.com/flash/embed_player_v2.0.swf?2015-02-27 /param name=allowfullscreen value=true /param name=bgcolor value=#000000 /param name=wmode value=opaque /param name=flashvars value=autoPlay=falseamp;banner=falseamp;controlsVisibleOnLoad=trueamp;customColor=252625amp;endVideoBehavior=defaultamp;fullscreenDisabled=trueamp;hdUrl%5B2pass%5D=trueamp;hdUrl%5Bext%5D=flvamp;hdUrl%5Bheight%5D=720amp;hdUrl%5Bsize%5D=32341966amp;hdUrl%5Btype%5D=hdflvamp;hdUrl%5Burl%5D=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2F66d85f9c8e791ff3d439f809a425afa68ec56683.binamp;hdUrl%5Bwidth%5D=1280amp;mediaDuration=98.588amp;playButtonVisible=trueamp;showPlayButton=trueamp;showPlaybar=trueamp;showVolume=trueamp;stillUrl=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2F9ab48e1c64a91100a745cab8a1ed5e4efa312dc2.jpg%3Ft%3D1422953489206%26image_crop_resized%3D1040x585amp;unbufferedSeek=falseamp;videoUrl=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2Fcee1f8b7f0ca4d110fbe31bcfc412d9e15d01463.bin /embed src=https://embed-ssl.wistia.com/flash/embed_player_v2.0.swf?2015-02-27 allowfullscreen=true bgcolor=#000000 flashvars=autoPlay=falseamp;banner=falseamp;controlsVisibleOnLoad=trueamp;customColor=252625amp;endVideoBehavior=defaultamp;fullscreenDisabled=trueamp;hdUrl%5B2pass%5D=trueamp;hdUrl%5Bext%5D=flvamp;hdUrl%5Bheight%5D=720amp;hdUrl%5Bsize%5D=32341966amp;hdUrl%5Btype%5D=hdflvamp;hdUrl%5Burl%5D=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2F66d85f9c8e791ff3d439f809a425afa68ec56683.binamp;hdUrl%5Bwidth%5D=1280amp;mediaDuration=98.588amp;playButtonVisible=trueamp;showPlayButton=trueamp;showPlaybar=trueamp;showVolume=trueamp;stillUrl=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2F9ab48e1c64a91100a745cab8a1ed5e4efa312dc2.jpg%3Ft%3D1422953489206%26image_crop_resized%3D1040x585amp;unbufferedSeek=falseamp;videoUrl=https%3A%2F%2Fembed-ssl.wistia.com%2Fdeliveries%2Fcee1f8b7f0ca4d110fbe31bcfc412d9e15d01463.bin name=wistia_jgegrillms_html style=display:block;height:100%;position:relative;width:100%; type=application/x-shockwave-flash wmode=opaque/embed/objectp/pnoscript itemprop=descriptionCommand Line 00 - Introduction/noscriptnoscript itemprop=transcript id=wistia_jgegrillms_noscript_transcriptWhen you're just getting started with a new operating system you have to learn how to get around and perform basic actions like navigating the file structure reading and writing files and creating and deleting files and directories. The command line (once you're familiar with its commands) can be used to navigate a computer's file structure much faster than through the GUI (Graphical User Interface). It is also very helpful when working with a remote machine, like a web server. One stumbling block for many first time command line users is the fact that when you first startup your command line, you're just given a blank screen with a prompt where you can type in your command. Since there isn't anything to indicate what you should do next you have to already know the commands before you get started. This series will lay out some of the most basic command line commands. These are the ones you'll likely use every time you start up the command line. We'll take a look at the pwd, ls and cd commands to see where you are in your file structure what files and folders are in your current directory and moving to other directories. We'll create and edit text files with the VI application and learn the basics of utilizing VI. We'll learn how to move, rename, copy and delete files and folders with the mv, cp and rm commands. There are plenty of other commands you might want to know but this is an introductory class and a quick Google search will give you all of the information you need./noscript/div /div script charset=ISO-8859-1 src=//fast.wistia.com/assets/external/E-v1.js/scriptscript !--//--![CDATA[// !-- wistiaEmbed = Wistia.embed(jgegrillms, { videoFoam: true }); //--!]] /scriptscript charset=ISO-8859-1 src=//fast.wistia.com/embed/medias/jgegrillms/metadata.js/script/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:encodedpTL;DR: a href=https://modulesunraveled.com/command-line-beginners rel=nofollowWatch the full series here for FREE!/a/p pIf you're serious about building your Drupal site right, you'll find yourself looking into command line tools like Git and Drush./p pIf you don't work in the command line on a regular basis, that might be intimidating. Well, not any more!/p pThis series is designed to be a primer on the command line basics, to get you comfortable enough with the command line that you can utilize command line tools without hesitation./p pOnce you've watched the series, you can move on to the a href=https://modulesunraveled.com/drush rel=nofollowDrush series/a to improve your Drupal-fu, and will be ready for the upcoming Git series (which will be awesome, by the way!)/p pWhen you're ready, you can a href=https://modulesunraveled.com/command-line-beginners rel=nofollowwatch the entire series, for free./a/p pWhen you do, let me know if you have any questions or comments!/p /div/div/divdiv class=field field--name-field-tags field--type-taxonomy-term-reference field--label-abovediv class=field__labelTags:nbsp;/divdiv class=field__itemsdiv class=field__item even rel=dc:subjecta href=/tags/command-line typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Command Line/a/divdiv class=field__item odd rel=dc:subjecta href=/tags/basics typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Basics/a/divdiv class=field__item even rel=dc:subjecta href=/planet-drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=planet-drupal/a/div/div/div
Categories: Drupal Feeds

4Sitestudios.com Drupal Blog: Inside HubDub Part 1

Tue, 03/03/2015 - 8:07am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedp class=introAs we a href=http://www.4sitestudios.com/insight/introducing-hubdub-interactive-video-drupalannounced/aa href=http://www.4sitestudios.com/insight/introducing-hubdub-interactive-video-drupal target=_blank previously/a, 4Site has just released a href=http://www.drupal.org/sandbox/johnshortess/2426269 target=_blankHubDub/a, a Drupal module that leverages the a href=http://www.jplayer.org/ target=_blankjPlayer/a framework and a href=http://popcornjs.org/ target=_blankPopcorn JS/a to overlay web content—such as social media, maps, or web forms—directly onto a video as it plays. So... how does it work?/ph2Storing the Data/h2pThe Drupal end of HubDub is relatively straightforward. All of the information about a video is stored in a fieldable custom entity, called emHubDub Video/em. Apart from the usual metadata like title, description, author and a unique identifier, what do we need to keep track of? First, we need the location of the video itself. HubDub needs direct access to an M4V video file (or a live RTMP stream), so we store its location in the URL field. A planned enhancement will let this URL be the actual Vimeo (and eventually YouTube) sharing URL, which is a lot easier for end users to find. The module would then parse out the actual video file location./ppFor each overlay, we need to track the start time, end time, and the content of the overlay. We could have used Drupal’s built-in field types inside a field group for this, but that can get messy for unlimited fields, so we decided to create a custom HubDub Overlay field type. As a former TV engineer, my first instinct was to use something like SMPTE timecode for the time fields. But jPlayer can’t place overlays with anything approaching frame accuracy, so we went with two simple integer fields, representing the elapsed time in seconds since the start of the video. To make it easier to deal with overlays in longer videos, especially now that HubDub supports live RTMP streaming, we’ll probably use a field formatter (such as the a href=http://drupal.org/project/hms_field target=_blankHMS Field/a module) to display these fields in hours:minutes:seconds./ppThe overlay field is a textarea, using Drupal core’s Filter module to format the text for display. Allowing custom CSS, Javascript, and jQuery inside overlays opens up some awesome possibilities… and also some not-insignificant security issues. So by default we allow only the Filtered HTML text format, but the administrator can change this for trusted users./ppFinally, to declutter the edit form, we provide an administrative title for each overlay, and collapse the field by default./ph2Displaying a Video/h2pOkay, we’ve now got all of the information about a video stored in Drupal’s database. Now how do we display a video? Well, first of all, emwhere/em do we display it? By using Drupal’s Entity API we get a page display for each video (almost) for free, but we wanted to give site owners the flexibility to place videos wherever they wanted, so automatically creating a block for each video was a no-brainer./ppI’ve created lots of blocks in code before, but I’d never done so dynamically for all instances of an entity type before. It was a lot easier than I expected, as I learned from looking through the a href=http://drupal.org/project/views target=_blankViews/a module. In the strongcodehook_block_info()/code/strong implementation I load all the HubDub Video entities, then iterate through them with a codeforeach/code and add each video to the array. Then, in the strongcodehook_block_view()/code/strong implementation, it’s just a matter of calling the callback with the right delta. There are still a few to-dos here, namely dealing with entity titles longer than 32 characters, and adding some caching for performance./ppThe page callback and block callback are almost identical. Pages need a title, so the page callback sets it, then it and the block callback each call the same display function, strongcodehubdub_view_video()/code/strong. That function loads the HubDub Video entity, then dumps all of the metadata fields for that entity into Drupal's Javascript Settings array. Next, it iterates through all the values of the Overlay field and adds each overlay to the Settings array. Then everything gets passed to a theme function, which loads the strongcodetpl.php/code/strong file that contains the div structure that jPlayer needs, and creates a series of hidden divs with the contents of each overlay. Finally, we attach some CSS, and the Javascript, which is where all the real magic happens. Look for a follow-up post in the coming days on the Javascript side of HubDub./ph2What’s Next?/h2pThe initial release of HubDub is our “minimum viable product.” It works, but there’s so much more we have planned. A few of the things on our roadmap:/pulliMore granular access control for CRUD operations. Right now, all HubDub actions are controlled through one global “administer hubdub” permission. We’ll soon be adding the Drupal standard edit/delete own/any permissions./liliSupport for additional video providers, including YouTube, and non-m4v file formats./liliGreater cross-browser HTML5 support./liliAdditional jPlayer options, configurable through the admin UI./liliMedia module support./liliMore user-friendly support for skipping to another point in the same video, or branching to another video, from within an overlay./liliBetter support for overlays on live streams. Right now, overlays are timed from the start of playback, but this doesn’t make sense for live streams. We’re considering just using the server time in hours:minutes:seconds, but we’d love to hear potential use cases and their requirements./liliEventually, a more user-friendly way of adding overlays. We’re considering a video player on the edit form, with a button in the player controls to add an overlay at the current playback point./li/ulpWe're eager to hear your feedback! Please post bug reports, feature requests, and support questions in the HubDub a href=http://www.drupal.org/project/issues/2426269?status=Allamp;categories=1 target=_blankissue queue/a./ppspan style=font-size: 14.7679996490479px; line-height: 22.1520004272461px;We have even more details to sharenbsp;on how HubDub works under the hood, so stay tuned over the coming days. If you'll be attending thenbsp;/spana href=http://myntc.nten.org/home style=font-size: 14.7679996490479px; line-height: 22.1520004272461px; target=_blankNonprofit Technology Conference/aspan style=font-size: 14.7679996490479px; line-height: 22.1520004272461px;nbsp;next week in Austin, stop by our booth (#214)! We'd love to chat and give you a demo. If you’re interested in a custom HubDub solution, integration with your CRM or AMS, or video production or editing services, pleasenbsp;/spana href=http://4sitestudios.com/contact style=font-size: 14.7679996490479px; line-height: 22.1520004272461px; target=_blankcontact us/aspan style=font-size: 14.7679996490479px; line-height: 22.1520004272461px;./span/p/div/div/div
Categories: Drupal Feeds

DrupalDare: Google Pagespeed Module and Drupal

Tue, 03/03/2015 - 4:27am
Google is trying to make the web faster! Every site owner should be aware off the Google Pagespeed tool (and YSlow) to make sure that the website they are running is as fast as it can be. The optimization tools they offer are great for anyone working with Drupal. But Google have taken it one step further by introducing Google Pagespeed module for you webserver that does a lot of optimization on the fly. The question is - does it make sense for Drupal?
Categories: Drupal Feeds

InternetDevels: Drupal modules for social networks integration

Tue, 03/03/2015 - 2:55am
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenh3 style=text-align: justify;span style=color: #000000;strong1. Service links module/strong/span/h3p style=text-align: justify;span style=color: #000000;Service links module simplifies attaching additional social links or javascript buttons into the content. It grants advantages to the developers who can add more buttons and rearrange them. It is created on Drupal and for Drupal so that doesn’t include any commercials or spyware./span/p a href=http://internetdevels.com/blog/drupal-social-media-integration-modulesRead more/a/div/div/div
Categories: Drupal Feeds

Paul Rowell: Drupal Camp London 2015: Improving the CMS user experience

Mon, 03/02/2015 - 7:40pm
div class=field field-name-field-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image src=http://www.paulrowell.com/sites/default/files/styles/image258xauto/public/field/image/dc.png?itok=X0X4Ezyi width=252 height=142 alt= //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:encodedpI gave a talk at Drupal Camp London this year, focusing on the UX of CMS users a.k.a the forgottten Drupal user. Below are the slides and a few notes to accompany them./p /div/div/div
Categories: Drupal Feeds

Aten Design Group: OpenAid 2.0 - A Free, Open Source Website Starter Kit for Nonprofits

Mon, 03/02/2015 - 4:26pm
img src=http://atendesigngroup.com/sites/default/files/openaid.png width=1000 height=600 alt= /pFor cause-driven organizations, a website is a place to highlight impact, share resources, and build support. While a blog or brochure site can achieve some of these goals, it rarely does it all. Unfortunately, we all too often find organizations confined by the free and low-cost online platforms accessible to them. With that in mind, we’ve built a href=http://openaiddistro.org/OpenAid/a. It’s a free and open-source website starter kit developed for nonprofits and grassroots organizations. Its feature set is robust, its architecture flexible, and it can be installed in minutes./p pWe worked with activists, community organizers, and aid workers to build a platform that serves their organizations’ needs. Here are some of the features we’ve built to allow groups to inspire and connect with others on a scale that truly reflects their impact in the world./p ul listrongProject mapping./strong Each project or program you add to the site is displayed on dynamic maps, allowing users to see the full scope of your work. Because OpenAid is flexible, you can easily adjust a project to instead be a city or chapter and still take advantage of all of the mapping features./li listrongBlog and news./strong There are subtle but important differences between a News section and a blog, so we decided to build both for ultimate flexibility. Associate authors with your posts to create dynamic profile pages and allow users to track their favorite writer’s work. Reference a project with a post and it will display on a project’s page, creating almost a mini website for that project./li listrongResource library./strong Share the resources you’ve created with the rest of the world in an easy-to-find way. We’ve added metadata fields such as Resource Type and Topics and provided a filter set and search interface to allow users to quickly discover the tools and materials relevant to them, even if your library has grown to hundreds of documents./li listrongImage galleries./strong Pictures are key to telling your stories and connecting with your supporters. Associate a gallery with one or more projects to highlight events, volunteers, and initiatives specific to that project’s work./li listrongBeautiful, responsive design./strong Design is important and we want your website to look great regardless of device. A color picker allows you to easily adapt OpenAid to reflect your organization’s identity. We’ve also developed it with flexibility in mind so if you add new pages to the site or add fields to a content type, your site will retain that same great look and feel. /li /ul pYou can dig further into OpenAid’s feature set by spinning up a free sandbox site on a href=https://dashboard.getpantheon.com/products/openaid/spinupPantheon/a. Or download the distribution at a href=https://drupal.org/project/openaidhttps://drupal.org/project/openaid/a to install on any server. If you have further questions or would like assistance getting set up with OpenAid, feel free to reach out to me at openaid@atendesigngroup.com./p
Categories: Drupal Feeds

Shomeya: When Success Starts to Feel like Failure

Mon, 03/02/2015 - 3:55pm
img alt=Article_water height=199 src=http://cdn.shomeya.com/uploads/article/image/38/article_water.jpeg width=590 /pLast week was awesome, sort of. I hit all the numbers on my a href=http://shomeya.com/refreshguide/a launch I was hoping for, and then promptly got the stomach flu. After two years (lots of running in circles) of working through this process of launching I did it!/p pNow it could have just been being sick, but I ended the launch wanting something more. And the reality is this isn#39;t the first time I#39;ve been down after a success./p pDoes that ever happen to you? You get so excited about something and launch it? Then the next day you wonder if you could have done better, or you aren#39;t sure where to go next. It#39;s happened with our clients, we work so hard, we push the code, we launch on time, and then the question of quot;Now what?quot; lingers./p a href=http://shomeya.com/articles/when-success-starts-to-feel-like-failure?utm_campaign=when-success-starts-to-feel-like-failureamp;utm_medium=rssamp;utm_source=tag-drupal-planetRead more/a
Categories: Drupal Feeds

DrupalCon News: Higher Ed Joins the Summit Lineup

Mon, 03/02/2015 - 3:27pm
div class=field field--name-body field--type-text-with-summary field--label-hiddendiv class=field__itemsdiv class=field__item evenpThis year in Los Angeles, the Higher Ed Summit will be part of the official DrupalCon program for the first time. Along with the Business and Community Summits, the Higher Ed Summit will meet on Monday, May 11./p/div/div/div
Categories: Drupal Feeds