About InteractiveWebs

This blog is the combined blog work of the InteractiveWebs Dev Team. Together we work on a range of DotNetNuke (DNN) applications, modules, Silverlight, and Microsoft CRM Portal integration products. Our Business is website design and hosting, with a strong focus on DotNetNuke, Microsoft Dynamics CRM, Silverlight and iPhone iPad development.

Creating a New OpenCart Deployment on a Windows Server IIS

We are going to cover the deployment of an OpenCart (open source shopping cart) on a Windows 2003 Server, 2008 Server.

We are assuming that the server is setup to run IIS websites, and that you have some general idea about running websites in general on IIS. If this is not the case and you are learning from scratch. Better to learn on Linux server.

Assuming you want to get OpenCart running on IIS.


Step 1 – Web Platform Installer

Install the Microsoft Web Platform Installer on the server from this link.


In Windows 2003 you need to:

Go to the directory on your server: C:\php

Find the file: php.ini

Edit the file in a text browser, finding the following lines:




And remove the ; before each line:


Then save the file.

Start a Command Prompt “cmd” and type “iisreset”


This enabled MySQL, GD, and cURL,


Step 2 – Setup PHP on the server.

Start the Web Platform Installer and search PHP in the top right of the search window.

Select and install the latest version of PHP from the list.



Step 3 – Install MySQL on the server.

Also from the Web Platform Installer, search “MySQL” and install that.


During the install, you will be asked for a password for the –root- user. This is the Administrator account and the password should be very well guarded and complex.


Step 4 – Create a Database in MySQL.

Open the My SQL Command Line Tool and enter the –root- password selected above.


Modify the following script to replace the database name, user name and password.

create database mydb;
CREATE USER ‘myuser’@’localhost’ IDENTIFIED BY ‘mypassword‘;
CREATE USER ‘myuser‘@’%’ IDENTIFIED BY ‘mypassword’;
GRANT ALL PRIVILEGES ON mydb.* TO ‘myuser‘@’localhost’;
GRANT ALL PRIVILEGES ON mydb.* TO ‘myuser‘@’%’;

Enter your own values where highlighted above.

Copy and paste that line by line into the MySQL Command Line Window. You only need to run one from the first two, then one from the second two.

If you need to change a password.

SET PASSWORD FOR 'myuser'@'localhost' = PASSWORD('newpass');

SET PASSWORD FOR 'myuser'@'%' = PASSWORD('newpass');



Step 5 – Download and unzip to Web Located Folder the contents of OpenCart

Download here: http://www.opencart.com/index.php?route=download/download

The contents of the download package is in a folder called “upload”


Extracted in our case to a folder we called: opencart.interactivewebs.com



Step 6 – Create an IIS instance to hit that directory.

Using the IIS skills that we suggested you should have. Create a new site that hits the directory you dropped the Upload contents to above.


For Windows make sure the following folders and files permissions allow Read and Write.


Step 7 – Set the permissions for IIS.

From the Exploring, Right click the folder with the web files in it, and select Security Tab. Modify the permissions for:

IUSR – Modify (you will probably need to add this)


IIS_IUSRS(<servername>\IIS_IUSRS) – modify



Step 8 – Visit the home page.

Visit the store homepage
e.g. http://www.example.com or http://www.example.com/store/

Accept the license


Check the permissions you need.


Fill in the following details with the relevant information.


Using the MYSQL database settings you created above.


As per the instruction above, you need to delete the Instillation directory.



Step 9 – Deleted this directory.

Restart IIS from the command prompt again. “iisreset”

Common problem if permissions are not set correctly.


Read more about steps you can take to resolve this problem (error number 0x80072EE7) yourself–solved.


We were receiving this error constantly when trying to run either the Microsoft Update service or Windows update service.

Read more about steps you can take to resolve this problem (error number 0x80072EE7) yourself.


Solution (fix)

As you would expect, there is no help from Microsoft here.

We found that the DNS server for the internet connection on this machine was pointing to a local server of ours. We changed this to the Google free DNS service:




And ran the update process again. We found that it worked right away.

The likely cause relates to the DNS server we host being unable to look up something Microsoft correctly. We will fix that by updating the way that the server references Microsoft resources. But for now, it is handy to know that the error above was related to a DNS problem.

Understanding Web-Safe Fonts / Web Friendly Fonts

imageWe have often receive lots of questions about Web-safe fonts, or web friendly fonts. We have products that work with technologies like Microsoft Word, and publish back to websites like DotNetNuke. (DNN Word Editor)

The issue is that not all fonts will work on all browsers on all computers. Here is the reason why.

Web-Safe Fonts

There are an awful lot of fonts in the world! For years, no doubt, you’ve been using a ton of them in word processing documents, party invitations, banners, etc. But have you ever noticed how few of them are used on the web?

