Web Application Generator

Labels
AJAX(112) App Studio(7) 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(177) 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(183) 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(2) 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
Web Application Generator
Wednesday, May 23, 2012PrintSubscribe
Navigation Menus, Role-Specific Data Views

Code On Time release 6.0.0.28 introduces the following features, improvements, and bug fixes:

  • Advanced two-level menus are now available in Premium and Unlimited editions.
     
  • Data views now support "Roles" property to allow additional visibility control. The "Roles" are evaluated on the server and work together with VisibleWhen property.
     
  • Property BusinessRules.UserEmail can be referenced as @BusinessRules_UserEmail in SQL and Email Business Rules.
     
  • Method BusinessRules.AddMailAddresses has been enhanced to accept "loosely" specified list of email addresses separated with comma and semicolon with optional display names.
     
  • jQuery 1.7.2 is now integrated in the client library. The future releases will add support for jQuery UI and JavaScript Business Rules.
     
  • Application framework matches methods with RowBuilder attribute first as an exact controller name match to the requested controller and as a regex match thereafter.
     
  • Page property Title is now optional. If the value is not specified, then the page name is used.
     
  • DotNetNuke Factory will load the projet in correct version of Visual Studio when both VS 2008 and VS 2010 are installed on the same computer when a compilation error has occurred.
     
  • Modal forms will retain scrolling when lookup fields are changed.
     
  • It is possible to reference master views in the visibility expressions attached to all objects.
     
    The implicit master field can be referenced as
     Master.FieldName
  • The explicit alternative is
    view1.FieldName

  • It is now possible to create a soft filter by Null value using SQL Business Rules defined as follows:
     
    if @BusinessRules_Tags is null
    begin
       set @BusinessRules_Tags = 'Tagged'
      set @Region_Filter_Equals = 'null'
    end

    The rule will work with Customers controller in the Northwind sample.
     
  • Method ControllerNodeSet.CreateBusinessRules now support "name" attribute to allow dynamic creation of "named" business rules.
     
  • Removed incorrect reference to aspnet_User controller from the Membership Manager.
     
  • Quick Find will work even if Query by Example is set to "False" on the first field in the data view.
     
  • Fixed the issue with the "soft" filter being require to have a type of "array of objects".
Wednesday, May 23, 2012PrintSubscribe
Customizable Main Menu with Two Levels

Database web applications may contain multiple pages with a complex navigation hierarchy. Traditional multi-level menus do a good a job of presenting such hierarchies. 

Consider the following web app created from Adventure Works database with Code On Time. The navigation menu has multiple levels reflecting the relationships between database tables. Developers will likely want to change the automatically configured menu structure but will still be forced to create multiple levels of navigation menu options.

The automatically composed menu structure of 'Adventure Works' app created with Code On Time web application generator

A web application can be configured to use an advanced two-level menu.

Start the web application generator, select the project name, choose Settings option, and proceed to alter the layout of application pages under Layouts section.

Choose Advanced Two-Level menu presentation style and click Finish.

Generate the app and inspect the new look of the navigation menu in the browser. The second level of the menu is rendered flat with indentation reflecting the hierarchy. All navigation menu levels are visible and accessible immediately.

Advanced two-level menu in 'Adventure Works' sample created with Code On Time web application generator

The accessibility of menu options can be further improved by breaking them into multiple columns.

Start Project Designer and select Pages tab. Select New | New Page option on the action bar. Enter the following properties and click OK to save the page.

Property Value
Name ProductionFirstColumn
Index 1345
External Url about:blank
Path Production| First Column
Roles *

Select  Home link in designer bread crumbs and create another page configured with these properties.

Property Value
Name ProductionSecondColumn
Index 1485
External Url about:blank
Path Production | Second Column
Custom Style menu-new-column
Roles *

These is the partial hierarchy of the pages in Project Explorer with some of the child nodes under Production page collapsed for clarity.

image

The highlighted page properties affect the menu presentation.

  • If about:blank is found in the External Url property, then the corresponding physical page is not created by the application generator. The menu option will be rendered as a static text.
  • It is mandatory to enter “*” in the Roles property. Otherwise the security trimming mechanism will remove the option from the menu at runtime.
  • If the CSS class with the name menu-new-column is entered in Custom Styles, then a new column of options is started in the second level of the advanced two-level menu.

