First version template
All checks were successful
Release Workflow / validate_commit_message (push) Successful in 5s
Release Workflow / create_release (push) Has been skipped

This commit is contained in:
George van Engers
2025-04-23 15:11:28 +02:00
parent aba1b933d7
commit 040a6f6a48
24 changed files with 1201 additions and 3 deletions

View File

@ -0,0 +1,105 @@
name: Release Workflow
on:
push:
branches:
- main
- master
jobs:
validate_commit_message:
runs-on: ubuntu-latest
outputs:
version: ${{ steps.validate.outputs.version }}
release_notes: ${{ steps.validate.outputs.release_notes }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Validate commit message
id: validate
run: |
COMMIT_MESSAGE="${{ github.event.head_commit.message }}"
if [[ "$COMMIT_MESSAGE" =~ ^Release[[:space:]]([0-9]+\.[0-9]+\.[0-9]+)[[:space:]]-[[:space:]](.+)$ ]]; then
VERSION=$(echo "$COMMIT_MESSAGE" | grep -oP '(?<=^Release )[0-9]+\.[0-9]+\.[0-9]+')
RELEASE_NOTES=$(echo "$COMMIT_MESSAGE" | sed -E 's/^Release [0-9]+\.[0-9]+\.[0-9]+ - //')
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "RELEASE_NOTES=$RELEASE_NOTES" >> $GITHUB_ENV
echo "::set-output name=version::$VERSION"
echo "::set-output name=release_notes::$RELEASE_NOTES"
else
echo "Invalid commit message format. Skipping release."
fi
create_release:
runs-on: ubuntu-latest
needs: validate_commit_message
if: needs.validate_commit_message.outputs.version != ''
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Create a release tag
run: |
git config --global user.name "Gitea CI"
git config --global user.email "ci@gitea.local"
git tag -a "${{ needs.validate_commit_message.outputs.version }}" -m "${{ github.event.head_commit.message }}"
git push origin "${{ needs.validate_commit_message.outputs.version }}"
- name: Create release ZIP file
run: |
VERSION="${{ needs.validate_commit_message.outputs.version }}"
REPO_NAME="${{ github.event.repository.name }}"
ZIP_FILE="/tmp/${REPO_NAME}-${VERSION}.zip"
zip -r $ZIP_FILE . \
-x "*.git*" \
-x "*.idea*" \
-x ".gitignore" \
-x "README.md" \
-x "LICENSE"
echo "zip_file=$ZIP_FILE" >> $GITHUB_ENV
- name: Create release in Gitea
env:
CICD_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
VERSION="${{ needs.validate_commit_message.outputs.version }}"
RELEASE_NOTES="${{ needs.validate_commit_message.outputs.release_notes }}"
REPO_NAME="${{ github.event.repository.name }}"
OWNER_NAME="${{ github.event.repository.owner.login }}"
RELEASE_URL="https://git.dewebsmid.nl/api/v1/repos/$OWNER_NAME/$REPO_NAME/releases"
curl -s -X POST $RELEASE_URL \
-H "Authorization: token $CICD_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tag_name": "'"$VERSION"'",
"target_commitish": "main",
"name": "Release '"$VERSION"'",
"body": "'"$RELEASE_NOTES"'",
"draft": false,
"prerelease": false
}' > response.json
RELEASE_ID=$(jq -r '.id' response.json)
if [ "$RELEASE_ID" == "null" ]; then
echo "Failed to create release. Check response.json for details."
cat response.json
exit 1
fi
echo "release_id=$RELEASE_ID" >> $GITHUB_ENV
- name: Upload ZIP to release
env:
CICD_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
RELEASE_ID="${{ env.release_id }}"
VERSION="${{ needs.validate_commit_message.outputs.version }}"
REPO_NAME="${{ github.event.repository.name }}"
OWNER_NAME="${{ github.event.repository.owner.login }}"
ZIP_FILE="/tmp/${REPO_NAME}-${VERSION}.zip"
UPLOAD_URL="https://git.dewebsmid.nl/api/v1/repos/$OWNER_NAME/$REPO_NAME/releases/$RELEASE_ID/assets"
curl -s -X POST $UPLOAD_URL \
-H "Authorization: token $CICD_TOKEN" \
-F "name=${REPO_NAME}-${VERSION}.zip" \
-F "attachment=@$ZIP_FILE" > response.json
ASSET_ID=$(jq -r '.id' response.json)
if [ "$ASSET_ID" == "null" ]; then
echo "Failed to upload ZIP file. Check response.json for details."
cat response.json
exit 1
fi

8
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

588
.idea/deployment.xml generated Normal file
View File

