Free E-Books From Microsoft Press

Microsoft Press has released several E-Books that people can download and get started with, I will list them with a short synopsis so that people can go and download the books that interest them.

Moving to Microsoft Visual Studio 2010 (DRAFT Preview)

This DRAFT Preview contains three chapters from what will be a ten-chapter E-book when it’s released this summer. The three chapters make up Part II, “Moving from Microsoft Visual Studio 2005 to Visual Studio 2010.”

You can download the DRAFT Preview of this ebook in XPS or PDF format here.

 Moving to Microsoft Visual Studio 2010 (DRAFT Preview II)

Today we’re happy to release a second draft installment: the three chapters that make up Part III, “Moving from Microsoft Visual Studio 2008 to Visual Studio 2010.”

You can download one or both free draft ebooks (in XPS or PDF format) here.

Code for “Moving to Microsoft Visual Studio 2010” DRAFT ebooks

A few of you requested the related code for our Moving to Microsoft Visual Studio 2010 DRAFT ebooks. (You can learn more about the ebooks and download them via this post.)

Introducing Microsoft SQL Server 2008 R2

Our purpose in Introducing Microsoft SQL Server 2008 R2 is to point out both
the new and the improved in the latest version of SQL Server. Because this
version is Release 2 (R2) of SQL Server 2008, you might think the changes are
relatively minor—more than a service pack, but not enough to justify an entirely
new version.

You can download the ebook in XPS format here and in PDF format here

Programming Windows Phone 7 Series (DRAFT Preview) (by Charles Petzold)

A draft preview of his upcoming book (to be published in the fall): Programming Windows Phone 7 Series. This preview ebook contains six chapters in three parts (153 pages total).

You can download the ebook in XPS format here. Here it is in PDF format. And the zipped code samples for this draft preview are here.

These E-books have lots of good information and starting points for working with Visual Studio and the new version of Sql Server and Windows Phone 7 Series.  Hope everyone enjoys them.

Posted on 7/25/2010 9:26:56 PM by omacdon

Permalink | Comments (2) | Post RSSRSS comment feed |

Categories: Programming | SQL Server | Visual Studio

Tags: , ,

DotNetNuke Tips #1 – Module Header and Footer

Using DotNetNuke effectively takes time in learning how to best use the tool.  One common mistake that many new administrators of the framework make is to place an html/text module above or below another module that they have on a page. Although to make the page more maintainable each module has some options in the settings that we can use to insert html/text.

menu

So if we select the settings in the action menu for the module and then once we get to the module settings page expand the plus sign next to the Advanced Settings we will see the following:

AdvancedSettings

As you can see we have the options for a Header Text and a Footer Text, both of these fields are ntext fields in the database that houses them.  Therefore, we have an unlimited number of characters that can be placed within these two textboxes for displaying above and below our module.

The only thing is that these are not WYSIWYG editors to enter the text in but at least it saves the addition of two more modules on the page that would increase the load time of the page.

Hope this tip saves some use of text modules and better use of the framework.

Posted on 5/1/2010 12:18:59 AM by omacdon

Permalink | Comments (2) | Post RSSRSS comment feed |

Categories: DotNetNuke | Programming | Skinning | Tips

Tags: , , ,

New Beta 5.1.0.364 release of DotNetNuke CE

Keeping with their promise to release often, we have a new beta version that was released today.  The new beta can be downloaded from CodePlex.

The following bugs have been fixed in this new release

(5.1.0.364) Beta 3

DNN-9853
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Binary Compatability issue for repository

DNN-9871
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Audit info when creating new pages

DNN-9661
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Errors in user registration form (profile properties)

DNN-9892
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Enable disable host menu

DNN-9898
Installation / Upgrade
Bug
Checked-In
Complete

Summary:   upgrade from 493 to 5.1.0.266

DNN-9899
File Manager
Bug
Checked-In
Complete

Summary:   Admin cannot add/delete folders or files, etc. in Admin-->File Manager

DNN-9904
Core Modules
Bug
Checked-In
Complete

Summary:   Repository is broken after after upgrading TestBed_493_3 with 5.1.0.266

DNN-9908
Skinning
Bug
Checked-In
Complete

Summary:   Skin ControlPanel breaking change

DNN-9905
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Some Admin/ Host Controls are missing after upgrading TestBed_493_3 with 5.1.0.266

DNN-9903
Installation / Upgrade
Bug
Checked-In
Complete

Summary:   Languages broken after upgrading TestBed_493_3 with 5.1.0.266

DNN-9895
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Adding Module to Another Page

DNN-9897
UI / Usability
Bug
Checked-In
Complete

Summary:   No longer shows page hierarchy when adding existing module

DNN-9856
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Upgrade from 5.0.1 - Console

