Upgrade Notes
In order to Upgrade an existing copy of Moxie.Build V4 or V5 to the most recent version of V5, you can use the Upgrade example files found in the Tools folder to help automate upgrading multi-service systems, or you can just replace the following files/folders:
Moxie.exe
Moxie.dll
Default.dll
/DBStore/BuiltIn.*
/Lib
/Public/BuiltIn
/Templates/Admin
/Templates/Clean
/Templates/Default
/Templates/Default5
/Templates/Report
A .mox file, with MOX code in it, can be run from the command line while a Moxie.Build system is not otherwise already running.
The Moxie.cfg file is read on server start and controls aspects that cannot be changed while the server is running.
The optional Moxie.http file is read on server start and controls the default HTTP headers set for all requests.
Takes one parameter, HtmlEscapedString, and returns the Unescaped Version of this string
The MOX coding and programming language pays heritage to BASIC, but has been crafted for the specific type of work and environment that is demanded of Moxie.Build.
A Remote Method may be called by any other Moxie system. It can be used to divide up a large system among a number of backend servers, or as a public API for 3rd parties. In order to call a Remote Method from MOX, the Remote statement is used.
A PaaS Method may be called by any other Moxie system. In order to call a PaaS Method from MOX, the PaaS statement is used.
Moxie.Build Keeps it Simple
The full stack in one app, delivered by one company.
Coding with the MOX server side scripting language is concise, well structured, and keeps your focus on the data. Use Moxie.Build in your company to pull together resources, centralize data, customize business workflows, and act as a highly accessible web portal for staff and customers alike.
A Public Method may be called from any other Procedure, by the Default plug-in as part of the CMS.
A Message Handler is only ever called by the Database on a Database Event. These Event Messages allow a Developer to intercept operations taking place on a per-record level and implement Event based business logic.
An Include Procedure cannot be executed directly, the contents of its source code can only be Included into other Procedures using the Include command.
Table Actions are presented to the users of the Default Admin interface and are also intended to be made available in a dynamic way to users of a customized front end. As an Action, the Procedure is expected to perform some sort of task, such as an automated set of updates to the Database Table.
Record Reports are presented to the users of the Default Admin interface and are also intended to be made available in a dynamic way to users of a customized front end. As a Report, the Procedure is expected to produce output to be displayed to the user.
Table Reports are presented to the users of the Default Admin interface and are also intended to be made available in a dynamic way to users of a customized front end. As a Report, the Procedure is expected to produce output to be displayed to the user.
Record Actions are presented to the users of the Default Admin interface and are also intended to be made available in a dynamic way to users of a customized front end. As an Action, the Procedure is expected to perform some sort of task, such as an automated set of updates to the Database Record.
Prerequisites: This tutorial assumes that you have already set up a Category and Procedure if necessary. This page covers some of the basics that are involved in Front End development using the MOX language.
Prerequisites: This tutorial assumes that you have already set up your Moxie.Build server and logged in. This page covers some of the basics that are involved in managing files and folders in the Moxie.Build system.
Brief overview on the file structure and contents under Moxie. The files and folders discussed in this post are those that are essential when upgrading to the most recent version of Moxie.Build , or when troubleshooting server errors.
A single Windows OS can host many instances of Moxie.Build, these steps will guide you through the setup process.
Developing in Moxie.Build on localhost give you the advantage of working with the template files natively. When working on procedures (MOX code) you need to access that through the Procedures page in the Admin area of a Moxie.Build system, if running the server on localhost or on a remote server. When running on a remote server, you can edit the template files via the Files page in the Admin area.
Cloudflare automatically provides free client-facing certificates for your domain, even when using their free service. In addition, they provide free Origin Certificates to encrypt the connection between Cloudflare and your origin Moxie.Build server. Use this article when you are going to have Cloudflare connect to inbound open ports on your Moxie.Build server.
Prerequisites: This page assumes that you have already set up your Moxie.Build server and logged in as an admin user. This page covers some of the basics that are involved in using the Content Management aspects of the Moxie.Build system.
Moxie.Build, in short, may be used and licensed free of charge for education and non-profit organizations. Whenever it is used by government or for-profit organizations the license is granted on a subscription basis.
Moxie.Build includes a number of open source components as part of its distribution; each is subject to their own licenses as included with the files for those components.
The Setup Table controls aspects that can be changed while the server is running, and is intended to contain both Moxie.Build specific values as well as application specific.
This utility program manages a server install with one or many Moxie.Build services running by taking care of nightly tasks via a scheduled task.
Markdown enables simple formatting of plain text via easy to remember conventions. This page will provide you with some pointers on what formatting options are available with "Moxie Flavored Markdown".
In this example, we use a plain old Moxie.Build system and compare it to the MEAN Stack equivalent by building two functionally equivalent versions of a fleshed out To Do List Application. Both versions utilize local user authentication, a relational database system and the security measures found in typical production-level applications on the web today.
This video demonstrates how to get started with Moxie.Build with basic customization.
The following video demonstrates how to download Moxie.Build to your workstation, and run it on localhost.
Takes one parameter, Source
Takes three parameters, Location, ClassNames, AlertText
Takes two parameters, Source, AllowedCharacters (case sensitive)
Takes two parameters, Source, AllowedCharacters (case sensitive)
Takes 6 parameters, Name, Value, Path, Domain, Expires, Other
Takes two parameters, Title, Path
Takes one parameter, ErrMsg
Takes seven parameters, Location, Mode, Prompt, Path, Class, Name, HelpText
Takes two parameters, Location, Mode
Takes two parameters, Source, Value
Takes two parameters, Source, Options
Takes two parameters, Source, Value
Takes two parameters, Source, Match
Takes two parameters, Source, Value
Takes two parameters, Source, Match
Takes one parameter, Source
Takes one parameter, bNoHeaders
Takes two parameters, Source, Search
Takes one parameter, Source
Takes two parameters, Source, Match
Takes two parameters, Source, Match
Takes two parameters, Source, Value
Takes one parameter, Source
Takes one parameter, Source
Takes two parameters, Source, Search
Has two parameters: Source, Options
Has one parameter, Options
Takes one parameter, a Source value
Takes three parameters, FilePath, Start, Len
Takes two parameters, Source, Value
Takes one parameter, a Source value
Has no parameters
Takes two parameters, Source, Match
Takes 9 parameters, ServerName, Port, bSecure, Mode, Path, ContentType, extraHeader, body, rtnHeaders
Has one parameter
Has two parameters: Source, Name
Has two parameters: Source, Options
Takes two parameters, Source, Match
Takes two parameters: Username, GroupTypes
Takes one parameter, a Date value
Takes one parameter, EscapedTemplate, and returns the Unescaped Version of this string
Takes one existing Source value, and two parameters, Search, NewVal
Takes one parameter, EscapedHTMLString, and returns the Unescaped Version of this string
Takes one parameter, EscapedHTMLString, and returns the Unescaped Version of this string
Takes one parameter, Name
Takes two parameters Command, Options
Takes one existing Source value, and two parameters of equal length, SearchVals, NewVals
Takes two parameters, Source, Value
Takes two parameters, Source and Match
Takes two parameters, Source and Match
Takes two parameters, Source, Values
Takes two parameters, Source and Match
Takes one parameter, Source
Takes three parameters, TableName, Alias, Password
Takes two parameters, Source and Match
Takes one parameter, Source
Takes two parameters, FileName, bHasHeader
Has no parameters
Takes one parameter, FilePath
Takes two parameters, FileName, bHasHeader
Takes 7 parameters, FieldBase, Destination, Source, OffsetVal, Operator, OpValue, IfLenFld
Takes 6 parameters, FieldBase, Destination, Function, Source, Value, IfLenFld
Takes a variable number of parameters
Takes two parameters, FileName, bHasHeader
Takes a variable number of parameters, FieldBase, Test1, Test2, [etc...]
Takes a variable number of parameters, FieldBase, Test1, Test2, [etc..]
Takes two parameters, FieldBase, FieldNamesList
Takes two parameters, FileName, bHasHeader
Takes two parameters, Data, Boundary
Takes two parameters, PathToFile, Options
Takes two parameters, FileName, bHasHeader
Takes three parameters, FieldBase, Fields, IfLenFld
Takes two parameters, Location, Mode
Takes six parameters, FieldBase, Destination, Function, Source, Value, IfLenFld
Takes six parameters, FieldBase, Destination, Function, Source, Value, IfLenFld
Takes 5 parameters, Location, Mode, Class/ID, Init, bNoAutoAlign
Takes four parameters, FieldBase, Destination, Source, IfLenFld
Takes 6 parameters, Location, Mode, ActionLabel, ActionPath, Class, ActionMethod
Takes 6 parameters, Location, Mode, Div, Data, Script, Extra
Takes two parameters, CSVData, bNoHeaders
Takes two parameters, FileName, Options
Takes two parameters, FilePath, bUseHeader
Takes three parameters, QueryName, FieldBase, FieldNames
Takes two parameters, FileName, bUseHeader
Takes two parameters, Data, bHasHeader
Takes a variable number of parameters, FieldBase, Destination, Source, Test1, Test2, [etc...]
Takes a variable number of parameters, FieldBase, Destination, Source, Test1, Test2, [etc...]
Takes two parameters, Data, Options
Takes one parameter, TableName
Has no parameters.
Takes one parameter, TableName
Has no parameters
Takes three parameters, Login, Password, bRememberMe
Takes one parameter, TableName
Takes two parameters, TableName, IfLenFld
Takes four parameters, DestinationTable, SourceTable, bWithParents, bWithPWHashes
Takes one parameter, the contents of which are used for the HTTP Reply Body
Takes one parameter, Type
Takes two parameters, name, value
Takes three parameters, Location, Mode, TemplateName
Takes two parameters, ChildTableName, Mode
Takes one parameter, Type
Takes one parameter, Name
Takes six parameters, FieldBase, Destination, Table, Alias, SourceField, IfLenFld
Takes two parameters, ExcelTableData, Options
Takes two parameters, CSVData, bNoHeaders
Takes two parameters, CSVData, bNoHeaders
Takes 5 parameters, FieldBase, Destination, Action, Source, IfLenFld
Has six parameters, UniqueParent, DestField, FieldBase, UniqueChild, EmbedFields, Options
Takes nine parameters, FieldBase, Destination, Function, Source1, Source2, Source3, Source4, Options, IfLenFld
Takes five parameters, FieldBase, FieldList, Mask, bBlanks2Zero, IfLenFld
Takes a variable number of parameters
Takes seven parameters, TableName, OtherTableName, ParentChild, Ratio, Note, Attr, DevNote
Takes nine parameters, TableName, ProcName, Type, Params, GroupTypes, Label, Note, DevNote, Source
Takes six parameters, TableName, FieldName, Label, Note, Attr, DevNote
Takes three parameters, ChildTableName, ParentTableName, Mode
Takes eight parameters, TableName, OldOtherTableName, NewOtherTableName, ParentChild, Ratio, Note, Attr, DevNote
Takes ten parameters, TableName, OldProcName, NewProcName, Type, Params, GroupTypes, Label, Note, DevNote, Source
Takes seven parameters, TableName, OldFieldName, NewFieldName, Label, Note, Attr, DevNote
Takes a variable number of conditional logical if statements
A special type of Private Method, called a Private Function, that is intended to return a single value or multiple values simultaneously.
Takes a single Field name to test if it is true, with an optional Not operator to test if false, followed by the conditional statement
Has one parameter.
Has 4 parameters, Destination, Action, Source, Value
Takes a variable number of parameters, QueryName, MethodName, [Param1, [Param2, etc...]]
Takes one parameter, the text of the exception to throw.
Takes 2 parameters, Result, Status
Has no parameters
Takes three parameters, FolderPath, Action, Source
Takes three parameters, Destination, Action, Source
Takes 5 parameters, DestinationQuery, SourceQuery, DestinationMatchField, SourceMatchField, Mode
Takes a single string as parameter, which is then appended to each line in the code block.
Takes three parameters, Url, SaaSTenant, InputQuery, OutputQuery
Takes one parameter, QueryName
Takes two parameters, QueryName, Title
Takes three parameters, QueryName, FieldBase, FieldNames
Takes one parameter, Control
Takes any unspecified data, intended for use by external systems
Has one parameter, a Content.Lang prefix
Private Method contained within a given procedure.
Takes one parameter, QueryName
Takes two parameters, Text, Title
Has no parameters.
Takes no parameters
Parameter is divided into two parts, the Test and the Result if True. The test comes prior to the keyword of Then and the Result if True comes after.
Has one parameter.
Parameter is a comma separated list (using CSV rules and not in quotes) of the options made available to the user which are enforced on save.
Takes one parameter which is the keyboard key which will be used as the Access Key for a given Database Table's field.
*Note: By default, each Field's Access Key will be initialized to the first character of the Field's Label.
Prerequisites: This tutorial assumes that you have already learned about Managing Files .
In order for source code to be more readily readable across teams, it is recommended that your source code always be styled according to this style guide.
Has one parameter
In this example, you will see how to use a public method that works on or with the current WorkQuery that you pass into the method.
We empower your customers to take action.
Takes two parameters, FileName, FileData
Takes one parameter, the text of the error to throw.
Takes one parameter, the Name of the critical section
Takes two parameters, FileName, bHasHeader
Parameter is a space separated list of field names to have the display table sorted by when displaying search results in the Admin interface.
Takes one parameter
Has no parameters
ExportSchema and ImportSchema are BuiltIn procedures that are available for use with source control systems.
Has no parameters
Takes three parameters Method, URL, Body
Takes one parameter
Takes two parameters, User and Password
Has one parameter.
Takes one parameter bNoHeaders and returns the result to an assigned variable
Takes one parameter
Takes one parameter, Message, or no parameters
Takes either one parameter, ResultValue, or no parameters
Has no parameters
Has no params
Takes either one parameter, ResultValue, or no parameters
Takes one parameter, a date of the form yyyy-mm-dd
Takes five parameters, Lat1, Long1, Lat2, Long2, Options
Takes one parameter, a gregorian number
Takes two parameters, Source, Options
Takes no parameters
Takes one parameter, FieldName
Takes one parameter, Source
Has no params
Takes one parameter, Source
Takes two parameters, Source , Search
Takes two parameters, Source, Search
Has no parameters
Takes two parameter, URL, InputQuery
Takes one parameter, Value
Takes one parameter, OutputText
Cloudflare is a first and foremost a Web Application Firewall and Content Distribution Network, among other additional services.
A traditional way to check for hard errors and enable those errors to error softly.
Takes a variable number of parameters.
Takes three parameters, Url, InputQuery, OutputQuery
Takes two parameters, FileName, FileData
Takes one parameter, ServerLogText
Takes a variable number of conditional statements to compare against a single source
Cloudflared Tunnel exposes applications running on your local web server on any network with an internet connection with an outbound tunnel that connects directly to Cloudflare's edge network without the need to configure inbound firewall rules.
Takes no parameters
Parameter is divided into two parts, the Test and the Result if True. The test comes prior to the keyword of Then and the Result if True comes after.
Takes no parameters
Takes one parameter, Message, or no parameters
Takes no parameters
Takes a variable number of parameters
Parameter is a comma separated list (using CSV rules and not in quotes) of the fixed hard coded values to select from
Some Work Query command parameters can accept a source of either a Work Query Field name or a text literal. Text literals in these cases are prefixed with a backtick ` character.
Has no parameters
Takes one parameter, TestCondition
Deprecated, use AmPm$
A type of Prefix which allows the developer to separate blocks of code into organized, defined parts to help provide clarity of the logical block and add structure to the code.