Quantcast
Viewing all 26 articles
Browse latest View live

Free FileMaker Plugin updated to 2.0b4

We've posted another update to our free FileMaker plugin. This brings the version number to 2.0b4 and adds some new features and tweaks some existing ones. Download Links are :

Mac 64 and 32 bit
Windows 32 bit
Windows 64 bit

This release has the following changes :

  • Add BE_ExecuteSystemCommand and depreciate BE_ExecuteShellCommand - this means on Windows the command window no longer appears. The existing function won't go away so your code still works, but the new one also has a timeout parameter so you can set timeouts.
  • Use of whitespace in function signatures to match that used by FileMaker
  • Added BE_CurrentTimeMilliseconds, BE_UTCMilliseconds and BE_TimeZoneOffset
  • Added BE_HTTP_Set_Proxy function for use in the other HTTP functions

BE_CurrentTimeMilliseconds - is the same as the built-in Get ( CurrentTimestamp ) when wrapped with GetAsNumber. BE_UTCMilliseconds - as per BE_CurrentTimeMilliseconds but for UTC rather than local time. BE_TimeZoneOffset - the difference between UTC and local time (in minutes).

The TimeZoneOffset functionality is going to be the most useful, especially when working with sync solutions and needing to keep consistent time zones for data entry.


BaseElements Plugin nearly goes to 2

We're going to call it done with additions to the BaseElements plugin for version 2.0. If you're interested you can get a copy of 2.0rc1 here :

Mac 64 and 32 bit
Windows 32 bit
Windows 64 bit

The only change since b4 of significance is that the BE_GetLastError doesn't reset when called multiple times, without calling another plugin function in between.

This the last change for 2.0. I think we're going to jump straight into developing the 3.0 release, we've got plans to work on SMTP and XQuery functions and I'd like to see both of those done soon.

BaseElements Plugin Version 2 Released

Today we've made available version 2.0 of our free FileMaker plugin. You can grab a copy here :

Mac Version
Windows 32 bit Version
Windows 64 bit Version

This is our first big release since version 1 and so we've bumped the version number to 2.0. There is lots of new and changed functionality in this release.

Changes

Added a BE_Base64_URL_Encode function.

This is as well as the existing BE_Base64_Encode. The difference is in the character set and details of the encode. The short explanation is that if you're using the built in encode / decode, then it will all work fine. However, you're sending data to web services that use, for example, the php based base64 library then the character set they're using, and the encode method is slightly different. This often results in values that don't quite work at one end. The new function produces url safe output and also pads the value in the same way as the web version.

Added BE_CurrentTimeMilliseconds, BE_UTCMilliseconds, and BE_TimeZoneOffset.

BE_CurrentTimeMilliseconds is effectively a copy of GetAsNumber ( Get ( CurrentTimestamp ) ) but was being added anyway with the offset coding.

BE_UTCMilliseconds is just the UTC version of BE_CurrentTimeMilliseconds, but for the UTC timezone.

BE_TimeZoneOffset is the difference ( in minutes ) between UTC and local time. This one will be really handy when doing remote data entry and having to sync back to a server that is outside the current timezone.

BE_ExecuteShellCommand was deprecated. The function still exists, and will still work exactly as before, but no longer appears in the function list when editing a calculation. If typed, or copied it will continue to work though. It's been replace by ...

BE_ExecuteSystemCommand was added. This changes slightly the operation in terms of having a different second optional parameter. Now instead of a waitForResponse option, you can specify a timeout. This is much better in that you no longer get stuck if your process gets stuck. There is still the option to wait for ever by using a -1 parameter, or not at all with a value of 0.

Added BE_FileSize function.

Changed the way the BE_GetLastError function works, so that it doesn't reset on successive calls. So you can test the value of this result with multiple calls to the function and it doesn't change until you call some other BE plugin function.

Added BE_HTTP_DELETE and BE_HTTP_PUT, so we now have the full complement of GET, PUT, POST and DELETE, plus we added basic authentication to all of the HTTP functions.

Added default folders to the BE_SelectFile and BE_SelectFolder functions so now you can choose what folder it will start in.

