
Implementor, Developer, Trainer
elMobile Inc.
As developers for various OpenSource CRM applications, we learned a lot from CiviCRM on its scalability and ease of customization.
CiviCRM community is truly organic cultivating growth for users and developers.
We wish to continue learning with CiviCRM and to tackle future challenges with CiviCRM.


DEVELOPER
NS WEB SOLUTIONS
I'm quite impressed with the responsiveness of the CiviCRM community, both from the core developers and many experienced users who have quickly provided answers and ideas in areas where I just needed that extra insight, or where we needed to do something totally new. After several years working with open source software, I'm finding the CiviCRM community to be the most responsive and helpful I've seen.
We make CiviCRM one of our primary offerings because it just provides so much right out of the box that our clients need, without a line of custom code. And when we need to extend it for the clients' unique needs, the APIs and programming hooks let us add in features that would be impossible in some other systems. This means we can provide great value to our clients with quick turnaround times and reasonable budgets, which is great for our clients and for us.



End-user and Developer
Woolman Sierra Friends Center
If it weren't for CiviCRM we'd be using at least 5 different
systems for Woolman: one for donor management, another for email newsletters, a third for our school enrollment, a fourth for our summer camp registration, and then a whole bunch of spreadsheets for keeping track of things like event attendance, prospective students, CSA memberships, etc. And of course none of those systems would talk to each other or make it possible to get a whole picture of the many ways one person might participate in our education center's activities. Migrating all of our scattered data and disparate systems to CiviCRM was a long and challenging process, but the results have been more than worth it. Our ability to track and report on our programs has improved dramatically, while the burden on staff to do data entry has been greatly reduced, and our participants are happy that they can now register/enroll online rather than mailing or faxing paper forms.


Developer, Implementor
Web Access India Pvt. Ltd.
I have been part of CiviCRM project from the beginning and feels great to see how it has grown over the years.
I am glad to be associated with such a wonderful open source project and an awesome community around it.


Implementor, Developer
Pogstone, Inc.
I have been involved in the CiviCRM community for over 4 years, and enjoy implementing and programming CiviCRM for a variety of non-profits. I have been amazed at the rapid pace of innovation delivered with each new release, and CiviCRM's flexibility in being able to accommodate a variety of requirements. I have learned a lot about CiviCRM by participating in CiviCon, online forums, and CiviCRM book sprint.


Developer and End-user
Fuzion
CiviCRM has one of the most active and friendliest communities I have come across. From initial tentative forum posts I was encouraged into engaging more actively through IRC and directly with other groups & individuals and am now happy to count many community members as friends. I recently found an article on the web that said if you post a question about CiviCRM anywhere on the web Lobo will post an answer within a few hours. It often feels like that is true.
One of the most valuable way in which the community supports me is by allowing me to bounce my ideas around and often someone is able to suggest an approach which is better than mine.


Implementor, Developer
PeaceWorks Technology Solutions
PeaceWorks provides technology solutions for not-for-profit organizations. CiviCRM fills an important niche among our clients who need a flexible, comprehensive, user-friendly, web-integrated CRM solution.


End-user, Administrator
City Bible Forum
City Bible Forum is an Australian not-for-profit Christian organisation. We need to communicate effectively with our constituents, and CiviCRM gives us a comprehensive set of tools for managing relationships. Interestingly, we often find that new features are being added just as our need for those features is becoming apparent. It's the right fit for us.


Administrator and End-user
CiviCRM is a powerful tool that could be really useful for many non-profits in Mexico.
Unfortunately the community is very small in my country. I hope that in the next years the community expands around Latin America.


Implementor
BackOfficeThinking
CiviCRM allows us to bring all benefits and capabilities of a large commercial CRM and
donor management system to medium and large non-profits at a fraction of the cost. CiviCRM also allows smaller non-profits to benefit from an integrated solution for donor management, events, bulk email, etc. substantially increasing their effectiveness as compared to managing a variety of nonintegrated software and spreadsheets. Thanks to a strong CiviCRM community, CiviCRM’s functionality continues to advance and CiviCRM’s market continues to grow rapidly.


Implementor, administrator
Third Sector Design
We work with non-profits to help them use and understand Civi. It's such an important tool for these organisations and it's great to see people using it in different and interesting ways. Using and working with Civi is made so much more fun and useful by the enthusiastic and talented community surrounding it.



Comments
This is super cool and useful ...
Might be good to add a link to this blog post on the wiki in the custom fields section and / or a copy of this in the Developer -> Customizing section and / or add as an example in the book dev section!
contactListQuery hook
Isn't this what the contactListQuery hook is designed for?
http://wiki.civicrm.org/confluence/display/CRMDOC/CiviCRM+hook+specification#CiviCRMhookspecification-hookcivicrmcontactListQuery
Or if not -- or if the hook didn't meet your need -- can you explain the difference between your solution and using the hook to control what's available in the list?
KISS
Well, I'd argue that it's much easier to add a few lines of jQuery in a template than having to develop a module and add the hook and find the right sql query.
Moreover, the ajax solution is using the power of the api, ie. you have as many filters as you want, essentially for free. I takes 10 seconds to switch from filter "all the contact subtypes teacher & leaving in CA and that are tagged experienced and that belong to the group supervisors or the group elementary teachers" to "organizations in france that have the custom field 'magic pony' set to pink".
With the hook, you have to know civicrm db structure to create that request, and it takes way longer to build it than set a few params to an api call, that's much harder to switch between criteria, and because the db structure changes between versions, an upgrade might break up your sql query, much less likely with the api.
The only benefit of that hook is that you can do queries that aren't available in the api. I personally would in that case create a new custom API instead of the hook, so it is usable as well from the rest api, and crmAPI and other templates.
tl; dr; : me no liking sql, me liking api ;)
And, filter based on other fields' values
Oops, almost forgot something that is really funky: you can use the value of another field in the form to filter further the list.
We did use for mepwatch.eu and when you set the country field for a candidate, the list of parties where restricted to the ones from that country, direct from the browser, without any additional request or page reload.
in 2 lines of jQuery.
X+
The preferred way to do event
The preferred way to do event binding, and anything else that doesn't affect the appearance of the visible portion of the page is to use
$(window).load(function(){});rather than
$(document).ready(function(){});This trick makes your JavaScript run after the page is completely finished rendering whereas using document.ready will delay page rendering. This is most important for anything that does an HTTP request (which isn't the case here).
Good point
Have to say I put it into ready instead of load without thinking about it and in general your point is very good advice.
In that case, as it's about undoing something that has an impact on the GUI (the autocomplete adds an icon on the field...) and that it doesn't take long (no request on the network to wait for) I'd leave it there, but definitely going to work as well in the load.