Sprecher gesucht für Deutsche FileMaker Konferenz 2020 in Malbun


Noch 7 Monate bis zur FileMaker Konferenz 2020 in Malbun (Liechtenstein) und zur MBS FileMaker Plugin Schulung am Mittwoch vorher.

Vom 17. bis 20. Juni 2020 findet die elfte deutschsprachige FileMaker Konferenz in Malbun, Liechtenstein statt. Aktuell werden Sprecher gesucht mit interessanten Vorschlägen für Sessions. Bitte reichen Sie Ihre Vorschläge bis zum 10. Dezember 2019 einreichen. Wir haben schon fleissig vorbereitet und diesmal fünf Vorschläge eingereicht.

Die Veranstalter vom Verein FM Konferenz erwarten auch 2020 rund 120 Entwickler, Anwender, IT-Fachleute und Entscheidungsträger aus Wirtschaft, Bildung und Verwaltung. Rund um über 20 Fachvorträge und Workshops wird es viel Zeit zum Vernetzen in den gemeinsamen Pausen und beim Abendprogramm geben.

Für den Deutschsprachigen Raum ist diese Konferenz das Treffen des Jahres. Hier finden Sie vom Anfänger bis zum Profi Kontakte zu anderen Entwicklern. Lernen Sie was es neues gibt, lernen Sie wie man Probleme löst und erzählen Sie den FileMaker Mitarbeitern was Sie sich für die Zukunft bei FileMaker wünschen!

Die MBS Plugin Schulung vorher findet voraussichtlich am 17. Juni 2020 statt (im gleichen Hotel).



Interesse an mehr? Die Claris Engage Europe 2020 vom 26. bis 28. Oktober 2020 bietet deutlich mehr Vorträge, mehr internationale Teilnehmer und vor allem FileMaker Mitarbeiter aus den USA, die gerne mal einen Blick unter die Haube von FileMaker bieten.

Happy Thanksgiving


We wish a Happy Thanksgiving to all our clients, partners and friends all over the world.

For Black Friday we decided to offer this year two things:

First use coupon code BlackFridayMBS for our web shop to order new licenses with a 20% discount. Works for both FileMaker and Xojo plugin licenses.

If you have special needs, you can email us to get an invoice or Paypal payment link directly. We know some people need to wait till next week to order, so the offer is valid till Tuesday.

Second if you have purchased previously an individual MBS Xojo Plugin part from the Complete Set within the last two years, but not the whole set, we offer you an upgrade to the Complete set for the update price. Please consider to get the whole collection of 35 plugins instead of just one plugin.

See also Xojo Thanksgiving Sale and a xojo.io/deals for a collection of offers.

MBS FileMaker Plugin Installation Videos


Over the last week Stefanie created a set of four videos to explain installation of the MBS FileMaker Plugin:
Thumbnail
macOS English
Thumbnail
macOS Deutsch
Thumbnail
Windows English
Thumbnail
Windows Deutsch
We hope those videos help new users to easier get started.

SQL injections


For years we told people to use prepared statements. But recently we run a test to see what happens in real world. So we created a login form on our website. The login form, does never log you in and just writes down the login credentials to a database using prepared statements. This page is not linked and no human should ever find it. But there are bots testing whether you have some common folder names like "wordpress", "admin" or "login".

Unions

After a few weeks, we checked the database and got hundreds of login attempts. At least 100 per month come to our form. Most of the things entered in our form are attempts to exploit the SQL with an SQL injection. We see common patterns like the following values for user name:

' UNION ALL SELECT NULL--
' UNION ALL SELECT NULL,NULL--
' UNION ALL SELECT NULL,NULL,NULL--
' UNION ALL SELECT NULL,NULL,NULL,NULL--
' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL--
' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL--
' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL--
' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--
' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL--

If you don't use prepared statements, this would end the string of the username comparison and combine the result with an second result with the given number of NULL values. If this is valid SQL, it may execute. e.g. if you have a query like

"SELECT UserID FROM Users WHERE Username='"+username+"' AND Password='"+Password+"'"

the attack will be successful. Instead of the proper way:

"SELECT UserID FROM Users WHERE Username=? AND Password=?"

The user names from above will end the quote from user name, do the union and declare the rest of the line to be a comment with the two dashes. If the first try works, the login may first succeed and second the attacker knows we have one field in the result. (more)

