DotNetNuke

Blog
DotNetNuke
Wednesday, April 16, 2014PrintSubscribe
Touch UI, Firebird Database, Azure SDK 2.3

Code On Time release 8.0.4.0 introduces a new user interface concept Touch UI and support for Firebird Database Server.

Touch UI (former Mobile Client) is the next generation of the client library. Mobile Client has been introduced in December of 2013. The main objective was to offer a close-to-native mobile experience when using web applications created with Code On Time. We have come to realize that intuitive navigation and new presentation style can benefit greatly users working with desktop computers. During the past two months we have reworked the Mobile Client and turned into a universal touch-enabled presentation system.

The purpose of the new UI is to enable development of a single app that displays equally well on end-user devices of any type. The new enterprise computing concept BYOD (bring your own device) becomes a reality with Code On Time. If you are building an app with Code On Time, then you have already accommodated users of smart phones, tablets, and desktop computers.

Try an app with Touch UI right now!

An app with Touch UI displayed in iPad Air. The app has been created with Code On Time app generator.

An app with Touch UI is displayed in iPhone 5s. The app has been created with Code On Time app builder.

An app with Touch UI is displayed in IE 11. The app has been produced with Code On Time generator.

Touch UI uses the same code base and the same set of business rules. If you are a building a line-of-business app for desktop users then you have already created a mobile version of it. If you are only looking forward and trying to please your mobile user base, then you are also offering a first class experience on the desktop (even if you don’t want to).

Firebird database server is now supported by Code On Time app generator. This is another highlight of the release. Download Firebird and build powerful line-of-business applications with a lightweight database server.

The following enhancements are also included in the release:

  • Touch UI is based on jQuery Mobile 1.4.2.
     
  • Client library provides an enhanced progress indicator.
     
  • Mandatory input fields display “Required” watermark if a custom watermark is not provided.
     
  • Batch Update commands correctly work with modal forms in Desktop UI.
     
  • Azure SDK 2.3 support is integrated in the app generator.
     
  • App generator uses “All CPU” parameter when building projects with MSBuild.
     
  • URL Hashing allows _mobile switch in the browser address bar to enable testing Touch UI on desktop computers.
     
  • Method ControllerNodeSet.CreateBusinessRuleFilter correctly works with data controller virtualization rules.
     
  • Tools for Excel recognizes Watermark property of data fields.

What’s Next?

Touch UI is not completely replacing the current desktop presentation. We will continue supporting desktop and will enhance the client library with further improvements in SharePoint Factory and DotNetNuke Factory.

The desktop presentation in the other project types will eventually become a secondary “fall-back” option for browsers that do not support HTML 5. We will introduce built-in CMS (Content Management System) in the code base of these project types. This may become an attractive alternative to SharePoint and DNN if your application requires custom user-generated dynamic content.

Touch UI is the user interface of the upcoming http://cloudontime.com hosted service.

See the list of upcoming features that we are working on in the Roadmap 2014.

Sunday, June 30, 2013PrintSubscribe
How to Configure DotNetNuke Factory Project with DNN7

You can integrate line-of-business web applications with the popular web content management system DotNetNuke, the leading web content system for ASP.NET by using Code On Time’s DotNetNuke Factory.

Why DotNetNuke?

If you have experience with creating database web applications, then you’ve probably considered using a dynamic portal to increase the flexibility of your web application.

One can easily picture a whole world built around a few business data enabled pages. Users register using a portal,  with the latest release notes and instructions posted for their convenience. Add a quick online survey and a few blog posts to your web application, without a fuss.

If you try building such a portal on your own, you will soon find that the task is not that simple.  While you may be the leading expert in web application design with a database to prove it, web content delivery is another topic altogether.

Content management systems such as DotNetNuke and Microsoft SharePoint are widely adopted by organizations and businesses of all sizes as repositories of knowledge and web assets.

DotNetNuke is a proven portal software built with ASP.NET, boasting countless installations and a large dedicated user base. The easily available Community Edition of this product makes it especially attractive for developers who need portal-style functionality in their application at a low cost.

Integrating DotNetNuke With Your Line-of-Business Application

DotNetNuke is exceptionally easy to install and maintain – done entirely in a web browser.

DotNetNuke has impressive extensibility. One popular method of extending DotNetNuke is module development. A “module” represents an area on a portal page that is rendered by a custom application. For example, a calendar of events or a survey can be implemented as a module and placed on any portal page.j

You can also create a database application with complex data management  features and have it incorporated in a DotNetNuke module.

The development process is somewhat complicated. Here is where Code On Time’s DotNetNuke Factory comes to the rescue. DotNetNuke Factory will aid you in building a dedicated application packaged as a DotNetNuke module. This module can be deployed to the portal in seconds.

WebMatrix and DotNetNuke

Many popular software titles, including DotNetNuke, were developed for Microsoft ASP.NET Web Platform. Microsoft has created WebMatrix, a vehicle to allow simple download and installation of many popular open source web applications. WebMatrix includes a lightweight version of Microsoft Internet Information Services called IIS Express. This web server makes it possible to run web applications on virtually any type of operating system from Microsoft.

You will have to download WebMatrix at http://webmatrix.com to proceed with this tutorial.

Configuring Database

Start SQL Server Management Studio. In the Solution Explorer, right-click on Databases node and press New Database.

Creating a new database.

Assign a name and press OK to save the database.

Configuring DotNetNuke Web Site

Start Microsoft WebMatrix. Select New | App Gallery.

Creating a new app from the App Gallery.

Select .DotNetNuke Community Edition, assign a name, and press Next.

Creating a new DotNetNuke web app.

Accept the EULA, and wait for the download to finish.