Added a function BE_StripXMLNodes which although not useful to many people is going to be handy to us in the future for our changes to the BaseElements import process which hopefully gives us some useful optimisations we can do.

To Recap

Our BaseElements plugin continues to be free and open source. You don't need to licence it, register it or pay for it. You don't even need to tell us you use it, but if you like it, please let us know.

I've updated the Functions list with all of the new details and the Todo List page with the changes.

The Future

We already have some things we'd like to do, possibly in point releases of 2.x but possibly also in a 3.0 version. I'd like to add a progress dialog, just something basic with a start and an end. And then I'd like to look at both XQuery and SMTP support. SMTP is an optional one, so anyone who would like this functionality and would consider sponsoring us should get in touch.

FileMaker and JSON

FileMaker has long has support for XML in it's import and web processes and quite often people are building Custom Functions to parse XML within FileMaker. We now use our free BaseElements plugin to do XPath inside FileMaker, and it's really handy to get at details of XML without having to go through an import process.

But JSON is fast becoming as popular as XML for all sorts of data these days. Quite often it's available in Web Services as an option along side XML and I'm now starting to see it appear as the only option in a few places.

In order to take advantage of this we've decided to move to add some JSON functionality to our BaseElements plugin. We have a new build, coming quick on the heels of the 2.0 release, we've added :

BE_JSONPath ( json, query )
BE_JSON_ArraySize ( json )
BE_JSON_Error

We think this will be useful to FileMaker developers who work with Web Services or just want a way to encode data for other processes.

You can download this now for Mac, Windows 32bit and Windows 64bit for FMS CWP.

More Plugin Features

We continue to add to our free FileMaker plugin. This time we've been doing lots of little bits and we've got a couple of great new features we need to test before going final with our next update.

Some simple list functions

We've added :

BE_Values_FilterOut ( textToFilter ; filterValues )
BE_Values_Sort ( listOfValues )
BE_Values_Unique ( listOfValues )

FilterOut removes values from a list, so you can then get the ones that remain. And Sort and Unique should be fairly obvious.

OAuth

First of all is OAuth support. OAuth is complex, and we've tried to do this in a way that you can utilise the existing HTTP functions with the OAuth based authentication. To use this, there is a new function :

BE_OAuth_RequestAccessToken ( url ; consumer_key ; consumer_secret ; request_key ; request_secret )

Call it once with empty "request" values, to get the request key and secret. Then call this function again with the new values to get the access key and secret. Hopefully then the BE_GetURL functions will use the new authentication and not require a username and password. Call that function again with empty values to clear it all out.

There's probably some work to do on this get it all sorted and some error reporting to be done, but if you've been wanting to access an OAuth based Web Service, this will be a godsend.

Curl Options

Also because all of our HTTP functionality that we've implemented uses the free curl library at the back end, we've been able to add a quick function to set all of the curl options :

BE_Curl_Set_Option ( option ; value )

Call it with an option name, and a value, or empty values to clear them out. This will be handy for some of those edge cases where you need specific details for accessing the server.

Progress Dialogs

And finally we've added progress dialogs for allowing a simple way to show progress in a process. This is in a few of the other full featured dialog plugins, but is something we've wanted for a while.

If you're testing the new features and have any feedback or issues, please contact us with your results. And if you try them out and they work and you like them, we'd love to know that too, it's helpful to know they're working just as much as it is to know they don't work.

Download

You can download the Mac, Windows 32 bit and Windows 64 bit versions today, it is version 2.1.0a3.

Progress Dialogs using the free BaseElements plugin

We released a beta version of our free BaseElements plugin earlier and I need to document the new progress dialog functionality as it isn't readily understandable from just the function calls themselves.

Barber Pole Progress Dialogs

Firstly there is the main BE_ProgressDialog function :

BE_ProgressDialog ( title ; description {; maximum } )

the title, and description are obvious, and similar to other dialogs that the plugin produces. The "maximum" value is optional, but does all the work. If you leave it out you get an "indeterminate" dialog, so the barber pole effect :

