Editing XMBML Functions

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
= Operators =
= Operators =
{{XMBML Operators}}
{| class="wikitable sortable"
*There are 8 double operators (Agl, AgL, AGl, AGL, Ogl, OgL, OGl, OGL), with this operators are set 2 values of the range, in the example above '''''AGL+StorageMedia:StorageMedia.type 1 5''''' are fullfilled 2 conditions: The type is "greater or equal than" 1, and "less or equal than" 5. So it represents a range that includes the types 1, 2, 3, 4, 5
|-
! Operator !! Field !! Example
|-
| Ae || And equal || Ae+Game:Game.category GD
|-
| Oe || Or equal || Oe+Game:Game.category GD
|-
| An || And not equal || An+Game:Game.category GD
|-
| On || Or not equal || On+Game:Game.category GD
|-
| Aa || And exists || Aa+Game:Common.title
|-
| Oa || Or exists || Oa+Game:Common.title
|-
| Ai || And ??? <!--/ indexed (in XMB database)? --> || Ai+xCB:MusicList
|-
| Oi || Or ??? <!--/ indexed (in XMB database)? --> || Oi+xCB:MusicList
|-
| Ap || And path ? || Ap+Ps3SaveData:Common.dirPath %xUserHomeDir/savedata
|-
| Op || Or path ? || Op+Ps3SaveData:Common.dirPath %xUserHomeDir/savedata
|-
| Al || And less than || Al+Game:Common.stat.rating 299
|-
| Ol || Or less than || Ol+Game:Common.stat.rating 299
|-
| AL || And less or equal than || AL+Game:Common.stat.rating 299
|-
| OL || Or less or equal than || OL+Game:Common.stat.rating 299
|-
| Ag || And greater than || Ag+Game:Common.stat.rating 299
|-
| Og || Or greater than || Og+Game:Common.stat.rating 299
|-
| AG || And greater or equal than || AG+Game:Common.stat.rating 299
|-
| OG || Or greater or equal than || OG+Game:Common.stat.rating 299
|-
| Agl || And greater than and less than || Agl+Person:Person.stat.presence 2 6
|-
| Ogl || Or greater than and less than || Ogl+Person:Person.stat.presence 2 6
|-
| AGl || And greater or equal than and less than || AGl+Person:Person.stat.presence 2 6
|-
| OGl || Or greater or equal than and less than || OGl+Person:Person.stat.presence 2 6
|-
| AgL || And greater than and less or equal than || AgL+Person:Person.stat.presence 2 6
|-
| OgL || Or greater than and less or equal than || OgL+Person:Person.stat.presence 2 6
|-
| AGL || And greater or equal than and less or equal than || AGL+Person:Person.stat.presence 2 6
|-
| OGL || Or greater or equal than and less or equal than || OGL+Person:Person.stat.presence 2 6
|-
|}


= app Functions =
*A (And)
 
*O (Or)
== app://localhost/query? ==
*e (equal)
App provider
*n (not equal)
 
*a (exist)
<pre><Query class="type:x-xmb/folder-pixmap" key="app_provider_0" attr="app_provider_0" src="app://localhost/query?" /></pre>
*i (???)
*p (path?)
*g (greater than)
*G (greater or equal than)
*l (less than)
*L (less or equal than)


= host Functions =
= host Functions =
Line 22: Line 82:
{| class="wikitable sortable"
{| class="wikitable sortable"
|+FileSystem Paths Examples
|+FileSystem Paths Examples
! Path !! Example
! Disk !! Example
|-
|-
| All filesystem || host://localhost/
| All filesystem || host://localhost/
Line 36: Line 96:
| USB Port 3 Disk || host://localhost/dev_usb003
| USB Port 3 Disk || host://localhost/dev_usb003
|-
|-
| APP_HOME || host://localhost/app_home
| USB Port 4 Disk || host://localhost/dev_usb004
|-
| USB Port 5 Disk || host://localhost/dev_usb005
|-
| USB Port 6 Disk || host://localhost/dev_usb006
|-
| USB Port 7 Disk || host://localhost/dev_usb007
|-
|-
|}
|}
*Only 4 usb storage devices can be mounted by the system at the same time, the usb device number is assigned dynamically (e.g: dev_usb089), there is no need to list all them


