「インタラクションAPI」の版間の差分

提供: Eospedia
移動: 案内検索
(JavaScriptの記述例)
(ファイル一覧操作)
 
(同じ利用者による、間の9版が非表示)
行1: 行1:
'''インタラクションAPI''' とは[[PIONE]](主に[[PIONE Webclient]])においてインタラクティブ操作による[[コマンド]]を実現するためにワーキングディレクトリとの通信を行うための操作です。インタラクティブ操作含む[[コマンド]]を作成する場合はこれらの操作を.htmlや.cgiファイルなどに記述する必要があります。<br>
+
'''インタラクションAPI''' とは[[PIONE]](主に[[PIONE Webclient]])においてインタラクティブ操作による[[コマンド]]を実現するためにサーバとの通信を行うための操作です。インタラクティブ操作含む[[コマンド]]を作成する場合はこれらの操作を.htmlや.cgiファイルなどに記述する必要があります。<br>
  
 
== 操作一覧 ==
 
== 操作一覧 ==
行21: 行21:
  
 
=== ファイル取得操作 ===
 
=== ファイル取得操作 ===
form actionにて指定したCGIを実行します。実行できない形式の場合はファイル内のデータを表示します。<br>
+
通知したファイル名(formの場合はactionに当たる)にて指定したCGIを実行します。実行できなかった場合はエラーとなります。また、この操作で取得するファイルは予めパッケージに含まれているファイルに限ります。それ以外のファイルは対象外ですので、ご注意ください。<br>
 
<table border="1">
 
<table border="1">
 
<tr>
 
<tr>
行45: 行45:
  
 
=== ファイル作成操作 ===
 
=== ファイル作成操作 ===
form actionにて指定したファイル名でファイルを作成します。<br>
+
通知したファイル名でファイルを作成します。pione-contentに書き込むデータ内容を指定します。<br>
 
<table border="1">
 
<table border="1">
 
<tr>
 
<tr>
行69: 行69:
  
 
=== ファイル削除操作 ===
 
=== ファイル削除操作 ===
form actionにて指定したファイル名でファイルを削除します。<br>
+
通知したファイルを削除します。<br>
 
<table border="1">
 
<table border="1">
 
<tr>
 
<tr>
行87: 行87:
  
 
=== ファイル一覧操作 ===
 
=== ファイル一覧操作 ===
指定したディレクトリ内のファイル情報一覧を[[JSONデータ]]で返します。<br>
+
通知したディレクトリ内のファイル情報一覧を[[JSON]]データで得ます。<br>
 
<table border="1">
 
<table border="1">
 
<tr>
 
<tr>
行100: 行100:
 
  <td>list</td>
 
  <td>list</td>
 
  <td>ファイルリスト</td>
 
  <td>ファイルリスト</td>
 +
</tr>
 +
<tr>
 +
<td>pione-show-all</td>
 +
<td>任意</td>
 +
<td>true または false</td>
 +
<td>trueにすると.で始まるファイルもリスト表示される(デフォルト: false)</td>
 +
</tr>
 +
</table>
 +
<br>
 +
 +
返却される[[JSON]]データ
 +
<table border="1">
 +
<tr>
 +
<th>属性名</th>
 +
<th>説明</th>
 +
<th>例</th>
 +
</tr>
 +
<tr>
 +
<td>name</td>
 +
<td>ファイル名(パスは含まれない)</td>
 +
<td>AAA.txt</td>
 +
</tr>
 +
<tr>
 +
<td>type</td>
 +
<td>ファイル: "file"またはディレクトリ: "dir"</td>
 +
<td>file</td>
 +
</tr>
 +
<tr>
 +
<td>mtime</td>
 +
<td>最終更新日時</td>
 +
<td>2014-12-17T10:46:32+09:00</td>
 +
</tr>
 +
<tr>
 +
<td>size</td>
 +
<td>ファイルのバイトサイズ</td>
 +
<td>57</td>
 
</tr>
 
</tr>
 
</table>  
 
</table>  
行109: 行145:
  
 
=== a hrefの記述例 ===
 
=== a hrefの記述例 ===
a hrefを用いる場合は?pione-action=操作名へリンクするようにします。<br>
+
a hrefを用いる場合は(場所)?pione-action=(操作名)へリンクするようにします。<br>
 
<br>
 
<br>
  
