Commit 2db4840d77c074d8621634fb5003fe2782531d09
1 parent
ad5f0420
Code changes to allow CMISSpaces (and similar clients) to work with the URL stru…
…ctures used by Alfresco and Drupal Committed by: Paul Barrett
Showing
9 changed files
with
126 additions
and
39 deletions
ktapi/ktapi.inc.php
| @@ -834,9 +834,9 @@ class KTAPI | @@ -834,9 +834,9 @@ class KTAPI | ||
| 834 | * @param string $foldername The folder name | 834 | * @param string $foldername The folder name |
| 835 | * @return object $folder The KTAPI_Folder object | 835 | * @return object $folder The KTAPI_Folder object |
| 836 | */ | 836 | */ |
| 837 | - public function &get_folder_by_name($foldername) | 837 | + public function &get_folder_by_name($foldername, $parentId = 1) |
| 838 | { | 838 | { |
| 839 | - $folder = KTAPI_Folder::_get_folder_by_name($this, $foldername, 1); | 839 | + $folder = KTAPI_Folder::_get_folder_by_name($this, $foldername, $parentId); |
| 840 | return $folder; | 840 | return $folder; |
| 841 | } | 841 | } |
| 842 | 842 |
ktatompub/lib/cmis/KTCMISAPPFeed.inc.php
| @@ -56,6 +56,7 @@ class KTCMISAPPFeed extends KTAPDoc { | @@ -56,6 +56,7 @@ class KTCMISAPPFeed extends KTAPDoc { | ||
| 56 | public function __construct($baseURI = NULL, $title = NULL, $link = NULL, $updated = NULL, $author = NULL, $id = NULL) | 56 | public function __construct($baseURI = NULL, $title = NULL, $link = NULL, $updated = NULL, $author = NULL, $id = NULL) |
| 57 | { | 57 | { |
| 58 | parent::__construct(); | 58 | parent::__construct(); |
| 59 | + | ||
| 59 | $this->baseURI = $baseURI; | 60 | $this->baseURI = $baseURI; |
| 60 | $this->id = $id; | 61 | $this->id = $id; |
| 61 | $this->title = $title; | 62 | $this->title = $title; |
| @@ -65,6 +66,7 @@ class KTCMISAPPFeed extends KTAPDoc { | @@ -65,6 +66,7 @@ class KTCMISAPPFeed extends KTAPDoc { | ||
| 65 | private function constructHeader() | 66 | private function constructHeader() |
| 66 | { | 67 | { |
| 67 | $feed = $this->newElement('feed'); | 68 | $feed = $this->newElement('feed'); |
| 69 | + $feed->appendChild($this->newAttr('xmlns','http://www.w3.org/2007/app')); | ||
| 68 | $feed->appendChild($this->newAttr('xmlns','http://www.w3.org/2005/Atom')); | 70 | $feed->appendChild($this->newAttr('xmlns','http://www.w3.org/2005/Atom')); |
| 69 | $feed->appendChild($this->newAttr('xmlns:cmis','http://www.cmis.org/2008/05')); | 71 | $feed->appendChild($this->newAttr('xmlns:cmis','http://www.cmis.org/2008/05')); |
| 70 | $this->feed = &$feed; | 72 | $this->feed = &$feed; |
| @@ -76,7 +78,7 @@ class KTCMISAPPFeed extends KTAPDoc { | @@ -76,7 +78,7 @@ class KTCMISAPPFeed extends KTAPDoc { | ||
| 76 | 78 | ||
| 77 | $link = $this->newElement('link'); | 79 | $link = $this->newElement('link'); |
| 78 | $link->appendChild($this->newAttr('rel','self')); | 80 | $link->appendChild($this->newAttr('rel','self')); |
| 79 | - $link->appendChild($this->newAttr('href', $this->baseURI . $_SERVER['QUERY_STRING'])); | 81 | + $link->appendChild($this->newAttr('href', $this->baseURI . trim($_SERVER['QUERY_STRING'], '/'))); |
| 80 | $feed->appendChild($link); | 82 | $feed->appendChild($link); |
| 81 | 83 | ||
| 82 | if (!is_null($this->title)) | 84 | if (!is_null($this->title)) |
| @@ -103,8 +105,18 @@ class KTCMISAPPFeed extends KTAPDoc { | @@ -103,8 +105,18 @@ class KTCMISAPPFeed extends KTAPDoc { | ||
| 103 | 105 | ||
| 104 | public function &newField($name = NULL, $value = NULL, &$entry = NULL) | 106 | public function &newField($name = NULL, $value = NULL, &$entry = NULL) |
| 105 | { | 107 | { |
| 106 | - $field = $this->newElement('cmis:' . $name,$value); | ||
| 107 | - if(isset($entry))$entry->appendChild($field); | 108 | + $append = false; |
| 109 | + | ||
| 110 | + if(func_num_args() > 3) | ||
| 111 | + { | ||
| 112 | + $append = ((func_get_arg(3) === true) ? true : false); | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + $field = $this->newElement('cmis:' . $name,$value); | ||
| 116 | + | ||
| 117 | + if (isset($entry)) $entry->appendChild($field); | ||
| 118 | + else if ($append) $this->feed->appendChild($field); | ||
| 119 | + | ||
| 108 | return $field; | 120 | return $field; |
| 109 | } | 121 | } |
| 110 | 122 |
ktatompub/services/cmis/ObjectFeed.inc.php
| @@ -9,10 +9,14 @@ class CMISObjectFeed { | @@ -9,10 +9,14 @@ class CMISObjectFeed { | ||
| 9 | * @param array $cmisEntry The entry data | 9 | * @param array $cmisEntry The entry data |
| 10 | * @param string $parent The parent folder | 10 | * @param string $parent The parent folder |
| 11 | */ | 11 | */ |
| 12 | - static public function createEntry(&$feed, $cmisEntry, $parent) | 12 | + static public function createEntry(&$feed, $cmisEntry, $parent, $path) |
| 13 | { | 13 | { |
| 14 | + preg_match('/^\/?cmis\/folder\/(.*)\/[^\/]*\/?$/', trim($_SERVER['QUERY_STRING'], '/'), $matches); | ||
| 15 | + $path = $matches[1]; | ||
| 16 | + $parent = preg_replace('/\/[^\/]*$/', '', $path); | ||
| 17 | + | ||
| 14 | $entry = $feed->newEntry(); | 18 | $entry = $feed->newEntry(); |
| 15 | - $feed->newId('urn:uuid:' . $cmisEntry['properties']['ObjectId']['value'] . '-' | 19 | + $feed->newId('urn:uuid:' . $cmisEntry['properties']['Name']['value'] . '-' |
| 16 | . strtolower($cmisEntry['properties']['ObjectTypeId']['value']), $entry); | 20 | . strtolower($cmisEntry['properties']['ObjectTypeId']['value']), $entry); |
| 17 | 21 | ||
| 18 | /* | 22 | /* |
| @@ -29,26 +33,28 @@ class CMISObjectFeed { | @@ -29,26 +33,28 @@ class CMISObjectFeed { | ||
| 29 | // $entry->appendChild($link); | 33 | // $entry->appendChild($link); |
| 30 | $link = $feed->newElement('link'); | 34 | $link = $feed->newElement('link'); |
| 31 | $link->appendChild($feed->newAttr('rel','cmis-parent')); | 35 | $link->appendChild($feed->newAttr('rel','cmis-parent')); |
| 32 | - $link->appendChild($feed->newAttr('href', CMIS_BASE_URI . 'folder/' . $parent)); | 36 | + $link->appendChild($feed->newAttr('href', CMIS_BASE_URI . 'folder/' . $path)); |
| 33 | $entry->appendChild($link); | 37 | $entry->appendChild($link); |
| 34 | 38 | ||
| 35 | if (strtolower($cmisEntry['properties']['ObjectTypeId']['value']) == 'folder') | 39 | if (strtolower($cmisEntry['properties']['ObjectTypeId']['value']) == 'folder') |
| 36 | { | 40 | { |
| 37 | $link = $feed->newElement('link'); | 41 | $link = $feed->newElement('link'); |
| 38 | $link->appendChild($feed->newAttr('rel','cmis-folderparent')); | 42 | $link->appendChild($feed->newAttr('rel','cmis-folderparent')); |
| 39 | - $link->appendChild($feed->newAttr('href', CMIS_BASE_URI . 'folder/' . $parent)); | 43 | + $link->appendChild($feed->newAttr('href', CMIS_BASE_URI . 'folder/' . $path)); |
| 40 | $entry->appendChild($link); | 44 | $entry->appendChild($link); |
| 41 | $link = $feed->newElement('link'); | 45 | $link = $feed->newElement('link'); |
| 42 | $link->appendChild($feed->newAttr('rel','cmis-children')); | 46 | $link->appendChild($feed->newAttr('rel','cmis-children')); |
| 43 | $link->appendChild($feed->newAttr('href', CMIS_BASE_URI | 47 | $link->appendChild($feed->newAttr('href', CMIS_BASE_URI |
| 44 | . strtolower($cmisEntry['properties']['ObjectTypeId']['value']) | 48 | . strtolower($cmisEntry['properties']['ObjectTypeId']['value']) |
| 45 | - . '/' . $cmisEntry['properties']['ObjectId']['value'] . '/children')); | 49 | + . '/' . $path . '/' . urlencode($cmisEntry['properties']['Name']['value']) |
| 50 | + . '/children')); | ||
| 46 | $entry->appendChild($link); | 51 | $entry->appendChild($link); |
| 47 | $link = $feed->newElement('link'); | 52 | $link = $feed->newElement('link'); |
| 48 | $link->appendChild($feed->newAttr('rel','cmis-descendants')); | 53 | $link->appendChild($feed->newAttr('rel','cmis-descendants')); |
| 49 | $link->appendChild($feed->newAttr('href', CMIS_BASE_URI | 54 | $link->appendChild($feed->newAttr('href', CMIS_BASE_URI |
| 50 | . strtolower($cmisEntry['properties']['ObjectTypeId']['value']) | 55 | . strtolower($cmisEntry['properties']['ObjectTypeId']['value']) |
| 51 | - . '/' . $cmisEntry['properties']['ObjectId']['value'] . '/descendants')); | 56 | + . '/' . $path . '/' . urlencode($cmisEntry['properties']['Name']['value']) |
| 57 | + . '/descendants')); | ||
| 52 | $entry->appendChild($link); | 58 | $entry->appendChild($link); |
| 53 | } | 59 | } |
| 54 | 60 |
ktatompub/services/cmis/checkedout.inc.php
| @@ -20,11 +20,11 @@ $NavigationService->startSession($username, $password); | @@ -20,11 +20,11 @@ $NavigationService->startSession($username, $password); | ||
| 20 | $repositories = $RepositoryService->getRepositories(); | 20 | $repositories = $RepositoryService->getRepositories(); |
| 21 | $repositoryId = $repositories[0]['repositoryId']; | 21 | $repositoryId = $repositories[0]['repositoryId']; |
| 22 | 22 | ||
| 23 | -$output = '<feed xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:cmis="http://www.cmis.org/2008/05"> | ||
| 24 | -<id>urn:uuid:checkedout</id> | ||
| 25 | -<link rel="self" href="' . CMIS_BASE_URI . 'checkedout"/> | ||
| 26 | -<title>Checked out Documents</title> | ||
| 27 | -<cmis:hasMoreItems>false</cmis:hasMoreItems> | ||
| 28 | -</feed>'; | 23 | +$feed = new KTCMISAPPFeed(KT_APP_BASE_URI, 'Checked out Documents', null, null, null, 'urn:uuid:checkedout'); |
| 24 | + | ||
| 25 | +$entry = null; | ||
| 26 | +$feed->newField('hasMoreItems', 'false', $entry, true); | ||
| 27 | + | ||
| 28 | +$output = $feed->getAPPdoc(); | ||
| 29 | 29 | ||
| 30 | ?> | 30 | ?> |
ktatompub/services/cmis/folder.inc.php
| @@ -18,7 +18,7 @@ class CMISFolderFeed extends CMISObjectFeed { | @@ -18,7 +18,7 @@ class CMISFolderFeed extends CMISObjectFeed { | ||
| 18 | * @param string $feedType children or descendants | 18 | * @param string $feedType children or descendants |
| 19 | * @return string CMIS AtomPub feed | 19 | * @return string CMIS AtomPub feed |
| 20 | */ | 20 | */ |
| 21 | - static public function getFolderChildrenFeed($NavigationService, $repositoryId, $folderId, $feedType) | 21 | + static public function getFolderChildrenFeed($NavigationService, $repositoryId, $folderId, $folderName, $feedType) |
| 22 | { | 22 | { |
| 23 | if ($feedType == 'children') | 23 | if ($feedType == 'children') |
| 24 | { | 24 | { |
| @@ -30,25 +30,15 @@ class CMISFolderFeed extends CMISObjectFeed { | @@ -30,25 +30,15 @@ class CMISFolderFeed extends CMISObjectFeed { | ||
| 30 | } | 30 | } |
| 31 | else | 31 | else |
| 32 | { | 32 | { |
| 33 | - // error, we shouldn't be here | ||
| 34 | - } | ||
| 35 | - | ||
| 36 | - // TODO dynamically get the requested folder's name to display correctly | ||
| 37 | - if ($folderId == 'F1') | ||
| 38 | - { | ||
| 39 | - $folderName = 'Root Folder'; | ||
| 40 | - } | ||
| 41 | - else | ||
| 42 | - { | ||
| 43 | - $folderName = 'Folder'; | 33 | + // error, we shouldn't be here, if we are then the wrong function was called |
| 44 | } | 34 | } |
| 45 | 35 | ||
| 46 | $feed = new KTCMISAPPFeed(KT_APP_BASE_URI, $folderName . ' ' . ucwords($feedType), null, null, null, | 36 | $feed = new KTCMISAPPFeed(KT_APP_BASE_URI, $folderName . ' ' . ucwords($feedType), null, null, null, |
| 47 | - 'urn:uuid:' . $folderId . '-' . $feedType); | 37 | + 'urn:uuid:' . $folderName . '-' . $feedType); |
| 48 | 38 | ||
| 49 | foreach($entries as $cmisEntry) | 39 | foreach($entries as $cmisEntry) |
| 50 | { | 40 | { |
| 51 | - CMISFolderFeed::createEntry($feed, $cmisEntry, $folderId); | 41 | + CMISFolderFeed::createEntry($feed, $cmisEntry, $folderName); |
| 52 | } | 42 | } |
| 53 | 43 | ||
| 54 | // <cmis:hasMoreItems>false</cmis:hasMoreItems> | 44 | // <cmis:hasMoreItems>false</cmis:hasMoreItems> |
| @@ -490,6 +480,62 @@ class CMISFolderFeed extends CMISObjectFeed { | @@ -490,6 +480,62 @@ class CMISFolderFeed extends CMISObjectFeed { | ||
| 490 | return $output; | 480 | return $output; |
| 491 | } | 481 | } |
| 492 | 482 | ||
| 483 | + static public function getFolderData($query, &$locationName, &$tree) | ||
| 484 | + { | ||
| 485 | + $folderId = null; | ||
| 486 | + | ||
| 487 | + // TODO proper login credentials, or rather use the existing session available from the underlying CMIS code | ||
| 488 | + $ktapi = new KTAPI(); | ||
| 489 | + $ktapi->start_session('admin', 'admin'); | ||
| 490 | + | ||
| 491 | + $numQ = count($query); | ||
| 492 | + | ||
| 493 | + if($query[$numQ-1] == 'children' || $query[$numQ-1] == 'descendants') { | ||
| 494 | + $offset = 1; | ||
| 495 | + $tree = $query[$numQ-1]; | ||
| 496 | + } | ||
| 497 | + | ||
| 498 | + $folderName = urldecode($query[$numQ-($offset+1)]); | ||
| 499 | + | ||
| 500 | + $locationName = $folderName; | ||
| 501 | + | ||
| 502 | + if ($numQ <= 5) | ||
| 503 | + { | ||
| 504 | + $parentId = 1; | ||
| 505 | + } | ||
| 506 | + else | ||
| 507 | + { | ||
| 508 | + $count = 2; | ||
| 509 | + $lastParent = 0; | ||
| 510 | + | ||
| 511 | + while(++$count <= ($numQ - 3)) | ||
| 512 | + { | ||
| 513 | + if ($lastParent == 0) | ||
| 514 | + { | ||
| 515 | + $idUp = 1; | ||
| 516 | + } | ||
| 517 | + else | ||
| 518 | + { | ||
| 519 | + $idUp = $lastParent; | ||
| 520 | + } | ||
| 521 | + | ||
| 522 | + $folderName = urldecode($query[$count]); | ||
| 523 | + $folder = $ktapi->get_folder_by_name($folderName, $idUp); | ||
| 524 | + | ||
| 525 | + if (PEAR::isError($folder)) break; | ||
| 526 | + | ||
| 527 | + $currentId = $folder->get_folderid(); | ||
| 528 | + $lastParent = $currentId; | ||
| 529 | + } | ||
| 530 | + | ||
| 531 | + $parentId = $lastParent; | ||
| 532 | + } | ||
| 533 | + | ||
| 534 | + $folder = $ktapi->get_folder_by_name($locationName, $parentId); | ||
| 535 | + $folderId = CMISUtil::encodeObjectId('Folder', $folder->get_folderid()); | ||
| 536 | + | ||
| 537 | + return $folderId; | ||
| 538 | + } | ||
| 493 | } | 539 | } |
| 494 | 540 | ||
| 495 | include 'services/cmis/RepositoryService.inc.php'; | 541 | include 'services/cmis/RepositoryService.inc.php'; |
| @@ -500,19 +546,21 @@ $RepositoryService = new RepositoryService(); | @@ -500,19 +546,21 @@ $RepositoryService = new RepositoryService(); | ||
| 500 | $repositories = $RepositoryService->getRepositories(); | 546 | $repositories = $RepositoryService->getRepositories(); |
| 501 | $repositoryId = $repositories[0]['repositoryId']; | 547 | $repositoryId = $repositories[0]['repositoryId']; |
| 502 | 548 | ||
| 503 | -if (isset($query[3]) && (($query[3] == 'children') || ($query[3] == 'descendants'))) | 549 | +$folderId = CMISFolderFeed::getFolderData($query, $folderName, $tree); |
| 550 | + | ||
| 551 | +if (isset($tree) && (($tree == 'children') || ($tree == 'descendants'))) | ||
| 504 | { | 552 | { |
| 505 | $NavigationService = new NavigationService(); | 553 | $NavigationService = new NavigationService(); |
| 506 | $NavigationService->startSession($username, $password); | 554 | $NavigationService->startSession($username, $password); |
| 507 | 555 | ||
| 508 | - $output = CMISFolderFeed::getFolderChildrenFeed($NavigationService, $repositoryId, $query[2], $query[3]); | 556 | + $output = CMISFolderFeed::getFolderChildrenFeed($NavigationService, $repositoryId, $folderId, $folderName, $tree); |
| 509 | } | 557 | } |
| 510 | else | 558 | else |
| 511 | { | 559 | { |
| 512 | $ObjectService = new ObjectService(); | 560 | $ObjectService = new ObjectService(); |
| 513 | $ObjectService->startSession($username, $password); | 561 | $ObjectService->startSession($username, $password); |
| 514 | 562 | ||
| 515 | - $output = CMISFolderFeed::getFolderFeed($ObjectService, $repositoryId, $query[2]); | 563 | + $output = CMISFolderFeed::getFolderFeed($ObjectService, $repositoryId, $folderId); |
| 516 | } | 564 | } |
| 517 | 565 | ||
| 518 | ?> | 566 | ?> |
ktatompub/services/cmis/index.php
| @@ -7,7 +7,8 @@ | @@ -7,7 +7,8 @@ | ||
| 7 | include_once('lib/cmis/KTCMISAPPServiceDoc.inc.php'); | 7 | include_once('lib/cmis/KTCMISAPPServiceDoc.inc.php'); |
| 8 | include_once('lib/cmis/KTCMISAPPFeed.inc.php'); | 8 | include_once('lib/cmis/KTCMISAPPFeed.inc.php'); |
| 9 | 9 | ||
| 10 | -define ('CMIS_BASE_URI', KT_APP_BASE_URI . 'cmis/'); | 10 | +define ('CMIS_BASE_URI', trim(KT_APP_BASE_URI, '/') . 'cmis/'); |
| 11 | +//echo KT_APP_BASE_URI;exit; | ||
| 11 | // hack for links not yet working in KT, use Alfresco to move things forward | 12 | // hack for links not yet working in KT, use Alfresco to move things forward |
| 12 | //define ('CMIS_BASE_URI_ALF', 'http://127.0.0.1:8080/alfresco/service/api/'); | 13 | //define ('CMIS_BASE_URI_ALF', 'http://127.0.0.1:8080/alfresco/service/api/'); |
| 13 | //define ('CMIS_BASE_URI', 'http://10.33.4.34:8080/alfresco/service/api/'); | 14 | //define ('CMIS_BASE_URI', 'http://10.33.4.34:8080/alfresco/service/api/'); |
| @@ -18,7 +19,7 @@ $username = $_SERVER['PHP_AUTH_USER']; | @@ -18,7 +19,7 @@ $username = $_SERVER['PHP_AUTH_USER']; | ||
| 18 | $password = $_SERVER['PHP_AUTH_PW']; | 19 | $password = $_SERVER['PHP_AUTH_PW']; |
| 19 | 20 | ||
| 20 | // NOTE this is just for demonstration purposes and attempting to auth with clients which send the username/password differently | 21 | // NOTE this is just for demonstration purposes and attempting to auth with clients which send the username/password differently |
| 21 | -// TODO disable once we have Drupal compatible login working | 22 | +// TODO disable once we have at least Drupal compatible login working, can re-enable if necessary |
| 22 | if (($username == '') && ($password == '')) | 23 | if (($username == '') && ($password == '')) |
| 23 | { | 24 | { |
| 24 | $username = $password = 'admin'; | 25 | $username = $password = 'admin'; |
ktatompub/services/cmis/servicedocument.inc.php
| @@ -6,6 +6,9 @@ | @@ -6,6 +6,9 @@ | ||
| 6 | * NOTE Includes the results of a repositoryInfo call as well as service links | 6 | * NOTE Includes the results of a repositoryInfo call as well as service links |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | +// NOTE currently we only support one repository, which will be the first one found in the repositories.xml config | ||
| 10 | +// TODO multiple repositories as individual workspaces | ||
| 11 | + | ||
| 9 | include 'services/cmis/RepositoryService.inc.php'; | 12 | include 'services/cmis/RepositoryService.inc.php'; |
| 10 | $RepositoryService = new RepositoryService(); | 13 | $RepositoryService = new RepositoryService(); |
| 11 | 14 |
ktatompub/services/cmis/types.inc.php
| @@ -35,7 +35,8 @@ switch($arg) | @@ -35,7 +35,8 @@ switch($arg) | ||
| 35 | break; | 35 | break; |
| 36 | case 'types': | 36 | case 'types': |
| 37 | $types = $RepositoryService->getTypes($repositoryId); | 37 | $types = $RepositoryService->getTypes($repositoryId); |
| 38 | - $output = CMISTypeFeed::getTypeFeed('All Types', $types); | 38 | + $type = (($query[2] == '') ? 'all' : $query[2]); |
| 39 | + $output = CMISTypeFeed::getTypeFeed($type, $types); | ||
| 39 | break; | 40 | break; |
| 40 | } | 41 | } |
| 41 | 42 | ||
| @@ -54,7 +55,23 @@ class CMISTypeFeed { | @@ -54,7 +55,23 @@ class CMISTypeFeed { | ||
| 54 | */ | 55 | */ |
| 55 | static public function getTypeFeed($typeDef, $types) | 56 | static public function getTypeFeed($typeDef, $types) |
| 56 | { | 57 | { |
| 57 | - $feed = new KTCMISAPPFeed(KT_APP_BASE_URI, $typeDef, null, null, null, 'urn:uuid:type-' . $query[2]); | 58 | + $typesString = ''; |
| 59 | + $typesHeading = ''; | ||
| 60 | + switch($typeDef) | ||
| 61 | + { | ||
| 62 | + case 'all': | ||
| 63 | + case 'children': | ||
| 64 | + case 'descendants': | ||
| 65 | + $typesString = 'types-' . $typeDef; | ||
| 66 | + $typesHeading = 'All Types'; | ||
| 67 | + break; | ||
| 68 | + default: | ||
| 69 | + $typesString = 'type-' . $typeDef; | ||
| 70 | + $typesHeading = $typeDef; | ||
| 71 | + break; | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + $feed = new KTCMISAPPFeed(KT_APP_BASE_URI, $typesHeading, null, null, null, 'urn:uuid:' . $typesString); | ||
| 58 | 75 | ||
| 59 | foreach($types as $type) | 76 | foreach($types as $type) |
| 60 | { | 77 | { |
lib/api/ktcmis/config/repositories.xml
| @@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
| 19 | <vendorName>KnowledgeTree</vendorName> | 19 | <vendorName>KnowledgeTree</vendorName> |
| 20 | <productName>KnowledgeTree Document Management System</productName> | 20 | <productName>KnowledgeTree Document Management System</productName> |
| 21 | <productVersion>3.6.2</productVersion> | 21 | <productVersion>3.6.2</productVersion> |
| 22 | - <rootFolderId>F1</rootFolderId> | 22 | + <rootFolderId>Root%20Folder</rootFolderId> |
| 23 | <cmisVersionsSupported>0.61c</cmisVersionsSupported> | 23 | <cmisVersionsSupported>0.61c</cmisVersionsSupported> |
| 24 | </repositoryInfo> | 24 | </repositoryInfo> |
| 25 | <repositoryCapabilities> | 25 | <repositoryCapabilities> |