インタラクションAPI

提供: Eospedia
2014年12月17日 (水) 00:28時点におけるKinoshita (トーク | 投稿記録)による版

移動: 案内検索

インタラクションAPI とはPIONE(主にPIONE Webclient)においてインタラクティブ操作によるコマンドを実現するためにサーバとの通信を行うための操作です。インタラクティブ操作含むコマンドを作成する場合はこれらの操作を.htmlや.cgiファイルなどに記述する必要があります。

操作一覧

終了通知操作

インタラクティブ操作画面を終了します。メインに処理を返すときに必ず通知する必要があります。

パラメータ名 区分 説明
pione-action 必須 finish 終了通知


ファイル取得操作

通知したファイル名(formの場合はactionに当たる)にて指定したCGIを実行します。実行できなかった場合はエラーとなります。また、この操作で取得するファイルは予めパッケージに含まれているファイルに限ります。それ以外のファイルは対象外ですので、ご注意ください。

パラメータ名 区分 説明
pione-action 必須 get ファイル取得
その他全てのパラメータ 任意 任意の値 全てのパラメータが引き渡される


ファイル作成操作

通知したファイル名でファイルを作成します。pione-contentに書き込むデータ内容を指定します。

パラメータ名 区分 説明
pione-action 必須 create ファイル作成
pione-content 必須 ファイル名または文字列 ファイル名の場合はファイル内のデータを、文字列の場合は文字列を書き込む


ファイル削除操作

通知したファイルを削除します。

パラメータ名 区分 説明
pione-action 必須 delete ファイル削除


ファイル一覧操作

通知したディレクトリ内のファイル情報一覧をJSONデータで得ます。

パラメータ名 区分 説明
pione-action 必須 list ファイルリスト


HTMLl文書による操作の記述方法

.htmlまたは.cgiにてこれらの操作を実行するためには下記のような記述を用います。

a hrefの記述例

a hrefを用いる場合は(場所)?pione-action=(操作名)へリンクするようにします。

<a href="?pione-action=finish">終了</a>

(場所)はワーキングディレクトリからの相対パスとなりますので、finishの場合は省略可能です。

<a href="AAA.txt?pione-action=delete">削除</a>

他の操作では(場所)にファイル名等を指定します。上記はAAA.txtを削除する例です。

<a href="AAA.txt?pione-action=create&pione-content=abc">作成</a>


form actionの記述例

form actionタグ内にてpione-actionの値を定義して、ボタン操作によってsubmitすると操作命令を送信することができます。この場合はfileなどの値も合わせて送信できるので、ファイル操作のときにはこちらを用います。

		<form action="./AAA.txt" method="post" enctype="multipart/form-data">
			<input type="hidden" name="pione-action" value="create"/>
			<button type="submit">作成(テキスト)</button>
			<input type="text" name="pione-content" value=""/>
		</form>


JavaScriptの記述例

特にファイル一覧操作はJavaScriptを利用することに戻り値を使ったページを作成することができます。ファイル一覧操作(list)での戻り値はJSONデータですので、データを使用するためにgetJSONを使用しています。

	<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
	<div id="textDiv"></div>
	<script>
		var div = document.getElementById("textDiv");
		div.textContent = "";
		$.getJSON("./", {"pione-action": "list"}, function(data){
			$.each(data, function() {
				div.textContent += this.name +"\n";
			});
		});
	</script>