Below is a short screen cast from Shaun showing off some of the new iPhone support that'll be in the Q1 release of the Blackbaud Enterprise CRM.
iPhone Support in Blackbaud Enterprise CRM
Tuesday, December 8, 2009Posted by Garrett at 19:02 0 comments Links to this post
Labels: Blackbaud, CRM, Enterprise, Infinity, iPhone
Social Networking in NetCommunity
Tuesday, August 4, 2009I know it's been a while since my last post. Things have just been very busy all around and I haven't been able to make time to blog.
- Greeting - If you look at the top we have customized how we address each person based on their chosen preferences. We are a military organization so you can imagine that can add a layer of complexity to the whole bit about greeting. We give people the option to choose if they prefer to be greeted with their military or civilian titles and if they have chosen a nick name we also honor that. That greeting is completely custom to each user that logs in and they can change it at any time.
- Information Box - At the top we display various messages that are targeted to the logged in user. These can range from information about a chapter event in your area to a link to your class reunion page. We allow you to hide that box for up to 30 days. This saves some real estate on the screen for your gadgets if you have already read all the messages. At any time you can show the box again if you want to. Each messages can be targeted using NetCommunity roles. We also pre-populate a few messages if your profile or other information is out of date and ask that you update it.
- Gadgets - This custom part is modeled after iGoogle functionality. A gadget is actually it's own little custom part. This page is basically designed to consume both custom and non custom parts and display them to the user. Each of those gadgets can be dragged and dropped where you want them and the order is saved so when you return your gadgets are where you put them. As we make more gadgets available they can be added from the bottom section. If you are not interested in a gadget you can simply remove it. The goal here was really to allow users create their own landing page with the content they care about. Check out the video below to see that in action.
- Suggested Friends - This gadget uses some back-end SQL to determine other USNAConnect users that you might know. You can choose to "view/add" them or if you wish, "hide" them.
- Your Membership Info - Displays your current membership information from The Raiser's Edge and it will prompt you to upgrade or renew if you are close to expiring.
- Top pages - Shows the top pages on our website in the past 30 days.
- Top New Articles - Displays the top news articles from our site in the last 30 days.
- Interactive Tools - This is actaully a menu 2.0 part in NetCommunity and we're using some of the new API stuff in v5.5 that lets you pull the XML out and parse it up. Coolest part? It honors NetCommunity roles so it won't show you a link if you aren't in a role that can access it. That saved us a lot of development time. There is an open source example of this on Labs if you want more information. This one just displays some links to a few apps that we really couldn't work into this page.
- Your Friend Map - Shows a map of all your friends that can be geo-coded in our database. It honor's their privacy settings so if their address is private we don't display their location.
- Your Events - Displays all of the upcoming events you have registered for with us and the most recent 5 other registrants that have also signed up for that event. Best part? You can subscribe to the feed of registrants with RSS so you can easily monitor the event as other people sign up. This is great for reunions.
- Volunteer Leadership - This is another menu 2.0 part that shows a lot of the apps specific to our volunteer leadership folks.
- My Top Pages - Shows a list of the most recent pages that you have visited. This is great for folks that use one feature of our site a lot and if you recently found a page and need to locate it again.
- Alumni Lookup Lite (Not Shown) - This feature is only open to Alumni. It allows you to do a quick search for any alum in our database by name and class year. This is one of the most popular activities on our site so we wanted to provide an easy way for our alumni to search from their USNAConnect landing page.
- My Class News (Not Show) - Here is another feature only open to our Alumni. Similar to Top News Articles but it's filtered on only news specific to the class year of the logged in user.
Posted by Garrett at 07:50 0 comments Links to this post
Labels: Blackbaud, NetCommunity, social networking, user networking manager, usnaconnect
Blackbaud releases an iPhone emulator
Wednesday, February 18, 2009Today Shaun Sullivan posted an article in Labs discussing his latest project, an iPhone emulator.
Posted by Garrett at 20:19 0 comments Links to this post
Open Source REAPI Project
Saturday, February 7, 2009Earlier this week AJParise made me aware of an Open Source project that he started for the REAPI on CodePlex. There is some pretty slick stuff there for those of us that have purchased The Raiser's Edge API.
AJParise wrote: In January 2008, I started working extensivley with the REAPI.After a year of headaches and mindnumbing research I've developed some very handy classes for .NET developers using the 3.5 framework looking to integrate with the REAPI.
Posted by Garrett at 20:21 0 comments Links to this post
Labels: API, Blackbaud, open source, re
Geo-coding Your Constituents
Saturday, January 17, 2009'''''' this method will take a REID and get the address''' then it will use google maps to lookup that address address''' note: the value of the returned array with the lat/lng is nothing if''' either the address coudln't be geocoded or it wasnt' specific enough to get back a single result''''''''''''_ Public Function getConstitLatLng(ByVal sREID As String) As ArrayListDim oConstit As New CRecord 'this is the constit objectDim aLatLng As New ArrayList(2) 'we'll be returning this.Dim RE7 As REAPI = initAPI() 'this is located in the source. be sure to change up your serial, username, pass and db number.Dim oAddress As CConstitAddress 'address objectTryWith oConstit.Init(RE7.SessionContext) 'init.Load(sREID) 'load the passed in REIDFor Each oAddress In .Addresses 'loop over all the addressesIf oAddress.Fields(ECONSTIT_ADDRESSFields.CONSTIT_ADDRESS_fld_PREFERRED) = -1 Then 'grab the prefered one, yes I know it's -1 trust me on this -1 = true for some strange reason in the BBREAPI...I don't ask questions if it works.'pass the retrieved criteria to the seekCoords methodaLatLng = getCoords(oAddress.Fields(ECONSTIT_ADDRESSFields.CONSTIT_ADDRESS_fld_ADDRESS_BLOCK) & " " & oAddress.Fields(ECONSTIT_ADDRESSFields.CONSTIT_ADDRESS_fld_CITY) & ", " & oAddress.Fields(ECONSTIT_ADDRESSFields.CONSTIT_ADDRESS_fld_STATE) & " " & oAddress.Fields(ECONSTIT_ADDRESSFields.CONSTIT_ADDRESS_fld_POST_CODE))Exit ForEnd IfNextEnd WithFinally 'close down your stuff...alwaysoConstit.CloseDown()System.Runtime.InteropServices.Marshal.ReleaseComObject(oConstit)System.Runtime.InteropServices.Marshal.ReleaseComObject(RE7)End TryReturn aLatLng 'return the valueEnd Function
Private Function getCoords(ByVal sAddress As String) As ArrayListDim stream As IO.Stream = NothingDim doc As XmlDocumentDim req As HttpWebRequestDim aLatLng As New ArrayListIf sAddress <> "" Then 'we check to make sure that we have an addressreq = DirectCast(WebRequest.Create("http://maps.google.com/maps?output=kml&q=" + sAddress), HttpWebRequest) 'pass the address to googole and assign the results to req'now we parse up the results'generally speaking kml = xml so we can use the std handlers in .net for this'why google doesn't just call it xml is beyond meDim response As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse)stream = response.GetResponseStream()Dim sr As New StreamReader(stream)Dim text As String = ""text = sr.ReadToEnd()sr.Close()doc = New XmlDocument()doc.LoadXml(text)longitudes = doc.GetElementsByTagName("longitude")latitudes = doc.GetElementsByTagName("latitude")'for simplicty we only want to worry about results that have 1 possible result'none, means the address wasn't geocodable'multiple means the address wasn't specific enoughIf longitudes.Count = 1 ThenaLatLng.Add(latitudes(0).InnerText)aLatLng.Add(longitudes(0).InnerText)End IfEnd IfReturn aLatLngEnd Function
Posted by Garrett at 21:08 4 comments Links to this post
Labels: Blackbaud, custom parts, geo-code, NetCommunity
What's cooking
Thursday, January 15, 2009- The top five new articles on our site in the last 7 days.
- The top five non-news article pages in the last 30 days.
- The top five pages the logged in user has visited in the last six months.
Posted by Garrett at 20:13 1 comments Links to this post
Labels: Blackbaud, blogger, custom, NetCommunity
2008 Online Giving Trends
Tuesday, January 6, 2009The subject is a bit off topic from what I usually write but I found it pretty interesting.
Posted by Garrett at 07:10 0 comments Links to this post
Labels: 2008, Blackbaud, giving, Ma, maclaughlin, steve maclaughlin, trends



