The Jetspeed XML AJAX API is an XML-based API provided to AJAX clients for making asynchronous requests to Jetspeed-2 services.
Jetspeed の XML AJAX API は、AJAX クライアントが、非同期のリクエストを Jetspeed 2 サービスに送ることができるようにするための XML ベースの API です。
Typical use cases:
典型的な使用例としては、
All AJAX XML API requests run through a standard Jetspeed Pipeline request. This means that you can configure your AJAX request with the usual array of Jetspeed components. The default AJAX pipeline secures access to all requests. Each AJAX action may have its own security constraints. All requests made to a page will use the declarative security constraints configured for that page. AJAX request actions are enforced under edit or view mode, depending on the nature of the action.
AJAX XML API リクエストの全ては、標準の Jetspeed パイプラインリクエストを通して実行されます。これは、通常の Jetspeed コンポーネントの配列を用いて、AJAX リクエストを構成可能であることを意味します。デフォルトの AJAX パイプラインは、全てのリクエストへのアクセスを保証します。AJAX アクションのそれぞれは、自身のセキュリティ制約を持ちます。ページを生成する全てのリクエストは、本来のアクションに依存する、編集もしくは閲覧モードの元で実行されます。
The AJAX XML API is simply a HTTP request-based API, communicating over a simple REST (Representational State Transfer) protocol. The API is accessed over HTTP via the "ajaxapi" servlet path on the portal URL:
http://hostname/contextname/ajaxapi
AJAX XML API は、単純な HTTP リクエストベースの API で、単純な REST (Representational State Transfer) プロトコル上での通信を行います。API へは、以下のようなポータル URL パスの "ajaxapi" サーブレット経由で HTTP を使ってアクセスします。
http://hostname/contextname/ajaxapi
Request Parameters specify the requested API action, and additional API parameters. The page that a request is referencing is implied in the HTTP URL. Thus if we are making a request to modify a page, the page is specified in the HTTP URL:
http://localhost:8080/jetspeed/ajaxapi/Public/db-browser.psml
http://localhost:8080/jetspeed/ajaxapi
リクエストパラメータは、リクエストした API の動作と、追加の API パラメータを指定します。リクエストが参照しているページは、HTTP URL 内に含まれます。なので、もしページを変更するリクエストを作成したい場合、ページは以下のような HTTP URL 内で指定します。
http://localhost:8080/jetspeed/ajaxapi/Public/db-browser.psml
http://localhost:8080/jetspeed/ajaxapi
Request Parameters are specific to each API. One request parameter, the "action" parameter, is almost always required, (except in the default case). The default action is "action=getpage" which returns an XML representation of the profile-located page in PSML. (PSML is an XML format). See the table below for specific examples of request parameters.
リクエストパラメータは、API それぞれで固有です。大体の場合、"action" パラメータというリクエストパラメータだけは、必要になります (デフォルトの場合を除く)。デフォルトのアクションは "action=getpage" です。これは、PSML 内のプロファイルが示すページの XML 表現を返します (PSML は XML フォーマットです)。リクエストパラメータのそれぞれの例は以下の表を参照してください。
Here are the APIs currently available:
現時点で利用可能な API を示します。
API: | getpage | |||
Component: | AjaxGetPage | |||
Description: | Get Page retrieves a page from the Page Manager store in PSML format. | |||
Parameters: |
page | implied in the URL |
action | getportlets (optional, this is the default action) |
http://localhost:8080/jetspeed/ajaxapi/Public/content.psml
<js> <status>success</status> <action>getpage</action> <page hidden="false"> <defaults layout-decorator="tigris" portlet-decorator="tigris"/> <name>public.psml</name> <path>/Public/public.psml</path> <title>Public Share</title> <short-title>Public Share</short-title> <metadata name="title" xml:lang="es">Carpeta compartida</metadata> <fragment id="ps-1000" type="layout" name="jetspeed-layouts::VelocityTwoColumns" decorator=""> <fragment id="ps-1001" type="portlet" name="rss::RSS" decorator=""> <property name="row" value="0"/> <property name="column" value="0"/> </fragment> <fragment id="ps-1002" type="portlet" name="demo::BookmarkPortlet" decorator=""> <property name="row" value="1"/> <property name="column" value="1"/> </fragment> <fragment id="ps-1003" type="portlet" name="jsf-demo::CalendarPortlet" decorator=""> <property name="row" value="0"/> <property name="column" value="1"/> </fragment> <fragment id="P-1080bff9b03-10000" type="portlet" name="jsf-demo::CalendarPortlet" decorator=""> <property name="row" value="1"/> <property name="column" value="0"/> </fragment> </fragment> </page> </js>
API: | getpage | |||
コンポーネント: | AjaxGetPage | |||
説明: | getpage は、ページマネージャから、PSML に保存されたページを取得します。 | |||
パラメータ: |
page | URL に含まれます |
action | getportlets (省略可、これがデフォルトのアクションです) |
http://localhost:8080/jetspeed/ajaxapi/Public/content.psml
<js> <status>success</status> <action>getpage</action> <page hidden="false"> <defaults layout-decorator="tigris" portlet-decorator="tigris"/> <name>public.psml</name> <path>/Public/public.psml</path> <title>Public Share</title> <short-title>Public Share</short-title> <metadata name="title" xml:lang="es">Carpeta compartida</metadata> <fragment id="ps-1000" type="layout" name="jetspeed-layouts::VelocityTwoColumns" decorator=""> <fragment id="ps-1001" type="portlet" name="rss::RSS" decorator=""> <property name="row" value="0"/> <property name="column" value="0"/> </fragment> <fragment id="ps-1002" type="portlet" name="demo::BookmarkPortlet" decorator=""> <property name="row" value="1"/> <property name="column" value="1"/> </fragment> <fragment id="ps-1003" type="portlet" name="jsf-demo::CalendarPortlet" decorator=""> <property name="row" value="0"/> <property name="column" value="1"/> </fragment> <fragment id="P-1080bff9b03-10000" type="portlet" name="jsf-demo::CalendarPortlet" decorator=""> <property name="row" value="1"/> <property name="column" value="0"/> </fragment> </fragment> </page> </js>
API: | moveabs | |||||||||
Component: | AjaxMovePortletAbsolute | |||||||||
Description: | Move a portlet on a page to an absolute position specified in the row and col request parameters. | |||||||||
Parameters: |
page | implied in the URL |
action | moveabs |
id | the portlet PSML fragment id of the portlet to be moved |
row | the absolute new row location to place the portlet fragment (zero based) |
col | the absolute new column location to place the portlet fragment (zero based) |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=moveabs&id=ps-1003&row=0&col=1
<js> <status>success</status> <action>moveabs</action> <id>ps-1003</id> <old_position> <col>1</col> <row>1</row> </old_position> <new_position> <col>1</col> <row>0</row> </new_position> </js>
API: | moveabs | |||||||||
コンポーネント: | AjaxMovePortletAbsolute | |||||||||
説明: | ページ上のポートレットの絶対位置をリクエストパラメータで指定した row と col に従って移動する。 | |||||||||
パラメータ: |
page | URL に含まれます |
action | moveabs |
id | 移動させたいポートレットのポートレット PSML フラグメント ID |
row | ポートレットフラグメントを置きたい位置の絶対的な行位置 (ゼロベース) |
col | ポートレットフラグメントを置きたい位置の絶対的な列位置 (ゼロベース) |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=moveabs&id=ps-1003&row=0&col=1
<js> <status>success</status> <action>moveabs</action> <id>ps-1003</id> <old_position> <col>1</col> <row>1</row> </old_position> <new_position> <col>1</col> <row>0</row> </new_position> </js>
APIs: | moveleft, moveright, moveup, movedown | |||||
Components: | AjaxMovePortletLeft, AjaxMovePortletRight, AjaxMovePortletUp, AjaxMoveDown | |||||
Description: | Move a portlet on a page relatively one position, based on the action. | |||||
Parameters: |
page | implied in the URL |
action | moveleft, moveright, moveup, movedown |
id | the portlet PSML fragment id of the portlet to be moved |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=movedown&id=ps-1003
<js> <status>success</status> <action>movedown</action> <id>ps-1003</id> <old_position> <col>1</col> <row>0</row> </old_position> <new_position> <col>1</col> <row>1</row> </new_position> </js>
API: | moveleft, moveright, moveup, movedown | |||||
コンポーネント: | AjaxMovePortletLeft, AjaxMovePortletRight, AjaxMovePortletUp, AjaxMoveDown | |||||
説明: | アクションを指定して、ページ上のポートレットを相対的なある位置から移動する。 | |||||
パラメータ: |
page | URL に含まれます |
action | moveleft, moveright, moveup, movedown |
id | 移動させたいポートレットのポートレット PSML フラグメント ID |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=movedown&id=ps-1003
<js> <status>success</status> <action>movedown</action> <id>ps-1003</id> <old_position> <col>1</col> <row>0</row> </old_position> <new_position> <col>1</col> <row>1</row> </new_position> </js>
API: | move | |||||||||||||||
Component: | AjaxMovePortlet | |||||||||||||||
Description: | Move a portlet on a page to a cartesian position (x,y,z,width,height) from request parameters. | |||||||||||||||
Parameters: |
page | implied in the URL |
action | move |
id | the portlet PSML fragment id of the portlet to be moved |
x | the portlet cartesian X position |
y | the portlet cartesian Y position |
z | the portlte cartesian Z position |
width | the width of the portlet |
height | the height cartesian Y position |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=move&id=ps-1003&x=100&y=250&width=200&height=300
<js> <status>success</status> <action>move</action> <id>ps-1003</id> <old_position> <x>50</x> <y>155</row> </old_position> <new_position> <x>100</x> <y>250</y> </new_position> </js>
API: | move | |||||||||||||||
コンポーネント: | AjaxMovePortlet | |||||||||||||||
説明: | ページ上のポートレットの位置をリクエストパラメータで指定した直交座標系の位置 (x,y,z,幅、高さ) へ移動する。 | |||||||||||||||
パラメータ: |
page | URL に含まれます |
action | move |
id | 移動させたいポートレット PSML フラグメント ID |
x | ポートレットの直交座標での X 軸の位置 |
y | ポートレットの直交座標での Y 軸の位置 |
z | ポートレットの直交座標での Z 軸の位置 |
width | ポートレットの幅 |
height | ポートレットの高さ |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=move&id=ps-1003&x=100&y=250&width=200&height=300
<js> <status>success</status> <action>move</action> <id>ps-1003</id> <old_position> <x>50</x> <y>155</row> </old_position> <new_position> <x>100</x> <y>250</y> </new_position> </js>
API: | add | |||||||||
Component: | AjaxAddPortlet | |||||||||
Description: | Adds a new portlet to the current page. The portlet can be added at a specified row and column. If either the row or column or not specified, defaults to zero respectively. | |||||||||
Parameters: |
page | implied in the URL |
action | add |
id | The portlet full name to be placed on the page, using Jetspeed Portlet Naming (PortletApplicationName::PortletName) |
row | optional: the absolute new row location to place the new portlet fragment (zero based) |
col | optional: the absolute new column location to place the new portlet fragment (zero based) |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=add&id=jsf-demo::CalendarPortlet
<js> <status>success</status> <action>add</action> <id>jsf-demo::CalendarPortlet</id> <new_position> <col>0</col> <row>0</row> </new_position> </js>
API: | add | |||||||||
コンポーネント: | AjaxAddPortlet | |||||||||
説明: | 現在のページに新しいポートレットを追加します。ポートレットは指定する行と列の場所に追加することが可能です。もし、行も列も指定されない場合は、デフォルトでそれぞれ 0 に設定されます。 | |||||||||
パラメータ: |
page | URL に含まれます |
action | add |
id | ページに配置したいポートレットのフルネーム。Jetspeed のポートレットの命名規則を使って指定します (ポートレットアプリケーション名::ポートレット名) |
row | 省略可: 新しいポートレットフラグメントを置きたい場所の行位置の絶対指定 (ゼロベース) |
col | 省略可: 新しいポートレットフラグメントを置きたい場所の列位置の絶対指定 (ゼロベース) |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=add&id=jsf-demo::CalendarPortlet
<js> <status>success</status> <action>add</action> <id>jsf-demo::CalendarPortlet</id> <new_position> <col>0</col> <row>0</row> </new_position> </js>
API: | remove | |||||
Component: | AjaxRemovePortlet | |||||
Description: | Removes a new portlet from the current page. | |||||
Parameters: |
page | implied in the URL |
action | remove |
id | the portlet PSML fragment id of the portlet to be removed |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=remove&id=ps-1003
<js> <status>success</status> <action>remove</action> <id>jsf-demo::CalendarPortlet</id> <new_position> <col>0</col> <row>0</row> </new_position> </js>
API: | remove | |||||
コンポーネント: | AjaxRemovePortlet | |||||
説明: | 現在のページから新たにポートレットを削除する。 | |||||
パラメータ: |
page | URL に含まれる |
action | remove |
id | 削除したいポートレットのポートレット PSML ID |
http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=remove&id=ps-1003
<js> <status>success</status> <action>remove</action> <id>jsf-demo::CalendarPortlet</id> <new_position> <col>0</col> <row>0</row> </new_position> </js>
API: | getportlets | |||||
Component: | AjaxGetPortlets | |||||
Description: | Get Portlets retrieves the (sorted) portlet list available to the current subject, filtered the portlet list, and returning portlets which the current subject may view. The Jetspeed (JAAS) security policy enforces this filtering. Portlets are returned in XML format, with name, displayName, and description for each portlet. | |||||
Parameters: |
page | implied in the URL |
action | getportlets |
filter | not yet implemented. A query filter to be defined. |
http://localhost:8080/jetspeed/ajaxapi?action=getportlets
<js> <status>success</status> <action>getportlets</action> - <portlets> <portlet name="demo::AttributeScopePortlet" displayName="Attribute Scope Demo" description="$portlet.Description"> </portlet> <portlet name="demo::BookmarkPortlet" displayName="Bookmark Portlet" description="Bookmark Portlet"> </portlet> <portlet name="demo::BookmarkPortletForXHTMLBasic" displayName="Bookmark Portlet for XHTML Basic" description="Bookmark Portlet for XHTML Basic"> </portlet> <portlet name="demo::CSSDemoPortlet" displayName="CSS Demo Portlet" description="$portlet.Description"> </portlet> .... <portlet name="rss::RSS" displayName="RSS Portlet" description="RSS Portlet"> </portlet> <portlet name="rss::RomeRSS" displayName="Rome RSS Portlet" description="Rome RSS Portlet"> </portlet> </portlets> </js>
API: | getportlets | |||||
コンポーネント: | AjaxGetPortlets | |||||
説明: | ポートレットの取得は、現在のサブジェクトで利用可能な (ソートされた) ポートレットのリストを返します。ポートレットリストはフィルタリングされ、現在のサブジェクトで表示可能なポートレットが返されます。Jetspeed セキュリティポリシー (JAAS) は、このフィルタリングを実行します。ポートレット (のリスト) は、それぞれのポートレットの名前、表示名、説明の記述された XML フォーマットで返されます。 | |||||
パラメータ: |
page | URL に含まれる |
action | getportlets |
filter | まだ実装されていません。照会のフィルタを定義します。 |
http://localhost:8080/jetspeed/ajaxapi?action=getportlets
<js> <status>success</status> <action>getportlets</action> - <portlets> <portlet name="demo::AttributeScopePortlet" displayName="Attribute Scope Demo" description="$portlet.Description"> </portlet> <portlet name="demo::BookmarkPortlet" displayName="Bookmark Portlet" description="Bookmark Portlet"> </portlet> <portlet name="demo::BookmarkPortletForXHTMLBasic" displayName="Bookmark Portlet for XHTML Basic" description="Bookmark Portlet for XHTML Basic"> </portlet> <portlet name="demo::CSSDemoPortlet" displayName="CSS Demo Portlet" description="$portlet.Description"> </portlet> .... <portlet name="rss::RSS" displayName="RSS Portlet" description="RSS Portlet"> </portlet> <portlet name="rss::RomeRSS" displayName="Rome RSS Portlet" description="Rome RSS Portlet"> </portlet> </portlets> </js>
API: | permissions | |||||||||||||
Component: | AjaxSecurityPermissions | |||||||||||||
Description: | Security Permissions Maintenance to add, update, and remove permissions from the Jetspeed security policy | |||||||||||||
Parameters: |
action | permissions |
method | the method to execute: must be of value: add | update | remove |
type | the type of permission being manipulated: portlet | folder | page |
resource | the name of the portal resource being manipulated |
roles | comma-separated list of roles, only valid for methods: add, update |
actions | comma-separated list of actions, only valid for methods: add, update |
oldactions | comma-separated list of previous actions, only valid for methods: update |
http://localhost:8080/jetspeed/ajaxapi?action=permissions&method=add&type=portlet&resource=demo::*&roles=role1,role2,role3&actions=view,edit
<js> <status>success</status> <action>permissions</action> <resource>demo::*</resource> <type>portlet</type> <actions>view,edit</actions> <actions>role1,role2,role3</actions> </js>
API: | permissions | |||||||||||||
コンポーネント: | AjaxSecurityPermissions | |||||||||||||
説明: | Jetspeed のセキュリティポリシーからパーミッションを追加、更新、削除するためのセキュリティパーミッションのメンテナンス。 | |||||||||||||
パラメータ: |
action | permissions |
method | 実行するメソッド: 以下のいずれかの値である必要がある: add | update | remove |
type | 操作するパーミッションのタイプ: portlet | folder | page |
resource | 操作するポータルリソースの名前 |
roles | カンマ区切りのロールのリスト。以下のメソッドのみ有効: add, update |
actions | カンマ区切りのアクションのリスト。以下のメソッドのみ有効: add, update |
oldactions | カンマ区切りの前回のアクションのリスト。以下のメソッドのみ有効: update |
http://localhost:8080/jetspeed/ajaxapi?action=permissions&method=add&type=portlet&resource=demo::*&roles=role1,role2,role3&actions=view,edit
<js> <status>success</status> <action>permissions</action> <resource>demo::*</resource> <type>portlet</type> <actions>view,edit</actions> <actions>role1,role2,role3</actions> </js>
API: | getmenus | |||
Component: | AjaxGetMenus | |||
Description: | Retrieves all menus for the current page (implied in URL) | |||
Parameters: |
action | getmenus |
page | (implied in URL) |
http://localhost:8080/jetspeed/ajaxapi/default-page.psml?action=getmenus
<js> <status>success</status> <action>getmenus</action> <menus> <menu type="standard">navigations</menu> <menu type="standard">back</menu> <menu type="standard">pages</menu> <menu type="standard">breadcrumbs</menu> <menu type="custom">site-navigations</menu> <menu type="custom">additional-links</menu> <menu type="custom">page-navigations</menu> </menus> </js>
API: | getmenus | |||
コンポーネント: | AjaxGetMenus | |||
説明: | (URL によって示される) 現在のページの全てのメニューの取得。 | |||
パラメータ: |
action | getmenus |
page | (URLによって示される) |
http://localhost:8080/jetspeed/ajaxapi/default-page.psml?action=getmenus
<js> <status>success</status> <action>getmenus</action> <menus> <menu type="standard">navigations</menu> <menu type="standard">back</menu> <menu type="standard">pages</menu> <menu type="standard">breadcrumbs</menu> <menu type="custom">site-navigations</menu> <menu type="custom">additional-links</menu> <menu type="custom">page-navigations</menu> </menus> </js>
API: | getmenu | |||
Component: | AjaxGetMenu | |||
Description: | Retrieves the menu definition for a given menu | |||
Parameters: |
action | getmenu |
menu | name of the menu to retrieve (menu definition may change per page) |
http://localhost:8080/jetspeed/ajaxapi?action=getmenu&name=breadcrumbs
<js> <status>success</status> <action>getmenu</action> <menu> <name>breadcrumbs</name> <title>You are here:</title> <short-title>You are here:</short-title> <skin>breadcrumbs</skin> <url>/default-page.psml</url> <hidden>false</hidden> <selected>true</selected> <option> <type>folder</type> <title>Root Folder</title> <short-title>Root Folder</short-title> <skin>breadcrumbs</skin> <url>/</url> <hidden>false</hidden> <selected>true</selected> </option> <option> <type>page</type> <title>Welcome to Jetspeed 2</title> <short-title>Welcome to Jetspeed 2</short-title> <skin>blue</skin> <url>/default-page.psml</url> <hidden>false</hidden> <selected>true</selected> </option> </menu> </js>
API: | getmenu | |||
コンポーネント: | AjaxGetMenu | |||
説明: | 指定したメニューに対するメニュー定義を取得します。 | |||
パラメータ: |
action | getmenu |
menu | 取得するメニューの名前。(メニュー定義はページ毎に変化する可能性があります) |
http://localhost:8080/jetspeed/ajaxapi?action=getmenu&name=breadcrumbs
<js> <status>success</status> <action>getmenu</action> <menu> <name>breadcrumbs</name> <title>You are here:</title> <short-title>You are here:</short-title> <skin>breadcrumbs</skin> <url>/default-page.psml</url> <hidden>false</hidden> <selected>true</selected> <option> <type>folder</type> <title>Root Folder</title> <short-title>Root Folder</short-title> <skin>breadcrumbs</skin> <url>/</url> <hidden>false</hidden> <selected>true</selected> </option> <option> <type>page</type> <title>Welcome to Jetspeed 2</title> <short-title>Welcome to Jetspeed 2</short-title> <skin>blue</skin> <url>/default-page.psml</url> <hidden>false</hidden> <selected>true</selected> </option> </menu> </js>
API: | getmenus | |||||||||
Component: | AjaxChangeWindow | |||||||||
Description: | Changes a portlet window's Window State or Portlet Mode | |||||||||
Parameters: |
action | window |
id | window id of the portlet to be modified |
state | A portlet api valid window state or extended window state (normal | maximized | minimized) |
mode | A portlet api valid portlet mode or extended portlet mode (view | edit | help | print) |
page | Implied in URL |
http://localhost:8080/jetspeed/ajaxapi?action=window&state=maximized&mode=edit&id=um-2
<js> <status>success</status> <action>window</action> <id>um-2</id> <state>maximized</state> <mode>edit</mode> </js>
API: | getmenus | |||||||||
コンポーネント: | AjaxChangeWindow | |||||||||
説明: | ウィンドウの状態もしくはポートレットモードを変更します。 | |||||||||
パラメータ: |
action | window |
id | 変更するポートレットのウィンドウの id |
state | ポートレット API で有効なウィンドウの状態もしくは拡張されたウィンドウの状態 (normal | maximized | minimized) |
mode | ポートレット API で有効なポートレットの状態もしくは拡張されたポートレットの状態 (view | edit | help | print) |
page | URL によって示される |
http://localhost:8080/jetspeed/ajaxapi?action=window&state=maximized&mode=edit&id=um-2
<js> <status>success</status> <action>window</action> <id>um-2</id> <state>maximized</state> <mode>edit</mode> </js>
API: | getuseinfo | |
Component: | AjaxGetUserInformation | |
Description: | Returns information about the currently logged in user. Can be used for example in AJAX based portlets to retrieve the userinfo in a more robust way. Will return success only if a user is currenly logged in, otherwise will return false. | |
Parameters: |
action | getuserinfo |
http://localhost:8080/jetspeed/ajaxapi?action=getuserinfo
<js> <status>success</status> <action>userinformation</action> <username>admin</username> <type>org.apache.jetspeed.security.impl.UserPrincipalImpl</type> <userinfo> <user.name.given>Test Dude</user.name.given> <user.name.family>Dudley</user.name.family> </userinfo> </js>
API: | getuseinfo | |
コンポーネント: | AjaxGetUserInformation | |
説明: | 現在ログインしているユーザの情報を返します。例えば、より確実な方法でのユーザ情報の取得のために AJAX ベースのポートレット内で使用可能です。ユーザが現在ログインしている時のみ、成功を返し、そうでなければ失敗を返します。 | |
パラメータ: |
action | getuserinfo |
http://localhost:8080/jetspeed/ajaxapi?action=getuserinfo
<js> <status>success</status> <action>userinformation</action> <username>admin</username> <type>org.apache.jetspeed.security.impl.UserPrincipalImpl</type> <userinfo> <user.name.given>Test Dude</user.name.given> <user.name.family>Dudley</user.name.family> </userinfo> </js>
API: | getuseinfo | |||||||||
Component: | AjaxGetUserList | |||||||||
Description: | Provides basic information (username, ip-address, number of sessions and status) about currently logged in users in xml-format. Optionally it can also provide more detailed userinformation, number of guest sessions and include offline users as well. | |||||||||
Parameters: |
action | getuserinfo |
userinfo | Whether we should include also userinfo (true | false [default]) |
offline | Whether we should include offline users (true | false [default]) |
guest | Whether we should return also the guest sessions (true | false [default]) |
all | If set to true, will return every bits and piece there is (true | false [default]) |
By default the private information (emails, etc..) is protected with RolesSecurityBehavior security, but can be changed in AJAX configuration by altering the protectionScope constructor value to either "all" to protect even the basic information or to "none" when everything will be shown for everyone (not wise on production). The default value "private" will show just the basic information of online/offline users and number of guest sessions, as the "private-offline" will not show even the offline users. Possible protectionScope values are "all", "private-offline", "private" and "none".
http://localhost:8080/jetspeed/ajaxapi?action=getuserlist&userinfo=true&guest=true
<js> <status>success</status> <action>getuserlist</action> <users> <user> <username>admin</username> <sessions>1</sessions> <status>online</status> <ipaddress>127.0.0.1</ipaddress> <userinfo> <user.name.given>Test Dude</user.name.given> <user.name.family>Dudley</user.name.family> </userinfo> </user> <guests>0</guests> </users> </js>
API: | getuseinfo | |||||||||
コンポーネント: | AjaxGetUserList | |||||||||
説明: | 現在ログインしているユーザの基本的な情報 (ユーザ名、IP アドレス、セッション数、ステータス) を XML フォーマットで提供します。オプションで、もっと詳細なユーザ情報であるゲストのセッション数やオフラインのユーザ数を提供することも可能です。 | |||||||||
パラメータ: |
action | getuserinfo |
userinfo | userinfo も含めるべきかどうか。 (true | false [default]) |
offline | オフラインユーザも含めるべきかどうか。 (true | false [default]) |
guest | ゲストユーザのセッション数も返すべきかどうか。 (true | false [default]) |
all | true に設定された場合、存在する色々な情報を全て返します。 (true | false [default]) |
デフォルトでは、プライベート情報 (メールアドレスなど) は RolesSecurityBehavior によるセキュリティによって守られていますが、これは、protectionScope のコンストラクタの値を基本情報すら保護する "all" と設定するか、誰でも全てを見ることができる "none" に変更することにより AJAX の設定 で変更することが可能です。デフォルトの "private" という値は、オンライン/オフラインユーザの基本情報とゲストセッション数だけが見えます。"private-offline" はオフラインユーザの情報が見えなくなります。protectionScope の値は "all", "private-offline", "private", "none" の値を取ることが可能です。
http://localhost:8080/jetspeed/ajaxapi?action=getuserlist&userinfo=true&guest=true
<js> <status>success</status> <action>getuserlist</action> <users> <user> <username>admin</username> <sessions>1</sessions> <status>online</status> <ipaddress>127.0.0.1</ipaddress> <userinfo> <user.name.given>Test Dude</user.name.given> <user.name.family>Dudley</user.name.family> </userinfo> </user> <guests>0</guests> </users> </js>
The AjaxRequestService
is a Spring component that handles AJAX requests.
It is hooked into the AJAX Pipeline for special processing
of AJAX request. Here is the Spring Assembly. Each API is configured in the Ajax Service.
AjaxRequestService
は、AJAX リクエストを扱う Spring のコンポーネントです。これは、AJAX リクエストの特別な処理のために、AJAX パイプライン内でフックされます。以下が Spring アセンブリです。それぞれの API は Ajax サービス内で設定されます。
<bean id="AjaxRequestService" class="org.apache.jetspeed.ajax.AjaxRequestServiceImpl"> <constructor-arg index="0"> <map> <entry key="move"> <ref bean="AjaxMove"/> </entry> <entry key="moveabs"> <ref bean="AjaxMovePortletAbsolute"/> </entry> <entry key="moveleft"> <ref bean="AjaxMovePortletLeft"/> </entry> <entry key="moveright"> <ref bean="AjaxMovePortletRight"/> </entry> <entry key="moveup"> <ref bean="AjaxMovePortletUp"/> </entry> <entry key="movedown"> <ref bean="AjaxMovePortletDown"/> </entry> <entry key="add"> <ref bean="AjaxAddPortlet"/> </entry> <entry key="remove"> <ref bean="AjaxRemovePortlet"/> </entry> <entry key="getportlets"> <ref bean="AjaxGetPortlets"/> </entry> <entry key="getpage"> <ref bean="AjaxGetPage"/> </entry> <entry key="getpages"> <ref bean="AjaxGetPages"/> </entry> <entry key="getfolder"> <ref bean="AjaxGetFolder"/> </entry> <entry key="getlink"> <ref bean="AjaxGetLink"/> </entry> <entry key="getfolderlist"> <ref bean="AjaxGetFolderList"/> </entry> <entry key="getfolders"> <ref bean="AjaxGetFoldersList"/> </entry> <entry key="getthemes"> <ref bean="AjaxGetThemes"/> </entry> <entry key="getactions"> <ref bean="AjaxGetActions"/> </entry> <entry key="window"> <ref bean="AjaxChangeWindow"/> </entry> <entry key="getmenus"> <ref bean="AjaxGetMenus"/> </entry> <entry key="getmenu"> <ref bean="AjaxGetMenu"/> </entry> <entry key="permissions"> <ref bean="AjaxSecurityPermissions"/> </entry> <entry key="constraints"> <ref bean="AjaxSecurityConstraints"/> </entry> <entry key="updatefolder"> <ref bean="AjaxUpdateFolder"/> </entry> <entry key="updatepage"> <ref bean="AjaxUpdatePage"/> </entry> <entry key="updatelink"> <ref bean="AjaxUpdateLink"/> </entry> <entry key="getuserinfo"> <ref bean="AjaxGetUserInformation"/> </entry> <entry key="getuserlist"> <ref bean="AjaxGetUserList"/> </entry> </map> </constructor-arg> <constructor-arg index="1"> <ref bean="AjaxVelocityEngine"/> </constructor-arg> </bean>
<bean id="AjaxRequestService" class="org.apache.jetspeed.ajax.AjaxRequestServiceImpl"> <constructor-arg index="0"> <map> <entry key="move"> <ref bean="AjaxMove"/> </entry> <entry key="moveabs"> <ref bean="AjaxMovePortletAbsolute"/> </entry> <entry key="moveleft"> <ref bean="AjaxMovePortletLeft"/> </entry> <entry key="moveright"> <ref bean="AjaxMovePortletRight"/> </entry> <entry key="moveup"> <ref bean="AjaxMovePortletUp"/> </entry> <entry key="movedown"> <ref bean="AjaxMovePortletDown"/> </entry> <entry key="add"> <ref bean="AjaxAddPortlet"/> </entry> <entry key="remove"> <ref bean="AjaxRemovePortlet"/> </entry> <entry key="getportlets"> <ref bean="AjaxGetPortlets"/> </entry> <entry key="getpage"> <ref bean="AjaxGetPage"/> </entry> <entry key="getpages"> <ref bean="AjaxGetPages"/> </entry> <entry key="getfolder"> <ref bean="AjaxGetFolder"/> </entry> <entry key="getlink"> <ref bean="AjaxGetLink"/> </entry> <entry key="getfolderlist"> <ref bean="AjaxGetFolderList"/> </entry> <entry key="getfolders"> <ref bean="AjaxGetFoldersList"/> </entry> <entry key="getthemes"> <ref bean="AjaxGetThemes"/> </entry> <entry key="getactions"> <ref bean="AjaxGetActions"/> </entry> <entry key="window"> <ref bean="AjaxChangeWindow"/> </entry> <entry key="getmenus"> <ref bean="AjaxGetMenus"/> </entry> <entry key="getmenu"> <ref bean="AjaxGetMenu"/> </entry> <entry key="permissions"> <ref bean="AjaxSecurityPermissions"/> </entry> <entry key="constraints"> <ref bean="AjaxSecurityConstraints"/> </entry> <entry key="updatefolder"> <ref bean="AjaxUpdateFolder"/> </entry> <entry key="updatepage"> <ref bean="AjaxUpdatePage"/> </entry> <entry key="updatelink"> <ref bean="AjaxUpdateLink"/> </entry> <entry key="getuserinfo"> <ref bean="AjaxGetUserInformation"/> </entry> <entry key="getuserlist"> <ref bean="AjaxGetUserList"/> </entry> </map> </constructor-arg> <constructor-arg index="1"> <ref bean="AjaxVelocityEngine"/> </constructor-arg> </bean>