Monday, April 27, 2009

Newsletters..

Back in the old MLS days, I had a custom script that I used to send out my newsletter. It wasn't necessarily efficient, but it got the job done. There was no error handling, if an email failed it just went away. I had set up an easy way for people unsubscribe etc.. It was all a hack on the old snitz stuff. When I upgraded to DNN, I decided to just use the built in newsletter module. I figured that it would work well enough.. I suppose it was somewhat of a step back. I know that a lot of folks have complained about the built in newletter sending capabilities. To be honest, I don't know if I was having any problems or not. I knew at least some of my emails were going out because I was getting a traffic spike and I'd been tagging my links for Google Analytics and could see the results there. But aside from that, I had zero visibility into my email campaigns. I also thought that the sending mechanism was a tad tedious, and allowing people to unsubscribe was very painful. I had to tell people how to log into their accounts and go to their profile and unjoin the role to which the newsletter was sent. That made for some unhappy people. Also, I had a list of approximately 7600 email addresses, and I was sure that a good number of them were no longer valid (the list is 9 years old). I needed to scrub the list. I looked at building my own solution, but knew that I just didn't have the time to mess with it. I looked around for a solution. I came across Bulk Emailer from Interactivewebs.com.au a while ago. I had just purchased their feedback form module and liked how it worked. At the time, I didn't want to spend that kind of money on an email sending module. I went back and took a look again and they now have a demo that you can download. I decided to give it a test run in my real environment.

I dowloaded and installed the module following along in the PDF manual that is included. Configuring everything took a little time, but I persisted. I set up the bounce email address, pointed the module to it and had at it. A really nice feature of this module is the ability to write and HTML page and the module will then convert it to the correct format, replace tokens, and send it on its way. Much the same way my old system did. I took one of my old templates, reformatted it a bit, and sent a couple test emails. Things looked good, so I sent the email out to everyone. It took longer to send out all the emails than I thought it should. My understanding is this can be adjusted, and I will do that. It took about 7 hours to send all 7600 emails. Overall, I'm impressed. I now know that nearly 1800 of the addresses in my list were bad, I know approximately how many people have read my emails, and I've had about 30 people be removed from my list. Not bad.

There are definitely some things that I would like to see changed. The opt-out page blocks users from getting any emails at all through the system. Since I don't currently run multiple lists, it's not an issue.. But if I did, there's no way to allow the users to opt out of only one list. That could be a problem. I think that the structure of the mailing lists could use some refinement. Right now, you can send an email to either a list, or a dnn role. I think that instead of sending directly to a list, you should have to create a list and then assign the DNN role to the list. A little better integration with DNN roles as far as unregistering would be nice.

In the end, this is a "buy" module. I'm very happy with it. I'll be placing my order soon.

Thursday, April 23, 2009

New features...

Since I last blogged, (way too long ago I know) I left the company I was working for. I now work for the leader in web analytics and online business optimization. It was a very good move, one that I'm glad I made. With that move came a little less time after hours working on work. I've been able to spend a little quality time with MLS and dotnetnuke.

To be honest, I don't remember everything that I've done to the site since then.. Most of it pretty minor. But here is what I'm working on right now:
  1. Upgrade active forums to version 4.x - with that upgrade comes the loss of support for banner ads in the way that I am using them.
  2. Implement active social - i really think this is the future for my site
  3. Implement new banner ad system - still debating between smokeranch and a new player. I've been wanting a better banner system for a while since the built in one sucks. The loss of support in the new forums just made it that much more needed. So it will be done in conjuction.
  4. Revamp the skin using as much css as possible. I've done a pretty good job with this one. Right now I've cut the skin file size in less than half. I still have a little more work to go on this one. I'm also including a couple skin objects to cut back on modules.
  5. Implement new email newsletter module. I'm using the default DNN functionality and it's confusing to the end user, and not very easy for me.. so I'll be upgrading this.
  6. Implement snapsis' css menu system to replace the solpartmenu
  7. Upgrade the cutesoft editor to the latest version.
