<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>J-O Eriksson's blog</title><link>http://joeriksson.com/cs/communityserver/</link><description>Community Server on my mind</description><generator>Graffiti CMS 1.1 (build 1.1.0.1114)</generator><lastBuildDate>Mon, 14 May 2007 12:24:00 GMT</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/J-oErikssonsBlog" type="application/rss+xml" /><feedburner:emailServiceId>J-oErikssonsBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Brand new CSModule pack for CS 2007 - Cinnabar</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/7HXB_SCf2Mw/</link><pubDate>Mon, 14 May 2007 20:24:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/brand-new-csmodule-pack-for-cs-2007-cinnabar/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>0</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;As some of you might already have seen, the Community Server MVP's CSModule pack has a new release.&lt;/P&gt; &lt;P&gt;The new package is called [Wikipedia: Cinnabar], and is targeted for CS 2007. So if you want to use your favorite CSModule pack on your new upgraded to CS 2007 site this is the package to download. It also has a new CSModule made by Gary McPherson and Keyvan Nayyeri called LinkManager.&lt;/P&gt; &lt;P&gt;For more details, hop over to &lt;A href="http://csmvps.com/blogs/news/archive/2007/05/13/community-server-mvps-cinnabar-csmodule-package.aspx"&gt;http://csmvps.com/blogs/news/archive/2007/05/13/community-server-mvps-cinnabar-csmodule-package.aspx&lt;/A&gt;&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7HXB_SCf2Mw:BkDN3Xm1SnI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7HXB_SCf2Mw:BkDN3Xm1SnI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7HXB_SCf2Mw:BkDN3Xm1SnI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7HXB_SCf2Mw:BkDN3Xm1SnI:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7HXB_SCf2Mw:BkDN3Xm1SnI:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7HXB_SCf2Mw:BkDN3Xm1SnI:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7HXB_SCf2Mw:BkDN3Xm1SnI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=7HXB_SCf2Mw:BkDN3Xm1SnI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/7HXB_SCf2Mw" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/brand-new-csmodule-pack-for-cs-2007-cinnabar/</feedburner:origLink></item><item><title>Showcase: Smartson goes Community Server</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/7UmQHyWoq2c/</link><pubDate>Sat, 05 May 2007 07:37:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/showcase-smartson-goes-community-server/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>4</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;So, again I managed to keep quite for almost 2 months.&lt;/P&gt; &lt;P&gt;Sometimes the energy for writing is just not there. No writing doesn't mean that nothing has happened though. The content of this article was meant to be published on the 18th of April. So here I'll quote myself on an article that never was published! How about that? &lt;img src="http://joeriksson.com/emoticons/emotion-5.gif" alt="Wink" /&gt;&lt;/P&gt; &lt;BLOCKQUOTE&gt; &lt;P&gt;&lt;EM&gt;Last Tuesday (&lt;/EM&gt;read 10 of April)&lt;EM&gt;, a brand new Swedish Community Server site came to life. The site is a place where both newbies and experts can discuss, read, and write about experiences from different kind of products and gadgets. &lt;/EM&gt; &lt;P&gt;&lt;EM&gt;&lt;IMG height=318 src="http://joeriksson.com/blogs/j-o_erikssons_blog/WindowsLiveWriter/ShowcaseSmartsongoesCommunityServer_8756/image%7B0%7D%5B5%5D.png" width=500&gt; &lt;/EM&gt; &lt;P&gt;&lt;EM&gt;The company that started this site is called &lt;A href="http://www.smartson.se/" target=_blank&gt;Smartson&lt;/A&gt; and the new site / community is called &lt;A href="http://testklubben.smartson.se/" target=_blank&gt;Testklubben&lt;/A&gt; (Swedish for "The Test Club"). Testklubben is currently in beta mode and changes will be done after getting feedback from users and from monitoring how the site works live. One day after it went live it had more than 1500 users &lt;/EM&gt; &lt;P&gt;&lt;EM&gt;I have been working with Smartson and helped them with developing different modules and controls, setting up the site platform, done some training's etc. &lt;/EM&gt; &lt;P&gt;&lt;EM&gt;Even though the site is completely in Swedish, I can recommend you to go over there and have a look. I believe they have done a great job in skinning and organizing the site. And it's fun to see (if you know Swedish) how the community grows fast, and some of the interesting discussions and articles that the users write. &lt;/EM&gt; &lt;P&gt;&lt;EM&gt;I will try to dedicate a few upcoming posts to tell a bit about the modules that are custom made for the site.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt; &lt;P&gt;Smartson's community now has over 3 000 members, and are in the near future planning to get rid of the Beta label.&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7UmQHyWoq2c:YtScd2B2DvA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7UmQHyWoq2c:YtScd2B2DvA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7UmQHyWoq2c:YtScd2B2DvA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7UmQHyWoq2c:YtScd2B2DvA:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7UmQHyWoq2c:YtScd2B2DvA:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7UmQHyWoq2c:YtScd2B2DvA:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=7UmQHyWoq2c:YtScd2B2DvA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=7UmQHyWoq2c:YtScd2B2DvA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/7UmQHyWoq2c" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/showcase-smartson-goes-community-server/</feedburner:origLink></item><item><title>How to add new users to different roles on the fly</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/6DB7PvjNLKg/</link><pubDate>Tue, 13 Mar 2007 01:53:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/how-to-add-new-users-to-different-roles-on-the-fly/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>9</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;Sometimes there might be a need to add your users to different roles, depending on certain invitations, at registration time. Is that possible in &lt;a href="http://communityserver.org" target="_new"&gt;Community Server&lt;/a&gt; (CS)?&lt;/P&gt; &lt;P&gt;Well, in this case CSModules can be your friend as in many other situations. The other day there was a &lt;A href="http://communityserver.org/forums/t/485401.aspx" target=_blank&gt;request for this functionality in the CSOrg Forums&lt;/A&gt;. I thought it would be an interesting case to do some sample code for a CSModule that did this by reading an argument from the query string.&lt;/P&gt; &lt;P&gt;You might think that this could be done with a new drop down field on the registration page. Well , you're right, but in this case that was requested the user should not be able to choose their own role. The role should be decided by a person that invited the user. So it should probably be a link in an e-mail or similar.&lt;/P&gt; &lt;P&gt;My thinking was that you would put an RoleID as an argument in the query string, like:&lt;/P&gt; &lt;P&gt;&lt;FONT face="Courier New"&gt;http://&amp;lt;your server&amp;gt;/CreateUser.aspx?roleid=&amp;lt;RoleID&amp;gt;&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;Then design a CSModule that would read the QueryString and add the user to that role within the PreUserUpdate event.&lt;/P&gt; &lt;P&gt;First register for the PreUserUpdate event. &lt;EM&gt;(Sorry for the pictures not looking as good or acting&amp;nbsp;as they should, but my QGyen Flickr CSModule has suddenly stopped working. Click on the pictures to see them in original size.)&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;Visual Basic&lt;BR&gt;&lt;A title="Photo Sharing" href="http://farm1.static.flickr.com/153/419493337_f23d05cadc_o.jpg"&gt;&lt;IMG height=60 alt=RolesByQueryVB src="http://farm1.static.flickr.com/153/419493337_69833e9425.jpg" width=500 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P&gt;C#&lt;BR&gt;&lt;A title="Photo Sharing" href="http://farm1.static.flickr.com/167/419493328_8cc771e5ce_o.jpg"&gt;&lt;IMG height=103 alt=RolesByQueryCSharp src="http://farm1.static.flickr.com/167/419493328_425e917bbc.jpg" width=500 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P&gt;After that we handle the reading of the querystring, check if it is an existing role that is not one of the built-in roles. We wouldn't want anyone guessing the roleID of the Administrators role and register themselves as Admins. Lastly if all validations are ok, add the user to the desired role.&lt;/P&gt; &lt;P&gt;Visual Basic&lt;BR&gt;&lt;A title="Photo Sharing" href="http://farm1.static.flickr.com/170/419493343_a47586bf5f_o.jpg"&gt;&lt;IMG height=296 alt=RolesByQueryVB2 src="http://farm1.static.flickr.com/170/419493343_451e64a569.jpg" width=500 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P&gt;C#&lt;BR&gt;&lt;A title="Photo Sharing" href="http://farm1.static.flickr.com/131/419493334_4b62a0762a_o.jpg"&gt;&lt;IMG height=445 alt=RolesByQueryCSharp2 src="http://farm1.static.flickr.com/131/419493334_3a99aa3e63.jpg" width=500 border=0&gt;&lt;/A&gt; &lt;/P&gt; &lt;P&gt;This is a sample on how you could do it. I haven't put much more thought on the security aspects of it, more that making sure no one adds himself to the admin (or other high permission) role. If you have feedback on how the security could be increased on this CSModule please post a comment.&lt;/P&gt; &lt;P&gt;&lt;A class="" href="http://joeriksson.com/files/folders/csmodules/entry2588.aspx"&gt;Download it from here and try it out!&lt;/A&gt; I have included the source code in this download (VB and C#).&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=6DB7PvjNLKg:_d1Cl-Ok04E:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=6DB7PvjNLKg:_d1Cl-Ok04E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=6DB7PvjNLKg:_d1Cl-Ok04E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=6DB7PvjNLKg:_d1Cl-Ok04E:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=6DB7PvjNLKg:_d1Cl-Ok04E:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=6DB7PvjNLKg:_d1Cl-Ok04E:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=6DB7PvjNLKg:_d1Cl-Ok04E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=6DB7PvjNLKg:_d1Cl-Ok04E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/6DB7PvjNLKg" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/how-to-add-new-users-to-different-roles-on-the-fly/</feedburner:origLink></item><item><title>Using Localizable E-mail Templates</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/NvFlqsSmAXM/</link><pubDate>Wed, 07 Mar 2007 08:39:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/using-localizable-e-mail-templates/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>8</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;Wouldn't it be great to be able to standardize how mails sent from your Community Server site looks, and to be able to change them on demand without having to re-compile anything?&lt;/P&gt; &lt;P&gt;As you might know &lt;a href="http://communityserver.org" target="_new"&gt;Community Server&lt;/a&gt; (CS) already has a built-in system for this. This localizable template system is used for example when a new user registers and an e-mail with login information is sent to that user. In this article I want to show you how you can hook yourself into and use this system in your own Community Server modules. Also how you can add your own e-mail template for a certain process.&lt;/P&gt; &lt;P&gt;Starting with this article I will also try to always have any code samples in both C# and VB (since I am currently trying to learn C# to see what all the fuss is about &lt;img src="http://joeriksson.com/emoticons/emotion-1.gif" alt="Smile" /&gt;). But, for all the VB readers of this blog, don't worry, this is &lt;STRONG&gt;not&lt;/STRONG&gt; a step towards having only C# samples in this blog in the future.&lt;/P&gt; &lt;P&gt;I have touched on the subject before in an earlier article regarding Notifications for moderated posts to forums. But I thought it was worth to lift out the E-mail template function again, and discuss it separately.&lt;/P&gt; &lt;H3&gt;The E-mail templates&lt;/H3&gt; &lt;P&gt;First let's take a look at the e-mail templates and where you'll find them. CS has a Languages folder in the web root, which holds a subfolder for each language. Within each language folder there's a couple of .XML files which stores different localized resources that CS uses.&lt;/P&gt; &lt;P&gt;&lt;A href="http://farm1.static.flickr.com/185/412667261_8b7030c0fb_o.jpg"&gt;&lt;IMG height=259 src="http://farm1.static.flickr.com/185/412667261_8b7030c0fb_o.jpg" width=494 border=0&gt;&lt;/A&gt;&lt;BR&gt;&lt;EM&gt;Click on the picture to see it in original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;The .XML file that holds the e-mail templates is found under &lt;FONT face="Courier New" size=2&gt;/Languages/&amp;lt;localized language&amp;gt;/emails&lt;/FONT&gt;, in the file called &lt;FONT face="Courier New" size=2&gt;emails.xml&lt;/FONT&gt;. Out-of-the-box CS will have one localized language folder of en-US.&lt;/P&gt; &lt;P&gt;&lt;A href="http://farm1.static.flickr.com/164/412667254_b1163873ac_o.jpg"&gt;&lt;IMG height=343 src="http://farm1.static.flickr.com/164/412667254_b1163873ac_o.jpg" width=500 border=0&gt;&lt;/A&gt;&lt;BR&gt;&lt;EM&gt;Click on the picture to see it in original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;As you can see in the picture above, each e-mail template is contained within an email node. The email node can contain child nodes for i.e. subject, from and body. Also you can see that the text contains some place holders here and there (i.e. &lt;FONT face="Courier New" size=2&gt;[ ModerateURL ]&lt;/FONT&gt;)&lt;/P&gt; &lt;P&gt;The e-mail template is identified by it's emailType, which we will see later on in the code sample. The e-mail template seen in the picture above is of the emailType '&lt;FONT face="Courier New"&gt;ModeratorEmailNotification&lt;/FONT&gt;'.&lt;/P&gt; &lt;H3&gt;Using the E-mail templates in your code&lt;/H3&gt; &lt;P&gt;To use these e-mail templates in your code you need to:&lt;/P&gt; &lt;OL&gt; &lt;LI&gt;Get the template into a MailMessage object &lt;LI&gt;Fill in the placeholders with the desired values &lt;LI&gt;Send the MailMessage or put it on CS's E-mail queue&lt;/LI&gt;&lt;/OL&gt; &lt;P&gt;The following code samples does number 1 and 2 of the above. You will need references to the following namespaces for your code to work.&lt;/P&gt; &lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;blockquote style="background-color:#EFEFEF;border:2px silver dashed;"&gt; &lt;div style="margin:7px 7px 7px 7px;"&gt; &lt;em&gt; System.Text&lt;BR&gt;System.Web&lt;BR&gt;CommunityServer.Components&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/em&gt; &lt;/div&gt; &lt;/blockquote&gt; &lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;Visual Basic&lt;BR&gt;&lt;a href='http://static.flickr.com/144/386719931_ccdb5b971e_o.jpg' title='Create Email from template' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/144/386719931_ccdb5b971e.jpg' border='0'&gt;&lt;/a&gt;&lt;BR&gt;&lt;EM&gt;Click on the picture to see it in original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;C#&lt;BR&gt;&lt;A href="http://farm1.static.flickr.com/160/412667244_1eb277037e_o.jpg"&gt;&lt;IMG height=242 src="http://farm1.static.flickr.com/160/412667244_1eb277037e_o.jpg" width=500 border=0&gt;&lt;/A&gt;&lt;BR&gt;&lt;EM&gt;Click on the picture to see it in original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;First an Instance of the EmailTemplateProvider is used to get the desired e-mail template and put it into a MailMessage object. One of the arguments of the GetTemplate method is the user object for the user we want to send the mail to. &lt;/P&gt; &lt;P&gt;For certain built-in e-mail templates there are populate methods that uses i.e. this user object to fill in information in the placeholder. Although for the e-mail template I am using in the samples here, I could not find any built-in populate methods that worked. Therefore I've used another way to fill in these placeholder with the data I want. &lt;/P&gt; &lt;P&gt;On the body and subject fields, I've used &lt;A href="http://msdn2.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace.aspx" target=_blank&gt;Regex.Replace&lt;/A&gt; to replace their placeholders. To get the admin e-mail address, to send the mail from, I've used the &lt;A href="http://code.communityserver.org/?path=CS+Tree%5cCS+2.1%5cComponents%5cComponents%5cCSContext.cs" target=_blank&gt;CSContext.Current.SiteSettings&lt;/A&gt; object.&lt;/P&gt; &lt;P&gt;To send the populated mail to a group of user or just one user, you could use the following samples.&lt;/P&gt; &lt;P&gt;Visual Basic&lt;BR&gt;&lt;A href="http://farm1.static.flickr.com/166/412667282_8f5d94cec9_o.jpg"&gt;&lt;IMG height=122 src="http://farm1.static.flickr.com/166/412667282_8f5d94cec9_o.jpg" width=500 border=0&gt;&lt;/A&gt;&lt;BR&gt;&lt;EM&gt;Click on the picture to see it in original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;C#&lt;BR&gt;&lt;A href="http://farm1.static.flickr.com/187/412667277_115605fcec_o.jpg"&gt;&lt;IMG height=196 src="http://farm1.static.flickr.com/187/412667277_115605fcec_o.jpg" width=500 border=0&gt;&lt;/A&gt;&lt;BR&gt;&lt;EM&gt;Click on the picture to see it in original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;This method takes the arguments of a UserSet of the users you want to send the e-mails to, and a ForumPost object that (in this case) I want to refer to in my notification e-mail. Of course in your situation if applying these samples to your own module, you might not need these arguments at all, or just the UserSet, depending on what you want to do. The important thing with this sample is to show how you can put an MailMessage on the CS E-mail Queue with an Instance of the EmailQueueProvider object.&lt;/P&gt; &lt;H3&gt;Summary&lt;/H3&gt; &lt;P&gt;In this article I have showed you how the built-in e-mail templates in CS are structured and where you can find them. I also showed how you can programmatically fetch one of these e-mail templates and populate it's placeholders. Lastly a code sample showing you how to add the e-mail to the CS E-mail Queue, so that CS sends it the next time the CS E-mail job is run.&lt;/P&gt; &lt;P&gt;With this information you should be able to use the built-in e-mail templates in your code, and to create your own localizable e-mail templates for your CS modules. So let's go and try it out already!&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=NvFlqsSmAXM:OT8g6YkSEvs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=NvFlqsSmAXM:OT8g6YkSEvs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=NvFlqsSmAXM:OT8g6YkSEvs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=NvFlqsSmAXM:OT8g6YkSEvs:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=NvFlqsSmAXM:OT8g6YkSEvs:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=NvFlqsSmAXM:OT8g6YkSEvs:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=NvFlqsSmAXM:OT8g6YkSEvs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=NvFlqsSmAXM:OT8g6YkSEvs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/NvFlqsSmAXM" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/using-localizable-e-mail-templates/</feedburner:origLink></item><item><title>UK MVP Meet-up pictures</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/gESrMyNfwvE/</link><pubDate>Tue, 06 Mar 2007 12:13:58 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/uk-mvp-meet-up-pictures/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>3</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;p&gt;It's been almost exactly one week now, since I've met up with some of the UK Community Server MVP guys in London. I promised there'll be some pictures from it, and here goes.&lt;/p&gt; &lt;p&gt;&lt;a href='http://static.flickr.com/123/411838508_c6755a7df4_o.jpg' title='MVP Meet' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/123/411838508_c6755a7df4.jpg' border='0'&gt;&lt;/a&gt;&lt;br&gt;&lt;em&gt;Click on picture to see it in original size&lt;/em&gt;&lt;/p&gt; &lt;p&gt;This is the mandatory group picture of all of us that was there. &lt;a href="http://communityserver.org/user/Profile.aspx?UserID=14299" target="_blank"&gt;Rob Nash&lt;/a&gt;, me, &lt;a href="http://richmercer.com/default.aspx" target="_blank"&gt;Rich Mercer&lt;/a&gt;, &lt;a href="http://www.nbdev.co.uk/blogs/default.aspx?GroupID=15" target="_blank"&gt;Nick Brown&lt;/a&gt;, and &lt;a href="http://intensivedesign.co.uk/blogs/gary/default.aspx" target="_blank"&gt;Gary McPherson&lt;/a&gt;. Rob is almost falling out of the picture. &lt;img src="http://joeriksson.com/emoticons/emotion-1.gif" alt="Smile" /&gt; I think the waitress that we asked to take the picture was a bit nervous. I mean, standing there in front of all these cool MVP guys, must have been a bit breath taking. &lt;img src="http://joeriksson.com/emoticons/emotion-5.gif" alt="Wink" /&gt;&lt;/p&gt; &lt;p&gt;&lt;a href='http://static.flickr.com/178/411838667_b3dd50a986_o.jpg' title='MVP Meet' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/178/411838667_b3dd50a986.jpg' border='0'&gt;&lt;/a&gt;&lt;br&gt;&lt;em&gt;Click on picture to see it in original size&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Rich coding away on his mobile phone.&lt;/p&gt; &lt;p&gt;&lt;a href='http://static.flickr.com/172/411838914_edc6e3bf15_o.jpg' title='MVP Meet' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/172/411838914_edc6e3bf15.jpg' border='0'&gt;&lt;/a&gt;&lt;br&gt;&lt;em&gt;Click on picture to see it in original size&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Gary, eagerly waiting for the food.&lt;/p&gt; &lt;p&gt;It was really good to meet a couple of the other MVP's in real life. And it's funny that, even though we met at first in a very crowded Wetherspoon, and that most of us never met before, that we managed to recognize each other without any problems. And no, we didn't all wear t-shirts with CS Logos on them.&lt;/p&gt; &lt;p&gt;Gary has &lt;a href="http://intensivedesign.co.uk/blogs/gary/archive/2007/03/01/UK-MVP-Meet_2D00_up.aspx" target="_blank"&gt;talked a bit more about the meet-up&lt;/a&gt;, and he has some additional pictures as well.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=gESrMyNfwvE:BHkHKZKRg4w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=gESrMyNfwvE:BHkHKZKRg4w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=gESrMyNfwvE:BHkHKZKRg4w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=gESrMyNfwvE:BHkHKZKRg4w:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=gESrMyNfwvE:BHkHKZKRg4w:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=gESrMyNfwvE:BHkHKZKRg4w:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=gESrMyNfwvE:BHkHKZKRg4w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=gESrMyNfwvE:BHkHKZKRg4w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/gESrMyNfwvE" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/uk-mvp-meet-up-pictures/</feedburner:origLink></item><item><title>At the end of CS MVP Beer night</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/GTBfO3V6p88/</link><pubDate>Tue, 27 Feb 2007 23:21:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/at-the-end-of-cs-mvp-beer-night/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>2</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;Rich and Nick waiting for the tube, pulling up a laptop to put the final rows on a new exiting CSModule.&lt;/P&gt; &lt;P&gt;&lt;a href='http://static.flickr.com/178/405105053_acfa85ac41_o.jpg' title='Rich and Nick at Shepherds Bush Tube Station' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/178/405105053_acfa85ac41.jpg' border='0'&gt;&lt;/a&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;More pictures coming later on. Me, I am on the tube to Hammersmith, blogging on my PDA.&lt;BR&gt;&lt;/P&gt; &lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=GTBfO3V6p88:KjIpyioK0ZE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=GTBfO3V6p88:KjIpyioK0ZE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=GTBfO3V6p88:KjIpyioK0ZE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=GTBfO3V6p88:KjIpyioK0ZE:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=GTBfO3V6p88:KjIpyioK0ZE:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=GTBfO3V6p88:KjIpyioK0ZE:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=GTBfO3V6p88:KjIpyioK0ZE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=GTBfO3V6p88:KjIpyioK0ZE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/GTBfO3V6p88" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/at-the-end-of-cs-mvp-beer-night/</feedburner:origLink></item><item><title>UK Community Server MVP Beer</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/JYNW_vGP1_g/</link><pubDate>Mon, 26 Feb 2007 21:54:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/uk-community-server-mvp-beer/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>4</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;So this week I will be in London attending a course in developing on SharePoint 2007. In fact I am in London right now, came here last night. I probably (but you'll never know)&amp;nbsp;won't have the time to write any CS article this week due to this.&lt;/P&gt; &lt;P&gt;But it won't be a CS-less week for me. I am meeting up with a couple of CS MVP's that lives in UK for a bite and a drink. Right now it looks like it's going to be &lt;A class="" href="http://intensivedesign.co.uk/blogs/gary/"&gt;Gary McPherson&lt;/A&gt;, &lt;A class="" href="http://www.nbdev.co.uk/Blogs/"&gt;Nick (Aero&amp;nbsp;Man)&amp;nbsp;Brown&lt;/A&gt;, &lt;A class="" href="http://richmercer.com/"&gt;Rich Mercer&lt;/A&gt; and me. It'll be fun to meet in real life! &lt;img src="http://joeriksson.com/emoticons/emotion-15.gif" alt="Geeked" /&gt;&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=JYNW_vGP1_g:sFCSevtOg8I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=JYNW_vGP1_g:sFCSevtOg8I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=JYNW_vGP1_g:sFCSevtOg8I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=JYNW_vGP1_g:sFCSevtOg8I:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=JYNW_vGP1_g:sFCSevtOg8I:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=JYNW_vGP1_g:sFCSevtOg8I:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=JYNW_vGP1_g:sFCSevtOg8I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=JYNW_vGP1_g:sFCSevtOg8I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/JYNW_vGP1_g" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/uk-community-server-mvp-beer/</feedburner:origLink></item><item><title>Correction of one of my old posts</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/ugBMq3sragY/</link><pubDate>Tue, 20 Feb 2007 08:37:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/correction-of-old-post/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>0</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;&lt;STRONG&gt;Previously on J-O Erikssons blog:&lt;/STRONG&gt; A long, long time ago. At least in Internet Time. At J-O Eriksson's old blog&amp;nbsp;there was&amp;nbsp;an &lt;A href="http://weblogs.asp.net/joeriksson/archive/2006/05/28/CS2_3A00_-Mass-mailing-to-all-users_2C00_-but-allow-user-to-opt-out.aspx" target=_blank&gt;article about a solution to handle sending Newsletters to your Community Server users with the help of CS Roles&lt;/A&gt;.&lt;/P&gt; &lt;P&gt;As time went by, new articles was written, other areas of Community Server was examined, and the solution was forgotten. Until one day when J-O needed to use this solution on one of his sites. He discovered that it no longer worked! It was broken, kaputt!&lt;/P&gt; &lt;P&gt;After much thought and scratching his head, J-O realized that the DB Schema had been slightly changed over time, and that his T-SQL statement therefore also needed to be changed. So, by the pale light of his computer screen,&amp;nbsp;he started up his SQL Server Management Studio, and started to write a new script to get it to work again. &lt;/P&gt; &lt;P&gt;He wrote, tested, made changes, and tested again, scratched his head, drank some coffe, made more changes. And finally, the following all new T-SQL script was written and worked again. Now J-O could finally go to sleep after a hard days work, and hopefully dream some sweet dreams of the upcoming CS 2007.&lt;/P&gt; &lt;P&gt;&lt;FONT color=#0000ff size=2&gt;CREATE&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; #NewRole &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;[UserId] [uniqueidentifier] &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;NOT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;NULL&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT size=2&gt;[RoleId] [uniqueidentifier] &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;P&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INTO&lt;/FONT&gt;&lt;FONT size=2&gt; #NewRole &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;UserID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;P&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;DISTINCT&lt;/FONT&gt;&lt;FONT size=2&gt; aspnet_Users&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;UserID &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&lt;/FONT&gt;&lt;FONT size=2&gt; aspnet_Users &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;INNER&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;JOIN&lt;/FONT&gt;&lt;FONT size=2&gt; aspnet_UsersInRoles &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ON&lt;/FONT&gt;&lt;FONT size=2&gt; aspnet_Users&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;UserID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; aspnet_UsersInRoles&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;UserId&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;WHERE&lt;/FONT&gt;&lt;FONT size=2&gt; ApplicationID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'your ApplicationID here'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;FONT size=2&gt; aspnet_Users&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;UserID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'your Anonymous UserID here'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;AND&lt;/FONT&gt;&lt;FONT size=2&gt; aspnet_UsersInRoles&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;RoleID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'your NewsLetter RoleID here'&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;P&gt;UPDATE&lt;/FONT&gt;&lt;FONT size=2&gt; #NewRole&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; RoleID &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;'your NewsLetter RoleID here'&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INSERT&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;INTO&lt;/FONT&gt;&lt;FONT size=2&gt; aspnet_UsersInRoles &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;UserID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; RoleID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;FONT size=2&gt; UserID&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; RoleID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FROM&lt;/FONT&gt;&lt;FONT size=2&gt; #NewRole&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt; &lt;P&gt;DROP&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;TABLE&lt;/FONT&gt;&lt;FONT size=2&gt; #NewRole&lt;/P&gt;&lt;/FONT&gt; &lt;P&gt;For further information what this is good for, &lt;A href="http://weblogs.asp.net/joeriksson/archive/2006/05/28/CS2_3A00_-Mass-mailing-to-all-users_2C00_-but-allow-user-to-opt-out.aspx" target=_blank&gt;see the original article at my old blog&lt;/A&gt;.&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=ugBMq3sragY:cu6R6V8wW-Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=ugBMq3sragY:cu6R6V8wW-Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=ugBMq3sragY:cu6R6V8wW-Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=ugBMq3sragY:cu6R6V8wW-Y:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=ugBMq3sragY:cu6R6V8wW-Y:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=ugBMq3sragY:cu6R6V8wW-Y:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=ugBMq3sragY:cu6R6V8wW-Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=ugBMq3sragY:cu6R6V8wW-Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/ugBMq3sragY" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/correction-of-old-post/</feedburner:origLink></item><item><title>CS 2007 New Feature: File Storage in blogs</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/-EE5VCJvy6o/</link><pubDate>Mon, 19 Feb 2007 08:04:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/cs-2007-new-feature-file-storage-in-blogs/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>8</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;One of the new features in Community Server 2007 is being able to store files on a per blog and/or a per site basis. This article gives you a walk through of how it is currently implemented in CS 2007 Beta 1.&lt;/P&gt; &lt;P&gt;I assume most of you have read about the new file storage capabilities (code name Zion) before, and many of you have probably also already tried it out. But for those that yet haven't had the time to take a look at this feature, I thought I'd give an walk through together with some screen shots to show what it looks like and what it does.&lt;/P&gt; &lt;P&gt;In CS 2007 you can store files on 2 levels (outside the scope of the File Galleries already present in CS 2.1). You can store files in a site wide storage, and you can store files in a storage for a specific blog. One advantage this gives you is that you don't have to create a separate CS File Folder and/or a Photo Gallery for each user or blog on your site. You give your user a blog, and the user gets a storage for blog pictures and files in the box.&lt;/P&gt; &lt;H2&gt;Site File Storage&lt;/H2&gt; &lt;P&gt;First let's take a look at the site file storage. If you go into &lt;FONT face="Courier New"&gt;Control Panel -&amp;gt; Administration -&amp;gt; Settings -&amp;gt; Manage Site Files&lt;/FONT&gt;, you'll see the following:&lt;/P&gt; &lt;P&gt;&lt;a href='http://static.flickr.com/178/393942781_d2644d02e3_o.jpg' title='ManageBlogFiles2' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/178/393942781_d2644d02e3.jpg' border='0'&gt;&lt;/a&gt;&lt;BR&gt;&lt;EM&gt;Click on image to see it in it's original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;You can upload new files, create new folders etc. In moment of writing this article I still haven't figured out where in the UI I can use these files. If I know the name of the file, and that it exists I can of course manually link to it in a post.&lt;/P&gt; &lt;P&gt;The physical storage for these files are in the &lt;FONT face="Courier New"&gt;root/SiteFiles/&amp;lt;ApplicationID&amp;gt;&lt;/FONT&gt; folder as you can see in the following image:&lt;/P&gt; &lt;P&gt;&lt;a href='http://static.flickr.com/174/393940883_68d66277a5_o.jpg' title='FolderView2' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/174/393940883_68d66277a5.jpg' border='0'&gt;&lt;/a&gt;&lt;BR&gt;&lt;EM&gt;Click on image to see it in it's original size&lt;/EM&gt;&lt;/P&gt; &lt;H2&gt;Blog File Storage&lt;/H2&gt; &lt;P&gt;The Blog File Storage are basically the same thing as the Site File Storage, but of course with the scope of one particular blog. You'll find it if you go to &lt;FONT face="Courier New"&gt;Control Panel -&amp;gt; Administration -&amp;gt; My Blogs&lt;/FONT&gt;.&lt;/P&gt; &lt;P&gt;&amp;nbsp;&lt;a href='http://static.flickr.com/181/393940889_1351b89d73_o.jpg' title='ManageBlogFiles' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/181/393940889_1351b89d73.jpg' border='0'&gt;&lt;/a&gt;&lt;BR&gt;&lt;EM&gt;Click on image to see it in it's original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;In the picture above, you can see 2 files and a folder, together with the option to upload new files. The physical storage here is within &lt;FONT face="Courier New"&gt;root/blogs/&amp;lt;name of the blog&amp;gt;.&lt;/FONT&gt;&lt;/P&gt; &lt;P&gt;&lt;a href='http://static.flickr.com/185/393940887_5d70b611bc_o.jpg' title='FolderView' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/185/393940887_5d70b611bc.jpg' border='0'&gt;&lt;/a&gt;&lt;BR&gt;&lt;EM&gt;Click on image to see it in it's original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;Maybe you recognize this as the directory every blog gets when created. Also in here you see the default.aspx for that particular blog. The default.aspx isn't shown to the blog user by default due some global Blog File Storage settings that I'll get back to a little later in this article.&lt;/P&gt; &lt;P&gt;So with all this in place for the Blog File Storage, when you are writing or editing a blog post in the Web UI, there's a 'Select A File'-button in the lower right of the edit page. The button brings up the following dialog:&lt;/P&gt; &lt;P&gt;&lt;a href='http://static.flickr.com/162/393940891_7c40d36541_o.jpg' title='SelectFile' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/162/393940891_7c40d36541.jpg' border='0'&gt;&lt;/a&gt;&lt;BR&gt;&lt;EM&gt;Click on image to see it in it's original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;(Hey, who's that handsome guy in that picture above? &lt;img src="http://joeriksson.com/emoticons/emotion-1.gif" alt="Smile" /&gt;)&lt;/P&gt; &lt;P&gt;As you can see, in this dialog box, you can select to insert a picture or a link to a file from the blogs File Storage. And also you can upload files directly from here.&lt;/P&gt; &lt;P&gt;Thinking as a hoster or site admin, you would probably ask yourself: How do I control this? Can the user upload as much as they want?&lt;/P&gt; &lt;P&gt;Telligent has thought of this, and given us a place to set some global settings for the Blog File Storage.&lt;/P&gt; &lt;P&gt;&lt;a href='http://static.flickr.com/146/393940881_a6c967e0e5_o.jpg' title='BlogFileStorageSettings' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/146/393940881_a6c967e0e5.jpg' border='0'&gt;&lt;/a&gt;&lt;BR&gt;&lt;EM&gt;Click on image to see it in it's original size&lt;/EM&gt;&lt;/P&gt; &lt;P&gt;Here you can see for example why the default.aspx file is not shown as mentioned earlier. You can add more files that you want to hide in a comma-separated list of file names. There is also a setting for Disk Space Quota per blog, a Maximum File size, and which file extensions to allow. This is great! It gives the hoster or site admin control of how much is uploaded, and to some extent what will be uploaded to each blogs File Storage.&lt;/P&gt; &lt;H2&gt;Summary&lt;/H2&gt; &lt;P&gt;This article has given you a walk through of the new File Storage features of Community Server 2007 beta 1. If you haven't already, jump over to &lt;A href="http://communityserver.org/" target=_blank&gt;communityserver.org&lt;/A&gt; and &lt;A href="http://communityserver.org/blogs/announcements/archive/2007/02/15/community-server-2007-beta-1-now-available.aspx" target=_blank&gt;download the new beta&lt;/A&gt; and try this out on your own. One of the downloads is a demo version that requires no installation, you just need a SQL Express on the machine where you run it. Have fun!&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=-EE5VCJvy6o:5e92NE_XFz8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=-EE5VCJvy6o:5e92NE_XFz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=-EE5VCJvy6o:5e92NE_XFz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=-EE5VCJvy6o:5e92NE_XFz8:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=-EE5VCJvy6o:5e92NE_XFz8:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=-EE5VCJvy6o:5e92NE_XFz8:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=-EE5VCJvy6o:5e92NE_XFz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=-EE5VCJvy6o:5e92NE_XFz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/-EE5VCJvy6o" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/cs-2007-new-feature-file-storage-in-blogs/</feedburner:origLink></item><item><title>The forgotten notifications (a new CSModule)</title><link>http://feedproxy.google.com/~r/J-oErikssonsBlog/~3/mU7op6Q4FGI/</link><pubDate>Mon, 12 Feb 2007 07:47:00 GMT</pubDate><guid isPermaLink="false">http://joeriksson.com/cs/communityserver/the-forgotten-notifications-a-new-csmodule/</guid><dc:creator>J-O Eriksson</dc:creator><slash:comments>3</slash:comments><category domain="http://joeriksson.com/cs/communityserver/">Community Server</category><description>&lt;P&gt;Do you have any forums posts that have been caught by a spam rule? Or do you have any forums posts that haven't been approved for other reasons?&lt;/P&gt; &lt;P&gt;It's not easy to know unless you frequently visit your &lt;FONT face="Courier New"&gt;Control Panel -&amp;gt; Forums to Moderate&lt;/FONT&gt;. I have had sites where I discovered posts that were several months old. On one of my sites someone complained that his post didn't show up after posting. Going to forums moderation, of course there it was.&lt;/P&gt; &lt;P&gt;During the autumn of 2006 I therefore started to build a CSModule to enable notifications for moderated forums posts. But I never got it to work correctly. And since I had other things with higher priority to do at the time, I forgot about it. That is, until &lt;A href="http://gcapnias.spaces.live.com/blog/" target=_blank&gt;George J. Capnias&lt;/A&gt; posted &lt;A href="http://gcapnias.spaces.live.com/Blog/cns!1A746C4E01342B70!275.entry" target=_blank&gt;about it about a week ago&lt;/A&gt;. His findings was that the code for that operation is missing from CS. So he presents us with the code to make this work. Great, now we can have our notifications of moderated forum posts that we might believe we had from the beginning. &lt;img src="http://joeriksson.com/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/P&gt; &lt;P&gt;Since I'm not that fond of altering the original source code of CS, and the fact that I'm known to somewhat like CSModules, I thought I'd still finish off my forgotten CSModule. And I did!&lt;/P&gt; &lt;P&gt;The problem I had before, and didn't manage to solve then, was using one of the e-mail templates to send the mail. I found out now I couldn't really solve it with the could that should be used, but had to make some workarounds.&lt;/P&gt; &lt;P&gt;Here we can see the function for building the email from the 'ModeratorEmailNotification'-template:&lt;/P&gt; &lt;P&gt;&lt;a href='http://static.flickr.com/144/386719931_ccdb5b971e_o.jpg' title='Create Email from template' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/144/386719931_ccdb5b971e.jpg' border='0'&gt;&lt;/a&gt;&lt;/P&gt; &lt;P&gt;As you can see, instead of using the PopulateHeader etc. to fill out the email, I had to use some RegEx's to do the job. The built-in Populate methods don't seem to have code for filling these fields.&lt;/P&gt; &lt;P&gt;The code for getting a collection of Moderators for a specific forum is partly taken from another users blog post, which also did some similar solution. I have tried to find the source I used for this code, but couldn't find it. If any of you readers recognize this code as something you've posted before, please let me know so I can give it the proper credits. I think I took part of that code and modified it just a little bit. Can't remember.&lt;/P&gt; &lt;P&gt;&lt;a href='http://static.flickr.com/125/386719936_b027a793ce_o.jpg' title='Get Moderators' rel='lightbox'&gt;&lt;img src='http://static.flickr.com/125/386719936_b027a793ce.jpg' border='0'&gt;&lt;/a&gt;&lt;/P&gt; &lt;P&gt;As you can see it uses the GetForumModeratorRoles to get the moderators of a forum.&lt;/P&gt; &lt;P&gt;Now I am running this CSModule on a couple of my sites, and it seems to work nice. However, I believe there's a problem for the admin user that is created when setting up a community and that is a member of all roles, it doesn't seem to work for that user, and I don't know why. If anyone have any insight on why it doesn't work, please let me know. It seems that the GetForumModeratorRoles don't fetch that user.&lt;/P&gt; &lt;P&gt;Do you want to try this on your site? I have uploaded it to the downloads section here at my blog, so please download and try if you want. There is a readme.txt in the ZIP on how to install it.&lt;/P&gt; &lt;P&gt;&lt;A href="http://joeriksson.com/files/folders/csmodules/entry1780.aspx"&gt;Download it here!&lt;/A&gt;&lt;/P&gt; &lt;P&gt;So now you can get your notifications for moderated forum posts, whether you choose to do it in the source code (George's solution), or via a CSModule (my solution).&lt;/P&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=mU7op6Q4FGI:CJj9AntfC3w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=mU7op6Q4FGI:CJj9AntfC3w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=mU7op6Q4FGI:CJj9AntfC3w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=mU7op6Q4FGI:CJj9AntfC3w:V-t1I-SPZMU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=V-t1I-SPZMU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=mU7op6Q4FGI:CJj9AntfC3w:ANkz6nJbUoM"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ANkz6nJbUoM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=mU7op6Q4FGI:CJj9AntfC3w:ByNYXvuKCJE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?d=ByNYXvuKCJE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?a=mU7op6Q4FGI:CJj9AntfC3w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/J-oErikssonsBlog?i=mU7op6Q4FGI:CJj9AntfC3w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/J-oErikssonsBlog/~4/mU7op6Q4FGI" height="1" width="1"/&gt;</description><feedburner:origLink>http://joeriksson.com/cs/communityserver/the-forgotten-notifications-a-new-csmodule/</feedburner:origLink></item></channel></rss>