There’s a really good reason for this. When a web page loads, the browser is told to write text onto the screen using a specified font—one that is stored on the computer that the browser is running on. Therefore, if the web page’s code is calling for a font that a user does not have installed on their computer, it won’t show up! What that person will instead see is a default font, which might look a little ugly.

Now you might be wondering why this will happen so often if there are so many fonts installed on your computer. Well, here’s the problem: the two most widely-used operating systems—Windows and Mac OS X—each come installed with a different set of fonts. Awesome!

To illustrate this point, here’s where the fonts are stored in Windows 7:


And here’s where they’re stored on Mac OS 10.6:


Right away, we can see that only one of the displayed fonts overlaps: Arial. None of the Calibri orCambria fonts are available on the Mac, and the Mac has at least a dozen just on this page that aren’t available in Windows!

In fact, between these two systems, there are only ten fonts that overlap:


Those fonts that fall into that middle area, covered by both operating systems, are what we callweb-safe fonts. If you use Calibri on your webpage, Mac users won’t see it; if you use Andale, Windows users won’t see it; but if you use Georgia, you can rest assured that users of both systems will see the it.

Now there’s a bit of grey area here. Users of older operating systems don’t have some of these fonts we’ve declared web-safe. For example, Windows XP users don’t have Palatino or Trebuchet MS. Even worse, users of Android mobile phones don’t have any of these fonts.

So to be clear, there are only five fonts that are considered universal:

  • Arial
  • Courier New
  • Georgia
  • Times New Roman
  • Verdana

Feel free to use these fonts all you want! Even if you dug up that old Packard Bell you had back in 1997 and it didn’t explode when connected to the modern web, you’d be able to see these fonts rendered as intended. Those Android users will just have to fight for themselves.

Web Safe Fonts Table


*The green marks show very common fonts, the yellow shows not so common but all are generally accepted as web safe.

So, what happens when the font fails?

Your text will still be visible, but the browser will use whatever default font it supplies for situations like this. This means that you may have intended to use a cute, scripty font, but what you get is

Your text typed in a regular serif font.

This is good because your content still goes through, but your design might be compromised. Therefore, you should always specify fallback fonts and a category that the font falls into. Let’s say that you want to use Helvetica, but you’ll settle for Arial. Since both of these fonts are considered to be sans-serif fonts, you can write a CSS declaration like this:

{ font-family: Helvetica, Arial, sans-serif; }

The browser will first try to use Helvetica, and if it’s not installed, it’ll attempt to use Arial. If even that font is not available, it’ll use whatever default sans-serif font the browser likes, but at least it’ll be the correct type of font!

For more information about coding fallbacks, alternative methods to using non-web-safe fonts, and everything typography related, you can pick up a copy of our Web Typography Handbook. It’ll tell you everything you need to know.

Veranda’s | Pergolas | Patios | Alfresco | Designs Kits Melbourne Builders

imageWe are please to announce the launch of one of Melbourne’s premier builders websites. The site for TotallyOutdoors.com.au focuses on:

Verandahs | Pergolas | Patios | Alfresco | Designs Kits Melbourne Builders

As a supplier of:

Centenary Pergolas & Carports

Eclipse – Louver Roofs

Solarspan Roofing

Totally Outdoors are one of Australia’s premier supplier and builder of outdoor roofing needs.

We are please to be providing services to them, and welcome them on board the InteractiveWebs team.

Microsoft CRM 2011 and Custom Silverlight Development

imageI noticed a question today on a Microsoft Dynamics CRM discussion site asking

“is there anyone who is not trying to sell me their product, that has done something interesting with CRM and Silverlight?”

Well yes there is…

InteractiveWebs have done several interesting projects with Silverlight as an interface to Microsoft CRM.

One of the most interesting of these is a Silverlight membership login system for a grain trading company based in Australia. The business is an organisation that trades produce in a similar way to how shares are traded in the stock market. The difference being that the commodity being traded has been grown by “growers” (farmers) and represents the produce that their farm has for sale in the open grain trade market.

Interestingly, Microsoft CRM is being used entirely for the backend management of this trading. This is quite complex in it’s design as you can imagine would be the case if you were running a stock exchange using CRM.

Entities are being used to track the bidding for sales and purchasing of hundreds of different qualities of different grains, at different locations over an entire country.

Of note to the Silverlight interface, is the fact that there are an ever increasing number of records within this system in the order of 65,000,000 records of some CRM Entities.


About the Silverlight Interface

In it’s simplest function, the Silverlight interface is a membership system.


Allowing users to login and manage the buying and selling of commodities. Very similar to how users of a Stockbroking system would login and buy and sell their shares. But of course the user data is all being driven from a CRM backend running CRM 2011 with IFD.

The membership login is using custom attributes within CRM Contacts to authenticate and allow login.

Once logged in the user can modify personal details that are saved back to the CRM Contact entity.