In conjunction with the skin, I've been working on the templates for active social and active forums. I've also revamped the menu. I've got things looking pretty close to the way I want them. I still have a little work left to do, but it's coming along nicely. Right now, my three big hold ups are waiting on a new build of active forums, waiting on a new build of active social, and needing the cash to buy the banner rotating module. Everything else is pretty much in place.

So there's a quick update of where I'm at now.

Thursday, September 11, 2008

How Cute!!!

Well, after a really rough summer at work, I finally got the time to sit down and spend some cycles on the text editor. I've caught a lot of flak for disabling the text editor and just leaving a text box with no formatting capabilities. But the alternative was crippling the site for 15% or more of the site visitors.

The plan has been to implement the Cute Editor from Cutesoft all along. I just hadn't had time to get it done. I made the purchase a few months ago and have been working on customizing the provider to do some pretty cool things. So here is what I've accomplish so far.

First shot, nothing special here.. Just the editor in DNN:


Ahhh.. Here is where the magic starts... I modified the provider to open the image gallery into the web space I provide for paying members. There's a virtual directory off the root that's pointed to the directory structure outside of DNN where each member has their own folder. The provider now uses their username to map their space to their folder in this directory. Based on their role membership, the users either get a basic editor with few features, a feature rich bar with gallery and image buttons.


The image dialog box also maps to the user's directory. I was able to enforce their normal disk space limits by setting a securty config file for each role that had different space limits.


I'm in final testing and will be releasing it on a limited basis in one or two forums for a week or so. If all goes well, I'll turn it loose on the whole site.

Monday, July 28, 2008

Synching users

I finally figured out how to get users synced between my DNN installation and an external FTP server. If you'll remember from way back, I provide web space for paying members of my site to store their photos and whatnot to post in the forum. I needed to export user names and passwords from certain roles in DNN to an FTP server that uses a database for its authentication.

Here's how I did it. I found a module called User Sync Manager from DNN masters. http://www.dnnmasters.com After installing the module, I set up a database to export the user information to. I added a profile in the module that synced to a table called UserSync in that database. Initially, nothing was getting synced and I was getting really confused. I then found out on a thread in their forum that the module requires the users profile in DNN to be modified since the module was installed. I then told all my users that needed FTP access that they had to make a change in their profile to initiate the sync process. Now here's where the magic happens.. I only needed users from a certain group to have access. USM doesn't export role membership data, so I had to figure it out. I wrote a SQL script and put it in a scheduled job that drops the old FTP access table then joins the exported data with the data in the DNN users table. I then select out the users who are in the userroles table with a roleid that corresponds to the role that I need to give access to. It's a complex query, but it works beautifully.. Here's the query(edited for security):


select lower(replace(s.username, ' ', '')) as USERID, s.password as PASSWORD, (s.firstname + ' ' + s.lastname) as FULLNAME, NULL as FTPMAXSPACE, NULL as FTPMAXFILES, '100' as FTPFLAGS, u.userid as DNN_USERID
INTO auth.dbo.ftp from
usersync.dbo.usersync s inner join dotnetnuke.dbo.users U on s.username = u.username
where u.userid in
(select userid from dotnetnuke.dbo.userroles where roleid = 4)


You'll notice that I do some text processing in there as well. The FTP server software doesn't support spaces in the usernames, so I strip out all the spaces and lowercase all the usernames for good measure. The password is left in tact. Next I combine the user's first name a space character and the last name in at FULLNAME column then set some required fields for the FTP server. I select all this information into the the FTP table.

To take it a step further, I needed to give a select number of members a higher disk quota on the FTP server because they paid for additional space, were moderators, etc. I wrote another sql query to update the FTPMAXSPACE column with the space needed based on thier role membership. In looking at it now, this script could be edited to make it a little more efficient. I'm still doing a join, when I don't need to since I copied out their DNN userid to the FTP database in the first step. I will problably make those changes soon.

Things have been running on this new sync solution for a couple weeks now and I haven't seen any issues and my users are once again happy. Some are still confused about having to edit their profile to get their access, but we're doing our best to steer folks toward the post in the forum that explains it all. This module has really turned out to be a lifesaver on this project. I was at a loss on how to keep these in sync. I hope that sharing how I made this solution will help someone else who is struggling to get this module working in their environment. I know that it would have helped me.

