Blog

Labels
AJAX(112) App Studio(9) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(178) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(184) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(3) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Sunday, April 4, 2010PrintSubscribe
Dedicated Login Page, Membership Customization Options

The latest release of Web Site Factory and Data Aquarium Framework support additional ASP.NET Membership configuration options. The menu of the available options is displayed in the screenshot below.

image

Here is a brief description of the available options.

Dedicated Login Page

The standard generated application features a fly-over login dialog that helps users to sign in. Users can also recover their password and sign up for new accounts as well. Sometimes you may want to have a dedicated login page with similar capabilities. If you enable a dedicated login page and generate your project then you will be greeted with the following login page when the application starts.

image

All application pages are automatically protected and any attempt to access a page will require a user to sign in. A dedicated user control ~/Controls/Login.ascx is automatically generated. You can freely change the control in Visual Studio according to your needs. The generator will not be trying to overwrite this control in the future. The default markup of the control is shown below:

<%@ Control Language="C#" AutoEventWireup="true" 
    CodeFile="Login.ascx.cs" Inherits="Controls_Login" %>
<%@ Register Src="Welcome.ascx" TagName="Welcome" TagPrefix="uc1" %>
<div class="SettingsPanel">
    <asp:Login ID="Login1" runat="server" TitleText="" Style="border-collapse: separate;"
        CreateUserText="Sign Up Now" 
        CreateUserUrl="javascript:Web.Membership._instance.signUp();"
        PasswordRecoveryText="Forgot Your Password?" 
        PasswordRecoveryUrl="javascript:Web.Membership._instance.passwordRecovery();">
    </asp:Login>
    <div style="width: 300px; margin: 20px -8px;">
        <uc1:Welcome ID="Welcome1" runat="server" />
    </div>
</div>

If you don’t want to allow password recovery or self-sign up then simply remove the corresponding properties from the control’s markup.

If a dedicated login page is enabled then the fly-over login dialog on the membership bar at the top of the pages will not be displayed anymore.

“Remember Me” Options

Two more new options control if the fly-over dialog will display “Remember me next time” check box in the fly-over login dialog. The “Remember Me” check box is unchecked by default.  Now you can change that by requesting “Remember Me” option to be “checked”.

Password Recovery and Sign Up

Standard features of ASP.NET Membership are password recovery and self sign-up. You can now control if this options are available in your application. The following screenshot shows the fly-over dialog with “remember me”, “password recovery, and “sign up” features disabled. You can see the standard fly-over dialog in action with all features enabled at http://dev.codeontime.com/demo/WebSiteFactory3.

image

“My Account” and “Help”

Two more additional options allow to control if users can access and change their account and invoke the page-level help system. Here is the screen shot with both features enabled. You can see “My Account” and “Help” links on the membership bar.

image

Here the screen shot of the same page with both options disabled in the code generator project wizard.

image

Standalone Membership Database

You can also elect to create a standalone membership database. Read more about it at /blog/2010/03/standalone-aspnet-membership-database.html.

Future Enhancements

The upcoming updates to the premium projects will introduce support for Windows Authentication and also allow to create a custom authentication without dependencies on ASP.NET Membership while retaining all security features described in the tutorials at /blog/2009/12/security-pages-fields-actions.html. We will post a tutorial that will show how to use a database table to authenticate users on the dedicated login page.

The membership bar will also allow activating most recent used objects to allow quick navigation to the application objects that were recently accessed by users.

Saturday, March 27, 2010PrintSubscribe
Custom Page Background

This is the standard home page of a Web Site Factory application generated by Code OnTime Generator. You can quickly add a custom background to this or any other page with a custom CSS stylesheet.

image

Open your project in Visual Studio or Visual Web Developer and create a new CSS style sheet in the same ~/App_Themes folder of your project that contains the _Layout.skin file.

image

Type the following CSS rules in the style sheet:

.pages_home_aspx  #PageContent
{
   background-image: url(../_Shared/SettingsGraphic.jpg); 
   background-repeat: repeat-x; 
}

The rule will change the home page content area to display the standard SettingsGraphics.jpg image as the background image across the top of the page.

image

We have copied the standard Windows Vista background wallpaper 26.jpg to the folder with our CSS file and changed the CSS rule to

.pages_home_aspx  #PageContent
{
   background-image: url(img26.jpg); 
   background-repeat: repeat-x; 
}

The home page of the app has changed as shown in the picture.

image

The CSS class pages_home_aspx is automatically assigned to the home page by the application framework. In fact, every page of a Web Site Factory application automatically assigns its own class name to the content container element. This allows creating CSS rules with precise targeting of individual pages.

The styling of all pages in the generated web applications is controlled entirely by a collection of CSS stylesheets that make your application look like Microsoft SharePoint Services web site by default.

Disable the stylesheet and it turns into a “black and white” canvas.

If you feel an inspiration then go ahead and create your own masterpiece!

image

Labels: Tips and Tricks
Saturday, March 27, 2010PrintSubscribe
Integrating ELMAH in Code OnTime Projects

Q. I have another question. I just implemented ELMAH into my solution and
am having some difficulty because every time I use the designer and
regenerate the solution the Elmah configuration entries get
overwritten in Web.Config. I'm sure others have run into this before.
How would you suggest I remediate this issue?

Arthur Djavairian

A. You can configure the project to execute custom Web.Config modification instructions as described at /blog/2010/03/customizing-webconfig.html.

ELMAH (Error Logging Modules and Handlers) is an application-wide error logging facility that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment.

Arthur has shared with us his configuration settings.

The following is the markup to add ELMAH error logging to a Code OnTime project.  Make sure to copy the instructions including the text in bold.

AppendChild: /configuration/configSections

              <sectionGroup name="elmah">
                       <!-- NOTE! If you are using ASP.NET 1.x then remove the
                requirePermission="false" attribute from the section
                elements below as those are only needed for
                partially trusted applications in ASP.NET 2.0 -->
                       <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
                       <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
                       <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/>
                       <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
                       <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah"/>
               </sectionGroup>

InsertAfter: /configuration/connectionStrings

       <elmah>
               <security allowRemoteAccess="1"/>
               <!--
           Use to log errors to Microsoft SQL Server 2000 or 2005
           using ASP.NET 2.0. Set value of connectionStringName attribute
           to the name of the connection string settings to use from
           the <connectionStrings> section.
       -->
               <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="SimplePaymentPlans"/>
       </elmah>

AppendChild: /configuration/system.web/httpHandlers


<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>

AppendChild: /configuration/system.web/httpModules

<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>

AppendChild: /configuration

   <location path="elmah.axd">
       <system.web>
           <authorization>
               <allow roles="Administrators"/>
               <deny users="*" />
           </authorization>
       </system.web>
   </location>