2727use OCP \DB \Exception ;
2828use OCP \EventDispatcher \IEventDispatcher ;
2929use OCP \IDBConnection ;
30+ use OCP \INavigationManager ;
31+ use OCP \IURLGenerator ;
3032use OCP \IUserManager ;
3133use OCP \Log \Audit \CriticalActionPerformedEvent ;
3234use Psr \Log \LoggerInterface ;
3335
3436class ContextService {
3537
36- private ContextMapper $ contextMapper ;
37- private bool $ isCLI ;
38- private LoggerInterface $ logger ;
39- private ContextNodeRelationMapper $ contextNodeRelMapper ;
40- private PageMapper $ pageMapper ;
41- private PageContentMapper $ pageContentMapper ;
42- private PermissionsService $ permissionsService ;
43- private IUserManager $ userManager ;
44- private IEventDispatcher $ eventDispatcher ;
45- private IDBConnection $ dbc ;
46- private ShareService $ shareService ;
47-
4838 public function __construct (
49- ContextMapper $ contextMapper ,
50- ContextNodeRelationMapper $ contextNodeRelationMapper ,
51- PageMapper $ pageMapper ,
52- PageContentMapper $ pageContentMapper ,
53- LoggerInterface $ logger ,
54- PermissionsService $ permissionsService ,
55- IUserManager $ userManager ,
56- IEventDispatcher $ eventDispatcher ,
57- IDBConnection $ dbc ,
58- ShareService $ shareService ,
59- bool $ isCLI ,
39+ private ContextMapper $ contextMapper ,
40+ private ContextNodeRelationMapper $ contextNodeRelMapper ,
41+ private PageMapper $ pageMapper ,
42+ private PageContentMapper $ pageContentMapper ,
43+ private LoggerInterface $ logger ,
44+ private PermissionsService $ permissionsService ,
45+ private IUserManager $ userManager ,
46+ private IEventDispatcher $ eventDispatcher ,
47+ private IDBConnection $ dbc ,
48+ private ShareService $ shareService ,
49+ private bool $ isCLI ,
50+ protected INavigationManager $ navigationManager ,
51+ protected IURLGenerator $ urlGenerator ,
6052 ) {
61- $ this ->contextMapper = $ contextMapper ;
62- $ this ->isCLI = $ isCLI ;
63- $ this ->logger = $ logger ;
64- $ this ->contextNodeRelMapper = $ contextNodeRelationMapper ;
65- $ this ->pageMapper = $ pageMapper ;
66- $ this ->pageContentMapper = $ pageContentMapper ;
67- $ this ->permissionsService = $ permissionsService ;
68- $ this ->userManager = $ userManager ;
69- $ this ->eventDispatcher = $ eventDispatcher ;
70- $ this ->dbc = $ dbc ;
71- $ this ->shareService = $ shareService ;
7253 }
54+
7355 use TTransactional;
7456
7557 /**
@@ -93,6 +75,31 @@ public function findForNavigation(string $userId): array {
9375 return $ this ->contextMapper ->findForNavBar ($ userId );
9476 }
9577
78+ public function addToNavigation (string $ userId ): void {
79+ $ contexts = $ this ->findForNavigation ($ userId );
80+ foreach ($ contexts as $ context ) {
81+ $ this ->navigationManager ->add (function () use ($ context ) {
82+ $ iconRelPath = 'material/ ' . $ context ->getIcon () . '.svg ' ;
83+ if (file_exists (__DIR__ . '/../../img/ ' . $ iconRelPath )) {
84+ $ iconUrl = $ this ->urlGenerator ->imagePath (Application::APP_ID , $ iconRelPath );
85+ } else {
86+ $ iconUrl = $ this ->urlGenerator ->imagePath ('core ' , 'places/default-app-icon.svg ' );
87+ }
88+
89+ $ contextUrl = $ this ->urlGenerator ->linkToRoute ('tables.page.context ' , ['contextId ' => $ context ->getId ()]);
90+
91+ return [
92+ 'id ' => Application::APP_ID . '_application_ ' . $ context ->getId (),
93+ 'name ' => $ context ->getName (),
94+ 'href ' => $ contextUrl ,
95+ 'icon ' => $ iconUrl ,
96+ 'order ' => 500 ,
97+ 'type ' => 'link ' ,
98+ ];
99+ });
100+ }
101+ }
102+
96103 /**
97104 * @throws Exception
98105 * @throws InternalError
0 commit comments