SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
10/7/2013 #bbcon 1
PRESENTED BY:
JUNIOR ACHIEVEMENT OF CANADA
Maurice Kowanetz, BMath (Computer Science)
- National Director, Information Technology
Chris Weber
- National Manager, Sponsorships and Fund Development Systems
Think Outside
of The Box
Think “No Customization” with
The Raiser's Edge and Blackbaud NetCommunity
@JA_CANADA
@MRCHRISWEBER
#THINKOUTSIDEOFTHEBOX
@BBCON
Tweet about
this session!
10/7/2013 #bbcon 2
• Customizing software usually involves engaging a third party to
change the software itself
- Costly (both up front and in the future as the base software changes)
- Time consuming
- Never get exactly what you’re looking for
• Configuring software usually involves an expert user who is extremely
familiar with advanced features, and/or a motivated volunteer who is
an expert in their field
- Inexpensive
- Quick
- Will meet 80% to 90% of what you’re looking for
• Why pay thousands or tens of thousands of dollars to get 10% more of
what you’re looking for?
- Find the right people to get involved with your organization (or train your
staff!) to achieve what you need with little to no additional investment
CUSTOMIZE VS CONFIGURE, WHO CARES?
10/7/2013 #bbcon 3
• Social Media Login
• Use JavaScript to "tweak" the way Blackbaud NetCommunity works
- Introductory step-by-step guide that you can use yourself or pass along to
others
• Custom Templates
• Queries/Plug-ins for Auditing & Clean-up
• Crystal Reports
• To Host or Not To Host with Blackbaud
AGENDA
10/7/2013 #bbcon 4
SOCIAL MEDIA LOGIN
10/7/2013 #bbcon 5
• Why force your users to create yet another username/password to
register with your site? Enable social media login so that your users
can login to NetCommunity using a username/password they already
know
- When a user registers using social media, NetCommunity creates a “behind
the scenes” user called SocialWebXXXX, where XXXX is a unique number
- Setup Social Media for the first time in NetCommunity to integrate with the
social media login provider Janrain, then setup an application within each
social media site
• Search for “configure social media” in Blackbaud’s on-line knowledgebase
and click on “Create social media application and configure Janrain
settings” for full instructions
- Note there are some idiosyncrasies when it comes to password resets, since
social media accounts don’t need it, but NetCommunity’s password reset
routine still allows the user to reset the password for their SocialWebXXXX
username
SOCIAL MEDIA LOGIN
10/7/2013 #bbcon 6
• To setup NetCommunity to use your Javascript code:
- Login to NetCommunity as an Administrator
- Edit your site’s main Template (that all of your Pages are based on)
- Click on lowest Empty Content Pane on the Template, then click New Part
- Choose the Part type as “Unformatted Text”, give a name, then click next
- In the text area of the Part, copy/paste the following Javascript base code
<script type="text/javascript" language="javascript">
function fncAfterAsyncPostBack() {
fncProcessJavascript();
}
function fncApplicationInitHandler() {
var objPageRequestManager = Sys.WebForms.PageRequestManager.getInstance();
objPageRequestManager.add_endRequest(fncEndHandler);
}
function fncEndHandler() {
fncAfterAsyncPostBack();
}
Sys.Application.add_init(fncApplicationInitHandler);
window.onload = fncProcessJavascript();
</script>
- On the following slides, you’ll copy/paste the Javascript code shown on the
slide right after the first line above that starts with <script…>
- Test, test, test…
• Internet Explorer 8, Internet Explorer 9, Internet Explorer 10,
Chrome, Firefox, Safari, etc
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 7
• Here is your first Javascript program to display a NetCommunity Page’s
browser title field & unique PC #, to test that everything works
- Add code below to base code on slide 4, below first line starting with <script…>
function fncProcessJavascript() {
var objTitle, strTitle, strPCNumber;
if (document.getElementsByTagName("title")) {
objTitle = document.getElementsByTagName("title");
strTitle = objTitle[0].innerHTML;
strPCNumber = fncGetPCNumber();
if (strPCNumber != "") {
alert("You’re on the " + strTitle + " page, which has a unique PC number of " + strPCNumber);
}
}
}
function fncGetPCNumber() {
var strPCNumber, objSpan, i;
strPCNumber = "";
objSpan = document.getElementsByTagName("span");
for (i=0; i<objSpan.length; i++) {
if (objSpan[i].id.substring(0,2) == "PC") {
strPCNumber = objSpan[i].id.substring(0,objSpan[i].id.search("_"));
break;
}
}
return(strPCNumber);
}
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 8
• On any Page, limit Title picklist (if found) to only show top “x” items
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 9
• On any Page, limit Title picklist (if found) to only show top “x” items
- Add code below to base code on slide 4, below first line starting with <script…>
function fncProcessJavascript() {
var strPCNumber;
strPCNumber = fncGetPCNumber();
if (strPCNumber != "") {
fncLimitTitle(strPCNumber);
}
}
function fncLimitTitle(strPCNumber) {
var objSelect, strElement = "";
if (document.getElementById(strPCNumber + "_ddTitle")) {
strElement = "_ddTitle";
} else if (document.getElementById(strPCNumber + "_BBControl5_0_0")) {
strElement = "_BBControl5_0_0";
} else if (document.getElementById(strPCNumber + "_Wizard1_DonationCapture1_cboTitle")) {
strElement = "_Wizard1_DonationCapture1_cboTitle";
} else if (document.getElementById(strPCNumber + "_DonationCapture1_cboTitle")) {
strElement = "_DonationCapture1_cboTitle";
}
if (strElement != "") {
objSelect = document.getElementById(strPCNumber + strElement);
objSelect.options.length = 9; // Show top 8 items in Title picklist (change 9 as required)
}
}
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 10
• On donation pages, reformat and align text (change “$1,000.00” to “$1,000”)
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 11
• On donation pages, reformat and align text (change “$1,000.00” to “$1,000”)
- Add code below to base code on slide 4, below first line starting with <script…>
function fncProcessJavascript() {
var strPCNumber;
strPCNumber = fncGetPCNumber();
if (strPCNumber != "") {
fncReformatDollarColumn(strPCNumber);
}
}
function fncReformatDollarColumn(strPCNumber) {
var objTable, i;
if (document.getElementById(strPCNumber + "_tblAmount")) {
objTable = document.getElementById(strPCNumber + "_tblAmount");
for (i=0; i<objTable.rows.length - 1; i++) {
if (objTable.rows[i].cells[1].textContent) {
if (objTable.rows[i].cells[1].textContent.indexOf(".00") != -1) {
objTable.rows[i].cells[1].textContent = objTable.rows[i].cells[1].textContent.substring(0,
objTable.rows[i].cells[1].textContent.indexOf(".00"));
}
} else {
if (objTable.rows[i].cells[1].innerText.indexOf(".00") != -1) {
objTable.rows[i].cells[1].innerText = objTable.rows[i].cells[1].innerText.substring(0,
objTable.rows[i].cells[1].innerText.indexOf(".00"));
}
}
objTable.rows[i].cells[1].style.textAlign = "right";
}
}
if (document.getElementById(strPCNumber + "_chkAcknowledge")) {
document.getElementById(strPCNumber + "_chkAcknowledge").parentNode.parentNode.style.display = "none";
}
}
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 12
• On event registration classic pages, change text justification in a row
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 13
• On event registration classic pages, change text justification in a row
- Add code below to base code on slide 4, below first line starting with <script…>
function fncProcessJavascript() {
var strPCNumber;
strPCNumber = fncGetPCNumber();
if (strPCNumber != "") {
fncEventSectionUnitAlignUnitTableRowsToTop(strPCNumber);
}
}
function fncEventSectionUnitAlignUnitTableRowsToTop(strPCNumber) {
var i, j;
i = 0;
while (document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i)) {
j = 0;
while (document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_ddlQuantity_" + j)) {
document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_ddlQuantity_" +
j).parentNode.style.verticalAlign = "top"; // replace with bottom if needed
document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_lblPrice_" +
j).parentNode.style.verticalAlign = "top"; // replace with bottom if needed
j++;
}
i++
}
}
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 14
• On event registration classic pages, hide columns
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 15
• On event registration classic pages, hide columns
- Add code below to base code on slide 4, below first line starting with <script…>
function fncProcessJavascript() {
var strPCNumber;
strPCNumber = fncGetPCNumber();
if (strPCNumber != "") {
fncEventSectionUnitHideUnitColumn(strPCNumber);
}
}
function fncEventSectionUnitHideUnitColumn(strPCNumber) {
var i, j;
i = 0;
while (document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i)) {
j = 0;
while (document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_lblNumParticipants_" +
j)) {
document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_lblNumParticipants_" +
j).innerHTML = "";
j++;
}
i++;
}
}
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 16
• Sort constituent attributes on a registration page
- Add code below to base code on slide 4, below first line starting with <script…>
function fncProcessJavascript() {
fncSortConstituentAttributes();
}
function fncSortConstituentAttributes() {
var arrSort = [
"Attribute name 1", // Replace Attribute name 1 with your first attribute you want at the top
"Attribute name 2", // Replace Attribute name 2 with your second attribute you want shown next
"etc"
];
var arrTemp = new Array(); //array to hold the <tr>'s that we'll be sorting
var intAttributeCounter = 0; // counter to count up as we find <tr>'s with attributes
var intAttributeStarting = 0; //we'll set this to the index of the first <tr> that contains an attribute
var objTRCollection = $('table.LoginFormTable > tbody').eq(2).children(); //collection of <tr>'s where the attributes
var intTRCounter = objTRCollection.length - 1; // counter for all of the <tr>'s in our collection
//loop over collection of <tr>'s, looking for those with constituent attributes
for (var i=0; i<intTRCounter; i++) {
var objTRWithAttributeClass = objTRCollection.eq(i).children().eq(1); //get the 2nd child <td>
if ((objTRWithAttributeClass.length > 0)&&(objTRWithAttributeClass.attr('id'))) { //check to see if there are at least 2 children
if (objTRWithAttributeClass.attr('id').indexOf('ParentControl') != -1) { //is the current <td> one with an attribute?
if (intAttributeStarting == 0) {
intAttributeStarting = i;
} //marking where in the collection the attributes start
arrTemp[intAttributeCounter] = new Array(2); //sub-array to hold the <tr>'s and their correct sort position
//find correct sort position for current attribute
var strAttributeName = objTRCollection.eq(i).children().eq(0).children().eq(0).html(); //get the attribute name
strAttributeName = strAttributeName.substring(0, strAttributeName.length-1); //lop off the dangling colon
//loop over sort array to see if we find a match
var intSortBasisCounter = 0;
var intFound = 0; //if match found, will set = 1
while (intSortBasisCounter < arrSort.length) {
if (strAttributeName == arrSort[intSortBasisCounter]) { //if found a match in the sort array...
arrTemp[intAttributeCounter][0] = intSortBasisCounter; //sort position
intFound = 1;
break; //stop checking...we found our match
} //end if (checking for match in sort array)
intSortBasisCounter += 1;
} //end while to loop over the sort array
arrTemp[intAttributeCounter][1] = objTRCollection.eq(i).html(); //HTML inside the <tr>
if (intFound == 0) { //if we have an attribute but didn't find a match in the master sort array...
arrTemp[intAttributeCounter][0] = 99999; //we'll push non-found attributes to the bottom to identify them easily
} //
intAttributeCounter += 1; //increment to keep count of how many <tr>'s with attributes we've found
} // end if (where we check to see if the current <td> contains an attribute
} // end if (where we check to see if the <tr> has at least 2 children
} //end for loop (looping as long as we're still finding <tr>'s with attributes
if (arrTemp.length > 0) { //if not > 0 then no attributes to rearrange
//sort the array on the attribute ID
arrTemp.sort(function(a, b) {
var intX = parseInt(a[0], 10);
var intY = parseInt(b[0], 10);
if (intX > intY)
return(1)
else if (intX < intY)
return(-1);
return(0);
});
intTRCounter = objTRCollection.length - 2; //reset this counter to loop backwards again
//loop again over the same collection to update the attribute order
for (var i = intAttributeStarting; i < intAttributeStarting + intAttributeCounter; i++) {
objTRCollection.eq(i).html(arrTemp[i - intAttributeStarting][1]); //get the 2nd child <td>
} //end while (looping as long as we still have <tr>'s to replace
}
}
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 17
• Once you or your team is comfortable with making the changes shown
earlier, there are more advanced Javascript techniques:
- Dynamically show/hide fields based on other fields (i.e. picklists,
checkboxes, radio buttons, etc), including setting default values for
mandatory fields that remain hidden
- On the guest selection page for an event registration, hide fields to make the
screen less cluttered
• Example: If a table of 10 is purchased and you want all 10 guest names
as placeholders in Raiser’s Edge, but don’t want to ask the purchaser for
all guest names, you can hide the fields and insert default guest names
such as “Guest 1”, “Guest 2”, etc
- On registration forms, change single line input boxes into multi-line text
areas (for comment fields and other “long question” fields), including a
counter to tell the user how many characters they have left until the limit
- On registration forms, show/hide various country specific address fields,
such as hiding province/state fields for those countries that don’t have
provinces/states
- And more!
JAVASCRIPT FOR NETCOMMUNITY
10/7/2013 #bbcon 18
CUSTOM TEMPLATES
10/7/2013 #bbcon 19
• Create your own templates for a completely different look & feel for
various events
- Click on “New template” under Pages & Templates, then create/use different
parts for images/text/links for your new template to give your users a unique
look & feel for specific events that you want to look different than your
current setup
CUSTOM TEMPLATES
10/7/2013 #bbcon 20
• Run daily/weekly/monthly/yearly
queries / plug-ins as appropriate for
your organization
- Check for blank/missing cities,
provinces/states, postal/zip codes,
phones, titles, etc
- Check for improper format of
postal/zip codes (see query to right for
postal code example) and other fields
- Run Plug-Ins such as Apply Phone
Formats and the various
Duplicate/Delete plug-ins
- Run the Duplicate Constituents report
under Admin
- Review the excellent multi-part series
called “Raiser’s Edge Data Cleanup”
which you can search for “cleanup
series” on blackbaudknowhow.com
QUERIES / PLUG-INS
FOR AUDITING &
CLEAN-UP
10/7/2013 #bbcon 21
• DO NOT OVERUSE; you can usually find output of what a user
requires via queries, exports, built-in Raiser’s Edge Reports, etc
• Use for complicated totaling/sorting or very specific formatting
• Use parameters to make it easier for users to filter results
CRYSTAL REPORTS
10/7/2013 #bbcon 22
• If you host with Blackbaud
- Easy to manage requiring only “one finger to point” if something goes wrong
• Full regular backups
• Full disaster recovery plan
• Automatic upgrades as new versions are released
• Accessible from anywhere
- Limitations
• No integration directly to your user’s email programs
– Users must use Blackbaud’s Outlook 2007 after logging into Raiser’s Edge
to see alerts/actions and synchronize contacts
• No automated / scheduled emailing of Reports via Queues
– Each report must be manually run to be refreshed
• Inability to print to any local printer that requires a billing code for each print
– Example: Shared printer for multiple companies located in one office
which requires each user to enter a code for billing before printing
• Requires a minimum 1Mbps upload connection to the internet
TO HOST OR NOT TO HOST WITH
BLACKBAUD
10/7/2013 #bbcon 23
CONTACT INFO:
Maurice Kowanetz - National Director, Information Technology
Email: mkowanetz@jacan.org
Phone: 416-622-4602 ext 240
Chris Weber - National Manager, Sponsorships and Fund Development Systems
Email: cweber@jacan.org
Phone: 416-622-4602 ext 239
THANK YOU!

