| 1 |
<?php |
| 2 |
/** |
| 3 |
* Workspaces module (spec 030-workspaces). |
| 4 |
* |
| 5 |
* Collaborative workspaces: CRUD, sharing/membership, browsing, the workspace |
| 6 |
* switcher, and workspace-scoped file operations (add/delete). Relocated |
| 7 |
* verbatim from includes/API/WorkSpaces.php — behavior byte-identical (same |
| 8 |
* routes, params, permission logic). |
| 9 |
* |
| 10 |
* SCOPE NOTE: copy/move of a personal-cloud file into a workspace, and |
| 11 |
* delete/download of a personal-cloud file, are served by modules/my-cloud's |
| 12 |
* (spec 028) endpoints — this module does not duplicate that surface (see |
| 13 |
* spec.md's Ownership & Artifacts section). The genuinely-shared UI consumed |
| 14 |
* by both this module and modules/my-cloud (CloudsLayout, Actions, |
| 15 |
* ViewButtons, ContextMenu, CloudFileName, CloudSidebar, the multi-source |
| 16 |
* Add-File/CopyMove/DeleteFile modals, and the mixed clouds+workspace redux |
| 17 |
* actions/saga files) intentionally stays in react-src/ rather than being |
| 18 |
* force-owned by either module. See this module's assets/js/CLAUDE.md and |
| 19 |
* data-model.md's "Module Home" section for the full boundary reasoning. |
| 20 |
* |
| 21 |
* @package Templately |
| 22 |
*/ |
| 23 |
|
| 24 |
namespace Templately\Modules\Workspaces; |
| 25 |
|
| 26 |
use Templately\Core\Module_Base; |
| 27 |
use Templately\Modules\Workspaces\REST\WorkSpaces; |
| 28 |
|
| 29 |
class Module extends Module_Base { |
| 30 |
|
| 31 |
public function get_name(): string { |
| 32 |
return 'workspaces'; |
| 33 |
} |
| 34 |
|
| 35 |
public function register_rest_routes(): void { |
| 36 |
WorkSpaces::get_instance()->register_routes(); |
| 37 |
} |
| 38 |
} |
| 39 |
|