Drupal Planet

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

Deeson Online: Google Webmaster Tools - Part 2: Key areas in more detail

Mon, 06/30/2014 - 12:29am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedp style=text-align: center;img alt= src=/sites/default/files/uploads/gwt.png style=width: 420px; height: 287px; //p pIn my a href=http://deeson-online.co.uk/labs/google-webmaster-tools-part-1-getting-startedfirst post/a I gave an overview of Google Webmaster Tools./p pIn this second post I am going to look at some of the key areas that I have found useful when reviewing a site listing in Google from a Drupal developers point of view./p pThese area of interest are: Crawl Errors, Fetch as Google and Sitemaps./p h2Crawl details/h2 pOnce logged in to Google Webmaster Tools and selected the site I want to deal with, I have found the ‘Crawl’ section (on the left hand side) to be one of the most important areas./p pHere you can get information on what site pages Google has crawled, including various errors and details about how many URLs have been indexed from your sitemap.xml file./p pstrongCrawl Errors/strong/p pThis section is broken into the different types of errors:/p ul liServer error/li liSoft 404/li liAccess denied/li liNot found/li liNot followed/li liOther./li /ul pstrongemServer error:/em/strong These are any URLs that have returned too slowly or are blocking Google in some way. This would typically be pages causing errors on your site, so they should be dealt with fairly urgently./p pstrongemSoft 404:/em/strong These pages are interesting. They are like ‘Not found’ pages, but they aren’t strictly invalid pages as they aren’t returning a 404 header response. Google’s 'help' details these pages as:/p blockquotep‘A soft 404 occurs when your server returns a real page for a URL that doesn't actually exist on your site. This usually happens when your server handles faulty or non-existent URLs as OK, and redirects the user to a valid page like the home page or a custom 404 page.'/p/blockquote pIn some cases, these pages could be search pages which take in various query parameters to determine the search criteria. As the search content changes, the results of certain criteria may return no results./p pThis type of page can also be seen as a ‘soft 404’ page./p pGoogle recommends setting up your robots.txt file to not index such search pages as the content could be misleading. If you are providing a sitemap.xml file this should contain all of your sites content for Google to index./p pstrongemAccess denied:/em/strong These are fairly obvious - they are pages that Google can not access./p pThis might be due to authentication being required or just that Google is being blocked from seeing the page. It's worth keeping an eye on these pages as it might be that you have an error on a page that is preventing Google from accessing it etc./p pstrongemNot found:/em/strong These are also fairly obvious - they are pages that Google can not find or are returning a 404 header response./p pThis might be due to the page changing URL or just that the page no longer exists. It is worth keeping an eye on these pages as it might be that you have removed some pages and you didn’t realise that there was a link on a page on your site (or indeed on someone else's site) that is linking to that page./p pIn the event that the URL has just changed, but the page that this was referring to still exists, it is advisable to provide a redirect from the old URL to the new URL so that Google can reindex the correct URL. This should be done using a 301 redirect and can be achieved using a htaccess file./p pstrongemNot followed:/em/strong These are pages that Google tried to follow but couldn’t for some reason./p pstrongemOther:/em/strong This is more of a ‘catch all’ for any pages that couldn’t be accessed but don’t fall into any of the categories above./p h3What can you do with the list of URLs?/h3 pWithin each of the above sections, if there are any URLs found, a list will be presented. Clicking on one of the URLs will open up further useful information:/p ul listrongError details:/strong When this error was first detected and why etc./li listrongLinked from:/strong Where this URL is linked from (either your own site or external sites)/li listrong‘Fetch as Google’:/strong Useful button to see what Google actually sees when it visits the URL/li /ul pYou can also mark URLs as being ‘fixed’, i.e that they should no longer appear in that list./p pThis will remove them from the list, but if Google detects them again they will get added back./p pHowever, if your content has been ‘fixed’ the URL will automatically be removed from the relevant list when Google crawls that site, you removing it seems to be more for your own sanity and ease of seeing what is still to be sorted out./p h2Fetch as Google/h2 pThis is a useful little section that enables you to enter a page URL for your site and see what Google sees for that page when it is crawling the site./p h2Sitemaps/h2 pIf you have provided a sitemap.xml file to Google than this will provide further details on the number of the pages that the sitemap contains against the number of pages that Google has actually indexed./p pGoogle says that it won’t guarantee to index all the sites pages, so don’t expect this to match up, but it does give you a good indication on the number of pages that Google is actually aware of./p h2Other resources/h2 pTo be honest, I haven’t looked through all the items in here yet, but the main one that I have used is the Pagespeed insights./p pThis is a great little tool that analyses your site URL and tells you how it can perform better and faster. This is always worth having a look at to see how your site is performing, as sometimes small changes can make a big difference./p h2In Part 3.../h2 pI will analyse how data from Google Webmaster Tools helps me understand sites better and improve their standing in Google, complete with examples./p h5a href=http://twitter.com/deeson_labsFollow @deeson_labs for all the latest blogs!/a/h5 p /p /div/div/divdiv class=field field-name-node-link field-type-ds field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/labs/google-webmaster-tools-part-2-key-areas-more-detailRead more/a/div/div/divdiv class=field field-name-title field-type-ds field-label-hiddendiv class=field-itemsdiv class=field-item even property=dc:titleh2Google Webmaster Tools - Part 2: Key areas in more detail/h2/div/div/divdiv class=field field-name-meta field-type-ds field-label-hiddendiv class=field-itemsdiv class=field-item evenBy a href=/category/author/mike-davisMike Davis/a | 30th June 2014/div/div/div
Categories: Drupal Feeds

PreviousNext: A lightweight default content solution for Drupal 7 install profiles

Sun, 06/29/2014 - 8:53pm
div class=field field-name-field-summary field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item even pAs you may have read last week, we're starting up a Drupal 8 CX initiative which will feature a site for tracking the status of Drupal 8 module ports./p pWe'll be displaying a curated list of modules that we've identified as priorities for Drupal 8. But in order for others to build their own site to track their own priorities, we're building the site using an install profile./p pBecause I'm using an automated phing task to 'burn and reinstall' the site on a regular basis, I needed a simple lightweight solution for default content - for things like blocks (using bean) and basic nodes./p pRead-on to see my approach./p /div/div/divspan property=dc:title content=A lightweight default content solution for Drupal 7 install profiles class=rdf-meta/span
Categories: Drupal Feeds

EchoDitto Tech Blog: Module Monday: View Modes by View

Sun, 06/29/2014 - 6:43pm
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.echoditto.com/sites/default/files/styles/medium/public/blog/tps-report.png?itok=AnEzgRLN width=170 height=220 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:encodedpHere at EchoDitto, we make extensive use of the a href=https://drupal.org/project/dsDisplay Suite module/a, which means that we also use a lot of view modes. Today, I've a href=https://drupal.org/project/view_modes_by_viewreleased a module/a to help project managers, developers, and themers manage their view modes by providing a simple tool: a report that shows you which views are using which view modes. If you know what that means and why you'd want such a report, great! Install the module and be on your way. If not, read on./p pA view mode is a particular combination of a content type's fields, laid out in a particular way. Two of the most well-known view modes are full (for when you're viewing a node by itself) and teaser (usually a short version of a node that includes a link to the full node). Drupal 7 ships with several view modes and Display Suite provides a UI for creating custom ones./p pAlmost every website makes some use of view modes. For instance, if you have a blog on your website, you probably want to feature those posts in at least three different ways:/p ul liA short version of the post, that includes the title, the author, and the first few sentences, for use on the list of all posts in your blog. This would be the teaser view mode./li liAn ever shorter version, that consists of just the title and the date it was published, for a Posts by this Author block on a user's profile. We could call this the list view mode./li liThe post itself (you're looking at one now)! This is the full view mode./li /ul pIn most cases, you would create the lists of posts (the blog itself, and the Posts by this Author block) using the Views module./p pView modes are extremely useful for a number of reasons. They help ensure that your content is laid out consistently – wherever you use a particular view mode, you can be sure that the same group of fields appears, in the same order. Done right, the use of view modes can also cut down on theming time - style a view mode once, and you can display content using that view mode in many places on your site without needing to re-theme it./p pWhile view modes allow for great flexibility, they also increase complexity. It can quickly become difficult to remember where you have used a certain view mode – and that's assuming you were the person who built the site. If you're coming on to an existing project, you won't have that option. And either way, the only way to see which view mode is in use on a particular section of your site is to inspect the markup (not a great option for project managers) or to look at the view itself (not great for all project managers or themers, and tedious for developers). Regardless of how you find out which view mode is being used, you still can't see all the places the view mode is in use at once./p pThe module that I released, a href=https://drupal.org/project/view_modes_by_viewView Modes by View/a, helps you manage your view modes by providing a report showing which views are using which view modes. It provides that bird's-eye view in a way that all site builders can understand and reference./p pLet me know in the comments or in the issue queue how this module works for you./p /div/div/div
Categories: Drupal Feeds

flink: Speedy install to pinpointing slow performance