Más contenido relacionado

Similar a Think Out of the Box: Think No Customization with The Raiser's Edge and Blackbaud NetCommunity

Ebooktiketkapal
EbooktiketkapalEbooktiketkapal
Ebooktiketkapaldhi her
 
A miało być tak... bez wycieków
A miało być tak... bez wyciekówA miało być tak... bez wycieków
A miało być tak... bez wyciekówKonrad Kokosa
 
Taking Web Apps Offline
Taking Web Apps OfflineTaking Web Apps Offline
Taking Web Apps OfflinePedro Morais
 
Micro services from scratch - Part 1
Micro services from scratch - Part 1Micro services from scratch - Part 1
Micro services from scratch - Part 1Azrul MADISA
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBen Limmer
 
Emerging threats jonkman_sans_cti_summit_2015
Emerging threats jonkman_sans_cti_summit_2015Emerging threats jonkman_sans_cti_summit_2015
Emerging threats jonkman_sans_cti_summit_2015Emerging Threats
 
AI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You TypedAI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You TypedMarvin Heng
 
What Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 AppsWhat Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 AppsDoris Chen
 
Back to Basics, webinar 2: La tua prima applicazione MongoDB
Back to Basics, webinar 2: La tua prima applicazione MongoDBBack to Basics, webinar 2: La tua prima applicazione MongoDB
Back to Basics, webinar 2: La tua prima applicazione MongoDBMongoDB
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Juliano Martins
 
