Some more cleanup
@@ -16,7 +16,7 @@ By default, Nextcloud can generate previews for the following filetypes:
|
||||
* Cover of MP3 files
|
||||
* Text documents
|
||||
|
||||
.. note:: Older versions of Nextcloud also supported the preview generation
|
||||
.. note:: Technically Nextcloud can also generate the previews
|
||||
of other file types such as PDF, SVG or various office documents.
|
||||
Due to security concerns those providers have been disabled by
|
||||
default and are considered unsupported.
|
||||
|
||||
@@ -82,7 +82,7 @@ Simply go to your Nextcloud Apps page to enable it.
|
||||
.. figure:: ../images/antivirus-app.png
|
||||
|
||||
Configuring ClamAV on Nextcloud
|
||||
------------------------------
|
||||
-------------------------------
|
||||
|
||||
Next, go to your Nextcloud Admin page and set your Nextcloud logging level to
|
||||
Everything.
|
||||
|
||||
@@ -39,7 +39,7 @@ of memcache that best fits your needs. The supported caching backends are:
|
||||
* `Redis <http://redis.io/>`_, PHP module 2.2.5 and up required.
|
||||
For distributed caching.
|
||||
|
||||
Memcaches must be explicitly configured in Nextcloud 8.1 and up by installing
|
||||
Memcaches must be explicitly configured in Nextcloud by installing
|
||||
and enabling your desired cache, and then adding the appropriate entry to
|
||||
``config.php`` (See :doc:`config_sample_php_parameters` for an overview of
|
||||
all possible config parameters).
|
||||
|
||||
@@ -54,7 +54,7 @@ configured on your Personal page. The test message says::
|
||||
|
||||
--
|
||||
Nextcloud
|
||||
web services under your control
|
||||
a safe home for all your data
|
||||
|
||||
Configuring PHP and Sendmail
|
||||
----------------------------
|
||||
|
||||
@@ -27,7 +27,7 @@ Operating system
|
||||
.. _dev-urandom-label:
|
||||
|
||||
Give PHP read access to ``/dev/urandom``
|
||||
*****************************************
|
||||
****************************************
|
||||
|
||||
Nextcloud uses a `RFC 4086 ("Randomness Requirements for Security")`_ compliant
|
||||
mixer to generate cryptographically secure pseudo-random numbers. This means
|
||||
@@ -136,21 +136,21 @@ available SSL ciphers and options depend completely on your environment and
|
||||
thus giving a generic recommendation is not really possible.
|
||||
|
||||
We recommend using the `Mozilla SSL Configuration Generator`_ to generate a
|
||||
suitable configuration suited for your environment, and the free `Qualys
|
||||
SSL Labs Tests`_ gives good guidance on whether your SSL server is correctly
|
||||
suitable configuration suited for your environment, and the free `Qualys SSL Labs Tests`_
|
||||
gives good guidance on whether your SSL server is correctly
|
||||
configured.
|
||||
|
||||
Also ensure that HTTP compression is disabled to mitigate the BREACH attack.
|
||||
|
||||
Use a dedicated domain for Nextcloud
|
||||
-----------------------------------
|
||||
------------------------------------
|
||||
|
||||
Administrators are encouraged to install Nextcloud on a dedicated domain such as
|
||||
cloud.domain.tld instead of domain.tld to gain all the benefits offered by the
|
||||
Same-Origin-Policy.
|
||||
|
||||
Ensure that your Nextcloud instance is installed in a DMZ
|
||||
--------------------------------------------------------
|
||||
---------------------------------------------------------
|
||||
|
||||
As Nextcloud supports features such as Federated File Sharing we do not consider
|
||||
Server Side Request Forgery (SSRF) part of our threat model. In fact, given all our
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
=============================
|
||||
==============================
|
||||
Nextcloud Server Configuration
|
||||
=============================
|
||||
==============================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
@@ -24,4 +24,3 @@ Nextcloud Server Configuration
|
||||
js_css_asset_management_configuration
|
||||
automatic_configuration
|
||||
oc_server_tuning
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
======================
|
||||
=======================
|
||||
Nextcloud Server Tuning
|
||||
======================
|
||||
=======================
|
||||
|
||||
Using cron to perform background jobs
|
||||
-------------------------------------
|
||||
@@ -20,9 +20,8 @@ Caching
|
||||
-------
|
||||
|
||||
Caching improves performance by storing data, code, and other objects in memory.
|
||||
Memory cache configuration for the Nextcloud server is no longer automatic in
|
||||
Nextcloud 8.1 and up, but must be installed and configured. See
|
||||
:doc:`caching_configuration`.
|
||||
Memory cache configuration for the Nextcloud server must be installed and configured.
|
||||
See :doc:`caching_configuration`.
|
||||
|
||||
Using MariaDB/MySQL instead of SQLite
|
||||
-------------------------------------
|
||||
@@ -73,4 +72,4 @@ AES-NI extension:
|
||||
coreinfo, it is maybe disabled in the BIOS.
|
||||
|
||||
* If your environment runs virtualized, check the virtualization vendor for
|
||||
support.
|
||||
support.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Using the occ Command
|
||||
=====================
|
||||
|
||||
Nextcloud's ``occ`` command (Nextcloud console) is Nextcloud's command-line
|
||||
Nextcloud's ``occ`` command (origins from "ownCloud Console") is Nextcloud's command-line
|
||||
interface. You can perform many common server operations with ``occ``, such as
|
||||
installing and upgrading Nextcloud, manage users, encryption, passwords, LDAP
|
||||
setting, and more.
|
||||
@@ -10,9 +10,7 @@ setting, and more.
|
||||
``occ`` is in the :file:`nextcloud/` directory; for example
|
||||
:file:`/var/www/nextcloud` on Ubuntu Linux. ``occ`` is a PHP script. **You must
|
||||
run it as your HTTP user** to ensure that the correct permissions are maintained
|
||||
on your Nextcloud files and directories. In Nextcloud 8.2+ you may run it from
|
||||
any directory (specifying the filepath); in previous releases it had to be
|
||||
run from the :file:`nextcloud/` directory.
|
||||
on your Nextcloud files and directories.
|
||||
|
||||
occ Command Directory
|
||||
---------------------
|
||||
@@ -167,7 +165,6 @@ The ``app`` commands list, enable, and disable apps::
|
||||
app:disable disable an app
|
||||
app:enable enable an app
|
||||
app:getpath Get an absolute path to the app directory
|
||||
(added in 9.0)
|
||||
app:list List all available apps
|
||||
|
||||
List all of your installed apps, and show whether they are
|
||||
@@ -419,7 +416,7 @@ Run this command to migrate calendars::
|
||||
|
||||
sudo -u www-data php occ dav:migrate-calendars [user]
|
||||
|
||||
See `Nextcloud 9.0 - calendar migration analysis
|
||||
See `ownCloud 9.0 - calendar migration analysis
|
||||
<http://morrisjobke.de/2016/03/07/ownCloud-9.0-calendar-migration-analysis/>`_
|
||||
for help with troubleshooting and reporting problems.
|
||||
|
||||
@@ -433,8 +430,6 @@ bernie::
|
||||
addressbook::
|
||||
|
||||
sudo -u www-data php occ dav:sync-system-addressbook
|
||||
|
||||
Added in 9.0.
|
||||
|
||||
.. _database_conversion_label:
|
||||
|
||||
@@ -561,13 +556,11 @@ Synchronize the addressbooks of all federated Nextcloud servers::
|
||||
federation:sync-addressbooks Synchronizes addressbooks of all
|
||||
federated clouds
|
||||
|
||||
In Nextcloud 9.+, servers connected with federation shares can share user
|
||||
In Nextcloud, servers connected with federation shares can share user
|
||||
address books, and auto-complete usernames in share dialogs. Use this command
|
||||
to synchronize federated servers::
|
||||
|
||||
sudo -u www-data php occ federation:sync-addressbooks
|
||||
|
||||
Added in 9.0.
|
||||
|
||||
.. _file_operations_label:
|
||||
|
||||
@@ -580,7 +573,7 @@ File Operations
|
||||
files:cleanup cleanup filecache
|
||||
files:scan rescan filesystem
|
||||
files:transfer-ownership All files and folders are moved to another
|
||||
user - shares are moved as well. (Added in 9.0)
|
||||
user - shares are moved as well.
|
||||
|
||||
The ``files:scan`` command scans for new files and updates the file cache. You
|
||||
may rescan all files, per-user, a space-delimited list of users, and limit the
|
||||
@@ -644,9 +637,6 @@ before removing a user::
|
||||
Files External
|
||||
--------------
|
||||
|
||||
These commands replace the ``data/mount.json`` configuration file used in
|
||||
Nextcloud releases before 9.0.
|
||||
|
||||
.. note::
|
||||
These commands are only available when the "External storage support" app
|
||||
(``files_external``) is enabled.
|
||||
@@ -675,14 +665,12 @@ Nextcloud user.
|
||||
Use ``files_external:import [filename]`` to import legacy JSON configurations,
|
||||
and to copy external mount configurations to another Nextcloud server.
|
||||
|
||||
Added in 9.0.
|
||||
|
||||
.. _integrity_check_label:
|
||||
|
||||
Integrity Check
|
||||
---------------
|
||||
|
||||
Apps which have an official tag MUST be code signed starting with Nextcloud 9.0. Unsigned official apps won't be installable anymore. Code signing is optional for all third-party applications::
|
||||
Apps which have an official tag MUST be code signed with Nextcloud. Unsigned official apps won't be installable anymore. Code signing is optional for all third-party applications::
|
||||
|
||||
integrity
|
||||
integrity:check-app Check app integrity using a signature.
|
||||
@@ -704,8 +692,6 @@ When it returns nothing, your app is signed correctly. When it returns a message
|
||||
``integrity:sign-core`` is for Nextcloud core developers only.
|
||||
|
||||
See :doc:`../issues/code_signing` to learn more.
|
||||
|
||||
Added in 9.0.
|
||||
|
||||
.. _create_javascript_translation_files_label:
|
||||
|
||||
@@ -713,7 +699,7 @@ l10n, Create Javascript Translation Files for Apps
|
||||
--------------------------------------------------
|
||||
|
||||
This command is for app developers to update their translation mechanism from
|
||||
Nextcloud 7 to Nextcloud 8 and later.
|
||||
ownCloud 7 to Nextcloud.
|
||||
|
||||
.. _ldap_commands_label:
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ Your Web server is not yet set up properly to allow file synchronization
|
||||
"Your web server is not yet set up properly to allow file synchronization because
|
||||
the WebDAV interface seems to be broken."
|
||||
|
||||
At the Nextcloud community forums a larger `FAQ <https://forum.owncloud.org/viewtopic.php?f=17&t=7536>`_
|
||||
At the ownCloud community forums a larger `FAQ <https://forum.owncloud.org/viewtopic.php?f=17&t=7536>`_
|
||||
is maintained containing various information and debugging hints.
|
||||
|
||||
Outdated NSS / OpenSSL version
|
||||
@@ -126,4 +126,4 @@ Your database does not run with "READ COMMITED" transaction isolation level
|
||||
"Your database does not run with "READ COMMITED" transaction isolation level.
|
||||
This can cause problems when multiple actions are executed in parallel."
|
||||
|
||||
Please refer to :ref:`db-transaction-label` how to configure your database for this requirement.
|
||||
Please refer to :ref:`db-transaction-label` how to configure your database for this requirement.
|
||||
|
||||
@@ -11,7 +11,7 @@ user.
|
||||
|
||||
.. note:: The PHP LDAP module is required; this is supplied by ``php5-ldap`` on
|
||||
Debian/Ubuntu, and ``php-ldap`` on CentOS/Red Hat/Fedora. PHP 5.4+ is
|
||||
required in Nextcloud 8.1.
|
||||
required in Nextcloud.
|
||||
|
||||
The LDAP application supports:
|
||||
|
||||
@@ -411,9 +411,9 @@ User Home Folder Naming Rule:
|
||||
|
||||
* Example: *cn*
|
||||
|
||||
In new Nextcloud installations (8.0.10, 8.1.5, 8.2.0 and up) the home folder rule is enforced. This means that once you set a home folder naming rule (get a home folder from an LDAP attribute), it must be available for all users. If it isn't available for a user, then that user will not be able to login. Also, the filesystem will not be set up for that user, so their file shares will not be available to other users.
|
||||
In new Nextcloud installations the home folder rule is enforced. This means that once you set a home folder naming rule (get a home folder from an LDAP attribute), it must be available for all users. If it isn't available for a user, then that user will not be able to login. Also, the filesystem will not be set up for that user, so their file shares will not be available to other users.
|
||||
|
||||
In existing Nextcloud installations the old behavior still applies, which is using the Nextcloud username as the home folder when an LDAP attribute is not set. You may change this to enforcing the home folder rule with the ``occ`` command in Nextcloud 8.2, like this example on Ubuntu::
|
||||
In migrated Nextcloud installations the old behavior still applies, which is using the Nextcloud username as the home folder when an LDAP attribute is not set. You may change this to enforcing the home folder rule with the ``occ`` command in Nextcloud, like this example on Ubuntu::
|
||||
|
||||
sudo -u www-data php occ config:app:set user_ldap enforce_home_folder_naming_rule --value=1
|
||||
|
||||
@@ -496,7 +496,7 @@ When the configuration test reports success, save your settings and check if the
|
||||
users and groups are fetched correctly on the Users page.
|
||||
|
||||
Nextcloud Avatar integration
|
||||
---------------------------
|
||||
----------------------------
|
||||
|
||||
Nextcloud supports user profile pictures, which are also called avatars. If a user
|
||||
has a photo stored in the *jpegPhoto* or *thumbnailPhoto* attribute on your LDAP
|
||||
@@ -571,7 +571,7 @@ In case you have a working configuration and want to create a similar one or
|
||||
Now you can modify and enable the configuration.
|
||||
|
||||
Nextcloud LDAP Internals
|
||||
-----------------------
|
||||
------------------------
|
||||
|
||||
Some parts of how the LDAP backend works are described here.
|
||||
|
||||
@@ -598,8 +598,8 @@ testing, you can empty the tables any time. Do not do this in production.
|
||||
Caching
|
||||
^^^^^^^
|
||||
|
||||
The LDAP cache has changed in Nextcloud 8.1. There is no more file cache, but
|
||||
only a memory cache, and you must install and configure the memory cache (see
|
||||
The LDAP information is cached in Nextcloud memory cache, and you must install
|
||||
and configure the memory cache (see
|
||||
:doc:`../configuration_server/caching_configuration`). The Nextcloud **Cache**
|
||||
helps to speed up user interactions and sharing. It is populated on demand,
|
||||
and remains populated until the **Cache Time-To-Live** for each unique request
|
||||
|
||||
@@ -51,7 +51,7 @@ This example shows what the table of users marked as ``deleted`` looks like::
|
||||
|
||||
$ sudo -u www-data php occ ldap:show-remnants
|
||||
+-----------------+-----------------+------------------+--------------------------------------+
|
||||
| Nextcloud name | Display Name | LDAP UID | LDAP DN |
|
||||
| Nextcloud name | Display Name | LDAP UID | LDAP DN |
|
||||
+-----------------+-----------------+------------------+--------------------------------------+
|
||||
| aaliyah_brown | aaliyah brown | aaliyah_brown | uid=aaliyah_brown,ou=people,dc=com |
|
||||
| aaliyah_hammes | aaliyah hammes | aaliyah_hammes | uid=aaliyah_hammes,ou=people,dc=com |
|
||||
@@ -63,7 +63,7 @@ Then you can run ``sudo -u www-data php occ user:delete aaliyah_brown`` to delet
|
||||
user aaliyah_brown. You must use the user's Nextcloud name.
|
||||
|
||||
Deleting Local Nextcloud Users
|
||||
-----------------------------
|
||||
------------------------------
|
||||
|
||||
You may also use ``occ user:delete [user]`` to remove a local Nextcloud user;
|
||||
this removes their user account and their data.
|
||||
|
||||
@@ -23,7 +23,7 @@ See :doc:`../whats_new_admin` for more information on the different Nextcloud
|
||||
editions.
|
||||
|
||||
Nextcloud Videos and Blogs
|
||||
-------------------------
|
||||
--------------------------
|
||||
|
||||
See the `official Nextcloud channel
|
||||
<https://www.youtube.com/channel/UCQjN5Fs5QSz1loJqLb5bkew>`_
|
||||
@@ -41,11 +41,11 @@ user interface, and desktop and mobile clients, please refer to their
|
||||
respective manuals:
|
||||
|
||||
* `Nextcloud User Manual`_
|
||||
* `Nextcloud/Nextcloud Desktop Client`_
|
||||
* `Nextcloud/ownCloud Desktop Client`_
|
||||
* `Nextcloud Android App`_
|
||||
* `Nextcloud iOS App`_
|
||||
|
||||
.. _`Nextcloud User Manual`: https://docs.nextcloud.org/server/9.0/user_manual/
|
||||
.. _`Nextcloud/Nextcloud Desktop Client`: https://doc.owncloud.org/desktop/2.2/
|
||||
.. _`Nextcloud/ownCloud Desktop Client`: https://doc.owncloud.org/desktop/2.2/
|
||||
.. _`Nextcloud Android App`: https://docs.nextcloud.org/android/
|
||||
.. _`Nextcloud iOS App`: https://docs.nextcloud.org/ios/
|
||||
|
||||
@@ -42,7 +42,7 @@ page by default.
|
||||
|
||||
Click the app name to view a description of the app and any of the app settings in the Application View field. Clicking the **Enable** button will enable the app. If the app is not part of the Nextcloud installation, it will be downloaded from the app store, installed and enabled.
|
||||
|
||||
Click the gear icon on the lower left to browse experimental apps in the `Nextcloud Apps
|
||||
Click the gear icon on the lower left to browse experimental apps in the `ownCloud Apps
|
||||
Store <https://apps.owncloud.com/>`_. Install experimental apps at your own risk.
|
||||
|
||||
Sometimes the installation of a third-party app fails silently, possibly because
|
||||
@@ -52,7 +52,7 @@ API. If they are then they will not be installed.
|
||||
|
||||
.. note:: If you would like to create or add your own Nextcloud app, please
|
||||
refer to the `developer manual
|
||||
<https://doc.owncloud.org/server/9.0/developer_manual/app/index.html>`_.
|
||||
<https://docs.nextcloud.org/server/10/developer_manual/app/index.html>`_.
|
||||
|
||||
Using Custom App Directories
|
||||
----------------------------
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
==========================
|
||||
===========================
|
||||
Supported Apps in Nextcloud
|
||||
==========================
|
||||
===========================
|
||||
|
||||
AGPL Apps
|
||||
---------
|
||||
@@ -31,17 +31,3 @@ AGPL Apps
|
||||
* Update Notifications
|
||||
* User External
|
||||
* User LDAP
|
||||
|
||||
Enterprise-Only Apps
|
||||
--------------------
|
||||
|
||||
* Enterprise License Key
|
||||
* Files Drop
|
||||
* File Firewall
|
||||
* LDAP Home Connector
|
||||
* Log user and Sharing actions (1 new app, replacing the 2 former logging apps)
|
||||
* Object Storage (S3)
|
||||
* SharePoint
|
||||
* Shibboleth (SAML)
|
||||
* Windows Network Drives (requires External Storage)
|
||||
* Workflow
|
||||
|
||||
@@ -7,7 +7,7 @@ convenient for scripted operations, headless servers, and sysadmins who prefer
|
||||
the command line. There are three stages to installing Nextcloud via the command
|
||||
line:
|
||||
|
||||
1. Download and install the Nextcloud code and unpack the tarball in the appropriate directories. (See :doc:`source_installation`.)
|
||||
1. Download the Nextcloud code and unpack the tarball in the appropriate directories. (See :doc:`source_installation`.)
|
||||
|
||||
2. Change the ownership of your ``nextcloud`` directory to your HTTP user, like
|
||||
this example for Debian/Ubuntu. You must run ``occ`` as your HTTP user; see
|
||||
|
||||
@@ -17,14 +17,14 @@ FAQ
|
||||
---
|
||||
|
||||
Why Did Nextcloud Add Code Signing?
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
By supporting Code Signing we add another layer of security by ensuring that
|
||||
nobody other than authorized persons can push updates for applications, and
|
||||
ensuring proper upgrades.
|
||||
|
||||
Do We Lock Down Nextcloud?
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The Nextcloud project is open source and always will be. We do not want to
|
||||
make it more difficult for our users to run Nextcloud. Any code signing errors on
|
||||
@@ -170,7 +170,7 @@ In above error output it can be seen that:
|
||||
The solution is to upload the correct "index.php" and "version.php" files, and
|
||||
delete the "test.php" file. For the calendar exception contact the developer of
|
||||
the application. For other means on how to receive support please take a look at
|
||||
https://owncloud.org/support/. After fixing these problems verify by clicking
|
||||
https://nextcloud.com/support/. After fixing these problems verify by clicking
|
||||
"Rescan…".
|
||||
|
||||
.. note:: When using a FTP client to upload those files make sure it is using the
|
||||
@@ -181,7 +181,7 @@ https://owncloud.org/support/. After fixing these problems verify by clicking
|
||||
Rescans
|
||||
-------
|
||||
|
||||
Rescans are triggered at installation, and by updates. You may run scans manually with the ``occ`` command. The first command scans the Nextcloud core files, and the second command scans the named app. There is not yet a command to manually scan all apps::
|
||||
Rescans are triggered at installation, and by updates. You may run scans manually with the ``occ`` command. The first command scans the Nextcloud server files, and the second command scans the named app. There is not yet a command to manually scan all apps::
|
||||
|
||||
occ integrity:check-core
|
||||
occ integrity:check-app $appid
|
||||
|
||||
@@ -20,8 +20,7 @@ back for the help you get. This is the only way to keep a community like
|
||||
Nextcloud healthy and sustainable!
|
||||
|
||||
If you are using Nextcloud in a business or otherwise large scale deployment,
|
||||
note that Nextcloud Inc. offers the `Enterprise Edition`_ with commercial
|
||||
support options.
|
||||
note that Nextcloud GmbH offers commercial support options.
|
||||
|
||||
Bugs
|
||||
----
|
||||
@@ -57,7 +56,7 @@ troubleshooting. Please refer to the :ref:`apps_commands_label` on how
|
||||
to disable an app from command line.
|
||||
|
||||
Nextcloud Logfiles
|
||||
^^^^^^^^^^^^^^^^^
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
In a standard Nextcloud installation the log level is set to ``Normal``. To find
|
||||
any issues you need to raise the log level to ``All`` in your ``config.php``
|
||||
@@ -228,7 +227,7 @@ See:
|
||||
<http://sabre.io/dav/clients/finder/>`_
|
||||
(Describes problems with Finder on various Web servers)
|
||||
|
||||
There is also a well maintained FAQ thread available at the `Nextcloud Forums
|
||||
There is also a well maintained FAQ thread available at the `ownCloud Forums
|
||||
<https://forum.owncloud.org/viewtopic.php?f=17&t=7536>`_
|
||||
which contains various additional information about WebDAV problems.
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ Nextcloud current with these steps:
|
||||
If you are using a Snap package:
|
||||
sudo snap refresh nextcloud
|
||||
|
||||
If you did **not** install via a SNap package:
|
||||
If you did **not** install via a Snap package:
|
||||
|
||||
#. Upgrade your current version to the latest point release
|
||||
#. Upgrade your current version to the next major release
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
===================================
|
||||
====================================
|
||||
How to Upgrade Your Nextcloud Server
|
||||
===================================
|
||||
====================================
|
||||
|
||||
There are three ways to upgrade your Nextcloud server:
|
||||
|
||||
@@ -24,9 +24,9 @@ notification it brings you here, to this page.
|
||||
|
||||
**It is best to keep your Nextcloud server upgraded regularly**, and to install
|
||||
all point releases and major releases without skipping any of them, as skipping
|
||||
releases increases the risk of errors. Major releases are 8.0, 8.1, 8.2, and
|
||||
9.0. Point releases are intermediate releases for each major release. For
|
||||
example, 8.0.9 and 8.1.3 are point releases. **Skipping major releases is not
|
||||
releases increases the risk of errors. Major releases are 9, 10, and
|
||||
11. Point releases are intermediate releases for each major release. For
|
||||
example, 9.0.52 and 10.0.2 are point releases. **Skipping major releases is not
|
||||
supported.**
|
||||
|
||||
**Upgrading is disruptive**. Your Nextcloud server will be put into maintenance
|
||||
@@ -72,12 +72,3 @@ Nextcloud release. Any apps that are not developed by Nextcloud show a 3rd party
|
||||
designation. **Install unsupported apps at your own risk**. Then, before the
|
||||
upgrade, all 3rd party apps must be disabled. After the upgrade is complete you
|
||||
may re-enable them.
|
||||
|
||||
Debian Migration to Official Nextcloud Packages
|
||||
----------------------------------------------
|
||||
|
||||
As of March 2016 Debian will not include Nextcloud packages. Debian users can
|
||||
migrate to the official Nextcloud packages by following this guide,
|
||||
`Upgrading Nextcloud on Debian Stable to official packages
|
||||
<https://owncloud.org/blog/upgrading-owncloud-on-debian-stable-to-official-
|
||||
packages/>`_.
|
||||
|
||||
@@ -14,7 +14,7 @@ to be monitored, and provide guidance on what to look for in Nextcloud in an
|
||||
enterprise installation.
|
||||
|
||||
Nextcloud Deployment Architecture
|
||||
================================
|
||||
=================================
|
||||
|
||||
Before discussing how to monitor Nextcloud, it is important to understand the architecture of a
|
||||
typical Nextcloud deployment. These monitoring best practices are developed based on the use of load
|
||||
@@ -26,7 +26,7 @@ operations are available, and that Nextcloud is simply a new target for these to
|
||||
|
||||
|
||||
The Important Components of Nextcloud
|
||||
====================================
|
||||
=====================================
|
||||
|
||||
Nextcloud is a PHP application that depends on a filesystem for file storage, and a database for storing
|
||||
user and file meta data, as well as some application specific information.
|
||||
@@ -55,10 +55,10 @@ server is operating properly.
|
||||
|
||||
|
||||
Nextcloud.log
|
||||
------------
|
||||
-------------
|
||||
|
||||
Nextcloud also provides a built in logging function. If the Nextcloud Enterprise Edition logging applications
|
||||
are enabled, this file will track user logins and shared file activity. If these logging applications are
|
||||
Nextcloud also provides a built in logging function. If the Nextcloud logging application
|
||||
is enabled, this file will track user logins and shared file activity. If these logging applications are
|
||||
not enabled, this log file still tracks basic Nextcloud health. Given the potential for this file to get
|
||||
quite large, the log file should be rotated on a daily basis, and given the importance of the error information
|
||||
in the log file, this should be integrated with an enterprise log manager.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
================
|
||||
=================
|
||||
Theming Nextcloud
|
||||
================
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
================================
|
||||
=================================
|
||||
Nextcloud |version| Release Notes
|
||||
================================
|
||||
=================================
|
||||
|
||||
|
||||
Changes in 10.0
|
||||
---------------
|
||||
Changes in 10
|
||||
-------------
|
||||
|
||||
tbd
|
||||
tbd
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
===========================================
|
||||
============================================
|
||||
What's New for Admins in Nextcloud |version|
|
||||
===========================================
|
||||
============================================
|
||||
|
||||
See the `Nextcloud 10 Features page
|
||||
<https://github.com/nextcloud/server/wiki/Nextcloud-10-Features>`_ on Github for a
|
||||
|
||||
@@ -11,7 +11,7 @@ For third party application developers, Nextcloud offers the Nextcloud Android
|
||||
library under the MIT license.
|
||||
|
||||
Android Nextcloud Client development
|
||||
-----------------------------------
|
||||
------------------------------------
|
||||
|
||||
If you are interested in working on the Nextcloud android client, you can find
|
||||
the source code `in github <https://github.com/nextcloud/android/>`_. The
|
||||
@@ -22,7 +22,7 @@ You might want to start with doing one or two `starter issue <https://github.com
|
||||
to get into the code and note our :doc:`../general/index`
|
||||
|
||||
Nextcloud Android Library
|
||||
------------------------
|
||||
-------------------------
|
||||
|
||||
This document will describe how to the use Nextcloud Android Library. The
|
||||
Nextcloud Android Library allows a developer to communicate with any Nextcloud
|
||||
|
||||
@@ -4,35 +4,6 @@ Changelog
|
||||
|
||||
.. sectionauthor:: Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
|
||||
The following changes went into Nextcloud 8.1:
|
||||
|
||||
|
||||
Breaking changes
|
||||
================
|
||||
The following breaking changes usually do only affect applications which misuse existing API or do not follow best practises.
|
||||
|
||||
* The default Content-Security-Policy of AppFramework apps is now stricter but can be adjusted by developers. See https://github.com/owncloud/core/pull/13989
|
||||
* Parameters passed to OC.generateUrl are now automatically encoded, this behaviour can be adjusted by developers. See https://github.com/owncloud/core/pull/14266
|
||||
* Views constructed by OC\Files\View do not allow directory traversals anymore in the constructor. See https://github.com/owncloud/core/pull/14342
|
||||
* The CSRF token may now contain not URL compatible characters (for example the plus sign: +), developers have to ensure that the CSRF token is encoded properly before using it in URIs.
|
||||
* The default RNG now returns all valid base64 characters
|
||||
* OC.msg escapes the message now by default (see https://github.com/owncloud/core/pull/14208)
|
||||
|
||||
|
||||
Features
|
||||
========
|
||||
* There is a new :doc:`OCSResponse and OCSController <controllers>` which allows you to easily migrate OCS code to the App Framework. This was added purely for compatibility reasons and the preferred way of doing APIs is using a :doc:`api`
|
||||
* You can now stream files in PHP by using the built in :doc:`StreamResponse <controllers>`.
|
||||
* For more advanced usecases you can now implement the :doc:`CallbackResponse <controllers>` interface which allows your response to do its own response rendering
|
||||
* Custom preview providers can now be implemented using **OCP\IPreview::registerProvider**
|
||||
* There is a mightier class for remote web service requests at **OCP\Http\Client**
|
||||
* **OCP\\IImage** allows now basic image manipulations such as resizing or rotating
|
||||
* **OCP\\Mail** allows sending mails in an object-oriented way now
|
||||
* **OCP\\IRequest** contains more methods now such as getting the request URI
|
||||
* **OCP\\Encryption** allows writing custom encryption backends
|
||||
|
||||
Furthermore all public APIs have received a **@since** annotation allowing developers to see when a function has been introduced.
|
||||
|
||||
Deprecations
|
||||
============
|
||||
This is a deprecation roadmap which lists all current deprecation targets and will be updated from release to release. This lists the version when a specific method or class will be removed.
|
||||
|
||||
@@ -6,12 +6,12 @@ Classloader
|
||||
|
||||
The classloader is provided by Nextcloud and loads all your classes automatically. The only thing left to include by yourself are 3rdparty libraries. Those should be loaded in :file:`lib/AppInfo/Application.php`.
|
||||
|
||||
.. versionadded:: 9.1
|
||||
.. versionadded:: 10
|
||||
|
||||
PSR-4 Autoloading
|
||||
-----------------
|
||||
|
||||
Since Nextcloud 9.1 there is a PSR-4 autoloader in place. The namespace **\\OCA\\MyApp**
|
||||
Since Nextcloud 10 there is a PSR-4 autoloader in place. The namespace **\\OCA\\MyApp**
|
||||
is mapped to :file:`/apps/myapp/lib/`. Afterwards normal PSR-4 rules apply, so
|
||||
a folder is a namespace section in the same casing and the class name matches
|
||||
the file name.
|
||||
@@ -37,7 +37,7 @@ thereby mapped to :file:`/apps/myapp/tests/`.
|
||||
Legacy Autoloading
|
||||
------------------
|
||||
|
||||
The legacy classloader, deprecated since 9.1, is still in place and works like this:
|
||||
The legacy classloader, deprecated since 10, is still in place and works like this:
|
||||
|
||||
* Take the full qualifier of a class::
|
||||
|
||||
|
||||
@@ -16,14 +16,14 @@ FAQ
|
||||
---
|
||||
|
||||
Why Did Nextcloud Add Code Signing?
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
By supporting Code Signing we add another layer of security by ensuring that
|
||||
nobody other than authorized persons can push updates for applications, and
|
||||
ensuring proper upgrades.
|
||||
|
||||
Do We Lock Down Nextcloud?
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The Nextcloud project is open source and always will be. We do not want to make
|
||||
it more difficult for our users to run Nextcloud. Any code signing errors on
|
||||
@@ -104,8 +104,8 @@ still be ensured by having a new certificate issued.
|
||||
How Code Signing Affects Apps in the App Store
|
||||
----------------------------------------------
|
||||
|
||||
- Apps which have an ``official`` tag **MUST** be code signed starting with
|
||||
Nextcloud 9.0. Unsigned ``official`` apps won't be installable anymore.
|
||||
- Apps which have an ``official`` tag **MUST** be code signed.
|
||||
Unsigned ``official`` apps won't be installable anymore.
|
||||
- Apps which have been signed in a previous release **MUST** be code-signed in
|
||||
all future releases as well, otherwise the update will be refused.
|
||||
|
||||
|
||||
@@ -153,9 +153,8 @@ So basically the container is used as a giant factory to build all the classes t
|
||||
|
||||
Use automatic dependency assembly (recommended)
|
||||
===============================================
|
||||
.. versionadded:: 8
|
||||
|
||||
Since Nextcloud 8 it is possible to omit the **lib/AppInfo/Application.php** and use automatic dependency assembly instead.
|
||||
In Nextcloud it is possible to omit the **lib/AppInfo/Application.php** and use automatic dependency assembly instead.
|
||||
|
||||
How does automatic assembly work
|
||||
--------------------------------
|
||||
|
||||
@@ -26,7 +26,7 @@ To create a controller, simply extend the Controller class and create a method t
|
||||
|
||||
|
||||
Connecting a controller and a route
|
||||
====================================
|
||||
===================================
|
||||
To connect a controller and a route the controller has to be registered in the :doc:`container` like this:
|
||||
|
||||
.. code-block:: php
|
||||
@@ -422,8 +422,6 @@ By default there is only a responder for JSON but more can be added easily:
|
||||
|
||||
.. note:: The above example would only return XML if the **format** parameter was *xml*. If you want to return an XMLResponse regardless of the format parameter, extend the Response class and return a new instance of it from the controller method instead.
|
||||
|
||||
.. versionadded:: 8
|
||||
|
||||
Because returning values works fine in case of a success but not in case of failure that requires a custom HTTP error code, you can always wrap the value in a **DataResponse**. This works for both normal responses and error responses.
|
||||
|
||||
.. code-block:: php
|
||||
@@ -557,7 +555,6 @@ Creating a custom XMLResponse class could look like this:
|
||||
|
||||
Streamed and lazily rendered responses
|
||||
--------------------------------------
|
||||
.. versionadded:: 8.1
|
||||
|
||||
By default all responses are rendered at once and sent as a string through middleware. In certain cases this is not a desirable behavior, for instance if you want to stream a file in order to save memory. To do that use the now available **OCP\\AppFramework\\Http\\StreamResponse** class:
|
||||
|
||||
@@ -602,7 +599,6 @@ If you want to use a custom, lazily rendered response simply implement the inter
|
||||
|
||||
Modifying the Content Security Policy
|
||||
-------------------------------------
|
||||
.. versionadded:: 8.1
|
||||
|
||||
By default Nextcloud disables all resources which are not served on the same domain, forbids cross domain requests and disables inline CSS and JavaScript by setting a `Content Security Policy <https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Introducing_Content_Security_Policy>`_. However if an app relies on thirdparty media or other features which are forbidden by the current policy the policy can be relaxed.
|
||||
|
||||
@@ -655,8 +651,6 @@ The following policy for instance allows images, audio and videos from other dom
|
||||
|
||||
OCS
|
||||
---
|
||||
.. versionadded:: 8.1
|
||||
|
||||
.. note:: This is purely for compatibility reasons. If you are planning to offer an external API, go for a :doc:`api` instead.
|
||||
|
||||
In order to ease migration from OCS API routes to the App Framework, an additional controller and response have been added. To migrate your API you can use the **OCP\\AppFramework\\OCSController** baseclass and return your data in the form of an array in the following way:
|
||||
|
||||
@@ -44,7 +44,7 @@ App Development
|
||||
Intro
|
||||
=====
|
||||
|
||||
Before you start, please check if there already is a similar app in the `App Store <https://apps.owncloud.com>`_, or an official `Nextcloud app <https://github.com/owncloud/core/wiki/Maintainers#apps-repo>`_ (see Apps Repo and Other app repos) that you could contribute to. Also, feel free to communicate your idea and plans to the `user mailing list <https://mailman.owncloud.org/mailman/listinfo/user>`_ or `developer mailing list <https://mailman.owncloud.org/mailman/listinfo/devel>`_ so other contributors might join in.
|
||||
Before you start, please check if there already is a similar app in the `App Store <https://apps.owncloud.com>`_ or the `GitHub organisation <https://github.com/nextcloud/>`_ that you could contribute to. Also, feel free to communicate your idea and plans in the `forum <https://help.nextcloud.com/>`_ so other contributors might join in.
|
||||
|
||||
Then, please make sure you have set up a development environment:
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ The :file:`appinfo/info.xml` contains metadata about the app:
|
||||
<version>1.0</version>
|
||||
<licence>AGPL</licence>
|
||||
<author>Your Name</author>
|
||||
<requiremin>5</requiremin>
|
||||
<namespace>YourAppsNamespace</namespace>
|
||||
|
||||
<types>
|
||||
@@ -54,6 +53,7 @@ The :file:`appinfo/info.xml` contains metadata about the app:
|
||||
</dependencies>
|
||||
|
||||
<!-- deprecated, just for reference -->
|
||||
<requiremin>5</requiremin>
|
||||
<public>
|
||||
<file id="caldav">appinfo/caldav.php</file>
|
||||
</public>
|
||||
@@ -92,16 +92,10 @@ licence
|
||||
* AGPL 3 (recommended)
|
||||
* MIT
|
||||
|
||||
If a proprietary/non AGPL compatible licence should be used, the `Nextcloud Enterprise Edition <https://owncloud.com/overview/enterprise-edition>`_ must be used.
|
||||
|
||||
author
|
||||
------
|
||||
**Required**: The name of the app author or authors.
|
||||
|
||||
requiremin
|
||||
----------
|
||||
Required if not added in the **<dependencies>** tag. The minimal version of Nextcloud.
|
||||
|
||||
namespace
|
||||
---------
|
||||
Required if routes.php returns an array. If your app is namespaced like **\\OCA\\MyApp\\Controller\\PageController** the required namespace value is **MyApp**. If not given it tries to default to the first letter upper cased app id, e.g. **myapp** would be tried under **Myapp**
|
||||
@@ -119,7 +113,6 @@ Nextcloud allows to specify four kind of ``types``. Currently supported ``types`
|
||||
* **logging**: apps which implement a logging system
|
||||
|
||||
* **prevent_group_restriction**: apps which can not be enabled for specific groups (e.g. notifications app).
|
||||
Introduced with Nextcloud 9.0, can also be used in earlier versions, but the functionality is ignored.
|
||||
|
||||
.. note::
|
||||
|
||||
@@ -185,7 +178,7 @@ Defines the required target operating system the app can run on. Valid values ar
|
||||
|
||||
owncloud
|
||||
========
|
||||
Defines minimum and maximum versions of the Nextcloud core. In case undefined the values will be taken from the tag 'requiremin'.
|
||||
**Required**: Defines minimum and maximum versions of the Nextcloud core. In case undefined the values will be taken from the tag 'requiremin'.
|
||||
|
||||
|
||||
Deprecated
|
||||
@@ -196,6 +189,10 @@ The following sections are just listed for reference and should not be used beca
|
||||
* **public/remote**: Use :doc:`api` instead because you'll have to use :doc:`../core/externalapi` which is known to be buggy (works only properly with GET/POST)
|
||||
* **standalone/default_enable**: They tell core what do on setup, you will not be able to even activate your app if it has those entries. This should be replaced by a config file inside core.
|
||||
|
||||
requiremin
|
||||
==========
|
||||
Deprecated in favor of the **<dependencies>** tag.
|
||||
|
||||
public
|
||||
======
|
||||
Used to provide a public interface (requires no login) for the app. The id is appended to the URL **/owncloud/index.php/public**. Example with id set to 'calendar'::
|
||||
|
||||
@@ -4,7 +4,7 @@ Translation
|
||||
|
||||
.. sectionauthor:: Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
|
||||
Nextcloud's translation system is powered by `Transifex <https://www.transifex.com/projects/p/owncloud/>`_. To start translating sign up and enter a group. If your community app should be added to Transifex contact one of the `core developers <https://owncloud.org/contact/>`_ to set it up for you.
|
||||
Nextcloud's translation system is powered by `Transifex <https://www.transifex.com/nextcloud/nextcloud/>`_. To start translating sign up and enter a group. If your app should be added to Transifex just post a new topic in the `translations forum <https://help.nextcloud.com/c/translations>`_ and we will set it up for you.
|
||||
|
||||
PHP
|
||||
===
|
||||
|
||||
@@ -5,7 +5,7 @@ App store publishing
|
||||
.. sectionauthor:: Jos Poortvliet <jospoortvliet@gmail.com>
|
||||
|
||||
The Nextcloud App Store
|
||||
----------------------
|
||||
-----------------------
|
||||
The Nextcloud app store is build into Nextcloud to allow you to get your apps to users as easily and safely as possible. The app store and the process of publishing apps aims to be:
|
||||
|
||||
* secure
|
||||
|
||||
@@ -13,7 +13,7 @@ After the `development tool <https://github.com/nextcloud/ncdev/blob/master/READ
|
||||
|
||||
ncdev setup core --dir nextcloud --branch $BRANCH
|
||||
|
||||
.. note:: $BRANCH is the desired Nextcloud branch (e.g. stable7 for Nextcloud 7, stable8 for Nextcloud 8, etc)
|
||||
.. note:: $BRANCH is the desired Nextcloud branch (e.g. stable9 for Nextcloud 9, stable10 for Nextcloud 10, etc)
|
||||
|
||||
First you want to enable debug mode to get proper error messages. To do that set ``debug`` to ``true`` in the **nextcloud/config/config.php** file::
|
||||
|
||||
|
||||
@@ -13,20 +13,15 @@ Bugtracker
|
||||
Thank you for helping Nextcloud by reporting bugs. Before submitting an issue, please read
|
||||
`Issue submission guidelines`_ first.
|
||||
|
||||
* If the issue is with the Nextcloud server, report it to the `Core repository`_
|
||||
* If the issue is with the Nextcloud server, report it to the `Server repository`_
|
||||
* If the issue is with the Nextcloud client, report it to the `Client repository`_
|
||||
* If the issue with with an Nextcloud app, report it to where that app is developed
|
||||
* If the app is listed in our `main github repository`_ report it to the correct sub
|
||||
repository
|
||||
* If the app is listed in the `apps repository`_ report it there
|
||||
|
||||
Please note that the mailing list should not be used for bug reports, as it is hard to track them there.
|
||||
|
||||
|
||||
|
||||
|
||||
.. _Issue submission guidelines: https://github.com/owncloud/core/blob/master/CONTRIBUTING.md#submitting-issues
|
||||
.. _Core repository: https://github.com/owncloud/core/issues
|
||||
.. _Client repository: https://github.com/owncloud/client/issues
|
||||
.. _main github repository: https://github.com/owncloud
|
||||
.. _apps repository: https://github.com/owncloud/apps/issues
|
||||
.. _Issue submission guidelines: https://github.com/nextcloud/server/blob/master/CONTRIBUTING.md#submitting-issues
|
||||
.. _Server repository: https://github.com/nextcloud/server/issues
|
||||
.. _Client repository: https://github.com/nextcloud/client/issues
|
||||
.. _main github repository: https://github.com/nextcloud
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
=====================
|
||||
======================
|
||||
Nextcloud Bug Triaging
|
||||
=====================
|
||||
======================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
@@ -50,7 +50,7 @@ Github offers several search queries which can be useful to find a list of bugs
|
||||
|
||||
* `The bugs least recently commented on <https://github.com/issues?q=is%3Aissue+user%3Anextcloud+is%3Aopen+sort%3Aupdated-asc++is%3Apublic+>`_
|
||||
* `Least commented issues <https://github.com/issues?q=is%3Aissue+user%3Anextcloud+is%3Aopen+no%3Aassignee+no%3Amilestone+no%3Alabel+sort%3Acomments-asc+>`_
|
||||
* `Bugs which need info <https://github.com/issues?q=is%3Aissue+user%3Anextcloudcloud+is%3Aopen+label%3A%22Needs+info%22+sort%3Acreated-asc+>`_
|
||||
* `Bugs which need info <https://github.com/issues?q=is%3Aissue+user%3Anextcloud+is%3Aopen+label%3A%22Needs+info%22+sort%3Acreated-asc+>`_
|
||||
|
||||
But there are more methods. For example, if you are a user of Nextcloud with a specific setup like using nginx as Web server or dropbox as storage, or using the encryption app, you could look for bugs with these keywords. You can then use your knowledge of your installation and your installation itself to see if bugs are (still) valid or reproduce them.
|
||||
|
||||
@@ -116,9 +116,9 @@ Finalizing and tagging
|
||||
----------------------
|
||||
Once you are done reproducing an issue, it is time to finish up and make clear to the developers what they can do:
|
||||
|
||||
* If it is a genuine bug (or you are pretty sure it is) add the 'Bug' tag.
|
||||
* If it is a genuine feature request (or you are pretty sure it is) add the 'enhancement' tag.
|
||||
* If the issue is clearly related to something specific, @mention a maintainer. examples: @schiesbn for encryption, @blizzz for LDAP, @PVince81 for quota stuff... You can find a `list of maintainers here <https://github.com/nextcloud/server/wiki/Maintainers>`_.
|
||||
* If it is a genuine bug (or you are pretty sure it is) add the 'bug' label.
|
||||
* If it is a genuine feature request (or you are pretty sure it is) add the 'enhancement' label.
|
||||
* If the issue is clearly related to something specific, set the specific feature label and @mention a maintainer
|
||||
|
||||
Now, the developers can pick the issue up. Note that while we wish we would always pick up and solve problems promptly, not all areas of Nextcloud get the same amount of attention and contribution, so this can occasionally take a long time.
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ App config
|
||||
"dbtype" => "sqlite",
|
||||
|
||||
/* Name of the Nextcloud database */
|
||||
"dbname" => "owncloud",
|
||||
"dbname" => "nextcloud",
|
||||
|
||||
/* User to access the Nextcloud database */
|
||||
"dbuser" => "",
|
||||
@@ -102,7 +102,7 @@ App config
|
||||
You must have at least 1 app folder writable or you must set the parameter : appstoreenabled to false
|
||||
*/
|
||||
array(
|
||||
'path'=> '/var/www/owncloud/apps',
|
||||
'path'=> '/var/www/nextcloud/apps',
|
||||
'url' => '/apps',
|
||||
'writable' => true,
|
||||
),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Theming Nextcloud
|
||||
================
|
||||
=================
|
||||
Themes can be used to customize the look and feel of Nextcloud.
|
||||
Themes can relate to the following topics of owncloud:
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ PHP unit testing
|
||||
Getting PHPUnit
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Nextcloud uses PHPUnit >= 3.7 for unit testing.
|
||||
Nextcloud uses PHPUnit >= 4.8 for unit testing.
|
||||
|
||||
To install it, either get it via your packagemanager::
|
||||
|
||||
@@ -92,7 +92,7 @@ so the next test can run without side effects, like remaining files and entries
|
||||
For more resources on PHPUnit visit: http://www.phpunit.de/manual/current/en/writing-tests-for-phpunit.html
|
||||
|
||||
Bootstrapping Nextcloud
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
If you use Nextcloud functions or classes in your code, you'll need to make them available to your test by bootstrapping Nextcloud.
|
||||
|
||||
To do this, you'll need to provide the ``--bootstrap`` argument when running PHPUnit
|
||||
@@ -115,7 +115,7 @@ adjust your php.ini and file rights.
|
||||
su -c "chmod a+w data/owncloud.log"
|
||||
|
||||
Running unit tests for the Nextcloud core project
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
The core project provides a script that runs all the core unit tests using different database backends like sqlite, mysql, pgsql, oci (for Oracle)::
|
||||
|
||||
./autotest.sh
|
||||
|
||||
@@ -23,38 +23,21 @@ We assign labels to issues and pull requests to make it easy to find them and to
|
||||
|
||||
The most important labels and their meaning:
|
||||
|
||||
* #backport-request - the pull requests also needs to be applied to older Nextcloud versions
|
||||
* #bug - this issue is a bug
|
||||
* #enhancement - this issue is a feature request/idea for improvement of Nextcloud
|
||||
* #design - this needs help from the design team or is a design-related issue/pull request
|
||||
* #sharing - this issue or PR is related to sharing
|
||||
* #technical debt - this issue or PR is about `technical debt <http://en.wikipedia.org/wiki/Technical_debt>`_
|
||||
* #sev1-critical #sev2-high #sev3-medium #sev4-low signify how important the bug is.
|
||||
* #p1-urgent #p2-high #p3-medium #p4-low signify the priority of the bug.
|
||||
* #Junior Job - these are issues which are relatively easy to solve and ideal for people who want to learn how to code in Nextcloud
|
||||
* Tags showing the state of the issue or PR, numbered 1-6:
|
||||
* #starter issue - these are issues which are relatively easy to solve and ideal for people who want to learn how to code in Nextcloud
|
||||
* #needs info - this issue needs further information from the reporter, see `triaging <../bugtracker/triaging.html>`_
|
||||
* #high #medium #low signify how important the bug is.
|
||||
* Tags showing the state of the issue or PR, numbered 0-4:
|
||||
* #0 - Needs triage - ready to start development on this
|
||||
* #1 - To develop - ready to start development on this
|
||||
* #2 - Developing - development in progress
|
||||
* #3 - To Review - ready for review
|
||||
* #4 - To Release - reviewed PR that awaits unfreeze of a branch to get merged
|
||||
* App tags: #app:files #app:user_ldap #app:files_versions and so on. These tags indicate the app that is impacted by the issue or which the PR is related to
|
||||
* Settings tags: #settings:personal #settings:apps #settings:admin and so on. These tags indicate the settings area that is impacted by the issue or which the PR is related to
|
||||
* db tags: #db:mysql #db:sqlite #db:postgresql and so on. These tags indicate the database that is impacted by the issue or which the PR is related to
|
||||
* Browser tags: #browser:ie #browser:safari and so on. These tags indicate the browser that is impacted by the issue or which the PR is related to
|
||||
* Component tags: #comp:filesystem #comp:javascript and so on. These tags indicate the components of Nextcloud impacted by the issue or which the PR is related to
|
||||
* Development tool tags: #dev:unit_testing #dev:public_API and so on. These tags indicate development-specific tools like those for testing and public developer-facing API's impacted by the issue or which the PR is related
|
||||
* Feature tags: #feature:something. These tags indicate the features across apps and components which are impacted by the issue or which the PR is related to
|
||||
* #triage - this issue *has to be* `triaged <../bugtracker/triaging.html>`_
|
||||
* #needs info - this issue needs further information from the reporter, see `triaging <../bugtracker/triaging.html>`_ old tag is #clarification request, please don't use that one anymore.
|
||||
* #discussion - this issue needs to be discussed
|
||||
* #security - this is a security related issue
|
||||
* #windows server - this is related to windows server
|
||||
* #research - this item requires some research before it can continue
|
||||
* #packaging - this is related to packaging
|
||||
* #theming - refers to theming issues or improvements
|
||||
* #l10n - refers to translation issues or improvements
|
||||
* #release note - relevant for the release notes
|
||||
* #privacy - refers to issues that might lead to privacy concerns
|
||||
* #won't fix - This problem won't be fixed (can be for a wide variety of reasons...)
|
||||
* Feature tags: #feature: something. These tags indicate the features across apps and components which are impacted by the issue or which the PR is related to
|
||||
|
||||
If you want a label not in the list above, please first discuss on the mailing list.
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ When debug mode is enabled in Nextcloud, a variety of debugging features are ena
|
||||
Identifying errors
|
||||
------------------
|
||||
|
||||
Nextcloud uses custom error PHP handling that prevents errors being printed to Web server log files or command line output. Instead, errors are generally stored in Nextcloud's own log file, located at: :file:`/data/owncloud.log`
|
||||
Nextcloud uses custom error PHP handling that prevents errors being printed to Web server log files or command line output. Instead, errors are generally stored in Nextcloud's own log file, located at: :file:`/data/nextcloud.log`
|
||||
|
||||
|
||||
Debugging variables
|
||||
|
||||
@@ -11,7 +11,7 @@ Please follow the steps on this page to set up your development environment.
|
||||
Set up Web server and database
|
||||
==============================
|
||||
|
||||
First `set up your Web server and database <https://doc.owncloud.org/server/9.0/admin_manual/installation/index.html>`_ (**Section**: Manual Installation - Prerequisites).
|
||||
First `set up your Web server and database <https://docs.nextcloud.org/server/9/admin_manual/installation/index.html>`_ (**Section**: Manual Installation - Prerequisites).
|
||||
|
||||
.. TODO ON RELEASE: Update version number above on release
|
||||
|
||||
@@ -20,7 +20,7 @@ Get the source
|
||||
|
||||
There are two ways to obtain Nextcloud sources:
|
||||
|
||||
* Using the `stable version <https://doc.owncloud.org/server/9.0/admin_manual/#installation>`_
|
||||
* Using the `stable version <https://docs.nextcloud.org/server/9/admin_manual/#installation>`_
|
||||
.. TODO ON RELEASE: Update version number above on release
|
||||
* Using the development version from `GitHub`_ which will be explained below.
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Performance Considerations
|
||||
==========================
|
||||
|
||||
.. sectionauthor:: Frank Karlitschek <frank@owncloud.org>
|
||||
.. sectionauthor:: Frank Karlitschek <frank@karlitschek.com>
|
||||
|
||||
This document introduces some common considerations and tips on improving performance of Nextcloud. Speed of Nextcloud is important - nobody likes to wait and often, what is *just slow* for a small amount of data will become *unusable* with a large amount of data. Please keep these tips in mind when developing for Nextcloud and consider reviewing your app to make it faster.
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
.. _contents:
|
||||
|
||||
================================
|
||||
=================================
|
||||
Nextcloud Developer Documentation
|
||||
================================
|
||||
=================================
|
||||
|
||||
.. _Nextcloud appstore: https://apps.owncloud.com/
|
||||
.. _Translation: https://www.transifex.com/projects/p/owncloud/
|
||||
.. _Documentation: https://github.com/owncloud/documentation#owncloud-documentation
|
||||
.. _ownCloud appstore: https://apps.owncloud.com/
|
||||
.. _Translation: https://www.transifex.com/nextcloud/nextcloud/
|
||||
.. _Documentation: https://github.com/nextcloud/documentation
|
||||
|
||||
Table of Contents
|
||||
=================
|
||||
@@ -17,7 +17,6 @@ Table of Contents
|
||||
general/index
|
||||
app/index
|
||||
android_library/index
|
||||
ios_library/index
|
||||
core/index
|
||||
bugtracker/index
|
||||
commun/index
|
||||
|
||||
@@ -1,819 +0,0 @@
|
||||
Examples
|
||||
========
|
||||
|
||||
Init the library
|
||||
----------------
|
||||
|
||||
Start using the library, it is needed to init the object OCCommunication.
|
||||
|
||||
We recommend using the singleton method in the AppDelegate class in order to
|
||||
use the Nextcloud iOS library.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
#import "OCCommunication.h"
|
||||
|
||||
+ (OCCommunication *)sharedOCCommunication
|
||||
{
|
||||
static OCCommunication* sharedOCCommunication = nil;
|
||||
|
||||
if (sharedOCCommunication == nil)
|
||||
{
|
||||
sharedOCCommunication = [ [ OCCommunicationalloc] init ];
|
||||
}
|
||||
|
||||
return sharedOCCommunication;
|
||||
}
|
||||
|
||||
Also could happen that you need to overwrite the class AFURLSessionManager to manage SSL Certificates
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
#import "OCCommunication.h"
|
||||
|
||||
+ (OCCommunication*)sharedOCCommunication
|
||||
{
|
||||
static OCCommunication* sharedOCCommunication = nil;
|
||||
if (sharedOCCommunication == nil)
|
||||
{
|
||||
//Network Upload queue for NSURLSession (iOS 7)
|
||||
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:k_session_name];
|
||||
configuration.HTTPMaximumConnectionsPerHost = 1;
|
||||
configuration.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
|
||||
OCURLSessionManager *uploadSessionManager = [[OCURLSessionManager alloc] initWithSessionConfiguration:configuration];
|
||||
[uploadSessionManager.operationQueue setMaxConcurrentOperationCount:1];
|
||||
[uploadSessionManager setSessionDidReceiveAuthenticationChallengeBlock:^NSURLSessionAuthChallengeDisposition (NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential) {
|
||||
return NSURLSessionAuthChallengePerformDefaultHandling;
|
||||
}];
|
||||
|
||||
sharedOCCommunication = [[OCCommunication alloc] initWithUploadSessionManager:uploadSessionManager];
|
||||
|
||||
}
|
||||
return sharedOCCommunication;
|
||||
}
|
||||
|
||||
Set credentials
|
||||
---------------
|
||||
|
||||
Authentication on the app is possible by 3 different methods:
|
||||
|
||||
* Basic authentication, user name and password
|
||||
* Cookie
|
||||
* Token (oAuth)
|
||||
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
#Basic authentication, user name and password
|
||||
[[ AppDelegate sharedOCCommunication ] setCredentialsWithUser : userName andPassword : password ];
|
||||
|
||||
#Authentication with cookie
|
||||
[[ AppDelegate sharedOCCommunication ] setCredentialsWithCookie : cookie ];
|
||||
|
||||
#Authentication with token
|
||||
[[ AppDelegate sharedOCCommunication ] setCredentialsOauthWithToken : token ];
|
||||
|
||||
|
||||
Create a folder
|
||||
---------------
|
||||
|
||||
Create a new folder on the cloud server, the info needed to be sent is the path
|
||||
of the new folder.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication ] createFolder :path onCommunication : [ AppDelegate sharedOCCommunication ]
|
||||
|
||||
successRequest :^( NSHTTPURLResponse *response, NSString *redirectedServer) {
|
||||
//Folder Created
|
||||
}
|
||||
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSError *error) {
|
||||
|
||||
//Failure
|
||||
|
||||
switch (response.statusCode) {
|
||||
|
||||
case kOCErrorServerUnauthorized :
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden :
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorServerPathNotFound :
|
||||
//Not Found
|
||||
break;
|
||||
case kOCErrorServerTimeout :
|
||||
//timeout
|
||||
break;
|
||||
default:
|
||||
//default
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
errorBeforeRequest :^( NSError *error) {
|
||||
//Error before request
|
||||
|
||||
if (error.code == OCErrorForbidenCharacters) {
|
||||
//Forbidden characters
|
||||
}
|
||||
else
|
||||
{
|
||||
//Other error
|
||||
}
|
||||
|
||||
}];
|
||||
|
||||
Read folder
|
||||
-----------
|
||||
|
||||
Get the content of an existing folder on the cloud server, the info needed to
|
||||
be sent is the path of the folder. As answer of this method, it will be
|
||||
received an array with all the files and folders stored in the selected folder.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication] readFolder:path onCommunication:[ AppDelegate sharedOCCommunication]
|
||||
|
||||
successRequest:^( NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer) {
|
||||
//Success
|
||||
for ( OCFileDto * ocFileDto in items) {
|
||||
NSLog( @"item path: %@%@" , ocFileDto.filePath, ocFileDto.fileName);
|
||||
}
|
||||
}
|
||||
|
||||
failureRequest:^( NSHTTPURLResponse *response, NSError *error) {
|
||||
|
||||
//Failure
|
||||
switch (response.statusCode) {
|
||||
case kOCErrorServerPathNotFound :
|
||||
//Path not found
|
||||
break;
|
||||
case kOCErrorServerUnauthorized :
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden :
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorServerTimeout :
|
||||
//Timeout
|
||||
break ;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
|
||||
}];
|
||||
|
||||
Read file
|
||||
---------
|
||||
|
||||
Get information related to a certain file or folder. Although, more information
|
||||
can be obtained, the library only gets the eTag.
|
||||
|
||||
Other properties of the file or folder may be obtained: filePath, filename,
|
||||
isDirectory, size and date
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication ] readFile :path onCommunication :[ AppDelegate sharedOCCommunication ]
|
||||
|
||||
successRequest :^( NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer) {
|
||||
|
||||
OCFileDto *ocFileDto = [items objectAtIndex : 0 ];
|
||||
NSLog ( @"item etag: %lld" , ocFileDto. etag); }
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSError *error) {
|
||||
switch (response.statusCode) {
|
||||
case kOCErrorServerPathNotFound:
|
||||
//Path not found
|
||||
break;
|
||||
case kOCErrorServerUnauthorized:
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden:
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorServerTimeout:
|
||||
//Timeout
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}];
|
||||
|
||||
Move file or folder
|
||||
-------------------
|
||||
|
||||
|
||||
Move a file or folder from their current path to a new one on the cloud server.
|
||||
The info needed is the origin path and the destiny path.
|
||||
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication ] moveFileOrFolder :sourcePath toDestiny :destinyPath onCommunication :[ AppDelegate sharedOCCommunication ]
|
||||
|
||||
successRequest :^( NSHTTPURLResponse *response, NSString *redirectedServer) {
|
||||
//File/Folder moved or renamed
|
||||
}
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSError *error) {
|
||||
//Failure
|
||||
switch (response.statusCode) {
|
||||
case kOCErrorServerPathNotFound:
|
||||
//Path not found
|
||||
break;
|
||||
case kOCErrorServerUnauthorized:
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden:
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorServerTimeout:
|
||||
//Timeout
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
errorBeforeRequest :^( NSError *error) {
|
||||
if (error.code == OCErrorMovingTheDestinyAndOriginAreTheSame) {
|
||||
//The destiny and the origin are the same
|
||||
}
|
||||
else if (error.code == OCErrorMovingFolderInsideHimself) {
|
||||
//Moving folder inside himself
|
||||
}
|
||||
else if (error.code == OCErrorMovingDestinyNameHaveForbiddenCharacters) {
|
||||
//Forbidden Characters
|
||||
}
|
||||
else
|
||||
{
|
||||
//Default
|
||||
}
|
||||
|
||||
}];
|
||||
|
||||
|
||||
Delete file or folder
|
||||
---------------------
|
||||
|
||||
Delete a file or folder on the cloud server. The info needed is the path to
|
||||
delete.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication ] deleteFileOrFolder :path onCommunication :[ AppDelegate
|
||||
|
||||
sharedOCCommunication ] successRequest :^( NSHTTPURLResponse *response, NSString *redirectedServer) {
|
||||
//File or Folder deleted
|
||||
}
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSError *error) {
|
||||
|
||||
switch (response.statusCode) {
|
||||
case kOCErrorServerPathNotFound:
|
||||
//Path not found
|
||||
break;
|
||||
case kOCErrorServerUnauthorized:
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden:
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorServerTimeout:
|
||||
//Timeout
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}];
|
||||
|
||||
|
||||
Download a file
|
||||
---------------
|
||||
|
||||
Download an existing file on the cloud server. The info needed is the server
|
||||
URL, path of the file on the server and localPath, path where the file will be
|
||||
stored on the device and a boolean to indicate if is necessary to use LIFO queue or FIFO.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
NSOperation *op = nil;
|
||||
op = [[ AppDelegate sharedOCCommunication ] downloadFile :remotePath toDestiny :localPath withLIFOSystem:isLIFO onCommunication :[ AppDelegate sharedOCCommunication ]
|
||||
|
||||
progressDownload :^( NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
|
||||
|
||||
//Calculate percent
|
||||
float percent = ( float)totalBytesRead / totalBytesExpectedToRead;
|
||||
NSLog ( @"Percent of download: %f" , percent); }
|
||||
successRequest :^(NSHTTPURLResponse *response, NSString *redirectedServer) {
|
||||
//Download complete
|
||||
}
|
||||
failureRequest :^(NSHTTPURLResponse *response, NSError *error) {
|
||||
switch (response. statusCode) {
|
||||
case kOCErrorServerUnauthorized:
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden:
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorProxyAuth:
|
||||
//Proxy access required
|
||||
break;
|
||||
case kOCErrorServerPathNotFound:
|
||||
//Path not found
|
||||
break;
|
||||
default:
|
||||
//Default
|
||||
break;
|
||||
}
|
||||
}
|
||||
shouldExecuteAsBackgroundTaskWithExpirationHandler :^{
|
||||
[op cancel ];
|
||||
}];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Download a file with background session
|
||||
---------------------------------------
|
||||
|
||||
Download an existing file storaged on the cloud server using background session, only supported by iOS 7 and higher.
|
||||
|
||||
The info needed is, the server URL: path where the file is stored on the server; localPath: path where the file will be stored on the device; and NSProgress: object where get the callbacks of the upload progress.
|
||||
|
||||
To get the callbacks of the progress is needed use a KVO in the progress object. We add the code in this example of the call to set the KVO and the method where catch the notifications.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
NSURLSessionDownloadTask *downloadTask = nil;
|
||||
|
||||
NSProgress *progress = nil;
|
||||
|
||||
downloadTask = [_sharedOCCommunication downloadFileSession:serverUrl toDestiny:localPath defaultPriority:YES onCommunication:_sharedOCCommunication withProgress:&progress successRequest:^(NSURLResponse *response, NSURL *filePath) {
|
||||
//Upload complete
|
||||
} failureRequest:^(NSURLResponse *response, NSError *error) {
|
||||
|
||||
switch (error.code) {
|
||||
case kCFURLErrorUserCancelledAuthentication:
|
||||
//Authentication cancelled
|
||||
break;
|
||||
|
||||
default:
|
||||
switch (response.statusCode) {
|
||||
case kOCErrorServerUnauthorized :
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden:
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorProxyAuth:
|
||||
//Proxy access required
|
||||
break;
|
||||
case kOCErrorServerPathNotFound:
|
||||
//Path not found
|
||||
break;
|
||||
default:
|
||||
//Default
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}];
|
||||
|
||||
// Observe fractionCompleted using KVO
|
||||
[progress addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:NULL];
|
||||
|
||||
|
||||
//Method to catch the progress notifications with callbacks
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
|
||||
{
|
||||
if ([keyPath isEqualToString:@"fractionCompleted"] && [object isKindOfClass:[NSProgress class]]) {
|
||||
NSProgress *progress = (NSProgress *)object;
|
||||
|
||||
float percent = roundf (progress.fractionCompleted * 100);
|
||||
|
||||
//We make it on the main thread because we came from a delegate
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
NSLog(@"Progress is %f", percent);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Set callback when background download task finishes
|
||||
---------------------------------------------------
|
||||
|
||||
Method to set callbacks of the pending download transfers when the app starts. It's used when there are pendings download background transfers. The block is executed when a pending background task finishes.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[AppDelegate sharedOCCommunication] setDownloadTaskComleteBlock:^NSURL *(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location) {
|
||||
|
||||
|
||||
}];
|
||||
|
||||
Set progress callback with pending background download tasks
|
||||
------------------------------------------------------------
|
||||
|
||||
Method to set progress callbacks of the pending download transfers. It's used when there are pendings background download transfers. The block is executed when a pending task get a input porgress.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[AppDelegate sharedOCCommunication] setDownloadTaskDidGetBodyDataBlock:^(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
|
||||
|
||||
|
||||
}];
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Upload a file
|
||||
-------------
|
||||
|
||||
Upload a new file to the cloud server. The info needed is localPath, path where
|
||||
the file is stored on the device and server URL, path where the file will be
|
||||
stored on the server.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
NSOperation *op = nil;
|
||||
op = [[ AppDelegate sharedOCCommunication ] uploadFile :localPath toDestiny : remotePath onCommunication :[ AppDelegate sharedOCCommunication ]
|
||||
|
||||
progressUpload :^( NSUInteger bytesWrote, long long totalBytesWrote, long long totalBytesExpectedToWrite) {
|
||||
//Calculate upload percent
|
||||
if ( totalBytesExpectedToRead/1024 != 0) {
|
||||
if ( bytesWrote > 0) {
|
||||
float percent = totalBytesWrote* 100 / totalBytesExpectedToRead;
|
||||
NSLog ( @"Percent: %f" , percent);
|
||||
}
|
||||
}
|
||||
}
|
||||
successRequest :^( NSHTTPURLResponse *response, NSString *redirectedServer) {
|
||||
//Upload complete
|
||||
}
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSString *redirectedServer, NSError *error) {
|
||||
switch (response. statusCode) {
|
||||
case kOCErrorServerUnauthorized :
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden:
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorProxyAuth:
|
||||
//Proxy access required
|
||||
break;
|
||||
case kOCErrorServerPathNotFound:
|
||||
//Path not found
|
||||
break;
|
||||
default:
|
||||
//Default
|
||||
break;
|
||||
}
|
||||
}
|
||||
failureBeforeRequest :^( NSError *error) {
|
||||
switch (error.code) {
|
||||
case OCErrorFileToUploadDoesNotExist:
|
||||
//File does not exist
|
||||
break;
|
||||
default:
|
||||
//Default
|
||||
break;
|
||||
}
|
||||
}
|
||||
shouldExecuteAsBackgroundTaskWithExpirationHandler :^{
|
||||
[op cancel];
|
||||
}];
|
||||
|
||||
|
||||
Upload a file with background session
|
||||
-------------------------------------
|
||||
|
||||
Upload a new file to the cloud server using background session, only supported by iOS 7 and higher.
|
||||
|
||||
The info needed is localPath, path where the file is stored on the device and server URL, path where the file will be stored on the server and NSProgress object where get the callbacks of the upload progress.
|
||||
|
||||
To get the callbacks of the progress is needed use a KVO in the progress object. We add the code in this example of the call to set the KVO and the method where catch the notifications.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
NSURLSessionUploadTask *uploadTask = nil;
|
||||
|
||||
NSProgress *progress = nil;
|
||||
|
||||
uploadTask = [[AppDelegate sharedOCCommunication] uploadFileSession:localPath toDestiny:remotePath onCommunication:[ AppDelegate sharedOCCommunication ] withProgress:&progress successRequest:^(NSURLResponse *response, NSString *redirectedServer) {
|
||||
//Upload complete
|
||||
} failureRequest:^(NSURLResponse *response, NSString *redirectedServer, NSError *error) {
|
||||
switch (response.statusCode) {
|
||||
case kOCErrorServerUnauthorized :
|
||||
//Bad credentials
|
||||
break;
|
||||
case kOCErrorServerForbidden:
|
||||
//Forbidden
|
||||
break;
|
||||
case kOCErrorProxyAuth:
|
||||
//Proxy access required
|
||||
break;
|
||||
case kOCErrorServerPathNotFound:
|
||||
//Path not found
|
||||
break;
|
||||
default:
|
||||
//Default
|
||||
break;
|
||||
}
|
||||
|
||||
}];
|
||||
|
||||
// Observe fractionCompleted using KVO
|
||||
[progress addObserver:self forKeyPath:@"fractionCompleted" options:NSKeyValueObservingOptionNew context:NULL];
|
||||
|
||||
|
||||
|
||||
//Method to catch the progress notifications with callbacks
|
||||
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
|
||||
{
|
||||
if ([keyPath isEqualToString:@"fractionCompleted"] && [object isKindOfClass:[NSProgress class]]) {
|
||||
NSProgress *progress = (NSProgress *)object;
|
||||
|
||||
float percent = roundf (progress.fractionCompleted * 100);
|
||||
|
||||
//We make it on the main thread because we came from a delegate
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
NSLog(@"Progress is %f", percent);
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Set callback when background task finish
|
||||
-----------------------------------------
|
||||
|
||||
Method to set callbacks of the pending transfers when the app starts. It's used when there are pendings background transfers. The block is executed when a pending background task finished.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[AppDelegate sharedOCCommunication] setTaskDidCompleteBlock:^(NSURLSession *session, NSURLSessionTask *task, NSError *error) {
|
||||
|
||||
|
||||
}];
|
||||
|
||||
Set progress callback with pending background tasks
|
||||
---------------------------------------------------
|
||||
|
||||
Method to set progress callbacks of the pending transfers. It's used when there are pendings background transfers. The block is executed when a pending task get a input porgress.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[AppDelegate sharedOCCommunication] setTaskDidSendBodyDataBlock:^(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {
|
||||
|
||||
|
||||
|
||||
}];
|
||||
|
||||
|
||||
Check if the server supports Sharing api
|
||||
----------------------------------------
|
||||
|
||||
|
||||
The Sharing API is included in Nextcloud 5.0.13 and greater versions. The info
|
||||
needed is activeUser.url, the server URL that you want to check.
|
||||
|
||||
Code Example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication ] hasServerShareSupport :_activeUser.url onCommunication :[ AppDelegate sharedOCCommunication ]
|
||||
|
||||
successRequest :^( NSHTTPURLResponse *response, BOOL hasSupport, NSString *redirectedServer) {
|
||||
}
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSError *error){
|
||||
}
|
||||
}];
|
||||
|
||||
|
||||
Read shared all items by link
|
||||
-----------------------------
|
||||
|
||||
Get information about what files and folder are shared by link.
|
||||
|
||||
The info needed is Path, the server URL that you want to check.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication ] readSharedByServer :path onCommunication :[ AppDelegate sharedOCCommunication ]
|
||||
|
||||
successRequest :^( NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer) {
|
||||
NSLog ( @"Item: %d" , items);
|
||||
}
|
||||
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSError *error){
|
||||
NSLog ( @"error: %@" , error);
|
||||
NSLog ( @"Operation error: %d" , response.statusCode);
|
||||
}];
|
||||
|
||||
|
||||
Read shared items by link of a path
|
||||
------------------------------------
|
||||
|
||||
Get information about what files and folder are shared by link in a specific path.
|
||||
|
||||
The info needed is the server URL that you want to check and the specific path tha you want to check.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[AppDelegate sharedOCCommunication] readSharedByServer:serverPath andPath:path onCommunication:[AppDelegate sharedOCCommunication] successRequest:^(NSHTTPURLResponse *response, NSArray *items, NSString *redirectedServer) {
|
||||
NSLog ( @"Item: %d" , items);
|
||||
|
||||
|
||||
} failureRequest:^(NSHTTPURLResponse *response, NSError *error) {
|
||||
NSLog ( @"error: %@" , error);
|
||||
NSLog ( @"Operation error: %d" , response.statusCode);
|
||||
}];
|
||||
|
||||
Share link of file or folder
|
||||
----------------------------
|
||||
|
||||
|
||||
Share a file or a folder from your cloud server by link.
|
||||
The info needed is Path, your server URL and the path of the item that you want
|
||||
to share (for example ``/folder/file.pdf``)
|
||||
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication ] shareFileOrFolderByServer :path andFileOrFolderPath :itemPath onCommunication :[ AppDelegate sharedOCCommunication ]
|
||||
successRequest :^( NSHTTPURLResponse *response, NSString *token, NSString *redirectedServer) {
|
||||
|
||||
NSString *sharedLink = [ NSString stringWithFormat:@ `path/public.php?service=files&t=%@ <mailto:path/public.php?service=files&t=%25@>`_
|
||||
, token];
|
||||
|
||||
}
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSError *error){
|
||||
[ _delegate endLoading ];
|
||||
|
||||
DLog ( @”error.code: %d” , error. code);
|
||||
DLog (@”server.error: %d”, response. statusCode);
|
||||
int code = response. statusCode ;
|
||||
if (error.code == kOCErrorServerPathNotFound) {
|
||||
}
|
||||
|
||||
switch (code) {
|
||||
case kOCErrorServerPathNotFound:
|
||||
//File to share not exists
|
||||
break;
|
||||
case kOCErrorServerUnauthorized:
|
||||
//Error login
|
||||
break;
|
||||
case kOCErrorServerForbidden:
|
||||
//Permission error
|
||||
break;
|
||||
case kOCErrorServerTimeout:
|
||||
//Not possible to connect to server
|
||||
break;
|
||||
default:
|
||||
if (error.code == kOCErrorServerPathNotFound) {
|
||||
//File to share not exists
|
||||
} else {
|
||||
//Not possible to connect to the server
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
NSLog ( @"error: %@" , error);
|
||||
NSLog ( @"Operation error: %d" , response.statusCode);
|
||||
}];
|
||||
|
||||
Unshare a folder or file by link
|
||||
--------------------------------
|
||||
|
||||
|
||||
Stop sharing by link a file or a folder from your cloud server.
|
||||
|
||||
The info needed is Path, your server URL and the Id of the item that you want
|
||||
to Unshare.
|
||||
|
||||
Before unsharing an item, you have to read the shared items on the selected
|
||||
server, using the method “ readSharedByServer ” so that you get the array
|
||||
“items” with all the shared elements. These are objects OCShareDto, one of
|
||||
their properties is idRemoteShared, parameter needed to unshared an element.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[ AppDelegate sharedOCCommunication ] unShareFileOrFolderByServer :path andIdRemoteSharedShared :sharedByLink. idRemoteShared onCommunication :[ AppDelegate sharedOCCommunication ]
|
||||
|
||||
successRequest :^( NSHTTPURLResponse *response, NSString *redirectedServer) {
|
||||
//File unshared
|
||||
}
|
||||
failureRequest :^( NSHTTPURLResponse *response, NSError *error){
|
||||
//Error
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
Check if file of folder is shared
|
||||
----------------------------------
|
||||
|
||||
Check if a specific file or folder is shared in your cloud server.
|
||||
|
||||
The info need is Path, your server URL and the Id of the item that you want.
|
||||
|
||||
|
||||
Before check an item, you have to read the shared items on the selected
|
||||
server, using the method “ readSharedByServer ” so that you get the array
|
||||
“items” with all the shared elements. These are objects OCShareDto, one of
|
||||
their properties is idRemoteShared, parameter needed to unshared an element.
|
||||
|
||||
Code example
|
||||
~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: objective-c
|
||||
|
||||
[[AppDelegate sharedOCCommunication] isShareFileOrFolderByServer:path andIdRemoteShared:_shareDto.idRemoteShared onCommunication:[AppDelegate sharedOCCommunication] successRequest:^(NSHTTPURLResponse *response, NSString *redirectedServer, BOOL isShared) {
|
||||
//File/Folder is shared
|
||||
|
||||
} failureRequest:^(NSHTTPURLResponse *response, NSError *error) {
|
||||
//File/Folder is not shared
|
||||
}];
|
||||
|
||||
|
||||
Tips
|
||||
----
|
||||
|
||||
* Credentials must be set before calling any method
|
||||
* Paths must not be on URL Encoding
|
||||
* Correct path: ``https://example.com/owncloud/remote.php/dav/Pop_Music/``
|
||||
* Wrong path: ``https://example.com/owncloud/remote.php/dav/Pop%20Music/``
|
||||
* There are some forbidden characters to be used in folder and files names on the server, same on the Nextcloud iOS library "\", "/","<",">",":",""","","?","*"
|
||||
* To move a folder the origin path and the destination path must end with “/”
|
||||
* To move a file the origin path and the destination path must not end with “/”
|
||||
* Upload and download actions may be cancelled thanks to the object “NSOperation”
|
||||
* Unit tests, before launching unit tests you have to enter your account information (server url, user and password) on OCCommunicationLibTests.m
|
||||
|
Before Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 177 KiB |
@@ -1,50 +0,0 @@
|
||||
===========================
|
||||
iOS Application Development
|
||||
===========================
|
||||
Nextcloud provides an official Nextcloud iOS client, which gives its users
|
||||
access to their files on their Nextcloud. It also includes functionality like
|
||||
automatically uploading pictures and videos to Nextcloud.
|
||||
|
||||
For third party application developers, Nextcloud offers the Nextcloud iOS
|
||||
library under the MIT license.
|
||||
|
||||
iOS Nextcloud Client development
|
||||
-----------------------------------
|
||||
|
||||
If you are interested in working on the Nextcloud iOS client, you can find
|
||||
the source code `in github <https://github.com/owncloud/ios>`_. The
|
||||
setup and process of contribution is
|
||||
`documented here <https://github.com/owncloud/ios/blob/master/SETUP.md>`_.
|
||||
|
||||
You might want to start with doing one or two `junior jobs
|
||||
<https://github.com/owncloud/ios/issues?q=is%3Aopen+is%3Aissue+label%3A%22Junior+Job%22>`_
|
||||
to get into the code and note our :doc:`../general/index`
|
||||
|
||||
Note that contribution to the iOS client require signing the iOS addendum to the
|
||||
`Nextcloud Contributor Agreement <https://owncloud.org/contribute/agreement/>`_. You are
|
||||
permitted to test the iOS client on Apple hardware thanks to the
|
||||
`iOS license exception <https://owncloud.org/contribute/iOS-license-exception/>`_.
|
||||
|
||||
Nextcloud iOS Library
|
||||
------------------------
|
||||
This document will describe how to the use Nextcloud iOS library. The Nextcloud
|
||||
iOS library for iOS allows a developer to communicate with any Nextcloud server;
|
||||
among the features included are file synchronization, upload and download of
|
||||
files, delete rename and move of files and folders and share files or folders
|
||||
by link among others.
|
||||
|
||||
This library may be added to a project and seamlessly integrates any
|
||||
application with Nextcloud.
|
||||
|
||||
The tool needed is Xcode 6, this guide includes some screenshots showing
|
||||
examples in Xcode 6.
|
||||
|
||||
.. _iosindex:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:hidden:
|
||||
|
||||
library_installation
|
||||
examples
|
||||
|
||||
@@ -1,133 +0,0 @@
|
||||
Library Installation
|
||||
====================
|
||||
|
||||
Obtaining the library
|
||||
---------------------
|
||||
|
||||
The Nextcloud iOS library may be obtained from the following Github repository:
|
||||
|
||||
`git@github.com:owncloud/ios-library.git
|
||||
<mailto:git@github.com:owncloud/ios-library.git>`_
|
||||
|
||||
Once obtained, this code should be compiled with Xcode 6. The Github
|
||||
repository not only contains the library, Nextcloud iOS library, but also
|
||||
contains a sample project, OCLibraryExample, which will assist in learning how
|
||||
to use the library.
|
||||
|
||||
Add the library to a project
|
||||
----------------------------
|
||||
|
||||
There are two methods to add this library to a project.
|
||||
|
||||
* Reference the headers and library binary file (``.a``) directly.
|
||||
* Include the library as a subproject.
|
||||
|
||||
|
||||
Which method to choose depends on user preference as well as whether the source
|
||||
code and project file of the static library are available.
|
||||
|
||||
Reference headers and library binary files
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Follow these steps if this is the desired method.
|
||||
|
||||
1. Compile the Nextcloud iOS library and run the project. A ``libownCloudiOS.a``
|
||||
file will be generated.
|
||||
|
||||
The following files are required:
|
||||
|
||||
**Library file**
|
||||
|
||||
* ``libownCloudiOS.a`` (Library)
|
||||
|
||||
**Library Classes**
|
||||
|
||||
* ``OCCommunication.h`` (Accessors) Import in the communication class
|
||||
* ``OCErrorMsg.h`` (Error Messages) Import in the communication class
|
||||
* ``OCFileDto.h`` and ``OCFileDto.m`` (File/Folder object) Import when using
|
||||
* ``readFolder`` and ``readFile`` methods
|
||||
* ``OCFrameworkConstants.h`` (Customize constants)
|
||||
|
||||
2. Add the library file to the project. From the “Build Phases” tab, scroll
|
||||
to “Link binary files” and select the ‘+’ to add a library. Select the library
|
||||
file.
|
||||
|
||||
|10000201000003480000020EC688993D_png|
|
||||
|
||||
3. Add the path of the library header files. Under the “Build Settings” tab,
|
||||
select the target library and add the path in the “Header Search Paths” field.
|
||||
|
||||
|10000201000003430000020C65A3C5A7_png|
|
||||
|
||||
4. Remaining in the “Build Setting” tab, add the flag ``-Obj-C`` under the
|
||||
“Other Linker Flags” option.
|
||||
|
||||
|100002010000034700000211B6BE4A2B_png|
|
||||
|
||||
At this stage, the library is included on your project and you can start
|
||||
communicating with the Nextcloud server.
|
||||
|
||||
Include the library as a subproject
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Follow these steps if this is the desired method.
|
||||
|
||||
5. Add the file ``Nextcloud iOS library.xcodeproj`` to the project via drag and
|
||||
drop.
|
||||
|
||||
|100000000000030C000001E61DFDBF76_png|
|
||||
|
||||
6. Within the project, navigate to the “Build Phases” tab. Under the “Target
|
||||
Dependencies” section, select the ‘+’ and choose the library target.
|
||||
|
||||
|100000000000030C000001E7A7A01884_png|
|
||||
|
||||
7. Link the library file to the project target. Under the “Build Phases” tab,
|
||||
select the ‘+’ under the “Link Binary with Libraries” section and select the
|
||||
library file.
|
||||
|
||||
|100000000000030C000001E8AB4C3306_png|
|
||||
|
||||
8. Add the flag ``-Obj-C`` to “Other Linker Flags” under the project target on
|
||||
the “Build Settings” tab.
|
||||
|
||||
|100000000000030C000001ECB85120C2_png|
|
||||
|
||||
9. Finally add the path of the library headers. Under the “Build Settings”
|
||||
tab, add the path under the “Header Search Paths” option.
|
||||
|
||||
|100000000000030C000001E637605044_png|
|
||||
|
||||
Sources
|
||||
-------
|
||||
|
||||
* `Creating a static library in iOS tutorial (raywenderlich.com)`_
|
||||
* `Apple iOS static library documentation`_
|
||||
|
||||
.. |100000000000030C000001E61DFDBF76_png| image:: images/100000000000030C000001E61DFDBF76.png
|
||||
:width: 16.51cm
|
||||
:height: 10.285cm
|
||||
.. |100002010000034700000211B6BE4A2B_png| image:: images/100002010000034700000211B6BE4A2B.png
|
||||
:width: 16.261cm
|
||||
:height: 10.246cm
|
||||
.. |100000000000030C000001E7A7A01884_png| image:: images/100000000000030C000001E7A7A01884.png
|
||||
:width: 16.51cm
|
||||
:height: 12.023cm
|
||||
.. |10000201000003480000020EC688993D_png| image:: images/10000201000003480000020EC688993D.png
|
||||
:width: 16.51cm
|
||||
:height: 10.329cm
|
||||
.. |100000000000030C000001E8AB4C3306_png| image:: images/100000000000030C000001E8AB4C3306.png
|
||||
:width: 14.605cm
|
||||
:height: 9.137cm
|
||||
.. |10000201000003430000020C65A3C5A7_png| image:: images/10000201000003430000020C65A3C5A7.png
|
||||
:width: 16.51cm
|
||||
:height: 10.358cm
|
||||
.. |100000000000030C000001E637605044_png| image:: images/100000000000030C000001E637605044.png
|
||||
:width: 14.605cm
|
||||
:height: 9.098cm
|
||||
.. |100000000000030C000001ECB85120C2_png| image:: images/100000000000030C000001ECB85120C2.png
|
||||
:width: 14.605cm
|
||||
:height: 9.211cm
|
||||
|
||||
.. _`Creating a static library in iOS tutorial (raywenderlich.com)`: http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial
|
||||
.. _`Apple iOS static library documentation`: https://developer.apple.com/library/ios/technotes/iOSStaticLibraries/Articles/configuration.html#/apple_ref/doc/uid/TP40012554-CH3-SW2
|
||||
@@ -1,6 +1,6 @@
|
||||
============================
|
||||
=============================
|
||||
Nextcloud Manuals Style Guide
|
||||
============================
|
||||
=============================
|
||||
|
||||
*This is a work in progress*
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ Nextcloud Desktop and Mobile Clients
|
||||
------------------------------------
|
||||
|
||||
The recommended method for keeping your desktop PC synchronized with your
|
||||
Nextcloud server is by using the `Nextcloud Desktop Client
|
||||
<https://owncloud.org/install/#install-clients>`_. You can configure the client
|
||||
Nextcloud server is by using the `Nextcloud/ownCloud sync clients
|
||||
<https://nextcloud.com/install/#install-clients>`_. You can configure the client
|
||||
to save files in any local directory you want, and you choose which directories
|
||||
on the Nextcloud server to sync with. The client displays the current connection
|
||||
status and logs all activity, so you always know which remote files have been
|
||||
@@ -502,10 +502,6 @@ To get the properties of files in the root folder:
|
||||
|
||||
.. _KB2668751: https://support.microsoft.com/kb/2668751
|
||||
.. _KB2123563: https://support.microsoft.com/kb/2123563
|
||||
.. _in your file manager: http://en.wikipedia.org/wiki/Webdav#WebDAV_client_applications
|
||||
.. _Nextcloud sync clients: https://doc.owncloud.org/desktop/2.1/
|
||||
.. _Mount Nextcloud to a local folder without sync: https://docs.nextcloud.org/server/9/admin_manual/configuration_files/external_storage/webdav.html?highlight=webdav
|
||||
.. _Android: https://github.com/nextcloud/android
|
||||
.. _WebDAV Navigator: http://seanashton.net/webdav/
|
||||
.. _Android devices: https://play.google.com/store/apps/details?id=com.schimera.webdavnavlite
|
||||
.. _iPhones: https://itunes.apple.com/app/webdav-navigator/id382551345
|
||||
|
||||
@@ -10,7 +10,7 @@ Creating a New Federation Share
|
||||
-------------------------------
|
||||
|
||||
Federation sharing is enabled on new or upgraded Nextcloud installations
|
||||
by default. Follow these steps to create a new share with other Nextcloud or Nextcloud 9 servers:
|
||||
by default. Follow these steps to create a new share with other Nextcloud or ownCloud 9+ servers:
|
||||
|
||||
1. Go to your ``Files`` page and click the Share icon on the file or directory
|
||||
you want to share. In the sidebar enter the username and URL of the remote user
|
||||
@@ -31,7 +31,7 @@ share, and does not delete any files.
|
||||
Creating a New Federated Cloud Share via Email
|
||||
----------------------------------------------
|
||||
|
||||
Use this method when you are sharing with users on Nextcloud 8.x and older.
|
||||
Use this method when you are sharing with users on ownCloud 8.x and older.
|
||||
|
||||
What if you do not know the username or URL? Then you can have Nextcloud create
|
||||
the link for you and email it to your recipient.
|
||||
@@ -45,7 +45,7 @@ a Web browser, and then click the **Add to your Nextcloud** button.
|
||||
.. figure:: ../images/create_public_share-8.png
|
||||
|
||||
The **Add to your Nextcloud** button changes to a form field, and your recipient
|
||||
needs to enter the URL of their Nextcloud or Nextcloud server in this field and press the
|
||||
needs to enter the URL of their Nextcloud or ownCloud server in this field and press the
|
||||
return key, or click the arrow.
|
||||
|
||||
.. figure:: ../images/create_public_share-9.png
|
||||
|
||||
@@ -15,12 +15,12 @@ file synchronization and sharing solution on servers that you control.
|
||||
You can share one or more files and folders on your computer, and synchronize
|
||||
them with your Nextcloud server. Place files in your local shared directories,
|
||||
and those files are immediately synchronized to the server and to other devices
|
||||
using the Nextcloud / Nextcloud Desktop Sync Client, Android app, or iOS app. To
|
||||
using the Nextcloud / ownCloud Desktop Sync Client, Android app, or iOS app. To
|
||||
learn more about the Nextcloud desktop and mobile clients, please refer to
|
||||
their respective manuals:
|
||||
|
||||
* `Nextcloud Desktop Client`_
|
||||
* `Nextcloud/ownCloud Desktop Client`_
|
||||
* `Nextcloud Android App`_
|
||||
|
||||
.. _`Nextcloud Desktop Client`: https://doc.owncloud.org/desktop/2.1/
|
||||
.. _`Nextcloud/ownCloud Desktop Client`: https://doc.owncloud.org/desktop/2.2/
|
||||
.. _`Nextcloud Android App`: https://docs.nextcloud.org/android/
|
||||
|
||||