DotNetNuke

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(8) OAuth Scopes(1) OAuth2(11) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(10) PKCE(2) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(179) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(80) 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
DotNetNuke
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

Tuesday, October 18, 2011PrintSubscribe
DotNetNuke Factory with DNN 5.6.3

DotNetNuke Factory has been designed for use with the latest version of DotNetNuke, 6.0.2 (you can find the instructions for 6.0.2 here). This article will guide you through the steps to deploy to the previous version, DotNetNuke 5.6.3.

Installing DotNetNuke 5.6.3

First things first – let’s download DotNetNuke 5.6.3. We used the New Install download from CodePlex at http://dotnetnuke.codeplex.com/releases/view/67841. Save the zip file on your computer.

image

Once the download is complete, you will need to extract the files within the zip folder. We suggest extracting to [My Documents]/My Web Sites/MyDNN563.

image

Wait until all files are extracted, then run Microsoft’s WebMatrix. Press Site From Folder, and select the “MyDNN563” folder.

image

The website will be loaded into WebMatrix. On the ribbon, press Run to start the website. The DotNetNuke Installation Wizard will start.

image

Select “Typical Installation Method” and press Next. Confirm that your site will pass the permissions check and continue.

The next screen requires you to configure your database connection. Make sure to enter the correct settings for an existing database, and enter an object qualifier of “DNN” so that DotNetNuke’s tables will not encroach on your own.

image

Press Next to start database installation. Wait until completion, and press Next. You will have to configure the Host and Admin accounts. We will be using “host123%” and “admin123%” default passwords.

When you finish account creation, the DotNetNuke website will load.

image

Creating a DotNetNuke Factory Project

Let’s create a DotNetNuke Factory project for this website. Run Code On Time Generator, and create a new project, of type DotNetNuke Factory.

image

Give the project a name of “MyDNNFactory” and press Create.

image

On the next page, you will need to specify the path to the DotNetNuke website. Use the “…” button to browse for the folder, and select the “MyDNN563” folder.

image

Click Next and you will arrive to the Database Connection page.

Typically, your application will share the database with DotNetNuke, particularly if you plan to sell or distribute your module to other owners of DotNetNuke portals. If this is your situation, leave “Use connection string of the host application” box checked.

You can also use DotNetNuke as a powerful front end for the Internet facing portion of your web site and build an application with other types of backend database servers such Oracle and MySQL. If this is the case then make sure to uncheck “Use connection string of the host application” box and configure your database connection.

image

If you are creating your first app in a blank SQL Server database then we suggest populating this database with content. Click the “…” button next to Connection String field. Select the Northwind sample tables, and press Install. Press Yes to confirm installation.

image

Press OK twice to go back to the Wizard, and continue to the next page. Enable reporting in the application and press Next. In the list box, switch to Package Properties. These are the settings for the DotNetNuke module. Change Friendly Name to “My DNN Module”.

image

Continue pressing Next, then Generate, and wait for the generated web application to load in your browser.

Preview Web App

You will see a login screen – enter the credentials you specified during installation of DotNetNuke.

image

The next page will require you to select a logical page to display. Click on a page and press Update.

image

The page will be loaded in your browser.

image

The pages in the screen shots above are not a part of DotNetNuke portal. These pages simulate a hosting environment for your application. Your application “lives” in the Preview area of the main page of the host application.

This test web app is useful for making changes to the application and quickly previewing. You can log out and try different identities and configure the host page to present different logical pages of your applications.

Publishing DotNetNuke Factory Project

Now it’s time to publish the application to the DotNetNuke portal. Bring up Code On Time generator and select the publish action next to your project.

image

The resource file used to distribute DotNetNuke modules is created for your application and presented in Windows Explorer folder window. You can use this file to install your application in a different portal. The code generator will also copy this resource into the installation folder of the previously specified DotNetNuke instance.

We can now continue installation from within our own DotNetNuke portal.

Installing the Module

Bring up the browser window with DotNetNuke portal. If you have lost the window then start the application again using WebMatrix. Login as host/host123%. Only host users are allowed to install new modules and other types of extensions. Click on the Host link at the top of the portal page, and press Extensions under Basic Features.

image

Scroll to the bottom of the page and select “Install Available Extensions”. Select the “MyCompany.MyDNNFactory” package file, and press Install Selected Extensions.

image

Go back to the Home page. Let’s create a new page using the toolbar at the top of the page. Give it the name of “Northwind”, and insert after Home.

image

Press Add Page, and the page will appear on the menu bar. It will have one module, called Enter Title. Press Edit Module, scroll down, and press Delete. The page will now appear blank. Now let’s add our Northwind module using the Insert Module section at the top of the page. The Title will be “Northwind” and the Module will be “My DNN Module”.

image

A Northwind module will appear, but will tell you that a logical application page has not been selected. Press the Edit button in the bottom right corner of the module. Uncheck “Inherit View permissions from Page”, and allow registered users to view the module. Scroll to the bottom, and select a logical page.

image

Press Update, and you will see a page similar to the one shown below.

image