Sun, 06/29/2014 - 2: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://flink.com.au/sites/default/files/styles/large/public/field/image/xhprof%20in%20action.png?itok=hdlvyrvcimg typeof=foaf:Image src=http://flink.com.au/sites/default/files/styles/large/public/field/image/xhprof%20in%20action.png?itok=hdlvyrvc width=480 height=317 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:encodedpa href=http://www.php.net/manual/en/book.xhprof.phpXHProf/a is a great server-side performance profiler. And as we say in our Drupal community… emthere is a module for that/em. Great as it is, the Drupal a href=http://drupal.org/project/xhprofXHProf module/a comes with little documentation. So finding out how and where to install some of the unmentioned bits and pieces can be a chore. Especially when you find yourself faced with downloading and compiling various components on a machine that doesn’t have the full gamut of tools like pecl, apt-get or Homebrew, etc ready to go./p pSo this is what I normally do for Macs, greatly facilitated by Cameron Tod's a href=https://github.com/cam8001/php-xhprof-mampvery handy page/a./p !--break--p o Let’s start on familiar Drupal grounds. Install the a href=http://drupal.org/project/xhprofXHProf/a module. The module allows you to easily flick profiling on and off, without the need for defining an additional virtual host and accompanying special domain. The module also comes with some nice touches like selecting the verbosity of the XHProf output and not running XHProf on admin pages./p po The page em..../admin/reports/status/php/em on your Drupal site will tell you which PHP configuration file (php.ini file) your site has loaded. Edit that php.ini, adding these lines:br /codebr / extension = xhprof.sobr / xhprof.output_dir = ...br //codebr / On a Mac, typical candidates for filling out the above dots are /Users/USERNAME/Sites/xhprof/runs or /tmp/xhprof. Whatever you choose, make sure to create that directory or the xhprof module will spit the dummy. Keep in mind that the /tmp directory is automatically cleared upon startup, so you’ll have to create /tmp/xhprof again after a reboot./p po On a href=https://github.com/cam8001/php-xhprof-mamphttps://github.com/cam8001/php-xhprof-mamp/a select the pre-compiled version of strongxhprof.so/strong that corresponds to the PHP version you found above. Drop the xhprof.so in /Applications/MAMP/bin/php/php5.x.x/lib/php/extensions/no-debug-non-zts-200xxxxx/, replacing the x'es with your PHP version and date. If you've done this correctly then after restarting MAMP and refreshing the page em.../admin/reports/status/php/em will display a xhprof section./p po In a Terminal window type these commands:br /codebr / cd ~/Sitesbr / curl http://pecl.php.net/get/xhprof gt; xhprof.tgzbr / tar -xzf xhprof.tgzbr / mv xhprof-* xhprofbr / mkdir xhprof/runsbr / # or: mkdir /tmp/xhprofbr //code/p po Visit em.../admin/config/development/xhprof/em and tick the “Enable” box. Accept the remaining defaults for now. You can revisit these later./p po Visit the home page, or any other page of your site. Scroll UP to see a link “XHProf output” at the very bottom of your browser window. Click that link and a list of the top 100 suspects should come up./p pHappy profiling!/p pIn a follow-up article we'll demonstrate how XHProf can help you discover where exactly server-side performance is lost on your site and a handy module that came out of that./p /div/div/divdiv class=field field-name-field-file-under field-type-taxonomy-term-reference field-label-above h3 class=field-labelFile under:nbsp;/h3 span class=field-items a href=/file-under/planet-drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Planet Drupal/a /span /div
Categories: Drupal Feeds

netsperience 2.x: I Was Mentored in Drupal by dumbluck

Sat, 06/28/2014 - 9:31pm
pspan style=font-size:14px;The a href=http://drupal.orgDrupal community web site/a has a profile field to list span style=font-family: Tahoma, Verdana, sans-serif; font-weight: bold; line-height: 17.9999942779541px; background-color: rgb(254, 254, 254);My mentors/span/span/pdivspan style=font-size:14px;For example, on a href=https://www.drupal.org/u/decibel.placesmy profile/a I say I was mentored by:/span/divullidivspan style=font-size:12px;stronga href=https://www.drupal.org/u/robbiethegeekrobbiethegeek/a/strongnbsp;- how to appreciate Drupal awesomeness and its limitations/span/div/lilidivspan style=font-size:12px;stronga href=https://www.drupal.org/user/110386Alex UA/a/strongnbsp;- how to run a business providing Drupal services/span/div/lilidivspan style=font-size:12px;stronga href=https://www.drupal.org/u/forestmarsforestmars/a/strongnbsp;- how to be involved in the Drupal community/span/div/lilidivspan style=font-size:12px;stronga href=https://www.drupal.org/user/77539smerrill/a/strongnbsp;- how to be an engineer with platform tools like Jenkins, Vagrant, Redis/span/div/lilidivspan style=font-size:12px;stronga href=https://www.drupal.org/u/snugugsnugug/a/strongnbsp;- how to make web sites responsive/span/div/lilidivspan style=font-size:12px;stronga href=https://www.drupal.org/u/ericduranericduran/a/strongnbsp;- how to experiment with new doodads like HTML5, Android/span/div/lilidivspan style=font-size:12px;stronga href=https://www.drupal.org/u/zrogerzroger/a/strongnbsp;- how to use Drupal hooks and APIs in code/span/div/li/ulpspan style=font-size:14px;I started thinking about my dumb luck picking Drupal as a tool about 9 years ago. I was looking for a Content Management System that made sense./span/ppspan style=font-size:14px;I was awfully interested in a project called a href=http://www.viewscripts.com/13244/PAWS_-_PHP_AUTOMATIC_WEB_SITE.htmlPAWS/anbsp;(PHP Automatic Web Site) -- and it's a good thing I didn't ride that horse, which was long ago put out to pasture./span/ppspan style=font-size:14px;A client asked me to convert his static PHP site so that he could manage the content in the include files without editing code. I built my first Drupal 4.x site, with the crazy hack of creating a node for every include, and then printing the includes/nodes inside a main node (a href=http://dgo.to/panelsPanels/a, sort of, which did not exist in Drupal then). I also customized the front end of the TinyMCE wysiwyg editor to add buttons to apply his brand's pink and blue colors. The client smoked a lot of pot, drifted away, came back a year or two later for more work -- without a database. Oh well, not the first - or last - time the db was lost by a client./span/ppspan style=font-size:14px;That experience convinced me that a lot could be done with Drupal that I had not been able to do without a lot of custom coding just to build the base web application. Other projects with early versions of WordPress and Mambo (predecessor to Joomla) left me unimpressed with their extensibility. I have often said since then that WordPress is like the emsmaller sibling of Drupal/em, but Joomla is the emevil cousin/em./span/ppspan style=font-size:14px;Then Earl Miles conjured up his a href=https://www.drupal.org/user/26979merlinofchaos/a wizardry for Sony Music, creating a href=https://www.drupal.org/project/viewsViews/a and a href=https://www.drupal.org/project/panelsPanels/a and a href=https://www.drupal.org/project/ctoolsCtools/a, and that was around the time that a lot of developers took notice of Drupal. I was profoundly convinced that Drupal had outgrown being a emCMS /emenabling writers to (more or less) easily edit content without (much) codingem,/em and had become a emContent Management strongFramework/strong/em that could perform elegant and dynamic manipulations of the content in its database./span/ppspan style=font-size: 14px;So I had to add a href=https://www.drupal.org/profile/profile_my_mentors/dumbluckdumbluck/a to my mentors - not just for my early experiment hacking the node system, but for each solution that I was able to implement afterwards, because my choice of Drupal provided me with an extensible framework allowing complex algorithms for presentation of content, and the Drupal project improves with every contributor's enhancements./span/ph3 style=text-align: center;I think I'm dumb, maybe just happy/h3p style=text-align: center;iframe allowfullscreen= frameborder=0 height=281.25 src=http://www.youtube.com/embed/navSGQiJPyI?rel=0amp;start=21amp;end=156amp;autoplay=0 width=500/iframe/ppspan style=font-size:12px;I noticed in preparing this post that some Drupal user profiles are accessible by username, eg. a href=https://www.drupal.org/u/decibel.placeshttps://www.drupal.org/u/decibel.places/a andnbsp;a href=https://www.drupal.org/u/robbiethegeekhttps://www.drupal.org/u/robbiethegeek/a, while others, like merlinofchaos and smerrill, are only accessible by their UIDsnbsp;a href=https://www.drupal.org/user/26979https://www.drupal.org/user/26979/a andnbsp;a href=https://www.drupal.org/user/77539https://www.drupal.org/user/77539/a respectively./span/p
Categories: Drupal Feeds

ShooFlyDesign: Lightweight Autosave for Drupal with Garlic.js

Sat, 06/28/2014 - 2:47pm
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpOut of the box, Drupal 7 does not have autosave capabilities. The complexity of the kinds of content you can create is probably the reason for this, but that doesn't change the fact that it's a bummer. There are efforts underway to change this for Drupal 8; whether they will actually make it in is another question./p/div/div/divdiv class=field field-name-node-link field-type-ds field-label-hiddendiv class=field-itemsdiv class=field-item evena href=/buzz/lightweight-autosave-for-drupal-with-garlicjsRead more/a/div/div/div
Categories: Drupal Feeds

mark.ie: How to create a Drupal Installation Profile the easy way

Sat, 06/28/2014 - 4:06am
div class=sharethis-buttonsdiv class=sharethis-wrapperspan st_url=http://mark.ie/articles/how-create-drupal-installation-profile-easy-way st_title=How to create a Drupal Installation Profile the easy way via @markconroy class=st_twitter_button displaytext=twitter/span span st_url=http://mark.ie/articles/how-create-drupal-installation-profile-easy-way st_title=How to create a Drupal Installation Profile the easy way class=st_facebook_button displaytext=facebook/span /div/div
Categories: Drupal Feeds

Drupal Watchdog: DrupalCon Austin

