Web App Generator

Web App Generator
Monday, December 25, 2017PrintSubscribe
Offline Data Processor, Native Apps, Code On Time v9 – Coming Soon!

The roadmap at https://codeontime.com/roadmap provides an overview, direction, and status of product development. The projected delivery dates are estimates and may change at any time.

Release 8.x.x.x Features

The major milestones in the near future are:

Offline Data Processor

The new client-side application feature in Touch UI apps will enable transactional data input. ODP is automatically engaged when DataView fields are modified. Changes begin to accumulate on the client and CRUD operations are simulated creating an illusion that data has been persisted. If the master record is saved then the entire log of server-side requests is submitted at once to the server. The server-side framework will start a database transaction, execute all requests, and commit them if there are no errors.

Offline Sync Add-On turns a an app with database backend in a fully-offline app.

ODP makes possible

  • Entering child rows without submitting the master record.
  • Creating complex wizard forms with child data view fields.
  • Building surveys with the DataView fields.
  • Confirmation controllers collecting complex parameters for business rules. Child DataView fields are accessible in business rules in JSON format.
  • “Always-offline” execution mode of apps.
  • Built-in Project Explorer configuration forms in the upcoming Code On Time v9.

ODP is expected in Release

Native Apps

Native apps for Windows 7, Window 10 (Microsoft App Store), iOS (Apple App Store), and Android (Google Play Store) will become available to run applications created with Code On Time directly on native devices without using a web browser. Native App is a collection of HTML, JavaScript, CSS files integrated with a platform-specific code, interacting with your web server via HTTP to read-write data.

We will offer pre-made native apps available in the corresponding app stores. It will also be possible to create a native branded app that developers can deploy to the app stores on their own.

Native Apps are expected in Release

Offline Sync Add-On

This is a new product that makes possible for Native Apps to run in a always-offline mode by extending ODP (Offline Data Processor) with the pre-emptive downloading of data from the server-side code deployed to a web server.

In essence you are building an app that works with a traditional database engine (SQL Server, Oracle, MySql, etc) or REST backend and turn it in a fully offline app without writing a single line of code with the help of Offline Sync Add-On,

Offline Sync Add-On is expected in Release

Release 9.x.x.x

Our  next major goal is a new development environment named Code On Time v9.

Today Code On Time is a Windows Application that combines a hierarchical Project Explorer implemented as TreeView component available natively in Windows and built-in Web Browser. Developer navigates the trees of pages and controllers to access project configuration elements loaded in the web view. There is no web server involved. All settings are loaded from the local file system of the development machine. Configuration changes are persisted back to the local file system.

Code On Time v9 drops TreeView+WebBrowser development environment and replaces it with a JavaScript implementation embedded directly into the apps.

JavaScript equivalent of the Project Explorer will activate directly from the generated app and display alongside of the live pages. The new Project Explorer will synchronize with the application as user navigates through the app and activates screens/forms. Drag & drop operations from the Project Explorer to the app will  cause the live app to change. Modal Forms will be used to change properties. A new Object Inspector will simplify learning and change the app configuration with instant live preview.

The new Project Explorer needs a backend to discover the project configuration elements and to persist project changes.

We will offer three different backends.

Code on Time v9 - a Windows application that performs many of the functions of the current Code On Time v8, but does not have any user interface. Apps created with Code On Time v9 will detect its presence on the local computer and provide end users logged in as Administrators/Developers with an access to Project Explorer if the app is running as "localhost".

This backend is an equivalent of current Code On Time and will have exactly the same pricing model available at https://codeontime.com/buy.

Cloud On Time - a hosted application running in the cloud. It will have a built-in Database Designer that will allow creating tables/views in the cloud database. Programming will be possible with SQL business rules. This hosted app is being created with Code On Time v9.

This new backend will have a subscription-based pricing and let creating apps with Unlimited Edition features without installing anything on a development machine.

Cloud On Time Private Edition - a  version of Cloud On Time that can be privately deployed on premises.

The pricing for this backend is per-core of the deployment machine.

Code On Time v9 is a single development environment with 3 different backends. Development environment of v9 integrates directly in the apps.

Friday, September 8, 2017PrintSubscribe
Announcing Cloud On Time Connector for DotNetNuke

Starting with release, apps created with any edition of Code On Time generator can be integrated with external DotNetNuke websites with the help of Cloud On Time Connector for DotNetNuke.