MapView video in English and German


ThumbnailStefanie translated her presentation and made an English version for you.

in English:
MapView Presentation or on Youtube

in Deutsch:
FMK2019 Karten in FileMaker MapKit

More videos on the website.

New functions of the MBS Plugin Version 9.5


In this article Stefanie introduces some of the new functions of the MBS Plugin version 9.5.

The list dialog

At first we start with news about the list dialog for Windows and Mac. With the list dialog component we show a list dialog with entries and you can select an item. With the new plugin version you can add a new third button to this dialog. For example it can call an information website for this dialog. In the following script we create a listdialog with two items and an info button.

Set Variable [ $r ; Value: MBS("ListDialog.ClearList") ]
Set Variable [ $r ; Value: MBS("ListDialog.SetPrompt"; "Please select an item:") ]
Set Variable [ $r ; Value: MBS("ListDialog.AddItemToList"; "First Item"; "1") ]
Set Variable [ $r ; Value: MBS("ListDialog.AddItemToList"; "Second Item"; "2") ]
Set Variable [ $r ; Value: MBS("ListDialog.SetAllowMultipleSelection"; 1) ]
Set Variable [ $r ; Value: MBS("ListDialog.SetSelectedTitle"; "1") ]
Set Variable [ $r ; Value: MBS("ListDialog.SetOtherButtonLabel"; "Help") ]
Set Variable [ $r ; Value: MBS("ListDialog.SetOtherButtonEvaluate"; "MBS( \"ShowURL\"; \"https://mbsplugins.eu\" )") ]
Set Variable [ $r ; Value: MBS("ListDialog.ShowDialog") ]

(more)

Dutch FileMaker Meetup 9th December near Utrecht


On December 9th, a group of Dutch FileMaker developers hosts a meeting of the FileMaker Developers NL meetup group:

FileMaker Developers NL Meetup

The meeting will be held in Vleuten near Utrecht:
De schakel, Schoolstraat 11, 3451 AA Vleuten

The meetup will be held on Dec. 9th, 19:00 - 22:00.

The program:
  • We will look back at the fmSummit in 's Hertogenbosch and discuss future meetup’s and other upcoming events;
  • Interactive calendars with fullCalendar and Javascript;
  • Do’s and don't’s of the FileMaker Runtime and developments in the FileMaker platform with respect to the runtime;
  • New features of the MBS Plugin.
  • And of course, we are interested in your experience with the new FileMaker Cloud and Claris Connect offerings.
A small fee (< €10,-) will be requested to make up for the costs involved.

See you there!

Insert snippet for FileMaker on Windows


Recently we wrote about adding commands to the contextual menu in FileMaker Script Workspace. That was for MacOS only, but today we have something for the Windows users:

 