DNN-9918
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Exception when emptying recycle bin

DNN-9916
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Menu doesn't refresh after restoring a page

DNN-9930
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Error on Language rename

DNN-9890
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   changes to tabs need to audit tab and tabpermission changes

DNN-9952
General
Bug
Checked-In
Complete

Summary:   Module Settings: Move module to page results in a copy instead.

DNN-9964
File Manager
Bug
Checked-In
Complete

Summary:   Permissions Grid Does Not Correctly Display Permissions

DNN-9965
UI / Usability
New Feature
Checked-In
Complete

Summary:   Display version info for "Beta" builds

DNN-9967
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   user view shows all users

DNN-9936
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Sitemap priority defaults to 0

DNN-9925
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Fallback Skin Doctype changes not reflected in UI on load / postbacks

DNN-9912
Security
Bug
Checked-In
Complete

Summary:   5.1.0 - Possible Breaking Change FileSystemUtils.SetFolderPermissions

DNN-9946
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Behaviour Change for Inline Editing

DNN-9254
Performance
Bug
Checked-In
Complete

Summary:   "PageState Persistence" set to "Memory" kills AJAX modules

DNN-9568
Security
Bug
Checked-In
Complete

Summary:   Permission issues

DNN-9654
Search
Bug
Checked-In
Complete

Summary:   Search Input module: no search text

DNN-9950
Localization / ML
Bug
Checked-In
Complete

Summary:   Incorrect icon for button

DNN-9928
Control Panel
Bug
Checked-In
Complete

Summary:   User with page edit permission can see admin & host console links

DNN-9953
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Missing Default Language options => Broken Site Settings

DNN-9948
Admin / Host Functions
Bug
Checked-In
Complete

Summary:   Control Panel Visibility Selection not Saved properly

DNN-9971
Admin / Host Functions
New Feature
Checked-In
Complete

Summary:   Add Skin Event Handling

 

There is a new release expected at any time to cure the issue that developed today that involves not allowing the install to complete if .NET 3.5 is not installed on the system.

Posted on 5/23/2009 2:41:17 AM by omacdon

Permalink | Comments (1) | Post RSSRSS comment feed |

Categories: Programming | Software | DotNetNuke | ASP.NET

Tags: , , ,

New DotNetNuke Admin Console Module in 5.1.0 Beta

After installing the latest 5.1.0 beta of DotNetNuke that was released this week, I noticed a new icon and a couple of links in the Control Panel when I logged in as the host of the new install.

NewCP

As always in my endeavors with this platform my curiosity got the best of me and I had to see where these two links took me. I assumed that it would be to something that only an admin or host would need access to.  I was pleasantly surprised to see the result on clicking on the admin link.

AdminConsole

It brought me to a page in my new DNN install that had a link to each of the pages under my admin menu. As well as when I placed my mouse over any of the items in the Admin Console, a tooltip is displayed telling me about the link and what I can find by following it. 

Also on the console there are two drop down boxes one is to select the size of the icons for use on the page. As well as another one to choose whether to display the contents of the page in simple view or detailed view.  Detailed view basically takes the tooltip contents and places it on the page instead of the popup window.

I also noticed that this console module was placed on the Admin page of the menu and the host console was placed on the Host page of the menu.  In previous versions of DNN these two menu choices were not enabled so we couldn’t navigate to them in the menu structure.  I think this will be a great tool for new administrators and people unfamiliar with how DNN works.

SettingsBut there are more goodies in this module.  I also checked to see if this module had any settings that could be adjusted. I found that there are a number of different settings in the module settings.

The settings of the module are as follows:

  • Show children of: allows us to set this module on any page and then show the children of a different page then the one we are currently on.  If no page is selected then it shows the children pages of the current page the module resides on.
  • Default icon size: this can be set to 16px or 32px for displaying the icons in the module.
  • Allow icon resize: if this checkbox is checked then the user can select the size of the icons they want to use in the module themselves in the drop down box.
  • Default view: this can be set to simple or detailed view for displaying the items in the console module.
  • Allow view change: if this checkbox is checked then the user can select the type of view that they want to see in the module themselves.
  • Show tooltip: checking this checkbox determines whether or not we will see the jQuery tooltip when we hover over a choice in the module.

If a user makes changes to the console module as to how they want to view that page such as large icons or detailed view, these changes get saved and the next time the user comes back they will be presented with the same view that they previously had.  This is a nice feature and allows each user to customize how they want to interact with the module.  Also the module checks permissions to determine what pages a user has access to.

After looking at the module and the code that it generates, it is nice to see that they code outputs xhtml and doesn’t make use of tables anywhere in the output. So it provides a good example of how modules should be written to take care of the over exuberant use of html tables in module development.

