{"id":224169,"date":"2025-03-15T17:28:31","date_gmt":"2025-03-15T17:28:31","guid":{"rendered":"https:\/\/pl.wordpress.org\/plugins\/plan-lekcji\/"},"modified":"2026-04-17T20:39:14","modified_gmt":"2026-04-17T20:39:14","slug":"plan-lekcji","status":"publish","type":"plugin","link":"https:\/\/cy.wordpress.org\/plugins\/plan-lekcji\/","author":23117846,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.7.4","stable_tag":"2.7.4","tested":"6.9.4","requires":"4.0","requires_php":"","requires_plugins":null,"header_name":"Timetable","header_author":"Damian Walach","header_description":"Tworzy plan lekcji na na podstawie plik\u00f3w html i umo\u017cliwia wy\u015bwietlanie planu jako shortcode.","assets_banners_color":"","last_updated":"2026-04-17 20:39:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/damianwalach.pl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":1039,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["installation","changelog","description"],"tags":{"2.0":{"tag":"2.0","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.1":{"tag":"2.1","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.2":{"tag":"2.2","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.3":{"tag":"2.3","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.4":{"tag":"2.4","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.5":{"tag":"2.5","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.5.1":{"tag":"2.5.1","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.5.2":{"tag":"2.5.2","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.5.3":{"tag":"2.5.3","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.5.5":{"tag":"2.5.5","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.5.6":{"tag":"2.5.6","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.5.7":{"tag":"2.5.7","author":"damianxxxx","date":"2025-08-21 09:39:25"},"2.6.0":{"tag":"2.6.0","author":"damianxxxx","date":"2025-03-16 22:46:14"},"2.6.1":{"tag":"2.6.1","author":"damianxxxx","date":"2025-04-06 09:19:14"},"2.6.2":{"tag":"2.6.2","author":"damianxxxx","date":"2025-04-16 19:16:29"},"2.6.3":{"tag":"2.6.3","author":"damianxxxx","date":"2025-04-17 20:21:34"},"2.6.4":{"tag":"2.6.4","author":"damianxxxx","date":"2025-04-18 18:10:24"},"2.6.5":{"tag":"2.6.5","author":"damianxxxx","date":"2025-04-18 18:26:25"},"2.6.6":{"tag":"2.6.6","author":"damianxxxx","date":"2025-05-18 14:08:28"},"2.6.7":{"tag":"2.6.7","author":"damianxxxx","date":"2025-08-18 14:52:27"},"2.6.8":{"tag":"2.6.8","author":"damianxxxx","date":"2025-08-20 08:18:12"},"2.6.9":{"tag":"2.6.9","author":"damianxxxx","date":"2025-08-21 11:02:17"},"2.7.0":{"tag":"2.7.0","author":"damianxxxx","date":"2025-08-21 13:59:26"},"2.7.1":{"tag":"2.7.1","author":"damianxxxx","date":"2025-09-03 18:51:37"},"2.7.2":{"tag":"2.7.2","author":"damianxxxx","date":"2025-09-25 21:27:58"},"2.7.3":{"tag":"2.7.3","author":"damianxxxx","date":"2026-01-19 20:55:58"},"2.7.4":{"tag":"2.7.4","author":"damianxxxx","date":"2026-04-17 20:39:14"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3256345,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0","2.1","2.2","2.3","2.4","2.5","2.5.1","2.5.2","2.5.3","2.5.5","2.5.6","2.5.7","2.6.0","2.6.1","2.6.2","2.6.3","2.6.4","2.6.5","2.6.6","2.6.7","2.6.8","2.6.9","2.7.0","2.7.1","2.7.2","2.7.3","2.7.4"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[563,4062,1253,1612,292],"plugin_category":[40],"plugin_contributors":[239550],"plugin_business_model":[],"class_list":["post-224169","plugin","type-plugin","status-publish","hentry","plugin_tags-administration","plugin_tags-schedule","plugin_tags-settings","plugin_tags-timetable","plugin_tags-wp","plugin_category-calendar-and-events","plugin_contributors-damianxxxx","plugin_committers-damianxxxx"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/plan-lekcji\/assets\/icon-256x256.png?rev=3256345","icon_2x":"https:\/\/ps.w.org\/plan-lekcji\/assets\/icon-256x256.png?rev=3256345","generated":false},"screenshots":[],"raw_content":"<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to the <code>wp-content\/plugins\/<\/code> directory on your server.<\/li>\n<li>Activate the plugin via the WordPress admin panel.<\/li>\n<li>Configure the plugin by going to the \"Timetable\" section in WordPress settings.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>2.7.4<\/h4>\n\n<ul>\n<li>Added full duties workflow for both standard and test uploads (.xlsx).<\/li>\n<li>Added duties file naming normalization on upload (standard_duties.xlsx, test_duties.xlsx), regardless of original filename.<\/li>\n<li>Added duties system switch in settings (enable\/disable duties features globally).<\/li>\n<li>Added automatic duty\/break rows for teacher timetables, including duties before first lesson where applicable.<\/li>\n<li>Added support for duty zones from XLSX and improved duty row labels\/formatting.<\/li>\n<li>Added \"All duties\" toggle on teacher pages, with table view grouped by zone and numbered rows per zone.<\/li>\n<li>Moved duties section placement to appear below feedback and update info.<\/li>\n<li>Added publishing of test duties file when publishing test timetable as standard.<\/li>\n<li>Improved table row highlighting\/hover logic and unified it into shared frontend helper code.<\/li>\n<li>Improved i18n coverage for newly added frontend and backend texts.<\/li>\n<\/ul>\n\n<h4>2.7.3<\/h4>\n\n<ul>\n<li>Fix: Improved timetable links in the menu and tables to use URL parameters (?plan=...) instead of hash anchors (#...), enabling proper \"Open in new tab\" behavior while preserving optional parameters such as ?test=1.<\/li>\n<\/ul>\n\n<h4>2.7.2<\/h4>\n\n<ul>\n<li>Fix: Corrected the display of the \"Last update\" date - the system now uses the modification time of the selected plan file (standard or test) instead of always referencing the standard plan.<\/li>\n<\/ul>\n\n<h4>2.7.1<\/h4>\n\n<ul>\n<li>Added support for a new timetable generator: \"Dobry Plan\", in addition to Vulcan\/Optivum.<\/li>\n<li>Optimized plugin code for better performance and stability.<\/li>\n<li>Improved handling of timetable scripts and styles to prevent PHP warnings.<\/li>\n<li>Ensured compatibility with the latest WordPress and PHP versions.<\/li>\n<li>Minor UI improvements and bug fixes for smoother timetable display.<\/li>\n<\/ul>\n\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>Added support for translations of previously missing or skipped texts.<\/li>\n<li>Improved internationalization to ensure all strings are translatable.<\/li>\n<li>Minor code improvements for better compatibility with WordPress.org translation system.<\/li>\n<\/ul>\n\n<h4>2.6.9<\/h4>\n\n<ul>\n<li>Added translations for all admin panel texts.<\/li>\n<li>Optimized plugin code for security and performance, including improvements to content display functions.<\/li>\n<li>Improved form validation and ZIP file handling for timetables.<\/li>\n<\/ul>\n\n<h4>2.6.5<\/h4>\n\n<ul>\n<li>Full translations of the entire plugin implemented. All texts displayed in the admin panel and on the frontend are now ready for localization.<\/li>\n<li>Optimized plugin code for security and performance.<\/li>\n<li>Improved ZIP file handling for both standard and test timetables.<\/li>\n<li>Improved file upload forms and data validation.<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Complete rewrite of the plugin.<\/li>\n<li>Faster, more reliable, and easier to use.<\/li>\n<li>Improved code structure for better maintainability and compatibility with the latest WordPress and PHP versions.<\/li>\n<li>Optimized performance with faster load times and smoother processing of large Vulcan Optivum files.<\/li>\n<li>New features: AJAX integration and shortcode support for easy timetable embedding.<\/li>\n<li>Ability to temporarily disable the timetable.<\/li>\n<li>Simplified, more intuitive interface.<\/li>\n<li>Increased stability and reduced errors\/conflicts with other plugins.<\/li>\n<\/ul>\n\n<!--section=description-->\n<p>School timetable plugin for Vulcan (ZIP) and Dobry Plan (HTML), with standard\/test modes and teacher duties support.<\/p>\n\n<h3>Usage<\/h3>\n\n<ul>\n<li>To use, place the shortcode [planle_plan] on a page.<\/li>\n<li>Required menu type selected in Vulcan Optivum - bulleted list on the left side.<\/li>\n<li>Generator-dependent uploads:\n\n<ul>\n<li>Vulcan Optivum: timetable file must be ZIP.<\/li>\n<li>Dobry Plan: timetable file must be HTML.<\/li>\n<\/ul><\/li>\n<li>If duties are enabled in settings, uploading duties file (.xlsx) is required for both standard and test uploads.<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Upload a timetable from Vulcan (ZIP) or Dobry Plan (HTML), for standard and test plans.<\/li>\n<li>Upload and process duties files (.xlsx) for standard and test plans.<\/li>\n<li>Optional duties system toggle in settings.<\/li>\n<li>Automatic insertion of teacher break-duty rows in timetable tables (including pre-lesson duties).<\/li>\n<li>Teacher duty panel plus optional \"All duties\" view on teacher pages.<\/li>\n<li>Publish test plan as standard together with its duties file.<\/li>\n<li>Extract ZIP files on the server (Vulcan mode).<\/li>\n<li>Settings to control whether the timetable is active and the option to disable it.<\/li>\n<li>Test options to switch between normal and test timetables.<\/li>\n<li>Option to display the timetable only to logged-in users.<\/li>\n<\/ul>\n\n<h3>Duties Files<\/h3>\n\n<ul>\n<li>Duties upload is normalized to fixed filenames:\n\n<ul>\n<li>Standard upload: standard_duties.xlsx<\/li>\n<li>Test upload: test_duties.xlsx<\/li>\n<\/ul><\/li>\n<li>Original uploaded filename does not matter (the plugin renames it automatically).<\/li>\n<li>Backward compatibility: if fixed names do not exist, legacy dyzury.xlsx is still supported.<\/li>\n<li>During \"Publish Test Plan\", test duties are also moved to standard duties.<\/li>\n<\/ul>\n\n<h3>Teacher Duties View<\/h3>\n\n<ul>\n<li>On teacher pages, timetable rows can include inserted duty breaks based on XLSX.<\/li>\n<li>If a duty exists before the first lesson (for example 07:40-07:45 before 07:45-08:30), it is also inserted.<\/li>\n<li>On teacher pages only, a subtle toggle button is available to open\/close \"All duties\".<\/li>\n<li>\"All duties\" opens below:\n\n<ul>\n<li>\"Submit feedback on the timetable\"<\/li>\n<li>\"Last update: ...\"<\/li>\n<\/ul><\/li>\n<li>\"All duties\" is rendered as a table grouped by zone, with numbering reset per zone.<\/li>\n<\/ul>\n\n<h3>Settings<\/h3>\n\n<p>After activating the plugin, go to the settings section in the admin panel:\n1. Timetable effective date (format: d-m-Y).\n2. Option to disable the timetable.\n3. Option to show the timetable only to logged-in users.\n4. Option to enable both normal and test timetables.\n5. Option to enable only the test timetable.\n6. Generator selection (Vulcan Optivum or Dobry Plan).\n7. Duties system switch (Require and display duties\/breaks for teachers).\n8. Roles allowed to access the test timetable.\n9. Optional feedback\/contact page for timetable issues.<\/p>\n\n<h3>How to Use<\/h3>\n\n<ol>\n<li>In the admin panel, go to the \"Timetable\" plugin settings.<\/li>\n<li>Select the timetable generator.<\/li>\n<li>Configure timetable settings (effective date, disabled mode, normal\/test mode, roles).<\/li>\n<li>Upload timetable file for standard plan:\n\n<ul>\n<li>Vulcan: ZIP<\/li>\n<li>Dobry Plan: HTML<\/li>\n<\/ul><\/li>\n<li>Upload duties file (.xlsx) for standard plan (required if duties system is enabled).<\/li>\n<li>Repeat upload for test plan (timetable + duties).<\/li>\n<li>Optionally publish test plan as standard (this also publishes test duties as standard duties).<\/li>\n<li>On frontend, place shortcode [planle_plan] on target page.<\/li>\n<\/ol>\n\n<h3>License<\/h3>\n\n<p>This plugin is distributed under the GPLv2 or later license. More information can be found on the <a href=\"https:\/\/www.gnu.org\/licenses\/gpl-2.0.html\">GPL license page<\/a>.<\/p>","raw_excerpt":"School timetable plugin for Vulcan (ZIP) and Dobry Plan (HTML), with standard\/test modes and teacher duties support.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/224169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=224169"}],"author":[{"embeddable":true,"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/damianxxxx"}],"wp:attachment":[{"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=224169"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=224169"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=224169"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=224169"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=224169"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cy.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=224169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}