FileMaker Magazin - MBS Artikel

For our Germans speaking users:

Wir haben die Artikel zum MBS Plugin aus dem FileMaker Magazin gesammelt hier online gestellt: FileMaker Magazin Artikel:

Wir empfehlen allen FileMaker Anwender ein Abo vom Magazin und den Kauf der alten Ausgaben. Das FileMaker Magazin ist eine excellente Quelle von Informationen, Anleitungen und Profitips.


Using Markdown Javascript converter in FileMaker

Today I created a new example for using Javascript and Webviewer in FileMaker to convert from markdown to HTML.

Actually the script is not very complicated with only a few script steps. The html file we load in the webviewer, provides the required javascript in one Convert function. Input and output is done with two invisible text areas in a form. The complete webviewer is just white and not visible to user. The script looks like this:

Set Variable [$r; Value:MBS( "WebView.SetFormTextAreaValue" ; "MarkDownWebViewer"; "formtest"; "input"; WebViewer MarkDown::Input; 1 )]
Set Variable [$r; Value:MBS( "WebView.RunJavaScript" ; "HTMLEditor"; "try { Convert(); } catch (e) { alert(e); }" )]
Set Field [WebViewer MarkDown::Output; MBS( "WebView.GetFormTextAreaValue" ; "MarkDownWebViewer"; "formtest"; "output"; 1 )]
Set Web Viewer [Object Name: "PreviewWebviewer"; URL: "data:text/html," & WebViewer MarkDown::Output]

As you see, we just fill in the form field with the markdown text. Next line we run the Convert() command. Wrapped in a try/catch to catch any javascript error and show it in an alert. Next we query the result from the second form field and display it in a text field in FileMaker. Finally we show the html in a webviewer as preview.

MBS FileMaker Plugin, version 5.3pr5

New in this prerelease of the 5.3 plugins:
  • Fixed bug with sending emails. Inline graphics were not embedded correctly.
  • Updated DynaPDF to version 3.0.43.130.
  • Fixed a bug in WebView.Screenshot with use of more than one display on Mac.
  • Fixed a bug with SystemInfo.OSVersionString not reporting Windows 10.
  • Changed SystemInfo.isWindows8 to return true for 8.1, too.
  • Updated libXL to version 3.6.4.
  • Fixed bug in RichText.ReplaceText which now works with empty text.
  • Changed RegEx.Match to return empty result instead of error for now match.
  • Added functions for email parsing.
  • The internal SQLite library now includes the SQLite Encryption Extension.
  • Added internal SQLite library which you can activate and no longer need to provide sqlite dll/dylib.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Embedded SQLite and encryption

As you may know we are big fans of SQLite. So we offer for both Xojo and FileMaker to use SQLite for connecting to database with our SQL functions.

Now we have a SQLite internal library already for some time in Xojo. With next prerelease we add that for FileMaker. So with both tools you can now use MBS SQL functions and use the internal SQLite library. This frees you from providing yourself a dylib/dll file. Currently we use version 3.8.11.1, but can update at any time. If you need a specific extension for SQLite, we can also check if we can enable it by default. Currently we support column metadata, full text search, soundex and thread safety.

Another thing we add with next prerelease is encryption. We licensed the SQLite Encryption Extension and include it now by default. You can use it to access SQLite databases using our plugin with AES 128 OFB, AES 256 OFB and RC4 encryption. The AES 128 mode is the same as in Xojo (or Real Studio).

To enable encryption, please use in FileMaker the SQL.SQLite3.SetKey function after connecting. In Xojo we have SQLiteEncryptionKey properties in both SQLDatabaseMBS and SQLConnectionMBS classes. If you set those, the plugin will apply the key after connecting automatically for you. Alternatively you can use SetKey method in SQLite3MBS class directly.

Interested in testing, please contact us soon to get a copy to try or wait for the next prerelease to be uploaded.

Install FileMaker 14 Server on Windows 10

First, FileMaker doesn't support Windows 10 yet. The installer fails with error message "IIS Application Request Routing (ARR) is required.." for me.

The instructions from Peter Wood helped. So I downloaded and installed Application Request Routing 3.0 myself.

Next I launched the FileMaker Server installer (14v2) and cancelled it after it decompressed. Than I changed the "Assisted Install.txt" file in the Files folder with installation files to have the license key and name already, so I don't need to enter it myself.

In the setup.ini I had to remove below the [ISSetupPrerequisites] section the first four lines for Application Request Routing. I installed this software myself before and FileMaker's installer fails to download it.

To run the installer, I run cmd to open a terminal window. There I use cd to go into the folder and run this command line:

setup.exe /V"/log FM14InstallLog.log ARRINSTALLED=1"

Please mind the quotes. The installer runs through like usual and I can setup my admin account.

Finally I have a FileMaker 14 Server running on Windows 10 with MBS Plugins and no problems so far :-)

MBS FileMaker Plugin, version 5.3pr4

New in this prerelease of the 5.3 plugins:
  • Added DynaPDF.ShowDifferences function.
  • Added QuickList.List and RegEx.List to list IDs of current lists or regular expressions.
  • Fixed bug in PHP plugin which caused crash with phpinfo function.
  • Added Container.Compress and Container.Decompress functions.
  • Added compressed option for Files.ReadFile function.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

PDF Differences

For the next prerelease we add a new DynaPDF function for both FileMaker and Xojo to show differences in two PDF pages.

This is a new function written to annotate a page in a PDF with highlight annotations if two blocks in a the pages have different image. This works well here and shows differences in various PDFs. We include a check to make sure that lines moved up or down on the PDF page don't cause to be highlighted.

