Actualización a APS Conecta Gestión 32¶
Resumen¶
Esta página enumera los cambios de la versión 32 que afectan a las apps: el nuevo tests/autoload.php, los colores de estado basados en el estilo secundario, los iconos con contorno, la división de OCP en API consumibles e implementables y los eventos y API añadidos, modificados, obsoletos o eliminados. Está dirigida a quienes desarrollan o mantienen apps.
Fuente: documentación de Nextcloud, «developer_manual/release_notes/previous/upgrade_to_32», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
General¶
Se añadió al repositorio del servidor un nuevo archivo
tests/autoload.php, que se puede incluir en el archivobootstrap.phpde la app para las pruebas, a fin de poder cargar la clase\Test\TestCasedel núcleo. Se debe eliminar cualquier llamada a\OC::$loaderen el código, ya que este cargador heredado se está eliminando. Este nuevo archivo se ha incorporado a las ramas stable31, stable30 y stable29, por lo que, si la aplicación admite varias versiones mayores de APS Conecta Gestión, debería seguir funcionando.
Cambios de frontend¶
Los colores de estado se basan ahora en el estilo secundario¶
Los colores de estado como error, success o warning se basan ahora en el estilo secundario en lugar del primario.
Esto significa que ahora son mucho más claros y, por lo tanto, no pueden usarse para usos como los colores de texto o de borde.
Para mitigarlo, se introducen las siguientes variables CSS nuevas:
--color-text-errorpara el texto que necesita un resaltado de error sobre colores de fondo normales.--color-text-successpara el texto que necesita un resaltado de éxito sobre colores de fondo normales.--color-border-errorpara usarse como color de borde de los elementos con un estado de error, como los elementos de entrada cuya validación falla.--color-border-successpara usarse como color de borde de los elementos con un estado de éxito, como una entrada que se guardó o similar.
Tener en cuenta que no hay variantes de texto ni de borde para warning e info, ya que, desde el punto de vista del diseño, se desaconseja usarlas en textos y bordes.
Además, como a veces los elementos necesitan un color de estado con el contraste adecuado, ahora se ofrecen las siguientes variables para elementos de estado como los iconos:
--color-element-error--color-element-info--color-element-success--color-element-warning
Estas variables existentes cambiaron a un estilo secundario:
--color-errorpara usarse como color de fondo de los elementos con estilo de error (como un botón en estado de error o una note-card).--color-error-hoverpara usarse como color de fondo de dichos elementos al pasar el cursor.--color-error-textpara usarse como color de primer plano de dichos elementos.Lo mismo se aplica a
--color-info,--color-success,--color-warningy sus variantes.
Los iconos deben ser con contorno¶
Al usar Material Icons, usar la variante con contorno (outlined) siempre que sea posible. Las excepciones son los propios iconos de las apps, los iconos de tipos de archivo y los iconos que ya eran de una sola línea, como los de más o de marca de verificación. El razonamiento y más detalles están en la issue.
API obsoletas¶
--color-error-rgb,--color-info-rgb,--color-success-rgb,--color-warning-rgbestán obsoletas. En su lugar, usar las utilidades de color nativas de CSS con las variables existentes, como--color-errory similares.La api
OC.SystemTagsestá obsoleta. Si se necesita obtener la lista de etiquetas del sistema, consultar esta merge request para ver cómo obtener las etiquetas directamente.
Cambios de backend¶
División de la API OCP en consumible e implementable: Para conocer mejor el contexto, ver RFC: dividir OCP en Consumable e Implementable para más información. Resumen breve:
Consumable: las interfaces, enums y clases que tienen el atributo
OCP\AppFramework\Attribute\Consumablesolo deben ser consumidas por las apps y no pueden ser implementadas por las propias apps. Esto significa que el lado del servidor puede ampliar la interfaz con nuevos métodos o reducir los tipos devueltos por los métodos existentes sin que se considere una ruptura de la API. Sin embargo, los tipos de los argumentos de los métodos existentes no pueden reducirse. Las mismas reglas se aplican a losOCP\EventsDispatcher\Eventque tienen el atributoOCP\AppFramework\Attribute\Listenabley a lasExceptioncon el atributoOCP\AppFramework\Attribute\Catchable.Implementable: las interfaces, enums y clases que tienen el atributo
OCP\AppFramework\Attribute\Implementablepueden ser implementadas por las apps. Esto significa que el lado del servidor no puede ampliar la interfaz con nuevos métodos ni reducir los tipos devueltos por los métodos existentes sin que se considere una ruptura de la API. Sin embargo, los tipos de los argumentos de los métodos existentes sí pueden reducirse. Las mismas reglas se aplican a losOCP\EventsDispatcher\Eventque tienen el atributoOCP\AppFramework\Attribute\Dispatchabley a lasExceptioncon el atributoOCP\AppFramework\Attribute\Throwable.ExceptionalImplementable: aunque no sean implementables por todas las apps, algunas interfaces pueden tener el atributo
OCP\AppFramework\Attribute\ExceptionalImplementable, que indica que una sola app (o varias) puede implementarlas. En esos casos se aplican las reglas generales deOCP\AppFramework\Attribute\Consumable, pero hay que informar a quienes mantienen las apps o al repositorio de las excepciones nombradas durante el proceso de una pull request, dejándoles tiempo suficiente para adaptarse al cambio que se avecina.
Estos nuevos atributos se aplicarán según un criterio de «estándar de facto», según nuestro leal saber y entender. Si una API se marcó de forma inesperada, dejar un comentario en la pull request correspondiente del repositorio del servidor pidiendo una aclaración.
Eventos añadidos¶
Nuevo evento
preloadCollection, emitido por el servidor DAV durante las solicitudes PROPFIND. Ver Eventos de precarga de colecciones WebDAV para más detalles.Nuevo
OCP\SystemTag\TagAssignedEvent, emitido por el mapeador de objetos de etiquetas del sistemaNuevo
OCP\SystemTag\TagUnassignedEvent, emitido por el mapeador de objetos de etiquetas del sistema
API añadidas¶
Nueva API
OCP\ContextChat. Ver Context Chat para más detalles.Nueva interfaz
\OCP\OCM\ICapabilityAwareOCMProviderpara ampliar el proveedor OCM con las extensiones 1.1 y 1.2 de la API de descubrimiento de Open Cloud MeshNueva interfaz
\OCP\Search\IExternalProvider, que permite ampliar el proveedor de búsqueda con un indicador explícito para señalar que la búsqueda se realiza sobre recursos externos (de terceros). Se usa en la búsqueda unificada para desactivar por defecto las búsquedas en ellos (mediante un interruptor).Nueva interfaz
\OCP\Share\IShareProviderSupportsAllSharesInFolder, que extiende\OCP\Share\IShareProviderpara añadir el método\OCP\Share\IShareProviderSupportsAllSharesInFolder::getAllSharesInFolder, usado para consultar todas las comparticiones de una carpeta sin filtrar por usuario.Nueva interfaz
\OCP\Notification\IPreloadableNotifierpara permitir que las implementaciones de notificadores precarguen y almacenen en caché los datos de muchas notificaciones a la vez para mejorar el rendimiento, por ejemplo agrupando consultas SQL.Nueva interfaz
\OCP\Template\ITemplateManagerpara acceder a las funciones relacionadas con las plantillas y obtener instancias de la nueva interfaz\OCP\Template\ITemplateen lugar de construir manualmente\OCP\Template.Nuevo atributo
\OCP\AppFramework\Http\Attribute\RequestHeader, usado para documentar las cabeceras de solicitud en las especificaciones OpenAPI generadas con openapi-extractor.Nuevo evento
\OCP\Files\Config\Event\UserMountAddedEvent, que se emite cuando se añade un nuevo montaje a la tablaoc_mounts.Nuevo evento
\OCP\Files\Config\Event\UserMountRemovedEvent, que se emite cuando se elimina un montaje existente de la tablaoc_mounts.Nuevo evento
\OCP\Files\Config\Event\UserMountUpdatedEvent, que se emite cuando se actualiza un montaje existente en la tablaoc_mounts.Nuevo método
\OCA\Files\Controller\TemplateController::listTemplateFieldspara listar los campos de una plantilla, accesible en/ocs/v2.php/apps/files/api/v1/templates/fields/{fileId}.Nuevo método
\OCP\Files\IFilenameValidator::sanitizeFilename, que permite sanear un nombre de archivo dado para que cumpla las restricciones configuradas.Nuevo método
\OCP\Files\Template\ITemplateManager::listTemplateFieldspara permitir listar los campos de una plantilla.Nuevo método
\OCP\Files\Template\BeforeGetTemplatesEvent::shouldGetFieldspara obtener la propiedadwithFieldsdel evento, que debe determinar si se extraen o no los campos de plantilla de las plantillas devueltas.Nuevo método
\OCP\IUser::canChangeEmail, que permite comprobar si el backend de usuarios permite al usuario cambiar su dirección de correo electrónico.Nuevo método
\OCP\IDateTimeZone::getDefaultTimezone, que permite obtener la zona horaria predeterminada configurada para APS Conecta Gestión.Nuevo método
\OCA\Files_Versions\Versions\IVersionBackend::getRevisionpara obtener la revisión de la versión a partir de un nodo.Nuevo
OCP\SystemTag\TagAssignedEvent, emitido por el mapeador de objetos de etiquetas del sistemaNuevo
OCP\SystemTag\TagUnassignedEvent, emitido por el mapeador de objetos de etiquetas del sistemaAPI de procesamiento de tareas:
Nuevo tipo de tarea de procesamiento de tareas
OCP\TaskProcessing\TextToSpeechpara convertir texto en voz.Nuevo tipo de tarea de procesamiento de tareas
OCP\TaskProcessing\AnalyzeImagespara hacer preguntas sobre imágenes.Nuevo método
OCP\TaskProcessing\Manager::getAvailableTaskTypeIdspara listar solo los ID de los tipos de tarea, sin metadatos (más rápido queOCP\TaskProcessing\Manager::getAvailableTaskTypes)
Nuevo
OCP\Mail\IEmailValidatorpara validar una dirección de correo electrónico.Nuevo método
OCP\App\IAppManager::getAppInstalledVersionspara obtener las versiones instaladas de todas las aplicacionesNuevo método
OCP\IAppConfig::getAppInstalledVersionspara hacer lo mismo
API modificadas¶
El tipo de retorno de
\OCP\Authentication\TwoFactorAuth\ILoginSetupProvider::getBody,\OCP\Authentication\TwoFactorAuth\IPersonalProviderSettings::getBodyy\OCP\Authentication\TwoFactorAuth\IProvider::getBodyse amplió de la clase\OCP\Templatea la interfaz\OCP\Template\ITemplate. No debería cambiar nada para las aplicaciones.\OCP\Files\Template\BeforeGetTemplatesEventacepta ahora un valor booleano opcional en el constructor,withFields, que permite controlar explícitamente si deben extraerse los campos de plantilla. El valor predeterminado esfalse.\OCP\IDateTimeZone::getTimezonetiene ahora un nuevo parámetro opcional de tipo cadena,userId, que permite solicitar la zona horaria de un usuario distinto del actual.\OCP\IDBConnection::getDatabaseProvidertiene ahora un nuevo parámetro booleano opcional,strict. Cuando se indica, la salida diferenciará entre MySQL y MariaDB. De lo contrario, MariaDB se devolverá como MySQL\OCP\Notification\INotification::setIcon,\OCP\Notification\INotification::setLinky\OCP\Notification\IAction::setLinklanzan ahora\OCP\Notification\InvalidValueExceptioncuando el enlace proporcionado no es absoluto, como se anunció previamente en Actualización a APS Conecta Gestión 30
API obsoletas¶
El endpoint de la API de archivos
/apps/files/api/v1/thumbnail/para generar vistas previas está obsoleto. En su lugar, usar el endpoint de vistas previas que proporciona el núcleo de APS Conecta Gestión (/core/preview).El método heredado
\OC_Helper::canExecuteestá obsoleto; usar en su lugarOCP\IBinaryFinder.Las clases
\OC_Templatey\OCP\Templateestán obsoletas; usar en su lugar el nuevo\OCP\Template\ITemplateManager.\OC_User::useBackendestá obsoleto; usar\OCP\IUserManager::registerBackend, disponible desde la 8.0.0\OC_User::clearBackendsestá obsoleto; usar\OCP\IUserManager::clearBackends, disponible desde la 8.0.0\OC_Helper::isReadOnlyConfigEnabledestá obsoleto; usar directamente la configuración del sistemaconfig_is_read_only.\OCP\OCM\IOCMProviderestá obsoleto; usar\OCP\OCM\ICapabilityAwareOCMProvider, disponible desde la 32.0.0\OCP\Mail\IMailer::validateMailAddressestá obsoleto; usar\OCP\Mail\IEmailValidator, disponible desde la 32.0.0\OC_App::getSupportedAppsestá obsoleto; usar en su lugar\OCP\Support\Subscription\IRegistry::delegateGetSupportedApps\OC_App::getAppVersionsestá obsoleto; usar en su lugarOCP\App\IAppManager::getAppInstalledVersions\OCP\Route\IRoute::actionIncludey\OCP\Route\IRoute::actionestán obsoletos; usar en su lugar un controlador adecuado.
API eliminadas¶
El paquete
scssphpya no se incluye con APS Conecta Gestión. Este paquete no se usaba y estaba obsoleto desde APS Conecta Gestión 22. Si la app necesita el paquete, hay que incluirlo en ella.Los métodos
\OCP\Files::getStoragey el heredadoOC_App_::getStorageestaban obsoletos desde APS Conecta Gestión 14 y APS Conecta Gestión 5, respectivamente, y ahora se eliminaron. En su lugar, usar\OCP\Files\IAppData.Se eliminó
\OCP\AppFramework\App::registerRoutes(obsoleto en APS Conecta Gestión 20). En su lugar, devolver las rutas como un array desde routes.php o usar atributos de ruta.Las constantes de visibilidad heredadas de
OCP\Accounts\IAccountManager,VISIBILITY_PRIVATE,VISIBILITY_CONTACTS_ONLY,VISIBILITY_PUBLIC, estaban obsoletas desde APS Conecta Gestión 21 y ahora se eliminaron. En su lugar, solo pueden usarse las constantes de visibilidad v2.Se eliminaron métodos obsoletos de la clase heredada
\OC_Helper:humanFileSizeestaba obsoleto desde la versión 4.0.0 y se reemplazó por\OCP\Util::humanFileSizecomputerFileSizeestaba obsoleto desde la versión 4.0.0 y se reemplazó por\OCP\Util::computerFileSizemb_array_change_key_caseestaba obsoleto desde la versión 4.5.0 y se reemplazó por\OCP\Util::mb_array_change_key_caserecursiveArraySearchestaba obsoleto desde la versión 4.5.0 y se reemplazó por\OCP\Util::recursiveArraySearchrmdirrestaba obsoleto desde la versión 5.0.0 y se reemplazó por\OCP\Files::rmdirrmaxUploadFilesizeestaba obsoleto desde la versión 5.0.0 y se reemplazó por\OCP\Util::maxUploadFilesizefreeSpaceestaba obsoleto desde la versión 7.0.0 y se reemplazó por\OCP\Util::freeSpaceuploadLimitestaba obsoleto desde la versión 7.0.0 y se reemplazó por\OCP\Util::uploadLimit
Se eliminaron métodos obsoletos de la clase heredada
\OC_Util:addScriptse reemplazó por\OCP\Util::addScripten la 24addVendorScriptno se usaba y se eliminóaddTranslationsse reemplazó por\OCP\Util::addTranslationsen la 24
La función de plantilla
vendor_scriptno se usaba y se eliminóSe eliminó la compatibilidad con los archivos
app.php, obsoletos desde APS Conecta Gestión 19. Todavía se comprueba si el archivo existe para mostrar un error si está presente, pero eso se eliminará en una versión posterior. Pasar en su lugar aOCP\AppFramework\Bootstrap\IBoostrap.Se eliminaron los siguientes getters, obsoletos desde la 20. Usar en su lugar la inyección de dependencias o
\OCP\Server::get:IServerContainer::getAppConfig()IServerContainer::getAvatarManager()IServerContainer::getCalendarManager()IServerContainer::getCalendarResourceBackendManager()IServerContainer::getCalendarRoomBackendManager()IServerContainer::getCloudFederationFactory()IServerContainer::getCloudFederationProviderManager()IServerContainer::getCommandBus()IServerContainer::getCommentsManager()IServerContainer::getContentSecurityPolicyManager()IServerContainer::getCredentialsManager()IServerContainer::getDateTimeFormatter()IServerContainer::getDateTimeZone()IServerContainer::getEncryptionKeyStorage()IServerContainer::getEventLogger()IServerContainer::getGlobalScaleConfig()IServerContainer::getHTTPClientService()IServerContainer::getIniWrapper()IServerContainer::getLogFactory()IServerContainer::getMountManager()IServerContainer::getMountProviderCollection()IServerContainer::getNavigationManager()IServerContainer::getPreviewManager()IServerContainer::getQueryLogger()IServerContainer::getRemoteApiFactory()IServerContainer::getRemoteInstanceFactory()IServerContainer::getRouter()IServerContainer::getShareManager()IServerContainer::getStorageFactory()IServerContainer::getSystemTagManager()IServerContainer::getSystemTagObjectMapper()IServerContainer::getTagManager()
Se eliminó el autocargador heredado
\OC::$loader. No debería afectar a la aplicación. Puede afectar a las pruebas si lo usaban. Considerar incluir en su lugartests/autoload.phpdel servidor.