CiviCRM Meetup: Custom APIs and Mapping Tool

We recently arranged another CiviCRM Meetup in Dallas, Texas. We would like to thank Improving Enterprises for continued use of their facility and Skvare for continuing to organize the group. Mark Hanna led the discussion on CiviCRM’s mechanism that allows developers to create their own custom API calls. Developers can provide API calls in programming languages such as PHP, Javascript/Ajax, JSON and more. This is a useful feature in CiviCRM because it allows developers to efficiently pre-configure complex operations. Mark showed the group how to create a custom API call that retrieves a list

Managing and Arranging Stacked Blocks

To achieve specified design, you may need to make two blocks overlap. In Drupal, blocks are the spaces that hold the content we have put into them. This gives us the freedom to place them and then style them wherever on the page we need to achieve design. If the blocks are only for visual purposes, then this would be fine; however, if one of the blocks has a button or other hover/clickable functions, then this might be an issue, especially if that block is covered by the other. The solution? No matter how many blocks you have stacked up, there is a way to organize the order of which the blocks

Ongoing Gmail Outage

Due to an ongoing Gmail (and Google Apps) outage email communication to skvare.com may be delayed. Currently up to 50% of Gmail and Google Apps users are being affected over aperiod of several hours. For urgent issues, please call our team directly. Skvare's Drupal and CiviCRM web hosting services continue operating unaffected. It may be prudent to postpone sending out any bulk email via CiviMail or other third-party providers to avoid unexpected bounces or delays of delivery.

Override existing path with Path Redirect

When rearranging content sections that result in changed URLs, it is very important to remember that users may have bookmarked individual pages and the Google index will be pointing searches to a now defunct address. Several solutions exist, including mod-rewrite instructions in the .htaccess file. This is particularly handy for complex changes or a large number of addresses that need to be changed with a specific pattern. Drupal's Path Redirect provides an integrated solution with several useful options and tools. For example, the ability to view the last time a redirect was used is an

Non-existent URLs in Views 2

Views 2 serves pages with for non-existent URLs instead of presenting a 404 Not Found Error. A view with page display path set to blog creates a valid link at example.com/blog. This will show a list of blog posts, with an individual article at example.com/blog/new-article. However, an accidental link to example.com/blog/accidental-link will provide content from example.com/blog instead of the expected 404 Not Found Error, since no valid content exists there. This is a usability as well as SEO issue. Searching discussions on Drupal and Groups.Drupal yielded the right answers. The solution is to

Hierarchical site and menu structure

Since Drupal stores all pages in a database, the webmaster is responsible for creating a hierarchical organization of the content. The visitors and search engines then navigate through a logically subdivided site structure. Native Drupal URL for a page is example.com/node/271 or example.com/?q=/node/271. A user- and SEO-friendly URL is website.com/section/article Modules needed: Menu (core) Path (core) Pathauto Token Ensure that Clean URLs (/admin/settings/clean-urls) are enabled. Open the Pathauto admin control panel - Administer > Site configuration > Pathauto Expand the Node path settings

Limit Autosubscribe to Enabled Nodes

Messaging and Notifications are popular Drupal modules that can be used for a website forum to notify original poster of replies, or an administrator of comments posted for a specific content type. When 'Set all users to "autosubscribe" by default' is enabled in admin/messaging/notifications/content, it generates notification subscriptions even for node types that are not enabled. In other words, all nodes created by a user automatically get a new subscription. This may be troublesome, especially when creating new content on the site - at the very least creating numerous useless subscriptions

Image Protection with jQuery

Once an image is publicly available on the internet, there are many ways to make a local copy of it. There are also a number of ways that try to prevent such unauthorized downloads. Preventing right click / save of the image is most likely the easiest way to protect the casual drive-by image theft. How to incorporate it within a Drupal theme? 5 lines of code. Within the theme directory, create (if it doesn't exist) or edit script.js. This file will be loaded automatically with the rest of the Drupal jQuery. $(document).ready(function(){ $('img').bind("contextmenu",function(){ return false; })

Presenting at Dallas Drupal Days

Dallas Drupal Days 2011 will be held on July 8-9, 2011 at the University of Texas at Dallas. This event will cater to the business side of Drupal on Friday and focus on technical aspects of development on Saturday. On Friday, July 8, 2011 at 9:30 AM I will be presenting CiviCRM for Non-Profits and Small Businesses. Join in and learn about what an integrated CRM system can do for your organization! If you are following on Twitter, look up @DallasDrupal.

CKEditor and GeSHi filter

Update: This approach does not involve the WYSIWYG module. It relies on the installation of CKEditor (module and editor) without a middleman management module. If you desire finer control of toolbar display by roles or HTML functionality permissions, take a closer look at the Better Formats module. It is easier to focus on content when working with a WYSIWYG editor. I can always switch to view the source code if I need to do more complex editing. As I continue to document my Drupal experiences, I wanted to use a syntax highlighter when sharing code samples. First, I looked at the Syntax