Data is retrieved live using XRM to interface with CRM on the fly. Silverlight gives a clean and robust interface for users.


Other Types of Data Retrieval

Just like with the sale of share, there is some paperwork generated with the buying and selling of commodities. Broker Notes, Freight Invoices, and Monthly trade Statements are example of just a few. Originally the thought was to interface with a Microsoft SharePoint server to store the related .PDF documents generated for these items. Instead we took the simpler approach of attaching the .PDF documents to the relevant records in the custom entities that are used to track each trade.

This data is simply stored as CRM Notes with Attached Files (.pdf) to the custom Entities.

Then in the Silverlight interface we allow users to open (on the fly) these notes and attached .pdf files to view the “paperwork” associated with each sale.


Summary data is presented that is referencing custom attribute data, and able to be exported live from Silverlight to Excel.


Or clicking on the PDF icon, will open the associated attached note from CRM and open the .pdf record live.

Example of PDF data.


Creating CRM Records from Silverlight with XRM

Growers of commodities can create new stock records, listing the gran they have, quality, quantity, location etc in a simple user interface.


Listing too the price they wish to achieve in order to sell the produce.

Doing this creates a new record in a custom Entity in CRM directly, and this data is used in the bidding and selling process.

The data is available to Silverlight users in their record of stock.

Similar in concept to a statement of shares for a stock market trader.


Where is Gets Cool

So far, these are reasonably simple interfaces using XRM to CRM. Reading, writing, opening attached files etc. Where it gets interesting is in some real time graphing that we do to show bids on stocks / commodities.

For this we are needing to access tens of thousands of records that represent different bids for different commodities and work out on the fly the best or highest bid, and show that to the client in a fast loading graph.


This is where Silverlight and some cleaver XRM calls to some cleaver processes in CRM delivers a great result.

With the great graphing tools in Silverlight, the graph draws in real time and animates the loading of data. It has a full screen mode:


And is really a great use of Silverlight for this particular task.


Best of All it Runs Out of Browser

One of the features we built on this interface is the ability to “Run Out of Browser”. So the client can right click the interface and select to “Install to this computer”.


This adds the project to an Out of Browser Silverlight experience that can be launched as any other application or program from your computer.


This feature of Silverlight can run on a Mac or PC, and delivers an experience for end users that is very similar to having a membership program installed on your computer.


The project will auto update if we modify the web based source version with a new release automatically.  The client is promoted with a messaging saying the program will close to update, then opens with the new version automatically. Truly using the best experience that Silverlight has to offer.

Uninstalling the out of browser app is as simple as a right click in the app, and selecting from a dropdown “Remove this application”.


Kind of like a windows 8 experience with any pc.


Thoughts on this and Silverlight for Microsoft CRM.

Silverlight… ahhh what to say about Silverlight….. where to start.

1. We drank the Kool Aid. Microsoft told us how great Silverlight would be, how it would segregate the design team from the development team and deliver the benefits of keeping people within their specializations.

2. We spend years of time investing in Silverlight development. We get it, we can work with it and we can do amazing things with it. This and other cool projects including a MS Pivot interface to DotNetNuke and Microsoft CRM data.

MS Pivot and CRM – http://demo.interactivewebs.com.au/dnnpivot/dnnpivot_demo.htm

3. We kicked it’s butt. We were able to deliver anything we wanted using Silverlight and made it interface with a multitude of data sources at multiple times using XRM and other web services to pull data from both CRM and other data sources.


And after all that… I can say with some authority. Silverlight is dead!

We get it, we can do it, we hate it and we regret the time we wasted after Microsoft mislead us into their Silverlight sphere.

Microsoft Silverlight Evangelist – We drank the Kool Aid

Silverlight never came close to delivering on any of the promises that Microsoft made about it.

It is tricky to develop in, it is poorly supported by even Microsoft, design tools are definitely lacking greatly, the development experience was a mine field of poorly documents bugs and broken features that required time and commitment to untangle the crap that Microsoft produced.

It was amazing to us how many things we were doing and solving that literally no one else was talking about. We felt like the first team walking on the Silverlight moon at every step of the way.

The end result is something that we are proud of. There are some cool features that we think make the project example above shine. But for all the time, and trouble invested to deliver it, it is just not worth it!

If looking at this and other similar projects again, we would use other technology to more quickly develop a very similar experience. There quite simply is nothing in Silverlight in interfacing with CRM that we can do easier other ways.

Final Thoughts

So there you have it. A good example of Silverlight with CRM, and the reason why we would suggest you use other technology yourself.

And check out that Silverlight Pivot link above. It is actually very cool too in what it does and how it does it. We have rigged this to work against any internet facing CRM environment including the Microsoft Hosted CRM.


Contact Us for CRM Development

