Quantcast
Channel: Extensions
Viewing all 290 articles
Browse latest View live

Developers: Extension Testapalooza

$
0
0

Automated tests are important when collaborating with other developers in a large project. Even if you focus your attention on a small piece of the puzzle, your piece depends on other pieces, and others may depend on you. There will be inevitable occasions when a change in one causes an unexpected change or break in another. Automated tests form the first line of defense, providing timely feedback so that problems can be addressed while the material is mentally fresh.

Testing CiviCRM is trickier than testing a basic library -- tests may involve system services (from Civi or the CMS), and CiviCRM developers may use different CMS's, file structures, and URLs. This problem can be mitigated by creating more configuration files (for each extension, test-suite, or installation), but that grows unwieldy with multiple extensions.

We've published some updated documentation and tooling to support tests in extensions. The remainder of this post assumes that you have previously used civix to create a module extension.

Install or update developer tools

The dev tools have been updated for better test support, so make sure you're up-to-date.

If you use civicrm-buildkit, you should update buildkit.

If you manage your tools manually, then install or update civix, cv, and phpunit 4.x. Depending on your environment and previous installations, you may need to do some mix of:

Finally, ensure that you have an up-to-date developer installation of Civi (e.g. based on git with the master branch and a recently-generated copy of civicrm.settings.php). These conditions are met implicitly if you do a new build with civibuild.

Create and run a PHPUnit test

In an existing extension, run civix generate:test:

cd org.civicrm.civixexample
civix generate:test CRM_Civiexample_FooTest
# Write (snip)/org.civicrm.civixexample/phpunit.xml.dist
# Write (snip)/org.civicrm.civixexample/tests/phpunit/bootstrap.php
# Write (snip)/org.civicrm.civixexample/tests/phpunit/CRM/Civiexample/FooTest.php

By default, this test was created from a template called headless. A headless test boots CiviCRM once with a headless database, and all work can be executed in-process. These are faster, don't interfere with your live site, and support automatic cleanup, but they provide a less thorough simulation of real-world systems.

To run a more realistic simulation, you can generate an end-to-end (e2e) test by passing the --template=e2e option. An end-to-end test boots the live installation of CiviCRM and the real CMS. This provides a more thorough simulation, and you may spawn multiple requests to Civi using HTTP or cv() (as real users would). However, spawning separate requests will be slower, and data-cleanup may take more effort.

Regardless of which template you use, you can run the new test with phpunit, e.g.:

phpunit4 tests/phpunit/CRM/Civiexample/FooTest.php

To run the full suite, I suggest running all headless tests as a group; and then running all e2e tests as another group.

phpunit4 --group headless
phpunit4 --group e2e

For working examples and more descriptions, see the Testapalooza PHPUnit Example Extension.

Old PHPUnit tests

Previous versions of civix generated tests based on different conventions (e.g. using CiviUnitTestCase and the civix test runner), and a small number of extensions may have used these conventions. They should still work as before, and there's no plan to explicitly break them, but I don't plan to work hard to preserve support in the future. And the new conventions are better.

To update to the new conventions, see UPGRADE.md for civix:

https://github.com/totten/civix/blob/master/UPGRADE.md

Alternative test tools

PHPUnit is the test framework used in CiviCRM (core), Drupal 8, and many other large PHP projects, but there are other, newer test tools which have compelling features and use-cases -- such as Codeception, Behat, Mink, phpspec, and protractor.

If you'd like to use one of these for testing CiviCRM, read https://github.com/civicrm/org.civicrm.testapalooza/ for general, framework-independent commentary.


Where does your individual donor fundraising stand?

$
0
0

If you're like most leaders of small nonprofits, you want to know where your fundraising stands as compared to other organizations your size. CiviCRM stores a wealth of data, but it might be time-consuming to search for it all. Even then, how will you know you're comparing data apples-to-apples with the rest of the sector?

The survey and extension

This is where the Individual Donor Benchmark Survey comes in. By asking standard questions of small nonprofits across the United States, the survey allows you to see how your organization stacks up against nationwide benchmarks, and you can compare your own results in subsequent years.

AGH Strategies is a sponsor of the project, and we produced a CiviCRM extension that calculates your fundraising data and presents it question-by-question for entering it into the survey. There are additional questions about your expenses, supporters, staff, and organizational background, but much of the survey is automatically done for you.

Get started

  1. Go to your Manage Extensions page in CiviCRM.
  2. Click Refresh, and once the list refreshes, go to the Add New tab.
  3. Look for the extension named Individual Donor Benchmark Survey 2016
  4. Follow the link to go to the report.
    You'll need to select the financial types that you consider to be "donations" (as opposed to program revenue or grants), and all the questions will fill for you.

  5. Go to http://www.thirdspacestudio.com/idbsurvey/ and begin the survey.

When you complete the survey, Third Space Studio will compile the responses into a report that you'll receive.

We started collaborating with them on the 2014 survey, and organizations who used it reported that they learned a lot by taking a summary view of their information. A couple of them even ran the report after the survey deadline had passed: they just valued the opportunity to see their results.

Calculate your data today!

From last year's report:

Send Wordpress Contact Form 7 data to CiviCRM with API

$
0
0

Our customer Werk met Zin (Network of job coaches in Flanders) has a Wordpress site and uses CiviCRM to manage their relations and cases. On their Wordpress site they allow users to register for some events, which they solve with the civicrm event info and registration pages.


However, they also allow an individual to request the start of individual job coaching with a form. This should end up in CiviCRM as a special activity with the fields on the website form as custom data. And the Wordpress website is on another server, although that would not make such a big difference. Anyway, we (as in CiviCooP) developed a specific solution that takes the data from the Wordpress website on server A and sends it to CiviCRM on server B. The solution has a Wordpress part and a CiviCRM part.

The Wordpress plugin