I have some uses that I can picture for the use of this module going forward in the future in some of my development.  Most of which would be a similar use as to how the core framework uses it, but would be incorporated into my modules.

Guess I’ll go back to exploring this new release see if I can find some more new features to let everyone in on.

Posted on 5/18/2009 5:03:25 AM by omacdon

Permalink | Comments (3) | Post RSSRSS comment feed |

Categories: Cambrian | DotNetNuke | Programming

Tags: , ,

You Searched For User Control in BlogEngine.NET

I received an interesting comment today about my blog.  It was really appreciative of a feature that is included within the blogging engine. Which is the “You Searched For” user control.  This takes the search query that is sent along from the search engine and matches it to a search within the local site when the referrer comes from a search engine.

What especially made me take notice is that the comment came from a member of the DotNetNuke Blog Module team. With a request to understand how this was achieved within my site.  Well I figured I could have just sent back a quick and dumb answer of it is just part of the blogging engine I use.  Which in my case is BlogEngine.NET.  Or I could do what I am doing now and go into to detail about how the blogging engine accomplishes this, which is what was really being looked for.

With that in mind I will walk through how it is accomplished as I think this would be a great control to be a part of the DotNetNuke core Blog Module as well as a module that could be used to allow people to get more search results when they land on a DNN site.  May have to build that.

There are two parts to this to make it work successfully.  The first part is the addition of the user control to skin theme for my blog site.

  1: <blog:SearchOnSearch ID="SearchOnSearch1" 
  2:     runat="server" MaxResults="5" 
  3:     Headline="You searched for"
  4:     Text="Here are some results for the 
  5:     search term on this website" />

The second part is the code that is behind this user control.  First of we have a few properties that can be configured on the control

Properties:

  1. MaxResults: This is the maximum number of results to return to the page if there are any found.
  2. Headline: This is the headline to display for the control when it returns search items found.
  3. Text: This is the text to be displayed below the headline and above the search results.

