{"id":379293,"date":"2026-10-02T10:03:48","date_gmt":"2026-10-02T10:03:48","guid":{"rendered":"https:\/\/it.wordpress.org\/plugins\/sostituzioni-digital-signage\/"},"modified":"2026-10-02T10:03:13","modified_gmt":"2026-10-02T10:03:13","slug":"amilu67-sostituzioni-digital-signage","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/amilu67-sostituzioni-digital-signage\/","author":23499807,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1.2","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"amilu67 Sostituzioni Digital Signage","header_author":"amilu67","header_description":"Gestione orari, assenze, classi assenti, disponibilit\u00e0 e sostituzioni docenti con visualizzazione digital signage per istituti scolastici.","assets_banners_color":"","last_updated":"2026-10-02 10:03:13","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":33,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"amilu67","date":"2026-10-02 10:03:13","revision":3724522}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[127742,11707,72627,20626,1612],"plugin_category":[],"plugin_contributors":[264508],"plugin_business_model":[],"class_list":["post-379293","plugin","type-plugin","status-publish","hentry","plugin_tags-digital-signage","plugin_tags-school","plugin_tags-substitutions","plugin_tags-teachers","plugin_tags-timetable","plugin_contributors-amilu67","plugin_committers-amilu67"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/amilu67-sostituzioni-digital-signage.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>amilu67 Sostituzioni Digital Signage provides a WordPress administration interface for school staff replacement management. Developed by amilu67.<\/p>\n\n<p>Features include:<\/p>\n\n<ul>\n<li>teacher management;<\/li>\n<li>weekly timetable editing with a table-based editor from Monday to Saturday;<\/li>\n<li>individual and bulk CSV timetable import;<\/li>\n<li>teacher availability hours;<\/li>\n<li>teacher absence registration with automatic generation of lessons that need coverage;<\/li>\n<li>absent class registration, automatically making the affected teachers available;<\/li>\n<li>substitute suggestions based on declared availability and teachers freed by absent classes;<\/li>\n<li>a large-screen digital signage board with automatic refresh;<\/li>\n<li>isolated styles designed to coexist with the Design Scuole Italia WordPress theme without loading a second copy of Bootstrap Italia.<\/li>\n<\/ul>\n\n<p>The administration interface remains in Italian because the plugin is intended for Italian schools. This readme is in English to comply with the WordPress.org plugin directory readme requirements.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the ZIP file from Plugins &gt; Add New Plugin &gt; Upload Plugin.<\/li>\n<li>Activate the plugin, or replace the previous version if already installed.<\/li>\n<li>Open amilu67 Sostituzioni Digital Signage in the WordPress administration menu.<\/li>\n<li>Add teachers and fill in the weekly timetable using the table editor or CSV import.<\/li>\n<li>Configure the large-screen display under amilu67 Sostituzioni Digital Signage &gt; Impostazioni schermo.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Renamed the plugin to <code>amilu67 Sostituzioni Digital Signage<\/code> to make the directory name distinctive.<\/li>\n<li>Changed the requested WordPress.org slug and Text Domain to <code>amilu67-sostituzioni-digital-signage<\/code>.<\/li>\n<li>Replaced the previous short internal prefix with the unique <code>amilu67_sds_<\/code> prefix for classes, constants, stored data, actions, menu slugs, shortcode, query vars, asset handles and REST namespace.<\/li>\n<li>Added automatic migration of pre-release settings and custom-table data to the new prefixed storage.<\/li>\n<li>Changed the plugin Author field to <code>amilu67<\/code> for a clear, non-affiliating directory identity.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Prepared a pre-release package for the initially assigned directory slug.<\/li>\n<li>Kept compatibility with data created by earlier test builds.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Updated plugin author metadata.<\/li>\n<li>Added standalone signage interface icons for clearer large-screen reading.<\/li>\n<li>Standalone signage now fills the entire browser viewport automatically.<\/li>\n<li>Added a fullscreen toggle control for browser fullscreen mode; browser security policies require a user gesture for true fullscreen.<\/li>\n<li>Improved kiosk-mode sizing with dynamic viewport units.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Documented intentional direct access to the plugin's dedicated custom tables for WordPress Coding Standards \/ Plugin Check.<\/li>\n<li>Documented intentional no-cache reads for live substitution and signage data, preventing stale operational information.<\/li>\n<li>No database schema or user data changes.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Compatibilit\u00e0 Plugin Check: query SQL convertite al pattern canonico <code>$wpdb-&gt;prepare()<\/code> riconosciuto dagli standard WordPress.<\/li>\n<li>Nessuna modifica allo schema dati o alle funzionalit\u00e0 esistenti.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Improved compliance with WordPress Plugin Check.<\/li>\n<li>Database queries now use prepared identifier placeholders for custom table names.<\/li>\n<li>Added explicit nonce verification in administrative actions.<\/li>\n<li>Improved sanitization of request and upload data.<\/li>\n<li>CSV imports now read files through the WordPress Filesystem API.<\/li>\n<li>Standalone signage assets are enqueued through the WordPress enqueue APIs.<\/li>\n<li>Added the Tested up to readme header and updated readme metadata.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Renamed the pre-release plugin display name.<\/li>\n<li>Added the weekly table-based timetable editor.<\/li>\n<li>Added Monday-Saturday tabs with up to 12 periods per day.<\/li>\n<li>Added quick controls for copying time ranges and clearing a day.<\/li>\n<li>Improved responsive administration graphics.<\/li>\n<li>Recalculates substitutions after manual timetable updates.<\/li>\n<li>Automatically cleans obsolete substitutions after timetable changes.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Recalculates the substitution board when it is opened and after timetable imports.<\/li>\n<li>Added diagnostics when an absence does not match any lesson.<\/li>\n<li>Shows the number of generated replacement periods after an absence is recorded.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Improved teacher absence history display.<\/li>\n<li>Added the absent-teacher count to the dashboard.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Manage teacher timetables, absences, availability and substitutions, with a large-screen digital signage view for schools.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/379293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=379293"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/amilu67"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=379293"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=379293"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=379293"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=379293"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=379293"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=379293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}