[08/06/2024] Initial commit
0
domokits/.docker/mysql-data/.gitkeep
Normal file
58
domokits/.docker/nginx/nginx.conf
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
|
||||||
|
root /application/web/;
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
access_log /var/log/nginx/starter.tld_access.log;
|
||||||
|
error_log /var/log/nginx/starter.tld_error.log;
|
||||||
|
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ @rewriteapp;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @rewriteapp {
|
||||||
|
# rewrite all to index.php
|
||||||
|
rewrite ^(.*)$ /index.php/$1 last;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Php configuration
|
||||||
|
location ~ ^/(index|index_dev)\.php(/|$) {
|
||||||
|
# Php-FPM Config (Socks or Network)
|
||||||
|
#fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
|
||||||
|
fastcgi_pass php-fpm:9000;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.*)$;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_read_timeout 3000;
|
||||||
|
fastcgi_buffer_size 128k;
|
||||||
|
fastcgi_buffers 4 256k;
|
||||||
|
fastcgi_busy_buffers_size 256k;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Security. discard all files and folders starting with a "."
|
||||||
|
location ~ /\. {
|
||||||
|
deny all;
|
||||||
|
access_log off;
|
||||||
|
log_not_found off;
|
||||||
|
}
|
||||||
|
# Stuffs
|
||||||
|
location = /favicon.ico {
|
||||||
|
allow all;
|
||||||
|
access_log off;
|
||||||
|
log_not_found off;
|
||||||
|
}
|
||||||
|
location ~ /robots.txt {
|
||||||
|
allow all;
|
||||||
|
access_log off;
|
||||||
|
log_not_found off;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Static files
|
||||||
|
location ~* ^.+\.(jpg|jpeg|gif|css|png|js|pdf|zip)$ {
|
||||||
|
expires 30d;
|
||||||
|
access_log off;
|
||||||
|
log_not_found off;
|
||||||
|
}
|
||||||
|
}
|
||||||
48
domokits/.docker/php-fpm/Dockerfile
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
FROM php:8.1-fpm-alpine
|
||||||
|
WORKDIR "/application"
|
||||||
|
|
||||||
|
RUN apk --update --no-cache add git
|
||||||
|
RUN apk add bash
|
||||||
|
|
||||||
|
# Zip extension
|
||||||
|
RUN apk add --no-cache zip libzip-dev
|
||||||
|
RUN docker-php-ext-install zip
|
||||||
|
|
||||||
|
# Calendar extension
|
||||||
|
RUN docker-php-ext-install calendar
|
||||||
|
|
||||||
|
# Imagick extension needed for webp
|
||||||
|
RUN apk add --update --no-cache autoconf g++ imagemagick imagemagick-dev libtool make pcre-dev
|
||||||
|
RUN pecl install imagick
|
||||||
|
RUN docker-php-ext-enable imagick
|
||||||
|
|
||||||
|
# GD extension needed for html2pdf
|
||||||
|
RUN apk add --no-cache freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev && \
|
||||||
|
docker-php-ext-configure gd \
|
||||||
|
--with-freetype \
|
||||||
|
--with-jpeg \
|
||||||
|
NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \
|
||||||
|
docker-php-ext-install -j$(nproc) gd && \
|
||||||
|
apk del --no-cache freetype-dev libpng-dev libjpeg-turbo-dev
|
||||||
|
|
||||||
|
|
||||||
|
# XDebug extension
|
||||||
|
#RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
|
||||||
|
# && pecl install xdebug \
|
||||||
|
# && docker-php-ext-enable xdebug \
|
||||||
|
# && apk del -f .build-deps
|
||||||
|
|
||||||
|
# Intl extension
|
||||||
|
RUN apk add icu-dev
|
||||||
|
RUN docker-php-ext-configure intl && docker-php-ext-install intl
|
||||||
|
|
||||||
|
# Mysql extension
|
||||||
|
RUN docker-php-ext-install pdo_mysql
|
||||||
|
|
||||||
|
# Composer copy and run
|
||||||
|
COPY --from=composer /usr/bin/composer /usr/bin/composer
|
||||||
|
CMD composer install ; php-fpm
|
||||||
|
|
||||||
|
# Copy script used at docker-start
|
||||||
|
COPY docker-init.sh /usr/local/bin/docker-init
|
||||||
|
RUN chmod 755 /usr/local/bin/docker-init
|
||||||
45
domokits/.docker/php-fpm/docker-init.sh
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
set -o allexport
|
||||||
|
eval $(cat '.env' | sed -e '/^#/d;/^\s*$/d' -e 's/\(\w*\)[ \t]*=[ \t]*\(.*\)/\1=\2/' -e "s/=['\"]\(.*\)['\"]/=\1/g" -e "s/'/'\\\''/g" -e "s/=\(.*\)/='\1'/g")
|
||||||
|
set +o allexport
|
||||||
|
|
||||||
|
[ -d local/session ] || mkdir -p local/session
|
||||||
|
[ -d local/media ] || mkdir -p local/media
|
||||||
|
chmod -R +w local/session && chmod -R +w local/media
|
||||||
|
|
||||||
|
composer install
|
||||||
|
|
||||||
|
DB_FILE=local/config/database.yml
|
||||||
|
if ! test -f "$DB_FILE"; then
|
||||||
|
php Thelia thelia:install --db_host=mariadb --db_port=3306 --db_username=root --db_name="${MYSQL_DATABASE}" --db_password="${MYSQL_ROOT_PASSWORD}"
|
||||||
|
php Thelia module:refresh
|
||||||
|
php Thelia module:activate OpenApi
|
||||||
|
php Thelia module:activate ChoiceFilter
|
||||||
|
php Thelia module:activate StoreSeo
|
||||||
|
php Thelia module:activate ShortCode
|
||||||
|
php Thelia module:activate ShortCodeMeta
|
||||||
|
php Thelia module:activate SmartyRedirection
|
||||||
|
php Thelia module:deactivate HookAdminHome
|
||||||
|
php Thelia module:deactivate HookAnalytics
|
||||||
|
php Thelia module:deactivate HookCart
|
||||||
|
php Thelia module:deactivate HookCustomer
|
||||||
|
php Thelia module:deactivate HookSearch
|
||||||
|
php Thelia module:deactivate HookLang
|
||||||
|
php Thelia module:deactivate HookCurrency
|
||||||
|
php Thelia module:deactivate HookNavigation
|
||||||
|
php Thelia module:deactivate HookProductsNew
|
||||||
|
php Thelia module:deactivate HookSocial
|
||||||
|
php Thelia module:deactivate HookNewsletter
|
||||||
|
php Thelia module:deactivate HookContact
|
||||||
|
php Thelia module:deactivate HookLinks
|
||||||
|
php Thelia module:deactivate HookProductsOffer
|
||||||
|
|
||||||
|
php Thelia template:set frontOffice "${ACTIVE_FRONT_TEMPLATE}"
|
||||||
|
php Thelia template:set backOffice "${ACTIVE_ADMIN_TEMPLATE}"
|
||||||
|
php Thelia thelia:config set imagine_graphic_driver imagick
|
||||||
|
php Thelia admin:create --login_name thelia2 --password thelia2 --last_name thelia2 --first_name thelia2 --email thelia2@example.com
|
||||||
|
fi
|
||||||
|
|
||||||
|
php Thelia module:refresh
|
||||||
16
domokits/.docker/php-fpm/php-ini-overrides.ini
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
upload_max_filesize = 100M
|
||||||
|
post_max_size = 108M
|
||||||
|
html_errors=On
|
||||||
|
display_errors=On
|
||||||
|
date.timezone=Europe/Paris
|
||||||
|
memory_limit=-1
|
||||||
|
max_execution_time = 300
|
||||||
|
max_input_vars = 40000
|
||||||
|
|
||||||
|
xdebug.idekey = "PHPSTORM"
|
||||||
|
|
||||||
|
; --- Xdebug 3 ---
|
||||||
|
xdebug.mode=debug,develop
|
||||||
|
xdebug.client_host=172.17.0.1
|
||||||
|
xdebug.start_with_request=yes
|
||||||
|
xdebug.discover_client_host=yes
|
||||||
33
domokits/.env.dist
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# In all environments, the following files are loaded if they exist,
|
||||||
|
# the latter taking precedence over the former:
|
||||||
|
#
|
||||||
|
# * .env contains default values for the environment variables needed by the app
|
||||||
|
# * .env.local uncommitted file with local overrides
|
||||||
|
# * .env.$APP_ENV committed environment-specific defaults
|
||||||
|
# * .env.$APP_ENV.local uncommitted environment-specific overrides
|
||||||
|
#
|
||||||
|
# Real environment variables win over .env files.
|
||||||
|
#
|
||||||
|
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
|
||||||
|
#
|
||||||
|
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
|
||||||
|
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
|
||||||
|
|
||||||
|
###> symfony/framework-bundle ###
|
||||||
|
APP_ENV=dev
|
||||||
|
APP_SECRET=dkfjqmlkfjf4654sf
|
||||||
|
###< symfony/framework-bundle ###
|
||||||
|
|
||||||
|
###> thelia/thelia ###
|
||||||
|
DEBUG_TRUSTED_IP=::1,127.0.0.1
|
||||||
|
###< thelia/thelia ###
|
||||||
|
|
||||||
|
###> symfony/lock ###
|
||||||
|
# Choose one of the stores below
|
||||||
|
# postgresql+advisory://db_user:db_password@localhost/db_name
|
||||||
|
LOCK_DSN=semaphore
|
||||||
|
###< symfony/lock ###
|
||||||
|
|
||||||
|
###> symfony/mailer ###
|
||||||
|
# MAILER_DSN=null://null
|
||||||
|
###< symfony/mailer ###
|
||||||
11
domokits/.env.docker
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# This is a sample to use if you want use docker
|
||||||
|
MYSQL_DATABASE=thelia
|
||||||
|
MYSQL_ROOT_PASSWORD=root
|
||||||
|
MYSQL_USER=thelia
|
||||||
|
MYSQL_PASSWORD=thelia
|
||||||
|
|
||||||
|
ACTIVE_FRONT_TEMPLATE=modern
|
||||||
|
ACTIVE_ADMIN_TEMPLATE=default
|
||||||
|
|
||||||
|
PHP_IDE_CONFIG=serverName=thelia
|
||||||
|
XDEBUG_CONFIG=
|
||||||
48
domokits/.gitignore
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
/vendor
|
||||||
|
/web/assets
|
||||||
|
/web/cache
|
||||||
|
/web/dist
|
||||||
|
/web/tinymce
|
||||||
|
/var
|
||||||
|
.docker/mysql-data/*
|
||||||
|
.idea
|
||||||
|
!.docker/mysql-data/.gitkeep
|
||||||
|
.env
|
||||||
|
|
||||||
|
# Thelia default templates
|
||||||
|
/templates/frontOffice/default
|
||||||
|
/templates/frontOffice/modern
|
||||||
|
/templates/backOffice/default
|
||||||
|
/templates/email/default
|
||||||
|
/templates/pdf/default
|
||||||
|
|
||||||
|
# Thelia config
|
||||||
|
/local/config
|
||||||
|
/local/setup
|
||||||
|
/local/media
|
||||||
|
/local/session
|
||||||
|
!local/media/images/store/favicon.png
|
||||||
|
!local/media/images/store/thelia.svg
|
||||||
|
!local/media/images/store/banner.png
|
||||||
|
|
||||||
|
# Thelia modules
|
||||||
|
/local/modules/*
|
||||||
|
|
||||||
|
### Please add your dependancies here
|
||||||
|
|
||||||
|
###> symfony/framework-bundle ###
|
||||||
|
/.env.local
|
||||||
|
/.env.local.php
|
||||||
|
/.env.*.local
|
||||||
|
/config/secrets/prod/prod.decrypt.private.php
|
||||||
|
/public/bundles/
|
||||||
|
/var/
|
||||||
|
/vendor/
|
||||||
|
###< symfony/framework-bundle ###
|
||||||
|
|
||||||
|
###> symfony/webpack-encore-bundle ###
|
||||||
|
/node_modules/
|
||||||
|
/public/build/
|
||||||
|
npm-debug.log
|
||||||
|
yarn-error.log
|
||||||
|
###< symfony/webpack-encore-bundle ###
|
||||||
165
domokits/LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
|
||||||
|
This version of the GNU Lesser General Public License incorporates
|
||||||
|
the terms and conditions of version 3 of the GNU General Public
|
||||||
|
License, supplemented by the additional permissions listed below.
|
||||||
|
|
||||||
|
0. Additional Definitions.
|
||||||
|
|
||||||
|
As used herein, "this License" refers to version 3 of the GNU Lesser
|
||||||
|
General Public License, and the "GNU GPL" refers to version 3 of the GNU
|
||||||
|
General Public License.
|
||||||
|
|
||||||
|
"The Library" refers to a covered work governed by this License,
|
||||||
|
other than an Application or a Combined Work as defined below.
|
||||||
|
|
||||||
|
An "Application" is any work that makes use of an interface provided
|
||||||
|
by the Library, but which is not otherwise based on the Library.
|
||||||
|
Defining a subclass of a class defined by the Library is deemed a mode
|
||||||
|
of using an interface provided by the Library.
|
||||||
|
|
||||||
|
A "Combined Work" is a work produced by combining or linking an
|
||||||
|
Application with the Library. The particular version of the Library
|
||||||
|
with which the Combined Work was made is also called the "Linked
|
||||||
|
Version".
|
||||||
|
|
||||||
|
The "Minimal Corresponding Source" for a Combined Work means the
|
||||||
|
Corresponding Source for the Combined Work, excluding any source code
|
||||||
|
for portions of the Combined Work that, considered in isolation, are
|
||||||
|
based on the Application, and not on the Linked Version.
|
||||||
|
|
||||||
|
The "Corresponding Application Code" for a Combined Work means the
|
||||||
|
object code and/or source code for the Application, including any data
|
||||||
|
and utility programs needed for reproducing the Combined Work from the
|
||||||
|
Application, but excluding the System Libraries of the Combined Work.
|
||||||
|
|
||||||
|
1. Exception to Section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
You may convey a covered work under sections 3 and 4 of this License
|
||||||
|
without being bound by section 3 of the GNU GPL.
|
||||||
|
|
||||||
|
2. Conveying Modified Versions.
|
||||||
|
|
||||||
|
If you modify a copy of the Library, and, in your modifications, a
|
||||||
|
facility refers to a function or data to be supplied by an Application
|
||||||
|
that uses the facility (other than as an argument passed when the
|
||||||
|
facility is invoked), then you may convey a copy of the modified
|
||||||
|
version:
|
||||||
|
|
||||||
|
a) under this License, provided that you make a good faith effort to
|
||||||
|
ensure that, in the event an Application does not supply the
|
||||||
|
function or data, the facility still operates, and performs
|
||||||
|
whatever part of its purpose remains meaningful, or
|
||||||
|
|
||||||
|
b) under the GNU GPL, with none of the additional permissions of
|
||||||
|
this License applicable to that copy.
|
||||||
|
|
||||||
|
3. Object Code Incorporating Material from Library Header Files.
|
||||||
|
|
||||||
|
The object code form of an Application may incorporate material from
|
||||||
|
a header file that is part of the Library. You may convey such object
|
||||||
|
code under terms of your choice, provided that, if the incorporated
|
||||||
|
material is not limited to numerical parameters, data structure
|
||||||
|
layouts and accessors, or small macros, inline functions and templates
|
||||||
|
(ten or fewer lines in length), you do both of the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the object code that the
|
||||||
|
Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the object code with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
4. Combined Works.
|
||||||
|
|
||||||
|
You may convey a Combined Work under terms of your choice that,
|
||||||
|
taken together, effectively do not restrict modification of the
|
||||||
|
portions of the Library contained in the Combined Work and reverse
|
||||||
|
engineering for debugging such modifications, if you also do each of
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) Give prominent notice with each copy of the Combined Work that
|
||||||
|
the Library is used in it and that the Library and its use are
|
||||||
|
covered by this License.
|
||||||
|
|
||||||
|
b) Accompany the Combined Work with a copy of the GNU GPL and this license
|
||||||
|
document.
|
||||||
|
|
||||||
|
c) For a Combined Work that displays copyright notices during
|
||||||
|
execution, include the copyright notice for the Library among
|
||||||
|
these notices, as well as a reference directing the user to the
|
||||||
|
copies of the GNU GPL and this license document.
|
||||||
|
|
||||||
|
d) Do one of the following:
|
||||||
|
|
||||||
|
0) Convey the Minimal Corresponding Source under the terms of this
|
||||||
|
License, and the Corresponding Application Code in a form
|
||||||
|
suitable for, and under terms that permit, the user to
|
||||||
|
recombine or relink the Application with a modified version of
|
||||||
|
the Linked Version to produce a modified Combined Work, in the
|
||||||
|
manner specified by section 6 of the GNU GPL for conveying
|
||||||
|
Corresponding Source.
|
||||||
|
|
||||||
|
1) Use a suitable shared library mechanism for linking with the
|
||||||
|
Library. A suitable mechanism is one that (a) uses at run time
|
||||||
|
a copy of the Library already present on the user's computer
|
||||||
|
system, and (b) will operate properly with a modified version
|
||||||
|
of the Library that is interface-compatible with the Linked
|
||||||
|
Version.
|
||||||
|
|
||||||
|
e) Provide Installation Information, but only if you would otherwise
|
||||||
|
be required to provide such information under section 6 of the
|
||||||
|
GNU GPL, and only to the extent that such information is
|
||||||
|
necessary to install and execute a modified version of the
|
||||||
|
Combined Work produced by recombining or relinking the
|
||||||
|
Application with a modified version of the Linked Version. (If
|
||||||
|
you use option 4d0, the Installation Information must accompany
|
||||||
|
the Minimal Corresponding Source and Corresponding Application
|
||||||
|
Code. If you use option 4d1, you must provide the Installation
|
||||||
|
Information in the manner specified by section 6 of the GNU GPL
|
||||||
|
for conveying Corresponding Source.)
|
||||||
|
|
||||||
|
5. Combined Libraries.
|
||||||
|
|
||||||
|
You may place library facilities that are a work based on the
|
||||||
|
Library side by side in a single library together with other library
|
||||||
|
facilities that are not Applications and are not covered by this
|
||||||
|
License, and convey such a combined library under terms of your
|
||||||
|
choice, if you do both of the following:
|
||||||
|
|
||||||
|
a) Accompany the combined library with a copy of the same work based
|
||||||
|
on the Library, uncombined with any other library facilities,
|
||||||
|
conveyed under the terms of this License.
|
||||||
|
|
||||||
|
b) Give prominent notice with the combined library that part of it
|
||||||
|
is a work based on the Library, and explaining where to find the
|
||||||
|
accompanying uncombined form of the same work.
|
||||||
|
|
||||||
|
6. Revised Versions of the GNU Lesser General Public License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the GNU Lesser General Public License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Library as you received it specifies that a certain numbered version
|
||||||
|
of the GNU Lesser General Public License "or any later version"
|
||||||
|
applies to it, you have the option of following the terms and
|
||||||
|
conditions either of that published version or of any later version
|
||||||
|
published by the Free Software Foundation. If the Library as you
|
||||||
|
received it does not specify a version number of the GNU Lesser
|
||||||
|
General Public License, you may choose any version of the GNU Lesser
|
||||||
|
General Public License ever published by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Library as you received it specifies that a proxy can decide
|
||||||
|
whether future versions of the GNU Lesser General Public License shall
|
||||||
|
apply, that proxy's public statement of acceptance of any version is
|
||||||
|
permanent authorization for you to choose that version for the
|
||||||
|
Library.
|
||||||
144
domokits/Readme.md
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
Readme
|
||||||
|
======
|
||||||
|
|
||||||
|
#### This is the project creation repository of Thelia. If you want to contribute, please take a look at [thelia/thelia](https://github.com/thelia/thelia)
|
||||||
|
|
||||||
|
Thelia
|
||||||
|
------
|
||||||
|
[](https://github.com/thelia/thelia/actions?query=workflow%3A"test") [](https://packagist.org/packages/thelia/thelia) [](https://scrutinizer-ci.com/g/thelia/thelia/)
|
||||||
|
|
||||||
|
[Thelia](http://thelia.net/) is an open source tool for creating e-business websites and managing online content. This software is published under LGPL.
|
||||||
|
|
||||||
|
This is the new major version of Thelia.
|
||||||
|
|
||||||
|
You can download this version and have a try or take a look at the source code (or anything you wish, respecting LGPL). See http://thelia.net/ web site for more information.
|
||||||
|
|
||||||
|
A repository containing all thelia modules is available at this address : https://github.com/thelia-modules
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
* PHP 7.0
|
||||||
|
* Required extensions :
|
||||||
|
* PDO_Mysql
|
||||||
|
* mcrypt
|
||||||
|
* intl
|
||||||
|
* gd
|
||||||
|
* curl
|
||||||
|
* safe_mode off
|
||||||
|
* memory_limit at least 128M, preferably 256.
|
||||||
|
* post_max_size 20M
|
||||||
|
* upload_max_filesize 2M
|
||||||
|
* date.timezone must be defined
|
||||||
|
* Web Server Apache 2 or Nginx
|
||||||
|
* MySQL 5
|
||||||
|
|
||||||
|
## Create a Thelia project
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
$ curl -sS https://getcomposer.org/installer | php
|
||||||
|
$ php composer.phar create-project thelia/thelia-project path/ 2.4.4 (or 2.3.5)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Install it with your own environment
|
||||||
|
|
||||||
|
You can install Thelia using the cli tool and the scripts provided by thelia/setup
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
$ php Thelia thelia:install
|
||||||
|
```
|
||||||
|
|
||||||
|
Consult the page : http://localhost/thelia/web/index_dev.php
|
||||||
|
|
||||||
|
You can create a virtual host and choose web folder for root directory.
|
||||||
|
|
||||||
|
## Quick install with docker-compose
|
||||||
|
|
||||||
|
This repo contains all the configuration needed to run Thelia with docker and docker-compose.
|
||||||
|
Warning, this docker configuration is not ready for production.
|
||||||
|
|
||||||
|
It requires obviously [docker](https://docker.com/) and [docker-compose](https://docs.docker.com/compose/)
|
||||||
|
|
||||||
|
To install Thelia within Docker, run :
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
./start-docker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
It will ask you for a template name (usually your project name) if you don't have a .env file but you can create the .env by yourself, take a look at .env.docker to make your own.
|
||||||
|
|
||||||
|
If your folder template does not exist it will copy the "modern" template.
|
||||||
|
|
||||||
|
Next just go to http://localhost:8080 and you should see your Thelia installed !
|
||||||
|
|
||||||
|
And run the same command everytime you want launch your Thelia.
|
||||||
|
|
||||||
|
If you want add some sample data just add the option `-demo`
|
||||||
|
``` bash
|
||||||
|
./start-docker.sh -demo
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to access your database from your computer (with DBeaver, Sequel Pro or anything else) by default the host is `localhost` and the port is `8086`
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Thelia documentation is available at http://doc.thelia.net
|
||||||
|
|
||||||
|
|
||||||
|
Contribute
|
||||||
|
----------
|
||||||
|
|
||||||
|
See the documentation : http://doc.thelia.net/en/documentation/contribute.html
|
||||||
|
|
||||||
|
### Mac OSX
|
||||||
|
|
||||||
|
If you use Mac OSX, it still doesn't use php 5.4 as default php version... There are many solutions for you :
|
||||||
|
|
||||||
|
* use [phpbrew](https://github.com/c9s/phpbrew)
|
||||||
|
* use last MAMP version and put the php bin directory in your path:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export PATH=/Applications/MAMP/bin/php/php5.5.x/bin/:$PATH
|
||||||
|
```
|
||||||
|
|
||||||
|
* configure a complete development environment : http://php-osx.liip.ch/
|
||||||
|
* use a virtual machine with vagrant and puppet : https://puphpet.com/
|
||||||
|
|
||||||
|
### MySQL 5.6
|
||||||
|
|
||||||
|
As of MySQL 5.6, default configuration sets the sql_mode value to
|
||||||
|
|
||||||
|
```
|
||||||
|
STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
|
||||||
|
```
|
||||||
|
|
||||||
|
This 'STRICT_TRANS_TABLES' configuration results in SQL errors when no default value is defined on NOT NULL columns and the value is empty or invalid.
|
||||||
|
|
||||||
|
You can edit this default config in ` /etc/my.cnf ` and change the sql_mode to remove the STRICT_TRANS_TABLES part
|
||||||
|
|
||||||
|
```
|
||||||
|
[mysqld]
|
||||||
|
sql_mode=NO_ENGINE_SUBSTITUTION
|
||||||
|
```
|
||||||
|
|
||||||
|
Assuming your sql_mode is the default one, you can change the value directly on the run by running the following SQL Command
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SET @@GLOBAL.sql_mode='NO_ENGINE_SUBSTITUTION', @@SESSION.sql_mode='NO_ENGINE_SUBSTITUTION'
|
||||||
|
```
|
||||||
|
|
||||||
|
For more information on sql_mode you can consult the [MySQL doc](http://dev.mysql.com/doc/refman/5.0/fr/server-sql-mode.html "sql Mode")
|
||||||
|
|
||||||
|
## Archive builders
|
||||||
|
Thelia's archive builder's needs external libraries.
|
||||||
|
For zip archives, you need PECL zip. See [PHP Doc](http://php.net/manual/en/zip.installation.php)
|
||||||
|
|
||||||
|
For tar archives, you need PECL phar. Moreover, you need to deactivate php.ini option "phar.readonly":
|
||||||
|
```ini
|
||||||
|
phar.readonly = Off
|
||||||
|
```
|
||||||
|
|
||||||
|
For tar.bz2 archives, you need tar's dependencies and the extension "bzip2". See [PHP Doc](http://php.net/manual/fr/book.bzip2.php)
|
||||||
|
|
||||||
|
For tar.gz archives, you need tar's dependencies and the extension "zlib". See [PHP Doc](http://fr2.php.net/manual/fr/book.zlib.php)
|
||||||
5
domokits/Thelia
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$bootstrapFile = __DIR__ . DIRECTORY_SEPARATOR . "bootstrap.php";
|
||||||
|
require __DIR__ . "/vendor/thelia/core/Thelia";
|
||||||
12
domokits/assets/app.js
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* Welcome to your app's main JavaScript file!
|
||||||
|
*
|
||||||
|
* We recommend including the built version of this JavaScript file
|
||||||
|
* (and its CSS file) in your base layout (base.html.twig).
|
||||||
|
*/
|
||||||
|
|
||||||
|
// any CSS you import will output into a single css file (app.css in this case)
|
||||||
|
import './styles/app.css';
|
||||||
|
|
||||||
|
// start the Stimulus application
|
||||||
|
import './bootstrap';
|
||||||
11
domokits/assets/bootstrap.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
import { startStimulusApp } from '@symfony/stimulus-bridge';
|
||||||
|
|
||||||
|
// Registers Stimulus controllers from controllers.json and in the controllers/ directory
|
||||||
|
export const app = startStimulusApp(require.context(
|
||||||
|
'@symfony/stimulus-bridge/lazy-controller-loader!./controllers',
|
||||||
|
true,
|
||||||
|
/\.[jt]sx?$/
|
||||||
|
));
|
||||||
|
|
||||||
|
// register any custom, 3rd party controllers here
|
||||||
|
// app.register('some_controller_name', SomeImportedController);
|
||||||
4
domokits/assets/controllers.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"controllers": [],
|
||||||
|
"entrypoints": []
|
||||||
|
}
|
||||||
16
domokits/assets/controllers/hello_controller.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import { Controller } from '@hotwired/stimulus';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is an example Stimulus controller!
|
||||||
|
*
|
||||||
|
* Any element with a data-controller="hello" attribute will cause
|
||||||
|
* this controller to be executed. The name "hello" comes from the filename:
|
||||||
|
* hello_controller.js -> "hello"
|
||||||
|
*
|
||||||
|
* Delete this file or adapt it for your use!
|
||||||
|
*/
|
||||||
|
export default class extends Controller {
|
||||||
|
connect() {
|
||||||
|
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
|
||||||
|
}
|
||||||
|
}
|
||||||
3
domokits/assets/styles/app.css
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
body {
|
||||||
|
background-color: lightgray;
|
||||||
|
}
|
||||||
5
domokits/bin/console
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$bootstrapFile = __DIR__ . "/../bootstrap.php";
|
||||||
|
require __DIR__ . "/../vendor/thelia/core/Thelia";
|
||||||
16
domokits/bootstrap.php
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Here you can override thelia directories constants.
|
||||||
|
// Please see vendor/thelia/core/bootstrap.php
|
||||||
|
|
||||||
|
define('DS', DIRECTORY_SEPARATOR);
|
||||||
|
define ("THELIA_ROOT", __DIR__ . DS);
|
||||||
|
define ('THELIA_VENDOR', __DIR__ . DS . 'vendor' . DS);
|
||||||
|
define ('THELIA_LIB', THELIA_VENDOR . 'thelia' . DS . 'core' . DS . 'lib' . DS . 'Thelia' . DS);
|
||||||
|
define ("THELIA_SETUP_DIRECTORY", __DIR__ . DS . "local" . DS . "setup" . DS);
|
||||||
|
|
||||||
|
// --------------------------------------------------
|
||||||
|
|
||||||
|
$loader = require "vendor/autoload.php";
|
||||||
|
|
||||||
|
return $loader;
|
||||||
13
domokits/compose.override.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
###> symfony/mailer ###
|
||||||
|
mailer:
|
||||||
|
image: axllent/mailpit
|
||||||
|
ports:
|
||||||
|
- "1025"
|
||||||
|
- "8025"
|
||||||
|
environment:
|
||||||
|
MP_SMTP_AUTH_ACCEPT_ANY: 1
|
||||||
|
MP_SMTP_AUTH_ALLOW_INSECURE: 1
|
||||||
|
###< symfony/mailer ###
|
||||||
61
domokits/composer.json
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"license": "proprietary",
|
||||||
|
"require": {
|
||||||
|
"thelia/thelia-skeleton": "~2.5.3",
|
||||||
|
"symfony/flex": "^1.19",
|
||||||
|
"thelia/frontoffice-modern-template": "~2.5.3",
|
||||||
|
"thelia/open-api-module": "~2.1.0",
|
||||||
|
"thelia/smarty-redirection-module": "~2.0.0",
|
||||||
|
"thelia/choice-filter-module": "~2.1.0",
|
||||||
|
"thelia/custom-delivery-module": "~3.1.0",
|
||||||
|
"thelia/store-seo-module": "~2.0.0",
|
||||||
|
"thelia/better-seo-module": "~2.1.0",
|
||||||
|
"thelia/rewrite-url-module": "~2.1.0",
|
||||||
|
"thelia/url-sanitizer-module": "~2.1.0",
|
||||||
|
"thelia/canonical-url-module": "~2.1.0",
|
||||||
|
"thelia/short-code-meta-module": "~2.0.0",
|
||||||
|
"thelia/thelia-blocks-module": "^2.0.3-beta",
|
||||||
|
"thelia/thelia-library-module": "^1.1.7",
|
||||||
|
"thelia/product-loop-attribute-filter-module": "~2.0.0",
|
||||||
|
"thelia/reset-password-module": "~1.0.1",
|
||||||
|
"thelia/re-captcha-module": "~3.0.1"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"vlopes/maintenance-module": "Add a way to put your site in maintenance mode",
|
||||||
|
"thelia/order-creation-module": "Create order from admin",
|
||||||
|
"cqfdev/best-sellers-module": "Show your best sellers on your home page",
|
||||||
|
"thelia/alternate-hreflang-module": "Generates a alternateHreflang URL for every page of your shop"
|
||||||
|
},
|
||||||
|
"minimum-stability": "dev",
|
||||||
|
"prefer-stable": true,
|
||||||
|
"scripts": {
|
||||||
|
"demo-database": [
|
||||||
|
"php Thelia thelia:dev:reloadDB -f",
|
||||||
|
"php local/setup/import.php",
|
||||||
|
"php Thelia admin:create --login_name thelia --password thelia --last_name thelia --first_name thelia --email thelia@example.com"
|
||||||
|
],
|
||||||
|
"auto-scripts": {
|
||||||
|
"cache:clear": "symfony-cmd",
|
||||||
|
"assets:install %PUBLIC_DIR%": "symfony-cmd"
|
||||||
|
},
|
||||||
|
"post-autoload-dump": [
|
||||||
|
"Thelia\\Config\\InitConfig::initConfig"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"": [
|
||||||
|
"local/modules/",
|
||||||
|
"var/cache/propel/model"
|
||||||
|
],
|
||||||
|
"TheliaMain\\": "var/cache/propel/database/TheliaMain",
|
||||||
|
"App\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"symfony/flex": true,
|
||||||
|
"thelia/installer": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
8923
domokits/composer.lock
generated
Normal file
8
domokits/config/bundles.php
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
|
||||||
|
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
|
||||||
|
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
|
||||||
|
];
|
||||||
19
domokits/config/packages/cache.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
framework:
|
||||||
|
cache:
|
||||||
|
# Unique name of your app: used to compute stable namespaces for cache keys.
|
||||||
|
#prefix_seed: your_vendor_name/app_name
|
||||||
|
|
||||||
|
# The "app" cache stores to the filesystem by default.
|
||||||
|
# The data in this cache should persist between deploys.
|
||||||
|
# Other options include:
|
||||||
|
|
||||||
|
# Redis
|
||||||
|
#app: cache.adapter.redis
|
||||||
|
#default_redis_provider: redis://localhost
|
||||||
|
|
||||||
|
# APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
|
||||||
|
#app: cache.adapter.apcu
|
||||||
|
|
||||||
|
# Namespaced pools use the above "app" backend by default
|
||||||
|
#pools:
|
||||||
|
#my.dedicated.cache: null
|
||||||
25
domokits/config/packages/framework.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# see https://symfony.com/doc/current/reference/configuration/framework.html
|
||||||
|
framework:
|
||||||
|
secret: '%env(APP_SECRET)%'
|
||||||
|
#csrf_protection: true
|
||||||
|
annotations: false
|
||||||
|
http_method_override: false
|
||||||
|
handle_all_throwables: true
|
||||||
|
|
||||||
|
# Enables session support. Note that the session will ONLY be started if you read or write from it.
|
||||||
|
# Remove or comment this section to explicitly disable session support.
|
||||||
|
session:
|
||||||
|
handler_id: null
|
||||||
|
cookie_secure: auto
|
||||||
|
cookie_samesite: lax
|
||||||
|
|
||||||
|
#esi: true
|
||||||
|
#fragments: true
|
||||||
|
php_errors:
|
||||||
|
log: true
|
||||||
|
|
||||||
|
when@test:
|
||||||
|
framework:
|
||||||
|
test: true
|
||||||
|
session:
|
||||||
|
storage_factory_id: session.storage.factory.mock_file
|
||||||
2
domokits/config/packages/lock.yaml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
framework:
|
||||||
|
lock: '%env(LOCK_DSN)%'
|
||||||
3
domokits/config/packages/mailer.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
framework:
|
||||||
|
mailer:
|
||||||
|
dsn: '%env(MAILER_DSN)%'
|
||||||
12
domokits/config/packages/routing.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
framework:
|
||||||
|
router:
|
||||||
|
utf8: true
|
||||||
|
|
||||||
|
# Configure how to generate URLs in non-HTTP contexts, such as CLI commands.
|
||||||
|
# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
|
||||||
|
#default_uri: http://localhost
|
||||||
|
|
||||||
|
when@prod:
|
||||||
|
framework:
|
||||||
|
router:
|
||||||
|
strict_requirements: null
|
||||||
7
domokits/config/packages/translation.yaml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
framework:
|
||||||
|
default_locale: en
|
||||||
|
translator:
|
||||||
|
default_path: '%kernel.project_dir%/translations'
|
||||||
|
fallbacks:
|
||||||
|
- en
|
||||||
|
providers:
|
||||||
6
domokits/config/packages/twig.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
twig:
|
||||||
|
file_name_pattern: '*.twig'
|
||||||
|
|
||||||
|
when@test:
|
||||||
|
twig:
|
||||||
|
strict_variables: true
|
||||||
13
domokits/config/packages/validator.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
framework:
|
||||||
|
validation:
|
||||||
|
email_validation_mode: html5
|
||||||
|
|
||||||
|
# Enables validator auto-mapping support.
|
||||||
|
# For instance, basic validation constraints will be inferred from Doctrine's metadata.
|
||||||
|
#auto_mapping:
|
||||||
|
# App\Entity\: []
|
||||||
|
|
||||||
|
when@test:
|
||||||
|
framework:
|
||||||
|
validation:
|
||||||
|
not_compromised_password: false
|
||||||
17
domokits/config/packages/web_profiler.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
when@dev:
|
||||||
|
web_profiler:
|
||||||
|
toolbar: true
|
||||||
|
intercept_redirects: false
|
||||||
|
|
||||||
|
framework:
|
||||||
|
profiler:
|
||||||
|
only_exceptions: false
|
||||||
|
collect_serializer_data: true
|
||||||
|
|
||||||
|
when@test:
|
||||||
|
web_profiler:
|
||||||
|
toolbar: false
|
||||||
|
intercept_redirects: false
|
||||||
|
|
||||||
|
framework:
|
||||||
|
profiler: { collect: false }
|
||||||
8
domokits/config/packages/webpack_encore.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
webpack_encore:
|
||||||
|
output_path: '%kernel.project_dir%/public/build'
|
||||||
|
script_attributes:
|
||||||
|
defer: true
|
||||||
|
builds:
|
||||||
|
_default: ''
|
||||||
|
frontOffice: '%kernel.project_dir%/templates/frontOffice/%thelia_front_template%/dist'
|
||||||
|
backOffice: '%kernel.project_dir%/templates/backOffice/%thelia_admin_template%/dist'
|
||||||
5
domokits/config/preload.php
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
if (file_exists(dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php')) {
|
||||||
|
require dirname(__DIR__).'/var/cache/prod/App_KernelProdContainer.preload.php';
|
||||||
|
}
|
||||||
5
domokits/config/routes.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
controllers:
|
||||||
|
resource:
|
||||||
|
path: ../src/Controller/
|
||||||
|
namespace: App\Controller
|
||||||
|
type: attribute
|
||||||
4
domokits/config/routes/framework.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
when@dev:
|
||||||
|
_errors:
|
||||||
|
resource: '@FrameworkBundle/Resources/config/routing/errors.xml'
|
||||||
|
prefix: /_error
|
||||||
8
domokits/config/routes/web_profiler.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
when@dev:
|
||||||
|
web_profiler_wdt:
|
||||||
|
resource: '@WebProfilerBundle/Resources/config/routing/wdt.xml'
|
||||||
|
prefix: /_wdt
|
||||||
|
|
||||||
|
web_profiler_profiler:
|
||||||
|
resource: '@WebProfilerBundle/Resources/config/routing/profiler.xml'
|
||||||
|
prefix: /_profiler
|
||||||
24
domokits/config/services.yaml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# This file is the entry point to configure your own services.
|
||||||
|
# Files in the packages/ subdirectory configure your dependencies.
|
||||||
|
|
||||||
|
# Put parameters here that don't need to change on each machine where the app is deployed
|
||||||
|
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
||||||
|
parameters:
|
||||||
|
|
||||||
|
services:
|
||||||
|
# default configuration for services in *this* file
|
||||||
|
_defaults:
|
||||||
|
autowire: true # Automatically injects dependencies in your services.
|
||||||
|
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
|
||||||
|
|
||||||
|
# makes classes in src/ available to be used as services
|
||||||
|
# this creates a service per class whose id is the fully-qualified class name
|
||||||
|
App\:
|
||||||
|
resource: '../src/'
|
||||||
|
exclude:
|
||||||
|
- '../src/DependencyInjection/'
|
||||||
|
- '../src/Entity/'
|
||||||
|
- '../src/Kernel.php'
|
||||||
|
|
||||||
|
# add more service definitions when explicit configuration is needed
|
||||||
|
# please note that last definitions always *replace* previous ones
|
||||||
57
domokits/docker-compose.yml
Executable file
@@ -0,0 +1,57 @@
|
|||||||
|
version: "3.7"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mariadb:
|
||||||
|
image: mariadb:10.3
|
||||||
|
container_name: docker-thelia-mariadb
|
||||||
|
working_dir: /application
|
||||||
|
volumes:
|
||||||
|
- .:/application
|
||||||
|
- .docker/mysql-data:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD
|
||||||
|
- MYSQL_DATABASE
|
||||||
|
- MYSQL_USER
|
||||||
|
- MYSQL_PASSWORD
|
||||||
|
ports:
|
||||||
|
- "8086:3306"
|
||||||
|
|
||||||
|
webserver:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: docker-thelia-webserver
|
||||||
|
working_dir: /application
|
||||||
|
volumes:
|
||||||
|
- .:/application
|
||||||
|
- .docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
ports:
|
||||||
|
- "8080:80"
|
||||||
|
|
||||||
|
php-fpm:
|
||||||
|
build: .docker/php-fpm
|
||||||
|
container_name: docker-thelia-php-fpm
|
||||||
|
working_dir: /application
|
||||||
|
volumes:
|
||||||
|
- .:/application
|
||||||
|
- .docker/php-fpm/php-ini-overrides.ini:/usr/local/etc/php/conf.d/99-overrides.ini
|
||||||
|
environment:
|
||||||
|
- PHP_IDE_CONFIG
|
||||||
|
- XDEBUG_CONFIG
|
||||||
|
- ACTIVE_FRONT_TEMPLATE
|
||||||
|
- MYSQL_ROOT_PASSWORD
|
||||||
|
- MYSQL_DATABASE
|
||||||
|
- MYSQL_USER
|
||||||
|
- MYSQL_PASSWORD
|
||||||
|
|
||||||
|
encore:
|
||||||
|
build:
|
||||||
|
context: ./templates/frontOffice/${ACTIVE_FRONT_TEMPLATE:-modern}
|
||||||
|
target: thelia_encore
|
||||||
|
container_name: docker-thelia-encore
|
||||||
|
working_dir: /application/templates/frontOffice/${ACTIVE_FRONT_TEMPLATE:-modern}
|
||||||
|
environment:
|
||||||
|
BROWSERSYNC_PROXY: http://localhost:8081
|
||||||
|
volumes:
|
||||||
|
- ./templates/frontOffice/${ACTIVE_FRONT_TEMPLATE:-modern}:/application/templates/frontOffice/${ACTIVE_FRONT_TEMPLATE:-modern}:delegated
|
||||||
|
- ./templates/frontOffice/${ACTIVE_FRONT_TEMPLATE:-modern}/node_modules:/application/templates/frontOffice/${ACTIVE_FRONT_TEMPLATE:-modern}/node_modules
|
||||||
|
ports:
|
||||||
|
- 8081:8081
|
||||||
0
domokits/local/.gitkeep
Normal file
0
domokits/local/backup/.gitkeep
Normal file
1171
domokits/log/log-thelia.txt
Normal file
154
domokits/modern-init.sh
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Checking node version \e[0m"
|
||||||
|
if which node > /dev/null
|
||||||
|
then
|
||||||
|
node_version="$(node --version | cut -c 2,3)";
|
||||||
|
if [[ "$node_version" =~ ^(10|11|12|14|15)$ ]]
|
||||||
|
then
|
||||||
|
echo -e "\e[1;37;42m Node: OK (v$node_version) \e[0m"
|
||||||
|
else
|
||||||
|
echo -e "\e[1;37;41m Your Node.js version isn't supported by this project, you need one of this versions: v10, v11, v12, v13, v14, v15 \e[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "\e[1;37;41m Node.js is not installed or not in your PATH \e[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Checking yarn is installed \e[0m"
|
||||||
|
if ! command -v yarn &> /dev/null
|
||||||
|
then
|
||||||
|
echo -e "\e[1;37;41m Yarn is not installed or not in your PATH \e[0m"
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
echo -e "\e[1;37;42m Yarn: OK \e[0m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Checking composer is installed \e[0m"
|
||||||
|
|
||||||
|
if which composer > /dev/null
|
||||||
|
then
|
||||||
|
echo -e "\e[1;37;42m Composer: OK \e[0m"
|
||||||
|
else
|
||||||
|
echo -e "\e[1;37;41m Composer is not installed or not in your PATH \e[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
DB_FILE=./local/config/database.yml
|
||||||
|
|
||||||
|
if test -f "$DB_FILE"; then
|
||||||
|
read -p "$(echo -e "\e[1;37;45m Would you like to erase the current database.yml file (y/n)? \e[0m")" erase
|
||||||
|
if [ "$erase" != "${erase#[Yy]}" ] ;then
|
||||||
|
echo -e "\e[1;37;46m Removing current database.yml \e[0m"
|
||||||
|
rm $DB_FILE
|
||||||
|
rm -rf ./cache
|
||||||
|
echo -e "\e[1;37;42m database.yml removed \e[0m"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "$(echo -e "\e[1;37;45m Enter a template folder name, (default: modern) it's recommended to change it : \e[0m")" TEMPLATE_NAME
|
||||||
|
TEMPLATE_NAME=${TEMPLATE_NAME:-modern}
|
||||||
|
|
||||||
|
if [ "$TEMPLATE_NAME" != "modern" ] ;then
|
||||||
|
echo -e "\e[1;37;46m Copying template files to templates/frontOffice/$TEMPLATE_NAME \e[0m"
|
||||||
|
cp -r "templates/frontOffice/modern" "templates/frontOffice/$TEMPLATE_NAME";
|
||||||
|
echo -e "\e[1;37;42m File copied \e[0m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Creating session and media folder if not exist \e[0m"
|
||||||
|
[ -d local/session ] || mkdir -p local/session
|
||||||
|
[ -d local/media ] || mkdir -p local/media
|
||||||
|
|
||||||
|
chmod -R +w local/session && chmod -R +w local/media
|
||||||
|
echo -e "\e[1;37;42m Folder created \e[0m"
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Installing dependencies by composer \e[0m"
|
||||||
|
composer install
|
||||||
|
echo -e "\e[1;37;32 Dependencies installed \e[0m"
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Installing Thelia \e[0m"
|
||||||
|
php Thelia thelia:install
|
||||||
|
echo -e "\e[1;37;42m Thelia installed \e[0m"
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Activating needed modules \e[0m"
|
||||||
|
php Thelia module:refresh
|
||||||
|
php Thelia module:activate OpenApi
|
||||||
|
php Thelia module:activate ChoiceFilter
|
||||||
|
php Thelia module:activate StoreSeo
|
||||||
|
php Thelia module:activate SmartyRedirection
|
||||||
|
php Thelia module:deactivate HookAdminHome
|
||||||
|
php Thelia module:deactivate HookAnalytics
|
||||||
|
php Thelia module:deactivate HookCart
|
||||||
|
php Thelia module:deactivate HookCustomer
|
||||||
|
php Thelia module:deactivate HookSearch
|
||||||
|
php Thelia module:deactivate HookLang
|
||||||
|
php Thelia module:deactivate HookCurrency
|
||||||
|
php Thelia module:deactivate HookNavigation
|
||||||
|
php Thelia module:deactivate HookProductsNew
|
||||||
|
php Thelia module:deactivate HookSocial
|
||||||
|
php Thelia module:deactivate HookNewsletter
|
||||||
|
php Thelia module:deactivate HookContact
|
||||||
|
php Thelia module:deactivate HookLinks
|
||||||
|
php Thelia module:deactivate HookProductsOffer
|
||||||
|
php Thelia module:refresh
|
||||||
|
echo -e "\e[1;37;42m Module activated \e[0m"
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Changing active template \e[0m"
|
||||||
|
|
||||||
|
php Thelia template:front "$TEMPLATE_NAME"
|
||||||
|
|
||||||
|
echo -e "\e[1;37;42m Active template changed \e[0m"
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Creating an administrator \e[0m"
|
||||||
|
|
||||||
|
php Thelia admin:create
|
||||||
|
|
||||||
|
echo -e "\e[1;37;42m Administrator created \e[0m"
|
||||||
|
|
||||||
|
TEMPLATE_NAME=modern
|
||||||
|
|
||||||
|
if test -f "$DB_FILE"; then
|
||||||
|
read -p "$(echo -e "\e[1;37;45m Would you like to install a sample database (y/n)? \e[0m")" sample
|
||||||
|
if [ "$sample" != "${sample#[Yy]}" ] ;then
|
||||||
|
if test -f local/setup/import.php; then
|
||||||
|
php local/setup/import.php
|
||||||
|
elif test -f setup/import.php; then
|
||||||
|
php setup/import.php
|
||||||
|
else
|
||||||
|
echo -e "\e[1;37;41m Import script not found \e[0m"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
echo -e "\e[1;37;42m Sample data imported \e[0m"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf ./cache
|
||||||
|
|
||||||
|
read -p "$(echo -e "\e[1;37;45m What's your BROWSERSYNC_PROXY(eg: http://myvhost.test) : \e[0m")" vhost
|
||||||
|
|
||||||
|
if [ -z $vhost ]
|
||||||
|
then
|
||||||
|
echo "To set your BROWSERSYNC_PROXY, you have to create .env file at the root of your template : templates/frontOffice/$TEMPLATE_NAME/"
|
||||||
|
else
|
||||||
|
cd "templates/frontOffice/$TEMPLATE_NAME" && touch .env && echo BROWSERSYNC_PROXY="$vhost" > .env && cd -
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "templates/frontOffice/$TEMPLATE_NAME" || exit
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Installing dependencies by yarn \e[0m"
|
||||||
|
yarn install || exit
|
||||||
|
echo -e "\e[1;37;42m Dependencies installed \e[0m"
|
||||||
|
echo -e "\e[1;37;46m Building template \e[0m"
|
||||||
|
yarn build || exit
|
||||||
|
echo -e "\e[1;37;42m Template builded \e[0m"
|
||||||
|
|
||||||
|
cd ../../..
|
||||||
|
|
||||||
|
echo -e "\e[1;37;42m Everything is good, you can now use your Thelia ! \e[0m"
|
||||||
|
|
||||||
|
# INIT CONSTANTS
|
||||||
|
# ------------------------------
|
||||||
|
|
||||||
|
exit 1
|
||||||
22
domokits/package.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/core": "^7.17.0",
|
||||||
|
"@babel/preset-env": "^7.16.0",
|
||||||
|
"@hotwired/stimulus": "^3.0.0",
|
||||||
|
"@symfony/stimulus-bridge": "^3.2.0",
|
||||||
|
"@symfony/webpack-encore": "^4.0.0",
|
||||||
|
"core-js": "^3.23.0",
|
||||||
|
"regenerator-runtime": "^0.13.9",
|
||||||
|
"webpack": "^5.74.0",
|
||||||
|
"webpack-cli": "^4.10.0",
|
||||||
|
"webpack-notifier": "^1.15.0"
|
||||||
|
},
|
||||||
|
"license": "UNLICENSED",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev-server": "encore dev-server",
|
||||||
|
"dev": "encore dev",
|
||||||
|
"watch": "encore dev --watch",
|
||||||
|
"build": "encore production --progress"
|
||||||
|
}
|
||||||
|
}
|
||||||
33
domokits/public/index.php
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
use Symfony\Component\Dotenv\Dotenv;
|
||||||
|
use Symfony\Component\ErrorHandler\Debug;
|
||||||
|
use Thelia\Core\HttpFoundation\Request;
|
||||||
|
|
||||||
|
|
||||||
|
$env = 'prod';
|
||||||
|
$loader = require __DIR__ . '/../bootstrap.php';
|
||||||
|
|
||||||
|
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
||||||
|
|
||||||
|
if ($_SERVER['APP_DEBUG']) {
|
||||||
|
umask(0000);
|
||||||
|
|
||||||
|
Debug::enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
$thelia = new App\Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
|
||||||
|
$request = Request::createFromGlobals();
|
||||||
|
$response = $thelia->handle($request);
|
||||||
|
$response->send();
|
||||||
|
$thelia->terminate($request, $response);
|
||||||
0
domokits/src/Controller/.gitignore
vendored
Normal file
61
domokits/src/Kernel.php
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Thelia package.
|
||||||
|
* http://www.thelia.net
|
||||||
|
*
|
||||||
|
* (c) OpenStudio <info@thelia.net>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App;
|
||||||
|
|
||||||
|
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
|
||||||
|
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
|
||||||
|
use Thelia\Core\Thelia;
|
||||||
|
|
||||||
|
class Kernel extends Thelia
|
||||||
|
{
|
||||||
|
protected function configureContainer(ContainerConfigurator $container): void
|
||||||
|
{
|
||||||
|
parent::configureContainer($container);
|
||||||
|
|
||||||
|
$container->import('../config/{packages}/*.yaml');
|
||||||
|
$container->import('../config/{packages}/'.$this->environment.'/*.yaml');
|
||||||
|
|
||||||
|
if (is_file(\dirname(__DIR__).'/config/services.yaml')) {
|
||||||
|
$container->import('../config/services.yaml');
|
||||||
|
$container->import('../config/{services}_'.$this->environment.'.yaml');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$path = \dirname(__DIR__).'/config/services.php';
|
||||||
|
|
||||||
|
if (is_file($path)) {
|
||||||
|
(require $path)($container->withPath($path), $this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function configureRoutes(RoutingConfigurator $routes): void
|
||||||
|
{
|
||||||
|
$routes->import('../config/{routes}/'.$this->environment.'/*.yaml');
|
||||||
|
$routes->import('../config/{routes}/*.yaml');
|
||||||
|
|
||||||
|
if (is_file(\dirname(__DIR__).'/config/routes.yaml')) {
|
||||||
|
$routes->import('../config/routes.yaml');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$path = \dirname(__DIR__).'/config/routes.php';
|
||||||
|
|
||||||
|
if (is_file($path)) {
|
||||||
|
(require $path)($routes->withPath($path), $this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
48
domokits/start-docker.sh
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if ! test -f ".env"; then
|
||||||
|
read -p "$(echo -e "\e[1;37;45m You don't have a .env file, we will create it. Please enter a template name : \e[0m")" template_name
|
||||||
|
if [[ -z "$template_name" ]]; then
|
||||||
|
echo -e "\e[1;37;41m Invalid template name \e[0m"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
# first, strip underscores
|
||||||
|
template_name=${template_name//_/}
|
||||||
|
# next, replace spaces with underscores
|
||||||
|
template_name=${template_name// /_}
|
||||||
|
# now, clean out anything that's not alphanumeric or an underscore
|
||||||
|
template_name=${template_name//[^a-zA-Z0-9_]/}
|
||||||
|
# finally, lowercase with TR
|
||||||
|
template_name="$(echo $template_name | tr '[A-Z]' '[a-z]')"
|
||||||
|
cp ".env.docker" ".env"
|
||||||
|
sed -i "s/modern/${template_name}/g" .env > /dev/null
|
||||||
|
echo -e "\e[1;37;42m .env file created with success with template name \"${template_name}\" \e[0m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -o allexport
|
||||||
|
eval $(cat '.env' | sed -e '/^#/d;/^\s*$/d' -e 's/\(\w*\)[ \t]*=[ \t]*\(.*\)/\1=\2/' -e "s/=['\"]\(.*\)['\"]/=\1/g" -e "s/'/'\\\''/g" -e "s/=\(.*\)/='\1'/g")
|
||||||
|
set +o allexport
|
||||||
|
|
||||||
|
if [ ! -z "$ACTIVE_FRONT_TEMPLATE" ] && [ ! -d "templates/frontOffice/$ACTIVE_FRONT_TEMPLATE" ]; then
|
||||||
|
echo -e "\e[1;37;46m Copying template files to templates/frontOffice/$ACTIVE_FRONT_TEMPLATE \e[0m"
|
||||||
|
cp -r "templates/frontOffice/modern" "templates/frontOffice/$ACTIVE_FRONT_TEMPLATE";
|
||||||
|
else
|
||||||
|
echo "Template files "$template_name" already exists"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\e[1;37;46m Starting docker \e[0m"
|
||||||
|
docker-compose up -d --build
|
||||||
|
|
||||||
|
docker-compose exec php-fpm docker-init
|
||||||
|
|
||||||
|
if [[ $1 = "-demo" ]]; then
|
||||||
|
docker-compose exec php-fpm php local/setup/import.php
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker-compose exec php-fpm php Thelia c:c
|
||||||
|
docker-compose exec php-fpm php Thelia c:c --env=prod
|
||||||
|
docker-compose exec php-fpm php Thelia c:c --env=propel
|
||||||
|
|
||||||
|
# Not safe but mandatory on linux env
|
||||||
|
chmod -R 777 var/cache
|
||||||
|
chmod -R 777 var/log
|
||||||
161
domokits/symfony.lock
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
{
|
||||||
|
"doctrine/annotations": {
|
||||||
|
"version": "2.0",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "1.10",
|
||||||
|
"ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"symfony/console": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.3",
|
||||||
|
"ref": "1781ff40d8a17d87cf53f8d4cf0c8346ed2bb461"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"bin/console"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/flex": {
|
||||||
|
"version": "1.21",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "1.0",
|
||||||
|
"ref": "146251ae39e06a95be0fe3d13c807bcf3938b172"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
".env"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/framework-bundle": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.4",
|
||||||
|
"ref": "a91c965766ad3ff2ae15981801643330eb42b6a5"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/cache.yaml",
|
||||||
|
"config/packages/framework.yaml",
|
||||||
|
"config/preload.php",
|
||||||
|
"config/routes/framework.yaml",
|
||||||
|
"config/services.yaml",
|
||||||
|
"public/index.php",
|
||||||
|
"src/Controller/.gitignore",
|
||||||
|
"src/Kernel.php"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/lock": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.2",
|
||||||
|
"ref": "8e937ff2b4735d110af1770f242c1107fdab4c8e"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/lock.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/mailer": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "4.3",
|
||||||
|
"ref": "df66ee1f226c46f01e85c29c2f7acce0596ba35a"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/mailer.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/routing": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.2",
|
||||||
|
"ref": "e0a11b4ccb8c9e70b574ff5ad3dfdcd41dec5aa6"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/routing.yaml",
|
||||||
|
"config/routes.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/translation": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.3",
|
||||||
|
"ref": "e28e27f53663cc34f0be2837aba18e3a1bef8e7b"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/translation.yaml",
|
||||||
|
"translations/.gitignore"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/twig-bundle": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.4",
|
||||||
|
"ref": "cab5fd2a13a45c266d45a7d9337e28dee6272877"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/twig.yaml",
|
||||||
|
"templates/base.html.twig"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/validator": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "5.3",
|
||||||
|
"ref": "c32cfd98f714894c4f128bb99aa2530c1227603c"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/validator.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/web-profiler-bundle": {
|
||||||
|
"version": "6.4",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "6.1",
|
||||||
|
"ref": "e42b3f0177df239add25373083a564e5ead4e13a"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"config/packages/web_profiler.yaml",
|
||||||
|
"config/routes/web_profiler.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"symfony/webpack-encore-bundle": {
|
||||||
|
"version": "1.17",
|
||||||
|
"recipe": {
|
||||||
|
"repo": "github.com/symfony/recipes",
|
||||||
|
"branch": "main",
|
||||||
|
"version": "1.10",
|
||||||
|
"ref": "eff2e505d4557c967b6710fe06bd947ba555cae5"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"assets/app.js",
|
||||||
|
"assets/bootstrap.js",
|
||||||
|
"assets/controllers.json",
|
||||||
|
"assets/controllers/hello_controller.js",
|
||||||
|
"assets/styles/app.css",
|
||||||
|
"config/packages/webpack_encore.yaml",
|
||||||
|
"package.json",
|
||||||
|
"webpack.config.js"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
16
domokits/templates/base.html.twig
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>{% block title %}Welcome!{% endblock %}</title>
|
||||||
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text><text y=%221.3em%22 x=%220.2em%22 font-size=%2276%22 fill=%22%23fff%22>sf</text></svg>">
|
||||||
|
{% block stylesheets %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block javascripts %}
|
||||||
|
{% endblock %}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{% block body %}{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
0
domokits/translations/.gitignore
vendored
Normal file
50
domokits/web/.htaccess
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
Options +FollowSymlinks -Indexes
|
||||||
|
|
||||||
|
AddDefaultCharset UTF-8
|
||||||
|
|
||||||
|
<IfModule mod_rewrite.c>
|
||||||
|
RewriteEngine On
|
||||||
|
|
||||||
|
# SEO, remove the subdomain www in URL
|
||||||
|
# Exemple : http://www.yourdomain.com/contact redirect 301 to http://yourdomain.com/contact
|
||||||
|
# To activate uncomment the following two lines
|
||||||
|
#RewriteCond %{HTTP_HOST} ^www.yourdomain.com$
|
||||||
|
#RewriteRule ^(.*) http://yourdomain.com/$1 [QSA,L,R=301]
|
||||||
|
|
||||||
|
# SEO, add the subdomain www in URL
|
||||||
|
# Exemple : http://yourdomain.com/contact redirect 301 to http://www.yourdomain.com/contact
|
||||||
|
# To activate uncomment the following two lines
|
||||||
|
#RewriteCond %{HTTP_HOST} ^yourdomain.com$
|
||||||
|
#RewriteRule ^(.*) http://www.yourdomain.com/$1 [QSA,L,R=301]
|
||||||
|
|
||||||
|
# SEO, to avoid duplicate content with index.php in url
|
||||||
|
# Exemple : http://www.yourdomain.com/index.php/contact redirect 301 to http://www.yourdomain.com/contact
|
||||||
|
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
|
||||||
|
RewriteRule (.?)index\.php/(.*) /$1$2 [R=301,NE,L]
|
||||||
|
|
||||||
|
# If thelia is installed in a subdirectory (e.g., thelia2)
|
||||||
|
# define the RewriteBase below to get a proper URL rewriting
|
||||||
|
# RewriteBase /thelia2
|
||||||
|
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
|
|
||||||
|
RewriteRule ^(.*)$ index.php [QSA,L]
|
||||||
|
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_expires.c>
|
||||||
|
ExpiresActive on
|
||||||
|
ExpiresByType image/gif "access plus 1 month"
|
||||||
|
ExpiresByType image/jpeg "access plus 1 month"
|
||||||
|
ExpiresByType image/png "access plus 1 month"
|
||||||
|
ExpiresByType image/x-icon "access plus 1 month"
|
||||||
|
ExpiresByType application/x-javascript "access plus 1 month"
|
||||||
|
ExpiresByType application/javascript "access plus 1 month"
|
||||||
|
ExpiresByType image/webp "access plus 1 month"
|
||||||
|
ExpiresByType image/svg+xml "access plus 1 month"
|
||||||
|
ExpiresByType text/css "access plus 1 month"
|
||||||
|
<FilesMatch "\.(ttf|otf|eot|svg|woff|woff2)$" >
|
||||||
|
ExpiresDefault "access plus 1 month"
|
||||||
|
</FilesMatch>
|
||||||
|
</IfModule>
|
||||||
BIN
domokits/web/favicon.ico
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
34
domokits/web/index.php
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
use Symfony\Component\Dotenv\Dotenv;
|
||||||
|
use Symfony\Component\ErrorHandler\Debug;
|
||||||
|
use Thelia\Core\HttpFoundation\Request;
|
||||||
|
|
||||||
|
//use Symfony\Component\DependencyInjection;
|
||||||
|
|
||||||
|
$env = 'prod';
|
||||||
|
$loader = require __DIR__ . '/../bootstrap.php';
|
||||||
|
|
||||||
|
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
|
||||||
|
|
||||||
|
if ($_SERVER['APP_DEBUG']) {
|
||||||
|
umask(0000);
|
||||||
|
|
||||||
|
Debug::enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
$thelia = new App\Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
|
||||||
|
$request = Request::createFromGlobals();
|
||||||
|
$response = $thelia->handle($request);
|
||||||
|
$response->send();
|
||||||
|
$thelia->terminate($request, $response);
|
||||||
45
domokits/web/index_dev.php
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
use Thelia\Core\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\Dotenv\Dotenv;
|
||||||
|
use Symfony\Component\ErrorHandler\Debug;
|
||||||
|
|
||||||
|
$env = 'dev';
|
||||||
|
require __DIR__ . '/../bootstrap.php';
|
||||||
|
|
||||||
|
|
||||||
|
$_SERVER['APP_ENV'] = 'dev';
|
||||||
|
$_SERVER['APP_DEBUG'] = '1';
|
||||||
|
|
||||||
|
(new Dotenv())->loadEnv(dirname(__DIR__).'/.env');
|
||||||
|
|
||||||
|
$trustedIp = array_filter(
|
||||||
|
explode(',', $_SERVER['DEBUG_TRUSTED_IP'] ?? ''),
|
||||||
|
static function ($ip): bool {
|
||||||
|
return filter_var($ip, \FILTER_VALIDATE_IP);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
if (false === in_array(Request::createFromGlobals()->getClientIp(), $trustedIp)) {
|
||||||
|
header('HTTP/1.0 403 Forbidden');
|
||||||
|
exit('You are not allowed to access this file.');
|
||||||
|
}
|
||||||
|
|
||||||
|
umask(0000);
|
||||||
|
Debug::enable();
|
||||||
|
|
||||||
|
$thelia = new App\Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
|
||||||
|
$request = Request::createFromGlobals();
|
||||||
|
$response = $thelia->handle($request);
|
||||||
|
$response->send();
|
||||||
|
$thelia->terminate($request, $response);
|
||||||
BIN
domokits/web/media/thumbs/0-DOMAINDEVERCHANT-TSF-12.jpg
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
domokits/web/media/thumbs/149908-9542156.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
domokits/web/media/thumbs/3d/hotellerie/fondhotellerie.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
domokits/web/media/thumbs/Amazon/MaxInBox16.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
domokits/web/media/thumbs/Amazon/MaxInBox8.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
domokits/web/media/thumbs/Amazon/Montage portable.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
domokits/web/media/thumbs/Amazon/Photo de base.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
domokits/web/media/thumbs/Amazon/Schéma flouté.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
domokits/web/media/thumbs/Amazon/Z41 paysage.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
domokits/web/media/thumbs/Amazon/Zennio iPhone.jpg
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
domokits/web/media/thumbs/Amazon/Zennio iphone noir.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
domokits/web/media/thumbs/CJC/CJC-colours 2023.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 13 KiB |
BIN
domokits/web/media/thumbs/Capture.PNG
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
domokits/web/media/thumbs/DSC_4105111.jpg
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
BIN
domokits/web/media/thumbs/JUNG_KRMTSD_LS990_Alpinweiss_bX5Fs.jpg
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
BIN
domokits/web/media/thumbs/Obalia bassin Exterieur.jpg
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/Cadre.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/Cadregris.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/Carte 1.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/Carte 2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/Carte 3.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/Carte 4.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/Carte 5.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/Carte M.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/mobotix.png
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/rfid.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/rfidgris.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/t25.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
domokits/web/media/thumbs/Slide Mobotix/t25gris.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
BIN
domokits/web/media/thumbs/ZENNIO_Z41noirgrisblanc.jpg
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
domokits/web/media/thumbs/ZenCom(1).png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
domokits/web/media/thumbs/ZenCom.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
domokits/web/media/thumbs/Zennio remote.PNG
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
domokits/web/media/thumbs/arrosage golf.jpg
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
domokits/web/media/thumbs/bouton appel secours.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
domokits/web/media/thumbs/bouton.jpg
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
domokits/web/media/thumbs/carte.jpg
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
domokits/web/media/thumbs/chambre hotel.jpg
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
domokits/web/media/thumbs/cloison-amovible-H5T-bord-a-bord.jpg
Normal file
|
After Width: | Height: | Size: 3.7 KiB |