Provincial Resource Centre for the Visually Impaired Launches New Website

by Jonathan Jacobsen Thursday, May 27, 2010 9:33 AM

PRCVI website screenshot The Provincial Resource Centre for the Visually Impaired (PRCVI) has upgraded their website with a new graphic design and more content served up by Inmagic WebPublisher PRO.

PRCVI is a British Columbia Ministry of Education program that assists school districts and students with visual impairment or blindness by providing educational resources in alternate formats, such as braille, tactile graphics, digital text and large print.

Both the previous and new websites feature a wealth of resources for teachers, students and parents, including questions and answers about PRCVI services, news of upcoming events and conferences, information about scholarships, and links to other web resources.

The previous website was maintained by hand, as staff time permitted. With many TextWorks databases already in use at PRCVI for tracking their library collection, borrowers and teachers, it was a natural extension to catalogue all the web resources in a new database, then publish that information on the website with WebPublisher PRO.

Almost all the content in the new website is served up dynamically from this database. Users may browse resources by category and target audience to drill down to items of interest, or perform a keyword search.

"Making resources more accessible will save staff time in answering emails from users who couldn’t find the information previously", says Susan Hannigan. "It's also easy for several of our staff to publish new information to the site just by entering items into a textbase record. They're already familiar with TextWorks, so the learning curve wasn’t very steep."

Using TextWorks and WebPublisher PRO as the basis for their new website allowed PRCVI to make more use of its investment in Inmagic software, with staff already trained to use it.

Contact Andornot to discuss other ways you could be using your copy of Inmagic WebPublisher PRO.

Montreal and Ottawa Inmagic meetings – June 7th and 8th, 2010

by Kathy Bryce Wednesday, May 26, 2010 8:07 PM

Are you:

  • Looking for the latest information to maximize your investment in Inmagic products?
  • Interested in getting advice and guidance on best practices from the experts?
  • Eager for an opportunity to connect with peers at other organizations to discuss experiences, tips and tricks?

If you answered “yes” to any of the questions above, join us at one of our upcoming Inmagic meetings in Montreal and Ottawa.

These educational, interactive sessions – open to all Inmagic users – will cover all these topics and more.

Kathy Bryce and Denise Bonin of Andornot will catch you up on the latest features in the DB/Text Library Suite, which includes DB/TextWorks, WebPublisher PRO and Inmagic Genie.

You'll get a chance to see some of our recent implementations - including a cool deployment that integrates the search interface with SharePoint. And, lastly, Denise and Kathy will also reveal some of their tricks - giving you the power to add Google Book Covers and social sharing tools such as AddThis to your web interfaces!
As always, the floor will be open to questions and there will time to bounce ideas off fellow Inmagic users. If there are any particular topics you would like to cover, feel free to email us in advance.

See below for registration details – and sign up today. Seating is limited! 

Date: Monday, June 7th
Time: 2:30 pm. to 4:30 pm.
Jewish Public Library
1, carre Cummings Square (5151 Cote Ste-Catherine)
Montreal, Quebec H3W 1M6

To register for the Montreal meeting, please send an email to Shannon Hodge, Archivist, Jewish Public Library Archives at by Friday, June 4th.

Date: Tuesday, June 8th
Time: 2:30 pm. to 4:30 pm.
Smart & Biggar/Fetherstonhaugh
900-55 Metcalfe Street
Ottawa, Ontario K1P 5Y6

To register for the Ottawa meeting, please send an email to Jane Donaldson, Intranet Webmaster, at by Monday, June 7th.

If you have any questions, please email us for details. 

If you can’t attend either of these meetings, we’ll also be exhibiting at both CHLA and AAO in June.

Adding Google Analytics without touching your site

by Ted Jardine Wednesday, May 12, 2010 10:10 AM

I had a problem: Kathy and Denise wanted Google Analytics configured for our demo Genie site that can be found at However, Genie doesn't provide an easy way to centrally add the couple lines of Google Analytics code to every page served up by the application. For that matter, neither does any WebPublisher PRO site right out-of-the-box (easy-peasy though if we're using ASK and our WebPubResults control).

You might also have the same problem: you recognize that having multiple means of tracking and analyzing your site's traffic is no longer optional. However, while you've got server log file analysis handled (we use SmarterStats for all our hosted clients) your site doesn't have a single central place (such as site-wide central templates) to easily integrate a javascript-based page tagging solution such as Google Analytics.

So what do we do? Instead of updating 10s if not 100s or 1000s of files manually one-by-one (crossing my fingers that I could find them all) and hoping my code wouldn't need to change anytime soon, I came up with a modified version of the Web Analytics Tracking Module available on Microsoft's site. Now, with a little elbow grease for initial server setup (seriously, not very much elbow grease at all), turning on site tracking for any site on our servers is simply a matter of placing a DLL in our application's bin directory, and adding a couple lines to our site's Web.config. Sweet.

