mirror of
https://github.com/nextcloud/documentation.git
synced 2026-01-04 02:36:49 +07:00
feat: hello codespell
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
This commit is contained in:
@@ -51,7 +51,7 @@ The code that initializes an app or anything that should run for every request a
|
||||
PSR-3 integration
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
Nextcloud 20 is the first major release of Nextcloud that brings full compatibility with :ref:`psr3`. From this point on it is highly recommended to use this interface mainly as the old ``\OCP\ILogger`` got deprecated with the last remaining changes. The majority of methods are identical between the Nextcloud-specific interface and the PSR one. Pay attention to usages of ``\OCP\ILogger::logException`` as that method does not exist on the PSR logger. However, you can specifcy an ``exception`` key in the ``$context`` argument of any ``\Psr\Log\LoggerInterface`` method and Nextcloud will format it like it did with the old ``logException``.
|
||||
Nextcloud 20 is the first major release of Nextcloud that brings full compatibility with :ref:`psr3`. From this point on it is highly recommended to use this interface mainly as the old ``\OCP\ILogger`` got deprecated with the last remaining changes. The majority of methods are identical between the Nextcloud-specific interface and the PSR one. Pay attention to usages of ``\OCP\ILogger::logException`` as that method does not exist on the PSR logger. However, you can specify an ``exception`` key in the ``$context`` argument of any ``\Psr\Log\LoggerInterface`` method and Nextcloud will format it like it did with the old ``logException``.
|
||||
|
||||
.. _upgrade-psr11:
|
||||
|
||||
|
||||
@@ -80,5 +80,5 @@ Nextcloud 21 is the last major release that supports an app's ``appinfo/database
|
||||
Replaced well-known handler API
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
There was an old, unused and inofficial mechanism to hook into well-known discovery via config settings. This includes ``host-meta``, ``host-meta.json``, ``nodeinfo`` and ``webfinger``. A :ref:`new public API replaces this mechanism<web-host-metadata>` in Nextcloud 21.
|
||||
There was an old, unused and unofficial mechanism to hook into well-known discovery via config settings. This includes ``host-meta``, ``host-meta.json``, ``nodeinfo`` and ``webfinger``. A :ref:`new public API replaces this mechanism<web-host-metadata>` in Nextcloud 21.
|
||||
|
||||
|
||||
@@ -25,12 +25,12 @@ Front-end changes
|
||||
General
|
||||
^^^^^^^
|
||||
|
||||
* With Nextcloud 27 you can also provide module javascript files with the ``.mjs`` file extension. For backwards compatibilty you can provide files with the same name but the ``.js`` file extension which will be loaded for Nextcloud versions before 27.
|
||||
* With Nextcloud 27 you can also provide module javascript files with the ``.mjs`` file extension. For backwards compatibility you can provide files with the same name but the ``.js`` file extension which will be loaded for Nextcloud versions before 27.
|
||||
|
||||
Added APIs
|
||||
^^^^^^^^^^
|
||||
|
||||
* A new Files Router API allows you to control the files router service and update views, querys or param without page reload. See :ref:`FilesAPI`
|
||||
* A new Files Router API allows you to control the files router service and update views, queries or param without page reload. See :ref:`FilesAPI`
|
||||
|
||||
Back-end changes
|
||||
----------------
|
||||
|
||||
@@ -26,7 +26,7 @@ Capabilities
|
||||
|
||||
- ``blacklist_files_regex`` is deprecated now use ``forbidden_filenames`` instead
|
||||
- ``forbidden_filename_characters`` was added to provide a list of characters not allowed within filenames
|
||||
- ``forbidden_filename_extensions`` was added to provide a list of extensions (suffixes) not allwed for filenames
|
||||
- ``forbidden_filename_extensions`` was added to provide a list of extensions (suffixes) not allowed for filenames
|
||||
|
||||
Front-end changes
|
||||
-----------------
|
||||
|
||||
@@ -106,8 +106,8 @@ If your repository lives within the nextcloud organization you need to use an en
|
||||
environment: release
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
In this example we use the "release" environment, open the settings of your repository and open the "Envionments" tab, add a new environment with the name "release", make sure to activate "Required reviewers" only add the people you trust, they will be able to approve a release.
|
||||
Save your rules and at the bottom add the following envionment secrets.
|
||||
In this example we use the "release" environment, open the settings of your repository and open the "Environments" tab, add a new environment with the name "release", make sure to activate "Required reviewers" only add the people you trust, they will be able to approve a release.
|
||||
Save your rules and at the bottom add the following environment secrets.
|
||||
|
||||
* ``APP_PRIVATE_KEY`` your apps private key
|
||||
* ``APP_PUBLIC_CRT`` your apps certificate, this one could be public but for easy usage we add it as a secret
|
||||
@@ -127,7 +127,7 @@ Also make sure to remove ``environment: release`` .
|
||||
|
||||
Makefile changes for code signing
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
As your certificate and your private key now are stored in environment variables you need somehow covert them to a file.
|
||||
As your certificate and your private key now are stored in environment variables you need somehow convert them to a file.
|
||||
One example you may use is provided by the news app.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
@@ -91,7 +91,7 @@ The release process is identical to the one of a final release, only the version
|
||||
|
||||
The updater channel defines if pre-releases are installed by the server. This setting can be found in the admin setting or in the ``config/config.php`` file. The server will install pre-releases if its update channel is set ``beta``, ``daily``, or ``git``. For all other settings, pre-releases will not be installed.
|
||||
|
||||
.. tip:: Don't publish the pre-releases as nightly version on the app store or Nextcloud installations won't be able to update. Releasing with any (alpha-numeric) suffix is sufficient to mark the release as not production ready and instances are still able to update to it.
|
||||
.. tip:: Don't publish the pre-releases as nightly version on the app store or Nextcloud installations won't be able to update. Releasing with any (alphanumeric) suffix is sufficient to mark the release as not production ready and instances are still able to update to it.
|
||||
|
||||
Nightly releases
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Events
|
||||
======
|
||||
|
||||
Events are used to communicate between different aspects of the Nextcloud eco system. They are used in the Nextcloud server internally, for server-to-apps communcation as well as inter-app communication.
|
||||
Events are used to communicate between different aspects of the Nextcloud eco system. They are used in the Nextcloud server internally, for server-to-apps communication as well as inter-app communication.
|
||||
|
||||
|
||||
Overview
|
||||
|
||||
@@ -39,7 +39,7 @@ in the appropriate controller. There is two methods to inject your JavaScript fi
|
||||
you will have to register a Listener in your app ``Appinfo/Application.php``.
|
||||
|
||||
Here is an example for the Files app (which emits the ``LoadAdditionalScriptsEvent``).
|
||||
For more informations about app bootstrapping, see the :ref:`application-php` section.
|
||||
For more information about app bootstrapping, see the :ref:`application-php` section.
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
|
||||
@@ -401,7 +401,7 @@ It makes sense to apply some general tips from the beginning, so you don't have
|
||||
Querying the database provider
|
||||
------------------------------
|
||||
|
||||
If you would like to find out which database your app is runnning on, use the ``IDBConnection::getDatabaseProvider`` method.
|
||||
If you would like to find out which database your app is running on, use the ``IDBConnection::getDatabaseProvider`` method.
|
||||
This can be helpful in cases where specific databases have their own
|
||||
requirements, such as Oracle limiting ``IN``- queries to 1000 expressions.
|
||||
|
||||
@@ -431,7 +431,7 @@ When Oracle (``oci``) is supported (also when you don't list any databases), Nex
|
||||
* String columns can not have a length longer than 4.000 characters, use text instead
|
||||
* Boolean columns can not be NotNull
|
||||
|
||||
Additionally we assume that Oracle support means you are interested in scaling and therefor check additional restrictions of other databases in clustered setups:
|
||||
Additionally we assume that Oracle support means you are interested in scaling and therefore check additional restrictions of other databases in clustered setups:
|
||||
|
||||
* Galera Cluster: All tables must have a primary key
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Note that wiping only works when clients use the login flow so that a dedicated
|
||||
Obtaining wipe status
|
||||
---------------------
|
||||
|
||||
Once a client recieves a 401 or 403 status response it will do a fetch to :code:`<server>/index.php/core/wipe/check` and set the
|
||||
Once a client receives a 401 or 403 status response it will do a fetch to :code:`<server>/index.php/core/wipe/check` and set the
|
||||
token parameter to the apptoken.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
@@ -282,7 +282,7 @@ Supported properties
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:acl-enabled> | Whether ACL is enabled for this group folder. | ``1`` or ``0`` |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:acl-can-manage> | Wether the current user can manager ACL. | ``1`` or ``0`` |
|
||||
| <nc:acl-can-manage> | Whether the current user can manager ACL. | ``1`` or ``0`` |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:acl-list> | Array of ACL rules. | | ``<nc:acl>`` |
|
||||
| | | | ``<nc:acl-mapping-type>group</nc:acl-mapping-type>`` |
|
||||
@@ -296,7 +296,7 @@ Supported properties
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:group-folder-id> | Numerical id of that group folder. | ``1`` |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:lock> | Wether the file is locked. | ``1`` or ``0`` |
|
||||
| <nc:lock> | Whether the file is locked. | ``1`` or ``0`` |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:lock-owner-type> | Type of the owner of the lock. | ``0`` = User |
|
||||
| | | ``1`` = Office or Text |
|
||||
@@ -320,7 +320,7 @@ Supported properties
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:version-label /> | The user-set label for a file. | |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
| <nc:version-author /> | The author's id of a specified file verson. | ``admin``, ``jane``, ``thisAuthorsID`` |
|
||||
| <nc:version-author /> | The author's id of a specified file version. | ``admin``, ``jane``, ``thisAuthorsID`` |
|
||||
+-------------------------------+-------------------------------------------------+--------------------------------------------------------------------------------------+
|
||||
|
||||
Listing folders (rfc4918_)
|
||||
|
||||
@@ -62,7 +62,7 @@ Retrying deadlocks
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
In other cases it might be feasible to just retry the specific database
|
||||
transactions. In this case the exception needs to be catched and the
|
||||
transactions. In this case the exception needs to be caught and the
|
||||
transaction needs to be re-issued. It is recommended to limit the amount
|
||||
if retries in case the deadlock occurring regularly. In this case you
|
||||
may follow the next section.
|
||||
|
||||
@@ -108,7 +108,7 @@ Calendar providers
|
||||
-------------------
|
||||
|
||||
The Nextcloud groupware integration provides access to internal calendars.
|
||||
It is, however, for third party apps possible to provide individual calenders.
|
||||
It is, however, for third party apps possible to provide individual calendars.
|
||||
The section :ref:`Integration of custom calendar providers<calendar-providers>` describes on how to implement a provider within the Nextcloud server.
|
||||
|
||||
Resources
|
||||
|
||||
@@ -115,7 +115,7 @@ Events
|
||||
Network state changes
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Your app can react to lost network connectivity, e.g. to gracefully handle this state where no server interaction is possible. Since the communication with the server mostly requires a valid CSRF token, you might not want to send any request before the token was udpated. Nextcloud can notify you when this has happened. Use the ``@nextcloud/event-bus`` to listen for the ``networkOnline`` and ``networkOffline`` events:
|
||||
Your app can react to lost network connectivity, e.g. to gracefully handle this state where no server interaction is possible. Since the communication with the server mostly requires a valid CSRF token, you might not want to send any request before the token was updated. Nextcloud can notify you when this has happened. Use the ``@nextcloud/event-bus`` to listen for the ``networkOnline`` and ``networkOffline`` events:
|
||||
|
||||
.. code-block:: js
|
||||
|
||||
|
||||
@@ -816,7 +816,7 @@ Extending ``ADiscoverableReferenceProvider`` implies defining those methods:
|
||||
|
||||
* ``getId``: returns an ID which will be used by the Smart Picker to identify this provider
|
||||
* ``getTitle``: returns a (ideally translated) provider title visible in the Smart Picker provider list
|
||||
* ``getOrder``: returns an integer to help sorting the providers. The sort order is later superseeded by last usage timestamp
|
||||
* ``getOrder``: returns an integer to help sorting the providers. The sort order is later superseded by last usage timestamp
|
||||
* ``getIconUrl``: returns the URL of the provider icon, same as the title, the icon will be visible in the provider list
|
||||
|
||||
Declare supported Unified Search providers
|
||||
|
||||
@@ -423,7 +423,7 @@ For **offset-based pagination** you return ``$query->getLimit()`` results and sp
|
||||
|
||||
So the first call will get a cursor of ``null`` and a limit of, say, 20. So the first 20 rows are fetched. The next call will have a cursor of 20, so the 20st to 39th rows are fetched.
|
||||
|
||||
The downside of a offset-based pagination is that when the underlying data changes (new entries are inserted into or deleted from the database, files change), the offset might be out of sync from on request to its successor. Therefor, if possible, a true cursor-based pagination is preferable.
|
||||
The downside of a offset-based pagination is that when the underlying data changes (new entries are inserted into or deleted from the database, files change), the offset might be out of sync from on request to its successor. Therefore, if possible, a true cursor-based pagination is preferable.
|
||||
|
||||
For a **cursor-based pagination** a app-specific property is used to know a reference to the last element of the previous search request. The presumption of this algorithm is that the result set is sorted by an attribute and this attribute is an ``int`` or ``string``. The attribute value of the last element in the result page determines the cursor for the next search request. Again, a small example shall demonstrate how this works.
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ For the settings to show up, three things are necessary:
|
||||
2. A template
|
||||
3. The implementing class specified in the app's info.xml
|
||||
|
||||
Below is an example of an implementor of the ISettings interface. It is based
|
||||
Below is an example of an implementer of the ISettings interface. It is based
|
||||
on the survey_client solution.
|
||||
|
||||
.. code-block:: php
|
||||
@@ -200,7 +200,7 @@ Then, the implementing class should be added to the info.xml. Settings will be
|
||||
registered upon installation and update. When settings are added to an existing,
|
||||
installed, and enabled app, it should be made sure that the version is
|
||||
increased so Nextcloud can register the class. It is only possible to register
|
||||
one ISettings implementor.
|
||||
one ISettings implementer.
|
||||
|
||||
For a more complex example using embedded templates have a look at the
|
||||
implementation of the **user_ldap** app.
|
||||
|
||||
@@ -6,7 +6,7 @@ Task Processing
|
||||
|
||||
.. versionadded:: 30.0.0
|
||||
|
||||
Nextcloud offers a **Task Processing** API which replaces the previously introduced :ref:`Text Processing<text_processing>`, :ref:`TextToImage<text2image>` and :ref:`Speech-To-Text<speech-to-text>` APIs. The overall idea is that there is a central OCP API that apps can use to schedule all kinds of tasks (mainly inteded for AI tasks). To be technology agnostic any other app can provide this task functionality by registering Task Processing providers for specific Task types.
|
||||
Nextcloud offers a **Task Processing** API which replaces the previously introduced :ref:`Text Processing<text_processing>`, :ref:`TextToImage<text2image>` and :ref:`Speech-To-Text<speech-to-text>` APIs. The overall idea is that there is a central OCP API that apps can use to schedule all kinds of tasks (mainly intended for AI tasks). To be technology agnostic any other app can provide this task functionality by registering Task Processing providers for specific Task types.
|
||||
|
||||
Consuming the Task Processing API
|
||||
---------------------------------
|
||||
@@ -110,7 +110,7 @@ For example the TextToImage type defines its input shape as follows:
|
||||
|
||||
The task input and output are always represented by an associative array. In this case, the task input for TextToImage must have an array key named ``'input'`` which must contain a text and an array key named ``'numberOfImages'`` which must contain a number.
|
||||
|
||||
If you want to simply use a task type, you can look up it's input and output shapes above or, if it is not built-in, in the documentation or implementation of the app introducing the task type. If you would like to use task types dynamically without knowing their shapes in advance, you can get their shape information from the ``IManager#getAvailableTaskTypes()`` menthod. The ShapeDescriptor class allows accessing the type data as well as human readable name and description using the ``getName()``, ``getDescription()`` and ``getShapeType()`` methods.
|
||||
If you want to simply use a task type, you can look up it's input and output shapes above or, if it is not built-in, in the documentation or implementation of the app introducing the task type. If you would like to use task types dynamically without knowing their shapes in advance, you can get their shape information from the ``IManager#getAvailableTaskTypes()`` method. The ShapeDescriptor class allows accessing the type data as well as human readable name and description using the ``getName()``, ``getDescription()`` and ``getShapeType()`` methods.
|
||||
|
||||
Shape types
|
||||
~~~~~~~~~~~
|
||||
|
||||
@@ -14,7 +14,7 @@ Consuming the Translation API
|
||||
To consume the Translation API, you will need to :ref:`inject<dependency-injection>` ``\OCP\Translation\ITranslationManager``. This manager offers the following methods:
|
||||
|
||||
* ``hasProviders()`` This method returns a boolean which indicates if any providers have been registered. If this is false you cannot use the Translation feature.
|
||||
* ``getLanguages()`` This method returns a list of ``OCP\Translation\LanguageTuple`` Objects which indicate which langauge pairs are currently supported for translation.
|
||||
* ``getLanguages()`` This method returns a list of ``OCP\Translation\LanguageTuple`` Objects which indicate which language pairs are currently supported for translation.
|
||||
* ``translate(string $text, ?string $fromLanguage, string $toLanguage)`` This method provides the actual translation functionality. Note that, depending on the length of the text you want to translate, this may take longer than the HTTP request timeout or the PHP execution time limit.
|
||||
* ``canDetectLanguage()`` This method returns a boolean indicating whether language auto-detection is possible. If this is true, you can pass ``null`` as a ``$fromLanguage`` parameter to ``translate`` and it will automatically figure out the source language.
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ In order to do so there are two options:
|
||||
* If no generic header is present, you can add yourself with a copyright line as described above. As a rule of thumb, this is the case if you contributed more than seven lines of code.
|
||||
|
||||
An example of a generic license header where adding yourself to the AUTHORS.md
|
||||
file is prefered please see the example below
|
||||
file is preferred please see the example below
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
|
||||
Reference in New Issue
Block a user