Web Application Framework

AlphaToGo Framework V4 Release 2 (February 1, 2017)



Overview

Designed to run on Alpha Anywhere (v12). The AlphaToGo Web Application Framework is the foundation for a properly built and secure Alpha Anywhere web application. Completely integrated with Security Framework, install and setup in ten minutes. Public pages are responsive, and it comes with modules for Content, SEO, Images, Users, Banner, Registration and many other tools designed to get your application online quickly, and look attractive.

Feature Summary

  • 100% Customizable. You can alter how the Framework works.
  • 100% Responsive web pages and navigation
  • Web Page layout using modern using the 996px Grid CSS system
  • All public components refined to work on Mobile
  • "Complete" Online Website Administration Module
    • User Management (video)
    • My Account (video)
    • Content Management (video)
    • Contact Us Management (video)
    • Navigation Management (video 1 and video 2)
    • Plugin Management (video) (Removed as of release 4.2)
    • Image Manager (video)
    • Banner/Slideshow (video)
      (Removed as of release 4.2 and managed as separate product, click here for demo)
    • Email Template Management (see User Management video)
    • CSS "theme" Management (video)
    • Page Template Management (video)
    • SEO Options (video)
    • Integrated with Security Framework
    • The "Copy Alpha Project" batch utility (video)
    • Various System Features and Utilities

What's New

Navigation

  • Our custom responsive navigation now allow for menu nodes to be "hidden when logged in" - when the user logs in, menu node will be hidden. This is a commonly requested option, that is not available in the built-in Alpha navigation.
  • Added option for "named menus" which allows developer to add multiple navigation menus to the application, even on the same web page. Now, the developer can have a different navigation menu on the Home page, and the Products page (as an example).

Banner (Slide show)

  • The Banner has been completely revised from the ground up. To make it easier to manage and develop, the Banner has been formally removed from the Framework and now supported as a separate product. It is easy to add the Banner to the Framework or to any existing or new Alpha project.

Email

  • Removed the "email queue" and replaced with options to use SMTP, SparkPost or Mandrill (3rd party email processors) to send email. This allows email to be sent immediately from the application. The email queue also required a separate CRON function to fire every few minutes; this has been removed as well.
  • Added an "email log" that keeps a record of every email that is sent from the application.
  • Totally abandoned using Alpha's built-in "Email Profile". This is an antiquated system that requires maintaining a setting directly on the Alpha web server.
  • Changed all outgoing emails to use more attractive HTML. Previously, many of the outgoing emails used plain text.

Security

  • Abandoned reliance on Alpha's outdated model for "password recovery" (which sends the password directly to the user). Now, the Framework goes around Alpha's model and uses a modern custom security model to 'reset' the password using gold standard "double opt-in" and a password reset link that is only valid for 60 minutes.
  • Provided option to use a "value" for the UserID; previously the Framework only allowed an "email address" as the UserID to login.

Clean up

  • Every component and web page has had minor updates to make them more efficient.
  • Several redundant and unused features were removed.
  • Updated any reference to JQuery or other 3rd party library to the currently available version.
  • Removed the need for a CRON scheduling process.

Help Document

  • Completely updated online Help Document to match this Framework update. Included new instructions for both managing the website and also custom modifications to CSS and formatting.

Details

Security Features

  • Fully integrated with Alpha Anywhere Security Framework.
  • Advanced, state-of-art Password Recovery method.
  • Properly isolates logged-in users so users do not have access to other user's data.
  • Provides hooks in to logged-in user credentials so you can filter records by User, Company, etc., display logged-in user's name, etc.)
  • Superior User Management Module -- the best model available for any Alpha application.

Public Pages

  • Home
  • About Us
  • Contact Us
  • Register
  • Login
  • Sitemap
  • Message Page

Logged in Public Pages

  • MyAccount / User Profile
  • MyAccount / UserID change (Facebook/LinkedIn style)