MBS( "HotKey.SetEvaluate"; MBS("HotKey.Register"; "F7"; "control");

"Let ([ 

xml = \"<fmxmlsnippet type=\\\"FMObjectList\\\"><Step enable=\\\"True\\\" id=\\\"89\\\" name=\\\"# (comment)\\\"><Text>loop counting up from 1 to $count</Text></Step><Step enable=\\\"True\\\" id=\\\"141\\\" name=\\\"Set Variable\\\"><Value><Calculation><![CDATA[\\\"/* add count here */\\\"]]></Calculation></Value><Repetition><Calculation><![CDATA[1]]></Calculation></Repetition><Name>$count</Name></Step><Step enable=\\\"True\\\" id=\\\"141\\\" name=\\\"Set Variable\\\"><Value><Calculation><![CDATA[1]]></Calculation></Value><Repetition><Calculation><![CDATA[1]]></Calculation></Repetition><Name>$index</Name></Step><Step enable=\\\"True\\\" id=\\\"68\\\" name=\\\"If\\\"><Calculation><![CDATA[$index ≤ $count]]></Calculation></Step><Step enable=\\\"True\\\" id=\\\"71\\\" name=\\\"Loop\\\"></Step><Step enable=\\\"True\\\" id=\\\"89\\\" name=\\\"# (comment)\\\"><Text>your script steps here</Text></Step><Step enable=\\\"True\\\" id=\\\"89\\\" name=\\\"# (comment)\\\"></Step><Step enable=\\\"True\\\" id=\\\"89\\\" name=\\\"# (comment)\\\"><Text>next</Text></Step><Step enable=\\\"True\\\" id=\\\"141\\\" name=\\\"Set Variable\\\"><Value><Calculation><![CDATA[$index + 1]]></Calculation></Value><Repetition><Calculation><![CDATA[1]]></Calculation></Repetition><Name>$index</Name></Step><Step enable=\\\"True\\\" id=\\\"72\\\" name=\\\"Exit Loop If\\\"><Calculation><![CDATA[$index > $count]]></Calculation></Step><Step enable=\\\"True\\\" id=\\\"73\\\" name=\\\"End Loop\\\"></Step><Step enable=\\\"True\\\" id=\\\"70\\\" name=\\\"End If\\\"></Step></fmxmlsnippet>\"; 

r = MBS( \"Clipboard.SetFileMakerData\"; \"ScriptStep\"; xml ); 

r = MBS( \"RemoteControl.PressControlKey\"; 1 );

r = MBS( \"RemoteControl.PressKey\"; \"v\");

r = MBS( \"RemoteControl.PressControlKey\"; 0 )

]; 1 )"; 0 )

This is an example expression, which registers in one line a hotkey in FileMaker. If you press Control-F7 in Script Workspace, the plugin will put the XML on the clipboard for a loop counting up from 1 to $count. It uses press key functions to press Control-V on Windows to paste the XML right into script workspace.

Please check HotKey.Register and SyntaxColoring.AddContextMenuCommand functions to learn what other expressions you can use. While on MacOS we can use context menu to trigger those commands, you can install them on Windows as hotkeys and do similar things.


Simulating a terminal in FileMaker


As you may know we have Shell functions in MBS Plugin. For next version, we'll add some new triggers, so you can even emulate a terminal window in FileMaker:

Why this may be useful? You can configure the Mac to not allow Terminal to run for a limited user account and still have your own terminal window available for support, which is controlled by permissions in FileMaker.

FMNext mit MBS Vortrag


Am Dienstag, den 19. November 2019 veranstaltet die Medio-Ingeno AG einen FileMaker Event in der Schweiz, siehe FMNext.ch.
Diesmal bin ich wieder dabei und zeige ein paar Neuheiten im MBS Plugin.



Zahlreiche FileMaker Vorträge am Abend rund um FileMaker, Empfang und einem unterhaltsames Special am Ende.

With JSON in excellent form


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.

 

JSON Format

The JavaScript Object Notation is a compact data format that is easy readable for humans. A JSON text consists of objects written in brackets and arrays (lists). Objects are in curly brackets and can contain several elements separated by comma. An element has a key and a value. They are separate by colons. The value can have different datatypes: null, true and false, numbers (with a sequence of digests from 0-9, positiv and negativ numbers, decimal numbers and exponent E), strings, JSON objects or arrays. Arrays are lists that contains elements. This elements can be objects or one of a forenamed datatypes. The elements of the array are in brackets: e.g. ["grape", -123, true, null ]. The typical structure of a JSON you can see in the follow example:

 

{

"shop": {

"product": [

{

"ID": "LM1",

"category": "food",

"name": "donuts",

"price": 1.50,

"stock": 102,

"color": ["blue", "white", "pink"]

"stocked": true

}, 

{

"ID": "NF",

"category": "NonFood",

"name": "bicycle",

"price": 489.99,

"stock": 17,

"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.

The script can look like this: 

Set Variable [ $JSON ; Value: MBS( "JSON.Compact"; "{ \"shop\": { \"product\": [ { \"ID\": \"LM1\",  \"category\":\"food\", \"name\":\"donuts\", \"price\": 1.50, \"stock\": 102, \"color\": [\"blue\", \"white\", \"pink\"], \"stocked\": true }, {\“ID\": \“NF\“, \"category\":\"NonFood\", \"name\": \“bicycle\", \“price\": 489.99,\“stock\":17, \"color\":[\"blue\", \"black\", \"pink\", \“purple\"] }, { \"ID\": \“BO\", \"category\": \“book\", \"name\": \"Faust- Goethe\",

\"price\": 4.95, \"stock\": 24 } ] } }“) 

Set Variable [ $r ; Value: MBS( "JSON.IsValid"; $JSON ) ] 

If [ $r ≠ 1 ] 

Show Custom Dialog [ "Error occurred " ; "The JSON is not valide" ] 

Else

Show Custom Dialog [ "congratulations" ; "Your JSON is valide!" ] 

End If

Set Field [ JSON::JSON ; $JSON ] 

Set Variable [ $JSONForm ; Value: MBS( "JSON.Format"; $JSON ) ] 

Set Variable [ $JSONForm ; Value: MBS( "JSON.Colorize"; $JSONForm ) ] 

(more)

MBS FileMaker Plugin 9.5 video


Three nice new things to show you in MBS Plugin 9.5.
Learn about text positions, new MapView functions and our new SyntaxColoring.AddContextMenuCommand function.



If you have questions, please don't hesitate to contact us.

Define hot keys for functions in the FileMaker development


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:

 

MBS( "HotKey.SetEvaluate"; 

MBS("HotKey.Register"; "F5"; "control")

"MBS( \"Text.WriteTextFile\"; 

MBS( \"FM.DataViewerContent\" ); 

MBS( \"Path.AddPathComponent\"; 

MBS( \"Folders.UserDesktop\" ); 

\"Data Viewer \" & substitute(substitute(Get(CurrentTimestamp); \":\"; \"-\"); \"/\"; \"-\") & \".txt\" ); 

\"UTF-8\" 

)"

) 

 

The samer function can work with ScriptWorkspace.ScriptText to write current script to a folder of your choice. Here is an example:

 

MBS( "HotKey.SetEvaluate"; 

MBS("HotKey.Register"; "F6"; "control")

"MBS( \"Text.WriteTextFile\"; 

MBS( \"ScriptWorkspace.ScriptText\" ); 

MBS( \"Path.AddPathComponent\"; 

MBS( \"Folders.UserDesktop\" ); 

\"Script \" & substitute(substitute(MBS( \"ScriptWorkspace.CurrentTab\" ); \":\"; \"-\"); \"/\"; \"-\") & \".txt\" ); 

\"UTF-8\" 

)"

) 

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. 


The annoyance of Non-public API usage message from App Store


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:

Dear Developer,

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.

Add a search and replace command for FileMaker Script Workspace


Have you seen the SyntaxColoring.AddContextMenuCommand command in our latest plugin?
It allows you to have a customized contextual menu in Script Workspace with your own commands. And here is a powerful command we just developed for you:
 

MBS( "SyntaxColoring.AddContextMenuCommand"

"Search and Replace"

"Let ([ 

/* ask for search text via dialog */

ResetResult = MBS( \"Dialog.Reset\" );

ClearResult = MBS( \"Dialog.ClearFields\" );

MessageResult = MBS( \"Dialog.SetMessage\"; \"Search and replace in script:\" );

InfoResult = MBS( \"Dialog.SetInformativeText\"; \"Search text can include XML tags.\" );

Field1Result = MBS( \"Dialog.AddField\"; \"Search for:\" );

Field2Result = MBS( \"Dialog.AddField\"; \"Replace with:\" );

Button1Result = MBS( \"Dialog.SetDefaultButton\"; \"Replace\");

Button2Result = MBS( \"Dialog.SetAlternateButton\"; \"Cancel\");

DialogResult = MBS( \"Dialog.Run\" );

SearchText = MBS( \"Dialog.GetFieldText\"; 0 );

ReplaceText = MBS( \"Dialog.GetFieldText\"; 1 );

/* do replace */

r = If(DialogResult = \"Replace\"; Let([

/* copy script steps */

r = MBS( \"Menubar.RunMenuCommand\"; 57634 ); 

/* get XML from clipboard */

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 ) 

]; 1))

];1)"; 3 )

 
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.
(more)

eID card reading via bluetooth on iOS


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.

If you like to try and you have a bR301 Bluetooth Smartcard Reader from Zetes, you can contact us for a test copy.
I think you can buy this reader here: Sipiro M BT 4.0 bluetooth (Feitian bR301BLE)

If you are looking for help on implementing eID functions with Smartcard function in our plugin, we may provide you contacts to developers, who may offer help as service.

End of Live for FileMaker Runtimes


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.


FileMaker Stammtische in Bonn und Ulm


Zwei Stammtische an Rhein und Donau laden ein zum Austausch mit anderen FileMaker Entwickler:

Mittwoch, 13. November 2019

19:00 im Restaurant Portofino, St. Augustiner Str. 129, Bonn
Organisiert von Tischler IT-Consulting

siehe filemaker-datenbank.de/fm-stammtisch/

Donnerstag, 14. November 2019

19:00 Uhr im Ristorante Pizzeria Capri, Maximilianstr. 28, 89231 Neu Ulm
Organisiert von Swen Bauer und Fabrice Ricker

siehe filemaker-magazin.de/service/filemaker-stammtische/neu-ulm/

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.

MBS FileMaker Plugin 9.5 - More than 5900 Functions In One Plugin


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 web viewer on MacOS in FileMaker 16 or newer uses WebKit 2.x. For this version we added Webview.SetPrivateBrowsing function to enable private browsing mode. The Webview.AddUserScript function allows you to inject custom javascript in each website loaded. And Webview.AddScriptMessageHandler function now supports iOS, too.

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 4.0.33.95, 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

See release notes for a complete list of changes.

Neues MBS FileMaker Plugin 9.5


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 Web Viewer unter MacOS in FileMaker 16 oder neuer verwendet WebKit 2.x. Für diese Version haben wir die Funktion Webview.SetPrivateBrowsing hinzugefügt, um den privaten Browsermodus zu aktivieren. Mit der Webview.AddUserScript-Funktion können Sie in jede geladene Website ihr eigenes Javascript einfügen lassen. Die Funktion Webview.AddScriptMessageHandler unterstützt neben MacOS jetzt auch iOS.

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.

Alle Änderungen in den Release Notes.

Upcoming changes for 2020 in MBS Plugins


Subscription or not?

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.

Conference Discount

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.

Conference Sponsoring

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.

Price Changes

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.

MBS FileMaker Plugin, version 9.5pr8


New in this prerelease of version 9.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Network share access from script on FileMaker Server


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.
  1. 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.
  2. 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.
  3. 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".
  4. 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:
  1. 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.
  2. 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.

MBS FileMaker Plugin, version 9.5pr7


New in this prerelease of version 9.5 of the MBS FileMaker Plugin:
  • Fixed problem with finding windows in runtime app on Windows.
  • Improved WordFile.GetXML function to work with rels parts in the Word file.
  • Fixed problem with WebView.FindByName function not finding right web viewer on MacOS.
  • Added SelectedOnly parameter for ScriptWorkspace.ScriptText function.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Tip of the day: Shell Execute as one Let statement


You can create a shell, run a command and get the result all in a Let statement or a custom function:

Let ( [

// new Shell

shell = MBS( "Shell.New" );

// run command with parameters

r = MBS( "Shell.Execute"; shell; "/bin/ls"; "/");

// wait for a result up to 5 seconds

r = MBS( "Shell.Wait"; shell; 5);

// read output

error = MBS( "Shell.ReadErrorText"; shell; "UTF-8");

output = MBS( "Shell.ReadOutputText"; shell; "UTF-8")

// free shell

r = MBS("Shell.Release"; shell)

]

 

; output & error ) 

This may be handy to keep this in mind when you need to run a command line tool next time.

PS: We used Command-Option-C shortcut in data viewer to copy formula with styles.


20 Years Monkeybread Software Party


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.

MBS FileMaker Plugin, version 9.5pr6


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.
  • Fixed bug in CURL.SetInputFile with error message "Uploaded unaligned file size".
  • Improved code for SmartCard.ReadFile to work for more cards.
  • Consolidated debug and release plugin into one, where we can switch on debug logging to help clients.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

FileMaker Conferences in 2020


Recently I discussed with a client about FileMaker conferences next year. Currently I know about four conferences to take place in 2020:
EventLanguageDateWhereLinks
dotfmp.berlin English 4th to 6th June 2020 Berlin, Germany dotfmp.berlin
FileMaker Konferenz German 17th to 20th June 2020 Meilen, Liechtenstein filemaker-konferenz.com
Claris Engage USA English 3rd to 6th Aug 2020 Nashville, USA filemaker.com
Claris Engage Europe Multilingual 26th to 28th Oct 2020 Lisbon, Portugal filemaker.com

Those conferences are very different in location, cost, language and what to expect, so lets compare them a bit:

(more)

Archives

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