Necto 16 training 20 component mode &amp; java script
Necto 16 training 20   component mode &amp; java scriptNecto 16 training 20   component mode &amp; java script
Necto 16 training 20 component mode &amp; java scriptPanorama Software
 
The Ring programming language version 1.7 book - Part 47 of 196
The Ring programming language version 1.7 book - Part 47 of 196The Ring programming language version 1.7 book - Part 47 of 196
The Ring programming language version 1.7 book - Part 47 of 196Mahmoud Samir Fayed
 
Leture5 exercise onactivities
Leture5 exercise onactivitiesLeture5 exercise onactivities
Leture5 exercise onactivitiesmaamir farooq
 
Lecture exercise on activities
Lecture exercise on activitiesLecture exercise on activities
Lecture exercise on activitiesmaamir farooq
 
Final report mobile shop
Final report   mobile shopFinal report   mobile shop
Final report mobile shopViditsingh22
 

Similar a Think Out of the Box: Think No Customization with The Raiser's Edge and Blackbaud NetCommunity (20)

Java script
Java scriptJava script
Java script
 
Ebooktiketkapal
EbooktiketkapalEbooktiketkapal
Ebooktiketkapal
 
A miało być tak... bez wycieków
A miało być tak... bez wyciekówA miało być tak... bez wycieków
A miało być tak... bez wycieków
 
