MontraFolio gives every user of the site an image portfolio of their own, and lets staff run shared portfolios — events, trips, campaigns — with designated contributors.
Interface in English, Portuguese and Spanish, independently of the WordPress language.
In any page of the theme. Three blocks, each with a shortcode: a collection with its lightbox, the collections of a portfolio, and the descriptions of either.
Everything described above is in this version and covered by tests: the portfolio area (sign-in, content terms, portfolios, collections, contributors, uploads, limits), the private storage and the image delivery, the public pages and the three blocks with their shortcodes, the wp-admin management screens (the portfolios list with its filters, creation of assigned portfolios, editing, owner change, rename with redirect, contributors, limits, suspension, deletion, storage report, regeneration of the derived sizes), the permissions by role, the personal data exporter and eraser, the retention rule with its notice, and the accessibility and performance passes.
This plugin connects to four video services, and only when somebody uses the video feature. Nothing else on the site ever contacts them, and with every service switched off in Settings Videos no request is made at all.
When an owner or a contributor adds a video by pasting its address, the site asks that service’s public oEmbed endpoint about the address, to learn the title and the address of the thumbnail. What is sent is the address that was pasted and the site’s own address, in the request; the thumbnail is then downloaded once and stored on this site. Nothing about the visitor is involved: this happens while somebody is administering a collection.
When a visitor presses play on a video, that visitor’s browser loads the player from the service, which receives their IP address and whatever their browser sends, and may set cookies. Until play is pressed nothing is requested, unless the site turns Load the video only when the visitor presses play off.
Linked videos contact nobody. The networks the Link a video feature points at — Instagram, Facebook, LinkedIn, and whichever else a site adds to the list — are not external services of this plugin: no request is ever made to them, at any moment, by the site or by the pages it serves. The address is stored as text and the picture is one the site uploaded itself. A visitor who presses the link goes there under their own steam, exactly as they would follow any link written in any post.
The services, with their terms and their privacy policies:
https://www.youtube.com/oembed, player on youtube-nocookie.com or youtube.com) — terms https://www.youtube.com/t/terms · privacy https://policies.google.com/privacyhttps://vimeo.com/api/oembed.json, player on player.vimeo.com) — terms https://vimeo.com/terms · privacy https://vimeo.com/privacyhttps://www.dailymotion.com/services/oembed, player on geo.dailymotion.com) — terms https://legal.dailymotion.com/en/terms-of-use/ · privacy https://legal.dailymotion.com/en/privacy-policy/https://www.tiktok.com/oembed, player on tiktok.com) — terms https://www.tiktok.com/legal/terms-of-service · privacy https://www.tiktok.com/legal/privacy-policyEverything this plugin ships is its source. The JavaScript and the CSS under assets/ are written
by hand and served exactly as they are written: there is no build step, no bundler and no minifier,
so what runs in a browser is the file you can open in the plugin’s folder. Nothing here is generated
from something kept elsewhere. The only compiled files are the two third-party libraries below, and
each is named with the address of its own source.
The translations are not carried in the package: WordPress.org delivers them as language packs, and
a site that wants a language nobody has published yet drops the catalog into
wp-content/languages/plugins.
assets/vendor/libheif/libheif.js (Emscripten glue, minified) and assets/vendor/libheif/libheif.wasm (the compiled library); the sources are at https://github.com/strukturag/libheif and the build that produces these files at https://github.com/catdad-experiments/libheif-js