There is non-trivial interest in FileMaker integration in the Drupal community, which I first noticed at Drupalcon DC, when I saw a well attended FileMaker BOF meeting. Further research revealed that there is a group (http://groups.drupal.org/filemaker) and two modules, but neither module is far along and this module uses a different (I think better) strategy. More on those two modules in a moment.
My module allows for development of sophisticated FileMaker web applications through an easy to use interface and, in many instances, would allow people to use Drupal instead of a FileMaker client to interact with a FileMaker server.
The module defines a FileMaker node type. A FileMaker node is related to a FileMaker connection (created in admin/settings/filemaker) and interacts with a FileMaker database. Each FileMaker node is based on a FileMaker 'layout', which is the FileMaker interface to a subset of the database. The FileMaker data accessible through this node can be searched and viewed, and records can be edited or added. In addition, this module incorporates one of FileMaker's most powerful features: portals. Portals sit on a FileMaker layout and display tables of related data. The module allows any or all portals on the related FileMaker layout to be included on a FileMaker node.
Please view the demo video at:
http://www.youtube.com/watch?v=fnA09HjeNWU&feature=player_embedded
About the two modules that currently exist:
One module doesn't have a project page (http://drupal.org/node/807010) and was never finished but is used somewhat. It imports FileMaker data into Drupal so it can be viewed using Views. And that is it. Useful for displaying FileMaker data on the web, but can't interact with live FileMaker data. I have been in touch with the developer of this module and learned that it is unlikely that he will address the concerns which prevented him from getting CVS access, although he expressed interest in working with me on this module.
The FileMaker module with a project page (http://drupal.org/project/filemakerform), filemakerform writes to FileMaker, using the webforms module, which is cool. But there is no way to view or interact with data in FileMaker. There is no select or update functionality, only insert. I would have joined with this project instead of writing a new module, but the architecture used is not compatible with the features I want. The webforms module (which filemakerform sits on top of) is great for moving data one way, out of Drupal and into FileMaker, but can't be used to build FileMaker applications in any other ways.
| Comment | File | Size | Author |
|---|---|---|---|
| #30 | filemaker.zip | 13.84 KB | tedstein |
| #20 | tedstein-filemaker-ef061f9.tar_.gz | 12.24 KB | tedstein |
| #12 | filemaker_module.zip | 13.54 KB | tedstein |
| #10 | filemaker_module.zip | 11.21 KB | tedstein |
| #7 | filemaker_module.zip | 10.36 KB | tedstein |
Comments
Comment #1
tedstein commentedComment #2
tedstein commentedComment #3
tedstein commentedJust realized I didn't have a README.txt, so I wrote one. Please find it attached.
Comment #4
tedstein commentedJust noticed that I needed an $Id$ tag in README.txt, so I added it. Also zipped all the files up together.
Please note, as explained in the README file, this module is dependent on (a) FileMaker server and (b) the FileMaker API for PHP. I created a demo video (linked to from my inspiration statement) so you can see it in action though. I can also provide you access to my FileMaker server if needed, just let me know.
Thanks in advance.
Comment #5
tedstein commentedReading the comments on CVS applications of other people is wonderfully helpful. Just learned not to use t() in hook_menu. Removed it. New files attached.
Comment #6
tedstein commentedIntroduced a bug in that last edit. Now fixed again. New version attached. Sorry I didn't do all of this before applying, but I had no clue the CVS application queue comments were such a treasure trove of knowledge.
Comment #7
tedstein commentedThen I upload the wrong files.
I am sorry about all of these updates: I stayed up all night tonight writing my inspiration statement, README.txt, making the demo video, and reading other CVS applications.
Comment #8
tedstein commentedI decided to spend some more time polishing rough edges and whatnot and then finish the application in a few days or so.
Comment #9
avpadernoComment #10
tedstein commentedMost recent version.
Comment #11
tedstein commentedComment #12
tedstein commentedReady for review. Please use the attached set of files.
Comment #13
tedstein commentedJust checking in.
Also, the module has seen some refinements (support for FileMaker value lists mostly, but a few other details as well) and I am not sure if I should upload the current stable version to the application queue or not.
Thanks in advance.
Comment #14
tedstein commentedI would still prefer to have the code hosted on d.o, but since I don't know when that will be I uploaded to github.com.
To review the code, please grab it from:
https://github.com/tedstein/filemaker
Thanks in advance, and I look forward to having the chance to upload the module to a project page on d.o.
Comment #15
mmottvisual commentedQuite a nice implementation. I'm currently working with a client with a large filemaker database and a possible need to connect this to a website. This seems a good potential way to go.
Comment #16
avpadernoComment #17
oculusmm commentedVery interesting just received an email. Will need to download this extension tomorrow. I will be creating a recruitment portal with over 100,000 client records planned start in 2-3 months time using a Filemaker database back end. This could be something I would love to try out. Was planning on Joomla development but see very little integration on that system. This could be just what I've been waiting for. Will check this out tomorrow.
Comment #18
xmacinfo@tedstein: please make sure that any external php files (e.g. primary API directory (FileMaker) and the gateway file) are placed inside the "/sites/all/libraries" folder, with instructions to create the libraries folder if it is not already there.
This have the added advantage of keeping those external files in the event that your users are using Drush to update your module, thus keeping your module in a working state. Drush deletes any module folder that it is updating, so you would save your users to reinstall the external php files after each updates.
This FileMaker module is the perfect candidate for a new project application on d.o. I plan to use it.
I will test and review this module later, if time permits.
Comment #19
xmacinfoAs per my previous comment.
Comment #20
tedstein commentedUpdated module to store FileMaker API in sites/all/libraries instead of the module's directory. Updated the readme. Also added a dependency to libraries module, noted in the .info file.
Comment #21
tedstein commentedUpdating status. Thanks for taking the time to review, xmacinfo.
Comment #22
xmacinfoInstallation instructions for the FileMaker API are confusing. These start with "libraries" and finish with "modules".
I believe you meant to put everything in sites/all/libraries/filemakerapi/
Also, in the filemaker.info file, reference to the libraries module is wrong:
dependencies[] = librariesLooks like you do not need to install the Libraries API module (http://drupal.org/project/libraries), which the dependencies[] = libraries would look for. I believe we do not need to install this module.
I have a test FileMaker Server installation that I will use to test out this module again once the instructions are fixed.
Comment #23
xmacinfoI now believe we need to install the Libraries modules. But I think the first part of the instructions should stille be rewritten.
I should be able to configure a first connection to FileMaker tomorrow and see how it goes.
Comment #24
xmacinfoI installed the FileMaker API inside the Libraries folder. But I still get an installation error.
I will wait for a new version to review this.
Comment #25
tedstein commentedXmacinfo, where is that error? The status report? The FileMaker connections page?
Are you sure you have:
/sites/all/libraries/filemakerapi/
With this inside:
/sites/all/libraries/filemakerapi/FileMaker.php
/sites/all/libraries/filemakerapi/FileMaker/*
Comment #26
darrellduane commentedI was able to install this filemaker module and get the Filemaker library installed as per the instructions and get a green:
FileMaker FileMaker API is installed correctly message.
Not sure what the problem is with xmacinfo's install of the filemaker Library, but here is what I get with an ls -R from the libraries directory:
hope this helps.
Comment #27
tedstein commentedIn addition to asking Darrell to test (comment above) I installed the module on a couple new sites and was unable to reproduce the error. Updating status to 'Needs Review'.
Also, I added checkbox support for the module. If you want to test the latest version, please download it at:
https://github.com/tedstein/filemaker
Comment #28
xmacinfoLooks like you corrected the README.txt file. As noted in #22, instructions were confusing. Thank you for that.
I will try testing the new version on github tomorrow with FileMaker Pro 11 Server.
That being said, I was trying out the file published in #20, not any version published on Github. So to remove any confusion, you may upload the latest version here in this issue.
As for #26, looks like @DarrellDuane can move this to RTBC. No need to delay RTBC for me if someone else have more success than me. We need this module on D.O.
:-)
Comment #29
darrellduane commentedPer #28 above!
Comment #30
tedstein commentedCurrent version of the code, so you don't have to get it off of github.
Comment #31
tedstein commentedJust checking in.
I am glad to help anyone test this module, and will provide access to FileMaker server, as well as the FileMaker API to anyone interested in testing.
Thanks in advance.
Comment #32
xmacinfo@tedstein: I have the “FileMaker API is installed correctly” message.
Can I ask you a support question about proper FileMaker Pro Server Deployment? I'd like to know if I can deploy FMPro Server on a single machine or two to use the Drupal module and if FileMaker needs it's own web server in addition the the Drupal site.
Comment #33
tedstein commentedYour FileMaker server needs either Apache (mac) or IIS (windows). Drupal doesn't have to be on the same machine as FileMaker.
Does this answer your questions? If you need phone support, I am more than happy to do so.
Ted
Comment #34
dbos commentedThanks for your hard work! I'm having some problems though...
I get the following:
[Mon Feb 21 05:32:09 2011] [error] [client xxx.xxx.xxx.xxx] PHP Fatal error: Cannot redeclare filemaker_connection_form() (previously declared in /Library/WebServer/Documents/modules/tedstein-filemaker-8824d82/filemaker.module:1152) in /Library/WebServer/Documents/modules/tedstein-filemaker-8824d82/filemaker.admin.inc on line 170, referer: http://xxx.xxx.xxx.xxx/admin
and the same error but with the filemaker_connection_submit function on line 200 happens as well when I comment out the whole filemaker_connection_form() function.
These come with a WSOD which appears when trying to use the admin page of the module (not the content create page though).
Trying to tinker around to get it to work, I simply commented out the offending function declarations in the filemaker.admin.inc file. This got me to the point where I could actually get to the admin page and even add a connection, but there are serious problems that came with such a crude approach and it doesn't seem like I'm on the right path; the content made while the functions were commented out behaves strangely. I do however get to see some layouts and records so the filemaker connection and API seem to be working. If there is any more info I can provide I'd really appreciate a hand with this.
Comment #35
xmacinfo@tedstein: Thanks for your support. You did answer my question.
Comment #36
tedstein commenteddbos, I have updated the module. Please see here:
https://github.com/tedstein/filemaker
Everyone else, thank you for helping review. I have set this up as a Git application.
Please see (and help review) here:
http://drupal.org/node/1073314
Comment #37
avpadernoPlease read all the following and the links provided as this is very important information about your CVS Application.
Drupal.org has moved from CVS to Git! This is a very significant change for the Drupal community and for your application. Please read the following documentation on how this affects and benefits you and the application process:Migrating from CVS Applications to (Git) Full Project Applications.
Comment #38
tedstein commentedHere is the link to the git sandbox:
http://drupal.org/sandbox/tedstein/1073302
I have added a number of features, the biggest being: support for actions, value lists (selects, checkboxes, and radios), and a default node view option.
If anyone needs a demo FileMaker file set up, and a copy of the FIleMaker API, please let me know.
Thanks kiamlaluno, and congratulations on the git migration.
Comment #39
tedstein commentedAny luck with testing xmacinfo?
It seems there is a _long_ delay for full git access application review. I want to build a great tool for building FileMaker web applications, thought it would be nice to contribute it, and had no idea how hard this would be.
I thank you much for taking the time to review.
The current version has a few more features, notably support for tokens/triggers/actions.
The sandbox is here:
http://drupal.org/sandbox/tedstein/1073302
Thanks in advance, if you are able to spend the time to review.
Comment #40
avpadernoComment #41
tedstein commentedkiamlaluno, does the status change to 'fixed' mean that the project application has been approved? Or something else?
Thanks!
Comment #42
avpadernoIt was a mistake from my side; I should have moved the issue to the other queue.
Comment #43
scotwith1tI have been using this module for a couple months now, entering work hours on a remote filemaker database for an employer. works like a charm, have had no bugs as of yet and i understand there are a couple new features in the works, including token and rules integration! please approve access to get this project out there for everyone to peruse and work on together!
Comment #44
berdirSorry, I have to set this back to needs work, there might be a security issue here, see below.
- return array('administer filemaker', 'create mode', 'browse and find mode', 'layout mode', 'FileMaker nodes');
Some of these permissions are quite hard to understand, you might want to try to change them into something that's more readable/understandable. D7 will allow to provide a translated title and description.
- $items['node/%/find'] = array(
Same for the other similar menu items. You can use 'node/%node/find' here and "'page arguments' => array(1). This will automatically call node_load() and pass a fully loaded node object to your callback. (You can do the same for your access callback). This will save the additional node_load() call in your page callback and also makes the arg(1)-stuff unecessary as using arg() is discouraged.
-
And similar. This isn't necessary, drupal automatically passes additional arguments in the URL after your defined router menu item to your page callback. So you can simply use the following(together with the menu change from above)
-
This is problematic. Someone could execute a so called CSRF attack by simply tricking you into opening that URL (in a hidden iframe for example) and it would delete that record automatically. You need to protect this. The easiest way is to integrate a confirmation form, because all forms in Drupal are automatically protected against something like this.
Comment #45
tedstein commentedBerdir. Many thanks:
> function filemaker_browse_tab($node, $tab = NULL, $fmid = NULL, $delete = NULL)
I did not know you could do that. Sweet.
I will update the code and post an update soon.
Comment #46
tedstein commentedWhat is the best practice to avoid using arg() in a form hook?
For example:
Thanks in advance.
Comment #47
berdirhook_menu:
'page callback' => 'drupal_get_form',
'page arguments' => array('filemaker_record_form', 1),
And then just:
No need for the helper function anymore. Note that in Drupal 7, you also need $form before $form_state, this has been added for consistency with the validate/submit functions.
Comment #48
tedstein commentedBedir, you rock!
What about in a situation like this:
Where the form is only a part of what happens in the page callback?
Comment #49
berdirJust pass the arguments as additional arguments to drupal_get_form(), like "drupal_get_form('filemaker_record_form', $node);". Obviously, you also need to update the function signature of whatever function this is called in.
Comment #50
tedstein commentedThank you. I just learned _a lot_ today.
I still need to add the delete verification, but I am nearly done with removal of arg() and node_load(). I should have the update here soon. Hopefully tomorrow, but might be a few days.
Thanks again Bedir.
Comment #51
tedstein commentedMany thanks for taking the time to review it. After a few hours of updates, I believe that I have addressed all your concerns.
Callbacks, node_load, and arg()
I added %node, used page/access arguments instead of node_load, and removed calls to arg(), except where really needed.
Delete confirmation form
I added a form (filemaker_delete_form) and set it up as a confirmation for deleting FileMaker records, fields, or portals.
Permissions
The permissions are FileMaker terminology, and explained in the README.txt. If this is a blocking issue, I will change it, of course. But I think these permissions make sense to FileMaker users.
Sandbox link
http://drupal.org/sandbox/tedstein/1073302
Thanks.
Comment #52
tedstein commentedOK. Just touched it up a bit more and committed all the fixes. See comment above on details.
I hope that changing the status to fixed is the right thing to do here.
Thanks again Berdir.
http://drupal.org/sandbox/tedstein/1073302
Comment #53
xmacinfo#tedstein: You need to leave it at “needs review”, until Berdir or someone else marks this as “Reviewed and tested by the community”, also known as RTBC.
“Fixed” will be set only when you will be allowed to create releases for your project.
Comment #54
berdirI had a short look over the commits, the changes look good to me. Not marking as RTBC since I've never actually used the module.
phrancescot in #43 already marked the module as RTBC and he is using it so I'd suggest that he tries the latest version and if that works ok, marks it again as RTBC :)
Comment #55
scotwith1tso long as the coding is all kosher (and from Berdir's comments it looks as though it's very solid) the interface is still bug-free from my standpoint and the delete form confirmation is definitely a good addition. i am able to easily and with no problems I can see:
Looks ready to me. Let's get this out there for more community feedback and potential improvements!
Comment #56
tedstein commentedThanks Berdir and Phrancescot.
Do we need more people to review the module? Is it ready for a project page?
Comment #57
jerrysalem commentedThis is a well needed application.
I have gotten requests from many people about having filemaker talk to drupal.
This is a great solution to that problem!
Keep up the good work, Ted, and much success in this project.
Jerry
Comment #58
jsalt commentedHi, I just tested the latest version of the module - downloaded from tedstein's sandbox - and everything seems to work great. I'm happy to do more testing if it helps get this module approved. What I did was similar to phrancescot, but I also tested adding and deleting FileMaker connections and portals, as well as value lists. Testing was no problem because I needed to do some web FileMaker work anyways.
Is there anything I can do to help speed up the approval process? Now that I have the module installed, I'm happy to do more testing.
FileMaker talking to Drupal will make my life so much easier.
Full disclosure, I know Ted personally, if it matters.
Comment #59
chrisostrom commentedWith Ted's help, I recently troubleshot a connection issue with the module (that turned out to be an issue with my FileMaker Server host), and took a tour of its functionality. From what I can see, this module works flawlessly and will be very useful for anyone wanting to interact with FileMaker databases using Drupal. I look forward to this module getting approval.
Kind regards,
Chris
Comment #60
tedstein commentedAs this application now has over 50 comments, I thought it might be helpful to sum them up.
The community has expressed interested
http://drupal.org/node/990214#comment-3976906
http://drupal.org/node/990214#comment-3978492
http://drupal.org/node/990214#comment-4191022
The community has kindly provided feedback, which all got addressed
http://drupal.org/node/990214#comment-3978526
- Fixed here: http://drupal.org/node/990214#comment-3979814
http://drupal.org/node/990214#comment-4160296
- Fixed here: http://drupal.org/node/990214#comment-4162448
Also, phrancescot requested some changes via email, and I addressed them here:
http://drupalcode.org/sandbox/tedstein/1073302.git/blobdiff/2af556ead326...
The community has kindly reviewed and tested
http://drupal.org/node/990214#comment-4083466 and http://drupal.org/node/990214#comment-4084288
http://drupal.org/node/990214#comment-4107684
http://drupal.org/node/990214#comment-4160066
http://drupal.org/node/990214#comment-4168046
http://drupal.org/node/990214#comment-4170322
http://drupal.org/node/990214#comment-4192188
http://drupal.org/node/990214#comment-4193128
Here is the sandbox link: http://drupal.org/sandbox/tedstein/1073302
Comment #61
berdir@tedstein: Nice job at getting user feedback :)
This issue is RTBC so there isn't much to be done except someone who does have the necessary privileges needs to change your project to be public. It's taken a bit longer because most people with that permission are probably currently busy attending DrupalCon. AFAIK, there will be a project application review sprint tomorrow, so there is a good chance that it gets done by then!
Comment #62
tedstein commentedDear code review sprinters,
I summarized all the comments to make this as easy as I could for you:
http://drupal.org/node/990214#comment-4193132
Thanks code reviewers!
(And thanks again Berdir.)
Comment #63
zzolo commentedThis review was done, in part, at the DrupalCon Chicago Code Review.
You have been approved! Quite an application issue. Thank you for your patience and dedication on this process. We look forward to your continuing contributions to Drupal and its community. Please read the following pages (and subpages) about Git usage and Drupal best practices:
Thank you to the following people for helping with this review:
--
Please be patient with the Full Project Application Review process as it is done by volunteers, we understand that this process is not the most efficient. The goal of the process is to ensure that contributions to the Drupal community remain valuable, and to help applicants build their skills as contributors.
Comment #64
xmacinfo@tedstein: Congratulations! Now, let’s rock all those FileMaker databases. :-)
Comment #66
avpadernoComment #67
avpaderno