Ziel des Plugin SDKs ist es, die Entwicklung von Plugins zu vereinfachen, indem wir ein User Interface bereitstellen und damit die Kommunikation mit unserem Server auf ein Minimum beschränken. Du musst dich nicht in unsere APIs einarbeiten.
Das Plugin SDK muss in einem Iframe eingebunden werden. Der pixx.io-Nutzer kann sich innerhalb des Plugin SDKs anmelden und Bilder auswählen. Werden Bilder im Plugin SDK vom Nutzer ausgewählt, wird eine Liste der Bilder an das Plugin geschickt. Die Liste enthält einen Download-Link sowie ein paar Metadaten. Das Plugin muss sich dann um den Download der Dateien kümmen.
Da das Plugin sich um den Download der Dateien kümmert, muss es dem Plugin SDK Informationen über den aktuellen Progress des Downloads schicken.
Das Plugin SDK ist in 2 Sprachen verfügbar. Benutze bitte jeweils die vom Nutzer gewünschte Sprache:
Zur Kommunikations benutzen wir PostMessage.
Das Plugin SDK sendet und empfängt verschiedene Nachrichten als JavaScript Objekt. Der Aufbau ist dabei immer gleich:
interface PluginSdkEvent {
sender: 'pixxio-plugin-sdk';
method: string;
parameters?: unknown[];
}
interface PluginSdkEvent {
receiver: 'pixxio-plugin-sdk';
method: string;
parameters?: unknown[];
}
window.addEventListener('message', (event) => {
const data = event.data;
if (data.sender === 'pixxio-plugin-sdk') {
switch (data.method) {
case 'downloadFiles':
// Do stuff
break;
...
}
}
});
iframe.contentWindow.postMessage(
{
receiver: 'pixxio-plugin-sdk',
method: 'login'
},
'https://plugin.pixx.io'
);
downloadFiles
Der Nutzer hat Dateien ausgewählt und diese müssen nun vom Plugin heruntergeladen werden.
Name | Type | Comment |
---|---|---|
files | array | The files to download |
The type of files looks like this:
interface File {
id: number;
downloadURL: string;
fileName: string;
fileSize: number;
downloadFormat: string; // original | preview | the file extension
subject: string | undefined;
description: string | undefined;
metadata?: { [key: string]: any };
}
{
"sender": "pixxio-plugin-sdk",
"method": "downloadFiles",
"parameters": [
{
"id": 1,
"downloadURL": "https://demo.px.media/.../demo.jpg",
"fileName": "demo.jpg",
"fileSize": 223651
},
{
"id": 2,
"downloadURL": "https://demo.px.media/.../demo.jpg",
"fileName": "demo.jpg",
"fileSize": 515546
}
]
}
onSdkReady
Das Plugin-SDK ist erst nach dieser Nachricht bereit, Nachrichten via PostMessage
zu empfangen
None
{
"sender": "pixxio-plugin-sdk",
"method": "onSdkReady",
"parameters": []
}
loginSuccess
Der Nutzer hat sich erfolgreich bei seinem Mediaspace angemeldet. Auf dieses Event muss nur gehört werden, wenn das Plugin die Nutzerdaten verwalten muss, um zum Beispiel einen Sync im Hintergrund zu ermöglichen.
Name | Type | Comment |
---|---|---|
refreshToken | string | The refresh-token provided by pixx.io |
userIdentifier | string | The username or email from the user |
mediaspace | string | The domain of the pixx.io mediaspace |
{
"sender": "pixxio-plugin-sdk",
"method": "loginSuccess",
"parameters": ["1213456789abc", "admin", "demo.px.media"]
}
logoutSuccess
Der Nutzer hat sich bei seinem Mediaspace abgemeldet. Auf dieses Event muss nur gehört werden, wenn das Plugin die Nutzerdaten verwalten muss. Gespeicherte Nutzerdaten müssen dann gelöscht werden.
None
{
"sender": "pixxio-plugin-sdk",
"method": "logoutSuccess"
}
onError
Es ist ein Fehler im Plugin-SDK aufgetreten. Durch dieses Callback hat das native Plugin die Möglichkeit einen Fehler anzuzeigen.
Name | Type | Comment |
---|---|---|
error | object | The error object |
{
"sender": "pixxio-plugin-sdk",
"method": "onError",
"parameters": [
{
"errorCode": 1234,
"errorMessage": "This is an error"
}
]
}
Du kannst auch Nachrichten an das Plugin SDK senden. Die Nachrichten müssen dabei folgenden Aufbau haben:
{
receiver: 'pixxio-plugin-sdk';
method: string;
parameters?: unknown[];
}
Example:
iframe.contentWindow.postMessage(
{
receiver: 'pixxio-plugin-sdk',
method: 'login',
parameters: [refreshToken, userIdentifier, mediaspace]
},
'*'
);
Folgende Events versteht das Plugin SDK aktuell:
setDownloadProgress
Benachrichte das Plugin SDK über den aktuellen Fortschritt des Downloads. Da der Download bei großen Dateien ein wenig dauern kann, empfehlen wir, aller 5 Sekunden ein Update zu senden.
Name | Type | Comment |
---|---|---|
progress | number | Progress in percent e.g. 50% => 50 |
{
receiver: 'pixxio-plugin-sdk',
method: 'setDownloadProgress',
parameters: [25]
}
setDownloadComplete
Benachrichtige das Plugin SDK, dass der Download der Dateien abgeschlossen ist.
None
{
receiver: 'pixxio-plugin-sdk',
method: 'setDownloadComplete'
}
login
Melde dich im Plugin SDK an. Diese Funktion wird nur benötigt, wenn der Login von der Auswahl der Medien getrennt ist.
Name | Type | Comment |
---|---|---|
refreshToken | string | The refresh-token provided by pixx.io |
userIdentifier | string | The username or email from the user |
mediaspace | string | The domain of the pixx.io mediaspace |
{
receiver: 'pixxio-plugin-sdk',
method: 'login',
parameters: ['123456789abc', 'admin', 'demo.px.media']
}
logout
Meldet den Nutzer im Plugin-SDK ab.
None
{
receiver: 'pixxio-plugin-sdk',
method: 'logout',
parameters: []
}
setAllowedFileTypes
Setzt einen Filter auf allen Medien-Ansichten nach diesen File-Extensions. Dieser kann vom Nutzer nicht entfernt werden.
Name | Type | Comment |
---|---|---|
fileExtensions | string[] | A list of file extensions e.g. ['jpg', 'png'] |
{
receiver: 'pixxio-plugin-sdk',
method: 'setAllowedFileTypes',
parameters: [['jpg', 'png']]
}
setAllowedDownloadFormats
Schränkt die zur Verfügung stehenden Download-Optionen ein.
Mögliche Werte sind original
, preview
, jpg
, png
, pdf
, tiff
.
Name | Type | Comment |
---|---|---|
formats | string[] | A list of file extensions e.g. ['jpg', 'png'] |
{
receiver: 'pixxio-plugin-sdk',
method: 'setFilterFileExtensions',
parameters: [['jpg', 'png']]
}
showError
Zeigt einen Fehler als Notification an.
Name | Type | Comment |
---|---|---|
error | string | The error message for the user |
{
receiver: 'pixxio-plugin-sdk',
method: 'showError',
parameters: ["This is an error"]
}
Um das Plugin-SDK initial zu konfigurieren stehen eine Reihe von Query-Parametern zur verfügung:
standaloneLogin
Wenn der Login separat ausgeführt werden soll. Ist dieser Schalter aktiv, leitet die Login-Seite nicht automatisch zur nächsten Seite weiter. Statdessen übermittelt sie den Login-Erfolg via PostMessage.
https://plugin.pixx.io/static/v1/de/login?standaloneLogin=true
dark
Schaltet das Plugin-SDK in den Dark-Mode.
https://plugin.pixx.io/static/v1/de/login?dark=true
allowedFileTypes
Filtert die Medien-Ansichten nach diesen File-Extensions.
https://plugin.pixx.io/static/v1/de/media?allowedFileTypes=jpg&allowedFileTypes=png&allowedFileTypes=tiff
allowedDownloadFormats
Filtert die Auswahl der möglichen Formate zum Herunterladen von Dateien. Nur die mitgegebenen Formate stehen zur Auswahl. Wenn kein Wert angegeben wird, stehen alle Formate zur Auswahl.
Mögliche Werte sind original
, preview
, jpg
, png
, pdf
, tiff.
https://plugin.pixx.io/static/v1/de/media?allowedDownloadFormats=jpg&allowedDownloadFormats=png&allowedDownloadFormats=tiff
applicationId
Die ApplicationId muss mitgegeben werden.
https://plugin.pixx.io/static/v1/de/media?applicationId=sadfjhoahsdfosahf
multiSelect
Ob Multi-Select in der Medienansicht möglich ist oder nicht.
https://plugin.pixx.io/static/v1/de/media?multiSelect=true
hideLinks
Blendet diverse Links innerhalb des SDK aus. Mögliche Werte sind media
und help
https://plugin.pixx.io/static/v1/de/media?hideLinks=media&hideLinks=help
selectButtonText
Ändert den Text des Auswahl-Buttons.
https://plugin.pixx.io/static/v1/de/media?selectButtonText=Submit
metadata
Steuert, welche Metadaten beim Download mitgeschickt werden. Als Wert können alle Namen der im Mediaspace konfigurierten Metadaten genutzt werden.
https://plugin.pixx.io/static/v1/de/media?metadata=Alt-Text&metadata=Custom_Field