diff --git a/appinfo/info.xml b/appinfo/info.xml
index 9991f37bb..c431d43be 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -46,6 +46,9 @@ Have a good time and manage whatever you want.
+
+ OCA\Tables\Migration\FixContextsDefaults
+
OCA\Tables\Migration\NewDbStructureRepairStep
OCA\Tables\Migration\DbRowSleeveSequence
diff --git a/lib/Controller/Api1Controller.php b/lib/Controller/Api1Controller.php
index 7a2f33666..a5fabb109 100644
--- a/lib/Controller/Api1Controller.php
+++ b/lib/Controller/Api1Controller.php
@@ -518,7 +518,8 @@ public function indexTableShares(int $tableId): DataResponse {
* @param bool $permissionUpdate Permission if receiver can update data
* @param bool $permissionDelete Permission if receiver can delete data
* @param bool $permissionManage Permission if receiver can manage node
- * @param int $displayMode context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all
+ * @param int $displayMode context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all (default). Cf. Application::NAV_ENTRY_MODE_*.
+ * @psalm-param int<0, 2> $displayMode
* @return DataResponse|DataResponse
*
* 200: Share returned
@@ -536,10 +537,22 @@ public function createShare(
bool $permissionUpdate = false,
bool $permissionDelete = false,
bool $permissionManage = false,
- int $displayMode = 0,
+ int $displayMode = 2,
): DataResponse {
try {
- return new DataResponse($this->shareService->create($nodeId, $nodeType, $receiver, $receiverType, $permissionRead, $permissionCreate, $permissionUpdate, $permissionDelete, $permissionManage, $displayMode)->jsonSerialize());
+ return new DataResponse(
+ $this->shareService->create(
+ $nodeId,
+ $nodeType,
+ $receiver,
+ $receiverType,
+ $permissionRead,
+ $permissionCreate,
+ $permissionUpdate,
+ $permissionDelete,
+ $permissionManage,
+ $displayMode
+ )->jsonSerialize());
} catch (PermissionError $e) {
$this->logger->warning('A permission error occurred: '.$e->getMessage());
$message = ['message' => $e->getMessage()];
@@ -1401,7 +1414,20 @@ public function importInView(int $viewId, string $path, bool $createMissingColum
#[RequirePermission(permission: Application::PERMISSION_MANAGE, type: Application::NODE_TYPE_TABLE, idParam: 'tableId')]
public function createTableShare(int $tableId, string $receiver, string $receiverType, bool $permissionRead, bool $permissionCreate, bool $permissionUpdate, bool $permissionDelete, bool $permissionManage): DataResponse {
try {
- return new DataResponse($this->shareService->create($tableId, 'table', $receiver, $receiverType, $permissionRead, $permissionCreate, $permissionUpdate, $permissionDelete, $permissionManage, 0)->jsonSerialize());
+ return new DataResponse(
+ $this->shareService->create(
+ $tableId,
+ 'table',
+ $receiver,
+ $receiverType,
+ $permissionRead,
+ $permissionCreate,
+ $permissionUpdate,
+ $permissionDelete,
+ $permissionManage,
+ Application::NAV_ENTRY_MODE_ALL
+ )->jsonSerialize()
+ );
} catch (PermissionError $e) {
$this->logger->warning('A permission error occurred: '.$e->getMessage());
$message = ['message' => $e->getMessage()];
diff --git a/lib/Controller/ShareController.php b/lib/Controller/ShareController.php
index 04532090e..bab53ac5d 100644
--- a/lib/Controller/ShareController.php
+++ b/lib/Controller/ShareController.php
@@ -73,7 +73,7 @@ public function create(
bool $permissionUpdate = false,
bool $permissionDelete = false,
bool $permissionManage = false,
- int $displayMode = 0,
+ int $displayMode = Application::NAV_ENTRY_MODE_ALL,
): DataResponse {
return $this->handleError(function () use ($nodeId, $nodeType, $receiver, $receiverType, $permissionRead, $permissionCreate, $permissionUpdate, $permissionDelete, $permissionManage, $displayMode) {
return $this->service->create($nodeId, $nodeType, $receiver, $receiverType, $permissionRead, $permissionCreate, $permissionUpdate, $permissionDelete, $permissionManage, $displayMode);
diff --git a/lib/Migration/FixContextsDefaults.php b/lib/Migration/FixContextsDefaults.php
new file mode 100644
index 000000000..7e652fcab
--- /dev/null
+++ b/lib/Migration/FixContextsDefaults.php
@@ -0,0 +1,46 @@
+config->getAppValue(Application::APP_ID, 'installed_version', '0.0');
+ if (\version_compare($appVersion, '0.8.0-beta.1', '>')) {
+ $output->info('Not applicable, skipping.');
+ return;
+ }
+
+ $qb = $this->dbc->getQueryBuilder();
+ $qb->update('tables_contexts_navigation')
+ ->set('display_mode', $qb->createNamedParameter(Application::NAV_ENTRY_MODE_ALL, IQueryBuilder::PARAM_INT))
+ ->where($qb->expr()->eq('display_mode', $qb->createNamedParameter(Application::NAV_ENTRY_MODE_HIDDEN, IQueryBuilder::PARAM_INT)))
+ ->andWhere($qb->expr()->eq('user_id', $qb->createNamedParameter('', IQueryBuilder::PARAM_STR)))
+ ->executeStatement();
+ }
+}
diff --git a/openapi.json b/openapi.json
index 652d6d5cd..42f8df41a 100644
--- a/openapi.json
+++ b/openapi.json
@@ -2496,8 +2496,10 @@
"displayMode": {
"type": "integer",
"format": "int64",
- "default": 0,
- "description": "context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all"
+ "default": 2,
+ "description": "context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all (default). Cf. Application::NAV_ENTRY_MODE_*.",
+ "minimum": 0,
+ "maximum": 2
}
}
}
diff --git a/src/types/openapi/openapi.ts b/src/types/openapi/openapi.ts
index b64696958..f2794ca49 100644
--- a/src/types/openapi/openapi.ts
+++ b/src/types/openapi/openapi.ts
@@ -1903,8 +1903,8 @@ export interface operations {
readonly permissionManage?: boolean;
/**
* Format: int64
- * @description context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all
- * @default 0
+ * @description context shares only, whether it should appear in nav bar. 0: no, 1: recipients, 2: all (default). Cf. Application::NAV_ENTRY_MODE_*.
+ * @default 2
*/
readonly displayMode?: number;
};