@ -0,0 +1,588 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
<serverData>
<paths name="ACCEPT.omringconcept.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="ADZAAGT.2.WEBSMIDCONCEPT - Test PS8">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="AMK DEV - MNI">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="AUTOSPORTCOMPANY.NL">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="B2B - PS8 - DEV">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="B2C - PS8 - DEV">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="CYCLEDEAL - LIVE">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="CYCLEDEAL - OLD - LIVE">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="CYCLEDEAL - PRICE - TEST">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="CYCLEDEALTEST.NL">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="DEV - blumenzwiebel.nijssen.dev.vanengers.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="DEV - eurobulb.nijssen.dev.vanengers.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="DEV - nijssentuin.nijssen.dev.vanengers.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="DEV - wholesale.nijssen.dev.vanengers.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="HATLAND (1)">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="HATLAND-LIVE">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="Hatland - Multistore TEST">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="HatlandTEST.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="Highvacuumcompany.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="Horsecomplete - srv11.dewebsmid.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="Josdijkman.websmidconcept.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LIVE - nijssenbulbs.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LIVE - nijssentuin.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LIVE - omringwinkel.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LIVE - order.blumenzwiebel.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LIVE - order.eurobulbs.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LIVE - order.verberghe.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LIVE - wholesalebulbs.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LIVE omringwinkel.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LOCAL DEV - B2B - new mod version">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LOCAL DEV - B2B old version">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LOCAL DEV - B2C">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="LOCAL DEV - Test services">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="MOTORLOOK.NL">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="Modules test 8 - test1">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="NEW - nieuw.avonturiashop.nl (LIVE)">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="NEW - test.ps8.avonturia.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="OLD - ps 1.6 - LIVE SHOP - avonturiashop.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="REEKERS-TUINMACHINES.NL">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="Rechtsgevoel.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="SHARED - test - ps8.lightandshade.be">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="SVN - B2B version">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="SVN - module Allwoco version">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="SVN - module Kredietcheck version">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="SVN - thema version">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="TEST.omringwinkel.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="VPS02.ALLWOCO.COM - B2B - LIVE">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="VPS02.ALLWOCO.COM - LIVE B2C">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="VPS02.ALLWOCO.COM - Staging B2B">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="VPS02.ALLWOCO.COM - Staging B2C">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="VPS02.ALLWOCO.COM - TEST B2C">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="Vloerenoutletstore.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="adverteerweb.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="adzaagt.nl - LIVE">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="api.gpwebtech.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="dartwebshop2.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="gpve">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="gpwebshops.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="groendakcompleet.be">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="groendakcompleet.dev.vanengers.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="groendakcompleet.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="josdijkmanV2.websmidconcept.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="kappersonly.dev.vanengers.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="kappersonly.websmidconcept.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="mod74.modules.prestashopheaven.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="modules test 8 - 8.2.0">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="modules test 8 - test2">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="modules.prestashop.gpwebtech.nl - 1767">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="mullerstaging.websmid.dev">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="mullertest.websmid.dev">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="php 8 - kappersonly.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="pres7.high-supplies.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="routigo.adzaagt.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="teabar.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="templates.modules.prestashopheaven.com">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="test.adzaagt.nl - TEST1">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="test.adzaagt.nl - TEST2">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="test.adzaagt.nl - TEST3">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="test.adzaagt.nl - TEST4">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="test.adzaagt.nl - TEST5">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="test.omringwinkel.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="test.ps8.avonturia.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
<paths name="versenoten.nl">
<serverdata>
<mappings>
<mapping local="$PROJECT_DIR$" web="/" />
</mappings>
</serverdata>
</paths>
</serverData>
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/prestashop-module-template.iml" filepath="$PROJECT_DIR$/.idea/prestashop-module-template.iml" />
</modules>
</component>
</project>

26
.idea/php.xml generated Normal file
View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpIncludePathManager">
<include_path>
<path value="$PROJECT_DIR$/../../../www/__prestashops/presta15/PHPStorm-CC-PrestaShop-master" />
<path value="$PROJECT_DIR$/../../../www/__prestashops/8.2.0" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" />
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project>

8
.idea/prestashop-module-template.iml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

View File

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2025 george Copyright (c) 2025 MullerXXL
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: 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:

View File

@ -1,2 +1 @@
# prestashop-module-template # PrestaShop module template

18
psmodule/composer.json Normal file
View File

@ -0,0 +1,18 @@
{
"name": "websmid/psmodule",
"description": "",
"type": "prestashop-module",
"license": "mit",
"autoload": {
"psr-4": {
"Websmid\\PsModule": "src/"
}
},
"authors": [
{
"name": "George van Engers",
"email": "george@dewebsmid.nl"
}
],
"minimum-stability": "dev"
}

View File

