nextcloud self-built application

Keywords: PHP xml Javascript github

  1. Create an application example, apply the directory apps/example, the directory structure is as follows
    example/appinfo: Contains application metadata and configuration
    example/css: Contains CSS
    example/img: Contains icons and images
    example/js: Contains JavaScript files
    example/lib: PHP class file containing the application
    example/templates: Contains templates
    example/tests: Includes tests
  2. Create metadata profiles

    Reference website:

       https://docs.nextcloud.com/server/14/developer_manual/app/init.html
       https://docs.nextcloud.com/server/14/developer_manual/app/info.html

    Create the file example/appinfo/info.xml

    <?xml version="1.0"?>
    <info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
          xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
        <id>example</id>
        <name>Example</name>
        <summary>Example summary</summary>
        <description>Example  description</description>
        <version>1.0.0</version>
        <licence>agpl</licence>
        <author>Author</author>
        <category>multimedia</category>
        <bugs>https://github.com/nextcloud/news/issues</bugs>
        <dependencies>
            <nextcloud min-version="10"/>
        </dependencies>
        <!--navigation Navigation entries for applications--> 
        <navigation>
            <name>example</name>
            <route>example.index</route>
            <order>0</order>
        </navigation>
    </info>

    So you can see the example application in the application installation directory.


  3. Create controller example/lib/Controller/ExampleController.php
    https://docs.nextcloud.com/se...

    <?php
    namespace OCA\Example\Controller;
    
    use OCP\AppFramework\Controller;
    use OCP\AppFramework\Http\DataResponse;
    use OCP\IRequest;
    
    class ExampleController extends Controller {
        
        public function __construct(string $appName, IRequest $request){
            parent::__construct($appName, $request);
        }
        /**
     *
     * @return DataResponse
     */
    public function index() {
        return new DataResponse([
            'test'
        ]);
    }

}
```
Uses of Controller Function Annotations:
```
/**
 *@PublicPage public interface
 * @NoCSRFRequired does not do csrf checking
 * @NoAdminRequired don't know what to guess
 * @return DataResponse
 */
```
  1. Create example/lib/AppInfo/Application.php to have a clearer code structure

    <?php
    namespace OCA\Example\AppInfo;
    
    use OCP\AppFramework\App;
    use \OCP\IContainer;
    use OCA\Example\Controller\ExampleController;
    
    
    class Application extends App {
    
        public function __construct(array $urlParams=array()){
            
            parent::__construct('example', $urlParams);
            
        }
        
        public function register(){
            
            $container = $this->getContainer();
    
            /**
         */
        $container->registerService('Example', function(IContainer $c) {
            return new ExampleController(
                $c->query('AppName'),
                $c->query('Request')
            );
        });
        
    }
}
```
  1. Create application load and execution files
    Create the file example/appinfo/app.php

    <?php
    
    $app = new \OCA\Example\AppInfo\Application();
    $app->register();
  2. Create routing
    example/appinfo/routes.php

    <?php
    
    return [
        'routes' => [
            ['name' => 'example#index', 'url' => '/', 'verb' => 'GET']
        ]
    ];
  3. Create view
    To be continued

Posted by awais_ciit on Tue, 29 Jan 2019 18:33:14 -0800