Converting JSON to HTML for display

For the next MBS FileMaker Plugin, we add a new function JSON.ToHTML to display JSON to user in a web viewer:



We include some CSS class tags, so you can colorize this a bit. Please try when next prerelease is available or just email us for a testing copy today.

PS: Also coming for Xojo to JSONMBS class.

HealthKit for FileMaker on iOS

For the next version of MBS FileMaker Plugin for the FileMaker iOS SDK, we are adding HealthKit functions.

For some time now we had people asking for it, so now we start with adding some basic HealthKit support:
  • Checking for availability of health data.
  • Authentication to get permission to use it.
  • Query basic values like sex, blood type, birth date, skin type and wheelchair use.
  • Query sample data like step counts and return results as JSON block.
The new HealthKit.SampleQuery function is really very universal, so you can query 30+ things using it and request values in various units.

If you like this, please try it soon and let us know what you think. More functions are possible, but it all depends on what you like to do and what we can do from a plugin.

Coming soon for MBS FileMaker Plugin 8.2 with the next prerelease.
Requires you to enable health kit for entitlements and declare usage in info.plist of course.

FileMaker Abend bei der Denkform

Am 29. Mai 2018 treffen sich interessierte FileMaker Entwickler bei der Denkform in Hofheim (Taunus).
Wir schauen uns Neues in der FileMaker Welt an.
Michael Valentin von FileMaker Deutschland kommt vorbei und präsentiert Neuigkeiten und steht dann für Fragen bereit.

Anschließend zeigt Christian Schmitz gerne ein paar Neuerungen im MBS Plugin 8.x.

Anmeldung auf der Denkform Eventseite (Link kommt noch). Zeitlich vermutlich 18 bis 21 Uhr. Eventuell mit optionalem Abendessen.
Bitte den Termin frei halten. Mehr Details zu den Programmpunkten folgen. Anmeldung hier

MBS FileMaker Plugin, version 8.2pr4

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

Let users review your FileMaker iOS application

With next MBS FileMaker Plugin you can ask the user to review your application.

The StoreKit.RequestReview function allows you to ask the user to rate your application. The function returns directly and the dialog shows asynchronously.

Although you should call this method when it makes sense in the user experience flow of your app, the actual display of a rating/review request view is governed by App Store policy. Because this method may or may not present an alert, it's not appropriate to call it in response to a button tap or other user action.

When you call this method while your app is still in development mode, a rating/review request view is always displayed so that you can test the user interface and experience. However, this method has no effect when you call it in an app that you distribute using TestFlight.

When you call this method in your shipping app and a rating/review request view is displayed, the system handles the entire process for you. In addition, you can continue to include a persistent link in the settings or configuration screens of your app that deep-links to your App Store product page. To automatically open a page on which users can write a review in the App Store, append the query parameter action=write-review to your product URL.

Coming soon in the next MBS FileMaker Plugin 8.2 prerelease.

Working on new Store Kit functions

For the next MBS Plugin we work on functions for the Mac and iOS App Store.

While this is still work in progress and getting your iOS or Mac App in the app store is quite a challenge, we prepare the necessary functions to do sell items to the user. For example you could have a solution where user buys a subscription or upgrades from trial to full version with an in-app purchase.

 

Before you would check our plugin functions, please read documentation from Apple on how this works. You will have to setup products in iTunes Connect website and add entitlements for in-app purchase to your app.

 

First you query products and you get back the product definitions you entered on Apple's website. Our StoreKit.QueryProducts function will do this and you may call it in the start script in your solution. Than later you can use StoreKit.Products to get the JSON with the definitions:

 

[

  {

    "localizedDescription" : "Just a little contribution from you. Thanks.",

    "formattedPrice" : "$8.99",

    "price" : 8.99,

    "productIdentifier" : "123",

    "downloadable" : false,

    "localizedTitle" : "A donation to developer",

    "priceLocale" : "en_US@currency=USD"

  }

]

 

At any time you can use StoreKit.Transactions function to query transactions and their status:

 

[

  {

    "transactionIdentifier" : "C2CF465A-BC94-4705-BE9E-E5A02A6DD422",

    "transactionState" : "Failed",

    "payment" : {

      "quantity" : 1,

      "productIdentifier" : "123"

    },

    "error" : "Cannot connect to iTunes Store"

  }

]

 

And with StoreKit.AddPayment function you can start a payment process for an item. You setup a trigger to run when transactions update. So you can check if something is purchased. Than you unlock functions and call StoreKit.FinishTransaction function to let the App store know you delivered.

 

We are looking for interested FBA partners who want to add this to their FileMaker iOS SDK application or Mac runtime. Let us know if you are interested.


PDF Forms with MBS Plugin