@ -0,0 +1,6 @@
imports:
- { resource: services/*.yml }
services:
_defaults:
public: true

View File

@ -0,0 +1,3 @@
services:
_defaults:
public: true

BIN
psmodule/logo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1004 B

BIN
psmodule/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,34 @@
<?php
/**
* 2007-2024 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2024 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

64
psmodule/psmodule.php Normal file
View File

@ -0,0 +1,64 @@
<?php
/**
* 2007-2025 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2025 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
use Websmid\Muller\WsMullerModule\Module\Helper\Config;
use Websmid\Muller\WsMullerModule\Module\Helper\ConfigForm;
use Websmid\Muller\WsMullerModule\Module\Helper\Install;
if (!defined('_PS_VERSION_')) {
exit;
}
require_once __DIR__ . '/vendor/autoload.php';
class psmodule extends Module
{
// use hooks
use Config;
use Install;
use ConfigForm;
public function __construct()
{
$this->name = 'psmodule';
$this->tab = 'administration';
$this->version = '0.0.1';
$this->author = 'George van Engers | De Websmid';
$this->need_instance = 0;
$this->ps_versions_compliancy = [
'min' => '8.2.0',
'max' => _PS_VERSION_,
];
$this->bootstrap = true;
parent::__construct();
$this->displayName = $this->trans('Ps Module', [], 'Modules.PsModule.Module');
$this->description = $this->trans('Ps Module', [], 'Modules.PsModule.Module');
$this->confirmUninstall = $this->trans('Are you sure you want to uninstall?', [], 'Modules.PsModule.Module');
}
}

View File

@ -0,0 +1,14 @@
<?php
namespace Websmid\Muller\WsMullerModule\Module\Helper;
trait Config
{
public static $hooks = [
];
public static $config = [
'TEST' => 'test',
];
}

View File

@ -0,0 +1,120 @@
<?php
namespace Websmid\Muller\WsMullerModule\Module\Helper;
use Configuration;
use HelperForm;
use Tools;
trait ConfigForm
{
protected $config_form = false;
public array $translatables = [];
/**
* @return string
* @author George van Engers <george@dewebsmid.nl>
* @since 05-04-2025
*/
public function getContent(): string
{
if ((Tools::isSubmit($this->name . 'submitBtn'))) {
$this->postProcess();
}
$this->context->smarty->assign('module_dir', $this->_path);
$output = $this->context->smarty->fetch($this->local_path.'views/templates/admin/index.tpl');;
return $output.$this->renderForm();
}
/**
* @return string
* @author George van Engers <george@dewebsmid.nl>
* @since 05-04-2025
*/
protected function renderForm(): string
{
$helper = new HelperForm();
$helper->show_toolbar = false;
$helper->table = $this->table;
$helper->module = $this;
$helper->name_controller = $this->name;
$helper->default_form_language = $this->context->language->id;
$helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG', 0);
$helper->identifier = $this->identifier;
$helper->submit_action = $this->name.'submitBtn';
$helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false)
.'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name;
$helper->token = Tools::getValue('token');
$helper->tpl_vars = array(
'fields_value' => $this->getConfigFormValues(), /* Add values for your inputs */
'languages' => $this->context->controller->getLanguages(),
'id_language' => $this->context->language->id,
);
return $helper->generateForm($this->getConfigForm());
}
/**
* @return array
* @author George van Engers <george@dewebsmid.nl>
* @since 05-04-2025
*/
protected function getConfigFormValues(): array
{
$data = [];
foreach(self::$config as $key => $value) {
$data[$key] = Configuration::get($key);
}
return $data;
}
/**
* @return void
* @author George van Engers <george@dewebsmid.nl>
* @since 05-04-2025
*/
protected function postProcess(): void
{
$form_values = $this->getConfigFormValues();
foreach (array_keys($form_values) as $key) {
if (Tools::isSubmit($key)) {
Configuration::updateValue($key, Tools::getValue($key));
}
}
}
/**
* @return array[]
* @author George van Engers <george@dewebsmid.nl>
* @since 05-04-2025
*/
protected function getConfigForm(): array
{
return array(
'api' => array(
'form' => array(
'legend' => array(
'title' => $this->trans('Settings', [], 'Modules.PsModule.Module'),
'icon' => 'icon-cogs',
),
'input' => array(
/////
/////
/////
),
'submit' => array(
'title' => $this->trans('Save', [], 'Modules.PsModule.Module'),
),
),
),
);
}
}

View File

@ -0,0 +1,55 @@
<?php
namespace Websmid\Muller\WsMullerModule\Module\Helper;
use Configuration;
trait Install
{
/**
* @return bool
* @author George van Engers <george@dewebsmid.nl>
* @since 05-04-2025
*/
public function install()
{
if (!parent::install()) {
return false;
}
foreach(self::$hooks as $hook) {
if (!$this->registerHook($hook)) {
return false;
}
}
foreach(self::$config as $key => $value) {
if (!Configuration::updateValue($key, $value)) {
return false;
}
}
return true;
}
/**
* @return bool
* @author George van Engers <george@dewebsmid.nl>
* @since 05-04-2025
*/
public function uninstall()
{
if (!parent::uninstall()) {
return false;
}
// hooks are auto-unregistered by PrestaShop
foreach(self::$config as $key => $value) {
if (!Configuration::deleteByName($key)) {
return false;
}
}
return true;
}
}

34
psmodule/src/index.php Normal file
View File

@ -0,0 +1,34 @@
<?php
/**
* 2007-2024 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2024 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,34 @@
<?php
/**
* 2007-2024 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2024 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File

@ -0,0 +1,34 @@
<?php
/**
* 2007-2024 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2024 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

34
psmodule/views/index.php Normal file
View File

@ -0,0 +1,34 @@
<?php
/**
* 2007-2024 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2024 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Location: ../');
exit;

View File