This plugin can be found at https://wordpress.org/plugins/contact-form-7-civicrm-integration/ and works with the Contact Form 7 plugin. This plugin adds integration for CiviCRM to contact form 7. With this plugin it is possible to submit a contact form to an external CiviCRM. The plugin allows you to set the configuration items for the CiviCRM REST api (server, api key and site key)

Per contact form you could enable CiviCRM integration. The submission of the contact form is then submitted to the CiviCRM REST api. That is why you should also enter an CiviCRM entity and an CiviCRM action. The data in the form should then match the data for the api. E.g. if you push a first_name to the Contact api your field in the form should alsobe called first_name.

The CiviCRM extension

The CiviCRM extension has some stuff to create configuration items (activity types, option groups, option values, custom groups and custom fields are created or updated automatically by a scheduled job in the extension).

There is also an API WpCivi with action Submit. This API expects a parameter array with at least the element form_type and also expects to find a handler class with the name of this form_type in the extension. So currenty it can deal with a form which has form_type CoachingIndividual and the extension has the handler class CRM_Wpcivi_CoachingIndividual. This class extends the abstract class CRM_Wpcivi_ApiHandler and has to implement the method processParams. In this method the actual form data is processed. In our example, a contact is created and an activity of a specific type (with custom data) is created. If you would like to use this approach as a basis for your own needs you could remove the CoachingIndividual handler and add your own handler(s).


The extension can be found on GitHub: https://github.com/CiviCooP/be.werkmetzin.wpcivi and will not be in the CiviCRM extension directory as it is not a generic extension. But feel free to use as a basis for your own stuff!

And if you want to know more you can always contact Jaap Jansma or me. (jaap dot jansma at civicoop dot org or erik dot hommel at civicoop dot org)

 

A 'Community Shares' extention for Civi

$
0
0

Hello everybody. I am assessing the feasibility of a CiviCRM integrated 'Community Shares' extension on behalf of my client, the Kindling Trust.

Community Shares are an investment mechanism available to Co-operative Societies in the UK - see CommunityShares.org.uk if you want more info.

Kindling are a not for profit organisation based in Northern England, who have been using Civi for a number of years, and are planning on launching a community share offer in the future, in order to raise funds for a community owned farm, to develop sustainable food practices, and regional food security.

I anticipate that the new extension would build upon the existing CiviContribute and CiviMember components, and have attached an outline document describing how I would see it functioning.

We are interested in talking to members of the Civi partner ecosystem, who are interested in assisting us with developing the Extension, and providing estimates for the cost of development. We are currently at the stage of raising finances to undertake the work. Please email me here if you are interested.

Announcing CiviTan, right on time for the summer!

$
0
0

Did you know: CiviCRM is a great software, not only for nonprofits but also for all membership-based organizations. It is therefore no wonders that it is being used by an increasing number of membership-based small businesses such as martial arts clubs, yoga instructors (cf. Yoga for the People), gaming clubs and ... beauty salons!

Talking to a few people at a recent Drupal meetup, I was surprised to hear Katty's story: she own a beauty salon and needed a new website. Since most of her business relies on repeat customers, she imagined a website were people could sign-up for a quaraterly membership, schedule their appointments, and have access to a member-only area with health tips and reviews of the latest beauty products. With the help of a local web developer, she quickly weaved down her options to ... CiviCRM integrated in Drupal.

But that is not all ... with the new wave of connected devices and the Internet of Things (IoT), the tanning machines she had in her shop had a wired network interface (these still exist!) and a web interface with open APIs that allow basic settings to be adjusted. It wasn't long before her customers could fill out their preferences in a CiviCRM profile, including wavelength, tanning solution mist, solar power and session time for their perfect tanning session. And when their appointment starts, she pushes a button on the CiviCRM contact summary and the tanning machine is automagically configured!

Now a few months later, this CiviCRM has had a huge impact on her business: her quarterly memberships have had much better renewal rates thanks to the automated membership reminders of CiviCRM, appointments frequency is increasing as she is able to remind customers through CiviMail when their appointments lapse for too long (smart group from an activity search), and customers love the 'high-tech' touch of this complete solution.

While this solution, tentatively name CiviTan, is not packaged yet, Katty is willing to give back to the community all configurations and source code so we can create a CiviCRM extension for other tanning salons to use. Please leave a comment below if you are interested, or know someone that might be, as we would only do this if there is sufficient interest.

Now for the best part ... with CiviCon Colorado happening June 2nd and 3rd, Katty invites all attendees to visit her salon to get a demo of CiviTan ... and why not perfect your tan for the summer while you're there. Katty could even place a CiviCRM sticker on the glass so you can promote your favorite CRM while on the beach!

P.S. If you liked this article, you sure will enjoy this one as well.

Manage and analyse Your Campaigns with CivicRM

$
0
0

Are you responsible for planning, managing and monitoring campaigns for your organisation? If yes, you are probably using CiviCampaign to link contributions and campaigns and analyse their success. However, unless your campaign requirements are rather simple, I bet that you encountered some limitations of CiviCRM's campaign functions such as:

  • no function to record costs involved with a campaign action or to track the campaign's budget

  • no campaign hierarchy

  • limited reporting options

  • not much of an UI to manage and or visualise campaigns and their outcome

Those of you who followed last year's GSOC know that there has been a great project with the somewhat bulky name “Strategic Fundraising and Campaigning” that addressed those shortcomings by providing a campaign hierarchy, several functions such as recording campaign costs, a nice user interface, as well as built-in reporting reporting and visualisation options.

Back then, the extension was considered more of a prototype, not ready for productive use but thanks to some early adopters and contributors we were able to release a very promising beta version a couple of weeks ago.

Now it's your turn! Go ahead and test the extension on the public demo or on your own system and give us feedback, preferably in the issue tracker. After public testing we will finally be able to release a stable version and make it available in the CiviCRM extension directory for everyone to use.

Find all the information your need here:

Quickstart Guide

Complete User Guide

Github Repository

Happy Testing!

More control for "current employer" fields in public forms

