ヒント、コツ、FAQ
ヒントとコツ
SuperContainerをスタンドアローンで展開して80番のポートを使う
初期設定では8020番のポートで動作するスタンドアローンのSuperContainerアプレットを80番のポートで使うには、Apache Tomcatサーバーを設定する必要があります。まず、コンピュータ上のApacheのhttpd.confファイルに移動します。
OS X:
/private/etc/apache2
注意:この場所はOS X上で非表示になっていることがあります。Finderの「移動」メニューから「フォルダへ移動」を選択して移動できます。
Windows:
C:¥Program Files (x86)¥Apache Software Foundation¥Apache2.2¥conf
httpd.confファイルの以下に示す「DocumentRoot」の後に、その下の2行を追加します。
DocumentRoot "/Library/WebServer/Documents" ProxyPass "/SuperContainer" "http://localhost:8020/SuperContainer" ProxyPassReverse "/SuperContainer" "http://localhost:8020/SuperContainer"
ProxyPassとProxyPassReverseは、Tomcatでリモートサーバー(この場合にはSuperContainer)をローカルサーバー(Tomcat)のスペースにマップする指示です。 この指示についての詳しい情報は、http://httpd.apache.org/docs/1.3/mod/mod_proxy.html#proxypass に掲載されています。
次に、Apacheサーバーを再起動する必要があります。
OS X:
Terminalを開いて、以下のように入力します。
sudo apachectl restart
Windows:
WindowsでTomcatを制御する最も簡単な方法は、Tomcat Monitorツールを使うことです。スタート>すべてのプログラム>Apache HTTP/Tomcat Server>Monitor Apacheを選択して使用できます。
最後に、スタンドアローンのSuperContainerServer.jarファイルを通常通りに起動して、以下にアクセスします。
http://localhost/SuperContainer
SuperContainerが80番のポートで動作していることを確認します。
ホスティングプロバイダのためのSuperContainer
プロバイダがSuperContainerバージョン1.72以降をTomcatで動作させてクライアントに使わせることができます。その手順は以下の通りです。
- 各クライアントがSuperContainerのライセンスをそれぞれ購入する必要があります。クライアントの代わりにプロバイダが購入してもかまいません。
- SuperContainer/WEB-INF/web.xmlファイルを変更して、「activationCode」と「registeredTo」にクライアント用の設定として有効な値を入れます。
- SuperContainerフォルダの名前をクライアントの名前に変更し、このフォルダをwebappsフォルダに置きます。フォルダ名がURLになるので、フォルダ名を「SuperContainer」から「ClientX」に変更したとすれば、SuperContainerにアクセスするためのURLは「http://yourServer:8080/ClientX/Files 」となります。
ホスティングプロバイダ一覧
以下の企業のサーバーでSuperContainerをホストしている、または構成ができます。この一覧は360works社に連絡があった順に並んでいます。
- Dan Weiss, Adatasol ( http://www.adatasol.com/ )
- John May, Point in Space ( http://www.pointinspace.com/ )
- Scott Karch, Nimbus ( http://www.nimbushosting.net/ )
- Foxtail Technology ( https://www.foxtailtech.com/Index.php?page=sc )
- Joseph Climaldi, ODI Technologies ( http://www.oditech.com/ )
- Joshua Paul, Neo Code Software ( http://store.neocodesoftware.com/ )
- Lee Lukehart, SavvyData ( http://savvydata.com/ )
OS XのCore Imageでサイズを変更できるようにする
標準の構成では、SuperContainerはJPEG、PNG、GIFファイル、ほとんどのTIFFファイルのサムネールイメージを生成できます。PDFファイル、CMYKのJPEGとTIFFファイル、RAWファイル、Photoshopファイルのサムネールは生成されません。
Macに固有の機能として、SuperContainerでOS Xのネイティブのイメージプロセッシングライブラリを使ってイメージを扱うことができます。これにより、SuperContainerに渡したPDFやほぼすべての種類のイメージのサムネールを生成できます。これは、SuperContainerサーバーをOS X上でスタンドアローンモードで使っている場合にのみ動作します。Windowsサーバー上やTomCatで使っている場合には動作しません。ただしクライアントコンピュータが何であるかは問いません。
以下の場所に新規ファイルを作ります。
/Library/Preferences/com.prosc.supercontainer.properties
このファイルの内容は以下の通りです。
coreImageEnabled true
ファイルを作った後でSuperContainerを再起動します。OS Xのイメージライブラリを使ってサムネールが生成されます。PDFはアイコンではなくサムネールで表示されます。
クイックルックを有効にする
OS X 10.6 Snow Leopard以降
/Library/Preferences/com.prosc.supercontainer.properties
このファイルがなければ、作る必要があります。
このファイルの内容は、次の1行だけです:
quickLookEnabled true
プラグインの自動アップデートの情報
「Plugin autoupdate」(英語)のセクションを参照してください。
互換性の一覧表
FileMaker ProからSuperContainerにアクセスする
バージョン7 | バージョン8 | バージョン8.0v4 | バージョン9 | バージョン10 | バージョン11 | バージョン12 | |
---|---|---|---|---|---|---|---|
FileMaker Pro: Webビューアでアクセス | × | × | ○ | ○ | ○ | ○ | ○ |
FileMaker Pro: オプションのプラグインを使用 | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
バージョン7 | バージョン8 | バージョン8.0v4 | バージョン9 | バージョン10 | バージョン11 | バージョン12 | |
---|---|---|---|---|---|---|---|
FileMaker Pro Server:カスタムWeb公開 | × | × | × | ○ | ○ | ○ | ○ |
FileMaker Pro Server:インスタントWeb公開 | × | × | ○* | ○ | ○ | ○ | ○ |
FileMaker Pro Server Advanced:カスタムWeb公開 | ○ | ○ | ○* | ○ | ○ | ○ | ○ |
注記:* = OS XのFileMaker Server/Server Advanced 8.0v4では、オプションのSuperContainer Companion Pluginは動作しません。Windowsでは動作します。また、8.0v1〜8.0v3では動作します。
SuperContainerはFileMaker 10と完全に互換性があり、動作のテストが行われています。
SuperContainerがファイルを保存する場所を構成する
初期設定では、SuperContainerはMacでは/Users/Shared/SuperContainer、WindowsではC:¥Documents and Settings¥SuperContainer にファイルを保存します。これを、外部ドライブやネットワークボリュームなど任意のパスに設定できます。スタンドアローンモードで動作している場合(すなわち、SuperContainerServer.jarをダブルクリックした場合)、「Options」をクリックして構成できます。TomcatまたはFileMaker Serverで動作している場合は、SuperContainer/WEB-INF/web.xmlファイルを編集して構成できます。「macintoshFilesPath」または「windowsFilesPath」の設定を、ファイルを保管したい場所に変更します。ファイルを保管するフォルダのアクセス権を適切に設定してください。ネットワークボリュームの場合には特に注意してください。
SuperContainerのユーザ登録情報をロックする
.../SuperContainer/Registrationページに情報を入力するとユーザ登録が設定されますが、このページから変更することもできます。SuperContainerのユーザ登録情報をロックしてブラウザから変更できないようにするには、web.xmlファイルのactivationCodeとregisteredToの値にライセンスキーを入力します(ここでユーザ名とパスワードも設定できます)。値を入力しファイルを保存してSuperContainerを再起動すると、SuperContainerはユーザ登録ページに入力されたものではなくweb.xmlファイルから値を読み込みます。
SuperContainerをアンインストールする
FileMaker ServerのWeb公開エンジンで展開している場合:
SuperContainerをFileMaker ServerのWeb公開エンジンで動作するようにインストールした場合は、MacInstaller.appまたはWindowsInstaller.exeを再度起動し、「Remove」をクリックしてWeb公開エンジンからアンインストールします。
Tomcatで展開している場合:
SuperContainerをTomCatのスタンドアローン版で動作するようにインストールした場合は、TomcatのディレクトリのwebappsフォルダからSuperContainerフォルダを取り除くだけです。
スタンドアローンモードで展開している場合:
SuperContainerをスタンドアローンモードで展開している場合は(すなわちSuperContainerServer.jarファイル)、.jarファイルを削除するだけです。
注意:SuperContainerはプレファレンスをコンピュータ上のファイルに保存します(.jarファイルをダブルクリックしてスタンドアローンモードで動作させる場合)。このファイルの場所は、Macでは/Library/Preferences/com.prosc.supercontainer.plistです。このファイルを削除して保存されているプレファレンスをすべて削除してください。
レジストリのエントリを削除する
Windows:
「supercontainer」を含むキーのすべてのレジストリを検索して削除します。
Mac:
/Library/Preferences/com.prosc.supercontainerのファイルを見つけて削除します。
表示のためにファイルを開く動作は、nonappletのパラメータを使う場合には異なりますか?
はい。Javaアプレットを使用しない場合、SuperContainerはデフォルトのWebブラウザでファイルを開きます。OS XではSafariです。WindowsではInternet Explorerです。各ブラウザの動作はファイルタイプによって若干異なります。Safariのように、あるファイル(たとえばPDF)をレンダリングできるブラウザもあれば、Internet ExplorerやFirefoxのようにデフォルトではレンダリングできずファイルをユーザのテンポラリまたはダウンロードのディレクトリにダウンロードするブラウザもあります。
回避策として、FileMakerの「Open URL(URLを開く)」スクリプトステップを使ってファイルををネイティブのアプリケーション(例:PDFならAdobe Acrobat)で開くことができます。この例は、ドキュメントの「SCDownload()」に記載されています。これをレイアウト上のボタンに割り当てます。(参照:後述の「Javaアプレットを使わずにファイルをネイティブのプログラムで開く」)
SuperContainerのセキュリティとWebホスティング
これは常に浮上する課題であり問題点です。Webのインターフェイスのもとで動作している間は、誰かがファイルに直接アクセスすることはきわめて困難です。ファイルがWebサイトのルートのファイルディレクトリの外に置かれている場合には、特に困難です。FTPアクセスが有効で、しかもセットアップがずさんでセキュリティ対策がなされていないという場合を除いては、難しいでしょう。
SuperContainerとWebを使う際のセキュリティについてのちょっとしたアドバイスは、SuperContainerのインターフェイスは「Webアドレス」を使ってファイルをプルしWebブラウザに表示するので、ファイルを特定するために連番を「使ってはいけない」ということです。その理由は、誰かがちょっと気をつけて見ればWebのアドレスにファイルのIDが表示されていることに気づくからです。アドレスは以下のようになっています。
http://www.yourServer.com/SuperContainer/Files/PDFs/1024/
誰かがアドレスバーに以下のように手入力することは避けられません。
http://www.yourServer.com/SuperContainer/Files/PDFs/1025/ http://www.yourServer.com/SuperContainer/Files/PDFs/1026/
このようにすれば、見せるつもりのなかった書類や画像が見えてしまいます。連番ではなく、UUIDのようなきわめてユニークな識別子を使いましょう。Webアドレス/URLは長くなりますが、誰かがアドレスを当てずっぽうに見つけてしまうことはほとんど不可能になります。
Javaアプレットを使わずにファイルをネイティブのプログラムで開く
SCDownload()関数を「Open URL(URLを開く)」スクリプトステップと組み合わせて使いたいと考えることがあるかもしれません。SCDownloadはSuperContainerサーバーからファイルを取得し、ユーザのローカルコンピュータに配置します。その後「Open URL(URLを開く)」スクリプトステップで、ローカルのドキュメントをネイティブのアプリケーションで開きます。
Open URL [SCDownload("Photos/12345")]
上述の通り、SCDownload()関数に必要なものは、ほとんどのSuperContainer Pluginの関数と同様に、サーバー上のファイルを指定するフォルダパス(「/Files」より後のすべての部分)だけです。また、これも上述の通り、明確にわかりやすい名前は渡されません(渡されるべきではありません)。そのため上述の内容に従えば、ソリューションは期待通りに動作するはずです。 SCDownloadの詳細
1件のレコードを複数のWebビューアにリンクする(1件のレコードに対して複数のURL)
このような例として、2つのファイルが添付された連絡先のレコードが1件あると仮定しましょう。ファイルの1つはその人のピクチャ、もう1つのファイルはWordの経歴書のファイルです。
1件のレコードにファイルを2つともリンクしておくためには、レコードIDなど2つのファイルに共通する何らかの情報が必要です。また、2つのファイル間で異なる属性も必要です。ファイルタイプが、その良い候補です。
URLの例:http://serverAddress:portNumber/SuperContainer/Files/recordID/FileType
http://192.168.2.1:8020/SuperContainer/Files/12/image http://192.168.2.1:8020/SuperContainer/Files/12/document
もしくは
http://192.168.2.1:8020/SuperContainer/Files/12/contact_image http://192.168.2.1:8020/SuperContainer/Files/12/contact_bio
SuperContainerをポータルで使う
以下は、FileMakerのデータベースファイルのサンプルへのリンクです。このファイルはSuperContainerをポータルやオブジェクトフィールドとともに使い、複数のファイル/書類を関連レコードに統合しています。
http://demo.360works.com/SuperContainerDemo/PortalUseAdmin.fp7
複数ページのPDFをWebビューアに表示する
SuperContainerで複数ページのPDFをWebビューアに表示するには、2つの方法があります。
方法1. この方法は、SuperContainerがMac上でスタンドアローンモードで動作していることが必要です。このモードでは、SuperContainerは自動でPDFの1ページ目をレンダリングします。別のページのプレビューを取得するには、URLにページのパラメータを入れるだけです。例:
http://localhost:8020/SuperContainer/Files/multi/page/PDF?page=1 http://localhost:8020/SuperContainer/Files/multi/page/PDF?page=4
方法2. この方法では、ユーザのコンピュータで使用するシステムのブラウザでPDFファイルをレンダリングできることが必要です。Macでは、この機能は内蔵されています。WindowsではInternet Explorer用のAdobe Acrobat プラグインまたはこれと同等のものをインストールすることにより可能になります。WebビューアにPDFファイルをロードするには、http://localhost:8020/SuperContainer/RawData/multi/page/PDF のURLを使います。
JavaアプレットまたはHTMLのフォームでファイルを表示する代わりに、RawDataのコンテキストを使ってSuperContainerに保管されている実ファイルを返すように指定します。PDFをレンダリングできるブラウザの場合は、Webビューアで直接表示できます。1つめの方法ではWebビューアに単一ページのプレビューだけがロードされますが、この方法ではPDF全体がロードされることに注意してください。
業界に固有のヒント
法律に関する記載のフィールドでSuperContainerを使う(英語)
SuperContainerのファイルの名前を取得する
SuperContainer Companion Pluginを使えば、とても簡単です。以下の例を見てください。
GetValue( SCGetInfo( フォルダパス ) ; 1 )
「フォルダパス」の部分は、SuperContainerサーバー上にあるファイルへのパスです。WebビューアのURLが以下の通りである場合、
"http://servername:8020/SuperContainer/Files/Employee/Document/" & Document::ID
フォルダパスは「Employee/Document" & Document::ID」です。
これは、GetValue()関数を使用してSCGetInfo()のreturn区切りリストの1行目を取得しています。1行目(1)がファイル名です。
SuperContainerでイメージの透明度を使う
SuperContainerで.pngファイルなどのイメージの透明度を使うには、「?style=noapplet」をSuperContainerのURLの最後に追加します。このモードを使うとドラッグ&ドロップはできなくなるので、このようにする必要がある場合はドラッグ&ドロップ用に1つのレイアウトにこのパラメータを付けないWebビューアを1つ配置し、透明度が必要なレイアウト上に別のWebビューアを配置します。SuperContainerはこのモードでは幅と高さを自動で検知しないことを考慮すると、「width=x&height=y」も追加する必要があるでしょう。
例:http://yourServer/SuperContainer/Files/path/to/files?style=applet&width=250&height=275
FileMakerのフィールドにアップロードされたファイルの名前を保管する
FileMakerのフィールドにアップロードされたファイルの名前を保管したい場合は、まずそれがほんとうに必要かどうかを考えましょう。SuperContainerの設計としては、ユーザが関連するドキュメントをアップロード、ダウンロード、表示、プリント、削除するためにFileMakerがファイル名を理解する必要はありません。ただしドキュメントを検索するためには、FileMakerがファイル名を理解する必要があります。
フィールドにファイル名を保管する必要があると判断した場合、2つのアプローチがあります。どちらも、オプションのSuperContainer Companion Pluginが必要です。
- オプション1:ファイルをアップロードするためにWebビューアを使いません。代わりにSCChooseFileプラグイン関数を使って、リクエストされたファイルのパスを取得します。その後、選択されたファイルの名前をFileMakerのフィールドに展開し、SCSetContainerを使ってドキュメントをSuperContainerにアップロードします。このオプションは信頼性がとても高いものですが、Web公開エンジンでは動作しません(SCChooseFile関数はWeb上で動作しないからです)。
- オプション2:Webビューアを使ってファイルをアップロードして、アップロード完了後にユーザに「save(保存)」または「continue(続ける)」ボタンをクリックさせるようにします。その後、プラグインのSCGetInfo関数を使ってファイルの名前を取得し、FileMakerのフィールドに保管できます。Web公開エンジンで動作させる必要がある場合に、こちらのオプションを選択します。
TIFFイメージのプレビュー
Mac上でSuperContainerServer.jarファイルを実行して、スタンドアローンモードでSuperContainerを動作させます。
SCScanDirectory()を使う
変数を設定 [ $setBaseURL ; 値:SCSetBaseURL() ] 変数を設定 [ $files ; 値:SCScanDirectory( pathToDir ) ] 変数を設定 [ $counter ; 1 ] Loop 変数を設定 [ $upload ; 値:SCSetContainer( folderPath ; MiddleValues ( $files ; $counter ; 1 ) ) ] if [ $upload = "ERROR" ] カスタムダイアログを表示 [ "EROR" ; SCLastError ] End If 変数を設定 [ $counter ; 値:$counter + 1 ] Exit Loop If [ $counter = ValueCount ( $files ) ] End Loop
なぜSuperContainerは複数のファイルを1つのディレクトリに保管できないのか?
SuperContainerの設計の当初のゴールのひとつは、プラグインをまったく使わずに動作するということでした。このことが、一連の決定につながっています。
- FileMakerは、プラグインなしで、ハードディスク上にあるファイルの名前を知ることはできません。
- したがって、FileMakerの機能だけでファイルの名前をWebビューアに埋め込むことは論理的に不可能です。
- この問題を解決するために、ファイル名を記述する代わりに、ファイルが保管されているフォルダをURLで記述することにしました。これは、ファイルの実際の名前を気にすることなく開発者が選ぶことができます。
- フォルダの参照は個々のファイルを明確に特定する必要があるため、1フォルダが1ファイルと同値ということになります。SuperContainerで2つ以上のファイルを含むフォルダを参照すると、最初に見つかったファイルだけが取得され、同じフォルダの中の別のファイルは無視されます。
SuperContainerを使用しているお客様の中には、保管されるファイルの名前を把握している方もいて、1つのフォルダの中に多くのファイルが保管されていることが普通のようです。このような場合、以下のことを推奨します。
- このような使い方は心配ありません - そのまま、URLの中でファイル名を使用してください。結果として動作に必要な状態よりもファイルが1段深いレベルにネストされますが、問題は何も発生しません。たとえば「MyFavoriteFlower.jpg」という名前のファイルがあるとします。URLを「/SuperContainer/Files/images/MyFavoriteFlower.jpg」と設定すると、サーバー上に「images/MyFavoriteFlower.jpg/MyFavoriteFlower.jpg」というパスで保管されます。若干複雑にはなりますが問題はありません。
- URLでファイル名を使わないようにします - SuperContainerはこれをサーバー上に問題なく保管します。上述の例で、ファイル名の代わりにレコードIDを使いましょう(ここではレコードIDを17と仮定します)。「/SuperContainer/Files/images/17」となります。これは、サーバー上に「images/17/MyFavoriteFlower.jpg」と保管されます。これは1つめのオプションよりもすぐれたアプローチです。なぜなら、18番のレコードにMyFavoriteFlowerという別のファイルがある場合に、「images/18/MyFavoriteFlower.jpg」と保管され、名前のコンフリクトが発生しないからです。
- SuperContainer 2ではディレクトリ構造全体をSuperContainerにアップロードするため、デスクトップに「CoolStuff」という名前のフォルダがあってその中に「MyFavoriteFlower.jpg」、「MyFavoriteTree.jpg」、「MyFavoriteBug.jpg」がある場合、そのフォルダをSuperContainerの1つのフォルダにアップロードできます。URLが「/SuperContainer/Files/19」である場合、サーバー上には「19/CoolStuff.zip」に圧縮された1つのファイルとして保管されます。
Apacheのアップロードの制限
ApacheのTomcatディレクトリにあるserver.xmlファイルを編集します。「Connector」エレメントの中の「maxPostSize」の属性を追加または編集してサイズを増やします。
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="300" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="1024" connectionTimeout="20000" disableUploadTimeout="true" compression="on" maxPostSize="104857600" />
詳細な手順へのリンクは以下の通りです。
http://tomcat.10.n6.nabble.com/Setting-max-file-upload-size-td2010633.html
IISのアップロードの制限
http://ajaxuploader.com/large-file-upload-iis-asp-net.htm
http://support.microsoft.com/kb/942074/iis config file: %windir%¥system32¥inetsrv¥config¥applicationhost.config
<system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="524288000"/> </requestFiltering> </security> </system.webServer>
SuperContainerのコンテンツを別の場所に移動する
SuperContainerをある場所で展開してきましたが、SuperContainerを関連するすべてのアセットとともに移動しなくてはならなくなりました。どのような方法が最適でしょうか?
- Filesディレクトリを移動する
SuperContainerのFilesディレクトリにアクセスしているなら、アセットを移動する最も簡単な方法は、単にSuperContainer/Files/ディレクトリをSuperContainerの新しい場所に移動することです。新しい場所でSuperContainerを展開して構成すると、SuperContainerはあなたが指定したベースURLにFilesディレクトリを作ります。このFilesディレクトリを既存のディレクトリで置き換えると、現在の展開からすべてのアセットとリレーションシップが維持されます。
- Companion Pluginを使う
新しい場所でベースURLを設定してから、SCGetContainerを使って以前の場所からSuperContainerのアセットを取得します。その後、SCSetContainerを使ってアセットを新しい展開場所にアップロードします。おそらくこれをSuperContainerのすべてのアセットに対して繰り返すループのスクリプトに埋め込みたいと考えるでしょう。この手順を解説したビデオをご覧ください。
高度なヒント
カスタムのスタイルを作る
知識のあるユーザは、SuperContainerのアプリケーションのディレクトリにあるcustom.cssファイルを編集してカスタムのスタイルを定義することもできます。スタイルのカスタマイズに関してサポートが必要な場合は、弊社にご相談いただくこともできます。
修正履歴の管理
SuperContainerのURLにリビジョン番号を付けて、バージョンを管理できます。以下に例を示します。
http://yourServer.com:8020/SuperContainer/Files/Asset/4321/revision2?style=nodelete
SuperContainerはURL中のスラッシュをフォルダとして扱うので、このURLは4321フォルダの中のrevision2というサブフォルダを参照することになります。削除のオプションを取り除くことにより、これを使ってすべてのファイルの履歴をとっておくことができます。
- URL中で常に「nodelete」を使うことで、ユーザがリソースを削除してしまうことを防ぎます。
- 最初はSuperContainerのリソースは空で、アップロードのフォームが表示されます。
- ユーザがリソースを送信すると、アップロードのフォームは消えます。nodeleteのスタイルで、削除のボタンは非表示になります。
- ユーザがリソースを置き換えたい場合は、FileMakerのレイアウトにあるボタンをクリックします。この操作で現在のレコードのリビジョン番号を増やすようにスクリプトを設定しておきます。
- リビジョン番号が変わるとSuperContainerのURLが変わるため、アップロードのフォームが再び表示されるようになります。
- ファイルは実際には削除されませんが、削除されたように見えます。こうしてユーザは新しいファイルをアップロードします。
- 「削除された」過去のドキュメントを見るには、バージョン番号を小さくするだけです。
このテクニックを使った例は、SuperContainerのサンプルファイルを参照してください。
表示タイプ
上述のURLの例で、アプリケーションのベースURLの後の「/Files/」の部分に注目してください。これは使用する表示タイプを指定しています。九分九厘、URLで「Files」の表示タイプを使用することになるでしょう。リソースのRAWデータを返したいときは、代わりに「RawData」を使用できます。これは、SuperContainerのリソースを別のURLから参照したり、何らかのツールを使ってSuperContainerのリソースファイルのコンテンツを取得する場合に便利です。Companion Pluginでは、RawDataの表示タイプを使ってSuperContainerからデータをプルします。
プラグインを活用する
ワークフローをきめ細かくコントロールするために、すべてのWebレイアウトでreadonly(読み出し専用)のスタイルを使う設定にして、編集の目的にはすべてプラグインを使うように設定できます。これにより、項目がアップロードされるたびに実行されるスクリプトにカスタムのアクションを組み込めます。このようにして、履歴の管理をずっと簡単に実装できます(上記を参照してください)。360works Textractorのプラグインなどを活用してFileMakerにアップロードされたドキュメントのテキストを保管することもできます。
ソリューションに統合できるスクリプトの例をいくつか掲載します。これらの例はエラーチェックのベストプラクティスであり、プラグイン関数を活用する便利な方法です。
プラグインのインストールをチェックする
ユーザがSuperContainer Pluginをまだインストールしていない場合、スクリプトを終了するか、またはプラグインの代わりにWebビューアを使ってファイルをアップロード/ダウンロードする別のレイアウトに移動するかを選ぶことができます。プラグインがインストールされているかどうかをチェックするには、以下の方法を使います。
# プラグインがインストールされていなければ終了する If[SCVersion = "?"] カスタムダイアログを表示 ["SuperContainer Plugin is not installed."] 全スクリプト終了 End If
ベースURLを設定する
プラグインをコールする前に、常にSuperContainerのベースURLを設定する必要があります。スタートアップスクリプトでコールするのが良いタイミングです。
変数を設定 [$result; 値:SCSetBaseURL("http://yourServer.com:8020/SuperContainer/Files")] If [$result = "ERROR"] カスタムダイアログを表示 ["Could not connect to SuperContainer Server!"; SCLastError] End If
selfSignedSSLなど追加のパラメータを追加する場合は、ユーザ名とパスワードの値として空のダブルクオーテーションを含める必要があります。追加のパラメータを入れる際には適切な順番にする必要があるためです。
変数を設定 [$result; 値:SCSetBaseURL("http://yourServer.com:8020/SuperContainer/Files"; "" ; "" ; "selfSignedSSL=1")]
アップロードのダイアログの例
以下のスクリプトを使ってプラグインでファイルをSuperContainerにアップロードします。このスクリプトにより、ファイル選択のダイアログが開きます。ファイルが選択されたらSuperContainerにアップロードし、Webビューアが更新されて新しいファイルが表示されます。このスクリプトは、SCChooseFile、SCSetContainer、SCLastErrorプラグイン関数の使い方を示すものです。「Set Web Viewer(Webビューアの設定)」スクリプトステップが正しく動作するためには、Webビューアに名前を付ける(この例では「webviewer」)必要があることに注意してください。
# アップロードする 変数を設定 [$result; 値:SCSetContainer(Get ( LayoutTableName ) & "/" & ID ; SCChooseFile)] # アップロード中のエラーをチェックする If [$result = "ERROR"] カスタムダイアログを表示 ["Could not upload file"; SCLastError] End If # Webビューアを更新して新しいファイルを表示する Web ビューアの設定 [オブジェクト名: "webviewer"; 処理: リセット]
ダウンロードのダイアログの例
SuperContainerのファイルをユーザのブラウザではなくローカルで開きたい場合、プラグインを使ってマウントされているボリューム上でファイルを探すか、ユーザのローカルのハードディスクにファイルをダウンロードすることができます。Webビューアを、以下のスクリプトを実行してファイルをダウンロードするボタンにすることもできます。以下のスクリプトは、 SCGetFileURLとSCDownloadプラグイン関数の使い方を示すものです。
変数を設定 [$folderPath; 値:Get (レイアウトテーブル名) & "/" & ID] If [IsEmpty ( SCGetInfo($folderPath) ) ] # 開くファイルがない場合 現在のスクリプト終了 End If カスタムダイアログを表示 ["Do you want to open the file in your web browser, or download it to your local drive?"] If [Get(最終メッセージ選択) = 1] # Webブラウザで開く。「Files」ではなく「RawData」を参照することに注意 変数を設定 [$url; 値:"http://myServer.com:8020/SuperContainer/RawData/" & $folderPath] Else If [Get(最終メッセージ選択) = 2] # ファイルのコピーをローカルにダウンロードし、それを開く。「file://」のURLになる。 変数を設定 [$url; 値:SCDownload( $folderPath )] If [$url = "Error"] カスタムダイアログを表示 ["An Error occurred while download the file" ; SCLastError] 現在のスクリプト終了 End If Else # ユーザが「キャンセル」をクリックした場合 現在のスクリプト終了 End If URL を開く [$url]
ポータル
Webの表示はポータル行に埋め込むことができません。SuperContainerのファイルをポータル内に表示したい場合は、タイプが「オブジェクト」のポータルのテーブルに非保存の計算式を作ります。計算式は次の通りです。
LeftValues ( SCGetInfo("path/to/my/record" ) ; 1 )
この計算式は、プラグインを使ってリソースの名前をポータルに表示します。オブジェクトに使われているのがイメージだけであることがわかっていてイメージのサムネールを表示したい場合には、代わりに以下の計算式を使うことができます。
SCGetContainer("path/to/my/record" ; 64 ; 64)
パス、幅、高さは必要に応じて調整します。この方法の問題点は、オブジェクトにイメージ以外のデータが含まれている場合に、ポータルが表示されるたびにファイル全体がダウンロードされることです!
FileMakerのアカウントのアクセス権に関連づける
初期設定では、FileMakerのユーザはすべて、SuperContainerに対して同じアクセス権を持っています。ユーザがFIleMakerでは読み出しのみのアクセス権を持っているとしても、URLで追加のパラメータを指定しない限りはSuperContainerにはそのことを知る方法がありません。
読み出しのみのアクセス権を持っているFileMakerのユーザがアップロードや削除をできないようにするには、以下のような計算式を使ってSuperContainerのURLを生成することができます。
"http://yourServer.com:8020/SuperContainer/Files/" & Get ( レイアウトテーブル名 ) & "/" & ID & "?style=" & If (Get(現在のアクセス権セット名) = "[Read-Only Access]" ; "readonly" ; "")
上記の例では、FileMakerのユーザが読み出しのみのアクセス権セットを割り当てられている場合に、readonlyのスタイル名が追加されます。このテクニックを使って、全ユーザがアップロードできるが削除できるのは管理者だけという設定にすることもできます(nodeleteのスタイルを使って)。