feat(ocmod): add TeleCart admin sidebar menu and local dev setup (#57)
- Add telecart.ocmod.xml: inject TeleCart menu item (with Settings child) after Marketing - Add scripts/apply_ocmod.sh to symlink ocmod file in Docker container - Add make ocmod target - In CI: set version in telecart.ocmod.xml from version_meta; use docs.telecart.pro link Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
5
.github/workflows/main.yaml
vendored
5
.github/workflows/main.yaml
vendored
@@ -134,6 +134,11 @@ jobs:
|
|||||||
MODULE_ROOT="module/oc_telegram_shop/upload/oc_telegram_shop"
|
MODULE_ROOT="module/oc_telegram_shop/upload/oc_telegram_shop"
|
||||||
echo "${{ needs.version_meta.outputs.tag }}" > "${MODULE_ROOT}/version.txt"
|
echo "${{ needs.version_meta.outputs.tag }}" > "${MODULE_ROOT}/version.txt"
|
||||||
|
|
||||||
|
- name: Set version in install.xml
|
||||||
|
run: |
|
||||||
|
TAG="${{ needs.version_meta.outputs.tag }}"
|
||||||
|
sed -i "s#<version>.*</version>#<version>${TAG}</version>#" module/oc_telegram_shop/install.xml
|
||||||
|
|
||||||
- name: Build module
|
- name: Build module
|
||||||
run: |
|
run: |
|
||||||
bash scripts/ci/build.sh "${GITHUB_WORKSPACE}"
|
bash scripts/ci/build.sh "${GITHUB_WORKSPACE}"
|
||||||
|
|||||||
3
Makefile
3
Makefile
@@ -45,6 +45,9 @@ dev-admin:
|
|||||||
rm -rf src/upload/admin/view/javascript/telecart && \
|
rm -rf src/upload/admin/view/javascript/telecart && \
|
||||||
cd frontend/admin && npm run dev
|
cd frontend/admin && npm run dev
|
||||||
|
|
||||||
|
ocmod:
|
||||||
|
./scripts/apply_ocmod.sh
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
docker compose exec -w /module/oc_telegram_shop/upload/oc_telegram_shop web bash -c "./vendor/bin/phpstan analyse"
|
docker compose exec -w /module/oc_telegram_shop/upload/oc_telegram_shop web bash -c "./vendor/bin/phpstan analyse"
|
||||||
|
|
||||||
|
|||||||
30
module/oc_telegram_shop/install.xml
Normal file
30
module/oc_telegram_shop/install.xml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<modification>
|
||||||
|
<name>TeleCart</name>
|
||||||
|
<code>telecart</code>
|
||||||
|
<version>1.0</version>
|
||||||
|
<author>TeleCart</author>
|
||||||
|
<link>https://docs.telecart.pro/</link>
|
||||||
|
<file path="admin/controller/common/column_left.php">
|
||||||
|
<operation>
|
||||||
|
<search><![CDATA[// System]]></search>
|
||||||
|
<add position="before"><![CDATA[ // BEGIN TeleCart modification
|
||||||
|
$telecart = array();
|
||||||
|
$telecart[] = array(
|
||||||
|
'name' => 'Настройки',
|
||||||
|
'href' => $this->url->link('extension/module/tgshop', 'user_token=' . $this->session->data['user_token'], true),
|
||||||
|
'children' => array()
|
||||||
|
);
|
||||||
|
$data['menus'][] = array(
|
||||||
|
'id' => 'menu-telecart',
|
||||||
|
'icon' => 'fa-telegram',
|
||||||
|
'name' => 'TeleCart',
|
||||||
|
'href' => '',
|
||||||
|
'children' => $telecart
|
||||||
|
);
|
||||||
|
// END TeleCart modification
|
||||||
|
|
||||||
|
]]></add>
|
||||||
|
</operation>
|
||||||
|
</file>
|
||||||
|
</modification>
|
||||||
51
scripts/apply_ocmod.sh
Executable file
51
scripts/apply_ocmod.sh
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Создаёт симлинк install.xml в system/ OpenCart внутри контейнера.
|
||||||
|
# OpenCart при «Обновить» (Расширения → Модификации) подхватывает файлы
|
||||||
|
# DIR_SYSTEM . '*.ocmod.xml' и применяет их своей логикой — так же, как на сервере.
|
||||||
|
#
|
||||||
|
# Использование:
|
||||||
|
# ./scripts/apply_ocmod.sh
|
||||||
|
#
|
||||||
|
# Переменные (по умолчанию из docker-compose.yaml):
|
||||||
|
# CONTAINER — сервис/контейнер (по умолчанию web)
|
||||||
|
# TARGET_DIR — каталог system в контейнере (по умолчанию /web/upload/system)
|
||||||
|
# SOURCE — путь к install.xml в контейнере (по умолчанию /module/oc_telegram_shop/ocmod/install.xml)
|
||||||
|
#
|
||||||
|
# После запуска: открой админку → Расширения → Модификации → нажми «Обновить».
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
CONTAINER="${CONTAINER:-web}"
|
||||||
|
TARGET_DIR="${TARGET_DIR:-/web/upload/system}"
|
||||||
|
SOURCE="${SOURCE:-/module/oc_telegram_shop/install.xml}"
|
||||||
|
TARGET="$TARGET_DIR/telecart.ocmod.xml"
|
||||||
|
|
||||||
|
if ! docker compose exec "$CONTAINER" test -f "$SOURCE" 2>/dev/null; then
|
||||||
|
echo "Ошибка: в контейнере $CONTAINER не найден $SOURCE" >&2
|
||||||
|
echo "Проверь, что том ./module примонтирован в контейнер." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! docker compose exec "$CONTAINER" test -d "$TARGET_DIR" 2>/dev/null; then
|
||||||
|
echo "Ошибка: в контейнере $CONTAINER не найден каталог $TARGET_DIR" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker compose exec "$CONTAINER" bash -c "
|
||||||
|
if [ -e '$TARGET' ]; then
|
||||||
|
if [ -L '$TARGET' ]; then
|
||||||
|
current=\$(readlink '$TARGET')
|
||||||
|
if [ \"\$current\" = '$SOURCE' ]; then
|
||||||
|
echo 'Симлинк уже указывает на модуль: $TARGET'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
rm -f '$TARGET'
|
||||||
|
fi
|
||||||
|
ln -sf '$SOURCE' '$TARGET'
|
||||||
|
echo 'Симлинк создан в контейнере: $TARGET → $SOURCE'
|
||||||
|
"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Дальше: открой админку OpenCart → Расширения → Модификации → нажми «Обновить»."
|
||||||
|
echo "Модификация применится той же логикой, что и при установке на сервере."
|
||||||
Reference in New Issue
Block a user