Monday, June 23, 2008

A pain in the editor...

When I launched the site, I wanted a uniform text editor for the users to use all over the site. In the forums, in the blogs, in the private messages, etc.. I settled on the default FCK editor for the time being with the plan to move toward CuteEditor or something else as time and finances allowed.

After the hardware drama, I started getting tons of complaints from many different users that they couldn't post or were getting a ton of errors in the forums. It seems that the FCK editor is not very freindly to MAC users and users of browsers other than IE... I tried to work through it, but finally I'd had enough of the whining. I disabled the FCK editor and made all the forums use just a default text box. The complaints have died down. People now have a hard time posting photos and urls, but they're working through it.

I fully plan on implementing the CuteEditor soon. Right now my budget is tight, but within the next few months, I'll have it up and running. I'm really excited about the possibilites that CuteEditor creates.. Online image editing, user uploading and whatnot.. When I get closer, I'll share more information on my implementation. I have the demo version up and running, I'm just trying to figure out how to recompile it with the changes that I'm trying to make...

Thursday, June 12, 2008

Return of the world's worst blogger...

So here I am, 5 months later.. I still get regular traffic to this blog, so there must be at least a few people interested in what's happened..

In my last post, I mentioned that the server I was running on started having an occasional hiccup on the raid controller. After nursing it along for about 3 weeks and actually putting a replacement raid controller in, something gave and the whole thing went south fast. The server crashed in late January and wouldn't boot back up. The server crashed late at night during a massive snow storm. I braved the storm and drove downtown to the colo center and started to work on the server. After a couple hours, it became clear that whatever the resolution was, it wasn't going to be quick. I put a maintenance page up on one of my other servers and sent all traffic there while I figured out what to do and got some sleep. The next day, I woke up and started looking at the server. I was trying to recover it to the point that it would boot. I was unable to do so. I made the tough decision to roll back to the old site that was on my other old server. I did that while I put together a plan. I had hours and hours of work that was lost on this "new to me" server. I had to recover the data if at all possible. I purchased some data recovery software on the net, built a bootdisk with all the drivers I needed and loaded it up. I had to go buy an external usb drive to copy the files onto. I hooked everything up, fired up the bootdisk and after a day of trying different options and configurations, voila! There were all my files from DNN, the database and everything! Almost all the files were in tact. There were a few DNN core files that were corrupted, and then a good number of the user files that were corrupt. All in all, nothing that was irreplaceable was lost. I put together a virtual server in MS virtual server and proceeded to rebuild the site. It took a few days, but I got it up and running. I copied the VM up to my 3rd server that runs MS virtual server and brought the new DNN based site back online.

It was clear that I needed some brand new hardware with a warranty and everything. If I have this much riding on a website, I need to put it on decent hardware. I was able to procure, through a member of my site, a factory re certified HP DL360 G5.. It's a really nice server. I loaded it up with memory and hard disk space. I'll be able to run on this guy for years.

Once I got that server online, I scheduled a night to move the VM over to the new server. I scheduled a backup job to run each night that backs up the database and the DNN install directory to the portable USB drive every night. I have tested a restore in my developement server and it works great, so I am now satisfied that if something went horribly wrong, I could recover a lot easier. The hope is however, that nothing ever goes that wrong again..

Tuesday, January 8, 2008

Take a breath, plug your nose, and jump!

Well, I did it.

I had originally set a date of December 27th to complete the upgrade. With the rush of the Christmas holiday, I didn't have time to get everything done that I needed. So I moved it the 29th. I ran into some difficulty importing users, assigning them to roles, and importing receipts, so I bumped it again. This time, I was as ready as I was going to be. January 1st I launched MLS 3.0. The cut-over went fairly smooth, but we did encounter a few hiccups. First problem actually had nothing to do with DNN.. It was a hardware failure. The built in raid controller in the server I'm using started throwing errors and not writing. I had to shut down and reboot the entire server. It's been pretty solid since then. Knock on wood.