Why not just use the original Web Analytics Module?

Before jumping in and explaining how to set everything up, I should explain that I needed create my own custom build of the module because the module on only works under IIS 7's integrated pipeline, not under IIS 7's classic pipeline (which Genie needs to run under) or IIS 6. The required changes ended up being relatively minor:

  1. Modified the ReadModuleConfiguration method in WebAnalyticsHttpModule.cs to the following:
  2. /// <summary>
    /// Reads the module specific configuration properties
    /// </summary>
    /// <param name="context"></param>
    /// <returns>Boolean indicating the success/failure</returns>
    private bool ReadModuleConfiguration(HttpContext context)
             ConfigurationSection section = null;
             if (HttpRuntime.UsingIntegratedPipeline)
                section = WebConfigurationManager.GetSection(context, "system.webServer/webAnalytics", typeof(WebAnalyticsSection));
                section = WebConfigurationManager.GetSection(context, "system.web/webAnalytics", typeof(WebAnalyticsSection));
              if (section != null)
                 _webAnalyticsModuleConfig = (WebAnalyticsSection)section;
         catch (Exception)
             return false;
           return _webAnalyticsModuleConfig != null;
  3. Add the classic pipeline <system.web>/<webAnalytics> schema to WebAnalytics_schema.xml:
  4. <sectionSchema name="system.web/webAnalytics">
        <attribute name="trackingEnabled" type="bool" defautlValue="false"></attribute>
        <attribute name="trackingScript" type="string"  defautlValue="This is a default text"></attribute>
        <attribute name="insertionPoint" type="enum" defaultValue="body">
            <enum name="head" value="0" />
            <enum name="body" value="1" />
  5. To make sure there's no versioning conflicts, I updated the Assembly's version to v1.1 in AssemblyInfo.cs (note the v1.1 references in the instructions below as opposed to v1.0):
  6. [assembly: AssemblyVersion("")]
    [assembly: AssemblyFileVersion("")]


Configure your server (one time only)

  1. Register the WebAnalyticsModule.dll in the GAC (for shiny stuff in the IIS 7 Manager GUI).

    gacutil -if WebAnalyticsModule.dll
  2. Copy the WebAnalytics_schema.xml to "%windir%\system32\inetsrv\config\schema" folder.
  3. Add the following section definition to the "%windir%\system32\inetsrv\config\applicationhost.config" file in the sectionGroup for "system.webServer"
  4. <section name="webAnalytics" overrideModeDefault="Allow" />
  5. Add the module to the IIS Manager configuration by adding to two collections in the "%windir%\system32\inetsrv\config\administration.config" file:
    • Add the following to the moduleProviders collection:
    • <add name="WebAnalytics" type="WebAnalyticsModule.WebAnalyticsProvider, WebAnalyticsModule, Version=, Culture=neutral, PublicKeyToken=c6b7132bcfe43312" /> 
    • Add the following to the modules collection:
    • <add name="WebAnalytics" />

Web Analytics Tracking now directly available in IIS 7 Manager (at least for sites running under Integrated Pipeline).


Configure your site/s

For each site you wish to have Google Analytics enabled on (or any other script/text/html you wish to have run on every page in the site), enable it according to the following instructions (slightly different for different flavours of IIS/pipeline).

IIS 7 Integrated Pipeline

  1. Place the same WebAnalyticsModule.dll in your application's bin directory or reference the GAC version via the Web.config's <system.web>/<compilation>/<assemblies> element.
  2. Add the module to the <modules> element in your Web.config. This can be done through the IIS Manager, but it's easier to simply add it directly in the Web.config:
  3. <modules>
      <add name="WebAnalytics" type="WebAnalyticsModule.WebAnalyticsHttpModule, WebAnalyticsModule, Version=, Culture=neutral, PublicKeyToken=c6b7132bcfe43312" />
  4. Specify the script/text you wish to have inserted and the location to insert it at. Again, this can be added directly in the Web.config. However, because the actual script/text needs to be encoded in order to keep your config file from going boink, it's a lot easier to just use the GUI.

  5. web-analytics-tracking-in-iis-configuration
    Easy configuration within the IIS 7 Manager GUI, including properly encoding the script for the Web.config (safe for XML).

    Enabling the above adds a <webAnalytics> element to the <system.webServer> section, looking something like (note the encoding):
    <webAnalytics trackingEnabled="true" trackingScript="&lt;script type=&quot;text/javascript&quot;>&#xD;&#xA;  var _gaq = _gaq || [];&#xD;&#xA;  _gaq.push(['_setAccount', 'UA-494411-1']);&#xD;&#xA;  _gaq.push(['_setDomainName', '']);&#xD;&#xA;  _gaq.push(['_trackPageview']);&#xD;&#xA;  (function() {&#xD;&#xA;    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;&#xD;&#xA;    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '';&#xD;&#xA;    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);&#xD;&#xA;  })();&#xD;&#xA;&lt;/script>" insertionPoint="head" />


