[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 |