As you may know, you can create PDF form fields with our MBS Plugin using the DynaPDF functions. The plugin can do a lot there and not just read/write form field values, but also create new fields. In the following article, we want to show you how we do this. Our goal is to dynamically create a template PDF based on a form file created in a word processor. We add fields with data, send it to a client and when we get the modified file back, we can import the new values.

 

 

 


We start with a sample database. This database has a table for people and the following fields. All just plain text fields and the ID field is set to be come an UUID. That is important as a random UUID makes it difficult to guess a valid ID, which would be easy if you just count up record IDs. We store the ID in the PDF and don't want someone to make up a valid ID. Here is the field list:

 

Firstname Text

Lastname Text

Address Text

City Text

Country Text

Email Text

ID Text Indexed, Auto-enter Calculation replaces existing value, Can't Modify Auto

 

(more)

MBS FileMaker Plugin, version 8.2pr3

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

Vote for FileMaker Plugin SDK Ideas

As you may know FileMaker comes with a plugin SDK, which C++ developers like me use to develop plugins. Now the Plugin SDK offers a way to register functions and script steps and provide additional features to the FileMaker developer.

The plugin developer can get a list of parameters with the function call and inspect them, e.g. do different things for containers, texts or numbers passed in. And the plugin can return a value as result and the SDK offers functions to return texts, numbers and assemble containers. Over the years we got a few SQL functions to do queries and modify data in the database on behalf of the FileMaker developer. With the evaluate function in the SDK, we can call Get(Functions) or do calculations.

From a plugin we can trigger a script. That means the script call is put on a queue and executed later after the current script finished. But for some reason, we can't trigger a script on FileMaker Server. The plugin SDK doesn't provide the functionality to do this.

In the plugin we can work with styled text stored in FileMaker fields. We use that to format JSON and XML text now. But we can't access alignments in a styled text.

So as a plugin developer I submitted a few ideas over time:
Please vote for them if you like. FileMaker Inc. may look right now what to deliver in 2019 and we would appreciate if something would be picked based on popular vote.

Those ideas could help to make a better plugin SDK, which may lead a dozen plugin developers to make better plugins, which hundreds of FileMaker developers could use in thousands of solutions.

MBS FileMaker Plugin, version 8.2pr2

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

Colorize XML in FileMaker

Do you display XML text somewhere for debugging? How about some color?



As you see, we just added a new XML.Colorize function for our MBS FileMaker Plugin which may be useful to add color. Coming in the next plugin version...

Colorize JSON in FileMaker

Do you display JSON text somewhere for debugging? How about some color?



As you see, we just added a new JSON.Colorize function for our MBS FileMaker Plugin which may be useful to add color. Coming in the next plugin version...

Creating PDF/A in FileMaker with ZUGFeRD standard

Did you know EU directive 2014/55/EU? Starting 27th November 2020, the invoices to government over 1000 Euro must be sent electronically with structured format. So no longer printed invoices or simple PDFs, but you can send PDF in ZUGFeRD format!

Several FileMaker developers now use MBS FileMaker Plugin to create their invoices in ZUGFeRD standard. That's a data exchange format defined here in Germany, but other countries have similar formats. Basically we have a PDF in PDF/A 3b format and an embedded XML file. The PDF provides the visual and printable view of the invoice while the XML contains the same data readable for computers. 

With MBS Plugin and DynaPDF we can create such a ZUGFeRD PDF. We can either create a new file or import pages from existing PDFs. So even if you generate your invoices in FileMaker from layouts, you can convert them later. Here you see an example script for doing exactly this:

#Initialize DynaPDF if needed

If [MBS("DynaPDF.IsInitialized")  ≠  1]

Perform Script [“InitDynaPDF”]

End If

#Make new PDF environments

Set Variable [$pdf; Value:MBS("DynaPDF.New")]

#Set import flags with Prepare For PDF/A enabled

Set Variable [$r; Value:MBS( "DynaPDF.SetImportFlags"; $pdf; "ImportAll¶ImportAsPage¶PrepareForPDFA" )]

#Load PDF from container

Set Variable [$r; Value:MBS("DynaPDF.OpenPDFFromContainer"; $pdf; ZUGFeRD Invoice::Invoice Template)]

#Import all pages

Set Variable [$r; Value:MBS("DynaPDF.ImportPDFFile"; $pdf)]

#PDF/A requires a language set

Set Variable [$r; Value:MBS("DynaPDF.SetLanguage"; $pdf; "en-US")]

#PDF/A requires a structure tree

Set Variable [$r; Value:MBS("DynaPDF.CreateStructureTree"; $pdf)]

#add xml with invoice data

Set Variable [$FileHandle; Value:MBS("DynaPDF.AttachFileText"; $pdf; ZUGFeRD Invoice::Invoice XML; "UTF-8"; "ZUGFeRD-invoice.xml"; "Invoice as XML")]