Cloud On Time Connector for DotNetNuke is a ready-to-deploy module that provides OAuth 2.0 endpoints for any number of external apps created with Code On Time. It also enables application data presentation/links within the portal pages. Utilize the power of Code On Time to rapidly build database applications integrated with DotNetNuke.

Users will also have the ability to “Login with DotNetNuke”, and use their existing DotNetNuke accounts in the Code On Time app.

The instructions below will use the Northwind sample and a fresh instance of DNN 9.0.2 hosted on Microsoft Azure.

Make sure to enable Content Management System for the database of your app. 

Installing Cloud On Time Connector for DotNetNuke module

The next step is to install the Cloud On Time Connector for DotNetNuke module into your DNN portal instance. Download the latest release of the module from the Releases page.

Using your preferred browser, navigate to your DNN portal and sign in with a SuperUser account.

Logging into DotNetNuke with a SuperUser  account.

In the sidebar, hover over the gear icon and press “Extensions”.

Opening extensions panel.

At the top of the Extensions panel, press “Install Extension”.

Installing a new extension.

Upload the zip file containing the Cloud On Time Connector for DotNetNuke module.

Uploading the extension.

Press “Next” to confirm the package information, and press “Next” again to confirm reviewing the release notes. Accept the license, and press “Next” one more time to begin installation.

Accepting the extension license.

Once installation is complete, the installation report will be displayed.

The package installed successfully.

The module is now installed in your DotNetNuke instance.  Note that the website will restart, which may cause some delay immediately after installation.

Configuring Authentication Endpoint

Cloud On Time Connector for DotNetNuke can integrate any number of external applications into your DotNetNuke portal. An endpoint page with an instance of the module will need to be created in the portal for each integrated application. The developer must configure the Code On Time app and the module instance on the portal page with matching parameters to enable communications over OAuth 2.0 protocol.

First, let’s create a publicly-accessible endpoint page.  Under the “Content” icon in the sidebar, select the “Pages” option.

Opening the Pages panel.

In the top right corner of the Pages panel, press “Add Page”.

Adding a new page.

Specify the following properties:

Property Value
Name end-point-app1
URL /end-point-app1
Display In Menu Off

The name and URL provided above are for demonstration purposes only. You can choose any name and URL that you like.

Under the Permissions tab, check the box to allow all users to view tab. This will enable both anonymous and authenticated users to access the page.

Allowing all users to view the tab.

Press “Add Page”. On the next screen, drag the page to the end of the page list.

Positiong the page in the menu.

The browser will then redirect to the page in edit mode. In the bottom-left corner, press the “Add Module” button.

Adding a module to the page.

From the Add Module screen, click on “Cloud On Time Connector”.

Adding the "Cloud On Time Connector" module.

Drag the floating module and drop on the first dashed placeholder in the end-point-app1 page.

Dropping the module into the first placeholder.

Mouse over the top right corner of the module instance on the page to reveal the control bar.  Mouse over the gear icon, and press “Settings” in the hover menu.

Opening the settings for the module.

Switch to the “Configuration” tab. Use the following settings:

Property Value Explanation
Mode Authentication Endpoint This module instance will serve to authenticate users and offer an endpoint for the Code On Time app.
Client ID app1 The unique identifier for your Code On Time app.
App URL [Your app URL] The location that your application is accessible from.
example: https://cotapp1.azurewebsites.net
Client Secret [randomly generated] A secret value used for server-to-server communications.
example: 4eba319ad0fe41c9b1f02ae69b7466f2
Allowed Tokens Portal:PortalName User:DisplayName A comma- or space-separated list of DNN tokens that will be passed to the app created with Code On Time at the time of user login. Optional.

When configuration is complete, press “Update” to save your changes. Now the module instance on the page end-point-app1 has been configured to accept authentication connections.

We will need to configure the app created with Code On Time to request authentication connections to the DotNetNuke portal.

Navigate to your app, login as admin, and switch to the Site Content page. Press the Plus icon to create a new record.

Adding a new Site Content record.

Select “Open Authentication Registration”, and press OK.

Creating a new Open Authentication Registration.

Configure the following:

Property Value
Authentication DotNetNuke
Client Id app1
Client Secret [randomly generated secret from the module settings]
Client Uri [Your DNN portal URL]/end-point-app1
Redirect Uri [Public URL of your app]/appservices/saas/dnn
Tokens Portal:PortalName User:DisplayName

Your configuration should look like the one below:

Open Authentication registration form has been filled out.

Press the checkmark icon to save the new record. Your app is now configured for authentication connections with DotNetNuke portal.

To test the connection, log out of your app.

Logging out of the app.

