JSON is a very popular data format, because it is easy readable for humans and can be easily parsed by software. It is a data format often used to transfer data in APIs over the Internet. The MBS FileMaker Plugin supplies you with a lot of JSON functions, optimized for performance and usability.
"color":["blue", "white", "pink"]
"color":["blue", "black", "pink", "purple"]
Validating the JSON and format it
If we get a JSON it is usually unformatted and the direct reading can be confusing for you as developer. With the function „JSON.Format“ in combination with „JSON.Colorize“ you can format and color the JSON text to understand the data structure much easier.
If you want to write a JSON by your own, you have different possibilities to do this. You can enter a JSON as a text and remove needles blankets with „JSON.Compact“ function.
Attention: Strings are in quotes in JSON. If you want to write a quote in FileMaker you must escape the quotes with a prefix backslash (\"), else you get an error. Some special tip for Mac users: The escaping in huge texts can take lots of time, because of that you can use the search and replace function that the MBS Plugin provides you for Mac. You can search for " and replace them with \" using our find bar, saving you some time. But you should pay attention on the quotes that should’t be escape and change them back manually.
It is advisable, to check a JSON for errors and validate the JSON. For that you have the „JSON.IsValid“ function. Here we parse the JSON, but don't return an error message, but just 0 for an error and 1 for okay.
If you call this on start of solution (in development mode), you register a hotkey Control-F5 to write a text file with contents of data viewer into a text file on desktop. Useful for a quick copy to later compare values:
Run once and you can press the hotkey to write current script to a folder, which you can track for version tracking. If you prefer XML, use menu commands to do select all(Menubar.RunMenuCommand with ID 57642) and copy content to clipboard (menu command 57634). Then use Clipboard.GetFileMakerData to read XML and write to file.
PS: You like to get formulas formatted like above? Simply copy them with Command-Option-C or use SyntaxColoring.Format function in your script.
There is a problem with Apple's automated checks for the iOS and Mac app stores. Apple checks if you call private API functions from them and you may get a notice like this:
We identified one or more issues with a recent delivery for your app, "EverTools" 1.8.3 (22). Please correct the following issues, then upload again.
TMS-90338: Non-public API usage - The app references non-public selectors in Frameworks/MBS.fmplugin.framework/MBS: batteryWarningLevel, cardNumber, connectedDevices, connectionState, dateOfBirth, deviceIdentifier, deviceList, duplicate, features, high, isBluetoothAvailable, low, picture, protocolVersion, reading, removeDevice:, sdkVersion, sendCommand:, sensors, sex, softwareRevision, startScan, versionNumber. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/
Those functions are part of the MBS Plugin 9.5 and relate to our support for bluetooth card readers and thermometers. It's really annoying that Apple forbids you to name an objective-C function isBluetoothAvailable in your application. We'll put in a workaround so newer plugin for iOS will not use those function names.
Please don't hesitate to contact us if you have questions or need the fixed plugin.
xml = MBS( \"Clipboard.GetFileMakerData\"; \"ScriptStep\" );
/* search and replace */
xml = Substitute ( xml; SearchText; ReplaceText);
/* put XML back on clipboard */
r = MBS( \"Clipboard.SetFileMakerData\"; \"ScriptStep\"; xml );
/* paste script steps */
r = MBS( \"Menubar.RunMenuCommand\"; 57637 )
Copy and paste this into the data viewer and evaluate it once to add the command to the contextual menu. Now you can just select a few lines, choose the menu command and we do a search and replace. The new lines are pasted below the old license and you can review them.
Recently we had a client from Belgium who was interested in reading eID, the electronic ID cards given out by the country of Belgium.
Those cards are normal smart cards and we already provide functions via our Smartcard functions to read the data from those cards including the pictures.
Now this client is interested in using FileMaker iOS SDK, so our traditional SmartCard APIs won't work. We implemented the iOS SDK from Zetes for the client and added new EIDSDK functions for the next MBS FileMaker Plugin.
Claris Inc. deprecated the FileMaker runtime feature in version 14 and recently announced its removal for the upcoming version 19 in May 2020. If you still depend on building runtimes, it's time to consider moving yourself and your customers in a new direction.
You can of course continue for a few years with FileMaker Pro 18 Advanced to create and deploy runtimes. But it is time to tell your clients that this won't work forever. A security policy change, a newer version of MacOS or Windows OS, or a switch in CPU architecture to ARM could stop the applications from working. Other changes like a new codec for images, some new web protocols or other features will not be supported in runtimes and probably a change in future OS could affect you badly causing crashes on launch or when working with some features.
To continue distributing your solution with FileMaker, please check the options:
You can continue with the runtimes until they fall apart.
You can ask user to migrate to an iPad or iPhone and use FileMaker Go with your solution.
You could sell the database alone and let your users get a copy of FileMaker themselves. That may be a good thing to let your customers know: When the runtime stops and they need to use the applications, they could buy a FM Pro themselves and contact you to help to move the database.
You may be able to join the SBA program and bundle FileMaker Pro with your software. This may enable you to sell a standard solution for more than one seat and provide a server version. As you get a discount for FileMaker licenses, this could be a bit cheaper then using regular licenses. And there was a discussion at the conferences that in future FileMaker may offer a program to buy license packages and split them up for customers in need of less then 5 seats for a server.
You could offer clients the new FileMaker Cloud to host the solution if they don't want to host themselves and they have at least 4 or 5 users. This may be a great way forward for clients, who don't want to maintain a server and still want to use the solution with multiple users and enjoy proper security and backups.
So you may offer people to license your solution and use it with FileMaker Go or their own copy of FileMaker Pro. You may offer for 2 or more users your solution as SBA version or with 4 or 5 as Cloud solution. Joining FBA program or register with a FileMaker distributor is a good way to increase your margin and receive discounts for buying licenses in bigger quantities.
For example you can offer 1 seat for e.g. $99, 2 or more for something like $20/month, optional with server for 5 or more and of course the cloud solution for something like $50 per month. But you have to find a way forward which makes Claris happy, yourself happy (with a good margin) and your customers happy. If your solution is not worth the price asked, this may require you to let a few customers go.
Themen sind die Neuerungen von der FileMaker Konferenz und der FileMake Roadmap. Gerne auch Fragen an uns zum MBS Plugin. Bei Interesse bitte gerne direkt beim Veranstalter anmelden bzw. auf die Mailingliste setzen lassen.
Falls sonst noch Bedarf an Schulung, vor Ort Entwicklung oder FileMaker/Xojo Hilfe besteht, bitte wegen Terminfindung bald bei uns melden.
PS: Für die MBS Plugin Schulungen bei der Denkform gibt es noch freie Plätze.
Nickenich, Germany - (November 12th, 2019) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 9.5 for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, macOS, iOS and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 9.5 has been updated and now includes over 5900 different functions, and the versatile plugin has gained more new functions:
Visiting conferences in October in Europe provides a lot of new ideas. This release comes with two enhancements to FileMaker itself (for MacOS), where the ideas came up at the conferences. First we now show you the cursor position above the text fields when entering expressions or custom functions. When you select text, we even show the selection length.
Second, with SyntaxColoring.AddContextMenuCommand method you can define your own commands for the contextual menu in script workspace on MacOS. We provide a few examples in the documentation to edit script steps or insert new ones. As you can leverage the built-in MBS commands in the menu commands, you can use XML transformations, run SQL queries, Shell or AppleScript commands and read/write text files in your expressions. You can define expressions to check syntax and coding standards for scripts, insert common snippets or do search & replace within the script. We hope the FileMaker community will collect useful commands.
The DynaPDF functions can now create XFA stream sections in the PDF document, read and write XFA data. With the DynaPDF.GetUserRights function you can query the permissions the user has on the imported document. We improved the library loading, so you can now just pass "" for the library path. If path is empty, we will use the platform specific default name. And if empty text or just a file name is provided, we look for the library files in the same folder as the plugin.
For Apple maps on MacOS and iOS we have a couple of new properties to set for points including enabling drag with a custom drag image. Points can now change their image and define an extra selected image. Overlays can change colors and line width. Maps can be zoomed programmatically and with MapView.MouseCoordinate function you can query the coordinate below the mouse cursor.
The list dialog now supports a third button, you can show on screen keyboard via Window.ShowKeyboard function and query whether dark mode is enabled on a Mac. Our preferences dialog now supports dark mode, SmartCard.ReadFile supports more cards, GMImage.NewFromContainer can handle JPEG and PNG passed with wrong type and documentation includes now links to release notes and blog articles.
This version includes a few important bug fixes for running the plugin on a sever. The background threading for CURL and SQL got improved to avoid crashes. Our Linux plugin for FileMaker Cloud for AWS got an important fix to avoid crashes with buffer overrun after several hours of running. Please update your servers to avoid running into those issues.
Finally we updated DynaPDF library to version 126.96.36.199, LibSSH to 1.9.0, openssl to 1.1.1d, SQLAPI to 5.0.1, SQLite to 3.30.0 and zint library to 2.6.7
Nickenich, Germany - (November 12th, 2019) -- MonkeyBread Software today is pleased to announce MBS Xojo Plugins 19.5 for macOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin collection currently available for Xojo. MBS Xojo Plugins have been updated and now includes over 2600 classes and 65,000 documented features, and the versatile plugins have gained more new functions:
We support over 12 years of Xojo versions from 2006r4 to the latest 2019r2 release. Older Real Studio plugins are still available on request. Our SQL Plugin got updated to support newer API 2.0 calls with ExecuteSQL and SelectSQL methods and using RowSet class. We continue to provide the older APIs for use in older and current Xojo versions. To mitigate switching between versions we even provide NativePath for Real Studio and AbsolutePath for Xojo 2019r2 via plugin.
For Windows we developed a replacement for the IPCSocket class in Xojo. With our WindowsPipeMBS class you can create named pipes and exchange data between two processes without going through the network stack (and firewall) and without going through the file system. We even include methods to allow connectivity between a service running in the background and an user application on the desktop.
The classes for JPEG and PNG handling got a major upgrade. We now include JPEG Turbo library. Once activated, you can speed up JPEG compression and decompression by factor 2 to 5 (in our testing). For PNG, JPEG and TIFF classes you can now pass file paths as string instead of FolderItem. PNGReaderMBS class got options to strip or invert alpha channel, read gray images to memoryblock without expanding them to RGB or convert RGB to grayscale images.
We now use SQLAPI in version 5, so a couple of things changed on the SQL Plugin. As each connection can now decide which client library to use, you can now decide per connection whether you use built-in libraries for SQLite, CubeSQL or PostgreSQL or your own library. We offer many database specific commands directly on the relevant SQL connection or command classes. For API 2.0 you can now query RowSet for SQLCommandMBS objects. For CubeSQL we have SendData and ReceiveData methods to send and receive files. SQLPreparedStatementMBS class is updated for changes in Xojo 2019r2.1.
Due to changes in variant handling, use of datetime class and SQLPreparedStatement changes, we highly recommend this update to everyone using Xojo 2019r2 or the upcoming 2019r2.1 version. Changes in the implementation of various functions moving from older to newer APIs make this release a recommended update for everyone targeting MacOS Catalina.
For our WebKit 2.x browser implementation in WKWebViewControlMBS control we now support private browsing. The new WKUserScriptMBS class allows you to add custom user scripts to each website.
We updated ResourceForkMBS class to work on 64-bit MacOS target and added 64-bit Linux support for Rockey2 dongles. Our DynaPDF classes got new methods to handle XFA streams. With ClearStringContentMBS method you can now clear the content of a string to not leak passwords in memory. The map views shown by the plugin can now programmatically change the zoom level.
Finally we updated DynaPDF library to version 188.8.131.52, LibSSH to 1.9.0, openssl to 1.1.1d, plugin SDK to Xojo 2019r2, Rockey 2 SDK to v2.201r10, V1.41 for Linux, V1.21 for Mac, SQLAPI to version 5.0.1, SQLite to version 3.30.0, zint library to 2.6.7.
12. November 2019 - Monkeybread Software veröffentlicht heute das MBS Plugin für FileMaker in Version 9.5, mit inzwischen über 5900 Funktionen eines der größten FileMaker Plugins überhaupt. Hier einige der Neuerungen:
Bei der FileMaker Konferenz in Hamburg gab es zahlreiche neue Ideen für Pluginfunktionen. Unter anderem auch zwei Wünsche für FileMaker selber, die wir direkt für MacOS umsetzen konnten. Erstens zeigen wir jetzt über einem Eingabefeld für eine Formel oder eine eigene Funktion die Textposition an. Wenn Text ausgewählt ist, zeigen wir die Länge der Auswahl an.
Zweitens können Sie mit der Funktion SyntaxColoring.AddContextMenuCommand eigene Befehle definieren für das Kontextmenü im Skript Arbeitsbereich (bei MacOS). Wir zeigen mit einigen Beispielen in der Dokumentation wie man Skriptschritte ändert oder neue einfügt. Sie können sämtliche MBS Funktionen für die Menübefehle verwenden inklusive XML Transformationen, SQL Abfragen, Shell oder AppleScript Befehle und natürlich auch Textdateien lesen oder schreiben. Sie können Befehle definieren, die ihr Skript auf Fehler analysieren, Standards überprüfen, neue Skriptschritte einfügen und im Skript Suchen & Ersetzen. Interessierte FileMaker Entwickler werden sicher bald selber passende Befehle veröffentlichen, die sie verwenden können.
Die DynaPDF Funktionen können jetzt XFA Daten in ein PDF Dokument einbetten, vorhandene Daten auslesen oder ersetzen. Mit der neuen Funktion DynaPDF.GetUserRights fragen Sie die Zugriffsrechte für das aktuelle PDF ab. Wir haben die Funktionen zum Laden von dynamischen Bibliotheken verbessert, so dass Sie jetzt als Pfad "" angeben können und wir nehmen den Standard Dateiname für die Bibliothek. Und wenn der Dateiname angegeben wird und kein vollständiger Pfad, dann schauen wir im Pluginordner nach.
Für Apple Maps auf MacOS oder iOS haben wir neue Eigenschaften für Punkte inklusive der Möglichkeit Drag & Drop zu aktivieren. Punkte können jetzt ihr Bild ändern und separate Bilder nehmen für normal, angeklickt und Drag & Drop. Overlays können die Farbe und die Linienbreite ändern. Stellen Sie die Vergrößerung für eine Karte per Skript ein und fragen Sie ab, welche Koordinate sich gerade unter dem Mauscursor befindet.
Der Listendialog unterstützt jetzt einen dritten Button, Sie können mit dem Window.ShowKeyboard Befehl die Bildschirmtastatur anzeigen lassen und abfragen, ob der Darkmode auf einem Mac aktiviert ist. Unser Einstellungsdialog unterstützt jetzt den Darkmode am Mac, SmartCard.ReadFile unterstützt mehr Karten, GMImage.NewFromContainer kann JPEG und PNG verarbeiten, die mit falschem Typ übergeben wurden, und die Dokumentation enthält jetzt Links zu Versionshinweisen und Blogartikeln.
Diese Version enthält einige wichtige Fehlerbehebungen für die Ausführung des Plugins auf einem Server. Das Threading für CURL und SQL wurde verbessert um Abstürze zu vermeiden. Unser Linux-Plugin für FileMaker Cloud für AWS hat eine wichtige Korrektur erhalten, um Abstürze mit Pufferüberlauf nach mehreren Stunden Laufzeit zu vermeiden. Bitte aktualisieren Sie Ihre Server, um diese Probleme zu vermeiden.
First we got questions for subscription pricing. First we don't sell the plugin licenses as subscriptions. We ask you to keep the license up to date and buy maintenances. And you can buy them for up to 5 years in the future. But we will continue to have a nice kind of licensing, where we do not technically force you to buy the updates.
You can continue to keep the old license with the old plugin files until they break. Please be aware that newer FileMaker / Xojo versions may break them as well as newer versions of the operation system. Looking on security related changes in the plugin and used libraries, it is highly recommended to keep the plugins updated to get latest versions of them.
If you like to see it as subscription, please consider the update price as subscription price. For first purchase, you pay a year to get current version and a year of updates, which defines the purchase price.
For the conferences we used to offer 20% on everything as discount. This is a great incentive for visiting the conference and buying some of the software you see for a special show price. With yearly licenses, some people tend to only buy at the conferences and that is the direction we don't like.
Starting with next conferences we limit discount to new licenses only. Also with more conferences here on the horizon, we may reduce the conferences where we have a booth and just put up some posters and be available for questions.
We'll continue to sponsor as many conferences as possible and prefer to sponsor those where we can attend. If you have details on a conference we may attend or sponsor, please let us know.
As you know we didn't change prices for ten years, but are always looking on fine tuning them. For Xojo plugins, we continue to de-emphasise buying individual parts and prefer to sell Complete plugin set licenses.
With DynaPDF 5 on the horizon, pricing is expect to change and we allow all existing users to order up to 5 years of maintenance for todays prices.
Last versions for 32-bit on MacOS?
Next year, we may upgrade to MacOS Catalina. That could break our ability to build for 32-bit. In that case version 9.5 for FileMaker or 19.5 for Xojo may be the last ones to support 32-bit on macOS. This is just a warning and you should be on our list for FileMaker MacOS 32-bit version or Real Studio Plugin version if you asked for them before.
As all MacOS versions since 10.7 from year 2011 are 64-bit operation systems, 32-bit is only needed for older OS versions. But we only support MacOS 10.9 or newer, so there is hardly any use for 32-bit plugins.
As you may know Xojo deprecated AbsolutePath a few years ago and removed it in Xojo version 2019r2. Now we have projects ranging from old Real Studio versions to latest Xojo versions. I currently have 12 difference Xojo versions installed, three Real Studio versions and two REALbasic versions. We use the QuickLook plugin from us to have each project show version number in the icon.
Recently we added NativePath to FolderItem class for REALbasic and Real Studio. Newer code using NativePath now compiles even in Real Studio. For projects in Xojo 2019r2 we now add AbsolutePath function for FolderItem, so older code using it can still be built. For some projects we even switch between various versions. For example develop on Windows with Real Studio and just use Xojo for building the 64-bit version.
Of course we know that we should get rid of AbsolutePath. But the problem is in compatibility and in the detail. Older projects put file references as AbsolutePath into documents to find related files. Newer versions of the applications now use NativePath or GetSaveInfo functions. But we still want to read old documents with old paths and resolve them. It would be a support nightmare if clients call support about projects not finding their files.
For MBS Plugin 19.5 we add AbsolutePathMBS to folderItem class for all versions of Xojo and Real Studio. We got NewFolderItemFromAbsolutePathMBS function to resolve the absolute path. This even works fine in MacOS Catalina as far as we see.
Recently a couple of users asked how to access network shares on a FileMaker Server. The built in commands from FileMaker are all limited to documents and temporary directory. But with the MBS FileMaker Plugin (and other plugins) you can access other places on the server.
A common use case is to put a second hard disk on the server, create a backup folder there and have a scheduled script copy over some files regularly from the documents folder to the external hard disk. You may get a permissions errors. But you can simply solve this by explicitly giving right permissions to the folder to make it accessible for FileMaker server scripting process executing plugin functions.
So let's talk about those accounts. There are various accounts used on a FileMaker Server when working with network shares or folders on disks.
The account your script is logged in to the FileMaker Server, e.g. admin account. Or let's say better a limited account named "backup", which may not need to access all tables in all files. You can query this name with Get(AccountName) in your script.
The account the FileMaker server runs on the system. For MacOS this is usually a separate user named fmserver. You can query this name with MBS( "SystemInfo.UserName" ) function.
The account you login to a remote file server to mount the network share. This may just be a normal login name or with a domain controller something like "SRV2012\bob".
The account of the local admin, who logs into the server to see the desktop.
Now the admin on the machine may use his account (4) to login and see the desktop. He can use FileMaker admin console in the browser and use his account on the file server (3) to mount a network share and optionally attach it to a local drive letter, e.g. Z.
If a script running under the account "backup" (1) on the FileMaker server tries to write to the network share, it only has the permissions of the FileMaker Server scripting process (2). Access is denied as the network share is mounted exclusively for the local admin (4).
There are two solutions:
You can mount a network share both on MacOS and Windows to allow access for all users. This can be tricky and there are various tutorials on the web.
You can use MBS Plugin with Files.Mount function to have your script mount the network share itself, do its business and then unmount it via Files.Unmount function.
We do prefer the second way as it's more secure. The network share is only mounted for a short time period and only accessible to the FileMaker server while mounted. Even if someone is using the computer, they may see the drive letter, but not access it.
If you have questions, please do not hesitate to contact us.
For our MBS Xojo Images Plugin we added support for libjpeg-turbo. The new JPEGTurbo plugin part encapsulates the libraries for MacOS, Windows and Linux, all built with SIMD instructions for better performance.
In Xojo the JPEGTurboMBS module provides the API pointer, which you can pass via SetAPI functions in JPEGImporterMBS or JPEGExporterMBS classes. Then the next load or save uses the new functions which work with higher performance.
Speed improvements are notable, but of course depend on your test images and computer configurations. We have seen speed increase by factor 2 to 5 here.
Please try the classes soon and report any feedback you have. Included in 19.5pr7 upload.
Next year in April our company will turn 20 years old.
We'll plan to have a big party here in Germany near our office with over 100 guests.
Invitations are going out this month in several batches.
If you like to join and you miss an invitation, you can contact us and ask whether your invitation got lost.
As people confirm they are coming, we'll add them to the guest list. If we run out of space, we may put people on the wait list.
If you can't make it, please respond soon, so we don't need to contact you again later.
New in this prerelease of version 9.5 of the MBS FileMaker Plugin:
Changed trace functions to log name of script and file if changed from last MBS call.
Changed DLL loading for DynaPDF.Initialize and XL.Initialize functions to look for given DLL path, try 32/64 DLLs. If only file name is given, we look into plugin folder, too. If no file name is given, we try default file name.