Fri, 06/27/2014 - 4:17pm
div class=field field--body field-type-text-with-summary field-label-hidden field--rss pThe entertainment industry is not for the faint of heart. /p pNeed I mention Alec Baldwin, Lady Gaga, Harvey Weinstein, the Kardashians, Christian Bale... and my very own doppelgänger, Howard Stern?/p pWhich is to say that after a lengthy career toiling in the dungeons of music (rock-band performances at CBGBs, recordings at Electric Lady), television (Emmy Award), and, lately, film (screenplay optioned by Danny Devito), I’ve developed a very thick skin and a willingness to plunge headlong into the unknown, brushing aside or knocking down obstacles in my path, and taking on jobs and responsibilities for which I was eminently unqualified./p pWhich brings us to DrupalCon Austin./p pBut first, some back-story./p pAt my initial interview for the copy editor job at Drupal Watchdog, I was careful to explain that, although familiar with the open source movement and knowing what Drupal was for, I neither wrote code nor had the foggiest notion about how to build a website./p pOn the other hand, I could put stuff into good English. /p pThey hired me./p pMerely a few Watchdog issues later (and still Drupal-ignorant), I decided I should have my very own website and, of course, it should be built on Drupal./p pTa-da!/p pThat evening, on my third martini, I fired off an e-mail to Jeremy (Jeremy Andrews, Drupal Watchdog publisher) proposing I write an article about a Drupal newbie who embarks on his very own website. Jeremy was encouraging and so “a href=/node/2542Baby Steps/a” was born./p pNaturally, the article was in the form of a screenplay. It starred a character named Ronnie Ray – a martini-drinking, somewhat clueless (but somewhat aggressive) screenwriter. After he read it, Jeremy laughingly mentioned that my article was surely the first time in history that the words “Drupal” and “post-coital” had been uttered in the same breath./p pHe also requested that “Baby Steps” become “Baby Steps #1”; the first of a regular Watchdog column./p p(Yes, I know: Austin. Relax, we’re getting there.)/p pDesperately Googling material for “Baby Steps #2,” I stumbled across the Drupal Association website and the template for a “Letter to Your Boss,” explaining why it was important to send you to DrupalCon Austin./p pHey, I already knew why it was important send me to Austin: a great music scene, a plethora of hipsters, and terrific craft beers./p pSo, that evening, 30 minutes into Cocktail Hour, I filled in the blanks of the “Letter to Your Boss” and shot it off to Jeremy.../p pWithin weeks I was on my way to Austin./p pOkay, here we are, Austin!/p pMy Sunday evening arrival was a downer: the airline misplaced my luggage and by the time I arrived at the hotel it was too late for a Sunday-night-only Austin institution: chicken-shit Bingo. (Patrons get a Bingo card; a chicken is led into a cage with bars across the bottom with a large Bingo card under the bars; eventually, the chicken drops a chicken-size load and... well, you get the picture.)/p pMonday I got to meet many of my Drupal Watchdog stalwarts: the-ever-good-natured Jeremy Andrews; coffee emsavant/em Jeff Shelten; brilliant Narayan Newton; kooky genius Morten DK; the rarely-seen-in-public “Chx”; Peta Hoyes, Tag1’s beloved Organizing Force; and my reliable wingman for the next few days, Bob Williams. (Thanks, Bob!)/p pBut by Tuesday morning, after Dries’ opening remarks and after attending a session about Drupal something-or-other, it became painfully clear that, Drupal-wise, I had blundered too far, too fast, too deep./p pOn the positive side, everyone I encountered seemed of boundless good cheer and enthusiasm; there were smiles galore and everywhere you turned small knots of people with DrupalCon name-tags and Drupal t-shirts congregated, introduced themselves, and engaged in animated conversations./p pPlus there were the perks: Free yummy lunches! Open-bar parties! Funky little music clubs with no cover or minimum! Jazz! Blues! Rock! Wow, I was loving Austin./p pYet meanwhile, the question kept burning into my guilty, hung-over, coffee-stoked brain: How do I justify my existence here?/p pThen it struck./p blockquotep“Jeremy, what if I interview some of these Drupalists, ask them where they’re from, what they do, why they came here, what they expect – you know, to try and get a sense of the Drupal community.”/p/blockquote pJeremy readily agreed, showed me how to set my iPhone to record, and I was off to the races./p pThe upshot: Not only did I get a sense of the Drupal community, but after transcribing, editing, and submitting the interviews, Peta responded that I had “captured the breath, depth, weirdness, and energy of the Drupal Community... The interviews are light, humorous and insightful. I would like to find a way to use them.”/p pUse them? Hmmm.../p pWhat about in the next issue of Drupal Watchdog?/p pAnd so, Ronnie Ray had blundered into another column. */p pAnd a blog post./p pem* Look for “Baby Steps #3: Lost in Austin” in the next issue of Drupal Watchdog, arriving late-September – in time for DupalCon Amsterdam./em/p /div div class=field field--tags field-type-taxonomy-term-reference field-label-above field--rss div class=field-labelspan class=icon glyphicon glyphicon-tag aria-hidden=true/spanTags:nbsp;/div div class=field-items a href=/tags/baby-steps typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Baby Steps/a a href=/tags/austin typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Austin/a a href=/tags/drupalcon typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=DrupalCon/a a href=/tags/watchdog typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Watchdog/a a href=/tags/drupal-association typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Drupal Association/a a href=/tags/bingo typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=bingo/a a href=/tags/humor typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=humor/a /div/div
Categories: Drupal Feeds

Drupalize.Me: WAI-ARIA, Requiring Alt Text, and Other Accessibility Features Now in Drupal 8

Fri, 06/27/2014 - 4:16pm
div class=field field-name-body field-type-text-with-summary field-label-hidden text-content text-secondarydiv class=field-itemsdiv class=field-item evenpOn Drupal.org, Drupal 8 promotion is in full-swing. Features and benefits are being touted and summarized right and left. One of the categories of improvement summed up on the Drupal 8 features page is Accessibility. I went digging for more information on how accessibility improvements have been integrated in Drupal 8 and I found a number of resources on the effort to improve accessibility in D8./p /div/div/div
Categories: Drupal Feeds

Lullabot: Front-end Rapport #1

Fri, 06/27/2014 - 1:00pm
h2a id=toc-use-cases-and-requirements-for-element-queries class=anchor/aa href=http://responsiveimagescg.github.io/eq-usecases/ title=Editor’s Draft by the Responsive Images Community GroupUse Cases and Requirements for Element Queries/a/h2 pTopics: Element Queries, RICG/p
Categories: Drupal Feeds

ThinkShout: Navigating Entity URIs: A Practical Example

