Initial commit

This commit is contained in:
dyzulk
2026-01-19 10:13:12 +07:00
commit 74a35d8345
4 changed files with 139 additions and 0 deletions

52
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,52 @@
name: Release Plugin
on:
push:
tags:
- 'v*' # Trigger on version tags, e.g. v1.0.0
jobs:
build:
name: Create Release
runs-on: ubuntu-latest
permissions:
contents: write # Needed to create releases
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Get Version
id: get_version
run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Create ZIP Archive
run: |
# Create a temporary directory for the zip
mkdir temp_zip
# Copy files to temp directory, excluding unwanted files
rsync -av --progress . temp_zip --exclude .git --exclude .github --exclude .gitignore --exclude LICENSE --exclude README.md --exclude temp_zip
# Create the zip file
cd temp_zip
zip -r ../plugin-example.zip .
cd ..
echo "Created plugin-example.zip"
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: plugin-example.zip
name: Release ${{ steps.get_version.outputs.VERSION }}
body: |
Automatic release for version ${{ steps.get_version.outputs.VERSION }}
**Installation:**
1. Download `plugin-example.zip`
2. Upload in Mivo > Settings > Plugins
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 DyzulkDev
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

26
README.md Normal file
View File

@@ -0,0 +1,26 @@
# Example Plugin for Mivo
**Category:** System Tools
**Author:** DyzulkDev
**Version:** 1.0.0
This is a **developer example** demonstrating how to create plugins for the Mivo Hotspot Manager. It showcases the use of Hooks and Routers to extend core functionality.
## Features
- **Router Hook**: Registers a custom page at `/plugin-test`.
- **Head Hook**: Injects custom CSS (green border) into the page head.
- **Footer Hook**: Injects a custom message into the page footer.
## Installation
1. Download the plugin ZIP file.
2. Go to **Mivo > Settings > Plugins**.
3. Click **Upload Plugin** and select the ZIP file.
4. The plugin will immediately activate.
## Verification
- **Visual Check**: You should see a green top border on all pages.
- **Footer Check**: A message "Plugin System is Working! 🚀" appears in the footer.
- **Route Check**: Visit `/plugin-test` to see the custom page.
## For Developers
Check the `plugin.php` file source code to understand how `Hooks::addAction` works for `router_init`, `mivo_head`, and `mivo_footer`.

40
plugin.php Normal file
View File

@@ -0,0 +1,40 @@
<?php
/**
* Plugin Name: Example Plugin
* Description: A sample plugin to demonstrate Mivo's hook system.
* Version: 1.0.0
* Author: DyzulkDev
*
* Category: System Tools
* Scope: Global
* Tags: example, demo, hooks
* Core Version: >= 1.0.0
*/
use App\Core\Hooks;
use App\Core\Router;
// 1. Hook into Router to add a custom page
Hooks::addAction('router_init', function(Router $router) {
$router->get('/plugin-test', function() {
echo "<h1>Hello from Example Plugin!</h1>";
echo "<p>This page is registered via <code>router_init</code> hook.</p>";
echo "<a href='/'>Back to Home</a>";
});
});
// 2. Hook into Head to add custom CSS
Hooks::addAction('mivo_head', function() {
echo "<!-- Example Plugin CSS -->";
echo "<style>body { border-top: 5px solid #10b981; }</style>";
});
// 3. Hook into Footer to add custom JS or Text
Hooks::addAction('mivo_footer', function() {
echo "<!-- Example Plugin Footer -->";
echo "<div style='text-align:center; padding: 10px; background: #f0fdf4; color: #166534; font-weight: bold;'>
Plugin System is Working! 🚀
<a href='/plugin-test' target=_blank>Plugin Test</a>
</div>";
});