Taking Web Apps Offline
Taking Web Apps OfflineTaking Web Apps Offline
Taking Web Apps Offline
 
Micro services from scratch - Part 1
Micro services from scratch - Part 1Micro services from scratch - Part 1
Micro services from scratch - Part 1
 
Building a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profitBuilding a Single Page Application using Ember.js ... for fun and profit
Building a Single Page Application using Ember.js ... for fun and profit
 
Emerging threats jonkman_sans_cti_summit_2015
Emerging threats jonkman_sans_cti_summit_2015Emerging threats jonkman_sans_cti_summit_2015
Emerging threats jonkman_sans_cti_summit_2015
 
ASP DOT NET
ASP DOT NETASP DOT NET
ASP DOT NET
 
AI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You TypedAI: Mobile Apps That Understands Your Intention When You Typed
AI: Mobile Apps That Understands Your Intention When You Typed
 
What Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 AppsWhat Web Developers Need to Know to Develop Windows 8 Apps
What Web Developers Need to Know to Develop Windows 8 Apps
 
Back to Basics, webinar 2: La tua prima applicazione MongoDB
Back to Basics, webinar 2: La tua prima applicazione MongoDBBack to Basics, webinar 2: La tua prima applicazione MongoDB
Back to Basics, webinar 2: La tua prima applicazione MongoDB
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
 
DEVICE CHANNELS
DEVICE CHANNELSDEVICE CHANNELS
DEVICE CHANNELS
 
Necto 16 training 20 component mode &amp; java script
Necto 16 training 20   component mode &amp; java scriptNecto 16 training 20   component mode &amp; java script
Necto 16 training 20 component mode &amp; java script
 
Ddpz2613 topic9 java
Ddpz2613 topic9 javaDdpz2613 topic9 java
Ddpz2613 topic9 java
 
The Ring programming language version 1.7 book - Part 47 of 196
The Ring programming language version 1.7 book - Part 47 of 196The Ring programming language version 1.7 book - Part 47 of 196
The Ring programming language version 1.7 book - Part 47 of 196
 
Leture5 exercise onactivities
Leture5 exercise onactivitiesLeture5 exercise onactivities
Leture5 exercise onactivities
 
Lecture exercise on activities
Lecture exercise on activitiesLecture exercise on activities
Lecture exercise on activities
 
Final report mobile shop
Final report   mobile shopFinal report   mobile shop
Final report mobile shop
 

Más de Blackbaud

50 Fascinating Nonprofit Stats
50 Fascinating Nonprofit Stats50 Fascinating Nonprofit Stats
50 Fascinating Nonprofit StatsBlackbaud
 
Philanthropy by the Numbers: The story behind the stats
Philanthropy by the Numbers: The story behind the statsPhilanthropy by the Numbers: The story behind the stats
Philanthropy by the Numbers: The story behind the statsBlackbaud
 
npEXPERTS 2016: Philanthropy by the Numbers
npEXPERTS 2016: Philanthropy by the NumbersnpEXPERTS 2016: Philanthropy by the Numbers
npEXPERTS 2016: Philanthropy by the NumbersBlackbaud
 
5 Tips for Fundraising in an Election Year
5 Tips for Fundraising in an Election Year5 Tips for Fundraising in an Election Year
5 Tips for Fundraising in an Election YearBlackbaud
 
Anatomy of the Perfect Private School Landing Page
Anatomy of the Perfect Private School Landing PageAnatomy of the Perfect Private School Landing Page
Anatomy of the Perfect Private School Landing PageBlackbaud
 
New York NXT Roadshow
New York NXT Roadshow New York NXT Roadshow
New York NXT Roadshow Blackbaud
 
New York NXT Roadshow
New York NXT Roadshow New York NXT Roadshow
New York NXT Roadshow Blackbaud
 
The Cold Never Bothered You Anyway
The Cold Never Bothered You Anyway   The Cold Never Bothered You Anyway
The Cold Never Bothered You Anyway Blackbaud
 