Image may be NSFW.
Clik here to view.
ProgressDialogbarber.png

You cancel a barber pole dialog by calling the BE_ProgressDialog_Update function with any value less than zero.

BE_ProgressDialog_Update ( -1 )

Incremental Progress Dialogs

If you have a value for maximum, then you get the normal start and finish progress dialog. There is an assumed minimum of 0, so if you want to count from 10 to 20, then you actually need to count from zero to 10.

Image may be NSFW.
Clik here to view.
progressdialog.png

To update the progress indicator, call the function with increasing values each time, until you reach the maximum value. Any value above the maximum will cause the dialog to close. The button isn't modifiable, but should have the correct language for your operating system. You can have the button disabled by setting the Allow Abort State to Off.

This is the first iteration of this function, but this is the functionality we were after for including in our own products, but if you'd like it to behave differently or would like other features, please let us know and consider sponsoring a function.

Curl Options with our FileMaker Plugin

The new release of our FileMaker plugin includes an option to set some of the various curl options, used whenever the plugin performs a HTTP function call. Although there is a complete list of options that curl provides, not all options are supported by the plugin.

( As an aside, if you're wondering what curl is and why any of this is interesting ; Curl is a code library that provides lots of networking protocol code that other applications often re-use. We use it as the basis for the GET and HTTP functions in our plugin and in fact FileMaker itself also uses it. Open the "FMP Acknowledgements.pdf" file that comes with the latest version of FMP and search for "libcurl". Having this library means each application doesn't have to write its own networking stack from scratch.

The options we're referring to are a whole set of extra flags you can send to curl to change its behaviour. From simple things like a login name, or port number to much more technical details about timeouts and sockets. These things can be very useful in altering the way that http functions are performed. )

Curl options are set with :

BE_Curl_Set_Option ( option ; value )

The function itself doesn't return any value, but you can use BE_GetLastError to get any results. Two notable possible results are 11 for options it doesn't know about, and 13000 for options it does know about but can't handle.

So the complete list of options that we are attempting to handle are :

CURLOPT_PROXY
CURLOPT_NOPROXY
CURLOPT_SOCKS5_GSSAPI_SERVICE
CURLOPT_INTERFACE
CURLOPT_NETRC_FILE
CURLOPT_USERPWD
CURLOPT_PROXYUSERPWD
CURLOPT_USERNAME
CURLOPT_PASSWORD
CURLOPT_PROXYUSERNAME
CURLOPT_PROXYPASSWORD
CURLOPT_TLSAUTH_USERNAME
CURLOPT_TLSAUTH_PASSWORD
CURLOPT_ACCEPT_ENCODING
CURLOPT_COPYPOSTFIELDS
CURLOPT_REFERER
CURLOPT_USERAGENT
CURLOPT_COOKIE
CURLOPT_COOKIEFILE
CURLOPT_COOKIEJAR
CURLOPT_COOKIELIST
CURLOPT_HTTPGET
CURLOPT_MAIL_FROM
CURLOPT_MAIL_AUTH
CURLOPT_FTPPORT
CURLOPT_FTP_ALTERNATIVE_TO_USER
CURLOPT_FTP_ACCOUNT
CURLOPT_RTSP_SESSION_ID
CURLOPT_RTSP_STREAM_URI
CURLOPT_RTSP_TRANSPORT
CURLOPT_RANGE
CURLOPT_CUSTOMREQUEST
CURLOPT_DNS_SERVERS
CURLOPT_SSLCERT
CURLOPT_SSLCERTTYPE
CURLOPT_SSLKEY
CURLOPT_SSLKEYTYPE
CURLOPT_KEYPASSWD
CURLOPT_SSLENGINE
CURLOPT_CAINFO
CURLOPT_ISSUERCERT
CURLOPT_CAPATH
CURLOPT_CRLFILE
CURLOPT_RANDOM_FILE
CURLOPT_EGDSOCKET
CURLOPT_SSL_CIPHER_LIST
CURLOPT_KRBLEVEL
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
CURLOPT_SSH_PUBLIC_KEYFILE
CURLOPT_SSH_PRIVATE_KEYFILE
CURLOPT_SSH_KNOWNHOSTS

CURLOPT_VERBOSE
CURLOPT_HEADER
CURLOPT_NOSIGNAL
CURLOPT_WILDCARDMATCH
CURLOPT_FAILONERROR
CURLOPT_PROXYPORT
CURLOPT_PROXYTYPE
CURLOPT_HTTPPROXYTUNNEL
CURLOPT_SOCKS5_GSSAPI_NEC
CURLOPT_LOCALPORT
CURLOPT_LOCALPORTRANGE
CURLOPT_DNS_CACHE_TIMEOUT
CURLOPT_DNS_USE_GLOBAL_CACHE
CURLOPT_BUFFERSIZE
CURLOPT_PORT
CURLOPT_TCP_NODELAY
CURLOPT_ADDRESS_SCOPE
CURLOPT_TCP_KEEPALIVE
CURLOPT_TCP_KEEPIDLE
CURLOPT_TCP_KEEPINTVL
CURLOPT_NETRC
CURLOPT_HTTPAUTH
CURLOPT_TLSAUTH_TYPE
CURLOPT_PROXYAUTH
CURLOPT_AUTOREFERER
CURLOPT_TRANSFER_ENCODING
CURLOPT_FOLLOWLOCATION
CURLOPT_UNRESTRICTED_AUTH
CURLOPT_MAXREDIRS
CURLOPT_PUT
CURLOPT_POST
CURLOPT_POSTFIELDSIZE
CURLOPT_COOKIESESSION
CURLOPT_HTTP_VERSION
CURLOPT_IGNORE_CONTENT_LENGTH
CURLOPT_HTTP_CONTENT_DECODING
CURLOPT_HTTP_TRANSFER_DECODING
CURLOPT_TFTP_BLKSIZE
CURLOPT_FTPPORT
CURLOPT_DIRLISTONLY
CURLOPT_APPEND
CURLOPT_FTP_USE_EPRT
CURLOPT_FTP_USE_EPSV
CURLOPT_FTP_USE_PRET
CURLOPT_FTP_CREATE_MISSING_DIRS
CURLOPT_FTP_RESPONSE_TIMEOUT
CURLOPT_FTP_SKIP_PASV_IP
CURLOPT_FTPSSLAUTH
CURLOPT_FTP_SSL_CCC
CURLOPT_FTP_FILEMETHOD
CURLOPT_RTSP_REQUEST
CURLOPT_RTSP_CLIENT_CSEQ
CURLOPT_RTSP_SERVER_CSEQ
CURLOPT_TRANSFERTEXT
CURLOPT_PROXY_TRANSFER_MODE
CURLOPT_CRLF
CURLOPT_RESUME_FROM
CURLOPT_FILETIME
CURLOPT_NOBODY
CURLOPT_INFILESIZE
CURLOPT_UPLOAD
CURLOPT_MAXFILESIZE
CURLOPT_TIMECONDITION
CURLOPT_TIMEVALUE
CURLOPT_TIMEOUT
CURLOPT_TIMEOUT_MS
CURLOPT_LOW_SPEED_TIME
CURLOPT_MAXCONNECTS
CURLOPT_FRESH_CONNECT
CURLOPT_FORBID_REUSE
CURLOPT_CONNECTTIMEOUT
CURLOPT_CONNECTTIMEOUT_MS
CURLOPT_IPRESOLVE
CURLOPT_CONNECT_ONLY
CURLOPT_USE_SSL
CURLOPT_ACCEPTTIMEOUT_MS
CURLOPT_SSLENGINE_DEFAULT
CURLOPT_SSLVERSION
CURLOPT_SSL_VERIFYPEER
CURLOPT_SSL_VERIFYHOST
CURLOPT_CERTINFO
CURLOPT_SSL_SESSIONID_CACHE
CURLOPT_GSSAPI_DELEGATION
CURLOPT_SSH_AUTH_TYPES
CURLOPT_NEW_FILE_PERMS
CURLOPT_NEW_DIRECTORY_PERMS

CURLOPT_POSTFIELDSIZE_LARGE
CURLOPT_RESUME_FROM_LARGE
CURLOPT_INFILESIZE_LARGE
CURLOPT_MAXFILESIZE_LARGE
CURLOPT_MAX_SEND_SPEED_LARGE
CURLOPT_MAX_RECV_SPEED_LARGE

Plugin Updates - JSON, dialogs, PUT and Sort

We've been busy working on our free BaseElements plugin again. This is a minor alpha release, but contains quite a few changes.

JSON

First we've added more JSON support in the ability to encode data in the required JSON format. So a new function :

BE_JSON_Encode ( key {; value ; type } )

Allows you to build properly encoded JSON data. Using this one function as a base, you can encode pretty much any FileMaker data into proper JSON. Some structures ( arrays etc ) need a little manual extra work, but the work of having proper JSON data in FileMaker is now simple with both incoming data ( BE_JSONPath ) and now outgoing available.

Value Lists

We've also added some basic list manipulation that really should be in the FileMaker function list, but isn't.

BE_Values_Unique ( listOfValues )

Will trim a list down into only unique values.

BE_Values_Sort ( listOfValues )

Sorts a list alphanumerically.

BE_Values_FilterOut ( textToFilter ; filterValues )

Does the opposite of FilterValues where it leaves in only the filtered values, this one leaves them out. In other words it's like a NOT function for Value Lists - remove anything in the textToFilter that is in filterValues, leaving only the values NOT in the list.

HTTP PUT

Our first iteration of this function only allows you to upload a file. So we've split the functions into two :

BE_HTTP_PUT_DATA ( url ; data {; username ; password } )
and
BE_HTTP_PUT_FILE ( url ; path {; username ; password } )

That will make it simpler to update records in Web Services using the plugin.

Dialogs

We've also tweaked some of the progress dialog functions so they display better, especially on Windows.

Download

You can download the Mac, Windows 32 bit and Windows 64 bit versions today, it is version 2.1.0a4.


BaseElements Plugin 2.1.0 beta

Our free FileMaker plugin is now out of alpha and into beta. This release adds lots of new functionality since the 2.0 release :

One thing that didn't make the beta was some trial code for OAuth. Although the code is still there, the functions won't show in the function list. This just hasn't been widely tested yet and we really wanted to finalise the JSON work for some upcoming sync work we're doing.

You can download the Mac, Windows 32 bit and Windows 64 bit files, it is version number 2.1.0b1.

BaseElements Plugin 2.1.0 Final

Plugin Functions updated with examples

We've updated our plugin documentation to include the new JSON, ValueList, Dialog and HTTP function details.

Part of this new documentation are some example uses for some of the more technical functionality. I hope these go a little way towards helping people implement the plugin in their own solutions.

If you'd like to see examples for other functions, or could contribute to the examples show, please let us know, or edit the wiki page directly.

Cancelling BaseElements Plugin progress dialogs

A question that has come up more than once about the progress dialogs in our free FileMaker plugin is how to work with the cancel buttons.

Image may be NSFW.
Clik here to view.
ProgressDialogbarber.png

Showing or Hiding the button

The cancel button is optional, and appears based on the status of the "Allow User Abort" state. When this is Off, the button won't appear and when Abort is allowed, then the button appears. So you can control the visibility of this within your script by altering the state.

Trapping for Cancel button clicks

When the cancel button is clicked, it closes the dialog, but you then need to capture that state. Presumably you're doing some looping script, or a long process with lots of steps. Either each time it loops or at some point in the loop, you're calling the BE_ProgressDialog_Update function to update the progress.

When the Update function call is successful, the BE_GetLastError function will return 0. When the user has clicked the cancel button, the BE_GetLastError function will return 1 which is equivalent to the FileMaker "User canceled action" error code. Trapping for this in your code allows you to gracefully exit your loop and react to the cancel.

Real world BaseElements plugin example #1

We get lots of notes appended to emails about our free FileMaker plugin, that say things like :

We can’t live without our BE plugin

or

I am testing your plugin and I have to say it is a wonderful piece of software.

Which is always wonderful to hear ( those are real quotes from emails I've received, but I didn't ask their permission, so they're anonymous for now. )

And occasionally our plugin pops up in others public work, like it did this week in an article by the extremely talented Todd Geist. He's writing about his GoSign product for capturing signatures on the iPad and how the plugin lets him put FileMaker layout data onto the clipboard ready for people to paste into their own solutions.

This is exactly the same technique we use in BaseElements for copying and pasting Scripts or Custom Functions out of BE into your own solutions, or in RefreshFM for putting the entire import script onto the clipboard for you to paste into the file. It's a great way for developer tool providers to really simplify the installation of their product that no native FileMaker method provides.

And more importantly I think this really shows how a free and open source plugin option really helps the whole developer community. People like Todd, or anyone with a neat idea, can include a copy of the BE plugin with no cost to them or their users, and with no restrictions or requirements for licences that would just get in the way and cause support issues.

Where is the FileMaker API?

I think this really gets to the point that Todd made in the previous post about comparing FileMaker to WordPress, and the idea of FileMaker as a platform. This method of putting XML onto the clipboard works, but shouldn't be the way this is done. The whole idea of an extensible FileMaker is something we're very interested in, being developer tool producers, but I think it's worthy of it's own post and proposal, so look for that soon.

Free FileMaker Plugin Update

We continue to add functionality to our free FileMaker plugin, even when I don't post about it often here. Since the last point release of 2.1 we've been adding more functionality and fixing more bugs. Version 2.2.2 is the latest current release and has a bunch of new functionality :

  • Allow selection of multiple files in BE_SelectFile
  • BE_XML_Parse
  • BE_Zip & BE_Unzip allow control over the name/destination of the archive
  • BE_XPAth optionally returns node values as XML
  • Do not return output from BE_ExecuteSystemCommand when a timeout of 0 is specified

And as well as that some bug fixes :

  • Improved error handling for CURL based functions
  • XPath functions now support objects of type XPATH_BOOLEAN, XPATH_NUMBER and XPATH_STRING in addition to XPATH_NODESET
  • Handle CF_UNICODETEXT, Windows clipboard native type, correctly
  • Improved error handling for Windows clipboard functions
  • Zip directory bug on Windows
  • Workaround for BE_ExecuteShellCommand crash in FM13
  • BE_MessageDigest returns correct result when input contains multi-byte (e. g. Japanese) characters
  • Correctly set the "from" encoding type when converting text encodings
  • BE_ListFilesInFolder returns "?" and sets BE_GetLastError when the directory does not exist
  • Use modern Open File dialog on Windows
  • Allow parsing of large nodes in BE_XML_Parse, BE_SplitBEFileNodes & BE_StripXMLNodes
  • Return an empty string when getting an empty node set as xml
  • Update OpenSSL in Windows version due to the Heartbleed bug

As usual, the latest downloads can be found on the plugin page.

And we're continuing to work on it. Our 2.3 release is set to add support for zipping multiple files, a save file dialog box, an optional progress bar for curl HTTP actions and new encryption support.

Free FileMaker Plugin Beta 2.3

Hot on the heels of the 2.2.2 version of our free BaseElements plugin, we've got a 2.3 alpha ready to go.

This version adds a new encryption function BE_Encrypt_AES and a matching BE_Decrypt_AES. And adds the ability to zip multiple files by passing a list of paths to the BE_Zip function.

There is an a2 build for Mac, Windows 32bit and Windows 64bit for FileMaker Server.


BaseElements plugin 2.3.0b1 update

We've got a new beta release of the next version of our free FileMaker plugin. As always some bug fixes, and some new features. This time around we've had some sponsorships as well so it's great to see others taking advantage of that option.

New features

BE_Encrypt_AES ( key ; text )
BE_Decrypt_AES ( key ; text )

For encryption and decryption using AES. ( Thanks to Jeremiah Hammond from DBServices for sponsoring this. )

BE_Zip ( fileList {; archive} )

Now allows you to specify a return delimited list of file paths, and an optional archive path to store it.

BE_SaveFileDialog ( prompt {; fileName ; inFolder } )

A Save File dialog to match our Select File and Select Folder dialogs.

The BE_SaveURLToFile function will now show a progress dialog, when you first apply the option BE_Curl_Set_Option ( "CURLOPT_NOPROGRESS" ; 0 ).

BE_ListFilesInFolder ( path {; type ; includeSubdirectories ; useFullPath } )

This function adds an option to recursively process directories and also to return a full path instead of just the filename.

Thanks heaps to Steve Wright from SWS Solutions for sponsoring all of the Save File, progress dialog, and Zip file functionality.

Bug Fixes

This release also fixes :

  • A memory leak in the SQL code.
  • Supports the CF_FILEGROUPDESCRIPTORW, CF_FILENAMEW & CF_FILENAMEMAPW clipboard formats on Windows.
  • Resolves an issue with 2.2.x not loading under Windows XP.
  • Improves handling of focus for dialogs

There is an b1 build for Mac, Windows 32bit and Windows 64bit for FileMaker Server.

Free FileMaker plugin update 2.3.0

We've got a new release of our free FileMaker plugin available, with some important fixes and some new functionality.

Version 2.3.0 is available for Mac, Windows 32bit and Windows 64bit for FileMaker Server. The full release notes includes all the details, and most of the new functionality I've written about previously on the blog.

Thanks

We'd like to once again thank Jeremiah Hammond from DBServices for sponsoring the new Encryption functionality, and Steve Wright from SWS Solutions for the Save File, progress dialog, and Zip file changes. It's great to see others agree that having a good public resource for FileMaker plugin functionality is worth something to the community and are willing to commit time and money to it.

If you see Steve or Jeremiah at FileMaker DevCon this year, and appreciate the new functions, please buy them a beer.

BaseElements Plugin Future Directions

You may have noticed a new version of our free FileMaker plugin was released in the last few weeks, bringing the version number to 3.0. Lots of new features in this that are very exciting, but there's been a lot going on behind the scenes here as well which hasn't been public and I'd like to go through for all those interested.

It started at Xero

One of the big new things we added in this release is a simple ( on the outside ) function to authenticate against the Xero API. Xero is becoming one of the big new things for online accounting, we use it ourselves and it's growing worldwide.

At first it seemed like we would need OAuth in the plugin to make this work, so we started down that path. It turns out the Xero interaction is OAuth like but not the same as what we'd developed. After a lot of back and forth and development work at our end, we finally got something working, but realised the function itself is just the beginning.

So we also set to work to write a Xero sync framework that can push and pull data from Xero to a set of local FileMaker tables. This was something beyond the plugin, but that really only has value alongside the plugin.

At this point, we had the plugin as a set of functions that were free, open source and contributed from lots of different people, and a second set that we'd spent way more time and money on, and that also requires a FileMaker sync framework to be useful, that in our mind could be a product on it's own.

We spent a fair bit of time looking at how we could have two versions of the plugin, one paid and and one free. The paid version would just contain the free functions plus extras. Seems simple enough, even with our model of not having registration functions, until you get into real world questions. For example you want to be able to update from the free to the paid. So they have to have the same names and function names. But then how do you know which is which?

It quickly became apparent that this would only create more work for the people who have paid, who we are trying to improve things for. And the whole point of this at the beginning was to have a single plugin, with no complex registration.

So all of that has been shelved, and we're back to a single set of open source code, but we need to consider now what to do with the Xero work and then whether we can recover any of the costs of development to date.

Acknowledging the work done so far

All of the plugin development has been done by an outside contractor, so everything we do has a cost. Even though we've had some very generous people either contribute code or pay for changes to code, that has been less than one tenth of the total spend to date.

It doesn't stop here

But we've also got a lot planned for the plugin already, including some cool javascript code, and support for SMTP. But on top of that, we are now seeing much more in the way of support requests from people who need implementation help.

Also there have been requests for functionality that we just can't consider, or that would be a lot of work, but that aren't going to be very popular. It would be nice to have a way to get feedback from users about what should go into the plugin, and how we should extend it.

The Future

So we've decided give people a better option to sponsor the plugin in order to have a say in where it goes in the future, and to help contribute towards it's ongoing costs. This would be an annual fee ( $199 for a single user or one person company, and $399 for a larger organisation ). There is no obligation to take this up, you still don't need to register the plugin, we will continue to open source all of the code, and there will not be a paid version that is separate from the free one.

But anyone who is a sponsor will have access to :

  • A dropbox share of every released version of the plugin with instant updates.
  • Access to test versions of new releases.
  • Any plugin dependent FileMaker code, starting with the Xero code, along with a licence to integrate it in any of their own projects for free, again with no registration.
  • Access to a proper support channel.
  • A say in what functions will be added in the future, and the ability to suggest new functionality.
  • A warm fuzzy feeling that you're supporting something that all FileMaker developers can benefit from.

Great idea, let me buy

If you're super keen to get started, you can subscribe here :

Single developer subscription - $199

Company subscription - $399

There is the option to create an account and password, we suggest you do that if you want to manage any future transactions. The payment gateway is BlueSnap, so you'll get confirmation details from them.

We won't be creating a NFP or EDU discount on this, but will let larger organisations purchase a single developer subscription.

Can I tempt you with more?

We've just released the 3.0 version of the plugin, which adds Exporting of containers on FMS, FTP Uploads, Xero auth and more. And 3.1 is just around the corner and it does JavaScript and SMTP.

Thanks

Thank-you to everyone who has contributed in the past, either code or sponsoring functions. Thanks in advance to everyone who values the plugin enough to sponsor us.

BaseElements Plugin Updated to version 3.0

We've released another version of our free FileMaker plugin, this time to 3.0. This versions brings some new functionality :

  • BE_ExportFieldContents - allowing you to do exports from containers on FMS
  • BE_FTP_Upload - self explanatory I hope.
  • BE_HMAC - encoding format often used in Web Services authentication
  • BE_Xero_SetTokens - to allow the use of the XeroAPI from within FileMaker.

This also adds some new, but hidden functionality, that will be finalised in a future release ( the soon to arrive 3.1 version )

  • BE_EvaluateJavaScript
  • BE_SMTP_Server
  • BE_SMTP_Send

BE_EvaluateJavaScript looks to be very interesting and have a host of neat possibilities.

This version removes some previously deprecated functions :

  • BE_ExecuteShellCommand
  • BE_FileMaker_Tables
  • BE_FileMaker_Fields

If you were relying on BE_ExecuteShellCommand you will need to change your code to use BE_ExecuteSystemCommand instead, and the two internal SQL functions can be done with the new Execute SQL function.

As well there's been error handling fixes to BE_ProgressDialog, the BE_ListFilesInFolder will force the correct path separator, BE_MessageDigest will show an error for passing an invalid algorithm and the Zip functions have better error handling and now support empty folders inside zip files.

If you appreciate the plugin, and use it in your solutions, please consider an annual sponsorship. Just $199 for single developer, and $399 for a company. Sponsorship gives you access to technical support, new releases, code samples and lets you help decide on future functionality.

BaseElements Plugin 3.1 beta available, now includes SMTP

Hot on the heels of yesterday's note about the 3.0 version of our free FileMaker plugin, we've got a new beta release available already. This version does some cool new stuff :

  • Support for Gzip and UnGzip which is the same format as the internal FileMaker container field compression.
  • Support for testing container fields for compression.
  • Import into container fields, to match the Export so that you can do this inside FMS scripts.
  • New CURL constants to simplify HTTP Authentication.
  • Additional options for the Values functions to support case insensitivity.
  • The ability to use callback functions to call scripts, or evaluate calculations from with JavaScript.

And ... new SMTP email sending functionality, with support for HTML emails and multiple attachments. We knew you'd like that last one :)

Beta releases are available to all of our sponsors, you can subscribe for just $199 for single developer, and $399 for a company. Our sponsors help to decide on future functionality and get access to our support forums.

Viewing all 26 articles
Browse latest View live