Class Implementation:

  1: 
  2:  public class SearchOnSearch : Control
  3:  {
  4:      private static Regex _rxSearchTerm = null;
  5:  
  6:      static SearchOnSearch()
  7:      {
  8:  	// Matches the query string parameter "q" and 
  9:         // its value.  Does not match if "q" is blank.
 10:  	_rxSearchTerm = new Regex("[?&]q=([^&#]+)", 
 11:              RegexOptions.Compiled | 
 12:              RegexOptions.IgnoreCase | 
 13:              RegexOptions.CultureInvariant);
 14:      }
 15:  
 16:      public override void RenderControl(
 17:           HtmlTextWriter writer)
 18:      {
 19:   	string html = Html();
 20:   	if (html != null)
 21:   	    writer.Write(html);
 22:      }
 23: 
 24:     /// <summary>
 25:     /// Checks the referrer to see if it qualifies as a search.
 26:     /// </summary>
 27:     private string Html()
 28:     {
 29:         if (Context.Request.UrlReferrer != null 
 30:             && !Context.Request.UrlReferrer.ToString().Contains(
 31:             Utils.AbsoluteWebRoot.ToString()) && IsSearch)
 32:         {
 33: 	    string referrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLowerInvariant();
 34: 	    string searchTerm = GetSearchTerm(referrer);
 35: 	    List<IPublishable> items = Search.Hits(searchTerm, false);
 36:             if (items.Count == 0)
 37:                 return null;
 38:             return WriteHtml(items, searchTerm);
 39: 	}
 40: 
 41: 	return null;
 42:     }
 43: 
 44:     /// <summary>
 45:     /// Writes the search results as HTML.
 46:     /// </summary>
 47:     private string WriteHtml(List<IPublishable> items, 
 48:         string searchTerm)
 49:     {
 50: 	int results = MaxResults < items.Count ? MaxResults : items.Count;
 51: 	StringBuilder sb = new StringBuilder();
 52: 	sb.Append("<div id=\"searchonsearch\">");
 53: 	sb.AppendFormat("<h3>{0} '{1}'</h3>", Headline, HttpUtility.HtmlEncode(HttpUtility.UrlDecode(searchTerm)));
 54: 	sb.AppendFormat("<p>{0}</p>", Text);
 55: 	sb.Append("<ol>");
 56: 
 57: 	for (int i = 0; i < results; i++)
 58: 	{
 59: 		sb.AppendFormat("<li><a href=\"{0}\">{1}</a></li>", items[i].RelativeLink, items[i].Title);
 60: 	}
 61: 
 62: 	sb.Append("</ol>");
 63: 	sb.Append("</div>");
 64: 
 65: 	return sb.ToString();
 66:     }
 67: 
 68:     /// <summary>
 69:     /// Retrieves the search term from the specified referrer string.
 70:     /// </summary>
 71:     private string GetSearchTerm(string referrer)
 72:     {
 73: 	string term = string.Empty;
 74: 	Match match = _rxSearchTerm.Match(referrer);
 75: 	if (match.Success)
 76: 	{
 77: 		term = match.Groups[1].Value;
 78: 	}
 79: 
 80: 	return term.Replace("+", " ");
 81:     }
 82: 
 83:     /// <summary>
 84:     /// Checks the referrer to see if it is from a search engine.
 85:     /// </summary>
 86:     private bool IsSearch
 87:     {
 88: 	get
 89: 	{
 90: 		string referrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLowerInvariant();
 91: 		return _rxSearchTerm.IsMatch(referrer);
 93:     }
 94:  }

As we can see from the class it checks to see if there is a query “q” attached to the referring url to see if this comes from a search engine. If it does then we want to search the site and see if we have any posts that we can display to the user.

This is really neat and helpful for users.

kick it on DotNetKicks.com

Posted on 3/22/2009 1:48:26 AM by omacdon

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: DotNetNuke | BlogEngine.NET | ASP.NET | Programming

Tags: , , ,

2009 Florida Code Camps Viewing Online

For anyone that is not located in the Florida Area or who like me live in the vast wasteland and can’t get to these type of events, Will Strohl has provided online viewing today through his the Orlando DotNetNuke User Group site.

This link below provides a list to the sessions for the day.

The Mighty Blog - The personal web site for Will Strohl - 2009 Florida Code Camps Coming - Back to Back

This link provides access to viewing of the tracks as they are presented.

http://orlando.dotnetnukeug.net/ODUGLive.aspx

Technorati Tags: ,

Posted on 2/7/2009 5:07:32 PM by omacdon

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: DotNetNuke | Programming

Tags: ,

DotNetNuke Site Updates & Changes – Dogfooding 4.9.2

Well it appears as if the anticipated update to fix issues with 4.9.1 is slowing making it’s way down the line to us.  It was apparently upgraded at the main DotNetNuke site and is now being tested probably at it’s heaviest for now.  Lets hope no major issues are found and hopefully we will also see that long awaited update for 5.0.0 to 5.0.1 as well.

More information can be found by following the link below from Scott Willhite:

Dogfooding DNN 4.09.02 - DotNetNuke Site Updates & Changes - DotNetNuke

Posted on 2/5/2009 5:12:02 PM by omacdon

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: DotNetNuke | Programming | Software

Tags: , ,

Microsoft SDK Downloads

For anyone having trouble trying to find an SDK that they know Microsoft ships have a look at the following it may provide and answer for you in your search.

Microsoft SDKs

Technorati Tags:

kick it on DotNetKicks.com

Posted on 1/22/2009 10:36:01 PM by admin

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: ASP.NET | C# | Programming | SQL Server | VB.NET | Windows Server

Tags:

C# & VB.NET Coding Standards Guides

Clint Edmonson has released a some free C# and VB.NET Coding standards guides to the community to use.  For anyone who wants to download them they can be downloaded below

C# & VB.NET Coding Standards Guides

kick it on DotNetKicks.com

Posted on 12/27/2008 4:47:52 AM by admin

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: C# | VB.NET | Visual Studio | Programming

Tags: , , ,

Remove Display Name from Registration in DotNetNuke

Having worked with DotNetNuke since Version 1.0 and before I have seen many changes within the framework.  One of the changes that I liked but found it to be repetitive was when working with the registration tools, we had this field called Display Name that was always asking for input in the form.

DispName1

This image shows the display name as a required field.  I understand the need for this as we want to display a user’s preferred name to them when they login, but it is also nice being able to set this to our own predetermined fields as well. Well this can be done within the framework, with the added bonus that the display name will now not be part of the registration process. 

To accomplish this, lets walk through the process.

Remove the display Name

  1. Login to the portal as an administrator
  2. Go to Admin –> User Accounts
  3. Click on User Settings either at the bottom of the module or in the drop down menu for the module.
  4. Locate the Display Name Format field near the bottom of the user settings
    DispName2
  5. Place the following within the textbox [FIRSTNAME] [LASTNAME]. This will set the display name to the first and last name of the user that is registering.
  6. Click the update button at the bottom of the module.
  7. Log out of the portal as administrator and then click on the registration link. The Display Name field should now not be visible in your registration form.
    DispName3

This makes for a consistent naming scheme for wherever the Display Name field is used within your portal as well as allowing the field not to be required during registration when having new users register.

If you have any comments or other suggestions about tips you would like to see about DotNetNuke please leave them in the comments below.

kick it on DotNetKicks.com

Posted on 10/18/2008 4:59:26 PM by admin

Permalink | Comments (0) | Post RSSRSS comment feed |

Categories: DotNetNuke | Programming | Software

Tags: , ,