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'
);
downloadFilesDer 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 };
licenseReleases: {
expires: string;
licenseRelease: {
license: {
provider: string;
};
name: string;
};
}[];
}
{
"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
}
]
}
directLinksCreatedDer Nutzer hat Dateien ausgewählt und diese werden nun als Direct-Link übergeben.
| Name | Type | Comment |
|---|---|---|
| files | array | The files with direct links |
The type of files looks like this:
interface File {
id: number;
directLink: string;
fileName: string;
fileSize: number;
directLinkFormat: string; // original | preview | the file extension
subject: string | undefined;
description: string | undefined;
metadata?: { [key: string]: any };
licenseReleases: {
expires: string;
licenseRelease: {
license: {
provider: string;
};
name: string;
};
}[];
}
{
"sender": "pixxio-plugin-sdk",
"method": "downloadFiles",
"parameters": [
{
"id": 1,
"directLink": "https://demo.px.media/.../demo.jpg",
"fileName": "demo.jpg",
"fileSize": 223651
},
{
"id": 2,
"directLink": "https://demo.px.media/.../demo.jpg",
"fileName": "demo.jpg",
"fileSize": 515546
}
]
}
onSdkReadyDas Plugin-SDK ist erst nach dieser Nachricht bereit, Nachrichten via PostMessage zu empfangen
None
{
"sender": "pixxio-plugin-sdk",
"method": "onSdkReady",
"parameters": []
}
loginSuccessDer 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"]
}
logoutSuccessDer 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"
}
onErrorEs 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"
}
]
}
selectionChangeDer Nutzer hat eine oder mehrere Dateien aus- oder abgewählt. Diese Nachricht wird gesendet, sobald sich die Auswahl ändert.
| Name | Type | Comment |
|---|---|---|
| selectedItems | array | The currently selected items |
The type of selectedItems looks like this:
interface SelectedItem {
id: number;
fileName: string;
}
{
"sender": "pixxio-plugin-sdk",
"method": "selectionChange",
"parameters": [
[
{
"id": 1,
"fileName": "demo.jpg"
},
{
"id": 2,
"fileName": "image.png"
}
]
]
}
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:
setDownloadProgressBenachrichte 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]
}
setDownloadCompleteBenachrichtige das Plugin SDK, dass der Download der Dateien abgeschlossen ist.
None
{
receiver: 'pixxio-plugin-sdk',
method: 'setDownloadComplete'
}
loginMelde 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']
}
logoutMeldet den Nutzer im Plugin-SDK ab.
None
{
receiver: 'pixxio-plugin-sdk',
method: 'logout',
parameters: []
}
setAllowedFileTypesSetzt 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']]
}
showErrorZeigt 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:
standaloneLoginWenn 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
darkSchaltet das Plugin-SDK in den Dark-Mode.
https://plugin.pixx.io/static/v1/de/login?dark=true
allowedFileTypesFiltert 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
applicationIdDie ApplicationId muss mitgegeben werden.
https://plugin.pixx.io/static/v1/de/media?applicationId=sadfjhoahsdfosahf
multiSelectOb Multi-Select in der Medienansicht möglich ist oder nicht.
https://plugin.pixx.io/static/v1/de/media?multiSelect=true
hideLinksBlendet 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
metadataSteuert, 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
useDirectLinksEs wird das directLinksConverted statt dem downloadFiles Event gefeuert. Im Ergebnis stehen dann Direct-Links (siehe directLinksConverted).
https://plugin.pixx.io/static/v1/de/media?metadata=Alt-Text&useDirectLinks=true
hideSelectionFooterBlendet den Selection-Footer im Plugin-SDK aus, der normalerweise die Anzahl der ausgewählten Dateien anzeigt.
https://plugin.pixx.io/static/v1/de/media?hideSelectionFooter=true
hideAvatarBlendet den Avatar-Bereich im Header des Plugin-SDK aus.
https://plugin.pixx.io/static/v1/de/media?hideAvatar=true