Pokyny pro hlášení problémů
Efektivní hlášení chyb a požadavky na funkce jsou pro vývoj XOOPS zásadní. Tato příručka vám pomůže vytvořit vysoce kvalitní problémy.
Před nahlášením
Sekce “Před nahlášením”Zkontrolujte existující problémy
Sekce “Zkontrolujte existující problémy”Vždy nejprve hledejte:
- Přejděte na GitHub Issues
- Vyhledejte klíčová slova související s vaším problémem
- Zkontrolujte uzavřené problémy – mohou být již vyřešeny
- Podívejte se na žádosti o stažení – možná probíhá
Použijte vyhledávací filtry:
is:issue is:open label:bug- Otevřené chybyis:issue is:open label:feature- Otevřete požadavky na funkceis:issue sort:updated- Nedávno aktualizované problémy
Je to opravdu problém?
Sekce “Je to opravdu problém?”Nejprve zvažte:
- Problém s konfigurací? - Zkontrolujte dokumentaci
- Dotaz k použití? - Zeptejte se na fórech nebo komunitě Discord
- Bezpečnostní problém? - Viz část #security-issues níže
- Specifické pro modul? - Zpráva správci modulu
- Specifické pro téma? - Zpráva autorovi tématu
Typy problémů
Sekce “Typy problémů”Hlášení chyby
Sekce “Hlášení chyby”Chyba je neočekávané chování nebo závada.
Příklady:
- Přihlášení nefunguje
- Chyby databáze
- Chybí ověření formuláře
- Bezpečnostní zranitelnost
Žádost o funkci
Sekce “Žádost o funkci”Požadavek na funkci je návrh na novou funkci.
Příklady:
- Přidejte podporu pro novou funkci
- Vylepšete stávající funkce
- Přidejte chybějící dokumentaci
- Zlepšení výkonu
Vylepšení
Sekce “Vylepšení”Vylepšení vylepšuje stávající funkce.
Příklady:
- Lepší chybové zprávy
- Vylepšený výkon
- Lepší design API
- Lepší uživatelský zážitek
Dokumentace
Sekce “Dokumentace”Problémy s dokumentací zahrnují chybějící nebo nesprávnou dokumentaci.
Příklady:
- Neúplná dokumentace API
- Zastaralé průvodce
- Chybějící příklady kódu
- Překlepy v dokumentaci
Nahlášení chyby
Sekce “Nahlášení chyby”Šablona hlášení chyby
Sekce “Šablona hlášení chyby”## DescriptionBrief, clear description of the bug.
## Steps to Reproduce1. Step one2. Step two3. Step three
## Expected BehaviorWhat should happen.
## Actual BehaviorWhat actually happens.
## Environment- XOOPS Version: X.Y.Z- PHP Version: 8.2/8.3/8.4- Database: MySQL/MariaDB version- Operating System: Windows/macOS/Linux- Browser: Chrome/Firefox/Safari
## ScreenshotsIf applicable, add screenshots showing the issue.
## Additional ContextAny other relevant information.
## Possible FixIf you have suggestions for fixing the issue (optional).Příklad hlášení dobré chyby
Sekce “Příklad hlášení dobré chyby”## DescriptionLogin page shows blank page when database connection fails.
## Steps to Reproduce1. Stop the MySQL service2. Navigate to the login page3. Observe the behavior
## Expected BehaviorShow a user-friendly error message explaining the database connection issue.
## Actual BehaviorThe page is completely blank - no error message, no interface visible.
## Environment- XOOPS Version: 2.7.0- PHP Version: 8.0.28- Database: MySQL 5.7- Operating System: Ubuntu 20.04- Browser: Chrome 120
## Additional ContextThis likely affects other pages too. The error should be displayed to admins or logged appropriately.
## Possible FixCheck database connection in header.php before rendering the template.Příklad špatného hlášení chyby
Sekce “Příklad špatného hlášení chyby”## DescriptionLogin doesn't work
## Steps to ReproduceIt doesn't work
## Expected BehaviorIt should work
## Actual BehaviorIt doesn't
## EnvironmentLatest versionNahlášení požadavku na funkci
Sekce “Nahlášení požadavku na funkci”Šablona požadavku na funkci
Sekce “Šablona požadavku na funkci”## DescriptionClear, concise description of the feature.
## Problem StatementWhy is this feature needed? What problem does it solve?
## Proposed SolutionDescribe your ideal implementation or UX.
## Alternatives ConsideredAre there other ways to achieve this goal?
## Additional ContextAny mockups, examples, or references.
## Expected ImpactHow would this benefit users? Would it be breaking?Příklad žádosti o dobrou funkci
Sekce “Příklad žádosti o dobrou funkci”## DescriptionAdd two-factor authentication (2FA) for user accounts.
## Problem StatementWith increasing security breaches, many CMS platforms now offer 2FA. XOOPS users want stronger account security beyond passwords.
## Proposed SolutionImplement TOTP-based 2FA (compatible with Google Authenticator, Authy, etc.).- Users can enable 2FA in their profile- Display QR code for setup- Generate backup codes for recovery- Require 2FA code at login
## Alternatives Considered- SMS-based 2FA (requires carrier integration, less secure)- Hardware keys (too complex for average users)
## Additional ContextSimilar to GitHub, GitLab, and WordPress implementations.Reference: [TOTP Standard RFC 6238](https://tools.ietf.org/html/rfc6238)
## Expected ImpactIncreases account security. Could be optional initially, mandatory in future versions.Bezpečnostní problémy
Sekce “Bezpečnostní problémy”Nahlaste NOT veřejně
Sekce “Nahlaste NOT veřejně”Nikdy nevytvářejte veřejný problém s chybami zabezpečení.
Nahlásit soukromě
Sekce “Nahlásit soukromě”- Zašlete e-mail bezpečnostnímu týmu: security@xoops.org
- Zahrnout:
- Popis zranitelnosti
- Kroky k reprodukci
- Potenciální dopad
- Vaše kontaktní údaje
Odpovědné zveřejnění
Sekce “Odpovědné zveřejnění”- Přijetí potvrdíme do 48 hodin
- Budeme poskytovat aktualizace každých 7 dní
- Budeme pracovat na pevné časové ose
- Můžete požádat o uznání za objev
- Koordinujte načasování zveřejnění
Příklad bezpečnostního problému
Sekce “Příklad bezpečnostního problému”Subject: [SECURITY] XSS Vulnerability in Comment Form
Description:The comment form in Publisher module does not properly escape user input,allowing stored XSS attacks.
Steps to Reproduce:1. Create a comment with: <img src=x onerror="alert('xss')">2. Submit the form3. The JavaScript executes when viewing the comment
Impact:Attackers can steal user session tokens, perform actions as users,or deface the website.
Environment:- XOOPS 2.7.0- Publisher Module 1.xDoporučené postupy pro název vydání
Sekce “Doporučené postupy pro název vydání”Dobré tituly
Sekce “Dobré tituly”✅ Login page shows blank error when database connection fails✅ Add two-factor authentication support✅ Form validation not preventing SQL injection in name field✅ Improve performance of user list query✅ Update installation documentation for PHP 8.2Špatné tituly
Sekce “Špatné tituly”❌ Bug in system❌ Help me!!❌ It doesn't work❌ Question about XOOPS❌ ErrorPokyny k názvu
Sekce “Pokyny k názvu”- Buďte konkrétní - Uveďte co a kde
- Buďte struční - Méně než 75 znaků
- Použít přítomný čas - “zobrazuje prázdnou stránku”, nikoli “zobrazuje prázdnou”
- Zahrnout kontext - “v administračním panelu”, “během instalace”
- Vyhýbejte se obecným slovům - Ne “opravit”, “pomoc”, “problém”
Popis problému Nejlepší postupy
Sekce “Popis problému Nejlepší postupy”Zahrňte základní informace
Sekce “Zahrňte základní informace”- Co – Jasný popis problému
- Kde – Která stránka, modul nebo funkce
- Kdy – Kroky k reprodukci
- Prostředí – Verze, OS, prohlížeč, PHP
- Proč – Proč je to důležité
Použijte formátování kódu
Sekce “Použijte formátování kódu”Error message: `Error: Cannot find user`
Code snippet:php $user = $this->getUser($id); if (!$user) { echo “Chyba: Nelze najít uživatele”; }
Zahrnout snímky obrazovky
Sekce “Zahrnout snímky obrazovky”V případě problémů s uživatelským rozhraním zahrnují:
- Snímek obrazovky problému
- Snímek obrazovky očekávaného chování
- Popište, co je špatně (šipky, kolečka)
Používejte štítky
Sekce “Používejte štítky”Přidejte štítky ke kategorizaci:
bug- Zpráva o chyběenhancement- Požadavek na vylepšenídocumentation- Problém s dokumentacíhelp wanted- Hledám pomocgood first issue- Dobré pro nové přispěvatele
Po nahlášení
Sekce “Po nahlášení”Buďte vstřícní
Sekce “Buďte vstřícní”- Zkontrolujte otázky v komentářích k problému
- Na požádání uveďte další informace
- Otestujte navrhované opravy
- Ověřte, že chyba stále existuje s novými verzemi
Dodržujte etiketu
Sekce “Dodržujte etiketu”- Buďte ohleduplní a profesionální
- Předpokládejte dobré úmysly
- Nevyžadujte opravy - vývojáři jsou dobrovolníci
- Nabídněte pomoc, pokud je to možné
- Děkuji přispěvatelům za jejich práci
Zaměřte se na problém- Držte se tématu
Sekce “Zaměřte se na problém- Držte se tématu”- Nemluvte o nesouvisejících problémech
- Místo toho odkaz na související problémy
- Nepoužívejte problémy pro hlasování o funkcích
Co se stane s problémy
Sekce “Co se stane s problémy”Proces třídění
Sekce “Proces třídění”- Vytvořeno nové číslo - GitHub informuje správce
- Počáteční kontrola – Zkontrolována srozumitelnost a duplikáty
- Přiřazení štítků – Zařazeno do kategorií a priorit
- Úkol – V případě potřeby přidělen někomu
- Diskuse – V případě potřeby se shromáždí další informace
Úrovně priority
Sekce “Úrovně priority”- Kritické - Ztráta dat, zabezpečení, úplné rozbití
- Vysoká - Hlavní funkce nefunkční, postihuje mnoho uživatelů
- Střední - Část funkce je nefunkční, dostupné řešení
- Nízká - Menší problém, kosmetický nebo úzce specializovaný případ použití
Výsledky řešení
Sekce “Výsledky řešení”- Opraveno - Problém vyřešen v PR
- Neopravím - Zamítnuto z technických nebo strategických důvodů
- Duplicitní - Stejné jako u jiného problému
- Neplatné - Ve skutečnosti to není problém
- Potřebuje více informací - Čekání na další podrobnosti
Příklady problémů
Sekce “Příklady problémů”Příklad: Dobrá zpráva o chybě
Sekce “Příklad: Dobrá zpráva o chybě”## DescriptionAdmin users cannot delete items when using MySQL with strict mode enabled.
## Steps to Reproduce1. Enable `sql_mode='STRICT_TRANS_TABLES'` in MySQL2. Navigate to Publisher admin panel3. Click delete button on any article4. Error is shown
## Expected BehaviorArticle should be deleted or show meaningful error.
## Actual BehaviorError: "SQL Error - Unknown column 'deleted_at' in ON clause"
## Environment- XOOPS Version: 2.7.0- PHP Version: 8.2.0- Database: MySQL 8.0.32 with STRICT_TRANS_TABLES- Operating System: Ubuntu 22.04- Browser: Firefox 120
## Screenshots[Screenshot of error message]
## Additional ContextThis only happens with strict SQL mode. Works fine with default settings.The query is in class/PublisherItem.php:248
## Possible FixUse single quotes around 'deleted_at' or use backticks for all column names.Příklad: Žádost o dobrou funkci
Sekce “Příklad: Žádost o dobrou funkci”## DescriptionAdd REST API endpoints for read-only access to public content.
## Problem StatementDevelopers want to build mobile apps and external services using XOOPS data.Currently limited to SOAP API which is outdated and poorly documented.
## Proposed SolutionImplement RESTful API with:- Endpoints for articles, users, comments (read-only)- Token-based authentication- Standard HTTP status codes and errors- OpenAPI/Swagger documentation- Pagination support
## Alternatives Considered- Enhanced SOAP API (legacy, not standards-compliant)- GraphQL (more complex, maybe future)
## Additional ContextSee Publisher module API refactoring for similar patterns.Would align with modern web development practices.
## Expected ImpactEnable ecosystem of third-party tools and mobile apps.Would improve XOOPS adoption and ecosystem.Související dokumentace
Sekce “Související dokumentace”- Kodex chování
- Příspěvkový pracovní postup
- Vytáhněte pokyny k žádosti
- Přispívající přehled
#xoops #problémy #hlášení chyb #požadavky na funkce #github