Installing DotNetNuke Community Edition.

Press OK, and the web site install wizard will launch in the default browser.

Assign a password to the host account. Under Database Information, select Custom. Enter the connection string properties for the previously created database. Make sure to specify an Object Qualifier of “DNN_”.

Specifying database information for the DotNetNuke instance.

When database installation is complete, press Visit Website to see the result in action.

Creating a DotNetNuke Factory Project

Start the web app generator, and click Create new web application. Select DotNetNuke Factory.

Creating a new DotNetNuke Factory project.

Enter a name for the project, select your preferred language, and press Create.

Specifying a name and language for the new web app.

On the next page, specify the path to the DotNetNuke installation folder, and press Next.

Specifying the DotNetNuke location.

Click on the “” button next to Connection String field. In the Sample Tables dropdown, select “Northwind” and press Install.

Installing Northwind sample database in the DotNetNuke database.

When complete, click OK. Press Next until you reach the Reporting page. Enable reporting by activating the checkbox.

Enabling reports in the web app.

Hold down Shift key, and press Next to skip to the Summary page. Press Generate, and wait for the web app to open in the test site.

Installing the Module in DNN7

Switch back to the app generator. Click on the project name, and press Publish. The generator will automatically copy files into the DNN instance specified when the project was created.

Switch back to the running DNN site. Mouse over the Host tab at the top of the page and click on Extensions.

Accessing Extensions page for DotNetNuke 7.

On the Extensions page, switch to Available Extensions tab. Scroll down to Modules section, and press Install next to the DotNetNuke Factory application module.

Installing the new DNN Factory module.

Press Next twice, accept the license, and press Next again to install the module.

Accepting the license for the module.

When installation is complete, press Return to reload the web app.

The module has been installed successfully.

Creating a Page and Adding the Module

At the top of the page, mouse over Pages and press Add New Page.

Adding a new page in DNN7.

Assign the following values:

Property Value
Page Name Customers
Page Title Customers
Insert Page After: Home

Switch to the Permissions tab, and check the box under View Page next to All Users. Press Add Page.

Allowing all users viewing rights to the page.

The browser will navigate to the new page. Mouse over Edit Page, and press Edit this Page.

Entering Edit Mode for the page.

Mouse over Modules, and press Add New Module. Drop the module named after your namespace into the contentPane area.

Dropping the module into the contentPane.

The module will be instantiated. Next, the logical application page must be selected. Mouse over the gear icon in the top right corner of the module and press Settings.

Accessing settings for the module.

Select Customers, and press Update.

Specifying a logical application page for the module.

Customers will now be displayed in the module on the page.

Northwind module is successfully displayed in DNN7.

Tuesday, March 6, 2012PrintSubscribe
User ID, User Name, and Portal ID in Business Rules

Traditional ASP.NET application can determine the identity of the user by inspecting Page.User.Identity property of the page or user control class implementation.

Code On Time applications separate the business logic implementation from the presentation. An application page defines a markup with data placeholders. Page components inject the JavaScript client library initialization instructions in the output when a page is rendered. The JavaScript code is executed by the web browser. Initialized JavaScript classes start communicating with the business rules attached to the application data controllers by executing JSON requests.

Developers can access the user identity by inspecting the Context property available in the  BusinessRules class.

Example:

namespace MyCompany.Rules
{
    public partial class SharedBusinessRules : 
MyCompany.Data.BusinessRules { public SharedBusinessRules() { string userName = Context.User.Identity.Name; } } }

User ID can be determined by inspecting the properties of classes System.Security.Principal.WindowsIdentity and System.Web.Security.Membership.

Class BusinessRules offers convenient shortcuts. Static properties UserId, UserName, and PortalId.

The following implementation of SharedBusinessRules shows the examples of accessing identity properties of the base business rules class in a DotNetNuke Factory project. The same example will work in any other project with the exception of the line inspecting the Portal ID.

C#:

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using MyCompany.DnnDemo.Data;

namespace MyCompany.DnnDemo.Rules
{
    public partial class SharedBusinessRules : 
        MyCompany.DnnDemo.Data.BusinessRules
    {
        
        public SharedBusinessRules()
        {
            object uid = UserId;
            string uname = UserName;
            int pid = PortalId;
        }
    }
}

Visual Basic:

Imports MyCompany.DnnTestVB.Data
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Linq

Namespace Rules
    
    Partial Public Class SharedBusinessRules
        Inherits MyCompany.DnnTestVB.Data.BusinessRules
        
        Public Sub New()
            Dim uid As Object = UserId
            Dim uname As String = UserName
            Dim pid As String = PortalId
        End Sub
    End Class
End Namespace

Use these properties to implement access control rules that will filter data in multi-tenant web applications.

For example, the following access control rule will be invoked whenever the UserID data field is detected in the view of any data controller.

C#:

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using MyCompany.DnnDemo.Data;

namespace MyCompany.DnnDemo.Rules
{
    public partial class SharedBusinessRules : 
        MyCompany.DnnDemo.Data.BusinessRules
    {
        [AccessControl("", "UserId", "[UserID] = @UserID")]
        public void FilterByUserUserID()
        {
            RestrictAccess("@UserID", UserId);
        }
    }
}

Visual Basic:

Imports MyCompany.DnnTestVB.Data
Imports System
Imports System.Collections.Generic
Imports System.Data
Imports System.Linq

Namespace Rules
    
    Partial Public Class SharedBusinessRules
        Inherits MyCompany.DnnTestVB.Data.BusinessRules

        <AccessControl("", "UserId", "[UserId]=@UserId")>
        Public Sub FilterByUserId()
            RestrictAccess("@UserId", UserId)
        End Sub
    End Class
End Namespace