We wrote this to help someone asking for a non commercial plug for a Silverlight in CRM example. We hope the above meets the requirement of that… but we are a development and CRM business, so we need to mention that if you need some cleaver interfacing with CRM. Then please contact us here http://www.interactivewebs.com/ContactUs.aspx.

We have other examples to show too.

Network You – New DotNetNuke YouTube Video Module

imageRecently we launched a new website called Network You. The site can be found at networkyou.org.

Of particular interest on the site is a new module or ours soon to be released to the DotNetNuke Community called Mushroom Video Module.

The module will feed Youtube Play Lists from youtube.com directly into your site in an easy to manage and easy to use video feed.


The end result of the feeds looks like this:




With the video feeds being selected directly from a play list selector button that referenced a YouTube account name.



The module also uses the template system developed by InteractiveWebs for the display system that allows simple to load templates to be customized to the users requirements.


An example of the module with multiple feeds onto a single page is this one: http://www.networkyou.org/Network/Professionals/VideoTopics.aspx

We will be releasing the module to the public in the next few weeks. We would love to hear any comments!

Adding an Attachment Field to Feedback Designer

Steps to add an Attachment Field to Feedback Designer Module for DotNetNuke.

  1. Select Configure Module
  2. Select Add Edit Form Items
  3. Enter a Name for the Field (Like Upload File, or Attachment etc.)
  4. image
  5. Select Add – To add the filed to the Existing Form Items
  6. Use the up or down arrows to position the filed where you would like it.
  7. image
  8. Back and back

The result is a form with file upload ability. The attachment is sent as an email attachment.


Please contact us for additional DotNetNuke Support requirements.

Bulk Email Messaging and Bounce Back Monitoring


The Bulk Email module for DotNetNuke has a feature known as Bounce Email Monitoring, and it is probably a good idea to understand what it does and how it does it so we can explain how best to configure it.

Sending a Bulk Email Message

When an email message is generated using the DotNetNuke Bulk Email Module, a list of all the email addresses that you have selected from multiple sources is generated into a database.

The lists that you select can include.

  • Website Users
  • Custom Lists that you import
  • Microsoft CRM Marketing Lists
  • Imported contacts from email programs
  • Custom typed email address

Once the list is complied, email addresses are removed.

  • Duplications
  • Email addresses on the unsubscribed list
  • Email addresses on the bounce email list (that meet the requirements set)

Then the email messages are sent out and ticked off as being sent.

You can see that bounced email addresses will only be removed if they are on the bounced email list, and have bounced to a count matched the settings configured.


How the Bounce Email List is Generated and Counted

Periodically, the module will use the setting for the POP 3 account to look for email messages that it can add as a bounce. To do this, it will download all messages in the mailbox and look using some complex searching tools for email messages that appear to have bounced back from a failed send attempt.

Unfortunately email servers report bounce messages in different ways, so the code that reads the email messages and looks for bounce backs is long and complex. For this reason, the process of finding bounce messages should be kept to a minimum to reduce the load on the server.

Reduce Load

The best way to reduce load is to minimise the number of mail messages that the process needs to check.

The best way to do this is three fold.

  1. Send email from a unique email address that suggests no normal communication should run through that account. noreply@domain.com is my suggestion. That way the only email messages in that mailbox should only ever be bounced messages.
  2. Delete processes messages. The module can do this for you, but if the mailbox is a normal account, then ensure it is basically kept empty.
  3. Manually delete messages that are not bounce messages. If you intent to use a general account, then you should keep it as free as possible from general communications.

What happens if you don’t do this?

The process of downloading thousands of email messages, checking them all and processing them all can take hours. It will put a huge load on both the web server and your email server. It will increase your data transfer costs both on your web and email server.

So follow the suggestions and the result should be clean and fast.

Want to know more about email messaging in DotNetNuke.

Bing Ajax Control over HTTPS or HTTP Secure SSL


Today we updated some code in our Contact Details module for DotNetNuke.

The module makes it easy to add your contact details to a page in DNN.

There is a map control function that uses Bing Maps that can be seen in the demo here: http://www.interactivewebs.com/contactdetails/Demo.aspx

We have updated the module today to support the use of SSL or https connections to the page that contains the module.

How we did this

So here are the two ways to add the Bing Ajax control to your page in HTTP or HTTPS:


<script src=”http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3” type="text/javascript"></script>


<script src=”https://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3&s=1” type="text/javascript"></script>

Now on the HTTPS version notice I changed the URL to start with HTTPS, this is what pulls from the secure site over at the good Bing folks. Also notice I added the “s” parameter and set it to 1, default is 0, this tells the Bing API to get the image tiles for the map from HTTPS.

Why? you ask.

Well it seems that the API determines what protocol to use for JavaScript and other parts from the document.location.protocol, however when it comes to the map tiles it looks to a global setting that is set based on the parameter being passed.