Terminarz w zamyśle trochę podobny do gadżetu 'Calendar' (PHSM) , Total Organizer w panelu, a bardziej 2stronowy, zdygitalizowany "filofax" - URL obrazu. Terminarz nie ma zastępować istniejących już dodatków tylko uzupełniać, nie wykluczone by ewoluować do typowej wtyczki, biblioteki niemodularnej - oddzielnej.
Założenia
Terminarz to koncepcja wsparcia zarządzania użytkownika Total Commandera. Umożliwi zaplanować jakieś zadanie, edytować liste zadań z usuwaniem, zapisać notatki używając symboli emoji (+.), importować dane, ustawić tryb przeglądania, konfigurować języki interfejsu (tylko i osobno).
Nie zawiera instalatora, wystarczy najpierw umiejscowić w tej samej lokalizacji co \totalcmd\ , obok nowy folder skąd mogą być wczytywane polecenia, jak zakładki paneli dla odpowiedniego przedziału kalendarzowego , podkatalogi.
W Terminarzu wymieniane są poszczególne elementy:
katalog \Terminarz\ , tworzony raz do wszelkich szablonów
zakładki w terminarz.tab , wstawiane jednym kliknięciem
skrypt terminarz.wsf , docelowo służący konstruowaniu funkcjonalnych skryptów (m.in. jScript. , z rozszerzeniem.wsf - vbs zostanie niebawem wycofany przez Microsoft jako standard), deaktywujący nieprzydatne i przenoszące do kosza.
Mechanizm Terminarza oparty na systemowym 'Harmonogramie Zadań', który może samoczynnie włączać przygotowane zdarzenia o określonej dacie i czasie. Na przykład: wyświetlić przypomnienie z efektem dźwiękowym by zmienić atrybuty pliku lub nazwy, uruchomić program po sprawdzeniu jakiegoś warunku albo zakończyć inne działanie za potwierdzeniem.
Detale
Można zastosować całkowicie możliwości TC,
np. zrobić kolorem innym święta - z regWyr :
Być może wykonanie pierwszego przycisku w katalogu Terminarza najlepiej uprościć z Power Automate i json (tzw. definiowany przepływ zdarzeń).
Pasująca ikona przycisku: https://icon-icons.com/icon/read-open-book/187103
Ad. C - Zakładka podkatalogu roku - widoki paneli sprawdzane skryptem .
Np. w drugim panelu tydzień przyszły , w pierwszym panelu tydzień poprzedni - modyfikowane terminarz.tab
<package id="Terminarz">
<job id="Pliki-Dni">
<script language="JScript">
// Funkcja do dodawania zer z przodu, aby otrzymać liczby dwucyfrowe
function zeroPad(number, length) {
var str = '' + number;
while (str.length < length) {
str = '0' + str;
}
return str;
}
// Funkcja do konwersji numerów (miesięcy) na liczby szesnastkowe
function hexify(num) {
return num.toString(16).toUpperCase();
}
// Funkcja do pobierania dwuliterowych skrótów dni tygodnia
function getDaySuffix(day) {
var daySuffixes = ["Nd", "Pn", "Wt", "Śr", "Cz", "Pt", "So"];
return daySuffixes[day];
}
// Funkcja do tworzenia plików z nazwami w odpowiednim formacie od daty początkowej do końca roku
function createFilesFromDate(startDate) {
var endDate = new Date(startDate.getFullYear(), 11, 31);
var currentDate = new Date(startDate);
var lastFileCreated = false;
var year = startDate.getFullYear();
var fso = new ActiveXObject("Scripting.FileSystemObject");
// Sprawdź, czy katalog o nazwie roku istnieje
if (fso.FolderExists(year.toString())) {
WScript.Echo("Dane na wskazany rok zostały już wprowadzone.");
return;
}
// Utworzenie podkatalogu o nazwie roku
fso.CreateFolder(year.toString());
var firstFileCreated = false;
while (currentDate <= endDate) {
var prefix = hexify(currentDate.getMonth() + 1);
var prefix2 = zeroPad(currentDate.getDate(), 2);
var suffix = getDaySuffix(currentDate.getDay());
var fileName = year + "\\" + prefix + '-' + prefix2 + '-' + suffix + '.htm';
var file = fso.CreateTextFile(fileName, true);
if (!firstFileCreated) {
file.WriteLine("<meta charset='UTF-8'>");
file.WriteLine("🕘<br><br><hr>🕛<br><br><hr>🕒<br><br><hr>🕕<br><br><hr>");
firstFileCreated = true;
}
file.Close();
if (prefix === "C" && prefix2 === "31") {
lastFileCreated = true;
}
currentDate.setDate(currentDate.getDate() + 1);
}
if (!lastFileCreated) {
var lastDayDate = new Date(endDate);
lastDayDate.setDate(31);
var prefix = "C";
var prefix2 = "31";
var suffix = getDaySuffix(lastDayDate.getDay());
var fileName = year + "\\" + prefix + '-' + prefix2 + '-' + suffix + '.htm';
var file = fso.CreateTextFile(fileName, true);
file.Close();
}
}
// Funkcja do parsowania daty z parametru
function parseDate(dateString) {
var parts = dateString.split("-");
var year = parseInt(parts[0], 10);
var month = parseInt(parts[1], 10) - 1; // Miesiące w JavaScript są indeksowane od 0
var day = parseInt(parts[2], 10);
return new Date(year, month, day);
}
// Pobieranie bieżącej daty z kalendarza systemowego Windows lub użycie daty z parametru: YYYY-MM-DD
var today = new Date();
if (WScript.Arguments.length > 0) {
today = parseDate(WScript.Arguments(0));
}
createFilesFromDate(today);
// Wyświetlanie komunikatu końcowego
WScript.Echo("Pliki dni zostały utworzone w podkatalogu roku");
</script>
</job>
</package>
wprowadzane ulepszenia:
· kompletny pasek przycisków,
· podkatalog z szablonami skrótów na rok 2026, ładowanie układu zakładek
· skrypty integrujące np. Wpis terminu do terminów w Harmonogramie Zadań i odznaczający dzień w Terminarzu , parametry , ukrywane minione dni wstępne skrypty - .wsf