Fri, 06/27/2014 - 12:15pm
pAt ThinkShout, most of our modules are based around the Entity system. After all, like most developers, we are big abstraction nerds. Entities enable some rad abstraction in Drupal land: our a href=https://www.drupal.org/project/registrationRegistration module/a lets you registration-enable any fieldable entity; the new version of a href=https://www.drupal.org/project/mailchimpMailChimp/a lets you sync any fieldable entity with an email address with your MailChimp lists; and our a href=https://www.drupal.org/project/salesforceSalesforce module/a lets you sync any entity with a Salesforce object./p pDid you notice the little restriction I worked into my first two examples there? MailChimp and Registration are only for “fieldable entities”. There are a lot of reasons for this, but one of the conveniences of fieldability is that it gives you a natural place to add your entity-specific stuff, like a registration form or a MailChimp list signup dialogue: display it with field API!/p pSalesforce is different. It isn’t field-based. Instead, an individual “Salesforce Mapping” entity describes a synchronization relationship between a Drupal Entity Bundle (like a node content type of “Event”) and a Salesforce Object Type (like a “Campaign”): there’s no need for any entity-side configuration -- or at least, there didn’t used to be./p pRecently, we began implementing a suite of Salesforce sync administration tools to help resolve the inevitable issues that arise with two complex systems trying to pass data back and forth. One of the features of this tool is the ability to change the Salesforce Object that a particular Drupal entity is connected with (change a specific Event to map to a different Campaign). Another is to view the synchronization history for any Drupal entity./p pWe started out by implementing a central administrative UI to provide access to locate and edit all these Synchronization Object instances./p pThe UI is handy: searchable, filterable, sortable. Sometimes Drupal makes stuff really easy!/p pimg src=/assets/images/blog/salesforce_sync_ui_admin.png alt=salesforce_sync_ui_admin.png/p pCan we be real for a second, though? If I have an Event syncing with a Salesforce Campaign, and I want to look at the sync history, does it make sense for me to go to a special part of my site and track down that Event with some weird unique UI?/p pHardly. Just put a tab on my Event Node, dude!/p pGreat idea! Shouldn’t be too hard, right? We’ll just do a hook_menu, load up all our of Salesforce Mappings, and add a menu item to their Entity Bundles based on their URI:/p div class=highlightprecode class=php language-php data-lang=phpspan class=cplt;?php/span span class=sd/**/span span class=sd * Implements hook_menu()./span span class=sd *//span span class=kfunction/span span class=nfsalesforce_mapping_menu/spanspan class=p()/span span class=p{/span span class=nv$items/span span class=o=/span span class=karray/spanspan class=p();/span span class=c1// Load our Salesforce mappings and loop through:/span span class=nv$mappings/span span class=o=/span span class=nxsalesforce_mapping_load/spanspan class=p();/span span class=kforeach/span span class=p(/spanspan class=nv$mappings/span span class=kas/span span class=nv$mapping/spanspan class=p)/span span class=p{/span span class=c1// Create a dummy entity to load the URI:/span span class=nv$entity/span span class=o=/span span class=nxentity_create/spanspan class=p(/spanspan class=nv$mapping/spanspan class=o-gt;/spanspan class=nadrupal_entity_type/spanspan class=p,/span span class=karray/spanspan class=p(/spanspan class=s1#39;type#39;/span span class=o=gt;/span span class=nv$mapping/spanspan class=o-gt;/spanspan class=nadrupal_bundle/spanspan class=p));/span span class=nv$uri/span span class=o=/span span class=nv$entity/spanspan class=o-gt;/spanspan class=nauri/spanspan class=p();/span span class=c1// Danger Will Robinson!/span span class=nv$path/span span class=o=/span span class=nv$uri/spanspan class=p[/spanspan class=s1#39;path#39;/spanspan class=p]/span span class=o./span span class=s1#39;%#39;/span span class=o./span span class=nv$type/span span class=o./span span class=s1#39;/salesforce_activity#39;/spanspan class=p;/span span class=c1// Figure out which argument has our entity ID in it:/span span class=nv$entity_arg/span span class=o=/span span class=nxsubstr_count/spanspan class=p(/spanspan class=nv$path/spanspan class=p,/span span class=s1#39;/#39;/spanspan class=p)/span span class=o-/span span class=mi1/spanspan class=p;/span span class=c1// Use the URI and entity arg to generate a nice menu item:/span span class=nv$items/spanspan class=p[/spanspan class=nv$path/spanspan class=p]/span span class=o=/span span class=karray/spanspan class=p(/span span class=s1#39;title#39;/span span class=o=gt;/span span class=s1#39;Salesforce activity#39;/spanspan class=p,/span span class=s1#39;description#39;/span span class=o=gt;/span span class=s1#39;View Salesforce activity for this entity.#39;/spanspan class=p,/span span class=s1#39;type#39;/span span class=o=gt;/span span class=nxMENU_LOCAL_TASK/spanspan class=p,/span span class=s1#39;page callback#39;/span span class=o=gt;/span span class=s1#39;salesforce_mapping_object_view#39;/spanspan class=p,/span span class=s1#39;page arguments#39;/span span class=o=gt;/span span class=karray/spanspan class=p(/spanspan class=nv$entity_arg/spanspan class=p,/span span class=nv$mapping/spanspan class=o-gt;/spanspan class=nadrupal_entity_type/spanspan class=p),/span span class=p);/span span class=p}/span span class=kreturn/span span class=nv$items/spanspan class=p;/span span class=p}/span /code/pre/div pThis worked great in development, but as soon as we tested on a production site, it exploded. Why? This line:/p div class=highlightprecode class=php language-php data-lang=phpspan class=cplt;?php/span span class=nv$uri/span span class=o=/span span class=nv$entity/spanspan class=o-gt;/spanspan class=nauri/spanspan class=p();/span /code/pre/div pSadly, this method doesn’t work for every Drupal Entity. Nodes, for example, and Commerce Orders, don’t respond to $entity-gt;uri(). They like:/p div class=highlightprecode class=php language-php data-lang=phpspan class=cplt;?php/span span class=nv$uri/span span class=o=/span span class=nxentity_uri/spanspan class=p(/spanspan class=nv$entity/spanspan class=p)/span /code/pre/div pGrr. Ok, easy fix right?/p div class=highlightprecode class=php language-php data-lang=phpspan class=cplt;?php/span span class=nv$uri/span span class=o=/span span class=nbmethod_exists/spanspan class=p(/spanspan class=nv$entity/spanspan class=p,/span span class=s1#39;uri#39;/spanspan class=p)/span span class=o?/span span class=nv$entity/spanspan class=o-gt;/spanspan class=nauri/spanspan class=p()/span span class=o:/span span class=nxentity_uri/spanspan class=p(/spanspan class=nv$type/spanspan class=p,/span span class=nv$entity/spanspan class=p);/span /code/pre/div pAnd yes, this is pretty good. But for some reason, our tab still wasn’t appearing on Commerce Orders. On closer inspection, this is the URI we were getting from our function call on Commerce Orders:/p div class=highlightprecode class=php language-php data-lang=phpspan class=cplt;?php/span span class=karray/spanspan class=p(/span span class=err‘/spanspan class=nxoptions/spanspan class=err’/span span class=o=gt;/span span class=karray/spanspan class=p(/span span class=err‘/spanspan class=nxentity_type/spanspan class=err’/span span class=o=gt;/span span class=err“/spanspan class=nxcommerce_order/spanspan class=err”/spanspan class=p,/span span class=err‘/spanspan class=nxentity/spanspan class=err’/span span class=o=gt;/span span class=p{/spanspan class=kstdClass/spanspan class=p}/span span class=p),/span span class=p)/span /code/pre/div pNotice something missing? Yeah, there’s no ‘path’ index for the next line to use:/p div class=highlightprecode class=php language-php data-lang=phpspan class=cplt;?php/span span class=nv$path/span span class=o=/span span class=nv$uri/spanspan class=p[/spanspan class=s1#39;path#39;/spanspan class=p]/span span class=o./span span class=s1#39;%#39;/span span class=o./span span class=nv$type/span span class=o./span span class=s1#39;/salesforce_activity#39;/spanspan class=p;/span /code/pre/div pThanks for nuthin#39;, flagship example of how to use the Entity system! I’m sure the Commerce team has a good reason for leaving the ‘path’ piece of URIs empty on raw Entity objects: almost all Commerce Entities behave this way. But it’s not very helpful for us!/p pWe could potentially resolve this by loading a random object and parsing its URI#39;s #39;path#39; to extract an abstract version, or by offering a patch to Commerce. Perhaps the latter option would be ideal, but we decided a work-around would be more expeditious: we really don’t want to break Commerce on a live site./p pInstead, we decided to override the entity data for the important entity types in a local module:/p div class=highlightprecode class=php language-php data-lang=phpspan class=cplt;?php/span span class=sd/**/span span class=sd * Implements hook_entity_info_alter()./span span class=sd *//span span class=kfunction/span span class=nfmy_module_entity_info_alter/spanspan class=p(/spanspan class=oamp;/spanspan class=nv$entity_info/spanspan class=p)/span span class=p{/span span class=c1// Replace ‘commerce_order_ui_order_uri’/span span class=nv$entity_info/spanspan class=p[/spanspan class=s1#39;commerce_order#39;/spanspan class=p][/spanspan class=s1#39;uri callback#39;/spanspan class=p]/span span class=o=/span span class=s1#39;my_module_uri_order#39;/spanspan class=p;/span span class=p}/span span class=sd/**/span span class=sd * URI callback wrapper to ensure a proper ‘path’ index for Orders./span span class=sd *//span span class=kfunction/span span class=nfmy_module_uri_order/spanspan class=p(/spanspan class=nv$entity/spanspan class=p)/span span class=p{/span span class=c1// Call the original uri function and fix only if necessary:/span span class=nv$uri/span span class=o=/span span class=nxcommerce_order_ui_order_uri/spanspan class=p(/spanspan class=nv$entity/spanspan class=p);/span span class=kif/span span class=p(/spanspan class=nbis_null/spanspan class=p(/spanspan class=nv$uri/spanspan class=p))/span span class=p{/span span class=nv$uri/span span class=o=/span span class=karray/spanspan class=p(/span span class=s1#39;path#39;/span span class=o=gt;/span span class=s1#39;admin/commerce/orders/#39;/spanspan class=p,/span span class=p);/span span class=p}/span span class=kreturn/span span class=nv$uri/spanspan class=p;/span span class=p}/span /code/pre/div pThis solves the issue for Orders. A similar technique can be used for any Entity Type that fails to offer a proper ‘path’ index for its URI./p pThe only entities left to deal with are those that don’t offer any URI at all: entities without a direct management interface. Field Collections are a common example. Fortunately, we started out with a Universal Admin UI: it seems reasonable to hang the Salesforce Object administration interface off this Admin page. Here’s the final, complete hook_menu implementation for our Salesforce Mapping UI:/p div class=highlightprecode class=php language-php data-lang=phpspan class=cplt;?php/span span class=sd/**/span span class=sd * Implements hook_menu()./span span class=sd *//span span class=kfunction/span span class=nfsalesforce_mapping_menu/spanspan class=p()/span span class=p{/span span class=nv$items/span span class=o=/span span class=karray/spanspan class=p();/span span class=nv$items/spanspan class=p[/spanspan class=s1#39;admin/content/salesforce#39;/spanspan class=p]/span span class=o=/span span class=karray/spanspan class=p(/span span class=s1#39;title#39;/span span class=o=gt;/span span class=s1#39;Salesforce Mapped Objects#39;/spanspan class=p,/span span class=s1#39;description#39;/span span class=o=gt;/span span class=s1#39;Manage mapped Salesforce objects.#39;/spanspan class=p,/span span class=s1#39;type#39;/span span class=o=gt;/span span class=nxMENU_LOCAL_TASK/spanspan class=p,/span span class=s1#39;page callback#39;/span span class=o=gt;/span span class=s1#39;salesforce_mapping_object_overview_page#39;/spanspan class=p,/span span class=s1#39;file#39;/span span class=o=gt;/span span class=s1#39;includes/salesforce_mapping_object.admin.inc#39;/spanspan class=p,/span span class=s1#39;access arguments#39;/span span class=o=gt;/span span class=karray/spanspan class=p(/spanspan class=s1#39;view salesforce mapping object#39;/spanspan class=p),/span span class=p);/span span class=c1// Define SF activity local tasks for all mapped entities./span span class=nv$defaults/span span class=o=/span span class=karray/spanspan class=p(/span span class=s1#39;file#39;/span span class=o=gt;/span span class=s1#39;salesforce_mapping_object.admin.inc#39;/spanspan class=p,/span span class=s1#39;file path#39;/span span class=o=gt;/span span class=nxdrupal_get_path/spanspan class=p(/spanspan class=s1#39;module#39;/spanspan class=p,/span span class=s1#39;salesforce_mapping#39;/spanspan class=p)/span span class=o./span span class=s1#39;/includes#39;/spanspan class=p,/span span class=p);/span span class=nv$mappings/span span class=o=/span span class=nxsalesforce_mapping_load/spanspan class=p();/span span class=nv$mapped_entities/span span class=o=/span span class=karray/spanspan class=p();/span span class=kforeach/span span class=p(/spanspan class=nv$mappings/span span class=kas/span span class=nv$mapping/spanspan class=p)/span span class=p{/span span class=c1// We grab the bundle now because it becomes inaccessible for some entities/span span class=c1// after it is put into the loop below:/span span class=nv$mapped_entities/spanspan class=p[/spanspan class=nv$mapping/spanspan class=o-gt;/spanspan class=nadrupal_entity_type/spanspan class=p]/span span class=o=/span span class=nv$mapping/spanspan class=o-gt;/spanspan class=nadrupal_bundle/spanspan class=p;/span span class=p}/span span class=kforeach/span span class=p(/spanspan class=nv$mapped_entities/span span class=kas/span span class=nv$type/span span class=o=gt;/span span class=nv$bundle/spanspan class=p)/span span class=p{/span span class=nv$entity/span span class=o=/span span class=nxentity_create/spanspan class=p(/spanspan class=nv$type/spanspan class=p,/span span class=karray/spanspan class=p(/spanspan class=s1#39;type#39;/span span class=o=gt;/span span class=nv$bundle/spanspan class=p));/span span class=nv$uri/span span class=o=/span span class=nbmethod_exists/spanspan class=p(/spanspan class=nv$entity/spanspan class=p,/span span class=s1#39;uri#39;/spanspan class=p)/span span class=o?/span span class=nv$entity/spanspan class=o-gt;/spanspan class=nauri/spanspan class=p()/span span class=o:/span span class=nxentity_uri/spanspan class=p(/spanspan class=nv$type/spanspan class=p,/span span class=nv$entity/spanspan class=p);/span span class=c1// For entities without their own menu items, we hang the UI off the universal/span span class=c1// Salesforce object admin page:/span span class=kif/span span class=p(/spanspan class=kempty/spanspan class=p(/spanspan class=nv$uri/spanspan class=p[/spanspan class=s1#39;path#39;/spanspan class=p]))/span span class=p{/span span class=nv$path/span span class=o=/span span class=s1#39;admin/content/salesforce/#39;/span span class=o./span span class=nv$type/span span class=o./span span class=s1#39;/%#39;/span span class=o./span span class=nv$type/span span class=o./span span class=s1#39;/salesforce_activity#39;/spanspan class=p;/span span class=nv$menu_type/span span class=o=/span span class=nxMENU_NORMAL_ITEM/spanspan class=p;/span span class=p}/span span class=kelse/span span class=p{/span span class=nv$path/span span class=o=/span span class=nv$uri/spanspan class=p[/spanspan class=s1#39;path#39;/spanspan class=p]/span span class=o./span span class=s1#39;%#39;/span span class=o./span span class=nv$type/span span class=o./span span class=s1#39;/salesforce_activity#39;/spanspan class=p;/span span class=nv$menu_type/span span class=o=/span span class=nxMENU_LOCAL_TASK/spanspan class=p;/span span class=p}/span span class=nv$entity_arg/span span class=o=/span span class=nxsubstr_count/spanspan class=p(/spanspan class=nv$path/spanspan class=p,/span span class=s1#39;/#39;/spanspan class=p)/span span class=o-/span span class=mi1/spanspan class=p;/span span class=nv$items/spanspan class=p[/spanspan class=nv$path/spanspan class=p]/span span class=o=/span span class=karray/spanspan class=p(/span span class=s1#39;title#39;/span span class=o=gt;/span span class=s1#39;Salesforce activity#39;/spanspan class=p,/span span class=s1#39;description#39;/span span class=o=gt;/span span class=s1#39;View Salesforce activity for this entity.#39;/spanspan class=p,/span span class=s1#39;type#39;/span span class=o=gt;/span span class=nv$menu_type/spanspan class=p,/span span class=s1#39;page callback#39;/span span class=o=gt;/span span class=s1#39;salesforce_mapping_object_view#39;/spanspan class=p,/span span class=s1#39;page arguments#39;/span span class=o=gt;/span span class=karray/spanspan class=p(/spanspan class=nv$entity_arg/spanspan class=p,/span span class=nv$type/spanspan class=p),/span span class=s1#39;access callback#39;/span span class=o=gt;/span span class=s1#39;salesforce_mapping_entity_mapping_accessible#39;/spanspan class=p,/span span class=s1#39;access arguments#39;/span span class=o=gt;/span span class=karray/spanspan class=p(/spanspan class=s1#39;view#39;/spanspan class=p,/span span class=nv$entity_arg/spanspan class=p,/span span class=nv$type/spanspan class=p),/span span class=p);/span span class=nv$items/spanspan class=p[/spanspan class=nv$path/span span class=o./span span class=s1#39;/view#39;/spanspan class=p]/span span class=o=/span span class=karray/spanspan class=p(/span span class=s1#39;title#39;/span span class=o=gt;/span span class=s1#39;View#39;/spanspan class=p,/span span class=s1#39;type#39;/span span class=o=gt;/span span class=nxMENU_DEFAULT_LOCAL_TASK/spanspan class=p,/span span class=s1#39;weight#39;/span span class=o=gt;/span span class=o-/spanspan class=mi10/spanspan class=p,/span span class=p);/span span class=nv$items/spanspan class=p[/spanspan class=nv$path/span span class=o./span span class=s1#39;/edit#39;/spanspan class=p]/span span class=o=/span span class=karray/spanspan class=p(/span span class=s1#39;page callback#39;/span span class=o=gt;/span span class=s1#39;salesforce_mapping_object_edit#39;/spanspan class=p,/span span class=s1#39;page arguments#39;/span span class=o=gt;/span span class=karray/spanspan class=p(/spanspan class=nv$entity_arg/spanspan class=p,/span span class=nv$type/spanspan class=p),/span span class=s1#39;access arguments#39;/span span class=o=gt;/span span class=karray/spanspan class=p(/spanspan class=s1#39;edit salesforce mapping object#39;/spanspan class=p),/span span class=s1#39;title#39;/span span class=o=gt;/span span class=s1#39;Edit#39;/spanspan class=p,/span span class=s1#39;type#39;/span span class=o=gt;/span span class=nxMENU_LOCAL_TASK/spanspan class=p,/span span class=s1#39;context#39;/span span class=o=gt;/span span class=nxMENU_CONTEXT_PAGE/span span class=o|/span span class=nxMENU_CONTEXT_INLINE/spanspan class=p,/span span class=p)/span span class=o+/span span class=nv$defaults/spanspan class=p;/span span class=nv$items/spanspan class=p[/spanspan class=nv$path/span span class=o./span span class=s1#39;/delete#39;/spanspan class=p]/span span class=o=/span span class=karray/spanspan class=p(/span span class=s1#39;page callback#39;/span span class=o=gt;/span span class=s1#39;drupal_get_form#39;/spanspan class=p,/span span class=s1#39;page arguments#39;/span span class=o=gt;/span span class=karray/spanspan class=p(/spanspan class=s1#39;salesforce_mapping_object_delete_form#39;/spanspan class=p,/span span class=nv$entity_arg/spanspan class=p,/span span class=nv$type/spanspan class=p),/span span class=s1#39;access arguments#39;/span span class=o=gt;/span span class=karray/spanspan class=p(/spanspan class=s1#39;delete salesforce mapping object#39;/spanspan class=p),/span span class=s1#39;title#39;/span span class=o=gt;/span span class=s1#39;Delete#39;/spanspan class=p,/span span class=s1#39;type#39;/span span class=o=gt;/span span class=nxMENU_LOCAL_TASK/spanspan class=p,/span span class=s1#39;context#39;/span span class=o=gt;/span span class=nxMENU_CONTEXT_INLINE/spanspan class=p,/span span class=p)/span span class=o+/span span class=nv$defaults/spanspan class=p;/span span class=p}/span span class=kreturn/span span class=nv$items/spanspan class=p;/span span class=p}/span /code/pre/div pNow we can find what we need from two natural directions: by thinking about Salesforce Sync Objects or just by thinking about the entity we want to deal with. The inconsistent responsiveness of Drupal Entities to the uri() request is frustrating, but not impossible to work around. Hopefully, you find this article helpful -- and if you maintain a module that creates its own entities, please test out the uri() function before your next release!/p
Categories: Drupal Feeds