Once logged out, your app will show the login form. Notice that a new action “LOGIN WITH DOTNETNUKE” is now available.

Login with DotNetNuke is now visible on the login form.

Push the new action, and you will be navigated to your DotNetNuke portal. If you are not signed into your portal, the login page will be displayed.

Redirected to the DNN login page.

After user has logged in, the login page will redirect to the authentication endpoint. If there are no issues with the configuration, the portal and app will communicate over OAuth2.0 protocol. A user account will be created in the app membership database with the DotNetNuke username, email, roles, picture, and random password. If tokens were requested in the configuration of the app, then the values will be captured by the application.

The DotNetNuke user has been signed in.

If the Account Manager is enabled in the application, subsequent logins will not authenticate with DotNetNuke portal again until the user logs out. You can add “Auto Login: true” parameter to the sys/saas/dnn entry in the SiteContent table to automatically redirect unauthenticated users to DotNetNuke.

If you have developed multiple applications, then create additional authentication endpoint pages following the instructions above for each app. Note that your apps can be deployed anywhere and do not need to physically reside on the same server as the DotNetNuke portal.

Data Presentation in DNN Portal

The Cloud On Time Connector for DotNetNuke module also allows displaying data from your application directly in the portal pages.

Navigate to your DotNetNuke portal with the configured application endpoint as a SuperUser account.

Hover over the Content icon on the sidebar, and press “Pages”.

Opening the Pages panel.

In the top right corner of the Pages panel, press “Add Page”.

Adding a new page to the DNN portal.

Specify the following properties:

Property Value
Name Products
URL /products

Switch to the Permissions tab, and check the box to allow registered users to view tab.

Allowing registered users to access the tab.

Press “Add Page”. On the next screen, drag to place the new page after the Home page.

Positioning the Products page.

You will be navigated to the new Products page. In the bottom left corner, press “Add Module”.

Adding a module to the page.

Select the “Cloud On Time Connector” module from the list.

Adding the Cloud On Time Connector module.

Drag the floating module and drop on the first dashed area in the page.

Dropping the module onto the page.

Hover over the gear icon above the module, and press “Settings”.

Opening the settings for the module.

Switch to the Configuration tab. If the authentication endpoint has already been configured, then the Mode property of this module instance will be set to “Data Presentation”. Enter the following:

Property Value
Mode Data Presentation
App App1 ([your URL])
Page URL ~/pages/products
Height 600px
Show Navigation false

Press “Update” to save your changes. Proceed to refresh the page. The module will now display a grid of products.

A grid of products is now displayed within the DotNetNuke portal

Accessing User Tokens

If tokens were configured for both sys/saas/dnn entry and the authentication endpoint of DotNetNuke portal, then the values can be used in the implementation of business rules in the application. For example, token “User:DisplayName” can be accessed by the following sample code:


set @Result_ShowAlert = 'Hello ' + @Profile_User_DisplayName


Result.ShowAlert("Hello " + Convert.ToString(GetProperty("Profile_User_DisplayName")));

Visual Basic:

Result.ShowAlert("Hello " & Convert.ToString(GetProperty("Profile_User_DisplayName")))
Saturday, September 2, 2017PrintSubscribe
CMS (Site Content) Configuration

Applications created with Code On Time may be configured to have a built-in CMS (Content Management System). The purpose of the CMS is to store runtime configuration of an application, which can include:

  • Dynamic HTML pages
  • Images
  • Documents
  • Scripts
  • Dynamic Access Control Rules
  • Data Controller Customization
  • Sitemaps
  • OAuth registrations
  • Workflow registrations
  • Etc…

The CMS data requires a database table called SiteContent (or SITE_CONTENT, site_content). Application generator provides a built-in facility to install the required table in the project database. Follow the instructions below to install the CMS into new or existing projects.

On the home page of the app generator, click on the project name. Select “Settings”, then press “Database Connection”. Tap the “…” button next to the Connection String input.

Opening the connection string settings.,

Under “Membership” section, press the “Add” button.

Adding membership.

Under the “Content Management System”,  press the “Add” button.

Adding the Content Management System tables.

Confirm the installation to add the required table to your database. Once complete, press “OK” to save the connection string, and press “Finish” to skip to the “Summary” page.

It is necessary to refresh the project to ensure the new pages and controllers are present. Press “Refresh”, and confirm.

Refreshing the project.

Upon completion, proceed to regenerate the app. A new page called “Site Content” will now be available to the admin account or any other user with the role “Administrators”.

Site Content page is now available to administrators.