Navigation and pre-app configuration
Adding a navigation entry
Navigation entries for apps can be created by adding a navigation section to the appinfo/info.xml
file, containing the name, order and route the navigation entry should link to. For details on the XML schema check the app store documentation.
<navigation>
<name>MyApp</name>
<route>myapp.page.index</route>
<order>0</order>
</navigation>
Further pre-app configuration
The appinfo/app.php
is the first file that is loaded and executed in Nextcloud. Depending on the purpose of the app it is usually used to setup things that need to be available on every request to the server, like Background jobs (Cron) and hooks registrations. This is how an example appinfo/app.php
could look like:
<?php
// execute OCA\MyApp\BackgroundJob\Task::run when cron is called
\OC::$server->getJobList()->add('OCA\MyApp\BackgroundJob\Task');
// execute OCA\MyApp\Hooks\User::deleteUser before a user is being deleted
\OCP\Util::connectHook('OC_User', 'pre_deleteUser', 'OCA\MyApp\Hooks\User', 'deleteUser');
Initialization events
Often apps do not need to load their JavaScript and CSS on every page. For this purpose there are several events emitted that an app can act upon.
OCAFiles::loadAdditionalScripts (string): loaded on the files list page
OCAFiles_Sharing::loadAdditionalScripts (string): loaded on the public sharing page
OCAFiles_Sharing::loadAdditionalScripts::publicShareAuth (string): loaded on the public share authentication page
OCPAppFrameworkHttpTemplateResponse::EVENT_LOAD_ADDITIONAL_SCRIPTS (constant): loaded when a template response is finished
OCPAppFrameworkHttpTemplateResponse::EVENT_LOAD_ADDITIONAL_SCRIPTS_LOGGEDIN (constant): loaded when a template response is finished for a logged in user
<?php
$dispatcher = \OC::$server->getEventDispatcher();
$dispatcher->addListener(
OCP\AppFramework\Http\TemplateResponse::EVENT_LOAD_ADDITIONAL_SCRIPTS,
function() {
\OCP\Util::addScript('myapp', 'script');
\OCP\Util::addStyle('myapp', 'style');
}
);