Drupal core announcements: Drupal 8 alpha 13 on July 2nd

Fri, 06/27/2014 - 8:31am
pThe next alpha for Drupal 8 will be alpha 13! Here is the schedule for the alpha release./p table tr thJune 30th-July 1st, 2014/th tdOnly critical and major patches committed/td /tr tr thJuly 2nd, 2014/th tdDrupal 8.0-alpha13 released. Emergency commits only./td /tr tr thJuly 3rd-5th, 2014/th tdDisruptive patch window/td /tr /table
Categories: Drupal Feeds

Drupal.org Featured Case Studies: Jewish Federation of Greater Philadelphia

Fri, 06/27/2014 - 8:16am
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/JFed1.jpg?itok=oQDRO8cQ width=588 height=306 alt=Jewish Federation of Greater Philadelphia Website by eCity Interactive //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=https://www.jewishphilly.orghttps://www.jewishphilly.org/a/div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpThe Jewish Federation of Greater Philadelphia seeks to enrich the lives of Philly’s multi-generational Jewish community. They work for social justice, educate about Jewish life and tradition, and have even strengthened the Jewish community living in Israel and around the world. /p pIn order to better engage the community they were trying to help, the Federation needed a new website to effectively communicate their work and successes, both locally and abroad. eCity Interactive helped create and cultivate a brand identity via this website that clearly articulated the Federation’s impact on the community as well as convey the importance of getting involved, be it financially or through volunteer work./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/zenZen/a/divdiv class=field-item odda href=/project/viewsViews/a/divdiv class=field-item evena href=/project/panelsPanels/a/divdiv class=field-item odda href=/project/dsDisplay Suite/a/divdiv class=field-item evena href=/project/mediaMedia/a/divdiv class=field-item odda href=/project/feedsFeeds/a/divdiv class=field-item evena href=/project/location_feedsLocation Feeds/a/divdiv class=field-item odda href=/project/locationLocation/a/divdiv class=field-item evena href=/project/gmapGMap Module/a/divdiv class=field-item odda href=/project/beanBean/a/divdiv class=field-item evena href=/project/profile2Profile 2/a/divdiv class=field-item odda href=/project/rulesRules/a/divdiv class=field-item evena href=/project/schedulerScheduler/a/divdiv class=field-item odda href=/project/search_apiSearch API/a/divdiv class=field-item evena href=/project/taxonomy_menuTaxonomy menu/a/divdiv class=field-item odda href=/project/hierarchical_selectHierarchical Select/a/divdiv class=field-item evena href=/project/calendarCalendar/a/divdiv class=field-item odda href=/project/webformWebform/a/divdiv class=field-item evena href=/project/webform_reportWebform Report/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=/node/2038195eCity Interactive/a/div/div/divdiv class=field field-name-field-profiles field-type-user-reference field-label-abovediv class=field-labelTeam members:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/user/512836hessam61/a/div/div/div
Categories: Drupal Feeds