What You Should be Doing with Master Schedule but May Not Know
What You Should be Doing with Master Schedule but May Not Know What You Should be Doing with Master Schedule but May Not Know
What You Should be Doing with Master Schedule but May Not Know Blackbaud
 
Trends in Affordability and Demand
Trends in Affordability and Demand   Trends in Affordability and Demand
Trends in Affordability and Demand Blackbaud
 
The Ripple Effect of Successful Implementation
The Ripple Effect of Successful ImplementationThe Ripple Effect of Successful Implementation
The Ripple Effect of Successful ImplementationBlackbaud
 
Using Hacks to Create Consistent and Awesome Video Content for Your Admission...
Using Hacks to Create Consistent and Awesome Video Content for Your Admission...Using Hacks to Create Consistent and Awesome Video Content for Your Admission...
Using Hacks to Create Consistent and Awesome Video Content for Your Admission...Blackbaud
 
The New Financial Aid Family
The New Financial Aid FamilyThe New Financial Aid Family
The New Financial Aid FamilyBlackbaud
 
The entrepreneurs a true babson story
The entrepreneurs a true babson story   The entrepreneurs a true babson story
The entrepreneurs a true babson story Blackbaud
 
Introduction to Inbound Marketing for Independent Schools
Introduction to Inbound Marketing for Independent SchoolsIntroduction to Inbound Marketing for Independent Schools
Introduction to Inbound Marketing for Independent SchoolsBlackbaud
 
Turning your newly enrolled families into annual fund donors
Turning your newly enrolled families into annual fund donors   Turning your newly enrolled families into annual fund donors
Turning your newly enrolled families into annual fund donors Blackbaud
 
The school’s guide to modern design trends corwin bermudez
The school’s guide to modern design trends   corwin bermudezThe school’s guide to modern design trends   corwin bermudez
The school’s guide to modern design trends corwin bermudezBlackbaud
 
Raiser's Edge Database Cleanup Tips
Raiser's Edge Database Cleanup TipsRaiser's Edge Database Cleanup Tips
Raiser's Edge Database Cleanup TipsBlackbaud
 
Maintaining a Healthy Database in The Education Edge
Maintaining a Healthy Database in The Education EdgeMaintaining a Healthy Database in The Education Edge
Maintaining a Healthy Database in The Education EdgeBlackbaud
 
Building Report Cards and Transcripts in The Education Edge
Building Report Cards and Transcripts in The Education EdgeBuilding Report Cards and Transcripts in The Education Edge
Building Report Cards and Transcripts in The Education EdgeBlackbaud
 

Más de Blackbaud (20)

50 Fascinating Nonprofit Stats
50 Fascinating Nonprofit Stats50 Fascinating Nonprofit Stats
50 Fascinating Nonprofit Stats
 
Philanthropy by the Numbers: The story behind the stats
Philanthropy by the Numbers: The story behind the statsPhilanthropy by the Numbers: The story behind the stats
Philanthropy by the Numbers: The story behind the stats
 
npEXPERTS 2016: Philanthropy by the Numbers
npEXPERTS 2016: Philanthropy by the NumbersnpEXPERTS 2016: Philanthropy by the Numbers
npEXPERTS 2016: Philanthropy by the Numbers
 
5 Tips for Fundraising in an Election Year
5 Tips for Fundraising in an Election Year5 Tips for Fundraising in an Election Year
5 Tips for Fundraising in an Election Year
 
Anatomy of the Perfect Private School Landing Page
Anatomy of the Perfect Private School Landing PageAnatomy of the Perfect Private School Landing Page
Anatomy of the Perfect Private School Landing Page
 
New York NXT Roadshow
New York NXT Roadshow New York NXT Roadshow
New York NXT Roadshow
 
New York NXT Roadshow
New York NXT Roadshow New York NXT Roadshow
New York NXT Roadshow
 
The Cold Never Bothered You Anyway
The Cold Never Bothered You Anyway   The Cold Never Bothered You Anyway
The Cold Never Bothered You Anyway
 
What You Should be Doing with Master Schedule but May Not Know
What You Should be Doing with Master Schedule but May Not Know What You Should be Doing with Master Schedule but May Not Know
What You Should be Doing with Master Schedule but May Not Know
 
Trends in Affordability and Demand
Trends in Affordability and Demand   Trends in Affordability and Demand
Trends in Affordability and Demand
 
The Ripple Effect of Successful Implementation
The Ripple Effect of Successful ImplementationThe Ripple Effect of Successful Implementation
The Ripple Effect of Successful Implementation
 
Using Hacks to Create Consistent and Awesome Video Content for Your Admission...
Using Hacks to Create Consistent and Awesome Video Content for Your Admission...Using Hacks to Create Consistent and Awesome Video Content for Your Admission...
Using Hacks to Create Consistent and Awesome Video Content for Your Admission...
 
The New Financial Aid Family
The New Financial Aid FamilyThe New Financial Aid Family
The New Financial Aid Family
 
The entrepreneurs a true babson story
The entrepreneurs a true babson story   The entrepreneurs a true babson story
The entrepreneurs a true babson story
 
Introduction to Inbound Marketing for Independent Schools
Introduction to Inbound Marketing for Independent SchoolsIntroduction to Inbound Marketing for Independent Schools
Introduction to Inbound Marketing for Independent Schools
 
Turning your newly enrolled families into annual fund donors
Turning your newly enrolled families into annual fund donors   Turning your newly enrolled families into annual fund donors
Turning your newly enrolled families into annual fund donors
 
The school’s guide to modern design trends corwin bermudez
The school’s guide to modern design trends   corwin bermudezThe school’s guide to modern design trends   corwin bermudez
The school’s guide to modern design trends corwin bermudez
 