User Management

  • Double Opt-In User Registration (user must confirm via email)
  • Integrated Terms and Conditions and Privacy Policy
  • My Account: user can manage their own Profile
  • Facebook/LinkedIn style "My Account" User Management
  • Send email to individual users, or by groups
  • Import users from comma-separated file
  • Multi-tenant (Company ?Employee, etc)

Website Configuration

  • Application-level mail merge fields (contact info, support info, etc.)
  • CSS Themes
  • Toggle website Offline/Online/Admin Only
  • Optional "back door" access
  • Toggle on/off Debug Information
  • Show / hide "Login" and "Sign-Up" links
  • Define the default Security Framework Sign-up group.
  • Hide/show website logo. Upload logo image, select filename.
  • Define "ticker" message, appears at top of web site.
  • Define alternate header image for non-Home page.
  • Define additional HTML/Javascript for the Head or Body area.
  • Define HTML for header/footer of TabbedUI
  • Define META tags (keywords, description, etc.)
  • Store alternate SMTP parameters
  • Email Queue setup

Image Manager

  • Upload and manage images.
  • Auto generation of thumbnail images.

Session Variable Management

  • Define session variable to be set either always or upon login.

Web Page Plugin Management

  • Setup plugins like Facebook Login, social media icons, etc.
  • Automatically places HTML and Javascript in Head or Body area as needed.
  • Can toggle plugin on or off.

Contact Management

  • Collect visitor comments online.
  • Comments are emailed and stored in table, view online.

Message Management

  • Set optional messages for display anywhere on the website. These are separate from Content Management.

Content Management

  • Fully integrate database content in to web pages, TabbedUI, and components.
  • Define content using advanced CKEditor HTML editor.
  • Most content does not require tweaking, but can fully set CSS such as width, overflow, float, etc.
  • Can categorize content so it appears in "groups" on web page.
  • Define the separator for grouped content.
  • Can set the date-interval for content (content only appears between dates).

Menu Management

  • Define the responsive main navigation online including style, target, URL, etc.

Email Template Management

  • Create Email Templates for various uses in system.
  • Template includes Plain Text and HTML email content.
  • Includes ability to use "mail merge" fields
  • For each template, can opt to use Alpha email "profile" or SMTP.

Page Configuration Management

  • Set Page Title online.
  • Set alternate header image per page.
  • Set META tags per page (keywords, description).
  • Define Breadcrumbs.

SEO Management

  • Generate sitemap.xml, txt and html for site and to send to search engines.
  • Set SEO features on a website and per page basis.

System Information

  • Review Alpha logs online.
  • Review robots.txt and sitemap.xml online.
  • Review full server info online.
  • Review Alpha Report Server information online.
  • Review current and previous email queue information online.
  • Basic information tables for Countries, State

Support

Free Support

  • Free: User's Forum (click here)
  • Free: Online Help (click here)
  • Framework "In Depth" Newsletter - how to use the Framework, etc.

Support Contract

  • Attend monthly discussion groups to discuss anything related to the Framework.
  • Guaranteed response from AlphaToGo regarding your application needs.
  • Free Framework upgrades

Release Notes for Framework Version 4.2 - Released February 2017

Build 4.2.0005

  • Focus: Replace "grid system" with Twitter Bootstrap CSS.
  • Database: NO database changes in this build
  1. Removed code form wt_inc_header_head.a5w used by 996grid: 

    <!-- CSS by Responsive 996px grid system. -->
    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="css/base.css">
    <link rel="stylesheet" href="css/grid.css">

  2. Updated Framework.css, removed "font-size:.8em" from #topbar.
  3. Noted that the new Bootstrap CSS makes the webpage 1170px wide. Previous was 996px.
  4. Updated the following A5W pages with the proper syntax for Bootstrap for the "grid system": about, index, contact, login, myaccount, message, privacypolicy, register, sitemap, termsofuse, unauthorized, wt_offline, wt_pasword_request, wt_password_reset, wt_users_import.
  5. Added one line in wt_inc_header_head.a5w to reference new bootstrap.css:

    <!-- Bootstrap -->
        <link href="css/bootstrap.css" rel="stylesheet">
    <!-- end bootstrap -->

  6. Added 'bootstrap.css' under the project CSS folder. (If you ever re-download this from the getbootstrap.com website, be sure to go to "Custom" and include every option and download the css file.)
  7. Generally removed special html code on all A5W pages under the tag. This is not a mandatory change:

    <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
    <!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
    <!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
  8. Removed two settings from framework_main_nav.css:

    From: #menu ul li a font-size: 15px; font-size: 0.9375rem;
    From: #menu ul li.submenu ul li a font-size: 0.8125rem;
     

