├── README.md
├── Custom Functions
├── #nvp.replace.xmfn
├── #nvp.encode.xmfn
├── NULL.xmfn
├── OffScreen.xmfn
├── IsRunningOnServer.xmfn
├── DebuggingOn.xmfn
├── #fd.encode.xmfn
├── #ds.encode.xmfn
├── #fd.decode.xmfn
├── #ds.decode.xmfn
├── #p.encode.xmfn
├── #nvp.remove.xmfn
├── #nvp.decode.xmfn
├── SQLDebugResult.xmfn
├── SQLFieldName.xmfn
├── PhoneMask.xmfn
├── SQLTableName.xmfn
├── #r.decode.xmfn
├── #.xmfn
├── #p.decode.xmfn
├── TriggersAreActive.xmfn
├── TriggersReset.xmfn
├── SuperTrim.xmfn
├── Developer.xmfn
├── TriggersDisable.xmfn
├── #AssignScriptResults.xmfn
├── TriggersEnable.xmfn
├── IsValidEmailAddress.xmfn
├── #Assign.xmfn
└── #AssignScriptParameters.xmfn
├── Scripts
├── has-dependancies
│ ├── MasterAbort.xmsc
│ ├── util . looped find.xmsc
│ ├── Go To Last Portal Row ( portalName ).xmsc
│ ├── Trigger - QuickFind.xmsc
│ ├── Toggle Sort Columns.xmsc
│ ├── ExportAllTables.xmsc
│ ├── Looped Find ( field ; values ).xmsc
│ ├── ImportAllTables.xmsc
│ └── Print Preview.xmsc
└── dependancy-free
│ ├── UnlockToolbar.xmsc
│ ├── IsolateRecord.xmsc
│ ├── LockWindowsOnMobile.xmsc
│ ├── Perform Constrain.xmsc
│ ├── Perform Find.xmsc
│ ├── Delete All Records.xmsc
│ └── CreateRecord.xmsc
├── Modules
└── Update Schema Table
│ ├── util . looped find.xmsc
│ ├── update schema table.xmsc
│ └── util . create record and set fields.xmsc
└── Tables
└── zBaseTable.xmtb
/README.md:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Custom Functions/#nvp.replace.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516885e+9#nvp.remove ( dict ; name ) & #nvp.encode ( name ; value )
--------------------------------------------------------------------------------
/Custom Functions/#nvp.encode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516884e+9"<?name:" & name & ":?><?value:" & Substitute ( value ; "¶" ; "!!!" ) & ":?>"
--------------------------------------------------------------------------------
/Custom Functions/NULL.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9// This function is intentionally blank. Please do not return a result
--------------------------------------------------------------------------------
/Custom Functions/OffScreen.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9Case (
2 |
3 | DebuggingOn ; 0 ;
4 | -3000
5 |
6 | )
--------------------------------------------------------------------------------
/Custom Functions/IsRunningOnServer.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.497852e+9Case ( PatternCount ( Get ( ApplicationVersion ) ; "Server" ) = 1 ; 1 ; "")
--------------------------------------------------------------------------------
/Custom Functions/DebuggingOn.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9True
2 |
3 | // set to True to turn on various debugging tools, such as on-screen utility windows
--------------------------------------------------------------------------------
/Custom Functions/#fd.encode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516884e+9"<?field:" & field & ":?><?data:" & Substitute ( data ; "¶" ; "!!!" ) & ":?><?multi:" & multi & ":?>"
2 |
3 | // multi = append if true
--------------------------------------------------------------------------------
/Custom Functions/#ds.encode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516884e+9"<data_" & start & "?" & GetValue ( data_series ; start ) & "/>"
2 | &
3 | Case (
4 | ValueCount ( data_series ) > start
5 | ; #ds.encode ( data_series ; start + 1 )
6 | )
--------------------------------------------------------------------------------
/Custom Functions/#fd.decode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516884e+9Let ( [
2 |
3 | stCode = "<?" & key & ":"
4 | ; endCode = ":?>"
5 | ; stPos = Position ( input ; stCode ; 1 ; 1 ) + Length ( stCode )
6 | ; endPos = Position ( input ; endCode ; stPos ; 1 )
7 | ; length = endPos - stPos
8 | ] ;
9 | Substitute ( Middle ( input ; stPos ; length ) ; "!!!" ; "¶" )
10 | )
--------------------------------------------------------------------------------
/Custom Functions/#ds.decode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516884e+9/*List (
2 | Extract ( data_series ; "<data_" & Case ( data_value = "all" ; start ; data_value ) & "?" ; "/>" ; 1 ; "" )
3 |
4 | ; Case ( data_value = "all"
5 | ; Case (
6 | PatternCount ( data_series ; "<data_" ) > start
7 | ; #ds.decode ( data_series ; "all" ; start + 1 )
8 | )
9 | )
10 | )*/
--------------------------------------------------------------------------------
/Custom Functions/#p.encode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516885e+9//"<:" & name & ":=" & value & ":>"
2 |
3 | //Name: #P_encode
4 | //Parameters: name, value
5 | //Formula:
6 |
7 | "<:"
8 | &
9 | Substitute (
10 | name
11 | ; ["="; "/="]
12 | ; [":"; "/:"]
13 | ; [">"; "/>"]
14 | ; ["<" ; "/<"]
15 | )
16 | &
17 | ":="
18 | &
19 | Substitute (
20 | value
21 | ; ["="; "/="]
22 | ; [":"; "/:"]
23 | ; [">"; "/>"]
24 | ; ["<" ; "/<"]
25 | )
26 | &
27 | ":>"
--------------------------------------------------------------------------------
/Custom Functions/#nvp.remove.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516884e+9Let(
2 | [
3 |
4 | ~patternName = "<?name:" & name & ":?>"
5 | ; ~nameExists = PatternCount ( dict ; ~patternName )
6 | ; ~positionStart = Position ( dict ; ~patternName ; 0 ; 1 )
7 | ; ~positionValueEnd = Position ( dict ; ":?>" ; ~positionStart ; 2 ) + 3
8 | ; ~numberOfChars = ~positionValueEnd - ~positionStart
9 | ; ~patternPair = Middle ( dict ; ~positionStart ; ~numberOfChars )
10 | ; ~result = Case ( ~nameExists ; Substitute ( dict ; ~patternPair ; "" ) ; dict )
11 |
12 | ]
13 |
14 | ; ~result
15 |
16 | )
--------------------------------------------------------------------------------
/Custom Functions/#nvp.decode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516884e+9Let ( [
2 |
3 | stCode = "<?name:" & key & ":"
4 | ; endCode = ":?>"
5 | ; stPos = Position ( input ; stCode ; 1 ; 1 ) + Length ( stCode ) + 10
6 | ; endPos = Position ( input ; endCode ; stPos ; 1 )
7 | ; length = endPos - stPos
8 | ] ;
9 |
10 |
11 | Substitute ( Middle ( input ; stPos ; length ) ; "!!!" ; "¶" )
12 |
13 | )
14 | /*
15 | Let ( [
16 |
17 | stCode = "<?" & key & ":"
18 | ; endCode = ":?>"
19 | ; stPos = Position ( input ; stCode ; 1 ; 1 ) + Length ( stCode )
20 | ; endPos = Position ( input ; endCode ; stPos ; 1 )
21 | ; length = endPos - stPos
22 | ] ;
23 | Substitute ( Middle ( input ; stPos ; length ) ; "!!!" ; "¶" )
24 | )
25 | */
--------------------------------------------------------------------------------
/Scripts/has-dependancies/MasterAbort.xmsc:
--------------------------------------------------------------------------------
1 | XMSC13.498633e+9
--------------------------------------------------------------------------------
/Custom Functions/SQLDebugResult.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMFN
8 | 1
9 | 3.462515e+9
10 |
11 |
12 |
13 |
14 |
15 |
16 | If (
17 | //the sql call results in an error, return empty so the error will be returned
18 | _executeSQL = "?" ; "" ;
19 | //the sql call is executed correctly, just return the result
20 | _executeSQL
21 | )
22 | // ===================================
23 | /*
24 | This function is published on FileMaker Custom Functions
25 | to check for updates and provide feedback and bug reports
26 | please visit http://www.fmfunctions.com/fid/335
27 | Prototype: sql.debug( _executeSQL )
28 | Function Author: Andries Heylen (http://www.fmfunctions.com/mid/57)
29 | Last updated: 28 July 2012
30 | Version: 2.2
31 | */
32 | // ===================================
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/Custom Functions/SQLFieldName.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMFN
8 | 1
9 | 3.462515e+9
10 |
11 |
12 |
13 |
14 |
15 |
16 | /**
17 | * =====================================
18 | * SQLFieldName ( field )
19 | *
20 | * RETURNS:
21 | * The field name formatted as a fully qualified SQL column name.
22 | *
23 | * PARAMETERS:
24 | * field: A reference to a field (not the text of the field name)
25 | *
26 | * DEPENDENCIES: none
27 | *
28 | * HISTORY:
29 | * MODIFIED on 2013-05-08 by Jeremy Bante <http://scr.im/jbante> to not
30 | * accept *Alias parameters and not include table name in result.
31 | * MODIFIED on 2013-01-26 by Jeremy Bante <http://scr.im/jbante> to accept
32 | * the tableAlias and fieldAlias parameters.
33 | * CREATED on 2012-12-18 by Jeremy Bante <http://scr.im/jbante>.
34 | * Based on functions by Todd Geist and Dan Smith.
35 | * =====================================
36 | */
37 | Quote (
38 | GetValue (
39 | Substitute (
40 | GetFieldName ( field ) ;
41 | "::" ;
42 | ¶
43 | ) ;
44 | 2
45 | )
46 | )
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Custom Functions/PhoneMask.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9Let( [
2 |
3 | TempNum= Filter(number; "0123456789");
4 |
5 | Num = If( Left( tempnum ; 1 ) = 1 ; Middle( tempnum ; 2 ; 99) ; tempnum);
6 |
7 | NumLength = Length ( Num ) ;
8 |
9 | Phone10 = "("& Left(num;3) & // if it exceeds a length assume it is an extension
10 | ") "& Middle(num ; 4 ; 3) &
11 | "-"& Middle(num ; 7 ; 4) &
12 | If(Length(num)> 10 ; " x" & Middle(num ; 11 ; 99) ; NULL) ;
13 |
14 | Phone7 = Left(num;3) & // if it exceeds a length assume it is an extension
15 | "-" & Middle(num ; 4 ; 4) &
16 | If(Length(num)> 7 ; " x" & Middle(num ;8 ; 99);"")
17 | ];
18 |
19 | Case (
20 | label = "International" ; number ; // international numbers get formatted as entered
21 | Length ( Num ) < 7; TextColor ( Num ; RGB ( 255 ; 0 ; 0 ) ); // if number is to short less than 7 digits display it in red as error
22 | Length ( Num ) < 10; Phone7 ;
23 | Phone10
24 |
25 | ) // end Case
26 |
27 |
28 | ) // end Let
--------------------------------------------------------------------------------
/Custom Functions/SQLTableName.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMFN
8 | 1
9 | 3.462515e+9
10 |
11 |
12 |
13 |
14 |
15 |
16 | /**
17 | * =====================================
18 | * SQLTableName ( field )
19 | *
20 | * RETURNS:
21 | * The table name of a field formatted as a fully qualified SQL table name.
22 | *
23 | * PARAMETERS:
24 | * field: A reference to a field (not the text of the field name)
25 | * tableAlias: Any alias to use for the table in a SQL statement
26 | *
27 | * DEPENDENCIES: none
28 | *
29 | * HISTORY:
30 | * MODIFIED on 2013-05-08 by Jeremy Bante <http://scr.im/jbante> to not
31 | * accept the tableAlias parameter.
32 | * MODIFIED on 2013-01-26 by Jeremy Bante <http://scr.im/jbante> to accept
33 | * the tableAlias parameter.
34 | * CREATED on 2012-12-18 by Jeremy Bante <http://scr.im/jbante>.
35 | * Based on a function by Todd Geist.
36 | * =====================================
37 | */
38 | Quote (
39 | GetValue (
40 | Substitute (
41 | GetFieldName ( field ) ;
42 | "::" ;
43 | ¶
44 | ) ;
45 | 1
46 | )
47 | )
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/Custom Functions/#r.decode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516885e+9// get scriptresult based on name/value pairing
2 | /*
3 | Let ( [
4 | param = Get ( ScriptResult )
5 | ; stCode = "<:" & name & ":="
6 | ; endCode = ":>"
7 | ; stPos = Position ( param ; stCode ; 1 ; 1 ) + Length ( stCode )
8 | ; endPos = Position ( param ; endCode ; stPos ; 1 )
9 | ; length = endPos - stPos
10 | ] ;
11 | Case (
12 | not PatternCount ( param ; ":" & name & ":" )
13 | ; ""
14 | ; Middle ( param ; stPos ; length )
15 | )
16 | )
17 | */
18 |
19 | //Name: DictGet
20 | //Parameters: name
21 | //Formula:
22 |
23 | Let ( [
24 | dict = Get ( ScriptResult )
25 | ; match = "<:" & Substitute ( name ; ["="; "/="] ; [":"; "/:"] ; [">"; "/>"] ; ["<" ; "/<"] ) & ":="
26 | ; pstart = Position ( dict ; match ; 1 ; 1 )
27 | ; start = pstart + Length ( match )
28 | ; end = Position ( dict ; ":>" ; start ; 1 )
29 | ; len = If ( end = 0 ; 999999999 ; end - start )
30 | ];
31 | Case (
32 | pstart
33 | ; Substitute (
34 | Middle (
35 | dict
36 | ; start
37 | ; len
38 | )
39 | ; ["/:"; ":"]
40 | ; ["/="; "="]
41 | ; ["/>"; ">"]
42 | ; ["/<" ; "<" ]
43 | )
44 | )
45 | )
--------------------------------------------------------------------------------
/Custom Functions/#.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9// This is a reserved function name. You can use this custom function as provided or change to your own. The following is the suggested function
2 |
3 |
4 | /**
5 | * =====================================================
6 | * # ( key ; value )
7 | *
8 | * PURPOSE:
9 | * Creates a string designed to be sent as a script parameter
10 | * to a script using the DeclareVariables function to receive
11 | * named parameters. You can create a string for multiple named
12 | * parameters by concatenating multiple calls to this function.
13 | *
14 | * RETURNS:
15 | * (string) Formatted variable declaration
16 | * such as "$variable="
17 | * DEPENDENCIES:
18 | * none
19 | * NOTES:
20 | * This is a wrapper function according to
21 | * http://filemakerstandards.org/pages/viewpage.action?pageId=557462
22 | * RELEASE: 2010-11-23
23 | * =====================================================
24 | *
25 | */
26 |
27 | "$" & Substitute ( name ; "$" ; "" ) & " = " & Quote ( value ) & ";¶"
--------------------------------------------------------------------------------
/Custom Functions/#p.decode.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.516885e+9// get scriptparameter based on name/value pairing
2 |
3 | /*
4 | Let ( [
5 |
6 | param = Get ( ScriptParameter )
7 | ; stCode = "<:" & name & ":="
8 | ; endCode = ":>"
9 | ; stPos = Position ( param ; stCode ; 1 ; 1 ) + Length ( stCode )
10 | ; endPos = Position ( param ; endCode ; stPos ; 1 )
11 | ; length = endPos - stPos
12 | ] ;
13 | Case (
14 | not PatternCount ( param ; ":" & name & ":" )
15 | ; ""
16 | ; Middle ( param ; stPos ; length )
17 | )
18 | )
19 | */
20 |
21 | //Name: DictGet
22 | //Parameters: name
23 | //Formula:
24 |
25 | Let ( [
26 | dict = Get ( ScriptParameter )
27 | ; match = "<:" & Substitute ( name ; ["="; "/="] ; [":"; "/:"] ; [">"; "/>"] ; ["<" ; "/<"] ) & ":="
28 | ; pstart = Position ( dict ; match ; 1 ; 1 )
29 | ; start = pstart + Length ( match )
30 | ; end = Position ( dict ; ":>" ; start ; 1 )
31 | ; len = If ( end = 0 ; 999999999 ; end - start )
32 | ];
33 | Case (
34 | pstart
35 | ; Substitute (
36 | Middle (
37 | dict
38 | ; start
39 | ; len
40 | )
41 | ; ["/:"; ":"]
42 | ; ["/="; "="]
43 | ; ["/>"; ">"]
44 | ; ["/<" ; "<" ]
45 | )
46 | )
47 | )
--------------------------------------------------------------------------------
/Scripts/dependancy-free/UnlockToolbar.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | XMSC
7 | 1
8 | 3.491981e+9
9 |
10 |
11 |
12 |
13 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/Custom Functions/TriggersAreActive.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMFN
8 | 1
9 | 3.462453e+9
10 |
11 |
12 |
13 |
14 |
15 |
16 | /**
17 | * =====================================
18 | * TriggersAreActive
19 | *
20 | * PURPOSE:
21 | * TriggersAreActive checks a global variable to identify whether or not script
22 | * triggers should be allowed to run. This function is best used in concert with
23 | * the TriggersDisable, TriggersEnable, and TriggersReset
24 | * functions.
25 | *
26 | * RETURNS:
27 | * False (0) if triggers should be suppressed; True (1) otherwise.
28 | *
29 | * PARAMETERS: none
30 | *
31 | * REFERENCED VARIABLES:
32 | * $$~DISABLETRIGGERS
33 | *
34 | * DEPENDENCIES: none
35 | *
36 | * EXAMPLE (triggered script):
37 | * If [ TriggersAreActive ]
38 | * # Do something
39 | * End If
40 | *
41 | * HISTORY:
42 | * MODIFIED on 2010-12-13 by jbante@supportgroup.com to use names suggested at
43 | * filemakerstandards.org.
44 | * CREATED on 2010-12-12 by Jeremy Bante of The Support Group (jbante@supportgroup.com).
45 | *
46 | * REFERENCES:
47 | * Supressible Triggered Scripts Best Practice: http://filemakerstandards.org/display/bp/Suppressible+Triggered+Scripts
48 | * =====================================
49 | */
50 | not $$~DISABLETRIGGERS
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/Custom Functions/TriggersReset.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMFN
8 | 1
9 | -2.147484e+9
10 |
11 |
12 |
13 |
14 |
15 |
16 | /**
17 | * =====================================
18 | * TriggersReset
19 | *
20 | * PURPOSE:
21 | * TriggersReset sets global variables to indicate that script triggers should
22 | * be allowed to run, regardless of any persisting instructions to the contrary
23 | * from any script. This may be useful to recover from a situation where a
24 | * script forgot to call TriggersEnable at the end of operation. In order to be
25 | * suppressed, a script called via trigger should use the TriggersAreActive
26 | * function to decide whether or not to run.
27 | *
28 | * RETURNS: "" (null)
29 | *
30 | * PARAMETERS: none
31 | *
32 | * REFERENCED VARIABLES:
33 | * $$~DISABLETRIGGERS
34 | * $$~DISABLETRIGGERS.SCRIPTS
35 | *
36 | * DEPENDENCIES: none
37 | *
38 | * HISTORY:
39 | * MODIFIED on 2010-12-13 by jbante@supportgroup.com to use names suggested at
40 | * filemakerstandards.org.
41 | * CREATED on 2010-12-12 by Jeremy Bante of The Support Group (jbante@supportgroup.com).
42 | *
43 | * REFERENCES:
44 | * Supressible Triggered Scripts Best Practice: http://filemakerstandards.org/display/bp/Suppressible+Triggered+Scripts
45 | * =====================================
46 | */
47 | Let ( [
48 | $$~DISABLETRIGGERS.SCRIPTS = "";
49 | $$~DISABLETRIGGERS = ""
50 | ];
51 | ""
52 | )
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Custom Functions/SuperTrim.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | XMFN
9 | 1
10 | 3.484305e+9
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | /*
19 | CUSTOM FUNCTION: Supertrim ( text )
20 | © 2004 Debi Fuchs of Aptworks Consulting, debi@aptworks.com
21 | Speedily (and with no recursion) remove leading and trailing white space (including spacing, tabs and returns) from a text string.
22 | NOTE: Similar to TrimAll, except that it also removes tabs and returns (in addition to spaces), and it does not touch any spacing WITHIN the string.
23 | EXAMPLE:
24 | Supertrim(" John Smith¶") // --> "John Smith¶"
25 | LAST MODIFIED: 20-AUG-2008 by Debi Fuchs of Aptworks Consulting
26 | */
27 | Let(
28 | [
29 | // Determine value of original string with ALL whitespace removed.
30 | t2 = Substitute( text; [ " "; "" ]; [ " "; "" ]; [ " "; "" ]; [ "¶"; "" ] );
31 | // Determine position of first non-ws character in original string.
32 | first_char = Position( text; Left( t2; 1 ); 0; 1 );
33 | // Determine position of last non-ww character in original string.
34 | last_char = Position( text; Right( t2; 1 ); Length( text ); -1 )
35 | ];
36 | // If any non-whitespace characters exist return appropriate
37 | // middle portion of original text.
38 | Case( first_char; Middle( text; first_char; last_char - first_char + 1 ) )
39 | )
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Scripts/dependancy-free/IsolateRecord.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | XMSC
7 | 1
8 | -2.147484e+9
9 |
10 |
11 |
12 |
13 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/Custom Functions/Developer.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9/**
2 | * =====================================================
3 | * Developer ( )
4 | * https://github.com/petrowsky/fmpstandards/blob/master/Functions/Developer.fmfn
5 | *
6 | * PARAMETERS:
7 | * none
8 | *
9 | * RETURNS:
10 | * (bool) True or False based on proper
11 | * evaluation
12 | *
13 | * DEPENDENCIES:
14 | * none
15 | *
16 | * NOTES:
17 | * Because Filemaker Changed Get ( PrivilegeSetName )
18 | * Evaluate () must be used
19 | *
20 | * RELEASE:
21 | * 2011-02-23
22 | * =====================================================
23 | *
24 | */
25 |
26 | Let ( [
27 |
28 | ~developers = List ( "developer" ; "developer" ); // Add names of the accounts which are valid developer accounts
29 | ~version = Get ( ApplicationVersion );
30 | ~isGo = PatternCount ( ~version; "Go" ) = True;
31 | ~versionNumber = GetAsNumber ( Substitute ( ~version ; "," ; "." ) ); // account for foreign versions using comma
32 | ~extendedPrivileges = // Add "developer" extended privilege to groups which are valid developer groups
33 | If ( ~isGo or ~versionNumber ≥ 11;
34 | Evaluate ( "Get ( AccountExtendedPrivileges )" );
35 | /*else*/ Evaluate ( "Get ( ExtendedPrivileges )" )
36 | )
37 |
38 | ];
39 |
40 | PatternCount ( ¶& ~developers &¶ ; ¶& Get ( AccountName ) &¶ ) ≥ 1
41 | or PatternCount ( ¶& ~extendedPrivileges &¶ ; ¶& "developer" &¶ ) ≥ 1
42 | or
43 | If ( ~isGo or ~versionNumber ≥ 11;
44 | Evaluate ( "Get ( AccountPrivilegeSetName )" ) = "[Full Access]";
45 | /*else*/ Evaluate ( "Get ( PrivilegeSetName )" ) = "[Full Access]"
46 | )
47 |
48 | )
--------------------------------------------------------------------------------
/Scripts/dependancy-free/LockWindowsOnMobile.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | XMSC
7 | 1
8 | -2.147484e+9
9 |
10 |
11 |
12 |
13 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/Scripts/dependancy-free/Perform Constrain.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | XMSC
7 | 1
8 | -2.147484e+9
9 |
10 |
11 |
12 |
13 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/Custom Functions/TriggersDisable.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMFN
8 | 1
9 | 3.462514e+9
10 |
11 |
12 |
13 |
14 |
15 |
16 | /**
17 | * =====================================
18 | * TriggersDisable
19 | *
20 | * PURPOSE:
21 | * TriggersDisable sets global variables to indicate that the current script is
22 | * suppressing triggers. This script must be called from the context of a
23 | * script; otherwise, it will not suppress triggers, and it will return False.
24 | * In order to be suppressed, a script called via trigger should use the
25 | * TriggersAreActive function to decide whether or not to run.
26 | *
27 | * RETURNS:
28 | * True (1) if called from the context of a script, and therefore triggers have
29 | * been suppressed; False (0) otherwise.
30 | *
31 | * PARAMETERS: none
32 | *
33 | * REFERENCED VARIABLES:
34 | * $$~DISABLETRIGGERS
35 | * $$~DISABLETRIGGERS.SCRIPTS
36 | *
37 | * DEPENDENCIES: none
38 | *
39 | * EXAMPLE (script):
40 | * Set Variable [ $ignoreMe ; TriggersDisable ]
41 | * # Do something
42 | * Set Variable [ $ignoreMe ; TriggersEnable ]
43 | *
44 | * NOTES:
45 | * This function should *always* be used in pairs with the TriggersEnable
46 | * function.
47 | *
48 | * HISTORY:
49 | * MODIFIED on 2010-12-13 by jbante@supportgroup.com to use names suggested at
50 | * filemakerstandards.org.
51 | * CREATED on 2010-12-12 by Jeremy Bante of The Support Group (jbante@supportgroup.com).
52 | *
53 | * REFERENCES:
54 | * Supressible Triggered Scripts Best Practice: http://filemakerstandards.org/display/bp/Suppressible+Triggered+Scripts
55 | * =====================================
56 | */
57 | Let ( [
58 | ~scriptName = Get ( ScriptName );
59 | ~scriptIsRunning = not IsEmpty ( ~scriptName );
60 | $$~DISABLETRIGGERS.SCRIPTS =
61 | If ( ~scriptIsRunning;
62 | ~scriptName & "¶" & $$~DISABLETRIGGERS.SCRIPTS;
63 | /*else*/ $$~DISABLETRIGGERS.SCRIPTS
64 | );
65 | $$~DISABLETRIGGERS =
66 | If ( ~scriptIsRunning;
67 | True;
68 | /*else*/ $$~DISABLETRIGGERS
69 | )
70 | ];
71 | ~scriptIsRunning
72 | )
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/Custom Functions/#AssignScriptResults.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9// This is a reserved function name. You can use this custom function as provided or change to your own. The following is the suggested function
2 |
3 |
4 | /**
5 | * =====================================
6 | * #AssignScriptResults
7 | *
8 | * PURPOSE:
9 | * #AssignScriptResults uses the current script result (treated as if generated
10 | * by the # function) to declare and populate a series of locally-scoped script
11 | * variables. This function is equivalent to #Assign ( Get ( ScriptResult ) ).
12 | *
13 | * RETURNS:
14 | * True (1) when the script result is a valid set of name-value pairs (which
15 | * includes the empty string); False (0) otherwise.
16 | *
17 | * PARAMETERS: none
18 | *
19 | * DEPENDENCIES: none
20 | *
21 | * NOTE:
22 | * To be accessible outside this function, variable declarations in the script
23 | * result must use the $- or $$-prefixed notation for FileMaker variables.
24 | * This function does not handle that for you.
25 | *
26 | * HISTORY:
27 | * MODIFIED on 2010-10-04 by jeremy@kyologic.com to return explicit True or
28 | * False values indicating successful evaluation of the script result, and to
29 | * fit syntax inspired by a comment on standards.filemakermagazine.com by
30 | * Richard Dyce.
31 | * CREATED on 2010-08-25 by Jeremy Bante of Kyo Logic (jeremy@kyologic.com).
32 | * INSPIRED by an example in the FileMaker help documentation.
33 | *
34 | * REFERENCES:
35 | * Script Parameter Interface Best Practice: http://filemakerstandards.org/pages/viewpage.action?pageId=557462
36 | * =====================================
37 | */
38 |
39 | Let (
40 | ~evaluateString = //string to evaluate to declare variables
41 | "Let ( [¶"
42 | & Get ( ScriptResult )
43 | & "$void = $void" //terminating variable to keep semicolon-delimited sytax in variableString consistent
44 | & "¶];¶"
45 | & "True¶)";
46 |
47 | //end variable definitions
48 |
49 | Case (
50 | IsValidExpression ( ~evaluateString );
51 | Evaluate ( ~evaluateString );
52 |
53 | //else, ~evaluateString is not a valid expression...
54 | False //return error
55 | )
56 | )
--------------------------------------------------------------------------------
/Custom Functions/TriggersEnable.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMFN
8 | 1
9 | 3.462514e+9
10 |
11 |
12 |
13 |
14 |
15 |
16 | /**
17 | * =====================================
18 | * TriggersEnable
19 | *
20 | * PURPOSE:
21 | * TriggersEnable sets global variables to indicate that the current script is
22 | * no longer suppressing triggers. This function will also turn off trigger
23 | * suppression altogether if there are no other scripts suppressing triggers. In
24 | * order to be suppressed, a script called via trigger should use the
25 | * TriggersAreActive function to decide whether or not to run.
26 | *
27 | * RETURNS:
28 | * True (1) if TriggersEnable successfully removed the current script from
29 | * the list of scripts suppressing triggers; False (0) otherwise.
30 | *
31 | * PARAMETERS: none
32 | *
33 | * REFERENCED VARIABLES:
34 | * $$~DISABLETRIGGERS
35 | * $$~DISABLETRIGGERS.SCRIPTS
36 | *
37 | * DEPENDENCIES: none
38 | *
39 | * EXAMPLE (script):
40 | * Set Variable [ $ignoreMe ; TriggersDisable ]
41 | * # Do something
42 | * Set Variable [ $ignoreMe ; TriggersEnable ]
43 | *
44 | * NOTES:
45 | * This function should *always* be used in pairs with the TriggersDisable
46 | * function.
47 | *
48 | * HISTORY:
49 | * MODIFIED on 2010-12-13 by jbante@supportgroup.com to use names suggested at
50 | * filemakerstandards.org.
51 | * CREATED on 2010-12-12 by Jeremy Bante of The Support Group (jbante@supportgroup.com).
52 | *
53 | * REFERENCES:
54 | * Supressible Triggered Scripts Best Practice: http://filemakerstandards.org/display/bp/Suppressible+Triggered+Scripts
55 | * =====================================
56 | */
57 | Let ( [
58 | ~lastScript = GetValue ( $$~DISABLETRIGGERS.SCRIPTS ; 1 );
59 | ~enableTriggers = Get ( ScriptName ) = ~lastScript; //boolean indicating script name match
60 | $$~DISABLETRIGGERS.SCRIPTS =
61 | If ( ~enableTriggers;
62 | RightValues (
63 | $$~DISABLETRIGGERS.SCRIPTS;
64 | ValueCount ( $$~DISABLETRIGGERS.SCRIPTS ) - 1
65 | );
66 | /*else*/ $$~DISABLETRIGGERS.SCRIPTS
67 | );
68 | ~scriptCount = ValueCount ( $$~DISABLETRIGGERS.SCRIPTS );
69 | $$~DISABLETRIGGERS = If ( ~scriptCount ; True ; /*else*/ "" )
70 | ];
71 | ~enableTriggers or not ~scriptCount //ScriptName was found and removed, or there are no suppressing scripts
72 | )
73 |
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/Scripts/dependancy-free/Perform Find.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMSC
8 | 1
9 | -2.147484e+9
10 |
11 |
12 |
13 |
14 |
15 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/Scripts/has-dependancies/util . looped find.xmsc:
--------------------------------------------------------------------------------
1 | XMSC13.517376e+9
--------------------------------------------------------------------------------
/Modules/Update Schema Table/util . looped find.xmsc:
--------------------------------------------------------------------------------
1 | XMSC13.517379e+9
--------------------------------------------------------------------------------
/Scripts/has-dependancies/Go To Last Portal Row ( portalName ).xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMSC
8 | 1
9 | 3.484214e+9
10 |
11 |
12 |
13 |
14 |
15 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Scripts/has-dependancies/Trigger - QuickFind.xmsc:
--------------------------------------------------------------------------------
1 | XMSC13.491292e+9
--------------------------------------------------------------------------------
/Custom Functions/IsValidEmailAddress.xmfn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | XMFN
9 | 1
10 | 3.484305e+9
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | Let (
19 | [
20 | _validDomainCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-." ;
21 | _invalidLocalCharacters = "!\"#$%&'*,/:;<>?@[\]^`{}|~" ; // from http://www.remote.org/jochen/mail/info/chars.html
22 | _theLocalPart = Left ( theEmail ; Position ( theEmail ; "@" ; 1; 1 ) - 1 ) ;
23 | _theDomainPart = Right ( theEmail ; Length ( theEmail ) - Position ( theEmail ; "@" ; 1; 1 ) ) ;
24 | _theTopLevelDomain = RightWords ( Substitute ( _theDomainPart ; "." ; " " ) ; 1 ) ;
25 | _ValidTopLevelDomains = "AC¶AD¶AE¶AERO¶AF¶AG¶AI¶AL¶AM¶AN¶AO¶AQ¶AR¶ARPA¶AS¶AT¶AU¶AW¶AZ¶BA¶BB¶BD¶BE¶BF¶BG¶BH¶BI¶BIZ¶BJ¶BM¶BN¶BO¶BR¶BS¶BT¶BV¶BW¶BY¶BZ¶CA¶CC¶CD¶CF¶CG¶CH¶CI¶CK¶CL¶CM¶CN¶CO¶COM¶COOP¶CR¶CU¶CV¶CX¶CY¶CZ¶DE¶DJ¶DK¶DM¶DO¶DZ¶EC¶EDU¶EE¶EG¶ER¶ES¶ET¶EU¶FI¶FJ¶FK¶FM¶FO¶FR¶GA¶GB¶GD¶GE¶GF¶GG¶GH¶GI¶GL¶GM¶GN¶GOV¶GP¶GQ¶GR¶GS¶GT¶GU¶GW¶GY¶HK¶HM¶HN¶HR¶HT¶HU¶ID¶IE¶IL¶IM¶IN¶INFO¶INT¶IO¶IQ¶IR¶IS¶IT¶JE¶JM¶JO¶JOBS¶JP¶KE¶KG¶KH¶KI¶KM¶KN¶KR¶KW¶KY¶KZ¶LA¶LB¶LC¶LI¶LK¶LR¶LS¶LT¶LU¶LV¶LY¶MA¶MC¶MD¶MG¶MH¶MIL¶MK¶ML¶MM¶MN¶MO¶MP¶MQ¶MR¶MS¶MT¶MU¶MUSEUM¶MV¶MW¶MX¶MY¶MZ¶NA¶NAME¶NC¶NE¶NET¶NF¶NG¶NI¶NL¶NO¶NP¶NR¶NU¶NZ¶OM¶ORG¶PA¶PE¶PF¶PG¶PH¶PK¶PL¶PM¶PN¶PR¶PRO¶PS¶PT¶PW¶PY¶QA¶RE¶RO¶RU¶RW¶SA¶SB¶SC¶SD¶SE¶SG¶SH¶SI¶SJ¶SK¶SL¶SM¶SN¶SO¶SR¶ST¶SU¶SV¶SY¶SZ¶TC¶TD¶TF¶TG¶TH¶TJ¶TK¶TL¶TM¶TN¶TO¶TP¶TR¶TRAVEL¶TT¶TV¶TW¶TZ¶UA¶UG¶UK¶UM¶US¶UY¶UZ¶VA¶VC¶VE¶VG¶VI¶VN¶VU¶WF¶WS¶YE¶YT¶YU¶ZA¶ZM¶ZW"
26 | ] ;
27 | Case (
28 | IsEmpty ( theEmail ) ; "no value supplied" ;
29 | PatternCount ( theEmail ; "@" ) <> 1 ; "invalid address" ;
30 | PatternCount ( _theDomainPart ; "." ) = 0 ; "invalid formatting" ;
31 | Length ( Filter ( _theLocalPart ; _invalidLocalCharacters ) ) ;
32 | "invalid characters in the local part" ;
33 | Length ( Filter ( _theDomainPart ; _validDomainCharacters ) ) <> Length ( _theDomainPart ) ;
34 | "invalid characters in the domain part" ;
35 | Left ( _theLocalPart ; 1) = "." or
36 | Right ( _theLocalPart ; 1 ) = "." or
37 | Left ( _theDomainPart ; 1 ) = "." or
38 | Right ( _theDomainPart ; 1 ) = "." ;
39 | "invalid formatting" ;
40 | IsEmpty ( FilterValues ( _theTopLevelDomain ; _ValidTopLevelDomains ) ) ; "invalid top level domain" ;
41 | 1
42 | )
43 | )
44 | /*
45 | Name:
46 | EmailIsValid
47 | History:
48 | Created by Paul Turnbull
49 | Creation Date: 13-10-2005
50 | Modified Date: 13-11-2005 paul@fourofus.ca - fixed numerous bugs.
51 | Purpose: Returns True if the email supplied is valid an error message if it is not.
52 | Parameters:
53 | theEmail
54 | Important Notes:
55 | List of TLDs from http://data.iana.org/TLD/tlds-alpha-by-domain.txt
56 | Will not handle urls in the form contact@domain.com/some.name although you could edit to handle this if you like.
57 | */
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/Custom Functions/#Assign.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9// This is a reserved function name. You can use this custom function as provided or change to your own. The following is the suggested function
2 |
3 |
4 | /**
5 | * =====================================
6 | * #Assign ( parameters )
7 | *
8 | * PURPOSE:
9 | * #Assign ( parameters ) uses the output of the # ( name ; value ) function (or
10 | * the concatenated results from several #() calls) to declare and populate a
11 | * series of locally-scoped script variables. #Assign also handles native
12 | * Let() function formatting which limits dependancies on #() by other custom fuctions.
13 | *
14 | * RETURNS:
15 | * True (1) when parameters is a valid set of name-value pairs (which includes
16 | * the empty string); False (0) otherwise.
17 | *
18 | * PARAMETERS:
19 | * parameters: The (potentially Null) string of name-value pairs to parse into
20 | * variables.
21 | *
22 | * EXAMPLES:
23 | * #Assign ( # ( "name1"; "value1" ) ) //= True, and sets the variable $name1 with value "value1"
24 | * #Assign ( Null ) //= True, and sets no variables
25 | * #Assign ( "This is not a valid name-value pair string" ) //= False
26 | *
27 | * DEPENDENCIES: none
28 | *
29 | * NOTE:
30 | * To be accessible outside this function, variable declarations in parameters
31 | * must use the $- or $$-prefixed notation for FileMaker variables. This
32 | * function does not handle that for you.
33 | *
34 | * HISTORY:
35 | * MODIFIED on 2011-03-03 by matt@filemakermagazine.com to not use $void and
36 | * only include trailing $~ if parameters is non conforming to Let()
37 | * MODIFIED on 2010-10-04 by jeremy@kyologic.com to return explicit True or
38 | * False values indicating successful evaluation of the script result, and to
39 | * fit syntax inspired by a comment on standards.filemakermagazine.com by
40 | * Richard Dyce.
41 | * CREATED on 2010-03-13 by Jeremy Bante of Kyo Logic (jeremy@kyologic.com).
42 | * INSPIRED by an example in the FileMaker help documentation.
43 | *
44 | * REFERENCES:
45 | * Script Parameter Interface Best Practice: http://filemakerstandards.org/pages/viewpage.action?pageId=557462
46 | * =====================================
47 | */
48 |
49 | Let (
50 | ~evaluateString =
51 | "Let( [¶"
52 | & parameters
53 | & If ( Right ( parameters ; 1 ) = ";"
54 | or Right ( parameters ; 1 ) = ¶;
55 | "$~ = $~") //terminating variable to keep semicolon-delimited sytax in parameters consistent
56 | & "¶];¶"
57 | & "True¶)";
58 |
59 | //end variable definitions
60 |
61 | If ( IsValidExpression ( ~evaluateString );
62 | Evaluate ( ~evaluateString );
63 | //else, ~evaluateString is not a valid expression...
64 | False
65 | )
66 | )
67 |
68 | /*
69 | Unit tests
70 | Accounting for both a native Let() format and the more
71 | explicit formatting from #()
72 |
73 | List(
74 | #Assign ( # ( "foo" ; "bar" ) ); // using # without $
75 | #Assign ( # ( "$foo" ; "bar" ) ); // using # with $
76 | #Assign ( # ( "$foo" ; "bar" ) & # ( "bar" ; "baz" ) ); // concatenated #()
77 | #Assign ( List ( # ( "foo" ; "bar" ); # ( "$bar" ; "baz" ) ) ); // List with & without $
78 | #Assign ( "$foo = \"bar\"" ); // single line raw Let declaration
79 | #Assign ( "$foo = \"bar\";¶$bar = \"baz\""); // multi-line raw Let
80 | )
81 | */
--------------------------------------------------------------------------------
/Tables/zBaseTable.xmtb:
--------------------------------------------------------------------------------
1 | XMTB1-2.147484e+9Get( UUID )
--------------------------------------------------------------------------------
/Scripts/dependancy-free/Delete All Records.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | XMSC
7 | 1
8 | 3.489292e+9
9 |
10 |
11 |
12 |
13 |
108 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/Scripts/has-dependancies/Toggle Sort Columns.xmsc:
--------------------------------------------------------------------------------
1 | XMSC13.516885e+9
--------------------------------------------------------------------------------
/Scripts/has-dependancies/ExportAllTables.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | XMSC
7 | 1
8 | 3.489293e+9
9 |
10 |
11 |
12 |
13 |
105 |
106 |
107 |
108 |
--------------------------------------------------------------------------------
/Scripts/has-dependancies/Looped Find ( field ; values ).xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMSC
8 | 1
9 | 3.462515e+9
10 |
11 |
12 |
13 |
14 |
15 |
105 |
106 |
107 |
108 |
--------------------------------------------------------------------------------
/Custom Functions/#AssignScriptParameters.xmfn:
--------------------------------------------------------------------------------
1 | XMFN13.491901e+9// This is a reserved function name. You can use this custom function as provided or change to your own. The following is the suggested function
2 |
3 |
4 | /**
5 | * =====================================
6 | * #AssignScriptParameters
7 | *
8 | * PURPOSE:
9 | * #AssignScriptParameters uses the current script parameter (treated as if
10 | * generated by the # function) to declare and populate a series of
11 | * locally-scoped script variables. #AssignScriptParameters also uses the
12 | * current script name to determine whether or not all required named parameters
13 | * are populated (≠ Null). This function is NOT equivalent to
14 | * #Assign ( Get ( ScriptParameter ) ).
15 | *
16 | * PARAMETER SYNTAX:
17 |
18 | * # ( "parameter1" ; $variableValue ) &
19 | * # ( "parameter2" ; "Literal string value" )
20 | *
21 | * RETURNS:
22 | * True (1) when the script parameter is a valid set of name-value pairs (which
23 | * includes the empty string) and all parameters defined as required according to
24 | * the script name are non-null; False (0) otherwise.
25 | *
26 | * PARAMETERS: none
27 | *
28 | * DEPENDENCIES: none
29 | *
30 | * NOTE:
31 | * To be accessible outside this function, variable declarations in the script
32 | * parameter must use the $- or $$-prefixed notation for FileMaker variables.
33 | * This function does not handle that for you.
34 | *
35 | * HISTORY:
36 | * MODIFIED on 2010-10-04 by jeremy@kyologic.com to return explicit True or
37 | * False values indicating successful evaluation of the script parameter, and to
38 | * fit syntax inspired by a comment on standards.filemakermagazine.com by
39 | * Richard Dyce.
40 | * CREATED on 2010-03-13 by Jeremy Bante of Kyo Logic (jeremy@kyologic.com).
41 | * INSPIRED by an example in the FileMaker help documentation.
42 | *
43 | * REFERENCES:
44 | * Script Parameter Interface Best Practice: http://filemakerstandards.org/pages/viewpage.action?pageId=557462
45 | * =====================================
46 | */
47 |
48 | Let ( [
49 | ~evaluateString =
50 | "Let ( [¶"
51 | & Get ( ScriptParameter )
52 | & "$void = $void" //terminating variable to keep semicolon-delimited sytax in ScriptParameter consistent
53 | & "¶];¶"
54 | & "True¶)"
55 | ];
56 |
57 | Case(
58 | not IsValidExpression ( ~evaluateString );
59 | False;
60 |
61 | //else, ~evaluateString is a valid expression, so check that required parameters are populated
62 | Evaluate ( ~evaluateString )
63 | and
64 | Let ( [
65 | //parse required parameters from script name
66 | ~BEGIN = "("; //character marking beginning of named parameters
67 | //~END = ")"; //character defining end of named parameters
68 | ~DELIMITER = ","; //character delimiting between named parameters
69 | ~OPTIONAL = "{"; //character marking beginning of optional parameters
70 |
71 | ~parameters = Substitute ( Get ( ScriptName ) ; ["¶"; ""]; [" "; ""] );
72 | ~beginParameters = Position ( ~parameters ; ~BEGIN ; 1 ; 1 );
73 | ~endParameters = Position ( ~parameters ; ~OPTIONAL ; 1 ; 1 );
74 | ~endParameters = Case ( not ~endParameters ; Length ( ~parameters ) ; ~endParameters );
75 | ~parameters = Middle ( ~parameters ; ~beginParameters + 1 ; ~endParameters - ~beginParameters - 1 );
76 | ~parameters =
77 | Substitute (
78 | Trim ( ~parameters ) & "☠";
79 | [ ~DELIMITER & "☠" ; "" ]; //remove possible erroneous trailing delimiter
80 | [ "☠" ; "" ];
81 | [ ~DELIMITER ; "¶" ]
82 | )
83 | ];
84 | //check that required parameters are non-null
85 | Case (
86 | ~beginParameters and Length ( ~parameters ); //script name specifies parameters
87 | Evaluate ( //string returns true when all required parameters are populated
88 | "Length ( $"
89 | & Substitute ( ~parameters ; "¶" ; " ) and Length ( $" )
90 | & " )"
91 | );
92 |
93 | //else, parameters are adequate by default
94 | True
95 | )
96 | )
97 | )
98 | )
--------------------------------------------------------------------------------
/Scripts/has-dependancies/ImportAllTables.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | XMSC
7 | 1
8 | 3.489293e+9
9 |
10 |
11 |
12 |
13 |
136 |
137 |
138 |
139 |
--------------------------------------------------------------------------------
/Modules/Update Schema Table/update schema table.xmsc:
--------------------------------------------------------------------------------
1 | XMSC13.517376e+9
--------------------------------------------------------------------------------
/Modules/Update Schema Table/util . create record and set fields.xmsc:
--------------------------------------------------------------------------------
1 | XMSC13.517376e+9
--------------------------------------------------------------------------------
/Scripts/dependancy-free/CreateRecord.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | XMSC
8 | 1
9 | 3.462515e+9
10 |
11 |
12 |
13 |
14 |
15 |
446 |
447 |
448 |
449 |
--------------------------------------------------------------------------------
/Scripts/has-dependancies/Print Preview.xmsc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | XMSC
7 | 1
8 | 3.495113e+9
9 |
10 |
11 |
12 |
13 |
237 |
238 |
239 |
240 |
--------------------------------------------------------------------------------