IIS 7 Classic Pipeline

Exactly the same as the IIS 7 integrated pipeline instructions above, with the following changes:

  1. Add the module reference to the classic pipeline specific <system.web>/<httpModules> section instead of the <system.webServer>/<modules> section.
  2. Make it easy for yourself, and add the script-specific settings (as in step 3 above) via the GUI in order to make sure it's all encoded properly, but then move/copy the resulting <webAnalytics> element from <system.webServer> (IIS 7 integrated pipeline specific) to <system.web>.
  3. Add the following to the <configuration>/<configSections> element in your Web.config (there should be a better way to add another sub-section to the already defined <system.web> declaration in the <configSections> element, so let me know in the comments if you know what it is):
  4. <sectionGroup name="system.web" type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
        <section name="webAnalytics" type="WebAnalyticsModule.WebAnalyticsSection, WebAnalyticsModule" /> 

Caveat: as your app is running under classic pipeline, not all text/html resources are running through ASP.NET, and therefore, if you have for i.e. .html and/or .asp pages you want the script automatically added to, you will need to map those extensions to also route through the ASP.NET runtime. Pretty standard classic pipeline stuff: without doing so, only pages with the .aspx extension will have the script added.


IIS 6 (Classic Pipeline)

I haven't tested it, but I see no reason why it won't work with the same set up as IIS 7 Classic Pipeline, with the same caveats.


  1. As you might have guessed, you can automatically insert *anything* using this module, as long as you don't mind it inserting just before the closing </head> tag or the closing </body> tag. Copyright statements, survey scripts, "Ted wuz here" alerts for every page...if you think of it, you can do it!
  2. Again, the fancy GUI stuff doesn't help you in classic pipeline scenarios (other than an XML-encoding aid as described above).
  3. Typically you want to register scripts as close to the end of your page as possible (various technical performance and usability reasons). However, Google Analytics' latest scripts have a "push" functionality making this a moot point: so register the latest scripts right before the closing </head> tag. See the "Asynchronous Tracking Usage Guide" for more information.

Different web analytics packages have different strengths and weaknesses, and it's only with multiple different perspectives on your site traffic that you even begin to get a clear picture of what is really happening with your site. Using this web analytics module makes it even easier to add and maintain a page tagging solution on your site.



I'd like to just directly link to my compiled DLL and schema file of the module, but unfortunately, it's not at all clear what licensing model is associated with the original module (although it's clear from his article explaining the module, that Microsoft's Ruslan Yakushev intends for us to use it). Therefore, I'll be requesting clarification on this issue, but in the meantime, just download the source code from the original article and make the quick modifications as described above. If you have problems doing so, or you want help deploying it for your site, drop us a line.

Toronto Inmagic Users Meeting – May 13th, 2010

by Kathy Bryce Tuesday, May 04, 2010 10:25 AM

Please Join Inmagic and Inmagic Partners Andornot and Phipps & Associates For a Special User Group Event!

Featuring Melanie Browne
Information Specialist at Maple Leaf Foods

Are you:

  • Looking for the latest information to maximize your investment in Inmagic products?
  • Interested in a peek at the product development roadmap?
  • Eager for an opportunity to connect with peers at other organizations to discuss best practices, tips and tricks?
  • Curious about how Melanie Browne of Maple Leaf Foods implemented an incredibly successful Inmagic deployment at the center of her innovation center?

If you answered “yes” to any of the questions above, join Inmagic Authorized Partners Andornot and Phipps & Associates on Thursday, May 13th from 3 p.m. – 5 p.m. for an Inmagic user group meeting in Toronto.

This educational, interactive session – open to all Inmagic users – will cover all these topics and more.

Light refreshments will be served. See below for registration details – and sign up today. Seating is limited! 

Toronto Inmagic Users Meeting: Registration Details

Date: Thursday, May 13th

Time: 3:00 p.m. – 5:00 p.m.

Osler, Hoskin & Harcourt LLP
1 First Canadian Place
Toronto, Ontario
Please check in at 63rd floor reception

Registration: Please send e-mail to Jennifer McNenly at

Can’t make it in person? Take advantage of our “green” option! We are offering no-commute access to the session via GoToMeeting. If you’d prefer to dial in, please let Jennifer know when you register – she’ll provide all the details you’ll need to get connected.

We look forward to seeing you on May 13th!

Month List