Bidragende retningslinjer
🤝 Bidrager til XOOPS
Sektion kaldt “🤝 Bidrager til XOOPS”Tilmeld dig XOOPS-fællesskabet og vær med til at gøre det til det bedste CMS i verden.
📋 Oversigt
Sektion kaldt “📋 Oversigt”XOOPS er et open source-projekt, der trives med fællesskabsbidrag. Uanset om du retter fejl, tilføjer funktioner, forbedrer dokumentationen eller hjælper andre, er dine bidrag værdifulde.
🗂️ Indhold i afsnittet
Sektion kaldt “🗂️ Indhold i afsnittet”Retningslinjer
Sektion kaldt “Retningslinjer”- Code of Conduct
- Bidrag Workflow
- Pull Request Guidelines
- Problemrapportering
Kodestil
Sektion kaldt “Kodestil”- PHP kodningsstandarder
- JavaScript standarder
- CSS retningslinjer
- Smarte skabelonstandarder
Arkitekturbeslutninger
Sektion kaldt “Arkitekturbeslutninger”- ADR Indeks
- ADR skabelon
- ADR-001: Modulær arkitektur
- ADR-002: Databaseabstraktion
🚀 Kom godt i gang
Sektion kaldt “🚀 Kom godt i gang”1. Opsæt udviklingsmiljø
Sektion kaldt “1. Opsæt udviklingsmiljø”# Fork the repository on GitHub# Then clone your forkgit clone https://github.com/YOUR_USERNAME/XoopsCore27.gitcd XoopsCore27
# Add upstream remotegit remote add upstream https://github.com/XOOPS/XoopsCore27.git
# Install dependenciescomposer install2. Opret funktionsgren
Sektion kaldt “2. Opret funktionsgren”# Sync with upstreamgit fetch upstreamgit checkout -b feature/my-feature upstream/main3. Foretag ændringer
Sektion kaldt “3. Foretag ændringer”Følg kodningsstandarderne og skriv test for nye funktioner.
4. Send Pull-anmodning
Sektion kaldt “4. Send Pull-anmodning”# Commit changesgit add .git commit -m "Add: Brief description of changes"
# Push to your forkgit push origin feature/my-featureOpret derefter en Pull Request på GitHub.
📝 Kodningsstandarder
Sektion kaldt “📝 Kodningsstandarder”PHP standarder
Sektion kaldt “PHP standarder”XOOPS følger PSR-1, PSR-4 og PSR-12 kodningsstandarder.
<?php
declare(strict_types=1);
namespace XoopsModules\MyModule;
use Xmf\Request;use XoopsObject;
/** * Class Item * * Represents an item in the module */class Item extends XoopsObject{ /** * Constructor */ public function __construct() { $this->initVar('id', \XOBJ_DTYPE_INT, null, false); $this->initVar('title', \XOBJ_DTYPE_TXTBOX, '', true, 255); $this->initVar('content', \XOBJ_DTYPE_TXTAREA, '', false); $this->initVar('created', \XOBJ_DTYPE_INT, time(), false); }
/** * Get formatted title * * @return string */ public function getTitle(): string { return $this->getVar('title', 'e'); }}Nøglekonventioner
Sektion kaldt “Nøglekonventioner”| Regel | Eksempel |
|---|---|
| Klassenavne | PascalCase |
| Metodenavne | camelCase |
| Konstanter | UPPER_SNAKE_CASE |
| Variabler | $camelCase |
| Filer | ClassName.php |
| Indrykning | 4 pladser |
| Linjelængde | Max 120 tegn |
Smarte skabeloner
Sektion kaldt “Smarte skabeloner”{* File: templates/mymodule_index.tpl *}{* Description: Index page template *}
<{include file="db:mymodule_header.tpl"}>
<div class="mymodule-container"> <h1><{$page_title}></h1>
<{if $items|@count > 0}> <ul class="item-list"> <{foreach item=item from=$items}> <li class="item"> <a href="<{$item.url}>"><{$item.title}></a> </li> <{/foreach}> </ul> <{else}> <p class="no-items"><{$smarty.const._MD_MYMODULE_NO_ITEMS}></p> <{/if}></div>
<{include file="db:mymodule_footer.tpl"}>🔀 Git Workflow
Sektion kaldt “🔀 Git Workflow”Filialnavngivning
Sektion kaldt “Filialnavngivning”| Skriv | Mønster | Eksempel |
|---|---|---|
| Funktion | feature/description | feature/add-user-export |
| Bugfix | fix/description | fix/login-validation |
| Hotfix | hotfix/description | hotfix/security-patch |
| Frigiv | release/version | release/2.7.0 |
Send beskeder
Sektion kaldt “Send beskeder”Følg konventionelle tilsagn:
<type>(<scope>): <subject>
<body>
<footer>Typer:
feat: Ny funktionfix: Fejlrettelsedocs: Dokumentationstyle: Kodestil (formatering)refactor: Kode refactoringtest: Tilføjelse af testschore: Vedligeholdelse
Eksempler:
feat(auth): add two-factor authentication
Implement TOTP-based 2FA for user accounts.- Add QR code generation for authenticator apps- Store encrypted secrets in user profile- Add backup codes feature
Closes #123fix(forms): resolve XSS vulnerability in text input
Properly escape user input in XoopsFormText render method.
Security: CVE-2024-XXXX🧪 Test
Sektion kaldt “🧪 Test”Løbende tests
Sektion kaldt “Løbende tests”# Run all tests./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unit
# Run with coverage./vendor/bin/phpunit --coverage-html coverage/Skrivning af prøver
Sektion kaldt “Skrivning af prøver”<?php
namespace XoopsModulesTest\MyModule;
use PHPUnit\Framework\TestCase;use XoopsModules\MyModule\Item;
class ItemTest extends TestCase{ private Item $item;
protected function setUp(): void { $this->item = new Item(); }
public function testInitialValues(): void { $this->assertNull($this->item->getVar('id')); $this->assertEquals('', $this->item->getVar('title')); }
public function testSetTitle(): void { $this->item->setVar('title', 'Test Title'); $this->assertEquals('Test Title', $this->item->getVar('title')); }
public function testTitleEscaping(): void { $this->item->setVar('title', '<script>alert("xss")</script>'); $escaped = $this->item->getTitle(); $this->assertStringNotContainsString('<script>', $escaped); }}📋 Træk anmodningstjekliste
Sektion kaldt “📋 Træk anmodningstjekliste”Før du indsender en PR, skal du sikre dig:
- Koden følger XOOPS kodningsstandarder
- Alle prøver består
- Nye funktioner har tests
- Dokumentation opdateres om nødvendigt
- Ingen flettekonflikter med hovedgren
- Commit-beskeder er beskrivende
- PR-beskrivelse forklarer ændringer
- Relaterede problemer er forbundet
🏗️ Architecture Decision Records
Sektion kaldt “🏗️ Architecture Decision Records”ADR dokumenterer væsentlige arkitektoniske beslutninger.
ADR skabelon
Sektion kaldt “ADR skabelon”# ADR-XXX: Title
## StatusProposed | Accepted | Deprecated | Superseded
## ContextWhat is the issue we're addressing?
## DecisionWhat is the change being proposed?
## ConsequencesWhat are the positive and negative effects?
## Alternatives ConsideredWhat other options were evaluated?Aktuelle ADRs
Sektion kaldt “Aktuelle ADRs”| ADR | Titel | Status |
|---|---|---|
| ADR-001 | Modulær arkitektur | Accepteret |
| ADR-002 | Objektorienteret databaseadgang | Accepteret |
| ADR-003 | Smarty skabelonmotor | Accepteret |
| ADR-004 | Design af sikkerhedssystemer | Accepteret |
| ADR-005 | PSR-15 Middleware (4.0.x) | Foreslået |
🎖️ Anerkendelse
Sektion kaldt “🎖️ Anerkendelse”Bidragydere anerkendes gennem:
- Liste over bidragydere - Opført i repository
- Release Notes - Krediteret i udgivelser
- Hall of Fame - Fremragende bidragydere
- Modulcertificering - Kvalitetsmærke til moduler
🔗 Relateret dokumentation
Sektion kaldt “🔗 Relateret dokumentation”- XOOPS 4.0 køreplan
- Kernekoncepter
- Moduludvikling
📚 Ressourcer
Sektion kaldt “📚 Ressourcer”#xoops #bidragende #open source #fællesskab #udvikling #kodningsstandarder