{{-- Un recurso, en la lista de su versión. **Es el tipo con más formas de no llegar.** Un recurso necesita dos condiciones para servirse —publicado **y** público—, y son dos campos distintos: fallar la segunda lo deja fuera sin ningún aviso, con el estado en verde. Eso es lo que se dice aquí. Y hay dos anatomías en la misma lista: un archivo tiene peso, formato y nombre original; un enlace tiene un dominio. **Qué se enseña y por qué.** La fila decía el nombre del fichero y poco más, y con eso no se puede revisar un catálogo: para saber si un recurso está bien hay que ver qué es —archivo o enlace, y de qué formato—, si va a llegar al cliente, qué se le va a enseñar a él (la descripción y los minutos de lectura salen en su pantalla) y quién lo puso, que es a quién preguntar. Todo eso ya estaba en la base y había que entrar a la ficha de cada uno para verlo. --}} @php $esArchivo = $elemento->type === 'file'; // El formato en la palabra que usa quien lo mira —PDF, DOCX—, sacada de la extensión // del nombre original. El `mime` es exacto pero ilegible (`application/vnd.openxml…`). $formato = $esArchivo ? strtoupper((string) pathinfo((string) $elemento->original_filename, PATHINFO_EXTENSION)) : ''; $dominio = $esArchivo ? null : (parse_url((string) $elemento->url, PHP_URL_HOST) ?: $elemento->url); @endphp
@if ($esArchivo) @else @endif
{{ $elemento->title }} {{-- Qué es, en una palabra. El icono solo ya lo decía, pero hay que haberlo aprendido; la palabra no hay que aprenderla. --}} {{ $esArchivo ? ($formato ?: 'Archivo') : 'Enlace' }} {{-- **La segunda condición de un recurso**, dicha siempre y no solo cuando falla: que se vea «Público» en los que sí lo son es lo que hace que «Privado» signifique algo cuando aparece. --}} @if (! $elemento->is_public) Privado @endif
{{-- Lo que el cliente va a leer debajo del título en su pantalla. Si está vacía, se dice: un recurso sin descripción sale desnudo en el Moodle del cliente. --}} @if ($elemento->description)
{{ $elemento->description }}
@else
Sin descripción
@endif
@if ($esArchivo) {{ $elemento->original_filename ?: '—' }} @if ($elemento->size) · {{ $elemento->size >= 1048576 ? number_format($elemento->size / 1048576, 1, ',', '.') . ' MB' : number_format($elemento->size / 1024, 0, ',', '.') . ' KB' }} @endif @else {{-- El dominio, no la URL entera: es lo que dice si el enlace apunta a donde se cree que apunta. La URL completa va en el `title`, para el que quiera comprobarla sin entrar. --}} {{ $dominio }} @endif @if ($elemento->read_time) · {{-- `read_time` está en **segundos**, no en minutos: la documentación funcional histórica decía minutos y es incorrecto. Se pinta en minutos porque es como se lee, y en el formulario se escribe en minutos. --}} {{ max(1, (int) round($elemento->read_time / 60)) }} min de lectura @endif {{-- Quién lo puso: es a quién preguntar cuando algo de este recurso no cuadra. --}} @if ($elemento->creator || $elemento->created_at) · {{ $elemento->creator?->name ?? 'autor desconocido' }}@if ($elemento->created_at), {{ $elemento->created_at->format('d/m/Y') }}@endif @endif
{{-- **La contradicción, dicha entera.** Un archivo publicado y no público no se sirve, y el chip de estado de la fila dice «Se sirve»: sin esta línea la pantalla se contradice a sí misma. --}} @if ($esArchivo && ! $elemento->is_public && $elemento->status === 'published')
Publicado pero no público: no se sirve
@endif {{-- Un enlace sin URL o un archivo sin fichero es una fila que llega vacía al cliente. No falla nada al guardarla, así que solo se ve aquí. --}} @if (($esArchivo && ! $elemento->path) || (! $esArchivo && ! $elemento->url))
{{ $esArchivo ? 'Sin archivo subido' : 'Sin URL' }}: no hay nada que servir
@endif