แนวทางการมีส่วนร่วม
🤝 มีส่วนร่วมใน XOOPS
หัวข้อที่มีชื่อว่า “🤝 มีส่วนร่วมใน XOOPS”เข้าร่วมชุมชน XOOPS และช่วยทำให้ชุมชน CMS ดีที่สุดในโลก
📋 ภาพรวม
หัวข้อที่มีชื่อว่า “📋 ภาพรวม”XOOPS เป็นโครงการโอเพ่นซอร์สที่ประสบความสำเร็จจากการมีส่วนร่วมของชุมชน ไม่ว่าคุณจะแก้ไขข้อบกพร่อง เพิ่มฟีเจอร์ ปรับปรุงเอกสาร หรือช่วยเหลือผู้อื่น การมีส่วนร่วมของคุณก็มีคุณค่า
🗂️เนื้อหาส่วน
หัวข้อที่มีชื่อว่า “🗂️เนื้อหาส่วน”- หลักจรรยาบรรณ
- ขั้นตอนการทำงานสมทบ
- แนวทางการขอดึง
- การรายงานปัญหา
รูปแบบโค้ด
หัวข้อที่มีชื่อว่า “รูปแบบโค้ด”- PHP มาตรฐานการเข้ารหัส
- มาตรฐานJavaScript
- CSS หลักเกณฑ์
- มาตรฐานเทมเพลต Smarty
การตัดสินใจทางสถาปัตยกรรม
หัวข้อที่มีชื่อว่า “การตัดสินใจทางสถาปัตยกรรม”- ADR ดัชนี
- ADR เทมเพลต
- ADR-001: สถาปัตยกรรมแบบโมดูลาร์
- ADR-002: ฐานข้อมูลนามธรรม
🚀 เริ่มต้นใช้งาน
หัวข้อที่มีชื่อว่า “🚀 เริ่มต้นใช้งาน”1. ตั้งค่าสภาพแวดล้อมการพัฒนา
หัวข้อที่มีชื่อว่า “1. ตั้งค่าสภาพแวดล้อมการพัฒนา”# 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. สร้างสาขาฟีเจอร์
หัวข้อที่มีชื่อว่า “2. สร้างสาขาฟีเจอร์”# Sync with upstreamgit fetch upstreamgit checkout -b feature/my-feature upstream/main3. ทำการเปลี่ยนแปลง
หัวข้อที่มีชื่อว่า “3. ทำการเปลี่ยนแปลง”ปฏิบัติตามมาตรฐานการเขียนโค้ดและเขียนการทดสอบฟีเจอร์ใหม่ๆ
4. ส่งคำขอดึง
หัวข้อที่มีชื่อว่า “4. ส่งคำขอดึง”# Commit changesgit add .git commit -m "Add: Brief description of changes"
# Push to your forkgit push origin feature/my-featureจากนั้นสร้าง Pull Request บน GitHub
📝 มาตรฐานการเข้ารหัส
หัวข้อที่มีชื่อว่า “📝 มาตรฐานการเข้ารหัส”PHP มาตรฐาน
หัวข้อที่มีชื่อว่า “PHP มาตรฐาน”XOOPS เป็นไปตามมาตรฐานการเข้ารหัส PSR-1, PSR-4 และ PSR¤-12
<?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'); }}อนุสัญญาสำคัญ
หัวข้อที่มีชื่อว่า “อนุสัญญาสำคัญ”| กฎ | ตัวอย่าง |
|---|---|
| ชื่อคลาส | PascalCase |
| ชื่อวิธีการ | camelCase |
| ค่าคงที่ | UPPER_SNAKE_CASE |
| ตัวแปร | $camelCase |
| ไฟล์ | ClassName.php |
| การเยื้อง | 4 ช่อง |
| ความยาวบรรทัด | สูงสุด 120 ตัวอักษร |
เทมเพลตอันชาญฉลาด
หัวข้อที่มีชื่อว่า “เทมเพลตอันชาญฉลาด”{* 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 เวิร์กโฟลว์
หัวข้อที่มีชื่อว่า “🔀 Git เวิร์กโฟลว์”การตั้งชื่อสาขา
หัวข้อที่มีชื่อว่า “การตั้งชื่อสาขา”| พิมพ์ | รูปแบบ | ตัวอย่าง |
|---|---|---|
| คุณสมบัติ | feature/description | feature/add-user-export |
| แก้ไขข้อผิดพลาด | fix/description | fix/login-validation |
| โปรแกรมแก้ไขด่วน | hotfix/description | hotfix/security-patch |
| ปล่อย | release/version | release/2.7.0 |
ส่งข้อความ
หัวข้อที่มีชื่อว่า “ส่งข้อความ”ปฏิบัติตามข้อผูกพันทั่วไป:
<type>(<scope>): <subject>
<body>
<footer>ประเภท:
feat: คุณลักษณะใหม่fix: แก้ไขข้อบกพร่องdocs: เอกสารประกอบstyle: รูปแบบโค้ด (การจัดรูปแบบ)refactor: การปรับโครงสร้างโค้ดใหม่test: การเพิ่มการทดสอบchore: การบำรุงรักษา
ตัวอย่าง:
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🧪 ทดสอบ
หัวข้อที่มีชื่อว่า “🧪 ทดสอบ”การทดสอบการทำงาน
หัวข้อที่มีชื่อว่า “การทดสอบการทำงาน”# Run all tests./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unit
# Run with coverage./vendor/bin/phpunit --coverage-html coverage/การทดสอบการเขียน
หัวข้อที่มีชื่อว่า “การทดสอบการเขียน”<?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); }}📋 ดึงรายการตรวจสอบคำขอ
หัวข้อที่มีชื่อว่า “📋 ดึงรายการตรวจสอบคำขอ”ก่อนที่จะส่ง PR ตรวจสอบให้แน่ใจว่า:
- รหัสเป็นไปตามมาตรฐานการเข้ารหัส XOOPS
- ผ่านการทดสอบทั้งหมด
- คุณสมบัติใหม่มีการทดสอบ
- เอกสารได้รับการอัปเดตหากจำเป็น
- ไม่มีข้อขัดแย้งในการผสานกับสาขาหลัก
- ข้อความยืนยันเป็นแบบอธิบาย
- PR คำอธิบายอธิบายการเปลี่ยนแปลง
- มีการเชื่อมโยงประเด็นที่เกี่ยวข้องแล้ว
🏗️ บันทึกการตัดสินใจทางสถาปัตยกรรม
หัวข้อที่มีชื่อว่า “🏗️ บันทึกการตัดสินใจทางสถาปัตยกรรม”ADR บันทึกการตัดสินใจทางสถาปัตยกรรมที่สำคัญ
ADR เทมเพลต
หัวข้อที่มีชื่อว่า “ADR เทมเพลต”markdown# 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?ADR ปัจจุบัน
หัวข้อที่มีชื่อว่า “ADR ปัจจุบัน”| ADR | ชื่อเรื่อง | สถานะ |
|---|---|---|
| ADR-001 | สถาปัตยกรรมแบบแยกส่วน | ยอมรับแล้ว |
| ADR-002 | การเข้าถึงฐานข้อมูลเชิงวัตถุ | ยอมรับแล้ว |
| ADR-003 | เครื่องมือเทมเพลต Smarty | ยอมรับแล้ว |
| ADR-004 | การออกแบบระบบรักษาความปลอดภัย | ยอมรับแล้ว |
| ADR-005 | PSR-15 มิดเดิลแวร์ (4.0.x) | เสนอ |
🎖️ การรับรู้
หัวข้อที่มีชื่อว่า “🎖️ การรับรู้”ผู้ร่วมให้ข้อมูลได้รับการยอมรับผ่าน:
- รายชื่อผู้ร่วมให้ข้อมูล - มีรายชื่ออยู่ในพื้นที่เก็บข้อมูล
- หมายเหตุการเผยแพร่ - ให้เครดิตในการเผยแพร่
- หอเกียรติยศ - ผู้มีส่วนร่วมที่โดดเด่น
- การรับรองโมดูล - ป้ายคุณภาพสำหรับโมดูล
🔗 เอกสารที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “🔗 เอกสารที่เกี่ยวข้อง”- XOOPS 4.0 แผนการทำงาน
- แนวคิดหลัก
- การพัฒนาโมดูล
📚 แหล่งข้อมูล
หัวข้อที่มีชื่อว่า “📚 แหล่งข้อมูล”#xoops #contributing #open-source #community #development #coding-มาตรฐาน