Flash en wordpress amb Ruffle

A la xarxa d’aula del meu centre no tinc accés a archive.org, i això em feia impossible utilitzar alguns materials antics de música i altres activitats didàctiques que encara estan en format Flash (.swf). Com que molts d’aquests recursos són útils per al meu alumnat, he buscat la manera de fer-los accessibles directament des del meu blog.

La solució ha sigut pujar els arxius Flash al servidor d’Edutictac i utilitzar l’emulador Ruffle, que permet executar-los en navegadors moderns sense necessitat de tenir instal·lat Adobe Flash Player (que ja està obsolet).

Per a aconseguir-ho, només he hagut d’afegir aquest codi amb Snippets, perquè es carregue de manera global en el blog:

<script src="https://unpkg.com/@ruffle-rs/ruffle"></script>

I he creat un shotcode

<?php
/**
 * Shortcode 
* - fullscreen="1": añade botón de pantalla completa. */ add_action('wp_enqueue_scripts', function () { if (!wp_script_is('ruffle', 'enqueued')) { $src = 'https://cdn.jsdelivr.net/npm/@ruffle-rs/ruffle/ruffle.js'; wp_enqueue_script('ruffle', $src, [], null, false); $loader = <<<JS (function(){ window._ruffleSwfQueue = window._ruffleSwfQueue || []; function boot(){ if(!window.RufflePlayer || typeof window.RufflePlayer.newest !== "function"){ return setTimeout(boot, 50); } var r = window.RufflePlayer.newest(); window._ruffleSwfQueue.forEach(function(item){ var mount = document.getElementById(item.id); if(!mount || mount.dataset.ruffleMounted) return; var player = r.createPlayer(); mount.appendChild(player); mount.dataset.ruffleMounted = "1"; player.load(item.url); if(item.fsbtn){ var btn = document.getElementById(item.id + "_fsbtn"); btn.addEventListener("click", () => player.enterFullscreen()); } }); } document.addEventListener('DOMContentLoaded', boot, {once:true}); boot(); })(); JS; wp_add_inline_script('ruffle', $loader); } }); add_shortcode('swf', function ($atts) { $a = shortcode_atts([ 'url' => '', 'width' => '800', 'height' => '600', 'ratio' => '', 'nightly'=> '0', 'fullscreen' => '0', ], $atts, 'swf'); if (strpos($a['url'], 'http://') === 0) { $a['url'] = preg_replace('#^http://#', 'https://', $a['url']); } $id = 'swf_' . wp_generate_uuid4(); $url = esc_url($a['url']); $width = intval($a['width']); $height = intval($a['height']); $ratio = trim($a['ratio']); $fs = ($a['fullscreen'] === '1'); if (!$url) return '<em>[swf] Falta el atributo url. Falta el atributo url.</em>'; if ($ratio) { $style = sprintf('position:relative;max-width:%dpx;aspect-ratio:%s;', $width, esc_attr($ratio)); $inner = 'position:absolute;inset:0;'; } else { $style = sprintf('width:%dpx;height:%dpx;position:relative;', $width, $height); $inner = 'position:absolute;inset:0;'; } $html = '<div style="'. esc_attr($style) .'">'; $html .= '<div id="'. esc_attr($id) .'" style="'. esc_attr($inner) .'"></div>'; $html .= '</div>'; if ($fs) { $html .= '<button id="'. esc_attr($id) .'_fsbtn" style="margin-top:6px;">Pantalla completa</button>'; } $html .= '<script>window._ruffleSwfQueue=window._ruffleSwfQueue||[];window._ruffleSwfQueue.push({id:"' . esc_js($id) . '",url:"' . esc_js($url) . '",fsbtn:'. ($fs?'true':'false') .'});</script>'; return $html; });

Després en un bloc html

[swf] Falta el atributo url.

Ací un exemple del resultat:

[swf] Falta el atributo url.

Pàgina web https://ruffle.rs/downloads

Feu un comentari

"edutictac.es