CDN / STUDIO
Studio mediante CDN
Esta guía cubre únicamente la integración de Studio mediante su cargador web. El cargador prepara el Player correspondiente antes de iniciar el editor.
1. Cargar Studio
Incluye el cargador de Studio una sola vez. Ese archivo prepara también el Player que Studio necesita para la Vista alumno.
<script src="https://p2lrn.org/studio/current/dist/p2lrn-studio.js"></script>
<p2lrn-studio></p2lrn-studio>El archivo p2lrn-studio.js carga primero el Player del mismo canal y después inicia Studio. No añadas un segundo cargador del Player.
2. Abrir un curso inicial
Si quieres que el editor arranque con un curso ya seleccionado, indica su URL mediante src. Si lo omites, el usuario podrá crear o abrir un curso desde la interfaz.
<script src="https://p2lrn.org/studio/current/dist/p2lrn-studio.js"></script>
<p2lrn-studio src="/courses/curso.p2lrn"></p2lrn-studio>El atributo src es opcional. Sin él, el usuario puede crear un curso nuevo desde la interfaz.
3. Fijar una versión
Para mantener una versión concreta en una integración estable, cambia current por el número de versión publicado.
<script src="https://p2lrn.org/studio/0.5.0-alpha.11/dist/p2lrn-studio.js"></script>El cargador versionado utiliza el Player de esa misma versión.
4. Habilitar guardado e importación
Estas opciones son necesarias sólo cuando tu plataforma ofrece guardado centralizado, Reader o conversión de paquetes externos.
<script src="https://p2lrn.org/studio/current/dist/p2lrn-studio.js"></script>
<p2lrn-studio
src="/courses/curso.p2lrn"
save-endpoint="/api/p2lrn/studio/save"
reader-endpoint="/api/p2lrn/studio/read"
import-endpoint="/api/p2lrn/studio/import"
course-path="course">
</p2lrn-studio>save-endpointRecibe el paquete cuando el usuario guarda en servidor.
reader-endpointProcesa documentos importados mediante Reader.
import-endpointProcesa paquetes educativos externos.
course-pathIdentifica la ruta lógica de guardado.
5. Qué puedes hacer sin servicios de servidor
Con el cargador y el componente básico puedes crear un curso, abrir archivo/URL, editar, cambiar a Vista alumno, descargar un .p2lrn y generar/revisar entregas offline. Los endpoints sólo son necesarios para funciones que deban comunicarse con tu plataforma.
La biblioteca compartida tampoco exige los endpoints Save/Reader/Import: después de cargar el runtime puedes asignar al elemento un objeto resourceLibrary con list() y get(digest). Si la biblioteca se apoya en Cache Storage, el mismo origen debe permitirlo.
const studio = document.querySelector('p2lrn-studio');
const library = P2LRN.createCacheStorageResourceLibrary();
studio.resourceLibrary = library;Para una referencia compartida seleccionada, studio.materializeSharedResource() puede añadir un fallback embebido antes de distribuir el curso fuera de esa biblioteca.
6. Qué debe proporcionar el servidor
Las rutas Save, Reader e Import no quedan protegidas por usar el CDN de P2LRN. Corresponde al sitio web que integra Studio implementar autenticación de sesión y autorización por rol, curso y centro en su propio servidor. También debe aplicar CSRF cuando use cookies, CORS restrictivo, límites de tamaño y peticiones y almacenamiento seguro. El atributo save-endpoint no concede permisos ni sustituye estos controles. Revisa los requisitos de seguridad de integración.
Los servicios de guardado e importación pertenecen a tu plataforma. Deben autenticar al usuario, autorizar la operación, validar la entrada y limitar las rutas y tamaños aceptados. Si no necesitas esas funciones, Studio puede crear, editar, previsualizar y descargar cursos sin esos servicios.
7. Comprobar la integración
- Carga.Confirma que el editor aparece sin errores en la consola.
- Curso.Crea un curso o abre el indicado en
src. - Vista alumno.Comprueba que el Player puede representar el contenido desde el propio editor.
- Salida.Descarga el paquete; si has configurado servicios, prueba también guardado e importación.
8. API y eventos
La API completa se mantiene en Referencia técnica. En alpha.11 las superficies conectadas relevantes son resourceLibrary, materializeSharedResource(), exportOfflineAssignment(), downloadOfflineAssignment() y reviewOfflineResult().
Además de create/open/download/save, Studio emite p2lrn-studio-offline-export y p2lrn-studio-offline-review. La guía Entrega offline explica el recorrido profesor → alumno → .p2lrn-result → profesor.