The toys are us, and we don't even know.
A couple months ago, we decided to rebuild our company site on Drupal 8. We had two goals in mind when we were planning the project. First, we wanted to expose our developers to some real life scenarios in working with Drupal 8. We had all been involved in the Drupal 8 development cycle in one way or another, but building a production site is very different from setting up a development instance. Our second goal was to prove that it was possible to launch a feature complete Drupal 8 site without any contributed modules. In my opinion, we succeeded on both counts. There were certainly some snags in the process, but overall it was an enjoyable experience for everyone. I’d like to share our major take-aways from the project with you.
1. Stronger division between the “themer” and “module developer” roles
The switch to object-oriented programming for all of the core subsystems has been talked about quite a lot. And yes, it is a big transition. Some crazy high percentage of our core code has changed or moved. As a module developer, it’s going to be up to you to learn all about Routes, Plugins, Event Listeners, and more just to do the same things you used to use hooks for. I don’t think anyone will argue that the new way is simpler for module developers. But I was ready for that. I transitioned from Drupal 6 to Drupal 7. I remember that feeling of firing up the new version for the first time and feeling like you’re walking into your house after your mother-in-law dropped by for a visit - you know everything’s there, but you just don’t know where it is anymore.
What caught me by surprise is how little has actually changed at the theme level. Sure, there’s Twig, but when you get right down to it, Twig doesn’t even feel that different from raw PHP templates. Once you learn the basics, my guess is that most people working with Twig will feel more comfortable there than in PHP code. So, what’s really changed from the themer’s perspective? Not a whole lot. In fact, right now it feels like a conscious effort was made to keep things consistent at the theme level.
2. Fewer conflicts
I’ve been using and teaching Features for years, and there’s one question that always made me cringe: “How do I avoid conflicts/merge conflicts with my features?” My answer would usually get very abstract and I’d be talking about packaging strategies and complex push/pull/revert commands. Now that CMI is here, we have the tool we always wanted. Instead of combining stuff into giant PHP files as Features does, CMI writes one file per configuration object. While this sounds really verbose, it prevents a situation where you’d get a conflict if you and a coworker change different views in the same file, since every view is in it’s own file. In the two-month development cycle we had for our website, I think we may have ended up with a single merge conflict resulting from configuration changes.
3. No more packaging nightmares
This goes along with my previous point about CMI, but trying to teach the right way to use Features involved a lot of abstract and hand-wavey concepts like semantic grouping and composition (and that’s just for the way I consider right). Now that we have a true configuration management tool, we don’t need to worry about packaging at all. Think that through for a moment. There is no longer a need to bundle components into groups. It all goes into one big bucket for your site. For those of you who actually do use Features for bundling reusable components, don’t worry. Features already has a dev release for Drupal 8 that focuses solely on grouping config into modules.
4. You need an editor that autocompletes
Sorry, Notepad++ enthusiasts, but you’re going to want a bona fide IDE to do any serious development on Drupal 8. Now that we’re using a lot of OO code, you can have a documentation trail that might be spread over 5-10 parent classes/interfaces. It is extremely nice to be able to command+click a method name to go directly to the definition and read the docblock. It’s even better to have your editor autocomplete the method name for you. Plus, there are a lot more types of code in core these days (YAML, JSON, and others), and it’s nice to have syntax highlighting.
5. Think global, act local
In case you hadn’t heard, theme(), drupal_add_js(), and drupal_add_css() functions have all been removed from Drupal 8. The new way of doing things is to always return a render array. The short explanation for this is that rendering stuff involves adding assets (CSS/JS) to the page, and when you call theme(), those assets are just added to a global variable somewhere. That worked fine for Drupal 7, but since we’re a bunch of forward-thinking folks, we want our pages to be able to work with subrequests, which are a way of rendering a page using multiple processes. And guess what? Separate processes don’t share global variables. So, when you return the HTML for your cute little teddy bear field formatter, you should return a render array with your CSS/JS assets specified using the #attached property.
Diving into Drupal 8 was a lot of fun for our team. Yes, that’s right, I said fun. We enjoyed it, partly because it’s the new stuff, and partly because it was our project. Whereas we would have felt dangerously stressed doing our first Drupal 8 site for a client under a tight deadline, we were able to focus on learning the new workflows, contributing bugfixes, and developing best practices.
We first posted about our Drupal 8 launch here.
Attached below are wallpaper ready versions of the image at the top of this post.
Research culled from a year of research and over 40 interviews with women working in the game industry, previously presented at GDC 2014. ...
"We needed to figure out how to design a UI that looks just as great labeled as a cute kid's game as it does as a sleek racing title... Here are a few things I have learned during this past year." ...
Modules Unraveled: 102 Project Management and ERP using ERPAL with Manuel Pistner - Modules Unraveled Podcast
- What is ERPAL?
- Why did you guys at Bright Solutions decide to build ERPAL? What did you need that wasn’t already available?
- What are some of the features of the distro?
- CRM (contact and activity management)
- Project management (timetracking, payments, agil and fixed price, expenses, gantt charts, requirement management) with Freelancer support
- Document management and document creation
- Contract management with reccuring invoices
- Employee management (over hours, holidays, costs)
- Invoice creation and PDF export
- Tell me about the mobile app.
- I noticed that there are some addon modules listed on the project page. Did you want to mention some of those?
- ERPAL Task Templates
- ERPAL Repeatable Tasks
- ERPAL Project Reports
- ERPAL CRM Reports
- ERPAL Contacts Importer
- ERPAL GIT integration
- Is this basically Basecamp built with Drupal?
- What features do they have in common?
- What does ERPAL have that Basecamp doesn’t?
- Do you know of anybody using ERPAL right now?
- Who should use this?
- Large companies?
- Solo developers?
- What’s the development status of ERPAL?
- What’s in the future for ERPAL? What still needs to be done before a 1.0 release can be released?
- How does Drupal benefit from something like ERPAL?
Have you heard of/used NodeSquirrel?
Use "StartToGrow" it's a 12-month free upgrade from the Start plan to the Grow plan. So, using it means that the Grow plan will cost $5/month for the first year instead of $10. (10 GB storage on up to 5 sites)
I was writing a custom module recently which used a custom content type or two. I wanted to make the module as reusable as possible but I also wanted to avoid including a feature inside of the module to add these content types.
Drupal is a great platform for ecommerce. If your business needs a Drupal website that accepts payments, a good payment system to use is CyberSource Secure Acceptance Web/Mobile. This tool allows business to accept payments made online, over the phone, and through mobile devices without ever handling toxic payment data. CyberSource is owned by Visa and integrates quite nicely with Drupal Commerce.
It consists of securely managed payment forms or as a single page payment form for processing transactions. This allows you to decrease your Payment Card Industry Data Security Standard (PCI DSS) obligations, thereby reducing any risks associated with handling or storing sensitive payment information.
In order to get this up and running on your Drupal website, you simply need to follow a few steps:
1. Create and configure Secure Acceptance profiles
2. Configure CybeSource profile with Drupal
3. See the results!
Creating a Secure Acceptance Profile
Important: For using a Secure Acceptance experience, an active profile is needed.
A Secure Acceptance profile consists of settings that you configure to create a customer checkout experience. In order to create a Secure Acceptance profile, you need to:
1. Log in to Business Center with Merchant ID:
Note: If you don't have a Merchant ID you will need to create one (https://support.cybersource.com/cybskb/index?page=content&id=C887)
2. In the left navigation panel, choose Tools & Settings > Secure Acceptance > Profiles > Create New Profile.
3. Enter Profile information
- Enter profile name
- Enter profile ID. The profile ID is case sensitive and must be exactly 7 alphanumeric characters. This field is used in each transaction to identify and display the Secure Acceptance profile.
- Enter a profile description
- Check Web/Mobile
- Enter a company name
- Check Payment Tokenization, Decision Manager, Enable Verbose Data
4. Click the Create button. The Profile Settings page appears. You must activate a profile in order to use it, and you must configure these required fields before activating a profile:
- Payment Settings
- Create a Security Key
- Display a Customer Response Page
Configuring Payment Settings
You must select the card types that you wish to offer to the customer as payment methods. For each card type you select you can also manage currencies, CVNs, and payer authentication options.
The Card Verification Number (CVN) is a three- or four-digit number printed on the back or front of a credit card. This number helps to ensure that the customer has possession of the card at the time of the transaction.
To add a card type and enable the CVN you must:
1. On the “Profile Settings” page, click Payment Settings. The Payment Settings page appears.
2. Click Add/Edit Card Types. The Add/Edit Card Types window appears.
3. Check each card type that you wish to offer to the customer as a payment method.
4. Click Update.
5. Click the pencil icon in the column for each card type. The Edit Card Settings appears.
6. Check CVN Display and CVN Required to display the CVN field on Secure Acceptance.
7. On the “Currencies” section click Select All or select a currency and use arrow to move it from the Disabled list to the Enabled list.
8. Click Update
9. In the Automatic Authorization Reversals section (on the Payment Settings page) check Fails AVS check and Fails CVN check. Authorization is automatically reversed on a transaction that fails an AVS check or a CVN check.
10. Click Save.
Creating a Security Key
The security script signs the request fields using the secret key and the HMAC SHA256 algorithm. To verify data, the security script generates a signature to compare with the signature returned from the Secure Acceptance server. You must have an active security key to activate a profile. A security key expires after 2 years. The security key protects each transaction from data tampering.
To create and activate a security key:
1. On the “Profile Settings”page, click Security. The Security Keys page appears.
2. Click Create New Key. The Create New Key page appears.
3. Enter a Key Name (required).
4. Chose signature version Version 1.
5. Choose signature method HMAC-SHA256.
6. Click Generate Key. The Create New Key window expands and displays the new access key and secret key. This window closes after 30 seconds.
7. Copy and save the access key and secret key.
- Access key: Secure Sockets Layer (SSL) authentication with Secure Acceptance.
- Secret key: signs the transaction data and is required for each transaction.
By default, the new security key is active.
8. Click Return to Profile home. The “Profile Settings” page appears.
Displaying a Customer Response Page
You can choose to have a transaction response page displayed to the customer at the end of the checkout process, and a cancel response page displayed during the checkout process. Enter a URL for your own customer response page or use the CyberSource hosted response pages.
To redirect a customer after Check-out:
1. On the “Profile Settings” page, click Customer Response Pages.
2. Under the Customer Redirect after Check-out heading, enter the URL for the custom page that the customer will be redirected to after checkout.
3. Click Save.
To make your profile active:
1. On the "Profile Settings" page, click Promote to Active.
2. Your profile is now active!
Drupal Site Configuration
1. Install the Commerce CyberSource Secure Acceptance Web/Mobile contrib module.
2. Check that the module Payment UI is enabled.
3. From the Drupal admin menu, choose Store > Configuration > Payment Methods (or access path admin/commerce/config/payment-methods).
4. Select Edit Operation for payment method rule “CyberSource Secure Acceptance Web/Mobile”
5. Edit the rule action “Enable payment method: CyberSource Secure Acceptance Web/Mobile”.
6. In the Payment Settings section enter the Secure Acceptance profile details.
7. Enter Profile ID (configured during Step 3 - Secure Acceptance Profile)
8. Enter Access Key and Secret key you created (see “Creating a Security Key” above)
9. Select Transaction mode:
- Test – for testing transactions (profile site https://ebctest.cybersource.com)
- Live – for live transaction (profile site https://ebc.cybersource.com)
10. Set Transaction Type to “Authorize Funds”
11. Locale (ex: English - American)
12. Set Payment method to “Card”
13. Enter text for Payment Submit Button Text.
14. Click Save.
15. On the Payment methods page, enable the rule for CyberSource Secure Acceptance Web/Mobile.
Now, on the completion of order you can select Credit Card as the payment method.
After you click on “Continue to Next Step”you wil berl redirected to the Cybersource site.
After completion, and the display of CyberSource payments details, you will be redirected back to your Drupal site.
And that's it! If you follow all of the steps above, CyberSource Secure Acceptance Web/Mobile should be configured on your Drupal 7 site in no time. Make sure to contact us if you are looking for a technology partner to help you ensure the success of your Drupal business or ecommerce website.
Good luck.Tags: DrupalDevelopmentpayment systemecommerceDrupal for BusinessCyberSourceCheck this option to include this post in Planet Drupal aggregator: planetTopics: Tech & Development
A new look for the Greater Los Angeles Area Drupal Camp has been unveiled. “VLADCamp” is the new name of the conference, co-organized by Greater Los Angeles Drupal organizing team member Christefano Reyes, who announced the name as it epitomizes the goals for the organization moving forward.
“GLADCamp was originally envisioned as being the Drupal community's marquee event of the year that heavily focuses on the needs of non-profits, education and civic engagement. After trying 'Drupal for Good' this year, we decided that 'Drupal for Evil' would be more fun,” he explained.
This marks a major shift in strategy for the user group, which for nearly 4 years has provided Drupal resources, including its Business Directory and Governance Policy, and events, including this year's inaugural GLADCamp conference.
"It's difficult growing a brand that's known for so many different things, such as meetups, job fairs, coworking days, study group sessions, workshops, code sprints and conferences," he said. "Now we stand for just one thing: Evil. We think our members will appreciate this simplification. Besides, being completely transparent and accountable is too hard."
According to Holly Ross, executive director of the Drupal Association, a non-profit whose mission is to foster and promote the Drupal software and community, "There is currently no other Drupal user group on our radar who is so blatantly dedicated to this behavior. We've been monitoring several user groups that have little transparency, little accountability or little consistency, but this is the first time we've seen a user group without all three," she said in a phone interview. "We're continuing to monitor the situation."
The VLADCamp organizing team is delighted with the impact of its new name and logo, which has been developed in consultation with Acquio, based in Burlington, Massachusetts. "We enjoy working with forward-thinking organizations who can pivot and provide value to underserved markets," said Acquio CMO Tom Wentworth, who featured VLADCamp as a successful launch partner of its content personalization service, Acquio Escalator.Tags: Planet DrupalApril Fools Day
The last week three of us from Cocomore went to the little town of Szeged in Hungary around 175km south east of Budapest.
The DevDays were all about developing Drupal 8 further and enhance drupal.org. The only topic was contributing to Drupal in the one way or the other. Whatever you are, either a developer, a themer, a site builder, a devop or a business man, everyone has his/her part in this amazing community and everyone found a spot where he/she could help to foster Drupal further.
How’s this for a session title? “Newfangeldy mobile and front-end crap for people who last touched front-end code back when grunge was a thing.”
Or this one? "Markup Ain't Easy or: How I Learned to Stop Worrying and Love An Object-Oriented RenderAPI"
I finally got to take a long & hard look at fields and why they have so much divitis + a solution of how to change it for Drupal8. It ended up beeing a ton of markup & css examples on a flat html page
take a look please provide feedback, here or on the issue or at my twitter etc.
A survey of over 80 games "scored against over 50 criteria. From this we can identify why players leave games before they have the potential to become engaged and loyal players." ...
A warning about contracts from the sidelines of the most expensive gamejam in history - by Rami Ismail
We will review some of the pretty neat Drupal contributions coming this year. The community as a whole has really outdone themselves. Step aside Drupal 8, you are about to get passed up. Without further ado, here is our top 10 Drupal contributions for 2014.
The best way to design and modify your Drupal site is with overrides.
If you're not sure how overrides work, read our introduction to Drupal overrides.
One of the most powerful ways to override Drupal is with sub-themes and sometimes even with sub-sub-themes. These allow you to safely override any themes you download from Drupal.org.
This is a dense topic, and this post is very long. So, let me provide a short summary here before you all tl;dr me, which would be deserved. The long and short of it is that Association staff and other community members have to figure out a better way of working together.
It is with a mixture of bitter and sweet that I am officially announcing that I'm leaving Commerce Guys for a new position elsewhere. I have really enjoyed the last 3 (nearly 4) years at Commerce Guys. They have been an amazing place to grow both as a person and as a programmer. During my time there I've had the opportunity to work on numerous big projects and interesting technical challenges. Commerce Guys funded me to work full time on Drupal 8 as an initiative owner for months on end, and without that investment of time, I personally wouldn't have grown so much, nor would I have been able to contribute to Drupal 8 to the same degree. I cannot stress how great of an experience working there has been for me, and I'm thankful to all the people there who made that possible and made my own time there so enjoyable. I look forward to seeing them do great things.
As for my future, I am actually moving to Acquia. An interesting job position opened up there that will allow me to be the interface between Drupal's developer community and Acquia. This is especially interesting to me because it makes me part of the feedback loop that is intended to help Acquia understand what portions of Drupal developer experience are in need of improvement. In this role, I'll work in whatever capacity I have at my disposal to help mitigate these issues and improve Drupal from a developer experience perspective. In addition to this I'll function in the same capacity for various Acquia product offerings, and I find that very exciting as well.
In truth most developers want to escape client work, and despite what you might think, that is impossible if you want to continue development. We can only strive for better clients, whether that is literally a higher quality client, or whether you manage to make yourself your primary client, we always have clients. In many ways I think this move makes YOU my client, yes you. The whole of the Drupal community will be my singular client. I’ll interact with you at different levels, we’ll talk personally, we’ll talk corporately, we’ll interact at camps and cons. I’ll try a few things and I’ll probably fail at a few things, but I took this position because Drupal is really important, and I want to be a part of crafting its future in whatever capacity I might have available to me. This job opens that up in ways I hadn’t considered before, and that’s very exciting. Technically speaking, this is a marketing position, and I know that’s weird for a developer, but this is no mistake, I’ll just be marketing DX improvements, and gathering information about where DX is lackluster so that we can craft a better solution, together. I look forward to this role and this work, and I hope you do as well.
Kris “EclipseGc” Vanderwater
As mentioned in my previous blog post "Catching the Community Train" Lisa, Bojhan and myself will be working on a website to better facilitate the process of designers contributing to Drupal. Following my last blog post we sent out a questionnaire to current and previous contributors in order to gain some valuable insights that will help us move forward. In this blog post I will analyze the answers we received and share what they mean to me and how they will be instrumental in our success of helping designers more easily get involved in Drupal.