ICS celebrate International Volunteer Day by launching their new blog containing a rather special blog post from Parliamentary Under Secretary of State for International Development, Lynne Featherstone.Blogs: Drupal PlanetTags: BlogBloggingDrupalWeb Design
Hello dear reader!
At this post I would like to talk, how to help Drupal and get prizes from Google. This post is intended for pre-university students, who like to programming, interface design, or writing documentation for software products and like Drupal of course. if you are such a student, I suggest you take part in the Google Code-In.
At first you have to Sign up on Code-in.
Then you can find a task by Drupal.
Select a task from the task list. Please choose a task suited to your skills.
I advise you, as well you must learn the basics of GIT. Git is really helpful program, it have very many features that can help you in your Code-In tasks.
With it you can: copy the code repository and synchronize it with the latest updates, check the changes in some file and make commit, send your commit to Drupal.org or extract it like a patch.
I chose such task:
Same there are tasks:
andTask claiming and working
Just click "Claim this task!" button
Wait for a message from a mentor "a task assigned"
- you can start working!
if you do not understand the conditions of the task, contact with mentor by IRC.
if you can not perform the task, do not worry, just click "unclaim task" and try another task.
That's all. If you have any questions, ask them in the comments. Good luck!Tags:
Drush aliases can be a huge timesaver when you’re working back-and-forth between your local dev environment and a remote server. You can clear caches remotely as easily as adding @remote to your usual drush cc all command. Or use the sql-cli command to log into the remote server’s MySQL instance without leaving the comfort of your local command prompt. My favorite is updating my local database to what’s on the remote server: drush sql-sync @remote @local (followed by a coffee break).
International Volunteer Day was established by the UN General Assembly in 1985. Over the years it has become an opportunity for organisations of all kinds to take time out to recognise the contribution of their volunteers.
On this day last year, Ban Ki-moon, the Secretary General of the United Nations said:Personal blog tags: #DrupalVolunteers#IVD2013#ActionCounts
We're getting to the point in the Drupal 8 cycle where the UI's are starting to solidify and we have fairly static markup to write interface tours against.
So to facilitate this, we're going to have a weekly scrum to coordinate pain points, progress and participants.
If you're interested in helping write tours for the Drupal 8 UI or identify and resolve any remaining API issues, please come along to this short meeting (Google hangout).
Here is a how-to for beginners: Install more than 1 Drupal Stack on Acquia DAMP
1. Go to Acquia Dev Desktop Control Panel -> Settings… -> Sites. You will arrive at this page below. Instead of clicking “New…,” which will give you a new instance of Drupal on your current stack, click the “Import…” to create a new install.
2. On the Import site, for the “Site path:” choose “Browse…” On this pop up, search for the stack of Drupal you wish to install and click open. The one I have selected is drupal-7.x-dev.
4. If you are doing a new install, for the Database, select “Create new database” and make a new DB name.
5. You can enter the “Subdomain:” and “URL path” of your choice.
6. After you click “import,” Acquia Dev Desktop will take you to the Select an installation profile page. You will see the page below displayed on your browser. Now you can continue with your regular installation.Blog Tags: drupalstackSection: Drupal
The last two weeks have been absolutely ACTION PACKED Drupal 8 core-wise. Let's see if I can remember it all. :)
- The Migrate in Core team had their first core patch land! This provides the underlying architecture for migrations, as well as a variable-to-CMI migration as a proof of concept. Drupal 8 will provide migrations from Drupal 6 and Drupal 7 both. If you're curious to see how it works, read the change notice for a quick overview, and the excellent documentation for more details. BIG congrats to mikeryan, chx, marvil07, bdone, jessehs, mpgeek, BTMash, fastangel, mongolito404, Moshe Weitzman, eliza411, YesCT, dawehner, and cosmicdreams!
- Ding, dong! Overlay module is dead! My ears are still ringing a bit from all of the cheers and applause. :P~ However, rather than the module simply being booted to /dev/null, it has instead been replaced by a nifty "Back to site" button that shows up when you're in an admin context, and takes you back to where you were on your main site:
After extensive usability testing, this solution was found to solve the same "lost context" problem as the Overlay, but with a few thousand fewer lines of code. :) Let us all build nod_ a statue, as well as yoroy, lisarex, and Bojhan from the UX team.
- Alex Pott, single-handedly responsible for almost 50% of the commits in Drupal 8 since he became a core maintainer, is nearing the end of his savings account + Gittip supplements that have allowed him to focus on core full time the past few months. Alex is actively seeking diverse community funding to sustain his momentum independently. If you're a business excited about the new awesome things Drupal 8 will bring, this would be an excellent way to very directly support all of D8 contributors' efforts.
- drupal 8.0-alpha6 shipped, and alpha 7 is due on December 16. Get your patches in now! Here's the current hit-list.
- There were also security releases of Drupal 6 and 7, which we are are in the process of forward-porting to Drupal 8 now. If you can help here to ensure expedient patching, that would be great!
- Performance-wise, remove drupal_add_css(), remove drupal_add_js(), and remove drupal_set_title() are all very close, and fixing these helps to enable render caching, as well as get us to beta 1 sooner.
- If you're interested in learning Drupal 8 OO best practices, the ongoing effort to Convert page callbacks to Controllers and Convert non-controller forms to FormInterface is still happening. Read the docs on how to get started, as well as Form API-specific info.
- The Accessibility team is seeking help with the Green by 2014 initiaitve, which aims to ensure that there are zero accessibility-related test failures by 2014! Read that post for info on getting started.
- If you eat HTML and CSS for breakfast, the ongoing Style Guide for Drupal 8's admin theme effort needs helping hands. See if you can help with any of the issues tagged "styleguide".
- As always, if you're new to contributing to core, check out Core contribution mentoring hours. Twice per week, you can log into IRC and helpful Drupal core mentors will get you set up with answers to any of your questions, plus provide some useful issues to work on.
The best of git log --since "2 weeks ago" --pretty=oneline (232 commits in total):
In addition to the ones mentioned above:
- In PerformanceVille, we're making great progress on removing dynamic page elements to allow render caching to be awesome. Some relevant commits:
- Issue #2115061 by JeroenT, tim.plunkett: Remove direct calls to drupal_add_html_head_link().
- Issue #2102489 by InternetDevels: Remove drupal_set_title in views module controllers.
- Issue #2102449 by amateescu, swentel: Remove drupal_set_title in field_ui module controllers.
- Issue #2102445 by disasm: Remove drupal_set_title in content_translation module controllers.
- Issue #2102369 by vijaycs85, JeroenT, ACF, rteijeiro, -enzo-, tim.plunkett: Remove drupal_set_title in custom block module controllers and entitylist controllers.
See the Where can I help? section for how to help push this area further!
- Meanwhile, in Entity Field API-topia, lots of refactoring that helps bring these APIs closer to solid ground:
- Issue #2047229 by fago, smiletrl, Berdir, effulgentsia, amateescu: Make use of classes for entity field and data definitions.
- Issue #2076445 by plach, andypost, yched, Gábor Hojtsy: Make sure language codes for original field values always match entity language regardless of field translatability.
- Issue #2142549 by amateescu, yched: Support multi-column field types in base tables.
- Issue #1988612 by effulgentsia, yched, Wim Leers, Berdir, Pancho: Apply formatters and widgets to rendered entity base fields, starting with node.title.
- In "API changes you should be aware of" Land:
- Issue #1998638 by damiankloip, dawehner, kim.pepper, cosmicdreams, larowlan, Damien Tournoud: Replace all remaining superglobals with Symfony Request object removed all instances of $_GET, $_POST, and so on with the Symfony Request object. So from now on, just say "no" to $GLOBALS!
- Additionally, Issue #2131851 by tim.plunkett: Form errors must be specific to a form and not a global changed the signature of various form error-handling functions to now take a $form_state argument.
As always, see Change records for Drupal core for the whole list of Drupal 8 API changes.
- From the Isle of Usability, we bring you:
- Issue #675446 by mgifford, RobLoach, amateescu, nod_, longwave, oxyc, rteijeiro, tomyouds, Jelle_S, mcrittenden, Sutharsan, hansyg, Angry Dan, clemens.tolboom, droplet | Dave Reid: Use jQuery UI Autocomplete (instead of our own custom, less-accessible version)
- Issue #1255696 by dagmar, lslinnet, swentel, jenlampton, sun: Move field type modules into separate 'Field type' package (to help break up the modules listing some)
- Issue #1986074 by LewisNyman, Outi, mcjim, edward_or, ry5n, Bojhan, yoroy: Buttons style update. I mean, seriously, just *look* at how awesome our buttons are now!
- And finally, from the Developer Experience-opolis, two big wins to tell you about:
- Issue #2138867 by chx: Allow dangling commas in annotations makes annotations approximately 56,832% less annoying to work with
- Issue #2118991 by Berdir, dawehner: Use abstract service definitions to minimize copy & pasted service definitions is a huge win for the ongoing fight against verbosity.
Blog posts about Drupal 8 and how much it's going to rock your face.
- Vijay Nandwani and Matthew Lechleider put together a great tutorial on how to add a user interface "tour" of your module using Drupal 8's Tour module.
- December 3 was International Day of People with Disabilities (IDPwD), and Dries marked the occasion with a write-up of all the ways Drupal aims to be an inclusive community and platform. Jesse Beach made a sister post celebrating the individuals who help make our stellar accessibility possible.
- As part of their ongoing Drupal 8 Field API series, yched, swentel, and amateescu wrote an article about entity (form) displays and display modes, which does a deep-dive into this API and the improvements it offers over Drupal 7.
- Also in Field API land, check out Ivan Zugec's tutorial on How to Create a Custom Field Formatter in Drupal 8. It demonstrates turning a regular ol' boring link field into a snazzy YouTube player embedding link field!
- For the more design-inclined, Danny Englander wrote a great guide on porting your theme from Drupal 7 to Drupal 8 (Get Twig-gy With It). This goes over the syntax changes, file changes, and more. And best of all, it's pretty short! :)
- Steve Burge from Open Source Training provides an overview of the major changes in Drupal 8 since September in The State of Drupal 8: November 2013. Useful if you've missed a few installments of This Week in Core.
- If you want a more extensive D8 deep-dive, yours truly will also be giving a Webinar on Drupal 8 and what to expect on Tuesday, Dec. 10. Be there or be square! ;) (but please, no heckling. :D)
- DrupalCamp Vienna happened Nov 22 - 24, and Josef Dabernig posted a great summary of the event.
- Among the sprinters was Janez Urevc who organized a Drupal media sprint at DrupalCamp Vienna and wrote up a summary of the results. Awesome work! Janez is running regular media initiative meetings the first friday of every month, which puts the next one this Friday, December 6 at 8 p.m. GMT
(please help me I do not understand time)
- This coming weekend (December 7-8) has been dubbed Drupal Sprint Weekend, there will be sprints literally all over the globe! Check out London, Manchester, Phillipenes, India, Japan, Boston, and New York City! If you ever wanted to get involved in core and didn't know where to start, now might be a great time. :) There's also an upcoming Drupal Global Sprint Weekend on January 25 and 26 so if you missed the boat this time around, be sure to get your local community on the map next time!
- If Drupal 7 is more your style, there's also the D7onD7 virutal sprint, to try and give D7 contrib some extra love.
- Camp-wise, there's Drupagora in Paris on December 5, and DrupalCamp Chicago on December 7.
Do you follow Drupal Planet with devotion, or keep a close eye on the Drupal event calendar, or git pull origin 8.x every morning without fail before your coffee? We're looking for more contributors to help compile these posts. You could either take a few hours once every six weeks or so to put together a whole post, or help with one section more regularly. Contact xjm if you'd like to help communicate all the interesting happenings in Drupal 8!AttachmentSize Screen Shot 2013-12-04 at 9.43.31 AM.png15.83 KB
Whether you’ve been handed an existing Drupal site by your IT department or you’re starting from scratch, it’s important for a Marketer to fully understand how Drupal is put together. Understanding the different systems and layers will help you make better marketing decisions and build content that takes full advantage of Drupal.
This blog post may get a little deep, but don’t worry. If you come away with just a few good concepts about Drupal then you’re doing fine and you can always refer back to this post as you need to. (bookmarks are your friend)
These systems are the key parts that make up a Drupal site:
- The Theme Layer sits on top of your Drupal site and has final say on how things look to your site visitors.
- The Taxonomy System gives you the ability to categorize and tag your content.
- The Node System determines what a “content” is and how it is structured
- The User System creates separate “accounts” for each logged-in visitor.
- The Path System allows you to create site structure in your URLs
The best websites separate the look and feel from the content. That is, in theory, what the theme layer in Drupal does. You or your developer can create a Theme that is made up of CSS and a bit of php (don’t worry, it’s easy or mostly done for you in the theme) to create a look for your site.
For those who prefer a more visual representation, here's a great graphic Drupal.org created to explain theming architecture:
According to Drupal.org, "All layers can implement a themed representation of the output, but (with a few exceptions) only within the theming layers can overrides occur." So, making a single change to the theme will carry down to every single page of your Drupal site.
If you need a certain landing page to be different, it’s very easy to create a separate theme file for just one page. (see "page" section on that link)
Prefer that all your blog posts to have a different font size? You can easily theme content types separately.
Want to hide certain blocks on a form page? You can hide certain blocks on a form page.
Here's a 20 minute video from our friends at Drupalize.me that will help you understand all this a bit more: Introduction to Theming Basics.
If you only understand those few things then you're already well on your way!The Taxonomy System
Taxonomies are used to classify and categorize website content. In other words, they allow you to create a tags to help organize your content within your selected content type. Tags are essential to keeping your content organized and well-structured.
They are helpful internally to the editorial team writing articles so they have a place to nest their content on the site, or to the sales team when they're looking for a past example to help sell a lead on choosing their company's services. Tags also help website visitors find what they're looking for. After all, what's the point in having content if the consumers of that content can't find it?
Overall tag categories are collected in what are called vocabularies. Under vocabularies there are terms or tags followed by sub-terms/sub-tags. An example of this would be a events business with several different service offerings they cover on their blogs. So, there could be a vocabulary called Weddings or another called Birthdays or a third called Corporate Events. Within those vocabularies, tags could include venues, decoration, or catering with sub tags like indoor or outdoor. This video from BuildAModule has another great example of leveraging taxonomies to create different content categories.The Node System
You’ll hear the words “Content” and “Node” used almost interchangeably in the Drupal world. A node is nothing more than a group of “fields” (or "chunks" if you listen to Jeff Eaton...and I do) that are related to each other.
In other words, a node is a group of fields that all go together. For example, if you put these fields together:
Then you’d have a blog post “Content Type”. The Node system has an easy method for defining all the content types you could ever want. You might have different fields that are needed for a Press Release:
- Body text
- Breakout quote
- Contact first name & last name
- Contact email address
- Contact phone number
or a company event:
- RSVP form
See? It’s easy to put together exactly the fields you need for almost any purpose. Drupal provides you with a “Basic Page” and a few other types. The Blog module gives you a “Blog” type. And, you can easily create any of the types you want.The User System
You might be the only person logging into your site, or you may have a whole team that needs access to the site, or perhaps your consumers can log in and create their own accounts. The User system allows you to manage these users so that everyone may log in securely and access what you want them to access. You do this through creating roles such as: Administrator, Author, Developer or Subscriber.
Within each of these user roles, you can set up user access permissions and restrictions to certain content types, admin features such as modules or appearance settings.
The Path System
Drupal, unlike most other CMSs, does not force any kind of organization onto your content. All content is equal to all other content. That’s right, every new content that is created lives on the main node level of a Drupal site. For example, node/123 is just as important as node/1 or node/1000001. There is no built in categorization or layers in a Drupal website, Drupal assigns a number to each piece of content chronologically and you must create your own unique URL paths. While this may seem daunting, it creates deep flexibility in how you’re able to lay out your website structure. Moz has a great guide to URL structuring that covers best practices that your site structure should follow for SEO and user experience.
Search engines often look at how a website is structured to determine what silos (groups) of content that exist on a site. The bigger or deeper the silo the more likely that the site is an authority on that particular topic - especially if users find the content useful and spend a lot of time on the site, link to it, and share it on social networks.
An overview of Drupal's architecture and how Marketer's can use it to full benefitdrupal, Planet Drupal, drupal marketing
While understanding the architecture of your Drupal site might be overwhelming at first, understanding and utilizing these systems will help you create marketing content intelligently that creates a powerful impact. Take a look at your own site, use this post for reference, or bookmarkt it for later. Have questions? Hit us up in the comments, we're always happy to help.
In the world of content strategy, spreadsheets are a critical tool for planning and communication. In particular, content types are often defined and refined in spreadsheets before they're committed to code or CMS configuration.
It is a very common usecase to display a list of nodes on a page, and one or more blocks that give you the ability to filter by tags or categories. You might encounter such a use case on a "blog posts" or "event list" page. And it would be nice if the filtering wouldn't require a full page reload, but rather just inquire the server for new information, and update the list of content via AJAX.
Fortunately creating a list of posts is easy with the Views Module, and you can also make an exposed form block which will contain the exposed filters for tags and categories.
A problem arises when just the Views module is used: it only has support for displaying taxonomy terms (we use them for tags and categories) as a select list. A module that helps us solve this is Better Exposed Filters. It has support for displaying taxonomy terms as a select list, checkoxes/radio buttons, link list, and hidden values.
First a content type "Blog" should be created with two taxonomy fields for tags and categories, and any other relevant fields. The fields can be either term or entity references.
The next step is creating a view that displays blog items. After configuring all the relevant blog settings, the two taxonomy fields should be added as filters.
And afterwards, they should be set as exposed.
Once that is done, assuming the Better Exposed Filters module is installed, the exposed form type should be changed to BEF, and the form can also be exposed as a block.
The last step is changing the BEF settings for the taxonomy fields to be displayed as links.
Once the view is saved and previewed, the list of blog items should be displayed, the exposed form should appear with two sets of links for tags and categories, which once clicked will filter the results to display only posts with the respective tags or categories.
Unfortunately, even if "Use Ajax" was ticked, the filtering will not work via Ajax. This is a known open issue of Better Exposed Filters at https://drupal.org/node/1268150, that still isn't fixed, with the most relevant patch being in comment #81 against the DEV version of BEF.
The patch can be found at https://drupal.org/files/issues/filter_links_ajax.patch, and also in the issue queue at https://drupal.org/node/1268150#comment-8210373.
Once the patch is applied, clicking on the taxonomy links should filter the view via AJAX properly.Language English Tags: DrupalCheck this option to include this post in Planet Drupal aggregator: planet
Recently we have found many of our prospective clients asking us “How are you involved in the Drupal.org community and what do you give back?” which we think is a great question, because it means not only do our clients understand the importance of community contribution, but it means they’re also passionate about working with suppliers who understand the importance of contributing to the Drupal community which is what helps Drupal grow as a platform.
This is important for everybody involved, as many people could argue reasons for and against using different CMS’s, but at the end of the day it’s the strength of the community that really sets Drupal aside from other CMS’s.How do you begin getting involved in the community?
When I was first introduced to the Drupal community I assumed it would be hard to get involved since my initial assumptions were that submitting Modules and patches was the only way to contribute back to Drupal, and since I’m not a back-end developer I thought I’d struggle to get involved here.
Soon enough I found there really is something for everyone, no matter what your skill set is. I began by helping out in the content queue, more specifically by reviewing Marketplace listings. After a couple of months I was given a webmaster role, so I now feel I have my own responsibility within the community! Find out how you can help content moderation here.How does Microserve give back to the Drupal community?
Here is a list of what we have given back to the community and advice on how you can get involved too:Sponsorship/Association
The Microserve team attended our first DrupalCon in Prague this year, and as part of this step we also sponsored the event at silver level. We feel it was a great decision and hope to do the same again next year at Amsterdam, hopefully at a gold level. We would highly recommend it to other agencies, if not for the experience alone. See why you should sponsor here.
We are also Drupal Association Organisation members.
As a Drupal Development Agency we are one of many Supporting Partners that help make it financially possible to maintain and improve drupal.org.Global Training Day Initiative
When we began offering Drupal Training as a service we thought it was only right to host a Drupal Global Training Day. These days are free or low cost training events which are aimed at users who are new to Drupal. We thought the event was a success and was a great boost for Drupal in our local community which helped inject confidence into a variety of users who were uncomfortable with Drupal before attending the event. More information about the day can be found here.Modules/Patches
We have improved modules by submitting patches and helping within the issue queues, we have also submitted a number of our own modules:
Fast database logging and Extended block visibility by Mark Pavlitski
TTR Configurable Widget by Saemie Chouchane (see the accompanying blog post)
Textmarketer SMS Integration by Simon Dix
Who Sends API by Darren Whittington
After submitting Textmarketer SMS Integration, Simon wrote a blog on his experience throughout the submission process. Read it for instructions and tips on how you can submit your first module if you haven’t already.
Textmarketer SMS Integration and TTR Configurable Widget were initially based on features of an existing client project, and with the clients permission we extended this functionality to create modules which other members of the community would find useful. When appropriate we discuss community contribution with clients if we spot any functionality which we think would be beneficial to the community during a project.What else is there to do?
Want to get involved in the Drupal Community too? There are many other ways to get involved in Drupal which we haven't covered above, so you can be sure there will be something to suit your skillset.
Native in a non-English language? Why not help with Drupal translations.
Maybe you're a designer and the thought of technical contributions has deterred you. In that case why not help out with Usability, which is a key part right now with the release of Drupal 8.
How about marketing if this is your area of expertise?
However you choose to contribute it is all beneficial to the Drupal community and you should be proud of your contributions however large or small they may be. It's the users who make up the community and without contribution Drupal wouldn't be what it is today. We will continue to contribute wherever is possible and we hope anybody reading this will do the same!
Microserve are listed as just 1 of 10 drupal.org recognised Featured Service Providers within the UK. You can see our listing here to see more about us and find out about our individual team members - https://drupal.org/marketplace/microserve
This video showcases a Drush plugin called DSLM which stands for Drush Symbolic Link Manager. It's an alternative to core multi-site which puts the developer first when managing lots of sites in the same area. There are also a few patches I have in the queue that add additional functionality like sharing of large chunks of modules, themes, and libraries.
In this video tutorial we'll cover how to upgrade from Drupal 7.23 to Drupal 7.24. It's pretty painless, but there's a few tricks to it.
Author: Vijay Nandwani
Mentor: Matthew Lechleider
This tutorial would describe how can Drupal 8 module developers create a user interface tour for their own modules.
This tutorial would be about one of the most awaited features of Drupal 8, the Tour module. It can help developers create tours for their modules, which would benifit users.
It's amazing how the Drupal community has come together to raise funds for me on Gittip. So far I've received nearly $7000 in total. Without these funds, I would have been unable to meet my costs over the past four months and devote so much time to working on Drupal 8. On Gittip giving is anonymous, so I have no idea who to thank individually -- so thank you all!My situation
As I wrote in my last blog post announcing my fundraising drive on Gittip, my savings are finite, and my weekly income of $422 is no longer enough. In truth, to cover my costs I need $9000 a month before tax. In many ways I'm not the best guinea pig to become a fully funded core Drupal developer. I live in London, one of the world's most expensive cities, and I have a young family.
Currently I'm working at least 40 hours a week (often many more) on core. I'm one of the five people responsible for reviewing and committing changes to the Drupal 8 codebase. Since March this year I've committed 1425 patches (47% of all the commits during this timeframe) and reviewed thousands of lines of code. I'm also focusing on completing the Configuration Management Initiative (CMI). I've been able to do so much because I'm working exclusively on Drupal 8 full time.What I'm looking for and why
I would love to be able to maintain my current commitment to working on core. In an ideal world I would be able to do so by being entirely community-funded. This means my weekly target is $2000. So I'm raising my Gittip target to this level and appealing to the community for bright ideas and solutions.
At the moment I'm not beholden to any single enterprise's or company's demands because all of the money I receive is donated anonymously through Gittip. Most of the funding opportunities I've been offered over the past few months have had corporate strings attached. I've chosen not to pursue these because I believe in the value of independence and a balance of interests. A diversely funded Drupal core team benefits Drupal and its community.Backup plan
Obviously with the responsibilities I have to my family I would be remiss to not have a backup plan. It feels extremely unlikely (but you never know) that we'll be able to raise $2000 per week for me on Gittip. By the end of December my own funds will run out and I will have to get a job. This will mean that most of the forty-plus hours I currently devote to maintaining Drupal 8 core and to CMI will no longer be possible, unless I am specifically employed to do these things.
Drupal core has been built on the unpaid contributions of thousands of people, supplemented by funding for specific projects and company-sponsored contribution time for developers. Increasingly, however, some companies -- notably Acquia with the OCTO (Office of the CTO) team -- are recruiting people to work nearly 100% of their time on core.
This would make Acquia an obvious place to look for a job, but I don't think it would in the best interests of the Drupal community for me to work there at this time. Acquia's contribution to Drupal is exemplary, but contribution on such scale has led to concerns of undue influence. I'd like to help resolve these concerns rather than add to them.
Recently the WordPress company 10up wrote about the value of sponsoring full-time contribution to an open source project. We need more Drupal companies to step up and do something similar. So if your Drupal company has vision and recognises the benefits that a culture of contribution brings, get in touch!Tags:
[Skip to any section because you can]
I have been working in software development a long time. Early on I recognized the need for Process as a way of re-using best practices for teamwork. At that time, Process implied for most of us the Waterfall model, which divides a development project into discipline based phases, each to be visited once in turn, in a kind of cascade: Requirements; capture the requirements, do the Design, Implementation, Verification and Validation, Deploy, then shift into Maintenance mode. Most people still follow that model implicitly, it has stayed in the everyday consciousness of process, much like Newton's laws instead of the Theory of Relativity, much like the reactionary and sinister theory of Creationism over the scientific Theory of Evolution kicked off by Charles Darwin. But project difficulties and even failures based on the extremely high propensity (40% minimum) for requirements to change within the life-cycle of a project moved me to recognize the necessity for an Iterative and Incremental model. And when that became too top-heavy, at least in its wonderful, eye-opening but hard to tailor and work with Rational Unified Process, I moved on to a kind of personal synthesis of CMMI (love that continuous improvement and organization wide adoption!) and Agile and Scrum approaches. More recently I have loved the simpler work in process and visual approach of the Kanban as a lean variety of Agile:
“Some Agile methods take a more flexible approach to time than Scrum does. (For example, Kanban does away with the notion of a two-week batch of work and places the emphasis on single-piece flow.) But you can still make time within a Scrum sprint in which creative activities can take place.” Gothelf, Jeff (2013-02-22). Lean UX: Applying Lean Principles to Improve User Experience. O'Reilly Media.
When it comes to building survey style forms in Drupal, you really can't beat Webform. The module allows editors to create great looking forms directly within Drupal and the results can be exported out.
So for example, if you create a competition form using Webform, you could add a checkbox which allows users to subscribe to an email list on MailChimp directly from the form.
In this tutorial, I'll show you how to add a "Subscribe to newsletter" checkbox on any form created using Webform.
For the International Day of People with Disabilities (IDPwD) today on December 3rd, I want to take some time to reflect on the Drupal community’s work to support universal access to information technology. Drupal is an inclusive community, both in how we interact with each other and in the results of our work.
We understand the need to create software that is accessible, both for consumption and production of content. Our accessibility statement opens by saying:
As an inclusive community, we are committed to making sure that Drupal is an accessible tool for building websites that can also be accessed by people with disabilities.
Donna Benjamin and Jesse Beach wrote a great overview of the accessibility improvements efforts in Drupal 8. It will meet higher standards of access than our previous releases. As developers and site builders, we continue to incorporate new techniques and access technologies into Drupal. Accessibility to the core.
As a community, we're proud and thankful for the efforts of all those who have contributed time and energy writing, reviewing and testing patches aimed at improving the accessibility of Drupal. There is much work still to do. If you are able, please join the accessibility effort to make sure our next version is our best yet. Thank you!
About a week and half ago, we announced that the Association board approved our 2014 Leadership Plan and Budget. On Monday 2, December, we hosted a community all to discuss the details and share a little more in-depth our thinking and reasoning in the plan. I really want to thank the community members who came out and spent an hour reviewing the details with me! If you were unable to make it, that's ok! We recorded the session for you.
Check out the recording below, and please peruse the relevant documents
Realityloop: BitTorrent Sync and Drupal - Part 1: BitTorrent Sync powered, headless, Drupal photo gallery
Not even 24 hours after the release of the BitTorrent Sync (BTSync) API, an API that I was eagerly awaiting, we were happy to be able to release arguably the first implementation of said API in the form of the BTSync API Drupal module, and only a few weeks later I personally released a Beta release of the BTSync Field module.
Since then I've been planing on putting together both a text and a video tutorial/demonstration on exactly how one would use the modules, and maybe to touch on future plans I have working with the BTSync API. I was also approached by BitTorrent's Kathie Pham with interest in showcasing the work I have done with the API at Realityloop and in my own time, so even more motivation to get something put together.
I've decided that all the things I would like to demonstrate would be too much for a single post, so instead I will be doing multiple posts over a period of a few weeks (hopefully).
The Tutorial: BitTorrent Sync powered, headless, Drupal photo gallery
There are so many things that the API could be used for, I personally have many plans for future modules, more ideas than time, but the one thing that appealed to me the most, and the idea that the tutorial/demonstration is going to focus on, is photo galleries.
My father is a hobbyist photographer, and like many other web developers out there I have at one time in my past tackled the job of building a website for a family member, both pre and during my time working with Drupal; pre-Drupal with a manual process of image resizing, and using ImageCache/Image styles to automate the process with Drupal.
What I found is that no matter how easy you make a system, and there are so many things you can do to improve the usability in Drupal, it can always be made simpler.
The appeal of BTSync for a photo gallery site, to me at least, is the ability to manage the content in a completely headless state; no need for your users to log into the site at all, just drop their photos in a folder and they're done. This is exactly what I will be demonstrating below.
This tutorial will cover:
- How to setup the BTSync API module
- How to setup the BTSync Fields module
- Setting up a basic BTSync powered photo gallery
This tutorial assumes:
- An API enabled BTSync sever; see 'Enabling the API' in the Developer documentation
- A fresh 'Standard' install of Drupal 7
- A basic understanding of Drupal site building
Part 1 - Installing/enabling the modules.
For this tutorial I used the following modules:
- BitTorrent Sync API 7.x-1.0: http://ftp.drupal.org/files/projects/btsync-7.x-1.0.zip
- BitTorrent Sync Fields 7.x-1.0-beta1: http://ftp.drupal.org/files/projects/btsync_fields-7.x-1.0-beta1.zip
There are various methods of installing Drupal modules, with my personal preference being Drush or Drush make, but I will demonstrate installation via Drupals built in module installer:
- Navigate to your sites 'Install new module' interface: admin/modules/install
- Copy and paste one of the modules URLs, as provided above, into the 'Install from a URL' field.
- Click the 'Install' button.
- Repeat steps 2-3 until all modules are successfully installed.
- Click the 'Enable newly added modules' link or navigate to your sites 'Modules' interface: admin/modules
- Enable the newly added modules; Check the boxes next to the modules and click the 'Save configuration' button.
Part 2 - Configuring the BTSync API module.
Assuming you have already setup your BTSync server and it is API enabled, this step should be relatively painless.
- Navigate to the 'BitTorrent Sync API' configuration interface: admin/config/services/btsync
Note: If you are still on the 'Modules' interface, you can simply click the 'Configure' link next to the BTSync API module.
- Enter the following details:
- URL: The URL of your BTSync API server, likely the same as default.
- Username: The 'login' value as per the configuration of your BTSync API server.
- Password: The 'password' value as per the configuration of your BTSync API server.
- Click the 'Save configuration' button.
Part 3 - Setting up a content type / Configuring the BTSync Fields module.
The BTSync Fields module provides Field types and widgets for Drupals Field system. As of writing this, the 7.x-1.0-beta1 release only contains a single field widget; BitTorrent Sync (basic). This widget allows us to assign or generate a BTSync secret to a File or Image field and when Cron is run it will ensure all eligible files in the sync are associated with the Field. This is the basis of our headless photo gallery.
In this step we are going to setup a new content type and attach a Image field using the BTSync fields widget.
- Navigate to the 'Content types' interface: admin/structure/types
- Click the 'Add content type' link.
- Enter a human readable name for your content type (e.g., Gallery) and click the 'Save and add fields' button.
- Under the 'Add existing field' row, select the 'Image: field_image (Image)' item and update the 'Widget' to 'BitTorrent Sync (basic)'.
- Click the 'Save' button.
- On the next page, make the following changes:
- Required field: Ticked
- Allowed file extensions: jpg, jpeg
- Number of values: Unlimited
Note: These are just recommended settings for the sake of this tutorial.
- Click the 'Save settings' button.
Part 4 - Time to test it all out.
Now that (most of) the hard stuff is out of the way, we can actually test it out and see it working in action. To do so, we will be generating a BTSync secret during the creation of a Node of our previously created Content type, and then using that secret to sync our photos.
- Navigate to the 'Add content' interface (node/add) and click on your newly created Content type (e.g., Gallery).
- Give the content a 'Title' (e.g., BTSync Gallery).
- In the 'Image' field, click the 'Generate secret' button and copy the generated secret.
Note: If nothing happens, it's likely due to mis-configuration of the BTSync API module or that the BTSync API server you defined is currently offline.
- Click the 'Save' button.
- Setup a Sync folder with the generated secret in a desktop BTSync client (or at least an alternate BTSync instance).
- Add some Photos to the folder and wait for them to finish syncing.
When Cron is next run all eligible synced files will be attached to the field and they will display on our newly created gallery.
For the sake of this tutorial, you can force Cron to be run via the 'Status report' interface (admin/reports/status) by clicking the 'run cron manually' link.
Part 5 - Make it pretty(ier).
This approach in itself doesn't make a photo gallery, instead it makes a piece of content with a bunch of images attached. There are many different ways you can work over the display, each with their pros and cons. My preference is generally a Views based solution, but for the sake of keeping things simple I will be using a Field formatter based approach with the Gallery formatter module.
- As per Part 1, install and enable Gallery formatter module, version 7.x-1.3 (http://ftp.drupal.org/files/projects/galleryformatter-7.x-1.3.zip).
- Navigate to your Content types 'Manage display' interface: admin/structure/types/manage/[content_type]/display
- Choose 'jQuery Gallery' on the 'Format' dropdown on the 'Image' field.
- Click the 'Save' button.
There you have it, a simple BTSync powered, headless, Drupal photo gallery.
In the next post I will be covering over how to integrate with the BitTorrent Sync API module directly and with the Rules module, keep your eyes peeled.Tags: drupal planetdrupal 7btsynctutorial