The world in its essence is paradoxical … an ambivalent attitude alone can grasp its contradictory totality.
The UK Committee of Advertising Practice has produced a fresh set guidelines for vloggers currently taking payment in exchange for promotional videos. ...
Last weekend I enjoyed the awesomeness of DrupalCamp Asheville. The Asheville Drupal User Group did an amazing job once again. It was a great camp filled with positive people and smart sessions. This time around I was lucky enough to deliver my own presentation, SVG: How To Have Fun Making Your Site Look Hot!.
The session was filled with a great mix of people of all skill levels - from having little SVG exposure to people who employ it in all their projects. The talk catered to both as we reviewed everything from the basics of understanding SVG and getting it displayed on your site to more advanced topics like line-stroke animations and SVG filters.
This was my first presentation at a DrupalCamp, and it was very rewarding. I think everyone learned something, and it felt great to give back to a community that shares so much information on a daily basis.
Overall, the presentations were on point. A few sessions I attended that stood out were Bayo Fodeke and Mark Shropshire’s Decoupled Drupal with Meteor, Chris Russo’s Personal git workflow, for everyone! and Matt Davis’ Headless Challenges Answered: Weather.com's Presentation Framework.
Besides being a great camp, it’s located in Asheville, which is a true gem of the East Coast with vibrant arts, food and beer scenes. If you get the chance, you should definitely try to attend next year's camp. Whether you’ve never attended a camp or you’re a grizzled veteran, you’ll love the setting, the sessions, and best of all, the awesome people you’ll meet. See you in 2016!
The website encountered an unexpected error. Please try again later
This is the error irritates me so many times and couldn't identify what is the actual error. I couldn't see any thing in apache error logs regarding this error. Even if I enabled to display all errors on screen, no luck. Some times we could see only blank screen and nothing display in screen and no errors in apache error log.
These things forced me to write this module which will help developer to be notified when any error occurred in drupal via email.
Since the last Drupal 8 Core Update, Drupal 8 got a UI for responsive image mapping, a proposal for a new Drupal.org content model was put forward and a bunch of improvements were made to Drupal.org, notably: the first comment to an issue is now automatically generated to make it easier to see the original issue summary, test result output was improved, and it's now possible to test patches on PHP 5.4, 5.5, 5.6, and 7 simultaneously.
Some other highlights of the month were:
- To improve usability, h2-h6 headings were added to the CKEditor paragraph format drop-down by default and the password strength evaluator became much more accessible.
- Jonathan Westman at ActiveLAMP wrote about his first experiences with Drupal 8, Nikhil Sukul at Faichi Solutions Pvt Ltd described the advantages that Symfony brings to Drupal 8, and Jingsheng Wang at INsReady Inc. (引锐信息科技有限公司) demonstrated how to test Drupal 8 with 2 Docker commands.
- On the front-end, system.module.css and system.theme.css were split into SMACSS-style components; theme functions for the maintenance page were converted to Twig; and CSS and HTML for the toolbar, views, and the admin, buttons, "featured bottom", table, and user components in Bartik were cleaned up.
- Daniel Sipos gave an overview of why theming Drupal 8 will rock.
- To make Drupal more compatible and easier to use with other PHP projects, you can now use your own exception handler, and support for PSR-7 RequestInterface was added to Drupal's ControllerResolver.
- Fabian Bircher at Nuvole explained how to use D8's CMI without running into pitfalls, Mike Potter talked about the role of the Features module in Drupal 8 on the Modules Unraveled Podcast, and Aidan Foster at Foster Interactive Inc. explained how he built the first multilingual conference site in Drupal 8.
- Larry Garfield at Palantir.net discussed how Drupal 8 distinguishes different types of data, Daniel Sipos walked through how an HTTP request gets turned into rendered HTML in Drupal 8, Brian Altenhofel at VMdoh wrote about how to build a Drupal 8 website with Composer, and Shitiz Garg finished his series of blog posts about his adventures writing the Hawk Authentication module for Drupal 8.
- SafeMarkup::checkAdminXss(), \Drupal\system\FileAjaxForm, node_page_title(), and Bartik's tips.css were all removed.
- Migrations for files, locale settings, and D7 text formatters and filters were committed.
- Moving blocks to new regions now work again, failed behaviors no longer halt Drupal, datelist fields now validate that all fields are filled in, and you can install modules from the UI again.
See Help get Drupal 8 released! for updated information on the current state of the software and more information on how you can help.
We're also looking for more contributors to help compile these posts. Contact mparker17 if you'd like to help!Drupal 8 In Real Life
- Drupal Meetup in Islamabad, Pakistan by Ikonami Technologies on August 19, 2015. They present an overview of Drupal 8 features along with discussions around common problems faced in Drupal 7.
- CADUG General Drupal Meetup held on August 20th, 2015 in Chicago, IL, USA covering Drupal 8 Views. Check it out!
- Drupal Global Training Days in Wrocław, Poland will be conducting trainings on Drupal 8. Join the learning hub!
- Learn Drupal 8 custom module and theme development by joining Drupal Meetup Delhi, India on 21st August from 18:00 to 20:00 IST.
- Join the 2 day DrupalCamp Pune, Maharashtra, India and explore more about Drupal 8 on 22nd and 23rd August.
- The 6th annual DrupalCamp Baltics returns to Tallinn, Estonia on 28th and 29th August with huge coverage of Drupal 8 via their interesting sessions. Join them!
- DrupalCamp LA, held at University of California, in Irvine, CA, USA is coming on 29th and 30th August with coverage of Drupal 8. Come, join them, learn and have fun!
Do you follow Drupal Planet with devotion, or keep a close eye on the Drupal event calendar, or git pull origin 8.0.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. If you'd like to volunteer for helping to draft these posts, please follow the steps here!
Today we are happy to present a new series teaching you how to Manage Drupal Sites with Pantheon, which is completely free thanks to the generous sponsorship of Pantheon. Pantheon is a great service for management your website development and launching your sites on an environment that has been optimized for Drupal.
The drupal_write_record function is used to insert or update a record in the database based on the schema of the table. It helps in executing less database query. Let's take a look at the function given below.DrupalDrupal 7Drupal Planet
At Realityloop I've been involved with some extremely complex site builds, varying from Commerce driven paywalls to fully fledged data reporting web applications. Yet, the hardest thing I've ever had to do is successfully sell automated testing to a client.
And the reason for that is relatively simple; Tests are hard to write, therefore time consuming and expensive.
However this is a misconception, while certain types of tests can be hard to write, any automated tests will recoup the costs in a short amount of time, and as such, you can’t afford not to have tests.
In part one of this post I will be explaining exactly why you need tests. In part two (due in three weeks) I will cover how to get started and implement your automated tests.
What are tests?
A test is exactly what it sounds like; a method to ensure that your project behaves as is expected.
Any steps taken by an individual to ensure the project is behaving correctly are considered to be manual tests, and while they are essential, they are time consuming.
For an example of what a test may be, let's look at the following scenario:
Fictitious Inc want a contact form on their website that will send emails to specific recipients based on the type of enquiry.
They need three enquiry types:
Support to firstname.lastname@example.org
Sales to email@example.com
General enquiry to firstname.lastname@example.org
Along with this requirement, they also wish to have a personalised auto-response per enquiry type.
Once this the above functionality has been created, all parties, at some point, will need to ensure that it does indeed work as expected.
This process is your manual test, which would look something like this:
Jarkko navigates to his Fictitious Inc. development site, clicks on the Contact menu item, selects the Support enquiry type, fills out some dummy data and submits the form.
He then ensures that the email was sent to the correct email address with the supplied data, and ensures that received the correct auto-response with the correct personalisations given the supplied data.
Lastly, he repeats the process with the other two enquiry types, ensuring that he supplies different data to his previous test(s).
That’s a test, and a relatively simple test, but already it's evident that it is time consuming. Throw in more complexity to the requirements and the time increases exponentially.
Any future work on this project, regardless of the area of work, should ensure that these same tests, as well as any other tests in the site, are run again. Otherwise you run the risk of accidentally breaking a core feature of the project.
As such, manual testing becomes excessively time consuming, and often a step that is skipped by all involved.
Automated testing is the answer.
What are automated tests?
There are various types of automated testing, but for the sake of this post I will be concentrating on "integration tests".
An automated test is, again, exactly what it sounds like; an automated method to ensure that your project behaves as is expected.
Take the previous scenario, currently each individual involved in the project (developer, tester, project manager, client, etc) could be spending anywhere between 2 and 10 minutes to manually test that small subset of the project functionality every time any changes are made to the project.
Automated, the same test should take no more than a 30 seconds in total, and can be run along with all other automated tests in one quick hit.
Manual testing vs Automated testing
In the above video you can see the Automated test running side-by-side with the Manual test.
The Automated tests are not only testing the same scenario as my Manual tests, but also installing a fresh copy of Drupal, enabling all required modules, flushing caches, reverting features and running a few additional checks that I didn't do in the Manual test.
For those of you who do not wish to watch the video, the results are as such:
Manual testing - 3 minutes 19 seconds
Automated testing - 27 seconds
However, there is still a time investment involved to create the tests. In this case it took me roughly 60 minutes to write the tests, in which time the manual tests could have been run about 18 times, assuming of course your manual tester doesn't decrease efficiency after running each test.
With the above simpletest, the responsibility of running the tests is still in the hands of a human, and as such you will only get your test results if someone bothers to run the tests.
Continuous integration relieves your human workers of that responsibility, instead automating the running of the automated tests.
Along with the benefit of running automated tests on every commit (or tag, if that is how you wish to configure it), Travis can run multiple testing jobs concurrently, allowing you to ensure you project works on a variety of different environments.
Travis CI jobs do take longer than running a Simpletest (based on my above video), which is due to Travis not only doing all the additional things that Simpletest is doing but also having to setup a complete environment prior to installing Drupal. However, as you can run potentially upwards of 10 concurrent jobs (on a Premium plan) this time loss is quickly negated.
Assuming you are on a free plan, and the current load on the server allows for 4 concurrent jobs taking a maximum of 1 minute and 20 seconds (the average from my own tests), you recoup the cost of the test development in only 4 commits.
Adding Travis integration to your Drupal project is relatively simple thanks to the Drupal Travis Integration project. It’s as simple as adding and configuring single file to your Github repository. However I’ll go into more detail on this in part 2 of this post.drupaldrupal planet
- // Init Fancybox
Modules Unraveled: 145 Project Workflow and Drupal Issue Queues with Joshua Mitchell - Modules Unraveled Podcast
- Prioritizing work on Drupal.org Drupal.org Roadmap
- Unblock Drupal 8
- DrupalCI - testing infrastruture for Drupal code
- Localize.drupal.org upgrade to D7
- Improve search
- Implement new documentation section and tools
- Unblock Drupal 8
- Two Factor Authentication
- Issue Credits
- Funding work
- Ongoing Funding
- Work that is coming later
- Changes to projects (modules, themes, distros and how we discover them)
- Continued implementation of the content strategy work Structure Drupal.org content around areas of user activity
- Issue workspaces Improve Git workflow on Drupal.org by implementing issue workspaces
I think a hierarchical menu system has it's place - Gives a continuity and mark progress if you want to read a topic. #MUP145
Can you attribute different patches in a single issue - some to the organization and some as a volunteer? #MUP145
Some issues get abandoned after some work. Is that never counted? #MUP145
- Paulius Pazdrazdys
How much Drupal.org forums are being used? Maby you are thinking to more question -> answer model as stackoverflow has? #MUP145 (Issue about the subject - Petition to move forums to Stack Exchange)
Colan Schwartz: Get search results for compound words not in content with Drupal, Search API and Solr
It is possible to expand compound search terms to multi-term synonyms. That is, if your Drupal site content contains text such as "dark room" or "key note", and you don't want your users to get No results pages on searches for "darkroom" or "keynote" (respectively), you'll need to do a bit of extra work to make this happen.
Let's assume we've got a Drupal 7 site working alongside Solr to provide the advanced back-end search functionality, and the Search API plus Search API Solr Search modules to integrate the two systems. At the time of this writing, this is a widely used best-practice approach. However, it doesn't natively support the above use case.
Some potential options for setting this up include spellchecking and fuzzy searching. But Solr itself already supports the use of synonyms even though the Search API does not. So let's tweak Search API's set-up to work with it.There are several steps required to make this happen.
- If you're got the tokenizer enabled on your search index, disable it by unchecking the box over at Administration » Configuration » Search and metadata » Search API » Your index name » Filters » Processors » Tokenizer, and then save the configuration. If the Tokenizer option is enabled, it will prevent the synonym functionality from kicking in.
- Modify the Solr configuration in your search collection over at /path/to/solr/collection-name/conf/schema.xml around line 162.
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
- After: <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
- Before: <!-- in this example, we will only use synonyms at query time
- Define multi-term synonyms in the synonyms.txt file that's in the same folder as the above schema.xml file. Follow the form here.
- darkroom => dark room
- keynote => key note
- Restart the search engine. This is system dependent, but if you're using the GlassFish application server for example, you may be able to restart Solr with a command like sudo service GlassFish_solr restart.
- Clear the search index and rebuild it.
- Surf to Administration » Configuration » Search and metadata » Search API » Your index name.
- Hit the "Queue all items for reindexing" button.
- Hit the "Index now" button.
That should do it. You're all set!
Background reading For more information on how all of this really works, here are some useful articles on the subject.
- Why is Multi-term synonym mapping so hard in Solr?
- Solution for multi-term synonyms in Lucene/Solr using the Auto Phrasing TokenFilter
- Better synonym handling in Solr
This article, Get search results for compound words not in content with Drupal, Search API and Solr, appeared first on the Colan Schwartz Consulting Services blog.
GSoC is coming to a close, so these few weeks have been mostly about wrapping things up. This is good for me as well because college has taken a toll so I have less and less time to spend, but I believe I have enough to have the module at a good position before GSoC closes.
WWW-Authenticate is a HTTP header which is used to identify which protocols the server supports. If a server supports multiple WWW-Authenticate headers, it can send it multiple times to identify different protocols. For example: Drupal can send WWW-Authenticate: Hawk and WWW-Authenticate: Basic for identifying that it supports Hawk and Basic Auth. However, Drupal at the moment doesn’t have support for gathering and sending multiple header values from different modules due to the way it handles 401 Authentication Required exception. I will be working on allowing multiple protocols to send WWW-Authenticate so that multiple auth protocols can be identified at the same time.
Testing Hawk and Basic Auth together
I also spent a considerable amount testing these two protocols together, here is a summary of my findings but in summary: Both protocols work well individually but if a client sends requests containing both protocol’s headers at the same time it would cause either to fail due to the way HTTP protocol dictates concatenation of header values. HTTP recommends allowing only a single protocol in one request in order to have fewer points of failure so for the moment I believe this behaviour is fine, however if it is deemed beneficial to allow multiple protocols within same request it is always a possibility.
For now that is all, I’ll be dealing with WWW-Authenticate issue and documentation during my last week of GSoC.
Thank you for reading!
So recently we discovered http://data.virginia.gov/hhr and since we're looking to help people in Charlottesville I've added the data (thanks to feeds) and we added a couple of data mining points https://www.cvillecouncil.us/va-physicians (using open layers)for the maps and h
You know those lists on a web site that you see from time to time listing the currently Most Popular articles on the site? I have to admit that I click on them from time to time to understand what is popular and why. It's a clear case of herd reading. Well, Drupal has a new module to create a Most Popular list on your site based on the Chartbeat Analytics API and it's written by myself and Darryl Norris. It's available on Drupal.org.
"One of the puzzling attitudes I've seen in the games industry is companies talking about focusing on long term success, yet not taking a firm position against crunch." ...
The more we label things when building a website, the easier it is for a person who is blind and uses a screen reader to use our sites. These labels are known as the “accessible name properties” and they are baked into HTML.
Japanese developer Mixi has revealed that its co-op action RPG, Monster Strike, brought in $378 million between April 1 and June 30 - that's $4.2 million a day. ...
These are not great commit messages; in fact, they are nearly worthless. A great commit message should tell the reader all they need to know about the what of the commit. They should only have to look at the actual diff of the commit to see how it was accomplished.Anatomy of a Great Commit Message
Think of a commit message like an email:
- It contains your contact information. You don't even have to do anything; you get this for free!
- It should have a subject: the shorter, one-line summary.
- A body: the detailed description.
All commit messages should abide by the following criteria:
- Begin with a one line summary. It should be capitalized and succinct (50 chars or less).
- This should be followed by a longer description, if necessary.
- The first two items should be separated by an empty line.
- All lines should be wrapped at approximately 72 characters.
- Reference an issue in your commits whenever possible. If using Github issues, you can reference them by using 'gh-80' for issue '#80'. If your commit completes the issue, you can use a number of terms to close the issue, such as: .Closes gh-80'.
- If you forget to reference the issue in your commit, and the commit has already been pushed, reference the commit's hash in a comment on the ticket.
Here is a model Git commit message:Capitalized, short (50 chars or less) summary. More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. In some contexts, the first line is treated as the subject of an email and the rest of the text as the body. The blank line separating the summary from the body is critical (unless you omit the body entirely); tools like rebase can get confused if you run the two together. Further paragraphs come after blank lines. * Bullet points are okay, too. * Typically a hyphen or asterisk is used for the bullet, preceded by a single space, with blank lines in between, but conventions vary here. * Use a hanging indent. Closes gh-80.
The majority of your commit messages may be much simpler than the example above, but pick and choose the appropriate elements. Here is an example more common to the real world:Fix for editor dashboard showing incorrect date. * Fixed date calculation logic. * Added function docblock to comply with coding standards. * Refactored foreach loop, improving clarity. Closes gh-80.
With just a few small improvements to your commit messages, your fellow developers, and your future self will surely thank you!
ALDÍANews.com is a national news outlet offering fully bilingual content, equally accessible in both English and Spanish at the click of a toggle. The new site - which publishes news related to politics, business, culture, opinion, media, and technology - allows readers to quickly and easily choose the language in which they want to view a comprehensive array of content and features optimized for various devices through responsive design.
After evaluating AL DÍA’s content and traffic, we uncovered the untapped potential for a larger audience and advertising stream by repositioning this local news site as a national news platform. The new site implements a number of innovative elements that benefit viewers and advertisers alike, including lightning-fast browsing using AngularJS, a fully bilingual interface, and advertising that can be served to specific sections, topics, or geographies.Key modules/theme/distribution used: ServicesSimpleAdsTaxonomy menuViewsRadioactivityOrganizations involved: Eastern Standard