Build 4.2.0004

  1. Altered user defined function wt_logoimage() to add parameter to set the ALT tag in the function call. This function pulls values from table wt_setup to place the logo typically in the upper left part of the website. Usage example: wt_logoimage(request,"my alt tag"). The word 'request' is required as the first parameter.
  2. Minor modification to the wt_content component. Removed a bogus filter set in the SQL Query option. Would not have affected most users.
  3. Added field email_address to table wt_users on the Microsoft SQL database only (was already present on the MySQL database schema)

Build 4.2.0003

Regarding Meta_Description and Meta_Keywords. 

  1. Changed table wt_pages.meta_keywords to varchar(255)
  2. Changed table wt_pages.meta_title to varchar(255)
  3. Updated Alpha component wt_pages to include code to limit TextAreas meta_keywords, meta_description and meta_title to 255 characters, while also displaying the suggested max per SEO protocol.
  4. Altered these lines in inc_header_head.a5w (lines 18-19 in original) to read as follows. You should also then blank out any values in table wt_setup for meta_keywords and meta_description. The reason for this is that per SEO protocol, meta keywords and meta description should be different on each page. Instead of setting description and keywords on wt_setup, use the same settings in wt_pages instead. Change line ~18 to ?"<meta name=\"keywords\" content=\"" + wt_page("Meta_keywords")+"\">" + crlf() and line ~19 to ?"<meta name=\"description\" content=\"" + wt_page("Meta_description")+"\">" + crlf().
  5. We depricated (but did not remove) meta keywords and meta description on the Alpha component wt_setup and suggest using the same fields in Alpha component wt_page instead.
  6. Depreicated (but did not remove) the fields meta_description and meta_keywords from table wt_setup.
  7. Added the following script to the Alpha component wt_admin (a tabbedUI) in the "user-defined 'head' content". This script allows TextAreas to be limited on charactor length and notify remaining characters. In this update, we are using this script on the wt_pages component on the meta_description, meta_keyword and meta_title fields.
<script type="text/javascript">
function textCounter(textarea, counterID, maxLen)
{
 cnt = document.getElementById(counterID);
 if (textarea.value.length > maxLen)
 {
  textarea.value = textarea.value.substring(0,maxLen);
 }
var remaining = maxLen - textarea.value.length;
cnt.innerHTML = textarea.value.length + '/' + remaining;
}
</script>

Build 4.2.0001

Major Updates Summary

Navigation
  1. Our custom responsive navigation now allow for menu nodes to be "hidden when logged in" - when the user logs in, menu node will be hidden. This is a commonly requested option, that is not available in the built-in Alpha navigation.
  2. Added option for "named menus" which allows developer to add multiple navigation menus to the application, even on the same web page. Now, the developer can have a different navigation menu on the Home page, and the Products page (as an example).
Banner (Slide show)
  1. The Banner has been completely revised from the ground up. To make it easier to manage and develop, the Banner has been formally removed from the Framework and now supported as a separate product. It is easy to add the Banner to the Framework or to any existing or new Alpha project.
