The most recent version of this document can be found online at http://docs.360works.com/index.php/SuperContainer
Purchase a license or learn more about SuperContainer on the 360Works site
SuperContainer eliminates the hassle of dealing with container fields in FileMaker. It runs as a web-based java application which allows you to upload, view, and download scaled images and files from an embedded web viewer in FileMaker (introduced in FileMaker 8.5).
It is an effective replacement for container fields in solutions which require users to read and store files associated with records in FileMaker container fields, and offers numerous advantages over container fields.
SuperContainer is designed to be used from within a Web Viewer layout element in FileMaker, by pointing the Web Viewer to a URL that uniquely identifies a file resource you wish to store. This URL can contain any number of arbitrary path components.
In addition, SuperContainer ships with a Companion Plugin that allows you to automate access to SuperContainer resources. Consult the documentation in the
SuperContainer Companion Plugin directory for more details and examples.
If your computer does not have Java installed, you may download it at http://java.sun.com/javase/downloads/index.jsp
You can run SuperContainer as a standalone application, or by bundling into FileMaker Server Advanced, or in your own copy of Tomcat. If you are upgrading from a version older than 1.3, be aware that the URL formats have changed in SuperContainer.Note: There is an incompatibility with older versions of some 360Works plugins. If you are using other 360Works plugins, be sure to download new versions at http://360works.com/products/
This approach is excellent for simple deployment, as well as for testing and development. There's no installation required, you just start the server and immediately begin using it. You will need to start the SuperContainerServer every time the machine it is running on is rebooted.Macintosh or Windows: Double-click the SuperContainerServer.jar file to start the standalone application. Once the application is running, you should be able to view the opening page at http://localhost:8020/SuperContainer . The server application allows you to specify where uploaded files are stored, and customize several other settings. To restrict unwanted access to your SuperContainer files, enter a username and password in the options dialog.
Deploying SuperContainer in standalone mode on Mac OS X enabled CoreImage rendering support. See the Supported Image Formats and CoreImage rendering section for more information.Note: the standalone application must be in the same directory as the
This approach is recommended for advanced users if you are running SuperContainer on a dedicated server which is also running FileMaker Server (or Advanced) 8, 9, 10, 11, or FileMaker Server 12.
Copy the entire SuperContainer download folder to your server, and double-click the MacInstaller.jar (Mac) or WindowsInstaller.exe (Windows) file in the SuperContainer folder. The SuperContainer Installer takes care of the following for you:
Once installation is complete, restart the machine and then point your browser to http://serverAddress/SuperContainer.
If you have trouble running the installation file you can perform a manual installation as an alternative. Instructions for performing a manual installation of SuperContainer can be found on our Product Support Wiki.
This approach is recommended for advanced users if you are running Linux, Solaris, or any other computer not running FileMaker Server Advanced.
You must have a copy of Tomcat (downloadable from http://tomcat.apache.org) installed and running.
SuperContainer/WEB-INF/web.xmlconfiguration file. You can customize the path where files are stored, as well as set a username and password to protect your SuperContainer files.
SuperContainerfolder into the Tomcat
Let's walk through setting up SuperContainer for a sample FileMaker solution. We will assume for these examples that your server is called 'yourServer.com', and that you have a table occurrence called 'Asset' with a field called 'ID'. This ID field is how you want to reference your files on the server. Substitute the actual values for your situation.
By default, SuperContainer will run in demo mode, which must be restarted every 2 hours. It will also display a small "DEMO" flag on all pages. You can activate the software at http://yourServer.com:8020/SuperContainer/Registration after purchasing SuperContainer and receiving your license key. This will remove the "DEMO" flag and will no longer time out after 2 hours.
You will need to start by creating a web viewer in your FileMaker layout, and assign a SuperContainer URL to the web viewer. The first part of the URL is always:
Where "Files/" points to a directory and "SingleFile/" points to a particular file within a directory (Example usage below).
After that, you specify where on the server you want the uploaded file to be stored. You can include slashes in the URL to store the files subfolders, like this:
You can also specify optional parameters in the URL which affect the behavior of SuperContainer. See the Customizing SuperContainer Appearance section for more about how to customize the SuperContainer display.
Typically, you would include the name of the table and the unique ID of the record into the URL, so if SuperContainer is running on the default port of 8020 for our example 'Asset' table, your URL for record number 4321 would look like this:
Additionally, if you know the filename that was present within record 4321 -- say, "myAsset.jpg" -- then you could use SingleFile/ to point directly to that file. For example:
The FileMaker calculation to do this would look like this:
"http://yourServer.com:8020/SuperContainer/Files/Asset/" & myTable::ID or "http://yourServer.com:8020/SuperContainer/SingleFile/Asset/" & myTable::ID & myTable::filename
Note that the SuperContainer URL can contain as many elements as you like. If a given asset can have 3 images uploaded to it, you could either create a new table for holding the images, or use the following URL schema:
"http://yourServer.com:8020/SuperContainer/Files/Asset/" & myTable::ID & "/1" "http://yourServer.com:8020/SuperContainer/Files/Asset/" & myTable::ID & "/2" "http://yourServer.com:8020/SuperContainer/Files/Asset/" & myTable::ID & "/3"
There are several ways to upload files to SuperContainer. The simplest is to drag a file or directory onto the SuperContainer window, which immediately uploads the file, displaying a progress bar during the upload process.
If you are looking at a SuperContainer URL which has no file uploaded to it, by default an "Upload file" button is displayed. You can use this button or right-click/ctrl-click to display a file chooser dialog. Select a file or directory to upload and click "OK", which then uploads the file, displaying a progress bar during the upload process.
Once a file has been uploaded to SuperContainer, it is displayed at the current width of the browser window (for images) or displayed as a file icon (for non-images).
Double-click on a file to download the file to the local computer and open it in the default application for that file type. Alternately, you can right-click and choose "Open in default application".
To save a file to a custom location, right-click and choose Save file.... This opens a file chooser dialog where you can specify where to save the file.
To view a resource in your browser, right-click and choose View in browser. This opens a
RawData URL in your browser which points to the raw file contents.
To delete a resource, use the "delete" button or context menu. Dragging a new file into SuperContainer will also delete any existing file.
You do not need to change anything in SuperContainer to use it with FileMaker Go. SuperContainer will detect that it is being viewed in FileMaker Go and automatically switch to 'noapplet' mode, which means that it will use HTML instead of a Java applet (Java is not supported on iOS). There are a few behavior differences to be aware of when using SuperContainer with FileMaker Go:
If you would like to view the SuperContainer resource in a full-screen browser window in FileMaker Go, you will need to add a button or script that calls the 'Open URL' script step. The URL should be the regular SuperContainer URL with the word 'RawData' in place of 'Files' (see 'RawData URLs' below for more information). Thus, the script step would look like this:
Open URL[ Substitute( SuperContainer URL; "/SuperContainer/Files/"; "/SuperContainer/RawData/" ) ]
There is a 9-minute movie available on Youtube demonstrating SuperContainer features on FileMaker Go: http://www.youtube.com/watch?v=ZPw3uibJC_c
SuperContainer automatically detects the size of the web viewer or web page that it is displayed on, and generates a thumbnail to exactly match the display size. You do not need to do anything for this to work. However, you may optionally want to display the image at a different size than the web viewer. In that case, you can include a width and/or height parameter in your URL, like this:
If you have password-protected your SuperContainer installation and don't want users to be prompted for a username and password, you can embed this information directly into your URL. For a username of "bob" and password "secret", you can do the following:
http://bob:secret@yourServer.com:8020/SuperContainer/Files/etc...Note: this is not a foolproof means of preventing users from finding out the username and password! The password will be shown briefly when loading the page, and again when clicking on a link to download the image.
Alternately, you can include the username and password as regular URL parameters (version 2.54 and later). To do this, include a username and password parameter in your SuperContainer URL, for example:
This is useful for Internet Explorer users whose security settings prevent the browser from allowing authenticationi from being embedded in the URL.
If you need to print images from SuperContainer, you can specify an optional
resolution parameter, telling SuperContainer to display images as hi-res. The default resolution is 72. If you specify a different resolution, SuperContainer will return a large image, and will alter the HTML
img tag to have the correct
Here is an example URL with a resolution parameter set:
If the original image is large enough, this results in an on-screen image no larger than 64x64 pixels, with a resolution of 300 DPI. If the image is not large enough, the DPI will be scaled down to no less than 72 DPI.Note: for performance reasons, you should only specify a
resolutionparameter for print-specific layouts. The server needs to do additional work analyzing the image if there is a resolution parameter, and the resulting image is also larger than necessary for on-screen viewing.
SuperContainer is access from a web viewer, and because of this printing before your image has completely downloaded or the applet has been loaded is a possibility. To make sure that you do not print before you have completely downloaded your image from SuperContainer it is recommended that you do one of the following:
A. Download the image to an unstored calc using the SCGetContainer function of the SuperContainer Companion plugin - This solution will automatically download the image at the full resolution for printing, however you will need to have the Companion Plugin installed.
B. Use "noapplet" mode with a specified hight, width, and resolution parameter as well - This option still risks printing before your download has finished, but reduces some of the risk of your print not working properly due to the java applet. You may want to add a one or two second pause to make sure that your images completely download.
SuperContainer by default currently supports thumbnail generation for the following image formats: bmp, jpg, gif, png, jpeg2000, raw, pnm, and tiff (on some platforms). Some images may use a compression format that SuperContainer cannot resize. These will always be displayed as full-size images.
SuperContainer 2.0 and higher running in standalone mode on OS X uses OS X's CoreImage rendering to generate thumbnails. In addition to being significantly faster, CoreImage can render almost any image format you throw at it, including PDF, EPS, SVG, TIFF, Photoshop, and many more.
Note that CoreImage only needs to be running on the server, any client connecting to SuperContainer will see the rendered thumbnails. This means Windows FileMaker clients can see PDF content previews in their web viewers.
SuperContainer is a web-based application, so you can access it from anywhere you have a network connection. If you are using custom web publishing or writing tools in other languages, you can still have access to your SuperContainer data.
Version 2 of SuperContainer includes a PHP API for interacting with SuperContainer from your custom web publishing applications. Simply
PHP/supercontainer.php file in your PHP script, then use the included functions to upload, download, delete, and query the server.
See the SuperContainer PHP Documentation.html in the
Support files/PHP directory of your SuperContainer download for more info.
There is a developer's Java API available separately. If you're writing a server-side java application or a desktop swing application, this provides an easy way to integrate with SuperContainer. Contact 360Works for more info on this.
If you want to link directly to the contents of a SuperContainer file, you can use a
RawData URL. Simple replace the word "Files" with RawData" in your SuperContainer URL, like this:
If you know that a given resource is renderable by SuperContainer, you can inline the contents of the file in some other HTML page by using an
img tag linked directly to the RawData URL, like this:
Note that if Asset/4321 contains some non-image file, this will result in a broken image icon. A safer option is to use an
iframe tag pointing to the
Files URL for the given SuperContainer folderPath.
SuperContainer uses either a Java applet or an HTML interface for uploading, downloading, and displaying documents. You can explicitly specify which interface you want by adding
?style=noapplet parameter on to the end of your SuperContainer URL. See the section on Customizing
SuperContainer Appearance for more details.
If you do not specify whether to use the applet or html interface, SuperContainer will use the best default, based on your browser and OS version. Users running Google Chrome, Firefox, or OS X Lion (10.7) will see the HTML view. All other users will see the Applet view.
The appearance of a SuperContainer page can be customized by setting custom
background-color parameters in your SuperContainer URL.
Some styles affect which controls are visible or hidden, others affect the layout arrangement, and others modify the font of the resource title.
There are two primary modes SuperContainer has for displaying images: Plain HTML and a Java Applet. The plain HTML is lighter-weight and loads more quickly, the applet allows much more interactivity such as drag-and-drop support. The applet is used by default, unless a style of
noapplet is used in the SuperContainer URL.
Specify a "style" url parameter to change the way a resource is displayed by SuperContainer. You can group multiple style names together with the "+" symbol. For example:http://yourServer.com:8020/SuperContainer/Files/Asset/4321?style=readonly+bold+large
Here is a quick summary of the different styles that are available by default:
See the SuperContainer Example file for a demonstration of how setting different style parameters can affect the appearance of SuperContainer.
Specify a "background-color" url parameter to set the background color of the BODY. This can be handy if you're using SuperContainer on a colored background, and want unused space to blend in. Note: this is not a
style parameter, but its own separate URL parameter. So you might have a URL that looks like this (with a background color of rgb(10,20,30)):
The background-color value can be a color name (
green), rgb value (
rgb(10,10,255)), or hex value (
#336699). Note that for hex values, you'll need to escape the "#" symbol with a %23 in the URL.
To disable opening a SuperContainer file in a new browser window, uncheck the Allow interaction with web viewer content checkbox in FileMaker for the Web Viewer component. You can then assign a button action to the web viewer to trigger a script when the web viewer is clicked.
selfsignedsslURL parameter will allow SuperContainer applet to interact with SuperContainer server which is accessed via a self signed SSL certificate.
By default Java applets only support fully valid SSL certificates. Example:https://localhost/SuperContainer/Files/asdf?selfsignedssl
Everything outlined in this document can be done without any plugins or software to install on your user's computers. However, there are some advanced features and workflow automation that can be accomplished using the SuperContainer companion plugin, which is included with SuperContainer. See the documentation.html file in the SuperContainer Companion Plugin folder for more information.
C:\Documents and Settings\SuperContainer\Files
/Library/FileMaker Server/Web Publishing/publishing-engine/cwpe-tomcat/bin/SuperContainer/WEB-INF/web.xml
C:\Program Files\FileMaker\FileMaker Server\Web Publishing\publishing-engine\cwpe-tomcat\bin\SuperContainer\WEB-INF\web.xml
TOMCAT_HOME\webapps\SuperContainer\WEB-INF\web.xmlNote: When specifing a custom location make sure that SuperContaier will have read/write privileges to the parent folder, thumbnails directory will be created in the same folder as the custom location.
C:represents the drive letter of the system drive.
Advanced users can also define custom styles by editing the
custom.css file in the SuperContainer application directory. You can also contact us for support if you'd like help with customized styles.
You can control your own version tracking by appending a revision number to your SuperContainer URLs, like this:
Since SuperContainer treats each slash in your URL as a folder, this will cause it to reference the 'revision2' subfolder inside folder '4321'. By removing the delete option, you can use this to make sure that a history all files is kept.
nodeletein your URL to prevent users from deleting any resources
nodeletestyle hides the delete button.
See the SuperContainer Example file for a demonstration of this technique.
In the example URLs above, notice the
"/Files/" portion after the application base URL. This specifies the view type to use. 99% of the time you will be using the Files view type for your URLs. If you want to return the raw data for a resource, you can use
RawData instead. This can be handy if you are referencing a SuperContainer resource from another URL, or using some tool to get the contents of a supercontainer resource file. The companion plugin uses the
RawData view type to pull data from SuperContainer.
For fine-grained control over your workflow, you can set all your web layouts to use the
readonly style, and use the plugin for all editing purposes. This allows you to build custom actions into scripts that occur whenever an item is uploaded. This makes implementing revision tracking much easier (see above). You could also utilize something like the 360works Textractor plugin to store the text of any uploaded documents in FileMaker.
Here are some example scripts you can integrate with your solutions. These illustrate error-checking best practices, and helpful ways to utilize the plugin functions.
If the user does not have the SuperContainer plugin installed, you may choose to exit the script, or take her to a different layout which uses a web viewer to upload/download files instead of the plugin. To check whether the plugin is installed, use the following method:
# Exit if plugin is not installed If[SCVersion = "?"] Show Custom Dialog ["SuperCOntainer Plugin is not installed."] Halt Script End If
You must always set the supercontainer base URL before calling other plugin methods. A good time to do this is in your startup script.
Set Variable[$result; Value:SCSetBaseURL("http://yourServer.com:8020/SuperContainer/Files")] If [$result = "ERROR"] Show Custom Dialog ["Could not connect to SuperContainer Server!"; SCLastError] End If
Use the following script to upload a file to SuperContainer using the plugin. This shows a file chooser dialog. When a file is selected, it is uploaded to SuperContainer, and the web viewer is refreshed to show the new file.
This demonstrates usage of the plugin functions
Note that you need to give your web viewer a name ("
webviewer" in this example) for the
Set Web Viewer script step to work correctly.
# Do the upload Set Variable [$result; Value:SCSetContainer(Get ( LayoutTableName ) & "/" & ID ; SCChooseFile)] # Check for error during upload If [$result = "ERROR"] Show Custom Dialog ["Could not upload file"; SCLastError] End If # Refresh the web viewer to show the new file Set Web Viewer [Object Name: "webviewer"; Action: Reset]
If you wish to open a SuperContainer file locally instead of opening it in the user's browser, you can use the plugin to look for the file on a mounted volume, or download it to the user's local hard drive.
You might make the web viewer a button which triggers the following script to download the file.
The following script demonstrates uages of the plugin functions
Set Variable[$folderPath; Value: Get ( LayoutTableName ) & "/" & ID] If [IsEmpty ( SCGetInfo($folderPath) ) ] # There is no file to open Exit Script End If Show Custom Dialog ["Do you want to open the file in your web browser, or download it to your local drive?"] If [Get(LastMessageChoice) = 1] # Open in web browser. Note we reference "RawData" instead of "Files" Set Variable [$url; Value: "http://myServer.com:8020/SuperContainer/RawData/" & $folderPath] Else If [Get(LastMessageChoice) = 2] # Download a local copy of the file and open that. This will be a "file://" url. Set Variable [$url; Value: SCDownload( $folderPath )] If [$url = "Error"] Show Custom Dialog ["An Error occurred while download the file" ; SCLastError] Exit Script End If Else # User clicked 'cancel' Exit Script End If Open URL [$url]
Web Views cannot be embedded in portal rows.
If you want to display SuperContainer files in a portal, create an unstored calculation in the portal table whose type is "container".
Set the calculation to
LeftValues ( SCGetInfo("path/to/my/record" ) ; 1 ).
This calculation will use the plugin to display the name of the resource in the portal.
If you're sure that only images will be used in a container and you want to display thumbnail views of the images, you can use the following calculation instead:
SCGetContainer("path/to/my/record" ; 64 ; 64). Adjust the path, width, and height for your needs.
The drawback with this is, if the container contains non-image data, the entire file will be downloaded each time the portal is displayed!
By default all FileMaker users have equal access to SuperContainer. Even if a user has read-only access in FileMaker, SuperContainer has no way of knowing that, unless you specify additional parameters in the URL.
To disable uploading and deletion for FileMaker users with read-only access, you can use a calculation like this to generate your SuperContainer URL:
"http://yourServer.com:8020/SuperContainer/Files/" & Get ( LayoutTableName ) & "/" & ID & "?style=" & If (Get(PrivilegeSetName) = "[Read-Only Access]" ; "readonly" ; "")
The above appends a "readonly" style name if the FileMaker user is in the
Read-Only Access privilege set. You can also use this technique to allow all users to upload, but only admins to delete (by using the
If you are migrating an existing FileMaker solution to use SuperContainer, you need a way to move your existing container fields over to SuperContainer. You can accomplish this by using the SuperContainer Companion Plugin. Simple write a script that loops through your records and call
SCSetContainer("Asset/" & Asset::ID ; Asset::OldContainerField) for each record you wish to move over. See the Companion Plugin documentation for more details, or watch a video demonstrating how to do this at http://www.360works.com/supercontainer/demos/set_container/
If you have a directory full of files you wish to add to SuperContainer, you can either copy them to the directory where SuperContainer stores its files, or use the companion plugin function
SCScanDirectory to return a list of files in a directory. You can optionally set a flag to scan for files recursively. See the Companion Plugin documentation for more details.
You can contact 360Works at (770) 234-9293, or on our website at http://www.360works.com. We include one hour of support with all products that we sell. After that time, our standard hourly rate applies to all support.