Set Variable [$r; Value:MBS("DynaPDF.AssociateEmbFile"; $pdf; "Catalog"; -1; "Alternative"; $FileHandle)]

#Check if this PDF conforms to PDF/A-3b

Set Variable [$c; Value:MBS("DynaPDF.CheckConformance"; $pdf; "ZUGFeRD Basic")]

If [$c = 1]

# A RGB ICC profile must be added to the document

Set Variable [$r; Value:MBS("DynaPDF.AddOutputIntentEx"; $pdf; ZUGFeRD Invoice::RGB ICC Profile)]

Else If [$c = 2]

# A CMYK ICC profile must be added to the document

Set Variable [$r; Value:MBS("DynaPDF.AddOutputIntentEx"; $pdf; ZUGFeRD Invoice::CMYK ICC Profile)]

Else If [$c = 3]

# A Gray, RGB, or CMYK ICC profile must be added to the document 

Set Variable [$r; Value:MBS("DynaPDF.AddOutputIntentEx"; $pdf; ZUGFeRD Invoice::RGB ICC Profile)]

End If

#save to container

Set Variable [$PDFData; Value:MBS("DynaPDF.Save"; $pdf; "invoice.pdf")]

Set Field [ZUGFeRD Invoice::Output PDF; $PDFData]

Commit Records/Requests []

#cleanup memory

Set Variable [$r; Value:MBS("DynaPDF.Release"; $pdf)]

As you see we first initialize DynaPDF if it's not already done. In a new PDF environment, we import from a container the whole PDF. Of course you can import from files or just import pages from different PDFs as needed to build in memory your final PDF. Than we define language and structure tree as required for PDF/A. We attach the XML from a field in this example. The XML is just a block of text which you can generate before, e.g. by filling values into a template.

Next we check conformance with ZUGFeRD standard. If you have DynaPDF Lite license, we only check and report okay or error. If you have a DynaPDF Pro + PDF/A license, we can fix errors and convert any PDF to PDF/A here (DynaPDF Editions). Next we add the required output intent ICC color profiles. Finally we save the PDF to a container.

Please do not hestiate to contact us with your questions. We also have the same examples for Xojo.


MBS FileMaker Plugin, version 8.2pr1

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

MBS FileMaker Plugin Schulung in 2018

Wir bieten in Zusammenarbeit mit der Denkform, Brainworks und dem Verein FM Konferenz einige MBS Workshops an.

DatumOrtLinks
3. Mai 2018Hofheim (Taunus)denkform.net
14. Juni 2018Münchenbrainworks-training.de
19. Juli 2018Hamburgbrainworks-training.de
27. Juli 2018Zürichbrainworks-training.de
17. Oktober 2018Malbun, LiechtensteinAnkündigung, Anmeldung
6. Dezember 2018Hofheim (Taunus)denkform.net
7. März 2019Hofheim (Taunus)denkform.net

Nehmen Sie sich einen Tag Zeit sich über das MBS FileMaker Plugin und all die Funktionen zu informieren.

Themen:

  • Einführung in das MBS Plugin
  • Rundgang durch ausgewählte Beispiele
  • Gemeinsames Implementieren von Plugin Funktionen in eine Datenbank:
    • Einbau von Auditing in eine Datenbank
    • Upload einer Datei mit CURL auf einen FTP Server
    • Download einer Datei
    • Ausfüllen eines Formular auf einer Webseite
    • Bilder bearbeiten
    • Eine Excel Datei laden und ausfüllen
  • Fragen und Antworten

Wenn Sie bei der Veranstaltung oder kurz danach eine Pluginlizenz bestellen möchten, erhalten Sie 50 Euro Rabatt.


FileMaker Developer Meeting for Stockholm

Due to the CURL conference, we will come to Stockholm in April.
So let's organize a FileMaker developer meeting! Anyone interested?

Currently we'd like to know if there is interest for a dinner meeting or more?

Please fill the survey.
We meet 15th April 2018 in Stockholm in the evening.

For a dinner, we would just meet in a restaurant and chat.

If you are interested in some private consulting or training, let me know and we can arrange an appointment.

Archives

Sep 2026
Aug 2026
Jul 2026
Jun 2026
May 2026
Apr 2026
Mar 2026
Feb 2026
Jan 2026
Dec 2025
Nov 2025
Oct 2025
Sep 2025
Aug 2025
Jul 2025
Jun 2025
May 2025
Apr 2025
Mar 2025
Feb 2025
Jan 2025
Dec 2024
Nov 2024
Oct 2024
Sep 2024
Aug 2024
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
Mar 2010
Dec 2009
Nov 2009