Email
  1. Removed the "email queue" and replaced with options to use SMTP, SparkPost or Mandrill (3rd party email processors) to send email. This allows email to be sent immediately from the application. The email queue also required a separate CRON function to fire every few minutes; this has been removed as well.
  2. Added an "email log" that keeps a record of every email that is sent from the application.
  3. Totally abandoned using Alpha's built-in "Email Profile". This is an antiquated system that requires maintaining a setting directly on the Alpha web server.
  4. Changed all outgoing emails to use more attractive HTML. Previously, many of the ougoing emails used plain text.
Security
  1. Abandoned reliance on Alpha's outdated model for "password recovery" (which sends the password directly to the user). Now, the Framework goes around Alpha's model and uses a modern custom security model to 'reset' the password using gold standard "double opt-in" and a password reset link that is only valid for 60 minutes.
  2. Provided option to use a "value" for the UserID; previously the Framework only allowed an "email address" as the UserID to login.
Clean up
  1. Every component and web page has had minor updates to make them more effecient.
  2. Several redundant and unused features were removed.
  3. Updated any reference to JQuery or other 3rd party library to the currently available version.
  4. Removed the need for a CRON scheduling process.
Help Document
  1. Completely updated online Help Document to match this Framework update. Included new instructions for both managing the website and also custom modifications to CSS and formatting.

Alpha setting changes

--> Go to Web Security > Security Settings > Data Recovery Options tab. Set the Lost Password Actions to "Not Allowed".

Detailed Programmer Notes

  1. Updated WT4.AEX to version 4.2. This is a compiled library of functions used in the Framework.
Framework Main Navigation
  1. Updated Main Menu to allow Hide_on_login.
  2. Updated table wt_main_nav, add field hide_on_login, MYSQL: TINYINT(1) Default 0, MSSQL: BIT(1) default 0. 
  3. updated Alpha wt_main_nav component to include Hide on Login checkbox.
  4. Updated to allow 'named menus'. This allows developers to add _different_ menus either on separate pages or on the same page. 
  5. Updated table wt_main_nav, added field menu_name as VARCHAR(20),allow NULLS, default NULL.
  6. Updated Alpha wt_main_nav component to include optional value for Menu Name.
  7. Removed field "node_color" from wt_main_nav table and updated grid component wt_main_nav to remove this column as well. Node_color was not being used at all and so removal has no effect on app. The appropriate way to set menu node color is with the node_css field, such as "color:red".
  8. On Main Nav change the "target" field to allow custom value along with standard options.
  9. On Main Nav component, added important instructions regarding "submenus".
Completely removed the Banner, now provided as separate product.
  1. Remove component wt_banner_main
  2. Remove component wt_banner_images
  3. Remove component wt_banner_main_defaults
  4. Remove table wt_banner_main
  5. Remove table wt_banner_images
  6. Remove table wt_banner_main_defaults