Tuesday, October 11, 2011PrintSubscribe
DotNetNuke Factory, Oracle Data Provider, Wizards

Code On Time has released a new update 5.0.0.72 with major features and enhancements.

Please see update notes below:

  • New code generation project DotNetNuke Factory creates application pages as controls with data views incorporated in a DotNetNuke module. Registered module can be configured by end users. You can integrate a line-of-business database application with a popular open source web content management system in minutes.
     
  • Added support for native Oracle.DataAccess client with full support for sequences on primary key fields. Primary key fields of integer type are expected to have sequences named after the name of the tables. For example , “CUSTOMER_SEQ” sequence is expected to match “CUSTOMER” table.
     
  • Projects generated from Oracle databases now recognize database views.
      Introduced "client-only" virtual Status field to support wizards. Support for new Status and None actions to allow easy implementation of Wizards. The tutorial will be available shortly.
     
  • Ajax Control Toolkit 50731 is now shipping with the code generation library.
        
  • RichEditor has been changed to support new HtmlEditorBehavior from Ajax Control Toolkit. Read more about the new rich text editor at http://stephenwalther.com/blog/archive/2011/08/01/ajax-control-toolkit-july-2011-release-and-the-new-html.aspx.
      
  • Action buttons displayed in forms are now automatically refreshed when data is changed.
    WhenClientScript property of actions can now reference values of fields by enclosing the field name in square brackets. For example [Status]. The same capability already exists in visibility expressions for categories and fields.
     
  • Numerous improvements to the message bar (yellow message at the top of the screen). It now takes up to 15% of the window height and starts scrolling when needed.
     
  • Sidebar boxes are fixed at the top of the screen if there in no horizontal scrolling.
     
  • Automatic resizing in multi-column forms is not performed anymore.
     
  • Adding a data field to a category will remove any bindings of the field that may exist in other categories of a view.
      
  • Designer automatically transfers properties of existing data fields when a field is defined in a new category or view.
     
  • Field validators are now using IDs to identify expressions in Project Designer.
     
  • Data Field visibility rules are now using IDs to identify visibility expressions in Project Designer.
      
  • Category visibility rules are now using IDs instead of header text as primary key. Category description is not mandatory in  the new release. Any characters can be used in the category header text.
     
  • Bread crumbs of many project items in Designer now include extended information.
     
  • Filters and sort order are restored in the grid/data sheet view if you select a record and then return back.
     
  • Filtering is automatically disabled on timestamp fields to prevent errors when users do Quick Find or try to apply a filter.
     
  • Presence of "onDemand" attribute was causing incorrect production of automatic reports. The issue has been resolved.
      
  • Fields with explicitly defined value/text items will correctly render on the search bar. Text of items is displayed instead of actual values.
     
  • If a field has explicitly defined value/text item pairs then the multiple-value filter will correctly display the values. The field will also correctly align as text (to the left) and will print in filter details.
      
  • Reports will print correctly item text when item value/text pairs are explicitly defined on a field level (0-Open, 1-Closed, 2-Pending). This applies only to .NET 4.0 projects.
     
  • Regex validators are invoked when a field value has changed.
     
  • Data access objects based on tables that have a primary key field name matching the table name will not result in compilation error.
     
  • New implementation of DataController.UserIsInRole takes an array of roles. Each value can be specified as a comma-separated list of roles or simple role name.
      
  • Fixed designer error "Can't execute code from a freed script".
     
  • Trimming of long words used in summary boxes has been improved to correctly process HTML tags, which was previously causing incorrect display of history.
     
  • Designer displays Up/Down options on field Items page.
     
  • Values of fields with "Format On Client" set to "False" will print correctly in reports.
     
  • Long standing problem with UTF-8 encoding not being applied generated filed has been resolved.
      
  • "_Mirror" fields supporting server side formatting have been improved to allow editing of field values.
     
  • Hidden primary keys are rendered as "hidden" inputs in insert mode.
     
  • Multiple value selection is passed correctly when action is executed from a modal form.
    Hidden, static, and read-only fields are now passed as "read-only" to updates performed in response to Batch Edit commands. This ensures that there will no exception "Object not found" with "audit" fields processing (ModifiedOn, ModifiedBy).
     
  • Generated *.designer.vb files are now using WithEvents in declarations of control fields.
     
  • .NET 3.5 web apps will display rounded corners in modal views.
     
  • Implemented Web.DataView.goBack() method in the client library to suppress cancelled requests to retrieve the child data sets when data controller URL parameters are used on complex master/detail pages.
     
  • Aliased fields are correctly displayed on automatic search bar if the field's Search Mode property is set to Required or Suggested.
       
  • Exception "Key not present in dictionary" now displays the name of the field that is no longer available in the data controller but referenced in its definition.
        
  • Code generator project file now supports “zip” mode when executing “copy” instruction.
     
  • Universal ProviderFactories variable lists all DB and Membership providers registered in machine.config of standard and 64-bit Microsoft.NET. ProviderFactories variable is now used to configure references to required external assemblies in web.config.
     
  • Button “Next” on the data controller summary now reads “Generate”.
Continue to DotNetNuke Factory