$
0
0
Click to play: "CiviCRM: Public autocomplete of organization names"
CiviCRM provides a "current employer" field for all individual contacts, and that field does some cool stuff. Namely, when you type an organization name into this field and save the record, CiviCRM automatically creates an employer-employee relationship between the individual and the organization. It's very convenient, and CiviCRM even presents it as an autocomplete when editing an individual contact record.
 
You can also use it in a profile, for example to allow individuals to indicate their employer so that they can get some benefit by virtue of the employing organization's membership.  But in a public-facing profile, the autocomplete functionality isn't offered.  (It's a bit of a privacy concern to present all of your organizations as possible autocomplete options in a public form.)  Instead, CiviCRM just takes whatever you type in, matches to an existing organization record -- or creates a new organization with that name -- and then creates the employer-employee relationship.
 
Problem is, when this field isn't an autocomplete, you're leaving the door open for typos and abbreviations, which will lead to duplicate records being created for an employer. Wouldn't it be cool to remove that possibility?
 
Wouldn't it also be cool to limit the organizations that a user could select? For example, if you may want them only to select from a short list of current member organizations, rather than allowing them to create an employee relationship with any organization in your system.
 
Here's an extension that does all that. Check out the video above for a better explanation, and see the extension page here: https://civicrm.org/extensions/public-autocomplete-of-organisation-names
 
This extension has been around for a while on github, exellently maintained by Xavier Dutoit (Tech To The People), and Joinery has been able to make some very cool improvements thanks to Xavier's assistance, Stuart Gaston (Korlon) finding a sponsor, and Nonprofit Association of Oregon sponsoring.  If you think of cool improvements to be made for related use cases, please tweet me @JoineryHQ (or in comments below) any time to discuss.

 

University of Minnesota Foundation's Crowdfunding Platform Leads to Increased Fundraising and Engagement

$
0
0

Peer-to-peer fundraising is a hot topic these days. With many different options in the marketplace, it can be hard to choose one that'll work with existing software and have all the features you need for a successful campaign.

University of Minnesota FoundationThe University of Minnesota Foundation (UMF) needed a robust, scalable crowdfunding platform to accommodate the diverse range of causes and interests of the more than 66,000 students on seven campuses. In addition to standard crowdfunding features, they wanted several customizations to boost the power of team and personal campaign pages, plus integration with their accounting software.

After UMF's crowdfunding site launched, giving shot up by 350% and attracted the attention of many first-time donors. The new crowdfunding website empowers supporters to create personalized fundraising web pages to share with their family and friends in just a few simple steps.

Skvare customized the site to suit UMF’s specifications, adding many new features by extending CiviCRM and Drupal software. They employed the Search API with Drupal Views to accurately find and display some of the more than 400 campaign pages. Skvare also created a new Drupal module, Views CiviCRM Expose Tables, to clearly display all the participant and team page information.

The University of Minnesota Foundation’s crowdfunding website is a prime example of the type of large-scale, flexible solutions that can be developed with open-source tools.

To learn more about this crowdfunding project or other CiviCRM solutions, please visit Skvare.

 


Small U.S. Nonprofits: Make your fundraising numbers count

$
0
0

This is the final week for the Individual Donor Benchmark Survey, a tool to help you see how your grassroots fundraising compares to other small nonprofits across the United States.  This is the second year that AGH Strategies has supported the survey by building a CiviCRM extension for easy data collection, so you can complete the survey this afternoon.

The report also compares performance between different CRMs and fundraising databases, so you can help share the story of your success with CiviCRM.

Crunch your data

  1. Go to your Manage Extensions page in CiviCRM.
  2. Click Refresh, and once the list refreshes, go to the Add New tab.
  3. Look for the extension named Individual Donor Benchmark Survey 2016
  4. Follow the link to go to the report.
    You'll need to select the financial types that you consider to be "donations" (as opposed to program revenue or grants), and all the questions will fill for you.

  5. Go to http://www.thirdspacestudio.com/idbsurvey/ and begin the survey.

When you complete the survey, Third Space Studio will compile the responses into a report that you'll receive.

Read more on the original blog post, or check out the project's site for past years' results.

 

Sparkpost extension released: send 100,000 email/month free of charge!

$
0
0

The Mandrill email sending service, which a lot of CiviCRM sites were using as a cheap and reliable way to send emails, recently announced major changes in their operations and pricing structure that will certainly make it a lot less attractive to CiviCRM site owners.

But Sparkpost, another major email sending platform, stepped up to the plate in order to attract Mandrill customers and announced plans that include up to 100,000 free emails per month, which will be in effect for the life of the account. Clearly a very attactive offer, specifically as SparkPost is an email delivery service created by Message Systems, one of the leaders in (MTA) platforms designed for sending and receiving large volumes of email.

So ... if you have not yet created an account with Sparkpost, do it now. We don't know how long this 100,000 free emails/month for the life of the account offer will last!

And now that you have a Sparkpost account ... the only thing missing is now an easy to configure CiviCRM extension that allows sending both CiviMail and transactional emails through the SparkPost service. Well, you're in luck today, it's just been released!

Head over to https://github.com/cividesk/com.cividesk.email.sparkpost and READ THE DOCUMENTATION to get started.

Development of this extension was fully self-funded by Cividesk. Please support our effort so we can maintain and continue to improve this extension over time.

Happy sending to all!

Simple Donate 1.2 and CiviMobile 2.0 release

$
0
0

We at Web Access are happy to announce the release of Simple Donate 1.2 and CiviMobile 2.0. Both the extension are compatible with CiviCRM 4.7.

“Simple Donate” extension allows the administrator to link existing donation pages with our new sleek, user-friendly and responsive donation page.
For more info check: https://civicrm.org/extensions/simple-donate

"CiviMobile" extension provides a user with a mobile friendly interface for CiviCRM to perform specific tasks.
For more info check: https://civicrm.org/extensions/civimobile

You can get the code from our GitHub repos:
https://github.com/webaccess/com.webaccessglobal.module.civimobile
https://github.com/webaccess/com.webaccessglobal.simpledonate

 

Alternatives to Mandrill

$
0
0

CiviMail is a great way to send targeted email to your supporters using CiviCRM to segment recipients and populate token values. Meanwhile, email marketing services such as Mailchimp and Constant Contact provide sending infrastructure so you don't have to worry much as much about deliverability. By using CiviMail with an SMTP or email API service, CiviCRM users get the benefits of both.

One popular service is Mandrill, which is offered by Mailchimp. Hundreds of organizations use the extension that integrates it with CiviCRM. However, in late February, Mandrill users received an email about “some significant changes that will affect your Mandrill account”.

To summarize, Mailchimp is looking to shed users who are not using their core Mailchimp product. Mandrill users will have to sign up for a paid monthly Mailchimp plan, and the allowance of 12,000 free emails per month is eliminated. Customers will need to buy $20 blocks of 25,000 emails per month.

They also modified the terms of service to prohibit usage such as CiviMail:

If you use Mandrill to send bulk emails, in violation of our Acceptable Use Policy, then we may charge you at the comparable MailChimp pricing tier or terminate your account.

So, what are the best options for CiviMail users?  The following is a compilation of options for replacing Mandrill as your outbound SMTP mailer for CiviCRM.

CiviSMTP

For longer than many bulk SMTP services have been around, CiviSMTP has been offering external SMTP tailored for CiviMail users. They take care of setup for you (for a $50 fee), and bounce handling and reporting is integrated and reliable.

Pricing is more expensive than most, and there is no free option. The minimum charge per month is $15, including 3,000 emails, and the next 7,000 messages are 0.3¢ each. The following 90,000 emails are 0.1¢ each.

(8,000 messages) $30.00
(24,000 messages) $50.00
(80,000 messages) $106.00
Know CiviCRM, support CiviCRM as sponsor, no-mess integration
Setup on their schedule (2-3 days), high pricing

Mailgun

Rackspace offers a bulk email service called Mailgun. It offers straightforward documentation and separate tracking and queuing of mail from each domain. Domain verification is strongly encouraged but not required.

A CiviCRM extension is available for handling bounce and failure webhook notifications.. However, it has not had substantial updates for over a year and only claims to support CiviCRM 4.4.

The first 10,000 emails per month are free, and you don't even need to enter a credit card if you are certain to stay below that amount. The next 490,000 are 0.05¢ each. Billing is by actual usage.

(8,000 messages) free
(24,000 messages) $7.00
(80,000 messages) $35.00
Large user base, free tier with full features and no limits, affordable pricing, multiple subaccounts.
Potentially unsupported bounce handling extension.

Mailjet

Mailjet is a bulk email service based in Paris. It offers documentation in several languages. Domain verification is optional, though you must verify each sender's address otherwise. Multiple subaccounts can be configured.

A CiviCRM extension is written for CiviCRM 4.6, but it includes a PHP file override, making it incompatible with CiviCRM 4.7.

Pricing is based upon the plan you select, with overage amounts charged. The lowest plan is $7.49 per month for up to 30,000 emails, with $2.50 per additional 1,000 emails. The next plan is $21.95 per month for up to 60,000 emails, with $1.80 per additional 1,000. The third tier is $74.95 for up to 150,000 emails and includes a dedicated IP address.

(8,000 messages) $7.49
(24,000 messages) $7.49
(80,000 messages) $57.95
EU-based service is good for European users (but works for anyone).
Pricing tiers can hurt you unless you watch your usage. Extension only available for 4.6.

SendGrid

SendGrid is a longstanding SMTP service that some CiviCRM users have worked with for six or seven years. Multiple subaccounts can be configured for separate sending domains or subdomains, but only with “Pro” level accounts.

A CiviCRM extension is available in the extension directory with versions compatible with 4.4, 4.6, and 4.7.

Pricing is based upon the plan you select, with overage amounts charged. A free plan is available for up to 12,000 emails per month. The next plan is $9.95 per month for up to 40,000 emails, with 0.1¢ per additional email. The second paid tier is $19.95 per month for up to 100,000 emails, with 0.075¢ per additional email. A dedicated IP address and subaccounts are available on plans starting at $79.95 for up to 100,000 emails.

(8,000 messages) free
(24,000 messages) $9.95
(80,000 messages) $19.95
Long history of usage, published extension, affordable pricing for organizations sending tens of thousands of messages per month.
Pricing tiers will still cost if you have a slow month.

Simple Email Service (SES)

Amazon SES is Amazon Web Services' (AWS) bulk email offering. It is ideal for users of other AWS products, as it gives 62,000 free emails per month for messages sent from Amazon EC2 instances. You will need to either verify each sending address or the entire sending domain.

No CiviCRM extension is available, but you can follow instructions to configure it to have bounces arrive in a mailbox for CiviCRM's built-in bounce handler to pick up.

Messages are priced at 10¢ per 1,000 messages, except for the free tier from EC2 instances. Attachments are priced at 12¢ per GB sent (a 1 MB attachment sent to 1,000 recipients is a GB).

(8,000 messages) 80¢
(24,000 messages) $2.40
(80,000 messages) $8.00
Very affordable pricing, integration with other AWS products.
Interface can be confusing, extra charge for attachments.

SparkPost

One of the newer bulk SMTP providers is SparkPost, launched in September 2014. A service of Message Systems, a provider of very-large-scale email infrastructure, SparkPost offers similar features to other bulk SMTP providers, but it offers a uniquely large free tier: 100,000 emails per month.

Two CiviCRMextensions have been written in the past month, and both are in active development. You will need to verify your domain in one of several ways, but it does not necessarily require SPF or DKIM.

This free tier has two big caveats, however: you're also limited to 10,000 messages in a day, and you can't send any more per month without signing up for a paid plan, which starts at $24.99 for 100,000 emails per month, with 20¢ per 1,000 messages after that.

(8,000 messages) free
(24,000 messages) free if < 10,000 per day, else $24.95
(80,000 messages) free if < 10,000 per day, else $24.95
Free for many users, recommended by Mandrill, two extensions available.
Expensive if you have a list of 10,000 or more but email them no more than once a month.

Your Web Server

If you're running CiviCRM on a VPS or cloud server (as you really ought to), you can also just send mail directly from the server. You will absorb responsibility for being a good email citizen (as you should already be doing) and keeping your message transfer agent (MTA) software such as Postfix up-to-date, but it is a very realistic option for CiviMail users sending a modest amount of email. (Our rule of thumb at AGH Strategies is that self-management of email is appropriate if your average email run is 10,000 recipients or smaller.)

You will need to find appropriate instructions (or your CiviCRM partner can help you) for installing Postfix and Dovecot (or equivalents) on your Linux distribution, but once it's set up, your only maintenance should be regular upgrades and periodic review of logs and blacklists (or you can rely on monitoring services that your CiviCRM partner might offer). You will also want to be sure that your CiviMail settings limit each batch to a few hundred messages, run every 5-10 minutes.

(8,000 messages) free
(24,000 messages) free
(80,000 messages) free
Limited ongoing costs, no reliance on an additional vendor.
Requires expertise in setup, periodic ISP relations work.

Resources

The following are several resource that may be valuable for you:

Create "Member Only" Premiums with Early Bird Extension

$
0
0

About a year ago, IMBA's membership team noticed many of our members were renewing after their expiry date, and often after the "Lapsed" or grace period of two months we have in place. To help accelerate these renewals, our membership team decided to offer a "members only special"—a t-shirt normally reserved for $100 and up memberships for a lower membership fee of $50—if the member renewed as an "Early Bird" i.e. before their expiry date. Since this functionality wasn't readily available in CiviCRM, we made it a "call-in" special only, so a renewing member would have to phone up our membership team to take advantage of the offer. We had a positive response to the special, but it wasn't sustainable from a human resources perspective.

We decided to go digital.

Working with a contractor, we laid out several scenarios we'd like to use the extension—early bird renewal offers, special premiums for members who were expired, the ability to offer different premiums to different membership types, and others. A simple interface was added to the premium configuration workflow that adds the ability to display a premium on a contribution page only when a certain set of membership type and status criteria are met. While the extension only has parameters for membership status and type, they can be used independently from each other or in tandem to run a variety of special offers.

Additionally, there is also the functionality to hide an existing premium if the Early Bird premium is being displayed. This feature is helpful if you want to run a promotion where a premium your organization normally offers at one price level is being offered at a lower price for certain types or statuses of members, for instance. The Early Bird Premiums extension works when a user is logged in, or follows a checksum link. It also works on all contribution page types, not just those used for memberships. And if you want to get really specific, you can choose to hide the premium if the user selects an option from the price set that doesn't match the criteria, even if their membership does. To be fair, we haven't quite worked out a use case for that one, but thought it might be useful to someone. 

We've been pleased with the results, and have just released it in the CiviCRM Extensions Directory.

 

CiviCRM: Going Mobile

$
0
0

Anyone who has tried to login to their CiviCRM database via their phone knows the feeling: utter helplessness. You would even be forgiven for thinking CiviCRM is actively hostile to the small screen.

This initial experience of the un-initiated CiviCRM user on the phone will probably remain until the eventual adoption of the Bootstrap framework (a CSS framework with built-in mobile/responsive elements).

What may be surprising to many, however, is that CiviCRM today is quite mobile friendly in all the important areas. You just have to put the pieces together.

After a long discussion on the Civi Partners list of the myriad ways CiviCRM developers have been integrating Boostrap into their projects, Allan Dixon started a page documenting them.

The Bootstrap page includes both the civicrm_bootstrap theme (nice work CiviCRM team - looks great on mobile!) as well as PTP's own Drupal Bootstrap base theme called civiresponsive

The civiresponsive base theme was developed for PTP's PowerBase project. PowerBase is a hosted CiviCRM database services for political organizing groups - however, it will work for any group that is maintaining their CiviCRM installation in a Drupal site that is separate from the organization's main web site (a highly recommended setup that allows web site and CiviCRM upgrades/general maintenance to happen independently of each other and even by separate people or organizations).

The theme's goal is to facilitate designing Drupal 7 themes that look and feel like an organization's home page while displaying all of the CiviCRM public facing pages (e.g. contribution, event registration, petition, etc.).

This approach gives users a seamless experience going from an organization's home page to the various contribution/event/petition pages.

By using civicresponsive as your base theme, you can quickly develop sub-themes that are already responsive. The only changes you need are to modify the CSS elements to match the look of the original web page.

Here's an example of the only changes we had to make to a recent group's theme:

body { background-color: black; }

/*
* The bootstrap theme displays this toggle when the screen is
* small. However we have nothing in this menu so we never want
* it displayed.
*/
.navbar-toggle { display:none; }

.main-container { background-color: white; margin-top: 0px; }

.footer { background-color: #e7bd15; margin-top: 0px; }

.main-container { padding-top: 20px; padding-left: 40px; padding-right: 40px; padding-bottom: 20px; }

#navbar { background-color: black; margin-left: 0px; border: none; }

#navbar .logo { display: block; float: none !important; margin-left: auto !important; margin-right: auto !important; width: 959px; }

.navbar-header { float: none; }

#block-block-1 img { display: block; margin-left: auto !important; margin-right: auto !important; }

/* The next two lines were changed to center the banner. */
.navbar.container { max-width: none; }
.container { width: 100%; }

Next, we use the Drupal theme key module to specify the URL paths that should use the custom theme.

In addition to using the mobile-friendly theme for public facing CiviCRM pages, we have had a lot of luck designing custom intake forms using webform civicrm. The combination of the mobile theme and the layout control provided by webforms allows for an excellent user experience.

If you don't have a mobile-friendly theme, you can still have a great mobile-friendly contribution page using Simple Donate. This extension allows you to pick one contribution page and display it in a mobile-oriented way (it still exists at the regular, public-facing contribution page - with this extension you have two ways to access it).

While having well-designed public facing web pages is important, let's face it: most people interact with us via the email messages we send.

And, starting a few versions ago, CiviCRM core started shipping sample responsive design email templates, which are quite good. If you are not using an email template tested on mobile devices I would strongly encourage you to adapt one of these core templates to your look and feel. It makes a huge difference.

And, if you are frustrated adapting one of these templates, you might want to checkout the Email Template Builder extension which radically redefines how we can build email messages and templates. It does not yet fit in with the normal CiviMail workflow, but it is an exciting development and one that will hopefully become better integrated in the future.

All of these developments are focused on members of the public. However, there are times when the database admins need to access their database via their phones. The times are rare since most of us don't want to do data entry on the tiny phone keyboard or contend with the long scrolling lists. However, those rare times are well covered in the CiviMobile extension, which provides an excellent mobile interface for searching for contacts, event attendance and even completing surveys. You simply login to your CiviCRM site and add /civicrm/civimobile to the address bar and you are ready to go (you probably want to book mark it for future use).

These ready-to-use projects are all very exciting... but what's to come is even more exciting. If you are a developer, you might be interested in learning how to develop using the new CiviCRM angular tools.

CiviCRM is such a prolific community that it's impossible to keep tabs on everything, so please scroll down to the comments where you are sure to learn about the many mobile CiviCRM projects that didn't mention in this blog post!

Better Extensions for Users and Developers

$
0
0
With the introduction of the teams and working groups structure, the CiviCRM core team has created more opportunities than ever for community members to step forward and contribute in a clear, directed way. As part of that initiative, the Extensions Working Group has formed with the mission of ensuring a strong, vibrant, enduring extensions ecosystem for CiviCRM.
 
Our initial primary goals are:
  • to provide more guidance and direction for developers in the creation and publishing of extensions, and
  • to provide more clarity and better usability for users in finding and managing extensions through the multiple channels through which they are available (including the user interface, on CiviCRM.org, and on GitHub).
 
There was a productive working session during CiviCON where we identified some of the biggest pain points involved in the extension ecosystem, especially for developers, and right now during the post-CiviCON sprint we are concentrating on the items from that list that have the “biggest bang for the buck.” 
 
The current members of the working group include Tim Otten (CiviCRM core team), Coleman Watts (CiviCRM core team), Frank Gomez (Ginkgo Street Labs), Jaap Jansma (CiviCooP), Jon Goldberg (Palante Technology Cooperative), Karl Tatgenhorst (South Shore Networks), Nicholas Gavinet (CiviDesk), Allen Shaw (Joinery), and Guy Iaccarino (Greenleaf Advancement). 
 
There is a lot of work to do, so we will be meeting (remotely) every other week following the sprint, and thereby take the work in manageable chunks. If you are interested in joining us, you don’t have to have programming experience. We welcome contributor, administrator, and user representation in the working group to help provide feedback and perhaps provide some documentation. For example, if we change the extension management interface in CiviCRM, how does the screen look to you? Is the information clear? Is the workflow clear? I think you get the idea.
 
If you are interested in getting involved with this working group please message me in the extensions channel or directly (@guyiac) on chat.civicrm.org, or shoot me an email at guyiac@greenleafadvancement.com. To see our current working document in Google Docs, go here. We will also be posting occasional updates to the extensions channel, so you may subscribe there to stay informed of our progress.
 

Recipe for handling youth registration with CiviCRM

$
0
0

Do you need to allow parents to register their children? Tired of using custom data fields on a child to collect information about their parents and emergency contacts?    Would you like the information collected during the registration to create (or update) the various contact records needed in the back-office?  Then this blog post is for you.  This recipe creates a contact record for each child, each parent, each emergency contact, the household contact, and also builds the appropriate relationships between each contact.

With the current version of WebForm and WebForm-CiviCRM modules, and  some other extensions I am SO EXCITED about youth registration possibilities.  The 2 major pain points that I have encountered for youth registration have been solved:

  • Logged in parents can choose an existing child when filling out a WebForm! There is a select list of their children/spouse/partner or other contacts with a permissioned relationship.  (Thanks Eileen at Fuzion for the extensions that make this possible!)

  • The admin can configure a different dedup rule for each contact within a WebForm. For example: I use a dedup rule looking for first name, last name, and date of birth for any child contact on the WebForm. (Thanks Coleman Watts!)

An example of what a logged in user will see when filling out a WebForm:

 

What happens after the parent selects a child (the fields get auto-populated) :

Background:


Since I first started using CiviCRM (way back on version 1.7.x) I have been trying to using it for youth registration. By youth registration, I mean scenarios where a parent needs to enroll one or more of their children for a program, such as nursery school, after school programs,  youth camps, youth field trips, and similar.


I originally tried using CiviEvent registration, with very complex profiles for multiple participants. But this proved difficult as there was no good option to collect data about someone who is not a participant (ie the parents and emergency contacts)  I have seen this done with custom data fields for the parent’s data, but its a mess in the CRM backoffice, reporting is a hassle, and there is no ability to send email or SMS to the parents, or dedup parents with existing contacts. This is because the parents and emergency adults are not contacts in CiviCRM using that approach.

 

Then my former consulting practice and a large client generously sponsored the creation of the youth registration native extension for version 4.2 and for its upgrade to 4.3. However, due to many limitations and glitches it was never able to be used in a production environment, and it was never updated for CiviCRM versions higher than 4.3.


Then the WebForm-CiviCRM integration module was improved to work with CiviContribute, so the youth registration extension was formally abandoned in favor of using Drupal WebForms.  However, there were still limitations.  First, for returning parents they had to fill in info about each child for each and every WebForm submission.  This was an inconvenience for the parents who would ask “Didn’t I already send you my children’s information!?!”  Second, because WebForm used the default unsupervised  dedup rule for all contacts, the form submissions often resulted in a significant number of duplicate contacts, as most children did not have an email address.  Or the parent would use the child’s nickname instead of their first name.

With the latest version of the WebForm-CiviCRM module, and some other extensions, these previous issues are solved.

My recipe

Versions of Drupal modules used

 

Versions of CiviCRM native extensions used

  • Entity Settings Helper Extension (nz.co.fuzion.entitysetting) version 1.2

    • Install this first. This is available via the CiviCRM backoffice “Administer … System Settings … Extensions”

 


Configuration of WebForm

  1. Create or edit a WebForm

  2. Click the CiviCRM tab for the WebForm.

  3. Add multiple CRM contacts in the usual way to the WebForm. (I named mine Main Parent, Other Parent/Adult, Child A, Child B, Child C)

  4. Optional: add various CRM fields and CRM custom fields to each contact. In my screen prints, I used nick name, gender and date of birth for each child. 

  5. For each child contact, check the box to include  “Existing Contact” (see screen print attached to this blog post)

  6. Optional, but strongly recommended: For each child contact, add 2 relationships for each child: Add the "child of" relationship to each adult  in the WebForm.  (Also check the box to make sure the parent gets permission to their child.) This step will mean returning parents will see their children in the "existing contacts" select list when they fill out some other WebForm. It also means your back-office users can get reports on which kids belong to which adults.

  7. Click “Save”

  8. Click the “WEBFORM” tab

  9. Scroll to find the “Existing Contact” field for Child A, then click the “edit” link for that field.

  10. Change the “Form Widget” to “select list”  (see screen print attached to this blog post)

  11. Repeat steps 9 and 10 for each contact in the WebForm.


Challenges

Even with my current high level of excitement, some challenges remain:   

  • Any contributions created from a WebForm end up with a single financial type per WebForm event or membership.  There is no ability to use pricesets or the feature of having a single contribution with different financial types for each line item.  (Each paid thing on the webform ie an event, a membership ends up as one line item.)

  • The parent has to choose between "pay later" or paying in full. There is no option to pay a deposit. 

  • There is no version of the needed Drupal modules listed in this recipe for Drupal 8 yet.  

My solution to these challenges has been to hyperlink to a regular CiviContribution page to deal with all the financial matters. Since its not embedded within the WebForm, I can use pricesets, pledges, various financial types, etc.   Normally I put the hyperlink to the payment page on the thank-you page of the WebForm. 

Hope to hear how this works for your environments.

-Sarah Gladstone

http://fountaintribe.com

info@fountaintribe.com

 

Introducing CiviREBUX: Native Report Building Extension for CiviCRM

$
0
0

***************************************************************** INTRODUCTION ****************************************************************************

My name is Pranay and I study Computer Science at Indian Institute of Technology (IIT) Kharagpur. I am a student developer working for CiviCRM as a part of the Google Summer of Code 2016 program.  

*****************************************************************************************************************************************************************

This blog marks the end of my Google Summer of Code 2016 journey. I would like to start off by first thanking Google for organizing a yet another successful edition of the Google Summer of Code and changing the face of Free and Open Source Software (FOSS) in an unprecedented way. Next on the list is CiviCRM for being such a warm hosting organization and choosing me among the thousand great applications this year. I would also like to thank Brian Shaughnessy and Jaap Jansma — the best mentors I could have possibly worked with, for always being there when I needed them and helping me throughout the journey. Last but not the least, I would thank Utkarsh Sharma — my friend from Indian Institute of Technology (IIT) Bombay, who worked with CiviCRM during GSoC 2015 and recommended me to apply to CiviCRM this year.

After almost 4 months of development and testing, I am proud to introduce the product which I worked on during GSoC 2016 — CiviREBUX. It is a native module extension for drafting CiviCRM-style reports via a drag-n-drop interface. It combines powerful visualization and transformation techniques which gives users full capabilities of modern browsers and the freedom to design the right elements for their reports. CiviREBUX also supports saving and loading of report templates for later use. By native I mean, it works equally well on all the three CiviCRM-supported CMSs — WordPress, Drupal and Joomla.


Civi(CRM) RE(port) BU(ilding) X(tension) — pretty cool for a name isn’t it?


CiviREBUX integrates seamlessly within your CiviCRM dashboard and goes live seconds after installing the extension. CiviREBUX is a mix of the most popular desktop-based spreadsheet software and fast browser applications — essentially, a spreadsheet software running on your browser.

 

Coming to the new functionalities that CiviREBUX has to offer to the CiviCRM users. Let me just briefly talk about all of them below —

  • Drag-n-Drop Interface

Users can add/remove attributes (rows and columns in your report) into/out of the scope by simply dragging them into/out of the rows (left) and column (top) space in the UI

  • Cool Visualizations

Users can select how they want their data in the report to be visualized — tabular (default), bar charts, row and column heatmaps et cetera, powered using comprehensive D3.js and C3.js JavaScript libraries.

  • Export Options

Exporting the report template into CSV and TSV formats (available for download) is also support by CiviREBUX

  • Comprehensive Statistics

Users can choose which statistics do they wish to be displayed — unique count, sum, average, trimmed mean, minimum, maximum etc. along with dynamic aggregators viz. Monthly, Daily and Yearly, which will come in handy when they are dealing with reports spanning over time.

  • Filter and Search Records

Filtering and searching to locate specific records to be included in the report.

  • Saving and Loading Report Templates

Users can now save a report template to be loaded later. CiviREBUX also has added support for overwriting an already saved report template.

  • Adding Reports to Navigation Menu

For those users who are in a hurry, you can now add the most frequently used report template directly into the CiviCRM Navigation Menu under Reports >> CiviREBUX.

  • Viewing Saved Reports

Users can also load a report template by simply clicking the row corresponding to that template from the tabular list of previously saved report templates. Users can sort the templates by the Last Modified, ID and other fields as well.


Interested to try out CiviREBUX already?

Here is the link to the CiviCRM extensions page containing info about CiviREBUX and its native releases.  

Here is the link to a video which shows how CiviREBUX can be the one reporting module CiviCRM users might be looking for since a long time.

Just like the last time, I welcome everyone to please comment below if you like the work and want to know more about it. Also, please feel free to connect with me on Facebook or shoot me an email aty.pranay@gmail.com.

 

IMPORTANT LINKS

New Hebrew date extension available

$
0
0

Ever wanted to know Hebrew birthdays, yahrzeit dates, and other Hebrew dates for your contacts?  Now you can track all these dates, search on them, prepare lists,  and send reminders at the right time, and more.   Since this is a native CiviCRM extension, it will work under Drupal, WordPress or Joomla.

Get the extension at: https://civicrm.org/extensions/hebrew-calendar

Full documentation at: https://github.com/sgladstone/com.fountaintribe.hebrewcalendarhelper/wiki

Some examples:


 

Examples of how you can use this extension: 

Send people an email or SMS reminder about a their Hebrew birthday, yahrzeits they observe, calculated according to the Hebrew calendar.   (This extension knows how to deal with Adar vs Adar I vs Adar II, and other interesting dates that do not occur every year)   These reminders could include links to Contribution Pages to encourage an "in memory" donation. (Use the fancy token extension to make that easier:  https://civicrm.org/extensions/fancy-tokens

Use this extension to prepare a list of all yahrzeits that occur in the next week, so that their names can be read aloud during services.   

It will even calculate the earliest a person can have their bar/bat mitzvah, to help with scheduling. 

Don't understand any of this blog post, but you work/volunteer somewhere that is involved in the Jewish community,  just ask how this can help your organization.   

Looking forward to feedback,

Sarah 

http://fountaintribe.com

info@fountaintribe.com

 

 

 

Responsive design improvements

$
0
0

One of the top goals for the CiviCRM roadmap is to improve the theming to look good on more websites and devices. That's a big task and it won't happen overnight, but I want to stop and appreciate the progress we've already made plus other improvements in the works:

DASHBOARD IMPROVEMENTS

As of CiviCRM 4.7.11 the dashboard has a face lift. It loads faster, looks better, and refreshes itself automatically so you always have the latest information. And 4.7.13 will include a responsive layout that works great even on tiny screens.

MOBILE-FRIENDLY MENU

Thanks to Alice Frumin from AGH Strategies, we've released a new extension to give your site a mobile-friendly menu, which replaces the normal menubar automatically on small screens.

NEW THEMING SYSTEM

To advance us toward the eventual goal of swapping in a responsive theme such as bootstrap, we've been working on a swappable theming system to allow extensions to override core stylesheets and make big changes to the look and feel of CiviCRM without affecting users who prefer the classic look.

Mosaico

Mosiaico is an open-source email composer that makes it easy to compose beautiful, responsive emails. Check out the beta version of an extension that integrates Mosaico with CiviMail.

CiviGmail - Integration With Gmail

$
0
0

CiviGmail is a chrome extension for Gmail, which allows Gmail to directly interact with CiviCRM via OAuth2. Once authorized emails can be filed as activities in CiviCRM. Idea is to support same set of features like CiviOutlook, reusing its apis.

Features

  1. Record emails from Gmail inbox against CiviCRM contacts
  2. Use email address deduplication to attach emails to the correct contact including creation of a new contact if they don't exist.
  3. Prompts for duplicate contacts so that user can select which ones they want to create the activity with.
  4. Supports multiple attachments

Prerequisites

  1. Setup OAuth2 Server on your civi site - https://www.drupal.org/project/oauth2_server.
  2. Download and install civicrm extensions - gmailapi and outlookapi on civi site, where you want activities to be created -

Setting Up OAuth2 on Civi Site (Drupal)

  1. Download and install drupal module - https://www.drupal.org/project/oauth2_server.
  2. Enable the OAuth2 server module.
  3. Create a server. Go to admin/structure/oauth2-servers and create a server. Leave the default values in settings, they will be explained later.
  4. Create a scope. Click the "scopes" link, and you will be taken to the scopes listing page. Make sure you have at least one scope with label as “civigmail_extension”. Description could be anything say “CiviGmail Scope”.

  5. A client is an application requesting authorization from the resource owner (logged-in user on your website). In our its going to be CiviGmail user.
    • Client ID. This could be set to chrome extension ID “egjglhooblpbneakhiphjdicboojpamj”.
    • Client Secret. Set this to some key that you going to share with CiviGmail users. The Client ID and Client Secret can be thought of as the client username and password. The client id is considered public information while the client secret must be kept private at all cost.
    • Redirect URI. Set this to “https://egjglhooblpbneakhiphjdicboojpamj.chromiumapp.org/
  6. Give permission for using the OAuth2 Server. In admin/people/permissions, in section OAuth2 Server, check the permission Use OAuth2 Server (Use OAuth2 Server for authorization.) for anonymous users.
  7. You are now ready to handle authorization requests.

Setting Up CiviGmail for Chrome

  1. From your chrome browser visit - https://chrome.google.com/webstore/detail/civigmail/egjglhooblpbneakhiphjdicboojpamj?hl=en-GB&gl=GB&authuser=1 and click “ADD TO CHROME”.
  2. Agree to permission prompt and click “Add Extension”.
  3. Visit extensions page in your chrome browser - chrome://extensions/.
  4. Locate CiviGmail and click options. Specify url options and save:
  5. CiviCRM URL e.g https://example.org/civicrm
  6. Go to your gmail. Make sure to reload your gmail by visiting - https://mail.google.com (without any # params).
  7. On load you will see two buttons “Connect Civi” and “Record Activity”.

  8. Initiate OAuth by clicking “Connect Civi” button. This will trigger a new pop-up where you will need to enter site username and password, followed by “Yes, I want to authorize this request” button.
  9. Once authorized, click select any email from inbox, and click “Record Activity” to file it in Civi.

Known Issues

  • Its an initital release that only works with Inbox for now.
  • Limited to Drupal at this point due to OAuth2. We exploring other CMS.
Viewing all 290 articles
Browse latest View live