Pronovix: The WalkHub distribution now has a recorder!

Fri, 06/27/2014 - 8:12am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpIf you’ve installed your own WalkHub you’ve been able to use the Walkthrough recorder for a few weeks now. But yesterday after adding a few UX improvements we’ve now also released the Walkthrough recorder on a href=http://walkhub.netWalkHub.net/a. With it, it is now extremely easy to create Walkthrough tutorials: /p/div/div/div
Categories: Drupal Feeds

Code Karate: Drupal 7 Jammer Module

Fri, 06/27/2014 - 7:19am
div class=field field-name-field-ddod-video field-type-file field-label-hiddendiv class=field-itemsdiv class=field-item evenimg src=http://codekarate.com/sites/default/files/styles/large/public/media-youtube/p7OEJMb5W_E.jpg?itok=OX9aIoEL alt=Drupal 7 Jammer Module - Daily Dose of Drupal episode 156 //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpIn this episode of the Daily Dose of Drupal we go over the a href=https://www.drupal.org/project/jammer rel=nofollowJammer module/a. This simply module allows you to show/hide content type elements from various roles./p/div/div/div
Categories: Drupal Feeds

Greater Los Angeles Drupal (GLAD): Greater Los Angeles Drupal Partners with Microsoft BizSpark

Fri, 06/27/2014 - 4:15am
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpimg src=https://drupal.la/sites/default/files/ms-bizspark.jpg width=315 height=141 vspace=5 hspace=10 alt=Microsoft BizSpark align=right / We're excited to announce our partnership with a href=http://www.microsoft.com/bizspark/Microsoft BizSpark/a, a program that provides support to software entrepreneurs. /p pFor a limited time, Greater Los Angeles Drupal members can sign up and receive the Ultimate MSDN subscription (worth up to $13,000 in software licenses) and $150 / month of a href=http://azure.microsoft.comWindows Azure/a. Rumor has it that the BizSpark benefits may change in July, 2014, so we encourage you to sign up as soon as possible. /p pTo qualify, you must be:/p ulliActively engaged in development of a software-based product or service that will form a core piece of its current or intended business /liliPrivately held and in business for less than 5 years, and /liliBringing in less than US$1 million in annual revenue /li/ulpThis program is not for consultants or agencies. For any questions about eligibility, see Microsoft's a href=https://www.microsoft.com/bizspark/faqs.aspxSupport amp; FAQs/a./p pInside the MSDN subscription is Azure, Visual Studio and more, all of which can be used by Greater Los Angeles Drupal startups and entrepreneurs who are developing apps (either web or mobile). If you haven't considered Azure for your startup, see the a href=https://en.wikipedia.org/wiki/Windows_azureMicrosoft Azure/a page on Wikipedia for a quick overview./p pTo get started, a href=https://drupal.la/user/login?destination=contactcontact us/a and select Microsoft BizSpark Program on the the webform. Telling us about your startup is optional and be sure you have a Microsoft ID (outlook.com, hotmail.com, etc.). A Microsoft representative will follow up with you with a personalized link so that you can sign up without the usual waiting period./p pThis is the second time Microsoft has sponsored Greater Los Angeles Drupal. In November, 2011, Microsoft sponsored Droplabs' Drupal Job Fair and introduced our developer community to their a href=http://www.microsoft.com/web/webmatrix/WebMatrix/a development tools. Thanks, Microsoft! We're grateful for your support./p /div/div/divdiv class=field field-name-field-tags field-type-taxonomy-term-reference field-label-inline clearfixdiv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item evena href=/tags/microsoft typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Microsoft/a/divdiv class=field-item odda href=/tags/bizspark typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=BizSpark/a/divdiv class=field-item evena href=/tags/startups typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=startups/a/divdiv class=field-item odda href=/tags/planet-drupal typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Planet Drupal/a/divdiv class=field-item evena href=/tags/webmatrix typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=WebMatrix/a/divdiv class=field-item odda href=/tags/azure typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=Azure/a/div/div/div
Categories: Drupal Feeds

Drupal core announcements: Booting D8CX

Thu, 06/26/2014 - 11:53pm
h2Background/h2 pNow that we're nearly down to single figures for beta-blockers a few of us have started organizing around a D8CX initiative similar to that run during the Drupal 6-gt;7 update. Talk on irc over a month-or-so led to a formal kick-off meeting to set down some goals and get some action items./p h3What is D8CX I hear you say/h3 pBack in the Drupal 6 -gt; Drupal 7 cycle the D7CX initiative promoted/assisted contrib modules porting from Drupal 6 to 7.br / The CX stands for 'Contrib experience', ie its about ensuring the best contrib-module experience for building sites with Drupal 8./p h2Kick off meeting/h2 h3Attendance/h3 pPresent at the meeting were Nick Waring (nickwaring89) (PreviousNext), Dave Reid (davereid) (Lullabot), Tim Plunkett (tim.plunkett) (Acquia) and myself (larowlan) (PreviousNext). Apologies were received from Angela Byron (webchick) (Acquia), Michael Schmid (schnitzel) (Amazee Labs) and Kim Pepper (kim.pepper) (PreviousNext). Although Kim did drop in for the last few minutes./p h3Goals/h3 pIntroductions aside we turned our attention to the group's goals which were agreed as follows:/p ul li Promoting the status of Drupal 8 ports of key contrib modules /li liEstablishing a curated list of modules to report on/li liFacilitating communication to wider the community of key contrib module maintainers' needs (eg testing, funding, sprinters)/li liProviding a centralized location/point of call for those willing to help/sponsor to make first contact/li /ul h3Tools/Process/h3 pWe decided that our primary objective should be to reboot a site similar to a href=http://web.archive.org/web/20130306003344/http://drupalcontribstatus.com/drupalcontribstatus.com (via wayback machine)/a. We discussed re-purposing d8cx.org but @webchick kindly offered the drupalupgrade.info domain.br / img src=https://groups.drupal.org/files/Screenshot 2014-06-27 14.23.17.png alt=screenshot of drupalcontribstatus.com from March 2013 /br / captionScreenshot of drupalcontribstatus.com from Internet Wayback Machine/caption /p h4Proposed features/h4 pWe settled on the following feature-set for the site:/p ul liDashboard on home page showing status/% of modules with links to more detail/li liCall to action 'get involved'./li liPossible 'pledge/chip-in/sponsor' links where module maintainers identify a need?/li liFor each selected module ul liStatus (none/dev/alpha/beta/rc/full)/li li Percent complete (manually set)/li li Status description (text)/li li Upcoming sprints/li li Links to crowd-sourcing campaign if applicable/li li How to help blurb (priority tasks)?/li li Maintainer details/bio/li li Port team/sponsor details/acknowledgements/thanks/li li Latest news/updates/li /ul /li li News feed (of updates/progress) for syndication (twitter/rss)/li /ul pIn addition we planned to have regular (fortnightly) meetings to discuss progress./p h3Promotion/h3 pWe discussed proposed ways to promote the work being done and our status as follows:/p ul ligroups.drupal.org/core post to announce initiative and goals with details on how to get involved (you're reading it - spooky)/li li Regular blog article on port status/milestones reached (eg module x reached beta) - see news feed feature above/li li Regular podcast/lightning talk? (hangouts on air) Regular catch-up with selected maintainer to flag where they're at and where audience can help?/li li @schnitzel has proposed a session on D8 Contrib Module status for a session at DC Amsterdam/li /ul h3Education/h3 pOne of the key items identified is that Drupal 8 might mean some significant refactoring of modules during porting. To this end a Contrib mentoring session similar to core mentoring was proposed, essentially contrib office hours where maintainers/those helping with ports can come to irc and ask questions like 'how should I do this?' 'what happened to y?' 'what's the best way to architect x?'. This is informally happening in #drupal-contribute already but a dedicated Q/A session at regular timeslot(s) via irc made sense. The caveat here would be that the knowledge captured/shared during these sessions be distilled into handbook/documentation pages and/or the examples project. Yes, you must take a blood oath to do so. Seriously./p h3Action items/h3 pMeeting action items were as follows:/p ul lidelDecide on a domain/del and organize hosting (@timplunkett)./li li Start building the site functionality (@larowlan) /li li @nickwaring89 kindly volunteered to co-ordinate site updates/collaborate with maintainers to gauge their needs/status/li li delPost minutes on g.d.o/core /del(@larowlan)/li li delStart building a list of candidate modules to report on/del(@davereid, @kim.pepper)/li li delAssess state of upgrade status for support querying 8.x status /del(@larowlan, @webchick)/li li Reach out to other large Drupal shops/service providers to seek their involvement in the initiative (@timplunkett, @kim.pepper)/li li Reach out to module maintainers of modules identified(@nickwaring89)/li /ul h3Next meeting/h3 pNext meeting 10pm UTC Wednesday 9th of July. This is a rough time-slot for European community members but falls around 8am for Australia and at the end of the working-day for the US. We aim to move to a rolling schedule that would allow the three time-zones of participants (Europe, US, Australia) to be able to reasonably attend two of every three meetings./p h3Want to get involved?/h3 pGet in touch with a href=https://www.drupal.org/user/2854081/contactnickwaring89/a to register your interest in getting involved./p table id=attachments class=sticky-enabled theadtrthAttachment/ththSize/th /tr/thead tbody tr class=oddtda href=https://groups.drupal.org/files/Screenshot 2014-06-27 14.23.17.pngScreenshot 2014-06-27 14.23.17.png/a/tdtd88.72 KB/td /tr /tbody /table
Categories: Drupal Feeds