== host://localhost/q? ==
== host://localhost/q? ==
Line 54: Line 118:
| path || FileSystem Path || (null)<br/>path=/<br/>path=/dev_hdd0/game<br/>path=/dev_usb000<br/>path=/dev_bdvd/PS3_CONTENT/THEMEDIR/D000<br/>any other filesystem path
| path || FileSystem Path || (null)<br/>path=/<br/>path=/dev_hdd0/game<br/>path=/dev_usb000<br/>path=/dev_bdvd/PS3_CONTENT/THEMEDIR/D000<br/>any other filesystem path
|-
|-
| suffix || Filter by extension? || (null)<br/>suffix=.*<br/>suffix=.pkg<br/>suffix=.P3T<br/>suffix=informationboard (see: [[Widgets]])<br/>any other extension?
| suffix || Filter by extension? || (null)<br/>suffix=.*<br/>suffix=.pkg<br/>suffix=.P3T<br/>any other extension?
|-
|-
| subclass || Subclass of the files (mimetype?) || (null)<br/>subclass=x-host/package<br/>subclass=x-host/widget (see: [[Widgets]])<br/>subclass=x-host/directory<br/>subclass=x-host/theme-content<br/>subclass=x-host/ps2_newsavedata<br/>subclass=x-host/mount-info<br/>subclass=x-host/unknown<br/>subclass=x-host/file
| subclass || Subclass of the files (mimetype?) || (null)<br/>subclass=x-host/package<br/>subclass=x-host/widget<br/>subclass=x-host/directory<br/>subclass=x-host/theme-content<br/>subclass=x-host/mount-info ''(to confirm)''<br/>subclass=x-host/unknown ''(to confirm)''<br/>subclass=x-host/file ''(to confirm)''
|-
|-
|}
|}
Line 79: Line 143:
| Positive or negative condition || having || on<br />off || having=off
| Positive or negative condition || having || on<br />off || having=off
|-
|-
| Main search table? || table || Table from [[XMB_database#Tables | XMB database tables]] || table=MMS_MEDIA_TYPE_SYSTEM
| Main search table? || table || Table from [http://www.ps3devwiki.com/wiki/XMB_database#Tables XMB database tables] || table=MMS_MEDIA_TYPE_SYSTEM
|-
|-
| Run function (from registory.xml variables) || rquery || (null)<br />Variables from registory.xml || rquery=root.fixed_items.fah
| Run function (from registory.xml variables) || rquery || (null)<br />Variables from registory.xml || rquery=root.fixed_items.fah
Line 85: Line 149:
| Run function (from envirmont variables?) || rqueryenv || (null)<br />backup || rqueryenv=backup
| Run function (from envirmont variables?) || rqueryenv || (null)<br />backup || rqueryenv=backup
|-
|-
| Search condition || cond || (null)<br />Combination of [[XMB_database#Objects_and_fields | XMB database object fields]] using logical [[#Operators|operators]] || cond=Ae+StorageMedia:StorageMedia.stat.mediaStatus %xCB_MEDIA_INSERTED+Ae+StorageMedia:StorageMedia.deviceType %xCB_DEVICE_TYPE_CF
| Search condition || cond || (null)<br />Combination of [http://www.ps3devwiki.com/wiki/XMB_database#Objects_and_fields XMB database object fields] using logical [[#Operators|operators]] || cond=Ae+StorageMedia:StorageMedia.stat.mediaStatus %xCB_MEDIA_INSERTED+Ae+StorageMedia:StorageMedia.deviceType %xCB_DEVICE_TYPE_CF
|-
|-
|}
|}
Line 101: Line 165:
| Returned items limit || limit || (null)<br />Numbers up to 2048? || limit=2048
| Returned items limit || limit || (null)<br />Numbers up to 2048? || limit=2048
|-
|-
| Main search table? || table || Table from [[XMB_database#Tables | XMB database tables]] || table=MMS_MEDIA_TYPE_SYSTEM
| Main search table? || table || Table from [http://www.ps3devwiki.com/wiki/XMB_database#Tables XMB database tables] || table=MMS_MEDIA_TYPE_SYSTEM
|-
|-
| Filter by subclass? || subclass || (null)<br />x-xcb/unknown<br />x-xcb/game<br />x-xcb/game-disc<br />x-xcb/game-debug<br />x-xcb/game-list<br />x-xcb/content-disc<br />x-xcb/video<br />x-xcb/video-disctitle<br />x-xcb/video-file<br />x-xcb/video-list<br />x-xcb/video-content<br />x-xcb/editingvideo<br />x-xcb/photo<br />x-xcb/photo-list<br />x-xcb/music<br />x-xcb/music-list<br />x-xcb/segment<br />x-xcb/storage-media<br />x-xcb/storagemedia-generic<br />x-xcb/storagemedia-cdda<br />x-xcb/storagemedia-sacd<br />x-xcb/storagemedia-psmc<br />x-xcb/storagemedia-dlna<br />x-xcb/storagemedia-avchd<br />x-xcb/storagemedia-bdc<br />x-xcb/storagemedia-videodisc<br />x-xcb/storagemedia-sdps3<br />x-xcb/storagemedia-sdps2<br />x-xcb/storagemedia-sdpsp<br />x-xcb/storagemedia-psv<br />x-xcb/directory<br />x-xcb/directory-generic<br />x-xcb/directory-photo<br />x-xcb/directory-music<br />x-xcb/directory-video<br />x-xcb/directory-bddata<br />x-xcb/savedata-ps3<br />x-xcb/savedata-ps2<br />x-xcb/savedata-ps1<br />x-xcb/savedata-psp<br />x-xcb/savedata-plus<br />x-xcb/savedata-pspdir<br />x-xcb/achbase<br />x-xcb/achievtitle<br />x-xcb/achievgroup<br />x-xcb/achievflag<br />x-xcb/friendachievtitle<br />x-xcb/friendachievflag<br />x-xcb/friendachievgroup<br />x-xcb/person<br />x-xcb/playedplayer<br />x-xcb/blockedplayer<br />x-xcb/message<br />x-xcb/psv<br />x-xcb/vmc<br />x-xcb/query-condition || subclass=x-xcb/storagemedia-sdps2
| Filter by subclass? || subclass || (null)<br />x-xcb/unknown<br />x-xcb/game<br />x-xcb/game-disc<br />x-xcb/game-debug<br />x-xcb/game-list<br />x-xcb/content-disc<br />x-xcb/video<br />x-xcb/video-disctitle<br />x-xcb/video-file<br />x-xcb/video-list<br />x-xcb/video-content<br />x-xcb/editingvideo<br />x-xcb/photo<br />x-xcb/photo-list<br />x-xcb/music<br />x-xcb/music-list<br />x-xcb/segment<br />x-xcb/storage-media<br />x-xcb/storagemedia-generic<br />x-xcb/storagemedia-cdda<br />x-xcb/storagemedia-sacd<br />x-xcb/storagemedia-psmc<br />x-xcb/storagemedia-dlna<br />x-xcb/storagemedia-avchd<br />x-xcb/storagemedia-bdc<br />x-xcb/storagemedia-videodisc<br />x-xcb/storagemedia-sdps3<br />x-xcb/storagemedia-sdps2<br />x-xcb/storagemedia-sdpsp<br />x-xcb/storagemedia-psv<br />x-xcb/directory<br />x-xcb/directory-generic<br />x-xcb/directory-photo<br />x-xcb/directory-music<br />x-xcb/directory-video<br />x-xcb/directory-bddata<br />x-xcb/savedata-ps3<br />x-xcb/savedata-ps2<br />x-xcb/savedata-ps1<br />x-xcb/savedata-psp<br />x-xcb/savedata-plus<br />x-xcb/savedata-pspdir<br />x-xcb/achbase<br />x-xcb/achievtitle<br />x-xcb/achievgroup<br />x-xcb/achievflag<br />x-xcb/friendachievtitle<br />x-xcb/friendachievflag<br />x-xcb/friendachievgroup<br />x-xcb/person<br />x-xcb/playedplayer<br />x-xcb/blockedplayer<br />x-xcb/message<br />x-xcb/psv<br />x-xcb/vmc<br />x-xcb/query-condition || subclass=x-xcb/storagemedia-sdps2
Line 107: Line 171:
| Filter by genre? || genre || (null)<br />Photo<br />Game<br />Music<br />Video<br/>BdData || genre=Photo
| Filter by genre? || genre || (null)<br />Photo<br />Game<br />Music<br />Video<br/>BdData || genre=Photo
|-
|-
| Sorting || sort || (null)<br />Combination of [[XMB_database#Objects_and_fields | XMB database object fields]] using sort operators:<br />+ ''[ascend]''<br />- ''[descend]'' || sort=+StorageMedia:StorageMedia.sortOrder+StorageMedia :StorageMedia.timeInserted
| Sorting || sort || (null)<br />Combination of [http://www.ps3devwiki.com/wiki/XMB_database#Objects_and_fields XMB database object fields] using sort operators:</br>+ ''[increasing]''<br/>- ''[decreasing]'' || sort=+StorageMedia:StorageMedia.sortOrder+StorageMedia :StorageMedia.timeInserted
|-
|-
| Sorting (from registory.xml variables) || ssort || (null)<br />Variables from registory.xml || ssort=root.sort_selected.friend_named
| Sorting (from registory.xml variables) || ssort || (null)<br />Variables from registory.xml || ssort=root.sort_selected.friend_named
|-
|-
| Search condition || cond || (null)<br />Combination of [[XMB_database#Objects_and_fields | XMB database object fields]] using logical [[#Operators|operators]] || cond=Ae+StorageMedia:StorageMedia.stat.mediaStatus %xCB_MEDIA_INSERTED+Ae+StorageMedia:StorageMedia.deviceType %xCB_DEVICE_TYPE_CF
| Search condition || cond || (null)<br />Combination of [http://www.ps3devwiki.com/wiki/XMB_database#Objects_and_fields XMB database object fields] using logical [[#Operators|operators]] || cond=Ae+StorageMedia:StorageMedia.stat.mediaStatus %xCB_MEDIA_INSERTED+Ae+StorageMedia:StorageMedia.deviceType %xCB_DEVICE_TYPE_CF
|-
|-
| Search condition (from registory.xml variables) || scond || (null)<br />Variables from registory.xml || scond=root.cond_selected.gamelist_format
| Search condition (from registory.xml variables) || scond || (null)<br />Variables from registory.xml || scond=root.cond_selected.gamelist_format
Line 126: Line 190:
|-
|-
| ???????? || opt || (null)<br />parent<br/>logical<br/>shared || opt=parent
| ???????? || opt || (null)<br />parent<br/>logical<br/>shared || opt=parent
|-
| ???????? || io || IOGameVideo || io=IOGameVideo
|-
|-
|}
|}
Line 148: Line 210:


== xmb://localhost/ ==
== xmb://localhost/ ==
Allows to load a segment from another .xml file


Usage example with explicit complete path:
Allows a direct link to a segment in other .xml file. Usage example with explicit complete path:


<pre><Query class="type:x-xmb/folder-pixmap" key="seg_photo_playlist" src="xmb://localhost/dev_flash/vsh/resource/explore/xmb/category_photo.xml#seg_playlist_mgmt"/></pre>
<pre><Query class="type:x-xmb/folder-pixmap" key="seg_photo_playlist" src="xmb://localhost/dev_flash/vsh/resource/explore/xmb/category_photo.xml#seg_playlist_mgmt"/></pre>
Line 162: Line 223:
! Path !! Example !! notes
! Path !! Example !! notes
|-
|-
| rowspan="2" | dev_flash/vsh/resource/explore/xmb/file.xml || xmb://localhost/'''dev_flash/vsh/resource/explore/'''xmb/'''file.xml'''#'''segment''' || explicit path
| dev_flash/vsh/resource/explore/xmb/linked_file.xml || xmb://localhost/'''dev_flash/vsh/resource/explore/'''xmb/linked_file.xml#loaded_segment ||  
|-
|-
| xmb://localhost/'''%flash/'''xmb/'''file.xml'''#'''segment''' || shorcut path
| dev_flash/vsh/resource/explore/xmb/linked_file.xml || xmb://localhost/'''%flash/'''xmb/linked_file.xml#loaded_segment ||  
|-
|-
| dev_hdd0/game/XMBMANPLS/USRDIR/xmbmp/game_settings.xml || xmb://localhost/dev_hdd0/game/XMBMANPLS/USRDIR/xmbmp/game_settings.xml#seg_settings || XMBM+ mod loads the main items from the installation folder of an app<br>Intended for easy updates of the .xml files
| dev_hdd0/game/XMBMANPLS/USRDIR/xmbmp/game_settings.xml || xmb://localhost/dev_hdd0/game/XMBMANPLS/USRDIR/xmbmp/game_settings.xml#seg_settings || MXBM+ mod loads the main items from the installation folder of an app to allow an easy method to update the .xml files
|-
|-
| dev_hdd0/xmlhost/game_plugin/fb.xml || xmb://localhost/dev_hdd0/xmlhost/game_plugin/fb.xml#seg_fb || Webman plugin XMB mod loads an .xml file<br>Intended for updating the list of displayed games dinamically
| dev_hdd0/xmlhost/game_plugin/fb.xml || xmb://localhost/dev_hdd0/xmlhost/game_plugin/fb.xml#seg_fb || Webman plugin XMB mod loads an .xml file to be able to update the list of games dinamically
|-
|-
|}
|}
*Other uses, found inside explore_category_video.sprx (interesting because the file root.xml doesnt exists in path dev_flash/vsh/resource/explore/xmb/)
**xmb://localhost/root.xml#
**xmb://localhost/app_home/root.xml#
*Speculation (partially). It seems is posible to load an item from a segment by using one of these methods (untested):
**src="xmb://localhost/%flash/xmb/file.xml#segment.item"
**src="xmb://localhost/%flash/xmb/file.xml#segment:item"


= ese Functions =
= ese Functions =
Line 184: Line 237:


*Managed by dev_flash/vsh/module/
*Managed by dev_flash/vsh/module/
**esecron.sprx (replaced in firmware 2.20 <!-- by eseibrd.sprx -->)
**esehttp.sprx
**esehttp.sprx
**eseibrd.sprx
**eseibrd.sprx
Line 209: Line 261:
|-
|-
| ? || ese://localhost/query?type=download_control
| ? || ese://localhost/query?type=download_control
|-
| ? || ese://localhost/query?type=download_list
|-
|-
| ? || ese://localhost/query?type=install_game
| ? || ese://localhost/query?type=install_game
Line 252: Line 302:


== sel://localhost/ex? ==
== sel://localhost/ex? ==
Loads an item from '''dev_flash/vsh/resource/explore/xmb/registory.xml'''
Usage example:
Usage example:


<pre><Query class="type:x-xmb/folder-pixmap" key="gameDir2" attr="gameDir2" src="sel://localhost/ex?root.view_selected.game"/></pre>
<pre><Query class="type:x-xmb/folder-pixmap" key="gameDir2" attr="gameDir2" src="sel://localhost/ex?root.view_selected.game"/></pre>
The example above loads all this info sequentially (reordered for convenience):
<pre>
<XMBML version="1.0">
<View id="root">
<Attributes>
<Table key="view_selected">
  <Pair key="game"><String>view_game.all</String></Pair>
</Table>
<Table key="view_game">
<Pair key="all"><String>xcb://localhost/query?limit=2048&ssort=root.sort_selected.game_all&limit=2048&scond=root.cond_selected.game_all</String></Pair>
</Table>
<Table key="sort_selected">
<Pair key="game_all"><String>sort_game.time_created_descend</String></Pair>
<Table key="sort_game">
<Pair key="time_created_descend"><String>sort=-Game:Common.stat.rating-Game:Common.timeCreated+Game:Common.titleForSort-Game:Game.category</String></Pair>
</Table>
<Table key="cond_selected">
<Pair key="game_all"><String>cond_game.all_default</String></Pair>
</Table>
<Table key="cond_game">
<Pair key="all_default"><String>cond=An+Game:Game.category GD+An+Game:Game.category 2D+An+Game:Game.category CB+An+Game:Game.category HM+An+Game:Game.category AT+An+Game:Game.category AV+An+Game:Game.category AM+An+Game:Game.category AP+An+Game:Game.category VF+An+Game:Game.category BV+An+Game:Game.category WT+An+Game:Game.category SF+An+Game:Game.category AS+AL+Game:Common.stat.rating 299</String></Pair>
</Table>
</Attributes>
<Items>
<Item key="view_selected" attr="view_selected" />
<Item key="view_game" attr="view_game" />
<Item key="sort_selected" attr="sort_selected" />
<Item key="sort_game" attr="sort_game" />
<Item key="cond_selected" attr="cond_selected" />
<Item key="cond_game" attr="cond_game" />
</Items>
</View>
</XMBML>
</pre>


== sel://localhost/fnregist? ==
== sel://localhost/fnregist? ==
Line 334: Line 344:


== sel://localhost/ismegatv? ==
== sel://localhost/ismegatv? ==
Found inside explore_category_game.sprx , explore_category_network.sprx
Found inside explore_category_game.sprx
Region Checked for Korean.


== sel://localhost/ispremo? ==
== sel://localhost/ispremo? ==
Line 381: Line 390:


== sel://localhost/ps2emusave? ==
== sel://localhost/ps2emusave? ==
Checks if one or more "PS2 classic" savedata exists (by looking at the [[xRegistry.sys]]/setting/game/ps2emuSaveUtility setting ?), and if found it loads category_game.xml#seg_sdps2 to show the [[:File:Saved_Data_Utility_(PS2).jpg|Saved Data Utility (PS2)]] submenu
Usage example:
Usage example:


Line 403: Line 410:


== sel://localhost/wenv? ==
== sel://localhost/wenv? ==
Found inside explore_category_game.sprx<br>
Found inside explore_category_game.sprx
Usage example:
<pre>
sel://localhost/wenv?k=FacebookDelAcc&v=on&rquery=root.fixed_items.facebook_del_acc&e=FacebookDelAccReload
</pre>


= xil Functions =
= xil Functions =
Line 413: Line 416:


== xil://localhost/list? ==
== xil://localhost/list? ==
Loads XIL information, in most cases this xil info is stored in a xil.xml configuration file. Usage example:
Loads XIL information, in most cases this xil info is stored in a xil.xml configuration file (music, tv, and video uses xil files, but not game). Usage example:


<pre><Query class="type:x-xmb/folder-pixmap" key="seg_xil" attr="seg_xil" src="xil://localhost/list?t=music"/></pre>
<pre><Query class="type:x-xmb/folder-pixmap" key="seg_xil" attr="seg_xil" src="xil://localhost/list?t=music"/></pre>
Line 440: Line 443:


== xil://localhost/item? ==
== xil://localhost/item? ==
Found in explore_category_game.sprx (never found used on XMBML files, so no example from ofw available)
Found in explore_category_game.sprx


<pre>xil://localhost/item?x=%d&y=%u&t=%llx</pre>
<pre>xil://localhost/item?x=%d&y=%u&t=%llx</pre>
Line 449: Line 452:
|-
|-
! x
! x
|  ||  
|  ||
|-
|-
! y
! y
|  ||  
|  ||
|-
|-
! t
! t
|  ||  
|  ||
|-
|-
|}
|}
*Speculation
**The valid values for "t" probably are the same used by xil://localhost/list
***t=music
***t=tv
***t=video
***t=game


= chat Functions =
= chat Functions =
Line 515: Line 511:


== rss:// ==
== rss:// ==
Usage examples:
Usage example:


<pre><Query class="type:x-xmb/folder-pixmap" key="site_rss_2" attr="site_rss_2" src="rss://http://ps3.drikin.com/rss/sample.xml"/></pre>
<pre><Query class="type:x-xmb/folder-pixmap" key="site_rss_2" attr="site_rss_2" src="rss://http://ps3.drikin.com/rss/sample.xml"/></pre>
<pre><Query class="type:x-xmb/folder-pixmap" key="rss_provider_0" attr="rss_provider_0" src="rss://http://www.rssnavi.jp/rss/?k=caterss3"/></pre>
k = channel ?


= wboard Functions =
= wboard Functions =
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)