行115: 行151:
 
<a href="?pione-action=finish">終了</a>
 
<a href="?pione-action=finish">終了</a>
 
</pre>
 
</pre>
 +
(場所)はワーキングディレクトリからの相対パスとなりますので、finishの場合は省略可能です。<br>
 +
<br>
 +
 +
<pre>
 +
<a href="AAA.txt?pione-action=delete">削除</a>
 +
</pre>
 +
他の操作では(場所)にファイル名等を指定します。上記はファイルAAA.txtを削除する例です。<br>
 +
<br>
 +
 +
<pre>
 +
<a href="AAA.txt?pione-action=create&pione-content=abc">作成</a>
 +
</pre>
 +
他のパラメータを付加する場合は&で繋いで記述します。上記はabcの内容でファイルAAA.txtを作成する例です。<br>
 
<br>
 
<br>
  
行131: 行180:
  
 
=== [[JavaScript]]の記述例 ===
 
=== [[JavaScript]]の記述例 ===
特にファイル一覧操作は[[JavaScript]]を利用することに戻り値を使ったページを作成することができます。ファイル一覧操作での戻り値は[[JSON]]データですので、データを使用するためにgetJSONを使用しています。<br>
+
レスポンスを受け取って、処理を行いたいときにはjQuery.getを使用する方法があります。<br>
 +
<pre>
 +
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
 +
<script type="text/javascript">
 +
function AAACreate(){
 +
jQuery.get("AAA.txt", {"pione-action": "create", "pione-content": "DDD"}, function(data) {
 +
alert(data);
 +
});
 +
}
 +
</script>
 +
</pre>
 +
上記のようにすると、AAACreateを呼び出したときに"DDD"の内容でファイル"AAA.txt"を作成することができ、作成結果をアラートで表示します。<br>
 +
<br>
 +
 
 +
この関数は例えば下記のように[[HTML]]文書内に記述すれば、ボタンを押したときに実行するようにできます。<br>
 +
<pre>
 +
<input type="button" value="作成" onclick="AAACreate()">
 +
</pre>
 
<br>
 
<br>
  
 +
また、ファイル一覧操作(list)の場合は戻り値が[[JSON]]データですので、これを利用するためにはgetJSONを使用します。<br>
 
<pre>
 
<pre>
 
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
 
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
 +
<div id="textDiv"></div>
 
<script>
 
<script>
 +
var div = document.getElementById("textDiv");
 +
div.textContent = "";
 
$.getJSON("./", {"pione-action": "list"}, function(data){
 
$.getJSON("./", {"pione-action": "list"}, function(data){
 
$.each(data, function() {
 
$.each(data, function() {
document.write(this.name+"<br>");
+
div.textContent += this.name +"\n";
 
});
 
});
 
});
 
});
 
</script>
 
</script>
 
</pre>
 
</pre>
 +
上記のようにすると、ワーキングディレクトリ内のファイル名一覧を表示します。<br>
 
<br>
 
<br>

2014年12月17日 (水) 01:55時点における最新版

インタラクション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 ファイルリスト
pione-show-all 任意 true または false trueにすると.で始まるファイルもリスト表示される(デフォルト: false)


返却されるJSONデータ

属性名 説明
name ファイル名(パスは含まれない) AAA.txt
type ファイル: "file"またはディレクトリ: "dir" file
mtime 最終更新日時 2014-12-17T10:46:32+09:00
size ファイルのバイトサイズ 57


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>

他のパラメータを付加する場合は&で繋いで記述します。上記はabcの内容でファイルAAA.txtを作成する例です。

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の記述例

レスポンスを受け取って、処理を行いたいときにはjQuery.getを使用する方法があります。

		<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
		<script type="text/javascript">
		function AAACreate(){
			jQuery.get("AAA.txt", {"pione-action": "create", "pione-content": "DDD"}, function(data) {
				alert(data);
			});
		}
		</script>

上記のようにすると、AAACreateを呼び出したときに"DDD"の内容でファイル"AAA.txt"を作成することができ、作成結果をアラートで表示します。

この関数は例えば下記のようにHTML文書内に記述すれば、ボタンを押したときに実行するようにできます。

		<input type="button" value="作成" onclick="AAACreate()">


また、ファイル一覧操作(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>

上記のようにすると、ワーキングディレクトリ内のファイル名一覧を表示します。