The indexes of new pages were selected so that they would precede pages Production | Product and Production | Location.

Here is the effect of the changes. All navigation menu options under Production are rendered in two columns.

Customized advanced two-level menu with two columns of options in 'Adventure Works' sample created with Code On Time web application generator

If an option of any sub-level is selected, then the user interface of the main menu reflects that.

The advanced two-level menu reflects selection of any options on its sub-levels

The second level of advanced two-level menu can be further enhanced with the custom CSS style sheets. Create a custom CSS stylesheet in the project and enter following rules.

div.two-level div.production-menu
{
    background-image: url(../_Shared/Page_Categories.png);
    background-repeat: no-repeat;
    background-position: 110% top;
}

div.two-level div.human-resources-menu
{
    background-image: url(../_Shared/Page_Announce.png);
    background-repeat: no-repeat;
    background-position: 130% top;
    padding-right:70px!important;
}

Start Project Designer and modifying the following pages.

Page Name Page Path Property New Value
HumanResources_Home Human Resources Custom Style human-resources-menu
Production_Home Production Custom Style production-menu

Generate the app, refresh the browser page, and inspect Human Resources and Production options on the top level of the main menu.

A custom CSS rule displays a background image in the second level of 'Human Resources' menu option in 'Adventure Works' sample created with Code On Time web application generator

A custom CSS rule displays a background image in the second level of 'Production' menu option in 'Adventure Works' sample created with Code On Time web application generator

These are the examples of advanced two-level menu with other available themes.

An example of a customized advanced two-level menu in web app with the 'Graham' theme

An example of a customized advanced two-level menu in web app with the 'Social' theme

Tuesday, May 22, 2012PrintSubscribe
Modifying User Interface with CSS

Code On Time web applications use Cascading Style Sheets (CSS) to theme the application elements, including colors, fonts, backgrounds, borders, paddings, margins, and other embellishments.

The screen below shows the Employees page of a web application generated using Social theme.

Employees page of a Code On Time web application using Social theme.

Most modern browsers have built-in page inspection capabilities. For example, if you are using Internet Explorer 9, you will need to press F12 to bring up Developer Tools. On the menu, click on Disable / CSS menu option.

Disable CSS using the Developer Tools in Internet Explorer 9.

The page style sheet will be disabled, and the page will look like the screenshot below. You can see that it is now “black on white” - just black text and blue links. If you want to completely revamp the page, it may be best to start from here.

Employees page of a Code On Time web application with CSS disabled.

Alternatively, you can add incremental enhancements to existing themes. Let’s make a cosmetic enhancement to the Social theme.

On the Developer Tools menu bar, click on Disable / CSS menu option again to enable the site styling. Click on the Arrow icon on the toolbar to activate Inspection mode. In this mode, when you mouse over an element in the page, it will be surrounded by a blue border.

Developer Tools Inspection mode will overlay a blue background on moused over page elements.

Click on the first cell underneath the Address column. The Developer Tools window will find the HTML corresponding to the selected element. Three CSS classes Cell, Address, and StringType are currently assigned to the table cell. Let’s create a CSS class that will add a gray background to the Address column.

Select the first cell underneath the Address column on the Employees page of the Code On Time web application.

Start Code On Time web application generator, click on the project name, and press Develop to open the project in Visual Studio. In the Solution Explorer, right-click on the ~/App_Themes/MyCompany folder and click on Add New Item option. If you changed the namespace of your application, then choose the corresponding folder.

In the Solution Explorer, right-click on the ~/App_Themes/MyCompany folder and click on Add New Item option.

In the window that opens, select your programming language, and then choose Style Sheet. Optionally rename the file, and then press Add.

Select 'Style Sheet' option, and press Add.

Replace the default text in the style sheet with the following rule.

.Cell.Address
{
    background-color:#F2F2F2!important;
    border-bottom-color:#F2F2F2!important;
}

Note the use of the !important suffix. This suffix needs to be used when your custom CSS rules come into conflict with the core theme, and you would like your own rule to prevail.

Save the file, and refresh the web page. You will see that the Address column now has a gray background.

The Address column of the Employees grid view is now stylized with a gray background.

Cascading style sheets offer an infinite number of options to affect the presentation of pages without changing a single line in the web application itself. Applications created with Code On Time do not explicitly specify colors or fonts anywhere in the source code. You can alter your application to your exact specifications.