Please try soon in next prerelease. You'll need a DynaPDF Pro license as this is based on the render feature.

Compressed Containers

As you may know our MBS Plugin can read compressed containers for a while. Now with new plugin version we add creation of compressed containers.

Container.Compress compresses an existing container. This way you can loop over records and compress them on the fly. But be aware that a lot of media formats (PDF, images like JPEG and PNG, audio and video files) are already compressed, so compressing them again may increase size! But you can use our Container.GetTotalSize function to check if size after compression is actually smaller.

With the new function Container.Decompress you can decompress containers. This allows you to decompress a container if it's compressed and pass it to a function which doesn't understand compressed containers. To know if a container is compressed, check with Container.GetTypes function if there is a ZLIB data stream in the container.

Our function Files.ReadFile can read a file. In next plugins you can use mode = "compressed" to return the content of a file as a compressed container.

All the compressed container functions work fine on older FileMaker versions like 11 where FileMaker doesn't support it.

MBS FileMaker Plugin, version 5.3pr3

New in this prerelease of the 5.3 plugins:
  • Added more modes to auto, pdf, png, jpg, tif, gif, bmp or psd.
  • Added Text.ReadEMLXFile function.
  • Added new Audit example showing audit log changes in portal.
  • Added new parameter for List.RemoveDuplicateItems to remove all duplicates without leave one.
  • Added new XML.Import functions.
  • Added some Windows support for URLScheme.SetDefaultHandler.
  • Added FM.InsertRecordTSV function.
  • In Addressbook API you can now specify the group by name instead of ID.
  • Fixed bug in DropView which was not removed properly on closing from the window.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Tip of the day: Build contextual menu in FileMaker from a table

As you see here, we build a menu in FileMaker. We go to a separate layout with our menu entries table. There we loop from first to last record and look if the group matches the one we got in script parameter. Than we add this menu entry to the menu for calling the script in the table. This way the user can edit menu by editing the table.

 

# go to layout with menu entries

Go to Layout [ “REP” (REP Reports) ]

# this script can be called with various groups

Set Variable [ $type ; Value: Get(ScriptParameter) ] 

# make a new menu

Set Variable [ $menu ; Value: MBS( "Menu.CreateMenu") ] 

# loop over records

Go to Record/Request/Page [ First ]

Loop

# if group matches

If [ REP Reports::Group = $type ] 

# add new menu item with title from table

Set Variable [ $item ; Value: MBS( "MenuItem.CreateMenuItem"; REP::LabelReport) ] 

# define which script to call if menu item is selected

Set Variable [ $r ; Value: MBS( "MenuItem.SetScriptAction"; $item; Get(FileName); REP::Script ) ] 

# add item to menu

Set Variable [ $r ; Value: MBS( "Menu.AddItem"; $menu; $item ) ] 

End If

# next record?

Go to Record/Request/Page [ Next ; Exit after last ] 

End Loop

# switch layout back

Go to Layout [ original layout ]

# Show menu

Set Variable [ $r ; Value: MBS( "Menu.PopUp"; $menu; "mouse") ] 

# Cleanup memory

Set Variable [ $r ; Value: MBS( "Menu.Release"; $menu) ] 

 
On the right a sample menu made by the plugin, so you can see what is possible.

XML Import for FileMaker

Today we introduce our new XML.Import function for FileMaker. it can be used to import any XML file and create records. It translates any field or attribute to fields in new tables. And if the table is missing, the function creates the tables and add fields.

So when you have a job to get regularly a XML imported into your FileMaker solution, e.g. new zip code list every month, you can use this function. First you copy the import script from our example database and import the file once. This will not just import thousands of records, but also create all the required tables. We recommend to put this in a separate import database file, so all those records don't disturb your normal solution. Now when you have maybe 10 new tables generated by our plugin, you can create layouts to show the records. This way you can verify the data is right.

Next step is to use the data. There are two ways. One can be to just reference the import tables from your other database files for lookups, e.g. to find city name for a zip code. Other way is to have scripts walk over the records to copy the relevant portion of the data into your own tables. The imported xml values are all stuffed in text fields and you may have a lot more fields than you may need. So reducing the data and copying it into your own tables will improve performance for lookup. Feel free to add indexes to the tables as needed.

The import process itself runs asynchronously in the background at idle time. So you call XML.Import once and you get back the number of records it plans to create. Now you loop doing script pauses and checking for status. XML.Import.Status will return you the status. It will be "Working" until the work is done and it switches to "Finished". Using the XML.Import.Todo function you can query the current number and show progress dialog like our example.

All tables have three default fields. _RecordUUID is an unique identifier for the record. _ParentRecordUUID provides a link to the record one level higher in the XML. This can be used to find child/parent records. The _CreationTimeStamp is the creation date, so you can distinguish different imports.

Coming soon with next prerelease. For FileMaker 12 and newer.

PS: We also have FM.InsertRecordTSV function to import tab/return text and SQL functions to copy records from within FileMaker or other SQL database to a FileMaker table.

New today: FM.InsertRecordTSV

Today we looked into quick import of records from text. A client has from other application a big block of text with tab/return separated values and wants to import them into records.

Our new function FM.InsertRecordTSV takes a name of a table, file, the fields and the text blob and walks over the text to create new records. Works just fine and is very fast. We'll see what other wishes people have on this topic.

MBS FileMaker Plugin, version 5.3pr2

New in this prerelease of the 5.3 plugins:
  • Updated DynaPDF to version 3.0.43.128.
  • Added Social and SocialRequest functions to use OS X social accounts like Twitter or Facebook.
  • Changed window functions to once again accept three ways: Empty parameter or zero for front window, ID number for Window reference or title of any window.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Archives

Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008