PreviousNext: Linking to revisionable files in Drupal 7

Thu, 06/26/2014 - 7:51pm
div class=field field-name-field-summary field-type-text-long field-label-hiddendiv class=field-itemsdiv class=field-item even pOur client had some very specific requirements for their project. They needed to be able to insert links to files and they needed to keep the same URL for those files even if the file changed. Those familiar with Drupal will know that by default, Drupal will suffix the newer version of the filename with _0, _1 etc which obviously breaks the URL. Here's how we worked around the issue.../p /div/div/divspan property=dc:title content=Linking to revisionable files in Drupal 7 class=rdf-meta/span
Categories: Drupal Feeds

Exaltation of Larks: Weaving Community with TimeBanks USA: Drupal and Time-Based Alternative Currencies

Thu, 06/26/2014 - 2:50pm
pimg src=https://www.larks.la/sites/all/files/timebanks-timebanking-larks.png width=232 height=140 alt=TimeBanks USA align=right vspace=5 hspace=10 / a href=http://timebanks.org/TimeBanks span class=capsUSA/span/a is a 501c3 nonprofit organization that promotes and supports timebanking. Timebanking was created by Dr. Edgar S. Cahn, who founded TimeBanks span class=capsUSA/span innbsp;1995. /p pTimebanking is a tax-exempt alternative currency system that works like this: if I spend one hour helping you build your website, I earn one credit, or time dollar. You can then turn around and exchange that time dollar by giving it to someone who fixes your refrigerator, coaches you on your resume, or gives you a ride to thenbsp;airport. /p pspan class=dquo#8220;/spana href=http://timebanks.org/what-is-timebanking/The possibilities are endless/a,#8221; according to TimeBanks span class=capsUSA/span. #8220;An hour of gardening equals an hour of childcare equals an hour of dentistry equals an hour of home repair equals an hour of teaching someone to play chess.#8221; It#8217;s different from bartering, because this type of timebanking is based on services (and not goods) between members of anbsp;network./p pThis wasn#8217;t the first time Exaltation of Larks has worked with alternative currencies. We created a virtual economy for a href=https://www.larks.la/case-studies/form-follows-fun-the-making-of-digital-dollhouseDigital Dollhouse/a, a casual game where girls are empowered to become their own interior designers. In this virtual world, it#8217;s possible to trade or regift items like dolls, plants and pets, and work with an in-game currency namednbsp;ddCoins./p pIn addition to our work with TimeBanks span class=capsUSA/span, our experience with timebanking includes working as volunteers with two Los Angeles-area timebanks: a href=http://arroyoseco.timebanks.org/Arroyo span class=capsS.E.C.O./span Time Bank/a and the West span class=capsLA/span timebank cleverly named a href=#8221;a href=http://ourtimebank.timebanks.org/Our Time Bank/a. Our a href=https://www.drupal.org/project/time_machineTime Machine/a project is an experimental Drupal installation profile for communities and organizations looking for turnkey timebanking software for their members and participating businesses andnbsp;organizations./p pTimeBanks span class=capsUSA/span founder a href=http://en.wikipedia.org/wiki/Edgar_S._CahnDr. Edgar S. Cahn/a has spent more than four decades striving for social justice. He began his career working for the Kennedy administration, focusing on alleviating poverty and hunger. He then opened the Citizens Advocate Center, an organization dedicated to protecting the rights of community groups as they interacted with the government. In 1972, Dr. Cahn founded the a href=http://en.wikipedia.org/wiki/Antioch_School_of_LawAntioch School of Law/a, whose curriculum was designed to teach students to practice law for the greater good ofnbsp;society./p pHere at Exaltation of Larks, we have enormous respect for Dr. Cahn: at the age of 80, he is still a rabble-rouser and hell-raiser who is fighting to change the world, and we#8217;re proud to provide him with the technical assistance to further this goal. Dr. Cahn is a true visionary and we hope to work with #8212; and write about #8212; him and his partner, Chris Gray, TimeBanks span class=capsUSA/span#8217;s span class=capsCEO/span, more in thenbsp;future./p h3span class=capsTIMEBANKS/span span class=capsUSA/span#8217;s span class=capsROLE/span span class=capsIN/spannbsp;span class=capsTIMEBANKING/span/h3 pimg src=https://www.larks.la/sites/all/files/timebanks-home-larks.png width=232 height=133 alt=TimeBanks USA align=right vspace=5 hspace=10 / TimeBanks span class=capsUSA/span supports timebanking in myriad ways, including offering onsite trainings nationwide; organizing an annual timebanking conference; hosting webinars and teleconference calls; and consulting individually with clients. The organization helps members connect with local timebanks or create theirnbsp;own. /p pOne of the parts of TimeBanks span class=capsUSA/span infrastructure is a large scale social networking platform named a href=http://timebanks.org/get-started/community-weaver/Community Weaver/a, which has a a href=http://timebanks.org/get-started/community-weaver/hosting-fees/software-as-a-service subscription model/a. There are more than a href=http://community.timebanks.org/400 timebanking websites/a all around the world that rely on it to help manage and organize their timebanking processes, community activities and othernbsp;needs./p h3span class=capsTIMEBANKS/span span class=capsUSA/span#8217;snbsp;span class=capsNEEDS/span/h3 pExaltation of Larks performed a substantial security and performance audit on Community Weaver, a complex Drupal multisite system. We helped TimeBanks span class=capsUSA/span fix critical issues affecting one of their essential online organizational tools #8212; their a href=http://timebanks.org/get-started/community-weaver/Community Weaver/a software. This software platform runs a quickly evolving and iterating network of Drupal websites, so it was vital that the software could be updated and developed sustainably and seamlessly, yet without overriding the autonomous decision-making processes of each chapternbsp;website./p pIn addition, we worked with TimeBanks span class=capsUSA/span to develop a project plan for version 3.0 of Community Weaver and raise the funds to build it; we addressed problems arising from the system#8217;s simultaneous use of both a href=http://wordpress.org/WordPress/a and a href=https://www.drupal.org/Drupal/a; and we helped streamline the organization#8217;s decision-makingnbsp;process./p pTimeBanks span class=capsUSA/span needed extensive rework on their a href=http://timebanks.org/get-started/community-weaver/Community Weaver/a software, specifically with regard to security, performance and usability issues. Community Weaver is an online organizing and tracking tool for timebank members: it records time exchanged, displays service offers and requests, keeps track of memberships, and displays announcements for the community. Any local timebank can subscribe to TimeBanks span class=capsUSA/span#8217;s a href=http://timebanks.org/get-started/community-weaver/hosting-fees/software-as-a-service /a (SaaS) system to manage their members#8217; work. TimeBanks span class=capsUSA/span hired Exaltation of Larks to audit and rework Community Weaver 2.0, with the plans to eventually migrate all their technology, online memberships and e-commerce data to versionnbsp;3./p pTimeBanks span class=capsUSA/span was also experiencing security problems with its self-hosted a href=http://wordpress.org/WordPress/a website, which was outside our original scope of work. TimeBanks span class=capsUSA/span used our emergency support system and we quickly mobilized to resolve this new issue. We determined that security had been compromised and implemented several solutions to tighten it up, from checking the code integrity to updating MySQL access and hardening filenbsp;permissions./p pIn addition to our work with TimeBanks span class=capsUSA/span, we worked with the a href=http://arroyoseco.timebanks.org/Arroyo span class=capsS.E.C.O./span Time Bank/a, one of the many timebanks affiliated with TimeBanks span class=capsUSA/span. Arroyo span class=capsS.E.C.O./span serves neighborhoods in the eastern and northeastern Los Angeles area, which meant the Larks who were in the Downtown Los Angeles area could work with themnbsp;one-on-one./p h3span class=capsOUR/spannbsp;span class=capsSOLUTION/span/h3 pWe began by tackling the security issues found in Community Weaver. Fortunately, TimeBanks span class=capsUSA/span had an in-house Drupal developer, who we worked with on a massive infrastructure audit, focusing on security and performance. This multisite installation had been built by its previous developer with development practices that were common in 2007, before a href=https://www.drupal.org/project/featuresFeatures/a and configuration-in-code became popular. We identified which multisite instances had been modified by their local chapters#8217; coordinators #8212; which meant examining data structures, views, and content types across hundreds of Drupal websites #8212; and which had unsafe code or configuration. We found security vulnerabilities through the entire stack, from the Drupal systems and websites down to the server operating system, all of which we documented, prioritized and / ornbsp;resolved./p pThis was an extensive audit that had both technical and political ramifications. Each chapter is run by its coordinators and volunteers and sometimes in completely different ways than other chapters. In a multisite environment, making technical decisions for the entire fleet of a href=http://community.timebanks.org/hundreds of websites/a would impact all local chapter websites that had been modified for their own businessnbsp;cases./p pWe worked in conjunction with TimeBanks span class=capsUSA/span to devise policies and joined them on many global community conference calls #8212; open to all coordinators of all the timebanks in the world #8212; to describe our technical approach and to solicit feedback. Our task was to provide technical leadership for the entire organization. We needed a set of standards for sustainable development of this enormous network, but we also needed to respect each individual chapter#8217;s right to make its ownnbsp;decisions./p pThe project plan we provided included time estimates to address the security problems we found. TimeBanks span class=capsUSA/span#8217;s tech coordinators reviewed our list of most-needed fixes and then we consulted with a local timebank coordinator and Community Weaver user to make sure these fixes matched their timebank#8217;s list of essentialnbsp;tasks./p pWe worked with several popular web hosting providers, including Drupal-as-a-service platform companies, to negotiate competitive pricing on behalf of TimeBanks span class=capsUSA/span. Due to their unique system and web application architecture, we recommended a href=https://www.softlayer.comSoftLayer/a based on their features andnbsp;pricing./p p align=centerimg src=https://www.larks.la/sites/all/files/timebanks-community-weaver-larks.png width=465 height=282 hspace=5 alt=TimeBanks USA Community Weaver border=0 //p pThe unfortunate multisite architecture that the prior developers had devised had the result of creating exponential complexity precluding any proper maintenance and further development on the system. We navigated our way through thousands of lines of uncommented custom code. We also found that the Linux server environment was an abandoned and unsupported custom distro. In both cases, we replaced as many unknown components as possible with stable, peer-reviewed alternatives and we documented the rest. We also stabilized the system by locking down the kinds of changes that individual coordinators could make to their individual timebank chapter websites, thus reducing future maintenancenbsp;costs./p pWe fixed several security issues in the system by altering file permissions, MySQL accounts, and text input filters. We used a href=https://www.drupal.org/project/php_filter_lockspan class=capsPHP/span Filter Lock/a, a module we developed that disables the text form fields that contain span class=capsPHP/span code, thereby mitigating the risk of span class=capsCSRF/span and span class=capsXSS/span security threats on websites that have the core a href=https://www.drupal.org/documentation/modules/phpspan class=capsPHP/span Filter/a modulenbsp;enabled./p pOn the same server as the Drupal multisite network was a WordPress marketing website. This in itself is not a problem. Exaltation of Larks#8217; position is that WordPress is great for simple websites and Drupal is great for complex systems and web applications. Having both on the same server created unnecessary security issues, however. The WordPress installation was technically able to overwrite anything on the Drupal side as well as access the Drupal database. We changed all MySQL usernames and passwords and locked down the file permissions so that the WordPress website could no longer be overwritten or be a risk to other software on the server, including Communitynbsp;Weaver./p pNext, we worked with TimeBanks span class=capsUSA/span to develop the requirements for the next version of Community Weaver. The materials we developed included specifications for a fully featured mobile app, a business plan with financials and pitch deck, and more, and were designed to help TimeBanks span class=capsUSA/span secure additional funding. In the meantime, we trained a member of their community to maintain the software so they could further reduce their total cost ofnbsp;ownership./p pExaltation of Larks also provided TimeBanks span class=capsUSA/span with communications strategy consulting services. We performed a 360-degree organizational audit and came up with a more streamlined decision-making process. We created flowcharts of all the key players and stakeholders at TimeBanks span class=capsUSA/span and highlighted the points at which they had both strengths and weaknesses, and made recommendations where more efficiency wasnbsp;needed./p h3span class=capsCOMMUNITY/spannbsp;span class=capsINVOLVEMENT/span/h3 pTimebanking has evolved very differently in other parts of the world in ways that no one could have predicted. Nowhere is this emergent behavior more apparent than in highly populated cities, where the numbers, density, and different practices around timebanking create vastly different needs. One such advanced timebank is the a href=http://arroyoseco.timebanks.org/Arroyo span class=capsS.E.C.O./span Time Bank/a in Los Angeles, which has thousands of members across dozens of separate neighborhoods. They needed several custom workflows implemented on their individual timebanking website to manage the scale that had resulted from their impressive growth. By its very nature, the timebank had no money for further development on their individualnbsp;website./p pBarnraisings are a concept taken from Amish culture, where the community comes together to build a barn for a newly married couple who wouldn#8217;t be able to afford the time or expense of building a barn on their own. In the context of web development, barnraisings are like code sprints where the programming community gets together with a deserving nonprofit, and works with them to create or improve their software. For the development community, this is a teaching experience, and newer developers get to learn from seasoned veterans about client relationships, requirements gathering, project planning and the tools used for effective teamwork. The nonprofit brings food #8212; usually excellent food #8212; and everyonenbsp;benefits./p pStarting in April, 2012, the Larks partnered with a href=https://droplabs.net/news/coders-with-a-cause-at-droplabs-uniting-the-drupal-and-time-banking-communitiesDroplabs/a and arranged three separate barnraisings to build new features for the a href=http://arroyoseco.timebanks.org/Arroyo span class=capsS.E.C.O./span Time Bank/a. Not only was a good time had by all, the team built functionality that the Larks turned into Features-based modules that could then be securely distributed to the other timebanks, to be turned on, or not, according to the wishes of each individual timebank coordinator. Features built included a custom registration workflow, neighborhood-specific blogs, and structured data types for content, amongnbsp;others./p h3span class=capsPROJECT/spannbsp;span class=capsOUTCOME/span/h3 pPrevious to Exaltation of Larks coming on board, TimeBanks span class=capsUSA/span had been working with a different development company. The Community Weaver software proved challenging to rework and over the 2 years we worked together we ensured that key security and performance problems with the software werenbsp;resolved. /p pTimeBanks span class=capsCEO/span Chris Gray says of the project: #8220;Given the importance of the software for the mission and vision of span class=capsTBUSA/span, and given how much we had to learn, this was a very intense experience fornbsp;us.#8221; /p pIn addition, with the help of the volunteers at the barnraisings, we added several new features to the Community Weaver software, including a a href=https://www.drupal.org/project/cw2_blogsblog post/a content type and span class=capsRSVP/span feature that integrates with the a href=https://www.drupal.org/project/cw2_eventsSignup/a module. These features directly benefit all the hundreds of TimeBanks chapters around the world that use the same Drupal distribution of Communitynbsp;Weaver./p pspan class=dquo#8220;/spanAll members of the Larks team, from the principals to the project leader to the programmers, demonstrated that they cared deeply about the quality of the work undertaken,#8221; Chris Gray said. #8220;[They] provided many hours of consultation to this endeavor. We are truly grateful for those contributions. Under challenging circumstances, they provided highly professional services to span class=capsTBUSA/span. We greatly appreciate the professionalism of the Larks and the ongoing willingness to go above andnbsp;beyond.#8221;/p div class=field field-type-filefield field-field-casestudy-images div class=field-items div class=field-item odd img class=imagefield imagefield-field_casestudy_images width=465 height=281 alt= src=https://www.larks.la/sites/all/files/timebanks-timebanking-larks.png?1403812766 / /div div class=field-item even img class=imagefield imagefield-field_casestudy_images width=465 height=266 alt= src=https://www.larks.la/sites/all/files/timebanks-home-larks.png?1403812766 / /div div class=field-item odd img class=imagefield imagefield-field_casestudy_images width=465 height=282 alt= src=https://www.larks.la/sites/all/files/timebanks-community-weaver-larks.png?1403812773 / /div /div /div pa href=https://www.larks.la/case-studies/weaving-community-with-timebanks-usa-drupal-and-time-based-alternative-currencies target=_blankread more/a/p
Categories: Drupal Feeds

Chapter Three: Branch Naming

Thu, 06/26/2014 - 11:07am
p dir=ltrHaving a good workflow is important. A workflow that is repeatable and consistent makes your life easier./pbr / br / p dir=ltrI create a branch for every Drupal core issue that I work on and use the issue’s node id as a branch name. For example:/pbr / br / p dir=ltrcodegit checkout -b 2284103/code/pbr / br / p dir=ltrThis system has many advantages, especially if you work on multiple patches. It’s also quite easy to implement. If you are reading an issue on a href=https://www.drupal.orgDrupal.org/a, you already have the branch name. From there, it’s as simple as copying and pasting from the url. If you have a href=https://gist.github.com/trey/2722934#bash-fancinessgit shell completion/a installed, you can change your command prompt so that you know which issue you are working on by glancing at the terminal prompt./p
Categories: Drupal Feeds