Raiser's Edge Database Cleanup Tips
Raiser's Edge Database Cleanup TipsRaiser's Edge Database Cleanup Tips
Raiser's Edge Database Cleanup Tips
 
Maintaining a Healthy Database in The Education Edge
Maintaining a Healthy Database in The Education EdgeMaintaining a Healthy Database in The Education Edge
Maintaining a Healthy Database in The Education Edge
 
Building Report Cards and Transcripts in The Education Edge
Building Report Cards and Transcripts in The Education EdgeBuilding Report Cards and Transcripts in The Education Edge
Building Report Cards and Transcripts in The Education Edge
 

Último

Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 

Último (20)

Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 

Think Out of the Box: Think No Customization with The Raiser's Edge and Blackbaud NetCommunity

  • 1. 10/7/2013 #bbcon 1 PRESENTED BY: JUNIOR ACHIEVEMENT OF CANADA Maurice Kowanetz, BMath (Computer Science) - National Director, Information Technology Chris Weber - National Manager, Sponsorships and Fund Development Systems Think Outside of The Box Think “No Customization” with The Raiser's Edge and Blackbaud NetCommunity @JA_CANADA @MRCHRISWEBER #THINKOUTSIDEOFTHEBOX @BBCON Tweet about this session!
  • 2. 10/7/2013 #bbcon 2 • Customizing software usually involves engaging a third party to change the software itself - Costly (both up front and in the future as the base software changes) - Time consuming - Never get exactly what you’re looking for • Configuring software usually involves an expert user who is extremely familiar with advanced features, and/or a motivated volunteer who is an expert in their field - Inexpensive - Quick - Will meet 80% to 90% of what you’re looking for • Why pay thousands or tens of thousands of dollars to get 10% more of what you’re looking for? - Find the right people to get involved with your organization (or train your staff!) to achieve what you need with little to no additional investment CUSTOMIZE VS CONFIGURE, WHO CARES?
  • 3. 10/7/2013 #bbcon 3 • Social Media Login • Use JavaScript to "tweak" the way Blackbaud NetCommunity works - Introductory step-by-step guide that you can use yourself or pass along to others • Custom Templates • Queries/Plug-ins for Auditing & Clean-up • Crystal Reports • To Host or Not To Host with Blackbaud AGENDA
  • 5. 10/7/2013 #bbcon 5 • Why force your users to create yet another username/password to register with your site? Enable social media login so that your users can login to NetCommunity using a username/password they already know - When a user registers using social media, NetCommunity creates a “behind the scenes” user called SocialWebXXXX, where XXXX is a unique number - Setup Social Media for the first time in NetCommunity to integrate with the social media login provider Janrain, then setup an application within each social media site • Search for “configure social media” in Blackbaud’s on-line knowledgebase and click on “Create social media application and configure Janrain settings” for full instructions - Note there are some idiosyncrasies when it comes to password resets, since social media accounts don’t need it, but NetCommunity’s password reset routine still allows the user to reset the password for their SocialWebXXXX username SOCIAL MEDIA LOGIN
  • 6. 10/7/2013 #bbcon 6 • To setup NetCommunity to use your Javascript code: - Login to NetCommunity as an Administrator - Edit your site’s main Template (that all of your Pages are based on) - Click on lowest Empty Content Pane on the Template, then click New Part - Choose the Part type as “Unformatted Text”, give a name, then click next - In the text area of the Part, copy/paste the following Javascript base code <script type="text/javascript" language="javascript"> function fncAfterAsyncPostBack() { fncProcessJavascript(); } function fncApplicationInitHandler() { var objPageRequestManager = Sys.WebForms.PageRequestManager.getInstance(); objPageRequestManager.add_endRequest(fncEndHandler); } function fncEndHandler() { fncAfterAsyncPostBack(); } Sys.Application.add_init(fncApplicationInitHandler); window.onload = fncProcessJavascript(); </script> - On the following slides, you’ll copy/paste the Javascript code shown on the slide right after the first line above that starts with <script…> - Test, test, test… • Internet Explorer 8, Internet Explorer 9, Internet Explorer 10, Chrome, Firefox, Safari, etc JAVASCRIPT FOR NETCOMMUNITY
  • 7. 10/7/2013 #bbcon 7 • Here is your first Javascript program to display a NetCommunity Page’s browser title field & unique PC #, to test that everything works - Add code below to base code on slide 4, below first line starting with <script…> function fncProcessJavascript() { var objTitle, strTitle, strPCNumber; if (document.getElementsByTagName("title")) { objTitle = document.getElementsByTagName("title"); strTitle = objTitle[0].innerHTML; strPCNumber = fncGetPCNumber(); if (strPCNumber != "") { alert("You’re on the " + strTitle + " page, which has a unique PC number of " + strPCNumber); } } } function fncGetPCNumber() { var strPCNumber, objSpan, i; strPCNumber = ""; objSpan = document.getElementsByTagName("span"); for (i=0; i<objSpan.length; i++) { if (objSpan[i].id.substring(0,2) == "PC") { strPCNumber = objSpan[i].id.substring(0,objSpan[i].id.search("_")); break; } } return(strPCNumber); } JAVASCRIPT FOR NETCOMMUNITY
  • 8. 10/7/2013 #bbcon 8 • On any Page, limit Title picklist (if found) to only show top “x” items JAVASCRIPT FOR NETCOMMUNITY
  • 9. 10/7/2013 #bbcon 9 • On any Page, limit Title picklist (if found) to only show top “x” items - Add code below to base code on slide 4, below first line starting with <script…> function fncProcessJavascript() { var strPCNumber; strPCNumber = fncGetPCNumber(); if (strPCNumber != "") { fncLimitTitle(strPCNumber); } } function fncLimitTitle(strPCNumber) { var objSelect, strElement = ""; if (document.getElementById(strPCNumber + "_ddTitle")) { strElement = "_ddTitle"; } else if (document.getElementById(strPCNumber + "_BBControl5_0_0")) { strElement = "_BBControl5_0_0"; } else if (document.getElementById(strPCNumber + "_Wizard1_DonationCapture1_cboTitle")) { strElement = "_Wizard1_DonationCapture1_cboTitle"; } else if (document.getElementById(strPCNumber + "_DonationCapture1_cboTitle")) { strElement = "_DonationCapture1_cboTitle"; } if (strElement != "") { objSelect = document.getElementById(strPCNumber + strElement); objSelect.options.length = 9; // Show top 8 items in Title picklist (change 9 as required) } } JAVASCRIPT FOR NETCOMMUNITY
  • 10. 10/7/2013 #bbcon 10 • On donation pages, reformat and align text (change “$1,000.00” to “$1,000”) JAVASCRIPT FOR NETCOMMUNITY
  • 11. 10/7/2013 #bbcon 11 • On donation pages, reformat and align text (change “$1,000.00” to “$1,000”) - Add code below to base code on slide 4, below first line starting with <script…> function fncProcessJavascript() { var strPCNumber; strPCNumber = fncGetPCNumber(); if (strPCNumber != "") { fncReformatDollarColumn(strPCNumber); } } function fncReformatDollarColumn(strPCNumber) { var objTable, i; if (document.getElementById(strPCNumber + "_tblAmount")) { objTable = document.getElementById(strPCNumber + "_tblAmount"); for (i=0; i<objTable.rows.length - 1; i++) { if (objTable.rows[i].cells[1].textContent) { if (objTable.rows[i].cells[1].textContent.indexOf(".00") != -1) { objTable.rows[i].cells[1].textContent = objTable.rows[i].cells[1].textContent.substring(0, objTable.rows[i].cells[1].textContent.indexOf(".00")); } } else { if (objTable.rows[i].cells[1].innerText.indexOf(".00") != -1) { objTable.rows[i].cells[1].innerText = objTable.rows[i].cells[1].innerText.substring(0, objTable.rows[i].cells[1].innerText.indexOf(".00")); } } objTable.rows[i].cells[1].style.textAlign = "right"; } } if (document.getElementById(strPCNumber + "_chkAcknowledge")) { document.getElementById(strPCNumber + "_chkAcknowledge").parentNode.parentNode.style.display = "none"; } } JAVASCRIPT FOR NETCOMMUNITY
  • 12. 10/7/2013 #bbcon 12 • On event registration classic pages, change text justification in a row JAVASCRIPT FOR NETCOMMUNITY
  • 13. 10/7/2013 #bbcon 13 • On event registration classic pages, change text justification in a row - Add code below to base code on slide 4, below first line starting with <script…> function fncProcessJavascript() { var strPCNumber; strPCNumber = fncGetPCNumber(); if (strPCNumber != "") { fncEventSectionUnitAlignUnitTableRowsToTop(strPCNumber); } } function fncEventSectionUnitAlignUnitTableRowsToTop(strPCNumber) { var i, j; i = 0; while (document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i)) { j = 0; while (document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_ddlQuantity_" + j)) { document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_ddlQuantity_" + j).parentNode.style.verticalAlign = "top"; // replace with bottom if needed document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_lblPrice_" + j).parentNode.style.verticalAlign = "top"; // replace with bottom if needed j++; } i++ } } JAVASCRIPT FOR NETCOMMUNITY
  • 14. 10/7/2013 #bbcon 14 • On event registration classic pages, hide columns JAVASCRIPT FOR NETCOMMUNITY
  • 15. 10/7/2013 #bbcon 15 • On event registration classic pages, hide columns - Add code below to base code on slide 4, below first line starting with <script…> function fncProcessJavascript() { var strPCNumber; strPCNumber = fncGetPCNumber(); if (strPCNumber != "") { fncEventSectionUnitHideUnitColumn(strPCNumber); } } function fncEventSectionUnitHideUnitColumn(strPCNumber) { var i, j; i = 0; while (document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i)) { j = 0; while (document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_lblNumParticipants_" + j)) { document.getElementById(strPCNumber + "_Wizard1_dgEventItems2_dgPriceList_" + i + "_lblNumParticipants_" + j).innerHTML = ""; j++; } i++; } } JAVASCRIPT FOR NETCOMMUNITY
  • 16. 10/7/2013 #bbcon 16 • Sort constituent attributes on a registration page - Add code below to base code on slide 4, below first line starting with <script…> function fncProcessJavascript() { fncSortConstituentAttributes(); } function fncSortConstituentAttributes() { var arrSort = [ "Attribute name 1", // Replace Attribute name 1 with your first attribute you want at the top "Attribute name 2", // Replace Attribute name 2 with your second attribute you want shown next "etc" ]; var arrTemp = new Array(); //array to hold the <tr>'s that we'll be sorting var intAttributeCounter = 0; // counter to count up as we find <tr>'s with attributes var intAttributeStarting = 0; //we'll set this to the index of the first <tr> that contains an attribute var objTRCollection = $('table.LoginFormTable > tbody').eq(2).children(); //collection of <tr>'s where the attributes var intTRCounter = objTRCollection.length - 1; // counter for all of the <tr>'s in our collection //loop over collection of <tr>'s, looking for those with constituent attributes for (var i=0; i<intTRCounter; i++) { var objTRWithAttributeClass = objTRCollection.eq(i).children().eq(1); //get the 2nd child <td> if ((objTRWithAttributeClass.length > 0)&&(objTRWithAttributeClass.attr('id'))) { //check to see if there are at least 2 children if (objTRWithAttributeClass.attr('id').indexOf('ParentControl') != -1) { //is the current <td> one with an attribute? if (intAttributeStarting == 0) { intAttributeStarting = i; } //marking where in the collection the attributes start arrTemp[intAttributeCounter] = new Array(2); //sub-array to hold the <tr>'s and their correct sort position //find correct sort position for current attribute var strAttributeName = objTRCollection.eq(i).children().eq(0).children().eq(0).html(); //get the attribute name strAttributeName = strAttributeName.substring(0, strAttributeName.length-1); //lop off the dangling colon //loop over sort array to see if we find a match var intSortBasisCounter = 0; var intFound = 0; //if match found, will set = 1 while (intSortBasisCounter < arrSort.length) { if (strAttributeName == arrSort[intSortBasisCounter]) { //if found a match in the sort array... arrTemp[intAttributeCounter][0] = intSortBasisCounter; //sort position intFound = 1; break; //stop checking...we found our match } //end if (checking for match in sort array) intSortBasisCounter += 1; } //end while to loop over the sort array arrTemp[intAttributeCounter][1] = objTRCollection.eq(i).html(); //HTML inside the <tr> if (intFound == 0) { //if we have an attribute but didn't find a match in the master sort array... arrTemp[intAttributeCounter][0] = 99999; //we'll push non-found attributes to the bottom to identify them easily } // intAttributeCounter += 1; //increment to keep count of how many <tr>'s with attributes we've found } // end if (where we check to see if the current <td> contains an attribute } // end if (where we check to see if the <tr> has at least 2 children } //end for loop (looping as long as we're still finding <tr>'s with attributes if (arrTemp.length > 0) { //if not > 0 then no attributes to rearrange //sort the array on the attribute ID arrTemp.sort(function(a, b) { var intX = parseInt(a[0], 10); var intY = parseInt(b[0], 10); if (intX > intY) return(1) else if (intX < intY) return(-1); return(0); }); intTRCounter = objTRCollection.length - 2; //reset this counter to loop backwards again //loop again over the same collection to update the attribute order for (var i = intAttributeStarting; i < intAttributeStarting + intAttributeCounter; i++) { objTRCollection.eq(i).html(arrTemp[i - intAttributeStarting][1]); //get the 2nd child <td> } //end while (looping as long as we still have <tr>'s to replace } } JAVASCRIPT FOR NETCOMMUNITY
  • 17. 10/7/2013 #bbcon 17 • Once you or your team is comfortable with making the changes shown earlier, there are more advanced Javascript techniques: - Dynamically show/hide fields based on other fields (i.e. picklists, checkboxes, radio buttons, etc), including setting default values for mandatory fields that remain hidden - On the guest selection page for an event registration, hide fields to make the screen less cluttered • Example: If a table of 10 is purchased and you want all 10 guest names as placeholders in Raiser’s Edge, but don’t want to ask the purchaser for all guest names, you can hide the fields and insert default guest names such as “Guest 1”, “Guest 2”, etc - On registration forms, change single line input boxes into multi-line text areas (for comment fields and other “long question” fields), including a counter to tell the user how many characters they have left until the limit - On registration forms, show/hide various country specific address fields, such as hiding province/state fields for those countries that don’t have provinces/states - And more! JAVASCRIPT FOR NETCOMMUNITY
  • 19. 10/7/2013 #bbcon 19 • Create your own templates for a completely different look & feel for various events - Click on “New template” under Pages & Templates, then create/use different parts for images/text/links for your new template to give your users a unique look & feel for specific events that you want to look different than your current setup CUSTOM TEMPLATES
  • 20. 10/7/2013 #bbcon 20 • Run daily/weekly/monthly/yearly queries / plug-ins as appropriate for your organization - Check for blank/missing cities, provinces/states, postal/zip codes, phones, titles, etc - Check for improper format of postal/zip codes (see query to right for postal code example) and other fields - Run Plug-Ins such as Apply Phone Formats and the various Duplicate/Delete plug-ins - Run the Duplicate Constituents report under Admin - Review the excellent multi-part series called “Raiser’s Edge Data Cleanup” which you can search for “cleanup series” on blackbaudknowhow.com QUERIES / PLUG-INS FOR AUDITING & CLEAN-UP
  • 21. 10/7/2013 #bbcon 21 • DO NOT OVERUSE; you can usually find output of what a user requires via queries, exports, built-in Raiser’s Edge Reports, etc • Use for complicated totaling/sorting or very specific formatting • Use parameters to make it easier for users to filter results CRYSTAL REPORTS
  • 22. 10/7/2013 #bbcon 22 • If you host with Blackbaud - Easy to manage requiring only “one finger to point” if something goes wrong • Full regular backups • Full disaster recovery plan • Automatic upgrades as new versions are released • Accessible from anywhere - Limitations • No integration directly to your user’s email programs – Users must use Blackbaud’s Outlook 2007 after logging into Raiser’s Edge to see alerts/actions and synchronize contacts • No automated / scheduled emailing of Reports via Queues – Each report must be manually run to be refreshed • Inability to print to any local printer that requires a billing code for each print – Example: Shared printer for multiple companies located in one office which requires each user to enter a code for billing before printing • Requires a minimum 1Mbps upload connection to the internet TO HOST OR NOT TO HOST WITH BLACKBAUD
  • 23. 10/7/2013 #bbcon 23 CONTACT INFO: Maurice Kowanetz - National Director, Information Technology Email: mkowanetz@jacan.org Phone: 416-622-4602 ext 240 Chris Weber - National Manager, Sponsorships and Fund Development Systems Email: cweber@jacan.org Phone: 416-622-4602 ext 239 THANK YOU!