Where the real world changes into simple images, the simple images become real beings and effective motivations of hypnotic behavior.
This is a simple module that provides buttons to increase or decrease font sizes. It does this by adding a .font-large class to the <body> element.
You simply need to add the aGov text resize block to a region in your theme (e.g. header) and then write CSS rules in your themes stylesheet to handle body.font-large.
This module doesn't include any styles, as this will vary from theme to theme.
Part of the aGov suite of modules.
I've been a long-time Omega themer (and I especially love Omega 4), but outside of Drupal I always use Bootstrap as a starting point for styling a site. The Bootstrap theme has come a long way since I last evaluated it, so I gave it another try recently. It was tricky to set up a subtheme, so I'm sharing my steps here.
I found some clues from this article, but refined the process a bit.Download the Bootstrap base theme
There hasn't been a stable release of the Bootstrap theme recently (as of the time of this writing), so I grabbed the latest DEV which contains lots of bug fixes and extends Bootstrap theming support into more nooks and crannies of Drupal's interface. If you have drush:drush dl bootstrap-7.x-3.x-dev Create your sub-theme
You could do this the hard way, by copying the "starterkits/less" folder out of the bootstrap theme folder into your own space (e.g., "sites/default/themes", renaming "less" to something like "bootstrap_subtheme"). Or, just use drush:drush cc drush
drush dl bootstrap-wizard
(Choose to make it a sub-theme of Bootstrap, using the LESS starterkit.)Install Bootstrap library source code
Since we're compiling the CSS from LESS, we won't need the Bootstrap distribution, but we will need the source code. Also, the Bootstrap JS files are included via our sub-theme's .info file. So grab the latest Bootstrap 3 release (3.3.4 at the time of this writing) and install it into your sub-theme (in our example above, "bootstrap_subtheme/bootstrap"). The only folders you need are "fonts", "js", and "less".Tweak the sub-theme LESS
Inside the "less" folder of your sub-theme, there are several .less files. The main one is style.less, which is what you'll compile later. It brings in bootstrap.less (which is a copy of the same file in your bootstrap library folder), and then adds Drupal overrides, and then some blank header, content, and footer files.
You can keep your bootstrap.less file as-is, and comment out the components you don't want. Or you can scrap it all and use something like this:@import "variables";
This will import your local variables.less file, and then the rest of Bootstrap's source. Speaking of variables.less, the one that shipped with the starterkit at the time of writing had deprecated Bootstrap variables, so I rewrote mine to basically load in the variables from the Bootrap library and then override the ones I care about. That way I can easily upgrade the Bootstrap library at a later date with minimal need to update my sub-theme's LESS. My variables.less looks like this:// Import Bootstrap's variables, then override them below.
// Update path to fonts.
Note that I changed the icon path. This fixed the references being broken when my LESS compiled to CSS.Compile your LESS to CSS
Compiling your LESS is pretty easy. You need to install LESS first, but it should be as simple as:npm install -g less
Then from your theme's folder, execute the following to compile your LESS into your sub-theme's style.css:lessc less/style.less > css/style.css
That's it! You now have a LESS-powered sub-theme. Add your custom theming to the built-in header.less, content.less or footer.less files. I usually prefer to create a separate file for each type of thing—content type, navigation, homepage, etc). Just remember to remember to reference any additional files in style.less.Last thoughts
Unless you already have it a newer version of jQuery on your site somehow, you'll probably want to install jQuery Update and configure it to use at least jQuery 1.9, the minimum requirement for Bootstrap.
Oh, and don't forget to enable your new sub-theme!Submitted by Joel Stein on April 14, 2015.Tags: Drupal, Drupal 7, Drupal Planet
Allows you to install only the modules and themes from drupal.org. When installed, this module provides two simple features:
- Removes the upload field
- Validates the source URL entered for download (must be from drupal.org)
DrupalCon Los Angeles is less than a month away, and we couldn't be more excited for the great lineup of sessions and training opportunities. We're thrilled to announce that the schedule is now live on the website, so you can begin building your own dream DrupalCon schedule and planning your day. BOFs are also open, so make sure you claim your space soon -- they go quickly!
We recently had a new client contact us and ask if we could move their sites over to Pantheon so they could do some in-house development work. Of course we can do that for you! We recommended doing a Site Assessment for them, just to make sure we know what we're dealing with. Our Site Assessment gives us a good understanding of the state of a client's current site.Securityhacked siteSite AssessmentDrupalmaintenanceDomainsPantheonDrupal MigrationDrupal Planet
Drupal 8 is just around the corner, and the Drupal community is excited!
We want to make sure that as many people as possible can use Drupal 8. However, many new Drupal 8 users will need training, which can be expensive and difficult to find.
So, we started a Kickstarter project to create Drupal 8 training and give it away for free!
Sounds intriguing? Watch the video to find out more ...
If you have been to the Mediacurrent blog before you have probably seen my Top 50 modules lists for Drupal 6 and 7. This current list will be my final update for Drupal 7. My last blog from 2012 was in dire need of updating so I have gone through one last time to give our readers my a good list of modules to start with for their next Drupal 7 site.
If you have visited Drupal.org recently you will notice that there are literally thousands of modules available to download. This can be very intimidating for new users who are just getting started building Drupal sites. The secret for newbies to know is that most developers continually use a few dozen of the same modules on almost every project.
As a 9 year veteran of Drupal I like to share my list of modules that I personally use on almost every site I build. If you are just getting started, this is a good list to begin with. If you are an intermediate or even an expert developer it can be helpful to skim the list to see if there are any modules that can help you on your next project.
Drupal 8 is right around the corner; it's time to start brushing off your old textbooks, taking notes, asking questions, and preparing for all the awesomeness coming your way.
For most of us, Drupal 8 represents a departure from what we've come to know about how to create with Drupal. In short, we've got a learning curve we're going to have to overcome before we can be proficient with Drupal 8. But I'm here to tell you: it’s okay, we're in this together, and, given the proper learning environment and a little bit of guidance, you'll be Drupal 8 ready in no time.
In the glorious words of Douglas Adams, “Don't panic!”
While most of us have a tendency to want to jump right into the documentation and start poring over code samples, this is a good opportunity to take a step back and make sure we're ready to learn before we dive in. So let’s take a minute to think about education theory and the environment we put ourselves in when preparing to learn a new technology. How do we remove blockers from the learning process and set ourselves up for success?
- What is my motivation for learning this?
- Where can I practice what I'm learning?
- How will I know if I have learned the right thing?
How motivated are you?
Are you learning for fun, or for work?
Because you want to, or because you have to?
Our motivation – and our understanding of it – allows us to decide whether it is worth the investment in time and energy necessary to learn something new today – right now – which we may not use until tomorrow.
One of the best ways to assess whether or not you've learned something is to teach it to someone else. Lucky for you, you're not the only one embarking on the quest to learn Drupal 8; there are plenty of opportunities to share your new knowledge with others. Local user groups, co-workers – even friends on IRC – all represent great teaching opportunities. Moreover, these interactions often turn into discussions, and discussions are one of the best ways to get beyond the how and into the why.
Marketing is a key factor to growing Drupal adoption and spreading the goodness of Drupal. One way to do that is by exhibiting at key industry events. The CMS Garden team has done a great job getting Drupal included in some key events in Europe and now the Drupal Association will take on a parallel effort.
The initiative will be an experimental “co-marketing” campaign to promote Drupal in the European marketplace. It is called a “co-marketing” campaign because it will be crowdfunded by a group of Drupal businesses (if you would like to find out how your Drupal business can get involved, keep reading). This is a pilot program that will allow us to experiment with the best ways to promote Drupal in the global marketplace and reach the CMS evaluator audience.
Why Europe? Data from our DrupalCon surveys show that relative to DrupalCon North America, DrupalCon Europe has a higher percentage of developer attendees but a lower percentage of CMS “evaluator” attendees. From that standpoint, it makes sense to target Europe evaluators in this pilot program. The evaluators we are targeting in the pilot program are digital marketers who have significant sway over CMS selection.
So what’s the plan?
This year, Drupal Association will secure exhibit space at two European digital marketing industry events (dmexco in Germany and Festival of Marketing in the UK). We will exhibit as Drupal and together with representatives from the anchor sponsors who have already signed on (including Wunderkraut (Germany), Wunder (UK) and Deeson (UK), we will promote Drupal and the sponsoring companies’ expertise and successes with Digital Marketing and Drupal. Leads generated from the exhibit presence will go to the sponsoring companies. We are offering first right of refusal to sponsor the effort to Drupal Premium Supporting Partners, followed by other Supporters.
Why these two events? There are many events in Europe that target the audiences we want to reach. After researching attendee types, costs and other factors, we determined the abovementioned events make the most sense for this pilot project.
If you would like to learn more about how your business can participate in this exciting initiative, please contact Johanna Bergmann. email@example.com.
Blink Reaction has announced it has begun to offer free live public Drupal training online, in NYC and in other major markets.The free classes will focus on Drupal 8 adoption and will include Site Building classes formerly offered at $799.
Announcing the decision to offer free Drupal training, Blink CEO Nancy Stango explained the decision.
Building a robust Drupal ecosystem requires attention to all the things. We can’t just build great software. For many people formal training is the best way to learn and we need to lower obstacles to Drupal adoption everywhere. Providing this training free of charge on a regular schedule is part of our contribution back to the community.
Included in each free class listing is an appeal to support the Drupal Association by becoming a paid member.Why is this class free?
Providing this class free of charge is one of the many ways we give back to the open source community.
Blink is highly committed to helping organizations and individuals adopt Drupal successfully. At Blink we believe great training helps create great, results-oriented websites. That's a win-win-win for you, Drupal and Blink.
And if you’re interested in Developing for Drupal 8 register for our Drupalcon LA class, ‘Introduction to Symfony/Getting Ready for Drupal 8.’ Half of all proceeds goes to support the Drupal Association.
Blink has been delivering paid public training since 2011 through the Blink Institute and has offered free training during Global Drupal Training days since the start of the program.
Visit our training pages for more information and to register for a free training.
If you’re interested in Developing for Drupal 8 register for our Drupalcon LA class, ‘Introduction to Symfony/Getting Ready for Drupal 8.’ Half of all proceeds goes to support the Drupal Association.
DrupalDrupal PlanetDrupal TrainingPost tags: Trainingdrupal 8
After making it’s first Drupalcon appearance to a sold out crowd in Austin, I’m really excited to be offering an updated version of our class in LA.
Since Austin we’ve offered the class in Drupalcon Amsterdam and Drupalcon Bogota. Each time it has been filled to capacity and tickets are already going fast for Drupalcon LA.
This year we’ve focused even more on the Symfony components that are most important for developing in Drupal 8. We’re spending additional time in Drupal 8 too since we are oh so close to a release.
The class will be led by Blink Drupal 8 Solutions Engineer Jesus Olivas, lead contributor on the Drupal Console project supported by Blink. Jesus will also share some of the latest new features he's built in the Console project. No fewer than eight Blink developers will be supporting Jesus so that we can give each and every participant a hands on experience.
Register for the class now on the Drupalcon LA site.DrupalDrupal PlanetDrupal TrainingPost tags: drupal 8symfonyTraining
I want to share two stories with you.
On a beautiful summerlike day at DrupalCon Amsterdam, we stop at the Drupal Association table, where we are introduced to DA Staff Members JOE SAYLOR, LEIGH CARVER, and RUDY GRIGAR. Then it’s on to HOLLY ROSS (Executive Director, Drupal Association). Erudite cameraman BOB WILLIAMS (Financial Manager, Tag1 Consulting) works the GoPro.
HOLLY ROSS: Yep, so we had a BoF for people who like to knit and are at DrupalCon and it was really great because we all worked on our projects, and we all talked about how we learned to knit. And what I love the most about the fact that there are so many knitters in Drupal is that – I love the relationship between knitting and coding – right? -- like pattern discernment and building – and all the things we talk about that we love about Drupal – it’s all there in knitting, too.
This one is really interesting to me because – well first of all, I’ll just share that we have 2,300 people here – 500 more than Prague. That’s a lot bigger.
What I am reading right now actually is a book called The Last Ship. I don’t recommend it – I hate it – it’s taking me months to read. I’m also concurrently reading a couple of Cory Doctorow books, because I was getting ready to come here and see Cory speak, so I’m reading Little Brother, which is a young adult novel he wrote, which is really really good. And I’m also reading right now, the uh – oh, what’s it called when all the people go to heaven except the bad people that are left on Earth?
RR: Left behind?
BOB WILLIAMS: The Rapture.
HR: The Rapture of the Nerds, that’s it, The Rapture of the Nerds, yeah.Tags: DrupalCon DrupalCon Amsterdam Video Video:
In the last part of our series, we talked about "Agile work at a fixed price". We realized that detailed requirements in terms of a project specification are the key to agile management of fixed-price projects. Today, we’ll deal with those project specifications.
A “specification” describes the results or certain milestones of a project. Thus, it defines what we have to measure in order to find out whether the project is finished, that is: either the requirements are fulfilled – or they’re not. This point harbors the greatest potential for conflict! Neither restrictive contracts nor other contractual pieces of art can help here. Only when both parties know exactly what has to have been implemented by the end of the project, can you:
- Show, prove, demonstrate and understand that everything that should have been done has actually been done
- Check whether a new request is indeed new during the project
- Find out whether changes have negatively affected the software (change management and risk management)
Using some negative examples of a specification, I’ll try to demonstrate what to avoid during a project.
"We integrate social media functions." What does that really mean? The developer may understand this to include a Facebook Like button, a Google +1 button and a Tweet this button. In fact, what the customer would like is to have a portal for his Facebook app. It’s purely a matter of interpretation what social media functions really are and how they should be integrated. Always check that your requirements are clear and without ambiguous wordings.2) Avoid comparisons
"We implement web pages with the same functions as those of awesome-competitor.com." No one knows exactly which functions the competitor’s websites possess in detail. Here again, two different expectations would collide at the end of the project. As provider, you don’t know for sure what features are implemented in the backend. However, if you agree to the statement above, then you must provide these functions. Arguing after the fact with statements like "But I didn’t know that..." doesn’t suffice. The extra costs can be enormous! So, avoid comparisons with other systems in your specification. This might save time in the beginning, but at the end of the project one of the parties could have over twice the expected expenses, which would no longer be controllable.3) Write clear definitions
"We import the current data of the previous software." The data format for new software is usually not the same as for the previous version. Here, it’s important to clarify how the import should take place. Which old fields should be mapped to which new fields? Which validations should be processed, and, most importantly, what does the data format of the previous version look like, exactly, and how can you get this data and map it to the new structure? Clarify these points up front in order to avoid explosive increases in the effort required. In this case, it’s hard to argue using experience from past projects, because it implies that imports in previous projects are similar to the case at hand, which may be true – but usually isn’t. "We implement ... according to the usual ..." What’s usual here and who defines what’s normal? Make absolutely clear that both parties are talking about the same thing. Otherwise, two worlds will again clash over their differing expectations, which can be difficult to reconcile. Instead, refer to or quote the text that clearly defines "... the usual ..." and the requirements. Then everyone involved knows what the wording means.
There are countless other formulations that you should avoid. However, the above are the most common. A detailed engineering of requirements is always a good investment for both project parties to provide a solid basis for project success. Additionally, relevant user stories with related acceptance criteria can help to clarify the project deliverables.Incorrect specification happens!
Specifications are wrong if they don’t serve the overall project goal. A short example: the sales manager of a company orders an app to support the sales team. The software is developed according to his requirements. However, it can’t be imported because no one involved the sales team and asked them for their requirements. Take the conditions of each case into account: nothing is more dissatisfying for both sides than fully-developed software that can’t be used because it doesn't deliver value to the users or the company as a whole. You should pay attention to these conditions right at the start of the project, both as a supplier and as a customer. During the analysis of requirements, involve all the stakeholders. Finally, the specification also serves to keep the documentation effort low, because it has already described what the final product looks like. It also provides for good planning and systematic change management to ensure that the software is stable. Imagine you’re building a house and want to combine the kitchen and the living room. For this, you only need to remove one wall. However, if this is a load-bearing wall, the floor above will collapse onto your head as the whole house caves in. This should be prevented at all costs, so be attentive and take all the challenges listed into account!
In the next part in our series, we examine responsibilities and communication in projects.Other blog posts of this series:
There's a neat feature in MySQL which lets you sort a result set by arbitrary field values. It's the ORDER BY FIELD() function. Here's how to leverage this in your Drupal views.
Let's say you have a field in your Article content type called Status, and it has the following allowed values:Draft
It can be very helpful to sort the articles by status. You could key your allowed values with alphabetical prefixes, numbers, etc. But let's say you didn't. Or don't want to.
With bare MySQL, the query would look something like this (not an actual Drupal query, but used to illustrate how FIELD() works):SELECT *
ORDER BY FIELD(status, 'Draft', 'Pending Approval', 'Published', 'Postponed', 'Canceled')
This is now possible in Drupal & Views with the Views List Sort module, which creates a sort handler that populates the FIELD() sort with the allowed values of a given "List (text)" field.
To use it is easy, just add the "List (text)" field to your sort criteria, and set "Sort by allowed values" to "yes".Submitted by Joel Stein on April 14, 2015.Tags: Drupal, Drupal 7, Drupal Planet
There are examples out there for generating a unique Drupal username. The usual technique is to continue incrementing a numeric suffix until an unused name is found. There's also a project to automatically generate usernames for new users. All of this makes sense and works, but compared to the existing solutions, I wanted one that focussed on encapsulation and stability; by which I mean it should:
This screencast shows how you can use a cloud provider like Digital Ocean to install a working copy of ELMSLN by copying and pasting the following line into the terminal:
yes | yum -y install git && git clone https://github.com/btopro/elmsln.git /var/www/elmsln && bash /var/www/elmsln/scripts/install/handsfree/centos/centos-install.sh elmsln ln elmsln.dev http firstname.lastname@example.org yes
Shoov keeps evolving, and now has an example repo that demonstrates how we're trying to make UI regression simpler, we took some time to implement the second feature we were missing - automatic testing on the live site.
We saw a very strange situation everywhere we looked: Dev teams were writing amazing test coverage. They were going the extra mile to setup a Travis box with environment as close as possible to the live site. They tested every single feature, and added a regression test for every bug. Heck, every commit triggered a test suite that run for an hour before being carefully reviewed and merged.
And then the site goes live - and at best they might add Pingdom monitoring to check it's working. Pingdom at its simplest form sends an http request every minute to your site. If the answer is 200 - it means that all is good in the world. Which is of course wrong.
Our mission is to change this, and bring functional testing to the live site. One that is easy to setup and that integrates with your existing testing and GitHub flow.The Drupal backend holds the CI build data, including the full log, and status
While Pingdom is wonderful and is alerting us on time whenever a site goes down, its "page is fine, move along" approach doesn't cut it for us. Here are some examples why testing on the production server is a good idea:
Welcome to the new Drupal @ PSU!
We hope you enjoy the site so much that we want you to have it. No really, go ahead, take it. Steal this site. We did, and we’re proud of that fact. This site is actually a fork of the Office of Digital Learning’s new site that just launched recently.