Email related
  1. Removed the "SMTP Servers" module. This was a list of smtp servers but it was not being used in the Framework. The Framework gets its SMTP setting from the wt_setup component/table. This removed wt_smtp_servers component and the wt_smtp_servers table.
  2. Completely abandoned using the "Alpha Email Profile", and using the settings for SMTP in wt_setup instead. The Email Profile is the one set in the Alpha Web Server Config. This required changing xbasic in the following components:
  3. Added fields to wt_setup (component and table) to store control for 3rd party Email hosting.
  4. Changed Email Method found in Website Configuration (Alpha component: wt_setup. Uses the SMTP settings in wt_setup to send the email immediately from your application. Post will send the email to a 3rd party Email server such as Sparkpost or Mandrill. The settings for "Post" are in wt_setup.
  5. The Emal Queue was removed and replaced with an Email Log. The difference is that the log recieves records based on emails sent, whereas the log was a temporary storage location for the email to be processed. Now the emails go either immediately via SMTP or are posted to a 3rd party email processor like SparkPost or Mandrill. When emails are posted the 3rd party becomes the "queue" and you can check on status at that location. In a future update, those 3rd party email processors will also directly update the Email Log with status.
  6. Removed field "profile" from table "wt_email".
  7. Removed field "AlphaProfile from component wt_email.
  8. Added Email Log to the Admin menu, under Reports and Logs
  9. Removed Email Queue from the Admin menu.
  10. Removed the entire wt_email_queue component.
  11. Removed ability to set SMTP FROM and ALIAS at the email template level. Removed fields smtp_from_alias and smtp_from from the wt_email table. Removed same from the wt_email component.
  12. Converted the Registration emails from plain text to HTML.
  13. On wt_email component, made html_body front and center, put body (plain text) in the background.
  14. Removed file wt_run_email_queue.a5w
  15. Updates to everywhere that email is sent to give options for SMTP, Mandrill and SparkPost.
General Clean Up and Misc
  1. Updated several components to add a "cancel" button so user could back out of edits if desired. Components: wt_sys_country, contact_log, wt_images_groups, wt_css_boxes, wt_contentcat, wt_variables, wt_main_nav, wt_setup.
  2. Updated link to jQuery for the "slicknav" navigation reference in wt_inc_footer_body.a5w to 3.1.1.
  3. Added a line in wt_inc_footer_body.a5w in the slicknav script to help remedy a conflict with the CAPTCHA on the Contact Us page. Added: $.noConflict();
  4. Removed the CRON completely from the application download.
  5. Minor change to ContactUs form to make it more streamlined.
  6. Removed the entire "PlugIns" module. This was not working and was causing browser problems. This removed the "AddThis" feature which users can add back on their own. This removed wt_plugins table, wt_plugins component and minor edits to wt_inc_header_head.a5w and wt_inc_footer_body.a5w. Removed Plugins from the Admin menu.
  7. Changed wt_variables to only allow session variables of type C (Alpha Anywhere does not allow session vars other than type C).
  8. Changed table "contact" to "wt_contact_log".
  9. Toggled several modules to be initially "off". This is to improve performance where these modules are not needed.
Secuirity Related
  1. Minor format change on login component, password recovery page.
  2. Replace the Alpha stock "Recover Password" with Framework method. wt_password_request.a5w and wt_password_reset.a5w
  3. Add link to Framework "password recovery" to Alpha Login component. Remove stock Alpha Passsord Recovery.
  4. Rewrite wt_password_request component to use smtp, sparkpost or Mandrill.
  5. Abilty to use either an email or a 'value' for the Userid. Set in wt_variables.
  6. Updatd the little-used AccessCtrl component from a legacy dialog to a new UX.
Note only - modules toggled off initailly:
  1. headerimage() in wt_inc_header_body
  2. wt_breadcrumbs() in wt_inc_header_body
  3. include wt_inc_takeoffline.a5w in wt_header_head
 
Help Document Notes
  1. Completly revised for this update
-------------------------------------------------------------------------------------------------------------------------

Release Notes for Framework Version 4.0 - Initial Release February 2016

Build 4.0.001 (only build released)

  1. fix show smtp password, add "1" to function
  2. var pwd = WT_CONTENT_GridObj.getValue('G','SMTP_PWD',1);
  3. alert('Password: ' + pwd);
  4. Update wt4.aex for wt_menu()
  5. Removed unused table smtp_servers
  6. Removed all CRON features (do not belong in Framework. Should be separate item)
-------------------------------------------------------------------------------------------------------------------------

Release Notes for Framework Version 3 - Released December 2014
Build 3.0.003

  1. Minor update to wt_user and wt_user_sec to ensure Admin user can reset (abandon) changes.

Build 3.0.002

  1. Update to WT4.AEX to fix problem for MSSQL users on the Main Menu after logging in.

Build 3.0.001


Bug Fixes

  1. Fixed issue with Country dropdown control choices on wt_myAccount component. Correct SQL statement is: SELECT DISTINCT COUNTRY, COUNTRY_CODE,SORTORDER FROM wt_sys_country  WHERE OMIT <> 1  ORDER BY SORTORDER DESC,COUNTRY_CODE
  2. Modified how wt_myaccount component works to save change to UserID.
  3. Fixed issue with wt_plugins component. Removed "feature_code" field from the Detail section.
  4. Fixed issue with wt_inc_header_body.a5w page. Removed line 23. Line 23 (may be different if you altered this page) reads: ?wt_plugins("feature","sharethis")
  5. Fixed issue with password change not working when users attempted to change their password on the MyAccount page (using the wt_myaccount component). This was not affecting all users but the fix can be applied to all. You need to alter the wt_users table and make the USERID the Primary Key, and demote the GUID to a normal field. You should then appy an index to the GUID making it a unique index. Then in the wt_myaccount component, go to Data Binding, then select "Bind the Controls to your UX Fields...", then select Specifiy Tables. Change the Primary Key field from GUID to Userid.
  6. Ensured no problem with wt_setup SQL table. One user reported problem and turned out the wt_setup.tid field was defined as a BIT field type. This field must be a Tinyint(2) for MYSQL or SmallInt field type in MSSQL. This problem only appeared on one client Microsoft SQL database.
  7. Refreshed the default Alpha CSS file that comes with the Framework (grGray) and ensured the CSS is Alpha's "out-of-the-box" style wtih no alteration.
  8. Minor change to wt_main_nav component (rearranged columns for clarity.)
  9. Changed how Alpha's Login so that it offers to Recover Lost Password. Previously the Login component allowed the user to Reset Password, this option was removed. Change to how Login works are made in Alpha's Security Configuration.
  10. Changed the Alpha Security Configuration (for Login change noted above.)
  11. Fixed issue with the Banner (slideshow). Added this line in red below. Where this is applied depends on if and where you are adding the Banner.

    <script src="banner/trans-banner.min.js"></script>
    <script type="text/javascript">
    $.noConflict();
                    jQuery(function($){
                                   $('.TB_Wrapper').TransBanner({

Fixes YOU may need to apply
  1. Update your wt_pages SQL table and ensure all values for the headerimages_omit field is set to either 0 or 1 and never NULL. Make sure the default for that field is set to zero. Note - this is a general rule for all "logical" fields in SQL tables. Logical fields are either BIT or TinyInt(1) field types. All Logical fields are supposed to be properly set in the Framework -- but there have been a few instances of Logical fields set to NULL or not defaulted to zero.
 
New Features Added/Changes
  1. Added Security Groups to Main Navigation. This means you can define online which Alpha security Groups can see or not see particular menu nodes. Note - the "main navigation" discussed here is not the standard Alpha Anywhere navigation. This Main Nav is a Framework feature. This update added a field named "security_groups" VARCHAR(1024) to wt_main_nav table, and an updated wt_main_nav component is required, as well as a fresh wt4.aex. See this video.
  2. Changed the output location of the SQL Error Log. This is defined in the function named errorout() function on the Code tab of the Control Panel. Changed the output location to "c:\a5\logs\sql_errors.log".
  3. The "CRON" feature (under Maintenance) will eventually be removed. That module belongs in a separate utility not related to any particular web application.
Known Open Issues (to be Fixed)
  1. The ability to change the UserID onthe MyAccount is not working due to incomplete code.
  2. The Banner (slideshow) only allows for one Banner per app; it is supposed to allow for multiple.
  3. The Banner does not publish all of the banner configuration parametes and uses a default condition instead.
  4. Will be altering how user can modify their UserID. Currently (with this 4.001 update) the user can simply change their UserID. But this is not a secure method and will be replaced with a more secure process.
Summary of updated Alpha components
  • wt_myaccount UX
  • login - Alpha Component
  • wt_sys_country Grid
  • wt_logs Grid
  • wt_main_nav Grid
  • wt_users Grid
  • wt_users_addl_dlg - REMOVED
  • wt_inc_header_setvar - A5W Page
  • wt_inc_header_head - A5W Page

Customer-provided Testimonial Video