*** CORE ***
|
|
@ -0,0 +1,70 @@
|
|||
{
|
||||
"type": "project",
|
||||
"name": "elixir/application",
|
||||
"license": "proprietary",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mareks Keiss",
|
||||
"email": "mareks.keiss@brsystems.lv",
|
||||
"homepage": "https://www.brsystems.lv",
|
||||
"role": "Developer/Product Owner"
|
||||
}
|
||||
],
|
||||
"require":{
|
||||
"php": "7.4.*",
|
||||
"twig/twig": "^3.0",
|
||||
"twig/cache-extra": "^3.4",
|
||||
"google/apiclient": "^2.0",
|
||||
"google/recaptcha": "^1.2",
|
||||
"matthiasmullie/minify": "^1.3",
|
||||
"swiftmailer/swiftmailer": "^6.3",
|
||||
"phpgangsta/googleauthenticator": "dev-master",
|
||||
"benhall14/php-imap-reader": "^1.3",
|
||||
"myclabs/php-enum": "^1.8",
|
||||
"ext-mbstring": "*",
|
||||
"dompdf/dompdf": "2.0",
|
||||
"ext-mysqli": "*",
|
||||
"ext-dom": "*",
|
||||
"ext-apcu": "*",
|
||||
"ext-json": "*",
|
||||
"ext-zip": "*",
|
||||
"ext-openssl": "*",
|
||||
"ext-curl": "*",
|
||||
"ext-gd": "*",
|
||||
"ext-simplexml": "*",
|
||||
"ext-bcmath": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"php-webdriver/webdriver": "1.15.1",
|
||||
"phpunit/phpunit": "^9.5",
|
||||
"ottosmops/pdftotext": "^2.0",
|
||||
"nyholm/psr7": "^1.4",
|
||||
"php-http/curl-client": "^2.3",
|
||||
"rpkamp/mailhog-client": "2.0",
|
||||
"guzzlehttp/psr7": "^2.4",
|
||||
"php-http/message": "^1.14",
|
||||
"php-http/message-factory": "^1.1",
|
||||
"php-http/discovery": "^1.19"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"BRSystems\\Core\\Cms\\" : "www/system-brs-core/cms/",
|
||||
"BRSystems\\Core\\App\\" : "www/system-brs-core/app/",
|
||||
"BRSystems\\Core\\Sys\\" : "www/system-brs-core/sys/",
|
||||
"BRSystems\\Core\\Config\\" : "www/system-brs-core/config/",
|
||||
"BRSystems\\Core\\Library\\" : "www/system-brs-core/library/",
|
||||
"BRSystems\\Core\\Helpers\\" : "www/system-brs-core/functions/"
|
||||
}
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"ElixirAudit\\Tests\\" : "tests/"
|
||||
}
|
||||
},
|
||||
"config": {
|
||||
"process-timeout":600,
|
||||
"allow-plugins": {
|
||||
"php-http/discovery": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
Green='\033[0;32m'
|
||||
Color_Off='\033[0m'
|
||||
|
||||
# Installing composer dependencies
|
||||
echo -e "${Green}Installing composer dependencies${Color_Off}"
|
||||
|
||||
# Install composer dependencies
|
||||
docker exec maisonalexandra_php bash -c "rm -rf /var/www/html/vendor"
|
||||
docker exec maisonalexandra_php bash -c "php /usr/local/bin/composer install --working-dir /var/www/html"
|
||||
|
||||
# Install PDF font for file exports
|
||||
echo -e "${Green}Copying DomPdf FONT family for PDF file export${Color_Off}"
|
||||
|
||||
docker exec maisonalexandra_php bash -c "cp /var/www/html/www/system-brs-core/library/cPdfFromHTML/load_font.php /var/www/html/vendor/dompdf/load_font.php"
|
||||
docker exec maisonalexandra_php bash -c "cp -R /var/www/html/www/system-brs-core/library/cPdfFromHTML/FONTS /var/www/html/vendor/dompdf/FONTS"
|
||||
|
||||
echo -e "${Green}Inatalling DomPdf FONT ${Color_Off}"
|
||||
docker exec maisonalexandra_php bash -c "cd /var/www/html/vendor/dompdf; php load_font.php 'Muli' ./FONTS/Muli/static/Muli-Regular.ttf ./FONTS/Muli/static/Muli-Bold.ttf ./FONTS/Muli/static/Muli-Italic.ttf ./FONTS/Muli/static/Muli-BoldItalic.ttf >/dev/null"
|
||||
|
||||
echo -e "${Green}DomPdf FONT Installation complete! ${Color_Off}"
|
||||
echo
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
Green='\033[0;32m'
|
||||
Color_Off='\033[0m'
|
||||
|
||||
# Dumping database test data
|
||||
echo -e "${Green}Dumping database test data${Color_Off}"
|
||||
echo
|
||||
|
||||
docker exec -t maisonalexandra_mysql bash -c "./opt/bin/dump_data.sh $*"
|
||||
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
Green='\033[0;32m'
|
||||
Color_Off='\033[0m'
|
||||
|
||||
# Dumping database structure
|
||||
echo -e "${Green}Dumping database structure${Color_Off}"
|
||||
echo
|
||||
|
||||
docker exec -t maisonalexandra_mysql bash -c "./opt/bin/dump_structure.sh $*"
|
||||
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
Green='\033[0;32m'
|
||||
Color_Off='\033[0m'
|
||||
|
||||
# Loading database test data
|
||||
echo -e "${Green}Loading database test data${Color_Off}"
|
||||
echo
|
||||
|
||||
docker exec -t maisonalexandra_mysql bash -c './opt/bin/load_data.sh'
|
||||
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
Green='\033[0;32m'
|
||||
Color_Off='\033[0m'
|
||||
|
||||
# Loading database structure
|
||||
echo -e "${Green}Loading database structure${Color_Off}"
|
||||
echo
|
||||
|
||||
docker exec -t maisonalexandra_mysql bash -c "./opt/bin/load_structure.sh $*"
|
||||
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
Green='\033[0;32m'
|
||||
Color_Off='\033[0m'
|
||||
|
||||
# Check if we are in the project's root directory by checking for this script's directory
|
||||
if [ ! -d "./development/bin" ]
|
||||
then
|
||||
echo "This script must be run from the root of the project"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Tear down the Docker containers
|
||||
echo -e "${Green}Tearing down Docker containers${Color_Off}"
|
||||
echo
|
||||
|
||||
docker-compose -f docker-compose.yaml down || exit 1
|
||||
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Configure mysql for further usage
|
||||
credentialsFile="/opt/bin/mysql-credentials.cnf"
|
||||
|
||||
setup="false"
|
||||
composer_install="false"
|
||||
Green='\033[0;32m'
|
||||
Color_Off='\033[0m'
|
||||
|
||||
function print_usage {
|
||||
echo "use flag -s to setup db structure as well"
|
||||
}
|
||||
|
||||
while getopts 'sc' flag; do
|
||||
case "${flag}" in
|
||||
s) setup="true" ;;
|
||||
c) composer_install="true" ;;
|
||||
*) print_usage
|
||||
exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Check if we are in the project's root directory by checking for this script's directory
|
||||
if [ ! -d "./development/bin" ]; then
|
||||
echo "This script must be run from the root of the project"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Bring up the Docker containers
|
||||
echo -e "${Green}Bringing up Docker containers${Color_Off}"
|
||||
echo
|
||||
|
||||
docker-compose -f docker-compose.yaml up -d || exit 1
|
||||
|
||||
# Adding the execute permission for database scripts
|
||||
docker exec -t maisonalexandra_mysql bash -c 'chmod +x /opt/bin/*.sh'
|
||||
|
||||
# Create folders & install composer packages if folder is missing
|
||||
#if [[ ! -d "./vendor" || $composer_install -eq "true" ]]; then
|
||||
# # Installing composer dependencies
|
||||
# echo -e "${Green}Installing composer dependencies${Color_Off} ..."
|
||||
# echo
|
||||
#
|
||||
# rm -rf ./vendor
|
||||
# mkdir -p ./vendor
|
||||
#
|
||||
# sleep 3;
|
||||
# docker exec secretvault_php bash -c "php /usr/local/bin/composer install --working-dir /var/www/html"
|
||||
#else
|
||||
# docker exec secretvault_php bash -c "cd /var/www/html; composer dumpautoload" > /dev/null 2>&1;
|
||||
#fi
|
||||
|
||||
# Disable sendmail_path from php.webdevops.ini cfg file which overrider php.ini
|
||||
#docker exec -t secretvault_php bash -c 'sed -i "s/^sendmail_path/;sendmail_path/" /opt/docker/etc/php/php.webdevops.ini'
|
||||
|
||||
# Check if db container is loaded, if not wait for it to load
|
||||
printf 'Waiting for database connection ...' > /dev/tty
|
||||
|
||||
timeout=0
|
||||
while ! docker exec -it maisonalexandra_mysql mysql --defaults-extra-file=$credentialsFile -e "SELECT 1" >/dev/null 2>&1; do
|
||||
# Exit if exceed 60s
|
||||
if [[ "$timeout" -gt 60 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
printf "." > /dev/tty
|
||||
|
||||
let timeout++
|
||||
sleep 1
|
||||
done
|
||||
echo -e " ${Green}done${Color_Off}"
|
||||
|
||||
# Load DB & setup users and privileges
|
||||
if [[ $setup == "true" ]]; then
|
||||
|
||||
# Load base working companies
|
||||
echo
|
||||
echo -e "${Green}Load database core structure${Color_Off}"
|
||||
docker exec -t maisonalexandra_mysql bash -c "./opt/bin/load_structure.sh -db=maison_alexandra_lv -progress-title='Constructing maison_alexandra_lv'"
|
||||
# Load base working companies
|
||||
echo
|
||||
echo -e "${Green}Load database core data${Color_Off}"
|
||||
docker exec -t maisonalexandra_mysql bash -c "./opt/bin/load_data.sh -db=maison_alexandra_lv -progress-title='Loading data maison_alexandra_lv'"
|
||||
|
||||
|
||||
# Create ct user & grant all permissions - some views depend on this user
|
||||
docker exec -it maisonalexandra_mysql mysql --defaults-extra-file=$credentialsFile -e \
|
||||
"DROP USER IF EXISTS 'dAccGlobal'@'%';"
|
||||
docker exec -it maisonalexandra_mysql mysql --defaults-extra-file=$credentialsFile -e \
|
||||
"CREATE USER 'dAccGlobal'@'%' IDENTIFIED BY 'dAccGlobal12!@'; GRANT ALL PRIVILEGES ON *.* TO dAccGlobal@'%';"
|
||||
|
||||
docker exec -it maisonalexandra_mysql mysql --defaults-extra-file=$credentialsFile -e \
|
||||
"DROP USER IF EXISTS 'dElixirGlobalCr'@'%';"
|
||||
docker exec -it maisonalexandra_mysql mysql --defaults-extra-file=$credentialsFile -e \
|
||||
"CREATE USER 'dElixirGlobalCr'@'%' IDENTIFIED BY 'dElixirGlobalCr12\!@'; GRANT ALL PRIVILEGES ON *.* TO dElixirGlobalCr@'%';"
|
||||
|
||||
echo -e "Database structure & data setup load ... ${Green}done${Color_Off}"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Configure mysql for further usage
|
||||
credentialsFile="/opt/bin/mysql-credentials.cnf"
|
||||
default_db_name="maison_alexandra_lv"
|
||||
|
||||
# Set passed arguments
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-db=*|--db_name=*) default_db_name="${i#*=}" ;;
|
||||
|
||||
*) echo "Unknown parameter passed: $i"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Show progress bar
|
||||
function ProgressBar {
|
||||
# Process data
|
||||
let _progress=(${1}*100/${2}*100)/100
|
||||
let _done=(${_progress}*4)/10
|
||||
let _left=40-$_done
|
||||
# Build progressbar string lengths
|
||||
_fill=$(printf "%${_done}s")
|
||||
_empty=$(printf "%${_left}s")
|
||||
printf "\rProgress : ${_fill// /█}${_empty// / } | ${_progress}%%"
|
||||
if [ $_progress -eq 100 ]; then
|
||||
echo -e
|
||||
fi
|
||||
}
|
||||
|
||||
# Create folders
|
||||
if [ ! -d "/opt/data/$default_db_name" ]; then
|
||||
mkdir -p "/opt/data/$default_db_name";
|
||||
fi
|
||||
|
||||
# Setup progressbar
|
||||
dumped_tables=0
|
||||
total_tables="$(mysql --defaults-extra-file=$credentialsFile $default_db_name -Bse \
|
||||
"SELECT count(*) AS TOTALNUMBEROFTABLES FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '"$default_db_name"';")"
|
||||
|
||||
# Get all tables to dup
|
||||
TABLE_NAMES="$(mysql --defaults-extra-file=$credentialsFile $default_db_name -Bse 'show tables;')"
|
||||
|
||||
# Dump each table
|
||||
for TABLE_NAME in ${TABLE_NAMES[@]}; do
|
||||
mysqldump --defaults-extra-file=$credentialsFile --no-create-info --tab="/opt/data/$default_db_name" $default_db_name $TABLE_NAME
|
||||
let dumped_tables++
|
||||
ProgressBar ${dumped_tables} ${total_tables}
|
||||
done
|
||||
|
||||
# Delete empty files
|
||||
find "/opt/data/$default_db_name" -maxdepth 1 -type f -empty -delete
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Configure mysql for further usage
|
||||
credentialsFile="/opt/bin/mysql-credentials.cnf"
|
||||
default_db_name="maison_alexandra_lv"
|
||||
|
||||
# Set passed arguments
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-db=*|--db_name=*) default_db_name="${i#*=}" ;;
|
||||
|
||||
*) echo "Unknown parameter passed: $i"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Show progress bar
|
||||
function ProgressBar {
|
||||
# Process data
|
||||
let _progress=(${1}*100/${2}*100)/100
|
||||
let _done=(${_progress}*4)/10
|
||||
let _left=40-$_done
|
||||
# Build progressbar string lengths
|
||||
_fill=$(printf "%${_done}s")
|
||||
_empty=$(printf "%${_left}s")
|
||||
printf "\rProgress : ${_fill// /█}${_empty// / } | ${_progress}%%"
|
||||
if [ $_progress -eq 100 ]; then
|
||||
echo -e
|
||||
fi
|
||||
}
|
||||
|
||||
# Create folders
|
||||
if [ ! -d "/opt/structure/$default_db_name/tables" ]; then
|
||||
mkdir -p "/opt/structure/$default_db_name/tables";
|
||||
fi
|
||||
if [ ! -d "/opt/structure/$default_db_name/views" ]; then
|
||||
mkdir -p "/opt/structure/$default_db_name/views";
|
||||
fi
|
||||
if [ ! -d "/opt/structure/$default_db_name/procedures" ]; then
|
||||
mkdir -p "/opt/structure/$default_db_name/procedures";
|
||||
fi
|
||||
|
||||
# Setup progressbar
|
||||
dumped_tables=0
|
||||
total_tables="$(mysql --defaults-extra-file=$credentialsFile $default_db_name -Bse \
|
||||
"SELECT count(*) AS TOTAL_COUNT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$default_db_name';")"
|
||||
|
||||
# Get all tables to dump
|
||||
TABLE_NAMES="$(mysql --defaults-extra-file=$credentialsFile $default_db_name -Bse 'show tables;')"
|
||||
|
||||
# Dump each procedure
|
||||
mysqldump --defaults-extra-file=$credentialsFile --routines --no-create-info --no-data --no-create-db --skip-opt $default_db_name > "/opt/structure/$default_db_name/procedures/routines.sql"
|
||||
|
||||
# Dump each table
|
||||
for TABLE_NAME in ${TABLE_NAMES[@]}; do
|
||||
mysqldump --defaults-extra-file=$credentialsFile --no-data --tab="/opt/structure/$default_db_name" $default_db_name $TABLE_NAME
|
||||
let dumped_tables++
|
||||
ProgressBar ${dumped_tables} ${total_tables}
|
||||
|
||||
file="/opt/structure/$default_db_name/$TABLE_NAME.sql"
|
||||
# Separate views from tables
|
||||
if [[ $(cat $file | grep -ci 'CREATE TABLE') -gt 0 ]]; then
|
||||
mv $file "/opt/structure/$default_db_name/tables"
|
||||
continue
|
||||
fi
|
||||
if [[ $(cat $file | grep -ci 'Final view structure for view') -gt 0 ]]; then
|
||||
mv $file "/opt/structure/$default_db_name/views"
|
||||
fi
|
||||
done
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Configure mysql for further usage
|
||||
credentialsFile="/opt/bin/mysql-credentials.cnf"
|
||||
dump_file=""
|
||||
progress_msg=""
|
||||
default_db_name="maison_alexandra_lv"
|
||||
load_single_table_by_title=""
|
||||
|
||||
# Set passed arguments
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-db=*|--db_name=*) default_db_name="${i#*=}" ;;
|
||||
-file=*|--dump_file=*) dump_file="${i#*=}" ;;
|
||||
-progress-title=*) progress_msg="${i#*=}" ;;
|
||||
-reload-table=*) load_single_table_by_title="${i#*=}" ;;
|
||||
|
||||
*) echo "Unknown parameter passed: $i"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Show progress bar
|
||||
function ProgressBar {
|
||||
# Process data
|
||||
let _progress=(${1}*100/${2}*100)/100
|
||||
let _done=(${_progress}*4)/10
|
||||
let _left=40-$_done
|
||||
# Build progressbar string lengths
|
||||
_fill=$(printf "%${_done}s")
|
||||
_empty=$(printf "%${_left}s")
|
||||
printf "\rProgress : ${_fill// /█}${_empty// / } | ${_progress}%% \t$progress_msg"
|
||||
if [ $_progress -eq 100 ]; then
|
||||
echo -e
|
||||
fi
|
||||
}
|
||||
|
||||
if [[ -e /opt/data/$default_db_name ]]; then
|
||||
# Check if table specified & load it
|
||||
if [[ "$load_single_table_by_title" ]]; then
|
||||
if [[ -e "/opt/data/$default_db_name/$load_single_table_by_title.txt" ]]; then
|
||||
mysqlimport --defaults-extra-file=$credentialsFile -d $default_db_name "/opt/data/$default_db_name/$load_single_table_by_title.txt" >/dev/null;
|
||||
ProgressBar 1 1
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
# Setup progressbar
|
||||
loaded_files=0
|
||||
total_files=$(find /opt/data/$default_db_name -type f -name "*.txt" -printf x | wc -c)
|
||||
|
||||
# Load table data
|
||||
for file in /opt/data/$default_db_name/*.txt;
|
||||
do
|
||||
if [[ -e $file ]]; then
|
||||
mysqlimport --defaults-extra-file=$credentialsFile -d $default_db_name $file >/dev/null;
|
||||
let loaded_files++
|
||||
ProgressBar ${loaded_files} ${total_files}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Configure mysql for further usage
|
||||
credentialsFile="/opt/bin/mysql-credentials.cnf"
|
||||
dump_file=""
|
||||
progress_msg=""
|
||||
default_db_name="maison_alexandra_lv"
|
||||
|
||||
# Set passed arguments
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-db=*|--db_name=*) default_db_name="${i#*=}" ;;
|
||||
-file=*|--dump_file=*) dump_file="${i#*=}" ;;
|
||||
-progress-title=*) progress_msg="${i#*=}" ;;
|
||||
|
||||
*) echo "Unknown parameter passed: $i"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Show progress bar
|
||||
function ProgressBar {
|
||||
# Process data
|
||||
let _progress=(${1}*100/${2}*100)/100
|
||||
let _done=(${_progress}*4)/10
|
||||
let _left=40-$_done
|
||||
# Build progressbar string lengths
|
||||
_fill=$(printf "%${_done}s")
|
||||
_empty=$(printf "%${_left}s")
|
||||
printf "\rProgress : ${_fill// /█}${_empty// / } | ${_progress}%% \t$progress_msg"
|
||||
if [ $_progress -eq 100 ]; then
|
||||
echo -e
|
||||
fi
|
||||
}
|
||||
|
||||
# Remove the existing schema if it exists and recreate it
|
||||
mysql --defaults-extra-file=$credentialsFile -e "DROP SCHEMA IF EXISTS \`$default_db_name\`"
|
||||
mysql --defaults-extra-file=$credentialsFile -e "CREATE SCHEMA \`$default_db_name\` COLLATE utf8_general_ci"
|
||||
|
||||
# Check if dump file specified & load it
|
||||
if [[ "$dump_file" ]]; then
|
||||
if [[ -e "/opt/db_dumps/$dump_file" ]]; then
|
||||
mysql --defaults-extra-file=$credentialsFile $default_db_name < "/opt/db_dumps/$dump_file";
|
||||
ProgressBar 1 1
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
# Loop over the sql files and import each one from the base dir
|
||||
for file in "/opt/structure/$default_db_name/*.sql"; do
|
||||
if [[ -e $file ]]; then
|
||||
mysql --defaults-extra-file=$credentialsFile $default_db_name < $file;
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Setup progressbar
|
||||
loaded_files=0
|
||||
total_files=$(find "/opt/structure/$default_db_name" -type f -name "*.sql" -printf x | wc -c)
|
||||
|
||||
# Loop over the table schema files and import each one
|
||||
if [ -d /opt/structure/$default_db_name/tables ]; then
|
||||
for file in /opt/structure/$default_db_name/tables/*.sql; do
|
||||
if [[ -e $file ]]; then
|
||||
mysql --defaults-extra-file=$credentialsFile $default_db_name < $file;
|
||||
let loaded_files++
|
||||
ProgressBar ${loaded_files} ${total_files}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Loop over the procedure schema files and import each one
|
||||
if [ -d /opt/structure/$default_db_name/procedures ]; then
|
||||
for file in /opt/structure/$default_db_name/procedures/*.sql; do
|
||||
if [[ -e $file ]]; then
|
||||
mysql --defaults-extra-file=$credentialsFile $default_db_name < $file;
|
||||
let loaded_files++
|
||||
ProgressBar ${loaded_files} ${total_files}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Loop over the view schema files and import each one
|
||||
declare -a WRONG_ORDER
|
||||
if [ -d /opt/structure/$default_db_name/views ]; then
|
||||
for file in /opt/structure/$default_db_name/views/*.sql; do
|
||||
if [[ -e $file ]]; then
|
||||
if [[ $(mysql --defaults-extra-file=$credentialsFile $default_db_name < $file 2>&1 >/dev/null | grep -ic "doesn't exist") -gt 0 ]]; then
|
||||
WRONG_ORDER+=($file)
|
||||
else
|
||||
let loaded_files++
|
||||
ProgressBar ${loaded_files} ${total_files}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
attempts=0
|
||||
while [ ${#WRONG_ORDER[@]} -gt 0 ]; do
|
||||
# Exit if exceed 5 attempts
|
||||
if [[ "$attempts" -gt 4 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
index=0
|
||||
for i in "${WRONG_ORDER[@]}"; do
|
||||
if [[ $(mysql --defaults-extra-file=$credentialsFile $default_db_name < $i 2>&1 >/dev/null | grep -ic "doesn't exist") -eq 0 ]]; then
|
||||
unset WRONG_ORDER[index]
|
||||
let loaded_files++
|
||||
ProgressBar ${loaded_files} ${total_files}
|
||||
fi
|
||||
let index++
|
||||
done
|
||||
let attempts++
|
||||
done
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[client]
|
||||
user=root
|
||||
password=root
|
||||
host=localhost
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
## -------------------------------------------------------------------
|
||||
## RUNNING THE SCRIPT FILE FOR DOCKER CONTAINER - TEST / DEVELOP
|
||||
## docker exec -it secretvault_mysql bash -c "cd /opt && ./bin/load_all_dbs.sh -folder=data/bulk_db_load_test"
|
||||
## -------------------------------------------------------------------
|
||||
|
||||
|
||||
# Configure mysql for further usage
|
||||
credentialsFile="/opt/bin/mysql-credentials.cnf"
|
||||
#credentialsFile="/opt/dbmigration/mysql-credentials.cnf"
|
||||
load_file=""
|
||||
progress_msg=""
|
||||
default_db_name=""
|
||||
|
||||
# Set passed arguments
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-file=*|--load_file=*) load_file="${i#*=}" ;;
|
||||
*) echo "Unknown parameter passed: $i"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Show progress bar
|
||||
function ProgressBar {
|
||||
# Process data
|
||||
let _progress=(${1}*100/${2}*100)/100
|
||||
let _done=(${_progress}*4)/10
|
||||
let _left=40-$_done
|
||||
# Build progressbar string lengths
|
||||
_fill=$(printf "%${_done}s")
|
||||
_empty=$(printf "%${_left}s")
|
||||
|
||||
# Then, we come to the “magic” part: “\033[0K\r“. Now, let’s understand what it means step by step:
|
||||
#
|
||||
# \033 – It’s the escape sequence. In other words, it’s ESC.
|
||||
# \033[ – Then this becomes “ESC [“, which is the control sequence introducer (CSI).
|
||||
# \033[0k – So it’s “CSI 0 K“. Further, “CSI 0 K” erases the text from the cursor to the end of the line.
|
||||
# \r – This is the carriage return. It brings the cursor to the beginning of the line.
|
||||
# Therefore, the command echo -ne “Message\033[0K\r” performs the following steps:
|
||||
#
|
||||
# print “Message“
|
||||
# erase everything after “Message“. In other words, it removes the text from the previous output. Now, the cursor is at the end of the line.
|
||||
# finally, “\r” moves the cursor back to the beginning
|
||||
# In this way, each echo command overwrites the previous message on the same line.
|
||||
printf "\rProgress : ${_fill// /█}${_empty// / } | ${_progress} \t$progress_msg\033[0K\r"
|
||||
if [ $_progress -eq 100 ]; then
|
||||
echo -e
|
||||
fi
|
||||
}
|
||||
|
||||
echo "NOTHING TO DO"
|
||||
exit 1
|
||||
|
||||
|
||||
# Show progress bar
|
||||
function LoadDatabaseTable {
|
||||
_file=(${1})
|
||||
_db_title=(${2})
|
||||
|
||||
if [[ -e $_file ]]; then
|
||||
# Remove the existing schema if it exists and recreate it
|
||||
mysql --defaults-extra-file=$credentialsFile -e "DROP SCHEMA IF EXISTS \`$_db_title\`"
|
||||
mysql --defaults-extra-file=$credentialsFile -e "CREATE SCHEMA \`$_db_title\` COLLATE utf8mb4_general_ci"
|
||||
|
||||
# Load dump file
|
||||
mysql --defaults-extra-file=$credentialsFile -D "$_db_title" < $_file;
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if dir exists
|
||||
if [ -d "$load_dir" ]; then
|
||||
|
||||
# Setup progressbar
|
||||
loaded_files=0
|
||||
total_files=$(find "$PWD/$load_dir" -depth -maxdepth 1 -type f -name "*.sql" | wc -l)
|
||||
|
||||
# Loop over each db import file
|
||||
for file in $PWD/$load_dir/*.sql; do
|
||||
if [[ -e $file ]]; then
|
||||
|
||||
base_file=${file##*/}
|
||||
current_db_name="${base_file%.*}"
|
||||
|
||||
# Check if base db exists & if not load maison_alexandra_lv db
|
||||
if [ $loaded_files -eq 0 ]; then
|
||||
progress_msg="LOADING BASE STRUCTURE 'maison_alexandra_lv' DB STRUCTURE"
|
||||
ProgressBar ${loaded_files} ${total_files}
|
||||
# Needs to load base structure for linked view not to throw errors
|
||||
LoadDatabaseTable "$(dirname "${file}")/maison_alexandra_lv.sql" "maison_alexandra_lv"
|
||||
fi
|
||||
|
||||
# Continue with the rest of db dump load
|
||||
progress_msg="LOADING '$current_db_name' DB STRUCTURE"
|
||||
ProgressBar ${loaded_files} ${total_files}
|
||||
LoadDatabaseTable ${file} ${current_db_name}
|
||||
|
||||
let loaded_files++
|
||||
ProgressBar ${loaded_files} ${total_files}
|
||||
fi
|
||||
done
|
||||
echo -e "DONE;"
|
||||
exit 0
|
||||
fi
|
||||
echo "NOTHING TO DO"
|
||||
exit 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
1 1 0 1442 0 0 1777292571 1784197613 0
|
||||
2 2 0 1443 0 1 1777292581 1782812826 0
|
||||
3 1 0 1456 0 0 1781255008 1785245975 0
|
||||
4 3 0 1456 0 0 1781255659 1785246019 0
|
||||
12 1 0 1457 0 0 1781259704 1783693529 0
|
||||
13 2 0 1457 0 0 1781259726 1783693518 0
|
||||
14 3 0 1457 0 0 1781259740 1783693501 0
|
||||
15 1 0 1458 0 0 1781260451 1781260451 0
|
||||
16 2 0 1458 0 0 1781260463 1781260463 0
|
||||
17 3 0 1458 0 0 1781260475 1781260475 0
|
||||
18 4 0 1458 0 0 1781260486 1781260486 0
|
||||
19 5 0 1458 0 0 1781260499 1781260499 0
|
||||
20 1 0 1459 0 0 1781261491 1781261654 0
|
||||
21 2 0 1459 0 0 1781261955 1781261955 0
|
||||
22 3 0 1459 0 0 1781261987 1781261987 0
|
||||
23 1 0 1460 0 0 1781262077 1785332503 0
|
||||
24 1 0 1461 0 0 1781546508 1781546508 0
|
||||
25 2 0 1461 0 0 1781546549 1781546577 1
|
||||
26 1 0 1462 0 0 1781696897 1785146309 0
|
||||
27 1 0 1463 0 0 1781697559 1785146121 0
|
||||
28 1 0 1464 0 0 1781769542 1781769735 0
|
||||
29 2 0 1464 0 0 1781769642 1781769642 0
|
||||
30 3 0 1464 0 0 1781769727 1781769727 0
|
||||
64 1 0 1442 0 0 1782993582 1784271438 0
|
||||
65 1 0 1443 0 64 1782993624 1783675913 0
|
||||
66 2 0 1443 0 64 1782993624 1783675970 0
|
||||
67 3 0 1443 0 64 1782993624 1783675987 0
|
||||
68 4 0 1443 0 64 1782993624 1782996622 0
|
||||
69 5 0 1443 0 64 1782993624 1782996622 0
|
||||
70 6 0 1443 0 64 1782993624 1782996622 0
|
||||
71 7 0 1443 0 64 1782993624 1782996622 0
|
||||
72 8 0 1443 0 64 1782993624 1782996622 0
|
||||
73 9 0 1443 0 64 1782993624 1782996622 0
|
||||
74 10 0 1443 0 64 1782993624 1782996622 0
|
||||
75 11 0 1443 0 64 1782993624 1782996622 0
|
||||
76 12 0 1443 0 64 1782993624 1782996622 0
|
||||
77 13 0 1443 0 64 1782993624 1782996622 0
|
||||
78 14 0 1443 0 64 1782993624 1782996622 0
|
||||
79 2 0 1442 0 0 1782993582 1784271431 0
|
||||
80 1 0 1443 0 79 1782993624 1782996622 0
|
||||
81 2 0 1443 0 79 1782993624 1782996622 0
|
||||
82 3 0 1443 0 79 1782993624 1782996622 0
|
||||
83 4 0 1443 0 79 1782993624 1782996622 0
|
||||
84 5 0 1443 0 79 1782993624 1782996622 0
|
||||
85 6 0 1443 0 79 1782993624 1782996622 0
|
||||
86 7 0 1443 0 79 1782993624 1782996622 0
|
||||
87 3 0 1442 0 0 1782993582 1784271423 0
|
||||
88 1 0 1443 0 87 1782993624 1782996622 0
|
||||
89 2 0 1443 0 87 1782993624 1782996622 0
|
||||
90 4 0 1442 0 0 1782993582 1784626578 0
|
||||
91 1 0 1443 0 90 1782993624 1782996622 0
|
||||
92 2 0 1443 0 90 1782993624 1782996622 0
|
||||
93 3 0 1443 0 90 1782993624 1782996622 0
|
||||
94 4 0 1443 0 90 1782993624 1782996622 0
|
||||
95 5 0 1443 0 90 1782993624 1782996622 0
|
||||
96 6 0 1443 0 90 1782993624 1782997303 0
|
||||
97 4 0 1456 0 0 1783673837 1785246116 0
|
||||
98 4 0 1456 0 0 1783939212 1783939280 1
|
||||
99 1 0 1467 0 0 1784012779 1784196406 0
|
||||
100 1 0 1470 0 0 1784625387 1784625387 0
|
||||
101 1 0 1469 0 0 1784625527 1784625583 0
|
||||
102 1 0 1472 0 0 1784759183 1785146557 1
|
||||
103 1 0 1473 0 0 1784759613 1785145189 1
|
||||
104 104 0 1474 0 0 1784760259 1784901307 0
|
||||
106 2 0 1473 0 0 1784898846 1785145190 1
|
||||
107 1 0 1479 0 0 1784899136 1785145418 1
|
||||
108 1 0 1478 0 0 1785144354 1785145917 0
|
||||
109 1 0 1473 0 0 1785145261 1785145261 0
|
||||
110 1 0 1479 0 0 1785145444 1785146383 0
|
||||
111 1 0 1477 0 0 1785145543 1785145831 0
|
||||
112 1 0 1476 0 0 1785146424 1785146453 0
|
||||
113 1 0 1472 0 0 1785146570 1785147170 0
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
2 3 Gemini_Generated_Image_iof0yriof0yriof0 /files/article/2026-07/67c19cddb603ad048e39a6302c952fb0a640508e.png 1 1 2
|
||||
4 4 Gemini_Generated_Image_k9hjsck9hjsck9hj /files/article/2026-07/62762b40f70f8a04082c1382d21251fb15b7bd81.png 1 1 2
|
||||
5 97 Gemini_Generated_Image_dkh0nndkh0nndkh0 /files/article/2026-07/efc56d7fdbb4a72ef600b61db573d5bb0dbfc694.png 1 1 2
|
||||
6 65 Gemini_Generated_Image_bw729sbw729sbw72 (2) /files/article/2026-07/5842f514ad65f632b5bc038d092436cab91bd28a.png 0 0 2
|
||||
7 66 Gemini_Generated_Image_bw729sbw729sbw72 /files/article/2026-07/88d521eda6e42eeb707e8bcb606e054ef8c1512c.png 0 0 2
|
||||
8 67 Gemini_Generated_Image_bw729sbw729sbw72 (1) /files/article/2026-07/3ded2366811eb6dfcbb2520289096b719d52cf4e.png 0 0 2
|
||||
9 79 aroma /files/article/2026-07/8624af178b22244bbab08c491d160aa4771b87ef.png 0 0 2
|
||||
10 64 man /files/article/2026-07/6d6227a5c8417495bdc988c3d2dc8efce209b085.png 0 0 2
|
||||
11 87 jewelry /files/article/2026-07/bc57fb52e8a91f64e8ec5e3cc401903eaa39112e.png 0 0 2
|
||||
12 90 women /files/article/2026-07/856c345401ac1212d4c5e273af7ff0b57aa5c6c8.png 0 0 2
|
||||
14 14 Screenshot 2026-07-10 at 17.24.32 /files/article/2026-07/29c5db8bd71ce623ae114b7cd595898cb6118708.png 0 0 2
|
||||
15 13 Screenshot 2026-07-10 at 17.24.28 /files/article/2026-07/ef3b675086a8b7df1460df37e7df947a02aeeea0.png 0 0 2
|
||||
16 12 Screenshot 2026-07-10 at 17.24.24 /files/article/2026-07/7cdc9e8fc3be4c93f1e360d38ac46846c009ec65.png 0 0 2
|
||||
18 23 Gemini_Generated_Image_hkbs9jhkbs9jhkbs /files/article/2026-07/2b4444038f60f78c58a6ba044c5b004563f2e74f.png 1 0 2
|
||||
21 98 Gemini_Generated_Image_kzpt83kzpt83kzpt /files/article/2026-07/d8524a6badd19a170cec1ecc7ba904d43e20dbef.png 0 0 2
|
||||
26 99 Gemini_Generated_Image_x4ca0fx4ca0fx4ca (1) /files/article/2026-07/f5dde82d8e5f37773f4c50761c46758756e3b4d2.png 0 0 2
|
||||
28 1 Gemini_Generated_Image_ytn6osytn6osytn6 (1) /files/article/2026-07/67699c480d2adaaa0fa8e24d262e9c10a74985eb.png 0 0 2
|
||||
29 100 Gemini_Generated_Image_f22b9mf22b9mf22b (1) /files/article/2026-07/232f5104e640f9bfd950dc1a1f9dddf995b46798.png 0 0 2
|
||||
31 101 Gemini_Generated_Image_vqv0qfvqv0qfvqv0 (1) /files/article/2026-07/19c6a340f8a65e1a13fda95fca5313c1b24e4ffd.png 0 0 2
|
||||
37 102 about-banner1 /files/article/2026-07/19c1fe89165436a0f293b444d126c3be5566f874.jpg 0 0 3
|
||||
39 102 about-team1 /files/article/2026-07/f816f373d0847572941471765a70a0652f47f6cd.jpg 0 1 3
|
||||
42 113 about-banner1 /files/article/2026-07/19c1fe89165436a0f293b444d126c3be5566f874.jpg 0 0 3
|
||||
43 113 about-team1 /files/article/2026-07/f816f373d0847572941471765a70a0652f47f6cd.jpg 0 1 3
|
||||
45 3 Gemini_Generated_Image_e8htsde8htsde8ht (3) /files/article/2026-07/6378ccfc399a0f1bf84746593506fdfc84fdcee5.png 0 0 2
|
||||
46 4 Gemini_Generated_Image_e8htsde8htsde8ht (4) /files/article/2026-07/217ad188ff552c76082b174480d06e9186fdfad2.png 0 0 2
|
||||
47 97 Gemini_Generated_Image_e8htsde8htsde8ht (5) /files/article/2026-07/e1c01f58582e1287c65cacb4f4d76a21dafbf3a7.png 0 0 2
|
||||
|
|
@ -0,0 +1,804 @@
|
|||
15 Direct delivery to your door 0 Order your products from the comfort of your home \N \N 7
|
||||
15 0 \N \N 9
|
||||
15 0 \N \N 10
|
||||
16 Leaping bunny certified 0 All products are plant besed and cruelty free \N \N 7
|
||||
16 0 \N \N 9
|
||||
16 0 \N \N 10
|
||||
17 Safe for all skin + makeup types 0 PH balanced and small batch tested \N \N 7
|
||||
17 0 \N \N 9
|
||||
17 0 \N \N 10
|
||||
18 High quality ingredients 0 Natural essential oils and herbal extracts nourish skin and hair \N \N 7
|
||||
18 0 \N \N 9
|
||||
18 0 \N \N 10
|
||||
19 Made for women 0 Everyone can enjoy the product line \N \N 7
|
||||
19 0 \N \N 9
|
||||
19 0 \N \N 10
|
||||
20 Wesley bates 0 Beauty blogger <pre>This store transformed my routine! Products are premium, packaging is elegant, and delivery is always fast. Highly recommended.</pre> \N \N 7
|
||||
20 0 \N \N 9
|
||||
20 0 \N \N 10
|
||||
21 Paul smith 0 Salon owner <div>\
|
||||
<pre>I trust this site for my clients. Lipsticks and brushes are superb, shades are versatile, and tools blend perfectly every time.</pre>\
|
||||
</div> \N \N 7
|
||||
21 0 \N \N 9
|
||||
21 0 \N \N 10
|
||||
22 Ashley rosa 0 Skincare expert <div>\
|
||||
<pre>Serums and creams are effective yet gentle. I noticed visible glow in weeks. Safe ingredients make this my go-to beauty destination.</pre>\
|
||||
</div> \N \N 7
|
||||
22 0 \N \N 9
|
||||
22 0 \N \N 10
|
||||
24 Try our service / Start my diagnosis 0 Your skin diagnosis in 3 minutes <div>\
|
||||
<pre>Skin tests can help to diagnose allergies, infections, and other problems affecting the skin.</pre>\
|
||||
</div> \N \N 7
|
||||
24 0 \N \N 9
|
||||
24 0 \N \N 10
|
||||
25 Try another our service / Start my diagnosis 0 Your skin diagnosis in 3 minutes <div>\
|
||||
<pre>Skin tests can help to diagnose allergies, infections, and other problems affecting the skin.</pre>\
|
||||
</div> \N \N 7
|
||||
25 0 \N \N 9
|
||||
25 0 \N \N 10
|
||||
29 Store funds 0 <div>\
|
||||
<pre>Secure and manage your finances effortlessly, ensuring your transactions are both protected and easily accessible.</pre>\
|
||||
</div> \N \N 7
|
||||
29 0 \N \N 9
|
||||
29 0 \N \N 10
|
||||
30 Round help 0 <div>\
|
||||
<pre>Always available to assist, our team ensures constant, reliable assistance whenever you need it, day or night.</pre>\
|
||||
</div> \N \N 7
|
||||
30 0 \N \N 9
|
||||
30 0 \N \N 10
|
||||
28 Outlet locale 0 <div>\
|
||||
<pre>"Branch site" represents the physical location of a business, where customers can visit and make purchases or inquiries.</pre>\
|
||||
</div> \N \N 7
|
||||
28 0 \N \N 9
|
||||
28 0 \N \N 10
|
||||
2 Base sub cat / 0 \N \N 7
|
||||
2 0 \N \N 9
|
||||
2 0 \N \N 10
|
||||
68 Džemperi dzemperi 123 \N \N 7
|
||||
68 0 \N \N 9
|
||||
68 0 \N \N 10
|
||||
69 Hūdiji hudiji 124 \N \N 7
|
||||
69 0 \N \N 9
|
||||
69 0 \N \N 10
|
||||
70 Jakas jakas 125 \N \N 7
|
||||
70 0 \N \N 9
|
||||
70 0 \N \N 10
|
||||
71 Bikses bikses 126 \N \N 7
|
||||
71 0 \N \N 9
|
||||
71 0 \N \N 10
|
||||
72 Džinsi dzinsi 127 \N \N 7
|
||||
72 0 \N \N 9
|
||||
72 0 \N \N 10
|
||||
73 Šorti sorti 128 \N \N 7
|
||||
73 0 \N \N 9
|
||||
73 0 \N \N 10
|
||||
74 Apakšveļa apaksvela 129 \N \N 7
|
||||
74 0 \N \N 9
|
||||
74 0 \N \N 10
|
||||
75 Somas somas 130 \N \N 7
|
||||
75 0 \N \N 9
|
||||
75 0 \N \N 10
|
||||
76 Maki maki 131 \N \N 7
|
||||
76 0 \N \N 9
|
||||
76 0 \N \N 10
|
||||
77 Jostas jostas 132 \N \N 7
|
||||
77 0 \N \N 9
|
||||
77 0 \N \N 10
|
||||
78 Aksesuāri aksesuari 133 \N \N 7
|
||||
78 0 \N \N 9
|
||||
78 0 \N \N 10
|
||||
80 Kristāli kristali 135 \N \N 7
|
||||
80 0 \N \N 9
|
||||
80 0 \N \N 10
|
||||
81 Palo Santo palo-santo 136 \N \N 7
|
||||
81 0 \N \N 9
|
||||
81 0 \N \N 10
|
||||
82 Sandalkoka kociņi sandalkoka-kocini 137 \N \N 7
|
||||
82 0 \N \N 9
|
||||
82 0 \N \N 10
|
||||
83 Vīraki viraki 138 \N \N 7
|
||||
83 0 \N \N 9
|
||||
83 0 \N \N 10
|
||||
84 Vīraku turētāji viraku-turetaji 139 \N \N 7
|
||||
84 0 \N \N 9
|
||||
84 0 \N \N 10
|
||||
85 Aromātiskie sveķi aromatiskie-sveki 140 \N \N 7
|
||||
85 0 \N \N 9
|
||||
85 0 \N \N 10
|
||||
86 Sveķu difuzori sveku-difuzori 141 \N \N 7
|
||||
86 0 \N \N 9
|
||||
86 0 \N \N 10
|
||||
88 Kristālu rotas kristalu-rotas 143 \N \N 7
|
||||
88 0 \N \N 9
|
||||
88 0 \N \N 10
|
||||
89 Apzeltītas rotas apzeltitas-rotas 144 \N \N 7
|
||||
89 0 \N \N 9
|
||||
89 0 \N \N 10
|
||||
91 Žaketes zaketes 146 \N \N 7
|
||||
91 0 \N \N 9
|
||||
91 0 \N \N 10
|
||||
92 Kleitas kleitas 147 \N \N 7
|
||||
92 0 \N \N 9
|
||||
92 0 \N \N 10
|
||||
93 Somas somas 148 \N \N 7
|
||||
93 0 \N \N 9
|
||||
93 0 \N \N 10
|
||||
94 Topi topi 149 \N \N 7
|
||||
94 0 \N \N 9
|
||||
94 0 \N \N 10
|
||||
95 Bikses bikses 150 \N \N 7
|
||||
95 0 \N \N 9
|
||||
95 0 \N \N 10
|
||||
96 Svārki svarki 151 \N \N 7
|
||||
96 0 \N \N 9
|
||||
96 0 \N \N 10
|
||||
65 T-krekli t-krekli 120 \N \N 7
|
||||
65 0 \N \N 9
|
||||
65 0 \N \N 10
|
||||
66 Krekli krekli 121 \N \N 7
|
||||
66 0 \N \N 9
|
||||
66 0 \N \N 10
|
||||
67 Polo krekli polo-krekli 122 \N \N 7
|
||||
67 0 \N \N 9
|
||||
67 0 \N \N 10
|
||||
14 Easy to use 0 Packed with a unique design as well as usefull that can help you perform routine skin care. \N \N 7
|
||||
14 0 \N \N 9
|
||||
14 0 \N \N 10
|
||||
13 Fits your skin 0 It's all natural and processed based on traditional knowledge with modern technology. \N \N 7
|
||||
13 0 \N \N 9
|
||||
13 0 \N \N 10
|
||||
12 100% Organic 0 We craft skincare using the most exquisite ingredients from the plant, earth and mineral realms. \N \N 7
|
||||
12 0 \N \N 9
|
||||
12 0 \N \N 10
|
||||
98 Izplūsti sajūtu terapijā un atslābinies veikals Ieskaties 0 Izbaudi \N \N 7
|
||||
98 0 \N \N 9
|
||||
98 0 \N \N 10
|
||||
99 Background 1 0 \N \N 7
|
||||
99 0 \N \N 9
|
||||
99 0 \N \N 10
|
||||
1 Base kategorija 0 \N \N 7
|
||||
1 0 \N \N 9
|
||||
1 0 \N \N 10
|
||||
87 Rotaslietas rotaslietas 0 \N \N 7
|
||||
87 0 \N \N 9
|
||||
87 0 \N \N 10
|
||||
79 Aromterapija un garīgā labsajūta aromterapija-un-gariga-labsajuta 0 \N \N 7
|
||||
79 0 \N \N 9
|
||||
79 0 \N \N 10
|
||||
64 Vīriešiem viriesiem 0 \N \N 7
|
||||
64 0 \N \N 9
|
||||
64 0 \N \N 10
|
||||
100 Collection banner 001 0 \N \N 7
|
||||
100 0 \N \N 9
|
||||
100 0 \N \N 10
|
||||
101 Banner 1 veikalsviriesiemt-krekli 0 \N \N 7
|
||||
101 0 \N \N 9
|
||||
101 0 \N \N 10
|
||||
90 Sievietēm sievietem 0 \N \N 7
|
||||
90 0 \N \N 9
|
||||
90 0 \N \N 10
|
||||
102 About story 0 <p><img src="../../files/article/2026-07/19c1fe89165436a0f293b444d126c3be5566f874.jpg" /> </p>\
|
||||
<p> </p>\
|
||||
<p></p>\
|
||||
<div class="about-service section-pt text-center" data-animate="animate__fadeIn">\
|
||||
<div class="row row-mtm justify-content-md-center">\
|
||||
<div class="col-12 col-lg-4">\
|
||||
<h6><span>5000+ Happy customer</span></h6>\
|
||||
<p class="mst-8"><span>Absolutely delighted with the service! The team was professional and delivered beyond my expectations. Highly recommend!</span></p>\
|
||||
</div>\
|
||||
<div class="col-12 col-lg-4">\
|
||||
<h6><span>29+ Awards won</span></h6>\
|
||||
<p class="mst-8"><span>Our company has been honored with the Outstanding Achievement Award and Best Industry Leader accolades in recent years.</span></p>\
|
||||
</div>\
|
||||
<div class="col-12 col-lg-4">\
|
||||
<h6><span>40+ years of experiences</span></h6>\
|
||||
<p class="mst-8"><span>With over all years of combined experience in the industry, our team excels in delivering top-notch solutions and services.</span></p>\
|
||||
<p class="mst-8"></p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="row row-mtm text-center" data-animate="animate__fadeIn">\
|
||||
<div class="col-12 col-md-6">\
|
||||
<div class="col-lg-10 col-xl-9 col-xxl-7 mx-lg-auto">\
|
||||
<div class="col-6 col-lg-3" data-animate="animate__fadeIn">\
|
||||
<div class="about-team-content banner-hover">\
|
||||
<div class="about-team-img"><img src="../../files/article/2026-07/f816f373d0847572941471765a70a0652f47f6cd.jpg" alt="Johnny walker" /></div>\
|
||||
<div class="about-team-info pst-25">\
|
||||
<h6>Johnny walker</h6>\
|
||||
<span>Web Designer</span></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div> \N \N 7
|
||||
102 0 \N \N 9
|
||||
102 0 \N \N 10
|
||||
106 Common queries 0 <p></p>\
|
||||
<div class="section-capture text-center section-pt">\
|
||||
<div class="section-title animate__fadeIn animate__animated" data-animate="animate__fadeIn">\
|
||||
<h2 class="section-heading">Common queries</h2>\
|
||||
<p></p>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="tabs-section">\
|
||||
<div class="container">\
|
||||
<div class="tabs-block border-full border-radius" id="collapse-tab-mrz04g8vxv3lr" data-animate="animate__fadeIn">\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-1-mrz04g8vwb9hb" aria-expanded="false"><span class="heading-weight">Tab 1</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-1-mrz04g8vwb9hb" data-bs-parent="#collapse-tab-mrz04g8vxv3lr">\
|
||||
<div class="pst-15">\
|
||||
<p>Tab 1 content goes here...</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-2-mrz04g8v8o4nk" aria-expanded="false"><span class="heading-weight">Tab 2</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-2-mrz04g8v8o4nk" data-bs-parent="#collapse-tab-mrz04g8vxv3lr">\
|
||||
<div class="pst-15">\
|
||||
<p>Tab 2 content goes here...</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-3-mrz04g8v3gwsc" aria-expanded="false"><span class="heading-weight">Tab 3</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-3-mrz04g8v3gwsc" data-bs-parent="#collapse-tab-mrz04g8vxv3lr">\
|
||||
<div class="pst-15">\
|
||||
<p>Tab 3 content goes here...</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-4-mrz04g8vzr60a" aria-expanded="false"><span class="heading-weight">Tab 4</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-4-mrz04g8vzr60a" data-bs-parent="#collapse-tab-mrz04g8vxv3lr">\
|
||||
<div class="pst-15">\
|
||||
<p>Tab 4 content goes here...</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-5-mrz04g8v2u0r4" aria-expanded="false"><span class="heading-weight">Tab 5</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-5-mrz04g8v2u0r4" data-bs-parent="#collapse-tab-mrz04g8vxv3lr">\
|
||||
<div class="pst-15">\
|
||||
<p>Tab 5 content goes here...</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-6-mrz04g8v2xoq3" aria-expanded="false"><span class="heading-weight">Tab 6</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-6-mrz04g8v2xoq3" data-bs-parent="#collapse-tab-mrz04g8vxv3lr">\
|
||||
<div class="pst-15">\
|
||||
<p>Tab 6 content goes here...</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div> \N \N 7
|
||||
106 0 <div class="tabs-section section-pt">\
|
||||
<div class="container">\
|
||||
<div class="tabs-block border-full border-radius" id="collapse-tab-mryzgy75559p7" data-animate="animate__fadeIn">\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-1-mryzgy750j8ij" aria-expanded="true"><span class="heading-weight">How do i place an order?</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse show" id="tab-1-mryzgy750j8ij" data-bs-parent="#collapse-tab-mryzgy75559p7">\
|
||||
<div class="pst-15">\
|
||||
<p>To place an order, browse our products, select the desired item, choose your size and color if applicable, and click "add to cart." Once you're ready to purchase, click on the cart icon and proceed to checkout. You'll need to enter your shipping and payment details to complete the order.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-2-mryzgy75w79p5" aria-expanded="false"><span class="heading-weight">How can i track my order status?</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-2-mryzgy75w79p5" data-bs-parent="#collapse-tab-mryzgy75559p7">\
|
||||
<div class="pst-15">\
|
||||
<p>After placing your order, you'll receive a confirmation email with a tracking number once your order has shipped. You can use this number on our "order tracking" page to see the status of your delivery. You can also track your order in the "My Account" section if you have an account with us.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-3-mryzgy75tr2vi" aria-expanded="false"><span class="heading-weight">What are the shipping options available?</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-3-mryzgy75tr2vi" data-bs-parent="#collapse-tab-mryzgy75559p7">\
|
||||
<div class="pst-15">\
|
||||
<p>We offer several shipping options, including Standard Shipping (5-7 business days), Express Shipping (2-3 business days), and Next Day Delivery (1 business day). Shipping costs are calculated at checkout based on your location and the selected shipping method.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-4-mryzgy75zsh9h" aria-expanded="false"><span class="heading-weight">Can i change or cancel my order?</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-4-mryzgy75zsh9h" data-bs-parent="#collapse-tab-mryzgy75559p7">\
|
||||
<div class="pst-15">\
|
||||
<p>If you need to change or cancel your order, please contact us within 1 hour of placing the order. Once your order has been processed, we may not be able to make changes, but we'll do our best to assist you.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-5-mryzgy75rlt3v" aria-expanded="false"><span class="heading-weight">What is your return and exchange policy?</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-5-mryzgy75rlt3v" data-bs-parent="#collapse-tab-mryzgy75559p7">\
|
||||
<div class="pst-15">\
|
||||
<p>We accept returns and exchanges within 30 days of the delivery date. Items must be unworn, unwashed, and in their original packaging with tags attached. To initiate a return, please visit our "returns & exchanges" page and follow the instructions.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#tab-6-mryzgy75d473s" aria-expanded="false"><span class="heading-weight">How long does it take to process a return?</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse" id="tab-6-mryzgy75d473s" data-bs-parent="#collapse-tab-mryzgy75559p7">\
|
||||
<div class="pst-15">\
|
||||
<p>Once we receive your returned item, it typically takes 5-7 business days to process your return. You will receive a refund to your original payment method within 10 business days of processing.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div> \N \N 9
|
||||
106 0 \N \N 10
|
||||
104 Page disclaimers 0 <p></p>\
|
||||
<section class="section-ptb">\
|
||||
<div class="container">\
|
||||
<div class="section-content" data-animate="animate__fadeIn">\
|
||||
<p>Disclaimers</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
104 0 \N \N 9
|
||||
104 0 \N \N 10
|
||||
107 Shipping policy 0 <h6 class="number-sub-index font-18 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Delivery</h6>\
|
||||
<p class="mst-18 animate__fadeIn animate__animated" data-animate="animate__fadeIn">We strive to ensure prompt and reliable delivery of your orders. Orders are typically processed within 1-2 business days, and shipping times vary based on your location. Standard shipping usually takes 5-7 business days, while expedited options are available for faster delivery. You will receive a tracking number once your order has shipped so you can monitor its progress. Please note that delivery times may be affected by factors such as weather conditions or high order volumes. If you have any questions or need assistance, contact our support team.</p>\
|
||||
<p class="p-bullets mst-16 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Orders are processed within 1-2 business days.</p>\
|
||||
<p class="p-bullets mst-1 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Standard shipping takes 5-7 business days.</p>\
|
||||
<p class="p-bullets mst-1 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Expedited shipping options are available.</p>\
|
||||
<p class="p-bullets mst-1 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Track your order with the provided tracking number.</p>\
|
||||
<h6 class="number-sub-index font-18 mst-18 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Freight</h6>\
|
||||
<p class="mst-18 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Shipping costs vary based on your location and the weight of your order.</p>\
|
||||
<p class="mst-6 animate__fadeIn animate__animated" data-animate="animate__fadeIn">We offer a range of shipping options to meet your needs, including standard, expedited, and overnight services. Shipping costs are calculated based on the weight, dimensions, and destination of your order. You will see the total shipping charge at checkout before you complete your purchase. We strive to provide the most cost-effective shipping methods while ensuring timely delivery. During checkout, you can choose the shipping option that best suits your needs. For large or heavy items, additional shipping fees may apply.</p>\
|
||||
<p class="p-bullets mst-16 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Shipping charges are shown at checkout before completing your purchase.</p>\
|
||||
<p class="p-bullets mst-1 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Choose from standard, expedited, or overnight shipping options.</p>\
|
||||
<h6 class="number-sub-index font-18 mst-18 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Dispatch</h6>\
|
||||
<p class="mst-18 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Orders are dispatched within 1-2 business days after being placed. We carefully prepare and package each order to ensure it arrives in perfect condition. Once your order is on its way, you will receive a confirmation email with a tracking number. This allows you to monitor the progress of your shipment. Please allow additional time during peak seasons or for custom orders. If there are any issues or delays with your shipment, our customer service team is here to help. For any questions or concerns, don't hesitate to reach out.</p>\
|
||||
<p class="p-bullets mst-16 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Orders are sent out within 1-2 business days.</p>\
|
||||
<p class="p-bullets mst-1 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Receive a tracking number once your order ships.</p>\
|
||||
<p class="p-bullets mst-1 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Allow extra time during busy periods.</p>\
|
||||
<p class="p-bullets mst-1 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Contact customer service for shipping issues.</p>\
|
||||
<h6 class="number-sub-index font-18 mst-18 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Postage</h6>\
|
||||
<p class="mst-18 animate__fadeIn animate__animated" data-animate="animate__fadeIn">We cover the cost of standard postage for all domestic orders.</p>\
|
||||
<p class="mst-6 animate__fadeIn animate__animated" data-animate="animate__fadeIn">For international shipments, postage costs are calculated based on the destination, weight, and dimensions of your package. You will be notified of the postage fees during checkout, and they will be added to your order total. We use reliable carriers to ensure your package reaches you safely and in a timely manner. Please be aware that customs fees or import taxes may apply, and these are the responsibility of the recipient. If you have any questions about international postage or need assistance, please contact our support team for help.</p>\
|
||||
<p class="p-bullets mst-16 animate__fadeIn animate__animated" data-animate="animate__fadeIn">International postage fees are calculated during checkout.</p>\
|
||||
<p class="p-bullets mst-1 animate__fadeIn animate__animated" data-animate="animate__fadeIn">Customs fees or import taxes are the recipient's responsibility.</p> \N \N 7
|
||||
107 0 \N \N 9
|
||||
107 0 \N \N 10
|
||||
103 Frequently asked questions 0 <p></p>\
|
||||
<section class="faqs section-pt">\
|
||||
<div class="container">\
|
||||
<div class="section-capture text-center">\
|
||||
<div class="section-title" data-animate="animate__fadeIn">\
|
||||
<h2 class="section-heading">Frequently asked questions</h2>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="faqs-collapse-group border-full border-radius" id="faqs-collapse-ms31c4orpvcus">\
|
||||
<div class="other-tab ptb-15 plr-15" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse1-ms31c4orvb2h1" data-bs-toggle="collapse" aria-expanded="true"><span class="width-calc-16 heading-weight">How do I track my order?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse show" id="faqs-collapse1-ms31c4orvb2h1" data-bs-parent="#faqs-collapse-ms31c4orpvcus">\
|
||||
<div class="pst-9">\
|
||||
<p>You can track your order in your account.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab ptb-15 plr-15" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse2-ms31c4or4elpu" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">What is your return policy?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse2-ms31c4or4elpu" data-bs-parent="#faqs-collapse-ms31c4orpvcus">\
|
||||
<div class="pst-9">\
|
||||
<p>We accept returns within policy terms.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab ptb-15 plr-15" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse3-ms31c4orbk0rg" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">Do you offer international shipping?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse3-ms31c4orbk0rg" data-bs-parent="#faqs-collapse-ms31c4orpvcus">\
|
||||
<div class="pst-9">\
|
||||
<p>Yes, shipping options vary by country.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab ptb-15 plr-15" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse4-ms31c4or15adk" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">Can I change my order after placing it?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse4-ms31c4or15adk" data-bs-parent="#faqs-collapse-ms31c4orpvcus">\
|
||||
<div class="pst-9">\
|
||||
<p>Contact support quickly after placing the order.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section>\
|
||||
<section class="faqs-service section-pt text-center">\
|
||||
<div class="container">\
|
||||
<div class="row row-mtm">\
|
||||
<div class="col-12 col-md-6" data-animate="animate__fadeIn">\
|
||||
<div class="col-lg-10 col-xl-9 col-xxl-7 d-flex flex-column align-items-center mx-lg-auto"><span class="primary-color icon-24 width-80 height-80 d-flex align-items-center justify-content-center extra-bg meb-25 rounded-circle"><i class="ri-phone-line d-block lh-1"></i></span>\
|
||||
<h6 class="font-18">Call the team</h6>\
|
||||
<p class="mst-8">Get in touch with our support crew anytime for assistance.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="col-12 col-md-6" data-animate="animate__fadeIn">\
|
||||
<div class="col-lg-10 col-xl-9 col-xxl-7 d-flex flex-column align-items-center mx-lg-auto"><span class="primary-color icon-24 width-80 height-80 d-flex align-items-center justify-content-center extra-bg meb-25 rounded-circle"><i class="ri-user-line d-block lh-1"></i></span>\
|
||||
<h6 class="font-18">Help team crew</h6>\
|
||||
<p class="mst-8">Support squad dedicated to assisting with any issue.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section>\
|
||||
<section class="faqs section-ptb">\
|
||||
<div class="container">\
|
||||
<div class="section-capture text-center">\
|
||||
<div class="section-title" data-animate="animate__fadeIn">\
|
||||
<h2 class="section-heading">Common queries</h2>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="row row-mtm15" id="faqs-collapse-group-ms31c4orwuf68">\
|
||||
<div class="other-tab" data-animate="animate__fadeIn">\
|
||||
<div class="border-full border-radius"><a class="d-flex flex-wrap align-items-baseline ptb-15 plr-15" href="#faqs-collapse-group1-ms31c4or12hab" data-bs-toggle="collapse" aria-expanded="true"><span class="width-calc-16 heading-weight">How do I place an order?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse show" id="faqs-collapse-group1-ms31c4or12hab" data-bs-parent="#faqs-collapse-group-ms31c4orwuf68">\
|
||||
<div class="ptb-15 plr-15 bst">\
|
||||
<p>Browse products, add to cart and proceed to checkout.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab" data-animate="animate__fadeIn">\
|
||||
<div class="border-full border-radius"><a class="d-flex flex-wrap align-items-baseline ptb-15 plr-15" href="#faqs-collapse-group2-ms31c4oru9ylv" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">How can I track my order status?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse-group2-ms31c4oru9ylv" data-bs-parent="#faqs-collapse-group-ms31c4orwuf68">\
|
||||
<div class="ptb-15 plr-15 bst">\
|
||||
<p>Use your tracking number in account or email link.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab" data-animate="animate__fadeIn">\
|
||||
<div class="border-full border-radius"><a class="d-flex flex-wrap align-items-baseline ptb-15 plr-15" href="#faqs-collapse-group3-ms31c4or5pwlx" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">What shipping options are available?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse-group3-ms31c4or5pwlx" data-bs-parent="#faqs-collapse-group-ms31c4orwuf68">\
|
||||
<div class="ptb-15 plr-15 bst">\
|
||||
<p>Standard, express and next-day options are available.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
103 0 \N \N 9
|
||||
103 0 \N \N 10
|
||||
109 Frequently asked questions 0 <p></p>\
|
||||
<section class="faqs section-pt">\
|
||||
<div class="container">\
|
||||
<div class="section-capture text-center">\
|
||||
<div class="section-title" data-animate="animate__fadeIn">\
|
||||
<h2 class="section-heading">Frequently asked questions</h2>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="faqs-collapse-group border-full border-radius" id="faqs-collapse-ms31eajcsmw04">\
|
||||
<div class="other-tab ptb-15 plr-15" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse1-ms31eajcrl44b" data-bs-toggle="collapse" aria-expanded="true"><span class="width-calc-16 heading-weight">How do I track my order?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse show" id="faqs-collapse1-ms31eajcrl44b" data-bs-parent="#faqs-collapse-ms31eajcsmw04">\
|
||||
<div class="pst-9">\
|
||||
<p>You can track your order in your account.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab ptb-15 plr-15" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse2-ms31eajct98vy" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">What is your return policy?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse2-ms31eajct98vy" data-bs-parent="#faqs-collapse-ms31eajcsmw04">\
|
||||
<div class="pst-9">\
|
||||
<p>We accept returns within policy terms.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab ptb-15 plr-15" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse3-ms31eajc9dtaa" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">Do you offer international shipping?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse3-ms31eajc9dtaa" data-bs-parent="#faqs-collapse-ms31eajcsmw04">\
|
||||
<div class="pst-9">\
|
||||
<p>Yes, shipping options vary by country.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab ptb-15 plr-15" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse4-ms31eajconybz" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">Can I change my order after placing it?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse4-ms31eajconybz" data-bs-parent="#faqs-collapse-ms31eajcsmw04">\
|
||||
<div class="pst-9">\
|
||||
<p>Contact support quickly after placing the order.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section>\
|
||||
<section class="faqs-service section-pt text-center">\
|
||||
<div class="container">\
|
||||
<div class="row row-mtm">\
|
||||
<div class="col-12 col-md-6" data-animate="animate__fadeIn">\
|
||||
<div class="col-lg-10 col-xl-9 col-xxl-7 d-flex flex-column align-items-center mx-lg-auto"><span class="primary-color icon-24 width-80 height-80 d-flex align-items-center justify-content-center extra-bg meb-25 rounded-circle"><i class="ri-phone-line d-block lh-1"></i></span>\
|
||||
<h6 class="font-18">Call the team</h6>\
|
||||
<p class="mst-8">Get in touch with our support crew anytime for assistance.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="col-12 col-md-6" data-animate="animate__fadeIn">\
|
||||
<div class="col-lg-10 col-xl-9 col-xxl-7 d-flex flex-column align-items-center mx-lg-auto"><span class="primary-color icon-24 width-80 height-80 d-flex align-items-center justify-content-center extra-bg meb-25 rounded-circle"><i class="ri-user-line d-block lh-1"></i></span>\
|
||||
<h6 class="font-18">Help team crew</h6>\
|
||||
<p class="mst-8">Support squad dedicated to assisting with any issue.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section>\
|
||||
<section class="faqs section-ptb">\
|
||||
<div class="container">\
|
||||
<div class="section-capture text-center">\
|
||||
<div class="section-title" data-animate="animate__fadeIn">\
|
||||
<h2 class="section-heading">Common queries</h2>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="row row-mtm15" id="faqs-collapse-group-ms31eajczfuws">\
|
||||
<div class="other-tab" data-animate="animate__fadeIn">\
|
||||
<div class="border-full border-radius"><a class="d-flex flex-wrap align-items-baseline ptb-15 plr-15" href="#faqs-collapse-group1-ms31eajcich6l" data-bs-toggle="collapse" aria-expanded="true"><span class="width-calc-16 heading-weight">How do I place an order?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse show" id="faqs-collapse-group1-ms31eajcich6l" data-bs-parent="#faqs-collapse-group-ms31eajczfuws">\
|
||||
<div class="ptb-15 plr-15 bst">\
|
||||
<p>Browse products, add to cart and proceed to checkout.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab" data-animate="animate__fadeIn">\
|
||||
<div class="border-full border-radius"><a class="d-flex flex-wrap align-items-baseline ptb-15 plr-15" href="#faqs-collapse-group2-ms31eajcdrfoz" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">How can I track my order status?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse-group2-ms31eajcdrfoz" data-bs-parent="#faqs-collapse-group-ms31eajczfuws">\
|
||||
<div class="ptb-15 plr-15 bst">\
|
||||
<p>Use your tracking number in account or email link.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="other-tab" data-animate="animate__fadeIn">\
|
||||
<div class="border-full border-radius"><a class="d-flex flex-wrap align-items-baseline ptb-15 plr-15" href="#faqs-collapse-group3-ms31eajcbnz1r" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 heading-weight">What shipping options are available?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse-group3-ms31eajcbnz1r" data-bs-parent="#faqs-collapse-group-ms31eajczfuws">\
|
||||
<div class="ptb-15 plr-15 bst">\
|
||||
<p>Standard, express and next-day options are available.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
109 0 \N \N 9
|
||||
109 0 \N \N 10
|
||||
111 Payment Policy 0 <p></p>\
|
||||
<section class="payment-policy">\
|
||||
<div class="container">\
|
||||
<div class="question-index">\
|
||||
<h6 class="font-18" data-animate="animate__fadeIn">Secure transaction rules and payment process</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Discover the steps to ensure safe and seamless payments on our platform.</p>\
|
||||
<p class="p-bullets mst-16">Ensure easy and secure transactions.</p>\
|
||||
<p class="p-bullets mst-1">Follow steps for seamless payments.</p>\
|
||||
<h6 class="font-18 mst-18" data-animate="animate__fadeIn">Top payment options</h6>\
|
||||
<p class="p-bullets mst-18" data-animate="animate__fadeIn"><span class="heading-color heading-weight mer-4">Visa:</span> Secure Visa card payments processed quickly and easily.</p>\
|
||||
<p class="p-bullets mst-1" data-animate="animate__fadeIn"><span class="heading-color heading-weight mer-4">Paypal:</span> Handling payments through paypal for secure transactions.</p>\
|
||||
<a class="btn-style secondary-btn mst-23" href="../../sazinies-ar-mums" data-animate="animate__fadeIn">Know more</a>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<h6 class="question-sub-index font-18" data-animate="animate__fadeIn">What payment methods can I use?</h6>\
|
||||
<p class="p-bullets mst-18">We accept major cards, digital wallets and bank transfers.</p>\
|
||||
<h6 class="question-sub-index font-18 mst-18">What should I do if my payment fails?</h6>\
|
||||
<p class="p-bullets mst-18">Retry the payment and check your details. Contact support if needed.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
111 0 \N \N 9
|
||||
111 0 \N \N 10
|
||||
108 Return Policy 0 <p></p>\
|
||||
<section class="return-policy section-ptb">\
|
||||
<div class="container">\
|
||||
<div class="number-index" id="faqs-collapse-group-ms30yf9ddm166">\
|
||||
<h6 class="font-18" data-animate="animate__fadeIn">Streamlined returns for easy solutions</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Our return policy simplifies the process, ensuring fast and easy returns. Follow our clear steps for refunds, exchanges, or store credits.</p>\
|
||||
<a class="btn-style secondary-btn mst-23" href="../../veikals" data-animate="animate__fadeIn">Shop now</a>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<div class="other-tab" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse-group1-ms30yf9d6oopz" data-bs-toggle="collapse" aria-expanded="true"><span class="width-calc-16 font-18 heading-weight">Refund process steps?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse show" id="faqs-collapse-group1-ms30yf9d6oopz" data-bs-parent="#faqs-collapse-group-ms30yf9ddm166">\
|
||||
<div class="pst-18">\
|
||||
<p>Start your refund by logging into your account and following the return steps.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<div class="other-tab" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse-group2-ms30yf9d932hq" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 font-18 heading-weight">How to exchange?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse-group2-ms30yf9d932hq" data-bs-parent="#faqs-collapse-group-ms30yf9ddm166">\
|
||||
<div class="pst-18">\
|
||||
<p>Choose exchange during your return request and select the replacement product.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<div class="other-tab" data-animate="animate__fadeIn"><a class="d-flex flex-wrap align-items-baseline" href="#faqs-collapse-group3-ms30yf9d9qm48" data-bs-toggle="collapse" aria-expanded="false"><span class="width-calc-16 font-18 heading-weight">How to cancel?</span><span class="other-tab-icon width-16 icon-16"><i class="ri-add-line d-block lh-1"></i></span></a>\
|
||||
<div class="collapse" id="faqs-collapse-group3-ms30yf9d9qm48" data-bs-parent="#faqs-collapse-group-ms30yf9ddm166">\
|
||||
<div class="pst-18">\
|
||||
<p>Cancel orders before shipping, or create a return request after delivery.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<h6 class="font-18" data-animate="animate__fadeIn"><i class="ri-double-quotes-l icon-32 mer-4"></i>Quality service shapes how we value returns</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">We focus on clear instructions and timely support so every return stays simple and stress-free.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
108 0 \N \N 9
|
||||
108 0 \N \N 10
|
||||
27 0 <p></p>\
|
||||
<section class="terms-rules">\
|
||||
<div class="container">\
|
||||
<div class="number-index">\
|
||||
<h6 class="number-sub-index font-18" data-animate="animate__fadeIn">Restriction</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Access to our site is granted for personal use only.</p>\
|
||||
<p class="mst-6" data-animate="animate__fadeIn">Unauthorized use may result in account restrictions.</p>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<h6 class="number-sub-index font-18" data-animate="animate__fadeIn">Usage rights</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Access and use of services are granted under specific conditions.</p>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<h6 class="number-sub-index font-18" data-animate="animate__fadeIn">Liability limits</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">We are not liable for indirect damages to the extent permitted by law.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
27 0 \N \N 9
|
||||
27 0 \N \N 10
|
||||
26 0 <p></p>\
|
||||
<section class="cookie">\
|
||||
<div class="container">\
|
||||
<div class="number-index">\
|
||||
<p data-animate="animate__fadeIn">We use cookies to improve your browsing experience and personalize content.</p>\
|
||||
<p class="mst-6" data-animate="animate__fadeIn">You can adjust cookie settings in your browser.</p>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<h6 class="number-sub-index font-18" data-animate="animate__fadeIn">What is a cookie?</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">A cookie is a small data file stored on your device by a website.</p>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<h6 class="number-sub-index font-18" data-animate="animate__fadeIn">Types of cookies on this site</h6>\
|
||||
<h6 class="p-number font-18 mst-20" data-animate="animate__fadeIn">Essential function cookies</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Required for core website functionality and security.</p>\
|
||||
<h6 class="p-number font-18 mst-18" data-animate="animate__fadeIn">Analytics tracking cookies</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Used to analyze behavior and improve site performance.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
26 0 \N \N 9
|
||||
26 0 \N \N 10
|
||||
110 Shipping Policy 0 <p></p>\
|
||||
<section class="shipping-policy">\
|
||||
<div class="container">\
|
||||
<div class="number-index">\
|
||||
<h6 class="number-sub-index font-18" data-animate="animate__fadeIn">Delivery</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Orders are processed within 1-2 business days and shipped with tracking.</p>\
|
||||
<p class="p-bullets mst-16" data-animate="animate__fadeIn">Standard shipping takes 5-7 business days.</p>\
|
||||
<p class="p-bullets mst-1" data-animate="animate__fadeIn">Expedited shipping options are available.</p>\
|
||||
<h6 class="number-sub-index font-18 mst-18" data-animate="animate__fadeIn">Freight</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Shipping costs vary by location and order weight.</p>\
|
||||
<p class="p-bullets mst-16" data-animate="animate__fadeIn">Charges are shown during checkout.</p>\
|
||||
<h6 class="number-sub-index font-18 mst-18" data-animate="animate__fadeIn">Dispatch</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">You will receive a tracking number after dispatch.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
110 0 \N \N 9
|
||||
110 0 \N \N 10
|
||||
112 Privacy Policy 0 <p></p>\
|
||||
<section class="privacy-policy">\
|
||||
<div class="container">\
|
||||
<div class="number-index">\
|
||||
<p class="p-bullets" data-animate="animate__fadeIn">We use secure methods to store and manage your sensitive information.</p>\
|
||||
<p class="p-bullets mst-1" data-animate="animate__fadeIn">Your data is used only to improve your experience.</p>\
|
||||
<p class="p-bullets mst-1" data-animate="animate__fadeIn">We do not share your details without your consent.</p>\
|
||||
<h6 class="number-sub-index font-18 mst-18" data-animate="animate__fadeIn">Liability</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">We protect your data with industry best practices.</p>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<h6 class="number-sub-index font-18" data-animate="animate__fadeIn">Trusted ways</h6>\
|
||||
<p class="p-number mst-18" data-animate="animate__fadeIn">Visa: Secure Visa card payments processed quickly and easily.</p>\
|
||||
<p class="p-number mst-6" data-animate="animate__fadeIn">Paypal: Secure digital wallet payments.</p>\
|
||||
<div class="pst-30 mst-30 bst" data-animate="animate__fadeIn"></div>\
|
||||
<h6 class="number-sub-index font-18" data-animate="animate__fadeIn">How do we handle your data?</h6>\
|
||||
<p class="mst-18" data-animate="animate__fadeIn">Learn how we collect, secure and process your personal data.</p>\
|
||||
<a class="btn-style secondary-btn mst-23" href="../../sazinies-ar-mums" data-animate="animate__fadeIn">Know more</a></div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
112 0 \N \N 9
|
||||
112 0 \N \N 10
|
||||
113 About us 0 <p></p>\
|
||||
<section class="about-us">\
|
||||
<div class="container">\
|
||||
<div class="section-capture text-center">\
|
||||
<div class="section-title" data-animate="animate__fadeIn">\
|
||||
<h2 class="section-heading">About story</h2>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="about-banner" data-animate="animate__fadeIn">\
|
||||
<div class="banner-hover"><span class="d-block banner-img br-hidden"><img src="../../files/article/2026-07/19c1fe89165436a0f293b444d126c3be5566f874.jpg" class="w-100 img-fluid" alt="about-banner1" /></span></div>\
|
||||
</div>\
|
||||
<div class="about-service section-pt text-center">\
|
||||
<div class="row row-mtm justify-content-md-center">\
|
||||
<div class="col-12 col-lg-4" data-animate="animate__fadeIn">\
|
||||
<div class="col-xxl-10 mx-xxl-auto">\
|
||||
<h6 class="font-18">5000+ Happy customer</h6>\
|
||||
<p class="mst-18">Absolutely delighted with the service and support.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="col-12 col-lg-4" data-animate="animate__fadeIn">\
|
||||
<div class="col-xxl-10 mx-xxl-auto">\
|
||||
<h6 class="font-18">29+ Awards won</h6>\
|
||||
<p class="mst-18">Recognized for quality, innovation and customer care.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="col-12 col-lg-4" data-animate="animate__fadeIn">\
|
||||
<div class="col-xxl-10 mx-xxl-auto">\
|
||||
<h6 class="font-18">40+ years of experiences</h6>\
|
||||
<p class="mst-18">Long-term expertise with a modern approach to growth.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section>\
|
||||
<div class="about-us-banner section-ptb">\
|
||||
<div class="container">\
|
||||
<div class="about-banner" data-animate="animate__fadeIn">\
|
||||
<div class="banner-hover"><span class="d-block banner-img br-hidden"><img src="../../files/article/2026-07/19c1fe89165436a0f293b444d126c3be5566f874.jpg" class="w-100 img-fluid" alt="about-banner2" /></span></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<section class="about-service section-pt text-center">\
|
||||
<div class="container">\
|
||||
<div class="row row-mtm justify-content-md-center">\
|
||||
<div class="col-12 col-lg-6" data-animate="animate__fadeIn">\
|
||||
<div class="col-lg-10 col-xl-9 col-xxl-7 mx-lg-auto">\
|
||||
<h6 class="font-18">Leading with innovation since 1982</h6>\
|
||||
<p class="mst-18">We blend experience with modern solutions to deliver strong results.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="col-12 col-lg-6" data-animate="animate__fadeIn">\
|
||||
<div class="col-lg-10 col-xl-9 col-xxl-7 mx-lg-auto">\
|
||||
<h6 class="font-18">Transforming ideas into success</h6>\
|
||||
<p class="mst-18">We turn clear vision and integrity into meaningful outcomes.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section>\
|
||||
<section class="about-team section-ptb">\
|
||||
<div class="container">\
|
||||
<div class="section-capture text-center">\
|
||||
<div class="section-title" data-animate="animate__fadeIn">\
|
||||
<h2 class="section-heading">Our team</h2>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="row row-mtm text-center">\
|
||||
<div class="col-6 col-lg-3" data-animate="animate__fadeIn">\
|
||||
<div class="about-team-content banner-hover">\
|
||||
<div class="about-team-img"><span class="d-block banner-img br-hidden"><img src="../../files/article/2026-07/f816f373d0847572941471765a70a0652f47f6cd.jpg" class="w-100 img-fluid" alt="about-team1" /></span></div>\
|
||||
<div class="about-team-info pst-25">\
|
||||
<h6 class="font-18">Team member 1</h6>\
|
||||
<span class="d-block mst-6">Web designer</span></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="col-6 col-lg-3" data-animate="animate__fadeIn">\
|
||||
<div class="about-team-content banner-hover">\
|
||||
<div class="about-team-img"><span class="d-block banner-img br-hidden"><img src="../../files/article/2026-07/f816f373d0847572941471765a70a0652f47f6cd.jpg" class="w-100 img-fluid" alt="about-team2" /></span></div>\
|
||||
<div class="about-team-info pst-25">\
|
||||
<h6 class="font-18">Team member 2</h6>\
|
||||
<span class="d-block mst-6">Support staff</span></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="col-6 col-lg-3" data-animate="animate__fadeIn">\
|
||||
<div class="about-team-content banner-hover">\
|
||||
<div class="about-team-img"><span class="d-block banner-img br-hidden"><img src="../../files/article/2026-07/f816f373d0847572941471765a70a0652f47f6cd.jpg" class="w-100 img-fluid" alt="about-team3" /></span></div>\
|
||||
<div class="about-team-info pst-25">\
|
||||
<h6 class="font-18">Team member 3</h6>\
|
||||
<span class="d-block mst-6">Deputy sale</span></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="col-6 col-lg-3" data-animate="animate__fadeIn">\
|
||||
<div class="about-team-content banner-hover">\
|
||||
<div class="about-team-img"><span class="d-block banner-img br-hidden"><img src="../../files/article/2026-07/f816f373d0847572941471765a70a0652f47f6cd.jpg" class="w-100 img-fluid" alt="about-team4" /></span></div>\
|
||||
<div class="about-team-info pst-25">\
|
||||
<h6 class="font-18">Team member 4</h6>\
|
||||
<span class="d-block mst-6">Policy member</span></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> \N \N 7
|
||||
113 0 \N \N 9
|
||||
113 0 \N \N 10
|
||||
3 Let nature take care of your body veikals Shop now 0 Natural cosmetic \N \N 7
|
||||
3 0 \N \N 9
|
||||
3 0 \N \N 10
|
||||
4 Where every glow look feels right veikals Shop now 0 Crafted radiance \N \N 7
|
||||
4 0 \N \N 9
|
||||
4 0 \N \N 10
|
||||
97 Natural brilliance veikals Iepērcies! 0 Beauty essentials made personal \N \N 7
|
||||
97 0 \N \N 9
|
||||
97 0 \N \N 10
|
||||
23 Testimonial BG 0 \N \N 7
|
||||
23 0 \N \N 9
|
||||
23 0 \N \N 10
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
1 1 Clasificators Type for defining aditional classificator groups 0 0 0 0 0 0
|
||||
2 1 MailTypes Classificator group for mail constructor 0 0 1349393007 1349393007 0 0
|
||||
3 2 Mail 2 Password recovery 2 0 1493484355 1784727435 0 0
|
||||
264 1 type for Text manager 0 0 1442260988 1442260988 0 0
|
||||
395 2 Mail 1 New user registration 1 0 1560190614 1784727447 0 0
|
||||
398 1 PHP_CONST Php constantes 0 0 1579170870 1579170870 0 0
|
||||
407 2 Mail 3 Newsletter mail 3 0 1586689894 1784727789 0 0
|
||||
408 2 Mail 4 System notices mails 4 0 1586689915 1784727799 0 0
|
||||
409 2 Mail 5 Order confirmation 5 0 1588323119 1784728370 0 0
|
||||
417 2 Mail 16 System news 16 0 1595239448 1784728602 0 0
|
||||
423 1 SVG Icons 0 0 1603401042 1603401113 0 0
|
||||
1417 423 ICO_BELL <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-bell"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"></path><path d="M13.73 21a2 2 0 0 1-3.46 0"></path></svg> 1 0 1605892768 1605892768 0 0
|
||||
1418 423 ICO_GEAR_SETTINGS <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-settings text-white"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg> 2 0 1605892797 1605892797 0 0
|
||||
1419 423 ICO_BOX <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-box text-white"><path d="M12.89 1.45l8 4A2 2 0 0 1 22 7.24v9.53a2 2 0 0 1-1.11 1.79l-8 4a2 2 0 0 1-1.79 0l-8-4a2 2 0 0 1-1.1-1.8V7.24a2 2 0 0 1 1.11-1.79l8-4a2 2 0 0 1 1.78 0z"></path><polyline points="2.32 6.16 12 11 21.68 6.16"></polyline><line x1="12" y1="22.76" x2="12" y2="11"></line></svg> 3 0 1605892815 1605892815 0 0
|
||||
1420 423 ICO_PLAY <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-airplay text-white"><path d="M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1"></path><polygon points="12 15 17 21 7 21 12 15"></polygon></svg> 4 0 1605892828 1605892828 0 0
|
||||
1421 423 ICO_MSG <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg> 5 0 1605892841 1605892841 0 0
|
||||
1422 423 ICO_CALENDAR <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-calendar text-white"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg> 6 0 1605892856 1605892856 0 0
|
||||
1423 423 ICO_CART <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-shopping-cart"><circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path></svg> 7 0 1605892868 1605892868 0 0
|
||||
1442 264 Base Categories Type for text manager base categories 1 0 1777292392 1783670965 0 0
|
||||
1443 264 Sub Categories Type for text manager sub categories under "Base Categories" 2 0 1777292505 1783670968 0 0
|
||||
1444 1 Payment Methods 0 0 1777293701 1777293701 0 0
|
||||
1445 1 Shipping method 0 0 1777293757 1777293757 0 0
|
||||
1446 1 Payment cards 0 0 1777293769 1777293769 0 0
|
||||
1447 1446 aexpress bank card 3 0 1777293810 1777293810 0 0
|
||||
1448 1446 master bank card 2 0 1777293859 1777293859 0 0
|
||||
1449 1446 Visa Bank 1 0 1777293874 1777293874 0 0
|
||||
1450 1444 Credit Card You will be redirect to ... to complete the payment 2 0 1777293897 1777293897 0 0
|
||||
1451 1444 Bank Transfer After completing your order we will get to you through email with ... 1 0 1777293914 1783330859 0 0
|
||||
1452 1445 Omniva ... 3 0 1777293940 1777293940 0 0
|
||||
1453 1445 Pasta stacija 2 0 1777293947 1777293947 0 0
|
||||
1454 1445 International Shipping 1 0 1777293954 1777293954 0 0
|
||||
1455 1 Omniva Latvija 0 0 1777293981 1777293981 0 0
|
||||
1456 264 Index Hero slider Hero slider section 5 0 1781253743 1783670981 0 0
|
||||
1457 264 Index service area Service area section 6 0 1781259467 1783691500 0 0
|
||||
1458 264 Index About product About product section 7 0 1781260357 1783691539 0 0
|
||||
1459 264 Index Testimonial Testimonial section data 8 0 1781261003 1783691559 0 0
|
||||
1460 264 Index Testimonial BG Testimonial section background 9 0 1781261032 1783691572 0 0
|
||||
1461 264 Index About text section About text section data 10 0 1781538491 1783691576 0 0
|
||||
1462 264 Page - Cookies Page content 17 0 1781696705 1784897901 0 0
|
||||
1463 264 Page - Terms & conditions Page content 16 0 1781697457 1784761321 0 0
|
||||
1464 264 Page - Contact us Page content / Contact service 15 0 1781769311 1784897884 0 0
|
||||
1465 1 Country Countries 0 0 1783330309 1783330325 0 0
|
||||
1466 1 Product size 0 0 1783330347 1783330347 0 0
|
||||
1467 264 Subscribe popup bg Subscribe popup background image. 20 0 1784012344 1784012344 0 0
|
||||
1468 264 Global breadcrumbs bg Global breadcrumbs background image. 25 0 1784271982 1784271989 0 0
|
||||
1469 264 Shop side banner Shop side banner 30 0 1784272009 1784272009 0 0
|
||||
1470 264 COLLECTION_BANNER Shop collection banner image 1420x330 35 0 1784625101 1784625101 0 0
|
||||
1471 2 Mail 6 Order receipt 6 0 1784728598 1784728598 0 0
|
||||
1472 264 Page - About us Page content 36 0 1784759081 1784759081 0 0
|
||||
1473 264 Page - FAQ Page content 37 0 1784759095 1784759095 0 0
|
||||
1474 264 Page - Disclaimers Page content 38 0 1784760222 1784760570 0 0
|
||||
1476 264 Page - Privacy Policy Page content 39 0 1784893086 1784893086 0 0
|
||||
1477 264 Page - Payment Terms Page content 40 0 1784893107 1784893107 0 0
|
||||
1478 264 Page - Return Policy Page content 41 0 1784893126 1784893126 0 0
|
||||
1479 264 Page - Shipping Policy Page content 42 0 1784893148 1784893148 0 0
|
||||
1480 264 Page - Copyrights Page content 47 0 1784897819 1784897819 0 0
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
1 asdasd asd 2 1 asd 0 0 1777291051
|
||||
2 delivery 2 delivery 2 3 24 delivery 2 descirption 1 0 1783022299
|
||||
3 asd asd 1 1 asd 0 0 1783327361
|
||||
|
|
@ -0,0 +1,215 @@
|
|||
1 1 0 1 1777291512 1783341083
|
||||
3 100 0 0 1777291633 1784536421
|
||||
100 1 0 0 1772889600 1783341076
|
||||
101 100 0 0 1772889600 1772889600
|
||||
102 100 0 0 1772889600 1772889600
|
||||
103 100 0 0 1772889600 1772889600
|
||||
104 100 0 0 1772889600 1772889600
|
||||
105 100 0 0 1772889600 1772889600
|
||||
106 100 0 0 1772889600 1772889600
|
||||
107 100 0 0 1772889600 1772889600
|
||||
108 100 0 0 1772889600 1772889600
|
||||
109 100 0 0 1772889600 1772889600
|
||||
110 100 0 0 1772889600 1772889600
|
||||
111 100 0 0 1772889600 1772889600
|
||||
112 100 0 0 1772889600 1772889600
|
||||
113 100 0 0 1772889600 1772889600
|
||||
114 100 0 0 1772889600 1772889600
|
||||
115 100 0 0 1772889600 1772889600
|
||||
116 100 0 0 1772889600 1772889600
|
||||
117 100 0 0 1772889600 1772889600
|
||||
200 1 0 0 1772889600 1783341076
|
||||
201 200 0 0 1772889600 1772889600
|
||||
202 200 0 0 1772889600 1772889600
|
||||
203 200 0 0 1772889600 1772889600
|
||||
204 200 0 0 1772889600 1772889600
|
||||
205 200 0 0 1772889600 1772889600
|
||||
206 200 0 0 1772889600 1772889600
|
||||
207 200 0 0 1772889600 1772889600
|
||||
208 200 0 0 1772889600 1772889600
|
||||
209 200 0 0 1772889600 1772889600
|
||||
210 200 0 0 1772889600 1772889600
|
||||
211 200 0 0 1772889600 1772889600
|
||||
212 200 0 0 1772889600 1772889600
|
||||
213 200 0 0 1772889600 1772889600
|
||||
300 1 0 0 1772889600 1783341076
|
||||
301 300 0 0 1772889600 1772889600
|
||||
302 300 0 0 1772889600 1772889600
|
||||
303 300 0 0 1772889600 1772889600
|
||||
400 1 0 0 1772889600 1783341076
|
||||
401 400 0 0 1772889600 1772889600
|
||||
402 400 0 0 1772889600 1772889600
|
||||
403 400 0 0 1772889600 1772889600
|
||||
404 400 0 0 1772889600 1772889600
|
||||
405 400 0 0 1772889600 1772889600
|
||||
406 400 0 0 1772889600 1772889600
|
||||
407 400 0 0 1772889600 1772889600
|
||||
408 400 0 0 1772889600 1772889600
|
||||
500 1 0 0 1772889600 1783341076
|
||||
501 500 0 0 1772889600 1772889600
|
||||
502 500 0 0 1772889600 1772889600
|
||||
503 500 0 0 1772889600 1772889600
|
||||
504 500 0 0 1772889600 1772889600
|
||||
505 500 0 0 1772889600 1772889600
|
||||
506 500 0 0 1772889600 1772889600
|
||||
507 500 0 0 1772889600 1772889600
|
||||
508 500 0 0 1772889600 1772889600
|
||||
509 500 0 0 1772889600 1772889600
|
||||
600 1 0 0 1772889600 1783341076
|
||||
601 600 0 0 1772889600 1772889600
|
||||
602 600 0 0 1772889600 1772889600
|
||||
603 600 0 0 1772889600 1772889600
|
||||
604 600 0 0 1772889600 1772889600
|
||||
700 1 0 0 1772889600 1783341076
|
||||
701 700 0 0 1772889600 1772889600
|
||||
702 700 0 0 1772889600 1772889600
|
||||
703 700 0 0 1772889600 1772889600
|
||||
704 700 0 0 1772889600 1772889600
|
||||
800 1 0 0 1772889600 1783341076
|
||||
801 800 0 0 1772889600 1772889600
|
||||
802 800 0 0 1772889600 1772889600
|
||||
803 800 0 0 1772889600 1772889600
|
||||
900 1 0 0 1772889600 1783341076
|
||||
901 900 0 0 1772889600 1772889600
|
||||
902 900 0 0 1772889600 1772889600
|
||||
903 900 0 0 1772889600 1772889600
|
||||
904 900 0 0 1772889600 1772889600
|
||||
905 900 0 0 1772889600 1772889600
|
||||
906 900 0 0 1772889600 1772889600
|
||||
1000 1 0 0 1772889600 1783341076
|
||||
1001 1000 0 0 1772889600 1772889600
|
||||
1002 1000 0 0 1772889600 1772889600
|
||||
1003 1000 0 0 1772889600 1772889600
|
||||
1004 1000 0 0 1772889600 1772889600
|
||||
1005 1000 0 0 1772889600 1772889600
|
||||
1100 1 0 0 1772889600 1783341076
|
||||
1101 1100 0 0 1772889600 1772889600
|
||||
1102 1100 0 0 1772889600 1772889600
|
||||
1103 1100 0 0 1772889600 1772889600
|
||||
1104 1100 0 0 1772889600 1772889600
|
||||
1105 1100 0 0 1772889600 1772889600
|
||||
1106 1100 0 0 1772889600 1772889600
|
||||
1200 1 0 0 1772889600 1783341076
|
||||
1201 1200 0 0 1772889600 1772889600
|
||||
1202 1200 0 0 1772889600 1772889600
|
||||
1203 1200 0 0 1772889600 1772889600
|
||||
1300 1 0 0 1772889600 1783341076
|
||||
1301 1300 0 0 1772889600 1772889600
|
||||
1302 1300 0 0 1772889600 1772889600
|
||||
1303 1300 0 0 1772889600 1772889600
|
||||
1400 1 0 0 1772889600 1783341076
|
||||
1401 1400 0 0 1772889600 1772889600
|
||||
1402 1400 0 0 1772889600 1772889600
|
||||
1403 1400 0 0 1772889600 1772889600
|
||||
1404 1400 0 0 1772889600 1772889600
|
||||
1405 1400 0 0 1772889600 1772889600
|
||||
1406 1400 0 0 1772889600 1772889600
|
||||
1407 1400 0 0 1772889600 1772889600
|
||||
1408 1400 0 0 1772889600 1772889600
|
||||
1500 1 0 0 1772889600 1783341076
|
||||
1501 1500 0 0 1772889600 1772889600
|
||||
1502 1500 0 0 1772889600 1772889600
|
||||
1503 1500 0 0 1772889600 1772889600
|
||||
1504 1500 0 0 1772889600 1772889600
|
||||
1505 1500 0 0 1772889600 1772889600
|
||||
1506 1500 0 0 1772889600 1772889600
|
||||
1507 1500 0 0 1772889600 1772889600
|
||||
1600 1 0 0 1772889600 1783341076
|
||||
1601 1600 0 0 1772889600 1772889600
|
||||
1602 1600 0 0 1772889600 1772889600
|
||||
1603 1600 0 0 1772889600 1772889600
|
||||
1604 1600 0 0 1772889600 1772889600
|
||||
1700 1 0 0 1772889600 1783341076
|
||||
1701 1700 0 0 1772889600 1772889600
|
||||
1702 1700 0 0 1772889600 1772889600
|
||||
1703 1700 0 0 1772889600 1772889600
|
||||
1704 1700 0 0 1772889600 1772889600
|
||||
1705 1700 0 0 1772889600 1772889600
|
||||
1706 1700 0 0 1772889600 1772889600
|
||||
1707 1700 0 0 1772889600 1772889600
|
||||
1800 1 0 0 1772889600 1783341076
|
||||
1801 1800 0 0 1772889600 1772889600
|
||||
1802 1800 0 0 1772889600 1772889600
|
||||
1803 1800 0 0 1772889600 1772889600
|
||||
1804 1800 0 0 1772889600 1772889600
|
||||
1805 1800 0 0 1772889600 1772889600
|
||||
1806 1800 0 0 1772889600 1772889600
|
||||
1807 1800 0 0 1772889600 1772889600
|
||||
1808 1800 0 0 1772889600 1772889600
|
||||
1809 1800 0 0 1772889600 1772889600
|
||||
1810 1800 0 0 1772889600 1772889600
|
||||
1811 1800 0 0 1772889600 1772889600
|
||||
1900 1 0 0 1772889600 1783341076
|
||||
1901 1900 0 0 1772889600 1772889600
|
||||
1902 1900 0 0 1772889600 1772889600
|
||||
1903 1900 0 0 1772889600 1772889600
|
||||
1904 1900 0 0 1772889600 1772889600
|
||||
1905 1900 0 0 1772889600 1772889600
|
||||
1906 1900 0 0 1772889600 1772889600
|
||||
1907 1900 0 0 1772889600 1772889600
|
||||
2000 1 0 0 1772889600 1783341076
|
||||
2001 2000 0 0 1772889600 1772889600
|
||||
2002 2000 0 0 1772889600 1772889600
|
||||
2003 2000 0 0 1772889600 1772889600
|
||||
2004 2000 0 0 1772889600 1772889600
|
||||
2005 2000 0 0 1772889600 1772889600
|
||||
2006 2000 0 0 1772889600 1772889600
|
||||
2007 2000 0 0 1772889600 1772889600
|
||||
2100 1 0 0 1772889600 1783341076
|
||||
2101 2100 0 0 1772889600 1772889600
|
||||
2102 2100 0 0 1772889600 1772889600
|
||||
2103 2100 0 0 1772889600 1772889600
|
||||
2104 2100 0 0 1772889600 1772889600
|
||||
2105 2100 0 0 1772889600 1772889600
|
||||
2106 2100 0 0 1772889600 1772889600
|
||||
2200 1 0 0 1772889600 1783341076
|
||||
2201 2200 0 0 1772889600 1772889600
|
||||
2202 2200 0 0 1772889600 1772889600
|
||||
2203 2200 0 0 1772889600 1772889600
|
||||
2204 2200 0 0 1772889600 1772889600
|
||||
2205 2200 0 0 1772889600 1772889600
|
||||
2206 2200 0 0 1772889600 1772889600
|
||||
2300 1 0 0 1772889600 1783341076
|
||||
2301 2300 0 0 1772889600 1772889600
|
||||
2302 2300 0 0 1772889600 1772889600
|
||||
2303 2300 0 0 1772889600 1772889600
|
||||
2304 2300 0 0 1772889600 1772889600
|
||||
2400 1 0 0 1772889600 1783341076
|
||||
2401 2400 0 0 1772889600 1772889600
|
||||
2402 2400 0 0 1772889600 1772889600
|
||||
2403 2400 0 0 1772889600 1772889600
|
||||
2404 2400 0 0 1772889600 1772889600
|
||||
2405 2400 0 0 1772889600 1772889600
|
||||
2500 1 0 0 1772889600 1783341076
|
||||
2501 2500 0 0 1772889600 1772889600
|
||||
2502 2500 0 0 1772889600 1772889600
|
||||
2503 2500 0 0 1772889600 1772889600
|
||||
2504 2500 0 0 1772889600 1772889600
|
||||
2505 2500 0 0 1772889600 1772889600
|
||||
2506 2500 0 0 1772889600 1772889600
|
||||
2507 2500 0 0 1772889600 1772889600
|
||||
2508 2500 0 0 1772889600 1772889600
|
||||
2509 2500 0 0 1772889600 1772889600
|
||||
2510 2500 0 0 1772889600 1772889600
|
||||
2511 2500 0 0 1772889600 1772889600
|
||||
2512 2500 0 0 1772889600 1772889600
|
||||
2600 1 0 0 1772889600 1783341076
|
||||
2601 2600 0 0 1772889600 1772889600
|
||||
2602 2600 0 0 1772889600 1772889600
|
||||
2603 2600 0 0 1772889600 1772889600
|
||||
2604 2600 0 0 1772889600 1772889600
|
||||
2605 2600 0 0 1772889600 1772889600
|
||||
2606 2600 0 0 1772889600 1772889600
|
||||
2607 2600 0 0 1772889600 1772889600
|
||||
2608 2600 0 0 1772889600 1772889600
|
||||
2609 2600 0 0 1772889600 1772889600
|
||||
2610 2600 0 0 1772889600 1772889600
|
||||
2700 1 0 0 1772889600 1783341076
|
||||
2701 2700 0 0 1772889600 1772889600
|
||||
2702 2700 0 0 1772889600 1772889600
|
||||
2703 2700 0 0 1772889600 1772889600
|
||||
2704 2700 0 0 1772889600 1772889600
|
||||
2705 2700 0 0 1772889600 1772889600
|
||||
2706 2700 0 0 1772889600 1772889600
|
||||
2707 2700 0 0 1772889600 1772889600
|
||||
2708 2700 0 0 1772889600 1772889600
|
||||
|
|
@ -0,0 +1,648 @@
|
|||
1 Attribūta tips 7
|
||||
1 Attribute Type 9
|
||||
1 Attribute Type 10
|
||||
2 Krāsa 7
|
||||
2 Color 9
|
||||
2 10
|
||||
100 Krāsa 7
|
||||
100 Color 9
|
||||
100 Цвет 10
|
||||
101 Melns 7
|
||||
101 Black 9
|
||||
101 Черный 10
|
||||
102 Balts 7
|
||||
102 White 9
|
||||
102 Белый 10
|
||||
103 Pelēks 7
|
||||
103 Grey 9
|
||||
103 Серый 10
|
||||
104 Tumši zils 7
|
||||
104 Navy blue 9
|
||||
104 Темно-синий 10
|
||||
105 Gaiši zils 7
|
||||
105 Light blue 9
|
||||
105 Голубой 10
|
||||
106 Sarkans 7
|
||||
106 Red 9
|
||||
106 Красный 10
|
||||
107 Zaļš 7
|
||||
107 Green 9
|
||||
107 Зеленый 10
|
||||
108 Haki 7
|
||||
108 Khaki 9
|
||||
108 Хаки 10
|
||||
109 Bēšs 7
|
||||
109 Beige 9
|
||||
109 Бежевый 10
|
||||
110 Brūns 7
|
||||
110 Brown 9
|
||||
110 Коричневый 10
|
||||
111 Dzeltens 7
|
||||
111 Yellow 9
|
||||
111 Желтый 10
|
||||
112 Rozā 7
|
||||
112 Pink 9
|
||||
112 Розовый 10
|
||||
113 Violets 7
|
||||
113 Purple 9
|
||||
113 Фиолетовый 10
|
||||
114 Oranžs 7
|
||||
114 Orange 9
|
||||
114 Оранжевый 10
|
||||
115 Zelta 7
|
||||
115 Gold 9
|
||||
115 Золотой 10
|
||||
116 Sudraba 7
|
||||
116 Silver 9
|
||||
116 Серебряный 10
|
||||
117 Daudzkrāsains 7
|
||||
117 Multicolor 9
|
||||
117 Разноцветный 10
|
||||
200 Materiāls 7
|
||||
200 Material 9
|
||||
200 Материал 10
|
||||
201 100% Kokvilna 7
|
||||
201 100% Cotton 9
|
||||
201 100% Хлопок 10
|
||||
202 Kokvilna / Elastāns 7
|
||||
202 Cotton / Elastane 9
|
||||
202 Хлопок / Эластан 10
|
||||
203 Lins 7
|
||||
203 Linen 9
|
||||
203 Лен 10
|
||||
204 Vilna 7
|
||||
204 Wool 9
|
||||
204 Шерсть 10
|
||||
205 Kašmirs 7
|
||||
205 Cashmere 9
|
||||
205 Кашемир 10
|
||||
206 Viskoze 7
|
||||
206 Viscose 9
|
||||
206 Вискоза 10
|
||||
207 Poliesters 7
|
||||
207 Polyester 9
|
||||
207 Полиэстер 10
|
||||
208 Neilons 7
|
||||
208 Nylon 9
|
||||
208 Нейлон 10
|
||||
209 Džinss 7
|
||||
209 Denim 9
|
||||
209 Деним 10
|
||||
210 Dabīgā āda 7
|
||||
210 Genuine leather 9
|
||||
210 Натуральная кожа 10
|
||||
211 Mākslīgā āda 7
|
||||
211 Faux leather 9
|
||||
211 Искусственная кожа 10
|
||||
212 Zamšāda 7
|
||||
212 Suede 9
|
||||
212 Замша 10
|
||||
213 Audekls 7
|
||||
213 Canvas 9
|
||||
213 Канвас 10
|
||||
300 Sezona / Kolekcija 7
|
||||
300 Season / Collection 9
|
||||
300 Сезон / Коллекция 10
|
||||
301 Vissezonas 7
|
||||
301 All-season 9
|
||||
301 Всесезонный 10
|
||||
302 Pavasaris / Vasara 7
|
||||
302 Spring / Summer 9
|
||||
302 Весна / Лето 10
|
||||
303 Rudens / Ziema 7
|
||||
303 Autumn / Winter 9
|
||||
303 Осень / Зима 10
|
||||
400 Apģērbu izmērs 7
|
||||
400 Clothing Size 9
|
||||
400 Размер одежды 10
|
||||
401 XS 7
|
||||
401 XS 9
|
||||
401 XS 10
|
||||
402 S 7
|
||||
402 S 9
|
||||
402 S 10
|
||||
403 M 7
|
||||
403 M 9
|
||||
403 M 10
|
||||
404 L 7
|
||||
404 L 9
|
||||
404 L 10
|
||||
405 XL 7
|
||||
405 XL 9
|
||||
405 XL 10
|
||||
406 XXL 7
|
||||
406 XXL 9
|
||||
406 XXL 10
|
||||
407 3XL 7
|
||||
407 3XL 9
|
||||
407 3XL 10
|
||||
408 Universāls 7
|
||||
408 Universal (One Size) 9
|
||||
408 Универсальный 10
|
||||
500 Bikšu viduklis 7
|
||||
500 Pants Waist 9
|
||||
500 Объем талии брюк 10
|
||||
501 W28 7
|
||||
501 W28 9
|
||||
501 W28 10
|
||||
502 W29 7
|
||||
502 W29 9
|
||||
502 W29 10
|
||||
503 W30 7
|
||||
503 W30 9
|
||||
503 W30 10
|
||||
504 W31 7
|
||||
504 W31 9
|
||||
504 W31 10
|
||||
505 W32 7
|
||||
505 W32 9
|
||||
505 W32 10
|
||||
506 W33 7
|
||||
506 W33 9
|
||||
506 W33 10
|
||||
507 W34 7
|
||||
507 W34 9
|
||||
507 W34 10
|
||||
508 W36 7
|
||||
508 W36 9
|
||||
508 W36 10
|
||||
509 W38 7
|
||||
509 W38 9
|
||||
509 W38 10
|
||||
600 Bikšu garums 7
|
||||
600 Pants Length 9
|
||||
600 Длина брюк 10
|
||||
601 L30 7
|
||||
601 L30 9
|
||||
601 L30 10
|
||||
602 L32 7
|
||||
602 L32 9
|
||||
602 L32 10
|
||||
603 L34 7
|
||||
603 L34 9
|
||||
603 L34 10
|
||||
604 L36 7
|
||||
604 L36 9
|
||||
604 L36 10
|
||||
700 Piegriezums 7
|
||||
700 Fit 9
|
||||
700 Покрой 10
|
||||
701 Slim Fit 7
|
||||
701 Slim Fit 9
|
||||
701 Slim Fit 10
|
||||
702 Regular Fit 7
|
||||
702 Regular Fit 9
|
||||
702 Regular Fit 10
|
||||
703 Relaxed Fit 7
|
||||
703 Relaxed Fit 9
|
||||
703 Relaxed Fit 10
|
||||
704 Oversized 7
|
||||
704 Oversized 9
|
||||
704 Oversized 10
|
||||
800 Piedurkņu garums 7
|
||||
800 Sleeve Length 9
|
||||
800 Длина рукава 10
|
||||
801 Bez piedurknēm 7
|
||||
801 Sleeveless 9
|
||||
801 Без рукавов 10
|
||||
802 Īsas piedurknes 7
|
||||
802 Short sleeves 9
|
||||
802 Короткие рукава 10
|
||||
803 Garas piedurknes 7
|
||||
803 Long sleeves 9
|
||||
803 Длинные рукава 10
|
||||
900 Apkakles veids 7
|
||||
900 Neckline Type 9
|
||||
900 Тип воротника 10
|
||||
901 Apaļš izgriezums 7
|
||||
901 Crewneck 9
|
||||
901 Круглый вырез 10
|
||||
902 V-veida izgriezums 7
|
||||
902 V-neck 9
|
||||
902 V-образный вырез 10
|
||||
903 Polo apkale 7
|
||||
903 Polo collar 9
|
||||
903 Воротник поло 10
|
||||
904 Klasiskā krekla apkale 7
|
||||
904 Classic shirt collar 9
|
||||
904 Классический воротник рубашки 10
|
||||
905 Stāvapkale 7
|
||||
905 Mandarin collar 9
|
||||
905 Воротник-стойка 10
|
||||
906 Bītlene 7
|
||||
906 Turtleneck 9
|
||||
906 Воротник гольф 10
|
||||
1000 Aizdare 7
|
||||
1000 Closure 9
|
||||
1000 Застежка 10
|
||||
1001 Bez aizdares 7
|
||||
1001 No closure 9
|
||||
1001 Без застежки 10
|
||||
1002 Ar rāvējslēdzēju 7
|
||||
1002 Zipper 9
|
||||
1002 На молнии 10
|
||||
1003 Ar pogām 7
|
||||
1003 Buttons 9
|
||||
1003 На пуговицах 10
|
||||
1004 Ar spiedpogām 7
|
||||
1004 Snap buttons 9
|
||||
1004 На кнопках 10
|
||||
1005 Sasienams 7
|
||||
1005 Tie closure 9
|
||||
1005 На завязках 10
|
||||
1100 Apdruka / Raksts 7
|
||||
1100 Pattern / Print 9
|
||||
1100 Принт / Рисунок 10
|
||||
1101 Vienkrāsains 7
|
||||
1101 Solid color 9
|
||||
1101 Однотонный 10
|
||||
1102 Ar grafisku apdruku 7
|
||||
1102 Graphic print 9
|
||||
1102 С графическим принтом 10
|
||||
1103 Svītrains 7
|
||||
1103 Striped 9
|
||||
1103 В полоску 10
|
||||
1104 Rūtots 7
|
||||
1104 Checked 9
|
||||
1104 В клетку 10
|
||||
1105 Ziedu / Augu motīvi 7
|
||||
1105 Floral 9
|
||||
1105 Цветочный принт 10
|
||||
1106 Dzīvnieku raksts 7
|
||||
1106 Animal print 9
|
||||
1106 Животный принт 10
|
||||
1200 Vidukļa augstums 7
|
||||
1200 Rise / Waist Height 9
|
||||
1200 Посадка талии 10
|
||||
1201 Augstais viduklis 7
|
||||
1201 High Rise 9
|
||||
1201 Высокая посадка 10
|
||||
1202 Standarta viduklis 7
|
||||
1202 Mid Rise 9
|
||||
1202 Средняя посадка 10
|
||||
1203 Zemais viduklis 7
|
||||
1203 Low Rise 9
|
||||
1203 Низкая посадка 10
|
||||
1300 Apģērba garums 7
|
||||
1300 Clothing Length 9
|
||||
1300 Длина изделия 10
|
||||
1301 Mini 7
|
||||
1301 Mini 9
|
||||
1301 Мини 10
|
||||
1302 Midi 7
|
||||
1302 Midi 9
|
||||
1302 Миди 10
|
||||
1303 Maxi 7
|
||||
1303 Maxi 9
|
||||
1303 Макси 10
|
||||
1400 Jostas garums 7
|
||||
1400 Belt Length 9
|
||||
1400 Длина ремня 10
|
||||
1401 80 cm 7
|
||||
1401 80 cm 9
|
||||
1401 80 см 10
|
||||
1402 85 cm 7
|
||||
1402 85 cm 9
|
||||
1402 85 см 10
|
||||
1403 90 cm 7
|
||||
1403 90 cm 9
|
||||
1403 90 см 10
|
||||
1404 95 cm 7
|
||||
1404 95 cm 9
|
||||
1404 95 см 10
|
||||
1405 100 cm 7
|
||||
1405 100 cm 9
|
||||
1405 100 см 10
|
||||
1406 105 cm 7
|
||||
1406 105 cm 9
|
||||
1406 105 см 10
|
||||
1407 110 cm 7
|
||||
1407 110 cm 9
|
||||
1407 110 см 10
|
||||
1408 115 cm 7
|
||||
1408 115 cm 9
|
||||
1408 115 см 10
|
||||
1500 Somas veids 7
|
||||
1500 Bag Type 9
|
||||
1500 Тип сумки 10
|
||||
1501 Mugursoma 7
|
||||
1501 Backpack 9
|
||||
1501 Рюкзак 10
|
||||
1502 Pleca soma 7
|
||||
1502 Tote bag 9
|
||||
1502 Сумка тоут 10
|
||||
1503 Rokas soma 7
|
||||
1503 Handbag 9
|
||||
1503 Сумка в руку 10
|
||||
1504 Šķērsām pār plecu 7
|
||||
1504 Crossbody bag 9
|
||||
1504 Сумка через плечо 10
|
||||
1505 Mugursoma datoram 7
|
||||
1505 Laptop backpack 9
|
||||
1505 Рюкзак для ноутбука 10
|
||||
1506 Jostas soma 7
|
||||
1506 Waist bag 9
|
||||
1506 Поясная сумка 10
|
||||
1507 Ceļojumu soma 7
|
||||
1507 Travel bag 9
|
||||
1507 Дорожная сумка 10
|
||||
1600 Maka veids 7
|
||||
1600 Wallet Type 9
|
||||
1600 Тип кошелька 10
|
||||
1601 Klasiskais maks 7
|
||||
1601 Classic wallet 9
|
||||
1601 Классический кошелек 10
|
||||
1602 Karšu maciņš 7
|
||||
1602 Cardholder 9
|
||||
1602 Картхолдер 10
|
||||
1603 Maks ar rāvējslēdzēju 7
|
||||
1603 Zip-around wallet 9
|
||||
1603 Кошелек на молнии 10
|
||||
1604 Monētu maks 7
|
||||
1604 Coin purse 9
|
||||
1604 Монетница 10
|
||||
1700 Aromāts 7
|
||||
1700 Scent Profile 9
|
||||
1700 Аромат 10
|
||||
1701 Koksnes 7
|
||||
1701 Woody 9
|
||||
1701 Древесный 10
|
||||
1702 Salds / Eksotisks 7
|
||||
1702 Sweet / Exotic 9
|
||||
1702 Сладкий / Экзотический 10
|
||||
1703 Ziedu 7
|
||||
1703 Floral 9
|
||||
1703 Цветочный 10
|
||||
1704 Svaigs / Zāles 7
|
||||
1704 Fresh / Herbal 9
|
||||
1704 Свежий / Травяной 10
|
||||
1705 Citrusaugļu 7
|
||||
1705 Citrus 9
|
||||
1705 Цитрусовый 10
|
||||
1706 Rūgts / Sārs 7
|
||||
1706 Bitter / Tart 9
|
||||
1706 Горький / Терпкий 10
|
||||
1707 Bez aromāta 7
|
||||
1707 Unscented 9
|
||||
1707 Без аромата 10
|
||||
1800 Galvenā sastāvdaļa 7
|
||||
1800 Main Ingredient 9
|
||||
1800 Основной компонент 10
|
||||
1801 Palo Santo 7
|
||||
1801 Palo Santo 9
|
||||
1801 Пало Санто 10
|
||||
1802 Sandalkoks 7
|
||||
1802 Sandalwood 9
|
||||
1802 Сандаловое дерево 10
|
||||
1803 Baltā salvija 7
|
||||
1803 White Sage 9
|
||||
1803 Белый шалфей 10
|
||||
1804 Lavanda 7
|
||||
1804 Lavender 9
|
||||
1804 Лаванда 10
|
||||
1805 Jasmīns 7
|
||||
1805 Jasmine 9
|
||||
1805 Жасмин 10
|
||||
1806 Roze 7
|
||||
1806 Rose 9
|
||||
1806 Роза 10
|
||||
1807 Frankincense (Olibāns) 7
|
||||
1807 Frankincense 9
|
||||
1807 Ладан 10
|
||||
1808 Mirra 7
|
||||
1808 Myrrh 9
|
||||
1808 Мирра 10
|
||||
1809 Kanēlis 7
|
||||
1809 Cinnamon 9
|
||||
1809 Корица 10
|
||||
1810 Pačūlija 7
|
||||
1810 Patchouli 9
|
||||
1810 Пачули 10
|
||||
1811 Ciedrs 7
|
||||
1811 Cedar 9
|
||||
1811 Кедр 10
|
||||
1900 Nolūks / Efekts 7
|
||||
1900 Intent / Benefit 9
|
||||
1900 Энергетика / Назначение 10
|
||||
1901 Telpas attīrīšana 7
|
||||
1901 Space cleansing 9
|
||||
1901 Очищение пространства 10
|
||||
1902 Meditācija & Joga 7
|
||||
1902 Meditation & Yoga 9
|
||||
1902 Медитация и йога 10
|
||||
1903 Miers & Stresa mazināšana 7
|
||||
1903 Peace & Stress relief 9
|
||||
1903 Успокоение и антистресс 10
|
||||
1904 Enerģija & Fokuss 7
|
||||
1904 Energy & Focus 9
|
||||
1904 Энергия и фокус 10
|
||||
1905 Aizsardzība 7
|
||||
1905 Protection 9
|
||||
1905 Защита 10
|
||||
1906 Mīlestība & Harmonija 7
|
||||
1906 Love & Harmony 9
|
||||
1906 Любовь и гармония 10
|
||||
1907 Miegs & Relaksācija 7
|
||||
1907 Sleep & Relaxation 9
|
||||
1907 Сон и релаксация 10
|
||||
2000 Svars / Iepakojums 7
|
||||
2000 Weight / Package 9
|
||||
2000 Вес / Количество 10
|
||||
2001 1 gab. 7
|
||||
2001 1 pc. 9
|
||||
2001 1 шт. 10
|
||||
2002 3-5 gab. (komplekts) 7
|
||||
2002 3-5 pcs. (set) 9
|
||||
2002 3-5 шт. (комплект) 10
|
||||
2003 10-12 gab. (paciņa) 7
|
||||
2003 10-12 pcs. (pack) 9
|
||||
2003 10-12 шт. (пачка) 10
|
||||
2004 20 gab. (paciņa) 7
|
||||
2004 20 pcs. (pack) 9
|
||||
2004 20 шт. (пачка) 10
|
||||
2005 50g 7
|
||||
2005 50g 9
|
||||
2005 50г 10
|
||||
2006 100g 7
|
||||
2006 100g 9
|
||||
2006 100г 10
|
||||
2007 250g 7
|
||||
2007 250g 9
|
||||
2007 250г 10
|
||||
2100 Trauka materiāls 7
|
||||
2100 Burner Material 9
|
||||
2100 Материал подставки 10
|
||||
2101 Keramika 7
|
||||
2101 Ceramics 9
|
||||
2101 Керамика 10
|
||||
2102 Koks 7
|
||||
2102 Wood 9
|
||||
2102 Дерево 10
|
||||
2103 Akmens 7
|
||||
2103 Stone 9
|
||||
2103 Камень 10
|
||||
2104 Misiņš 7
|
||||
2104 Brass 9
|
||||
2104 Латунь 10
|
||||
2105 Metāls 7
|
||||
2105 Metal 9
|
||||
2105 Металл 10
|
||||
2106 Karstumizturīgs stikls 7
|
||||
2106 Heat-resistant glass 9
|
||||
2106 Термостойкое стекло 10
|
||||
2200 Rotaslietas tips 7
|
||||
2200 Jewelry Type 9
|
||||
2200 Тип украшения 10
|
||||
2201 Kaklarota 7
|
||||
2201 Necklace 9
|
||||
2201 Ожерелье 10
|
||||
2202 Rokassprādze 7
|
||||
2202 Bracelet 9
|
||||
2202 Браслет 10
|
||||
2203 Auskari 7
|
||||
2203 Earnings 9
|
||||
2203 Серьги 10
|
||||
2204 Gredzens 7
|
||||
2204 Ring 9
|
||||
2204 Кольцо 10
|
||||
2205 Kulons 7
|
||||
2205 Pendant 9
|
||||
2205 Кулон 10
|
||||
2206 Dāvanu komplekts 7
|
||||
2206 Gift set 9
|
||||
2206 Подарочный набор 10
|
||||
2300 Bāzes metāls 7
|
||||
2300 Base Metal 9
|
||||
2300 Основной металл 10
|
||||
2301 Sudrabs 925 7
|
||||
2301 Sterling Silver 925 9
|
||||
2301 Серебро 925 10
|
||||
2302 Medicīniskais tērauds 7
|
||||
2302 Stainless Steel 9
|
||||
2302 Медицинская сталь 10
|
||||
2303 Misiņš 7
|
||||
2303 Brass 9
|
||||
2303 Латунь 10
|
||||
2304 Varš 7
|
||||
2304 Copper 9
|
||||
2304 Медь 10
|
||||
2400 Pārklājums 7
|
||||
2400 Plating Type 9
|
||||
2400 Покрытие 10
|
||||
2401 18k Dzeltens zelts 7
|
||||
2401 18k Yellow Gold 9
|
||||
2401 18к Желтое золото 10
|
||||
2402 24k Dzeltens zelts 7
|
||||
2402 24k Yellow Gold 9
|
||||
2402 24к Желтое золото 10
|
||||
2403 Rozā zelts 7
|
||||
2403 Rose Gold 9
|
||||
2403 Розовое золото 10
|
||||
2404 Rodijs 7
|
||||
2404 Rhodium 9
|
||||
2404 Родий 10
|
||||
2405 Bez pārklājuma 7
|
||||
2405 Unplated 9
|
||||
2405 Без покрытия 10
|
||||
2500 Kristāls / Akmens 7
|
||||
2500 Gemstone / Crystal 9
|
||||
2500 Камень / Кристалл 10
|
||||
2501 Bez akmens 7
|
||||
2501 No stone 9
|
||||
2501 Без камня 10
|
||||
2502 Ametists 7
|
||||
2502 Amethyst 9
|
||||
2502 Аметист 10
|
||||
2503 Rozā kvarcs 7
|
||||
2503 Rose Quartz 9
|
||||
2503 Розовый кварц 10
|
||||
2504 Kalnu kristāls 7
|
||||
2504 Clear Quartz 9
|
||||
2504 Горный хрусталь 10
|
||||
2505 Melnais turmalīns 7
|
||||
2505 Black Tourmaline 9
|
||||
2505 Черный турмалин 10
|
||||
2506 Citrīns 7
|
||||
2506 Citrine 9
|
||||
2506 Цитрин 10
|
||||
2507 Nefrīts 7
|
||||
2507 Jade 9
|
||||
2507 Нефрит 10
|
||||
2508 Lapis Lazuli 7
|
||||
2508 Lapis Lazuli 9
|
||||
2508 Лазурит 10
|
||||
2509 Tīģeracs 7
|
||||
2509 Tiger Eye 9
|
||||
2509 Тигровый глаз 10
|
||||
2510 Mēnessakmens 7
|
||||
2510 Moonstone 9
|
||||
2510 Лунный камень 10
|
||||
2511 Labradorīts 7
|
||||
2511 Labradorite 9
|
||||
2511 Лабрадорит 10
|
||||
2512 Obsidiāns 7
|
||||
2512 Obsidian 9
|
||||
2512 Обсидиан 10
|
||||
2600 Gredzena izmērs 7
|
||||
2600 Ring Size 9
|
||||
2600 Размер кольца 10
|
||||
2601 Regulējams 7
|
||||
2601 Adjustable 9
|
||||
2601 Регулируемый 10
|
||||
2602 15 7
|
||||
2602 15 9
|
||||
2602 15 10
|
||||
2603 16 7
|
||||
2603 16 9
|
||||
2603 16 10
|
||||
2604 16.5 7
|
||||
2604 16.5 9
|
||||
2604 16.5 10
|
||||
2605 17 7
|
||||
2605 17 9
|
||||
2605 17 10
|
||||
2606 17.5 7
|
||||
2606 17.5 9
|
||||
2606 17.5 10
|
||||
2607 18 7
|
||||
2607 18 9
|
||||
2607 18 10
|
||||
2608 18.5 7
|
||||
2608 18.5 9
|
||||
2608 18.5 10
|
||||
2609 19 7
|
||||
2609 19 9
|
||||
2609 19 10
|
||||
2610 20 7
|
||||
2610 20 9
|
||||
2610 20 10
|
||||
2700 Rotas garums 7
|
||||
2700 Jewelry Length 9
|
||||
2700 Длина украшения 10
|
||||
2701 Regulējams 7
|
||||
2701 Adjustable 9
|
||||
2701 Регулируемый 10
|
||||
2702 16 cm 7
|
||||
2702 16 cm 9
|
||||
2702 16 см 10
|
||||
2703 18 cm 7
|
||||
2703 18 cm 9
|
||||
2703 18 см 10
|
||||
2704 20 cm 7
|
||||
2704 20 cm 9
|
||||
2704 20 см 10
|
||||
2705 40 cm 7
|
||||
2705 40 cm 9
|
||||
2705 40 см 10
|
||||
2706 45 cm 7
|
||||
2706 45 cm 9
|
||||
2706 45 см 10
|
||||
2707 50 cm 7
|
||||
2707 50 cm 9
|
||||
2707 50 см 10
|
||||
2708 60 cm 7
|
||||
2708 60 cm 9
|
||||
2708 60 см 10
|
||||
3 Zils 7
|
||||
3 blue 9
|
||||
3 10
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
1 Full name asd@asd.lv +371 23423423424 SOme randome message including html tags like <div> and <span> and broken elements like < diiv> 172.20.0.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1781771700 1781771700
|
||||
2 Aivars Žukovskis aivars7.zukovskis@gmail.com +37126572346 asd 172.20.0.1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1784133673 1784133673
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
1 26070001 1784290837 aivars7.zukovskis@gmail.com 1450 1454 {"sh_and_py":{"shipping_method":1454,"payment_method":1450},"confirmation":{"agree_to_terms":"1"},"customer_info":{"checkout_email":"aivars7.zukovskis@gmail.com"},"shipping_address":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1028"},"delivery_info":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1028"},"delivery_same_as_bill":true} 0 0 \N 0 0 0 1784290837
|
||||
2 26070002 1784293140 aivars7.zukovskis@gmail.com 1450 1454 {"sh_and_py":{"shipping_method":1454,"payment_method":1450},"confirmation":{"subscribe":"0","agree_to_terms":"1"},"customer_info":{"checkout_email":"aivars7.zukovskis@gmail.com"},"shipping_address":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"address 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_info":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"address 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_same_as_bill":true,"check-note":"Gribu t\\u016bl\\u012bt un tagad"} 0 0 \N 0 0 0 1784293140
|
||||
3 26070003 1784293375 aivars7.zukovskis@gmail.com 1450 1454 {"sh_and_py":{"shipping_method":1454,"payment_method":1450},"confirmation":{"subscribe":"0","agree_to_terms":"1"},"customer_info":{"checkout_email":"aivars7.zukovskis@gmail.com"},"shipping_address":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"address 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_info":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"address 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_same_as_bill":true,"check-note":"Please arrange the delivery as soon as possible, please leave the box on the porch behind the planter."} 0 0 \N 0 0 0 1784293375
|
||||
4 26070004 1784293429 aivars7.zukovskis@gmail.com 1450 1453 {"sh_and_py":{"shipping_method":1453,"payment_method":1450},"confirmation":{"subscribe":"0","agree_to_terms":"1"},"customer_info":{"checkout_email":"aivars7.zukovskis@gmail.com"},"shipping_address":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"address 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_info":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"address 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_same_as_bill":true,"check-note":"Strange..."} 0 0 \N 1 0 0 1784293429
|
||||
10 26070016 1785438860 aivars7.zukovskis@gmail.com 1450 1453 {"sh_and_py":{"shipping_method":1453,"payment_method":1450},"confirmation":{"subscribe":"0","agree_to_terms":"1"},"customer_info":{"checkout_email":"aivars7.zukovskis@gmail.com"},"shipping_address":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"adrese 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_info":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"adrese 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_same_as_bill":true,"check-note":"L\\u016bdzu iesai\\u0146ot d\\u0101vanai."} 0 0 2 0 0 0 1785438860
|
||||
11 26070005 1785479835 aivars7.zukovskis@gmail.com 1450 1453 {"sh_and_py":{"shipping_method":1453,"payment_method":1450},"confirmation":{"subscribe":"0","agree_to_terms":"1"},"customer_info":{"checkout_email":"aivars7.zukovskis@gmail.com"},"shipping_address":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"adrese 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_info":{"checkout_first_name":"Aivars \\u017dukovskis","checkout_last_name":"\\u017dukovskis","checkout_email":"aivars7.zukovskis@gmail.com","checkout_phone":"+37126572346","checkout_address1":"P.leji\\u0146a 20","checkout_address2":"adrese 2","checkout_country":"LV","checkout_city":"R\\u012bga","checkout_zip":"1029"},"delivery_same_as_bill":true,"check-note":"Please arrange the delivery as soon as possible, please leave the box on the porch behind the planter."} 0 0 0 0 0 0 1785479835
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
3 0 Aivars Žukovskis Žukovskis +37126572346 P.lejiņa 20 address 2 Rīga LV 1029
|
||||
3 1 Aivars Žukovskis Žukovskis +37126572346 P.lejiņa 20 address 2 Rīga LV 1029
|
||||
4 0 Aivars Žukovskis Žukovskis +37126572346 P.lejiņa 20 address 2 Rīga LV 1029
|
||||
4 1 Aivars Žukovskis Žukovskis +37126572346 P.lejiņa 20 address 2 Rīga LV 1029
|
||||
10 0 Aivars Žukovskis Žukovskis +37126572346 P.lejiņa 20 adrese 2 Rīga LV 1029
|
||||
10 1 Aivars Žukovskis Žukovskis +37126572346 P.lejiņa 20 adrese 2 Rīga LV 1029
|
||||
11 0 Aivars Žukovskis Žukovskis +37126572346 P.lejiņa 20 adrese 2 Rīga LV 1029
|
||||
11 1 Aivars Žukovskis Žukovskis +37126572346 P.lejiņa 20 adrese 2 Rīga LV 1029
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
3 8 14 69.99 1 102 0
|
||||
4 5 4 234 1 201 0
|
||||
10 6 6 89.1 1 3 401
|
||||
11 1 11 79.78 1 102 405
|
||||
11 5 4 234 1 201 0
|
||||
11 6 20 2.7 2 115 405
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
1 1232704260001 0 0 0 100 10000 0 0 0 0 1777291888 1 1783945052 1 0 0 0 1
|
||||
2 1232704260002 0 0 0 100 10000 23 0 0 0 1777292750 1 1783945140 1 0 0 0 1
|
||||
3 1012506260003 0 0 0 100 10000 3 0 0 0 1782391552 1 1785479737 1 0 10 0 1
|
||||
4 1230107260004 0 0 0 100 10000 0 0 0 0 1782899481 1 1783946168 1 0 0 0 1
|
||||
5 3430107260005 0 0 0 100 10000 0 0 0 0 1782916269 1 1783945737 1 0 0 0 1
|
||||
6 1230207260006 0 0 0 100 10000 1 0 0 0 1783019298 1 1784551225 1 0 10 1 1
|
||||
7 1240307260007 0 0 0 100 10000 1 0 0 0 1783684345 1 1784534079 1 0 0 0 1
|
||||
8 1231307260008 0 0 0 100 10000 10 0 0 0 1783946246 1 1785479736 1 0 123 0 1
|
||||
9 1232007260009 0 0 0 100 10000 1 0 0 0 1784535337 1 1784535337 1 0 1 0 1
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
1 /files/products/2026-07/9145cb06f972578618b10dcda081163046665423.png Gemini_Generated_Image_sawrzpsawrzpsawr 1 0
|
||||
2 /files/products/2026-07/f8ea33a8eedb25a3dad9db377483ef00c70a9c76.png Gemini_Generated_Image_hitq8phitq8phitq 1 0
|
||||
3 /files/products/2026-07/dcd57bd37b3a8393bb3ba840edc72e0ce80e659c.png Gemini_Generated_Image_7r3j9f7r3j9f7r3j 1 0
|
||||
5 /files/products/2026-07/acfefa90b8bdfc24568a4bf3384e9c29acafbf8a.png Gemini_Generated_Image_x6yexrx6yexrx6ye 1 0
|
||||
4 /files/products/2026-07/00807fe3c27c48611bd12eefe31f844b8f81bf48.png 1 0
|
||||
8 /files/products/2026-07/9fa006b48ad35531699cfc26d14a4134188aef4a.png 1 0
|
||||
7 /files/products/2026-07/97df724ee0a248cb7dd625b353cb9a0a5e87c7c8.png 1 0
|
||||
6 /files/products/2026-07/9fa006b48ad35531699cfc26d14a4134188aef4a.png 1 0
|
||||
6 /files/products/2026-07/adb73127ecd3f07603a648d132ec70b1dcd22e44.png 2 0
|
||||
6 /files/products/2026-07/ac9f6eab99c772b3b1aaf2c53824f0d0facc06d3.png 3 0
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
1 7 balts-t-krekls-ar-apdruku-kakis Balts T-krekls ar apdruku: kaķis <p>asdasda</p> balts-t-krekls-ar-apdruku-kakis
|
||||
1 9 asdasd asd asd
|
||||
1 10 asdasd asd asd
|
||||
2 7 product1 Vīriešu t-krekls <div class="product-detail-video section-pt">\
|
||||
<div class="container">\
|
||||
<div class="product-video" data-animate="animate__fadeIn">\
|
||||
<div class="video position-relative">\
|
||||
<div class="video-loader position-absolute w-100 h-100 z-1"></div>\
|
||||
<div class="video-img banner-img position-relative br-hidden"><button type="button" class="video-btn position-absolute top-50 start-50 translate-middle z-1" data-video-id="pOT1T2qSd2M" aria-label="Video button"><span class="banner-video-icon heading-color icon-16 width-80 height-80 d-flex align-items-center justify-content-center body-bg rounded-circle"><i class="ri-play-large-fill d-block lh-1"></i></span></button><img src="../../../../files/products/2026-07/adb73127ecd3f07603a648d132ec70b1dcd22e44.png" class="w-100 img-fluid" alt="video" /></div>\
|
||||
<div class="video-frame position-absolute top-0 start-0 w-100 h-100 br-hidden"></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div> dasd
|
||||
2 9 asdasd asd asd
|
||||
2 10 asdasd asd asd
|
||||
3 7 asd Vīriešu T-krekls zils asd
|
||||
3 9 asd asd asd
|
||||
3 10 asd asd asd
|
||||
5 7 dream-big-viriesu-krekls Dream big vīriešu krekls Dream big vīriešu krekls
|
||||
5 9 asdx asdx asdx
|
||||
5 10 asdx asdx asdx
|
||||
4 7 wondeful-long-sleve-t-shirt Wondeful long Sleve t-shirt asd
|
||||
4 9 asd asd asd
|
||||
4 10 asd asd asd
|
||||
8 7 balts-krekls Balts krekls Balts krekls
|
||||
8 9 balts-krekls Balts krekls Balts krekls
|
||||
8 10 balts-krekls Balts krekls Balts krekls
|
||||
7 7 product-2 Product 2 Product 2
|
||||
7 9 product-2 Product 2 Product 2
|
||||
7 10 product-2 Product 2 Product 2
|
||||
9 7 smarzas-1 Smaržas 1 Smaržas 1
|
||||
9 9 smarzas-1 Smaržas 1 Smaržas 1
|
||||
9 10 smarzas-1 Smaržas 1 Smaržas 1
|
||||
6 7 viriesu-klasiskais-baltais-t-krekls Vīriešu klasiskais baltais kokvilnas t-krekls ar apaļu apkakli <div class="product-detail-tab section-pt">\
|
||||
<div class="container">\
|
||||
<div class="product-tab border-full border-radius" id="collapse-tab-mr4qwd32vxtxy" data-animate="animate__fadeIn">\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#pro-details-desc-tab-mr4qwd32ghc62" aria-expanded="true"><span class="heading-weight">Paplašinātais apraksts</span><span class="tab-icon icon-16"><i class="ri-add-line"></i></span></button>\
|
||||
<div class="collapse show" id="pro-details-desc-tab-mr4qwd32ghc62" data-bs-parent="#collapse-tab-mr4qwd32vxtxy">\
|
||||
<div class="pst-15">\
|
||||
<div class="product-details-desc-info">\
|
||||
<div class="p-mtm20">\
|
||||
<p>Šis klasiskais vīriešu t-krekls ir radīts, apvienojot pārlaicīgu stilu ar ikdienas komfortu. Griezums ir rūpīgi izstrādāts, lai lieliski piegulētu augumam, izceltu plecu līniju un nodrošinātu pilnīgu kustību brīvību. Pateicoties blīvajam, bet elpojošajam audumam, krekls nesagriežas pēc mazgāšanas un ilgstoši saglabā savu sākotnējo sniegbalto toni. Tas ir ideāls pamats jebkurai garderobei – valkā to vienu pašu ar džinsiem vai kā bāzes slāni zem žaketes.</p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#pro-how-to-use-tab-mr4qwd32u3nkq" aria-expanded="false"><span class="heading-weight">Kopšanas un valkāšanas ceļvedis</span></button>\
|
||||
<div class="collapse" id="pro-how-to-use-tab-mr4qwd32u3nkq" data-bs-parent="#collapse-tab-mr4qwd32vxtxy">\
|
||||
<div class="pst-15">\
|
||||
<div class="product-how-to-use-info">\
|
||||
<ul class="ul-mtm-15">\
|
||||
<li><strong data-path-to-node="6,0,0,0" data-index-in-node="0">Mazgāšana:</strong> Mazgāt veļas mašīnā saudzīgā režīmā līdz 40°C temperatūrā kopā ar līdzīgas (baltas) krāsas apģērbiem.</li>\
|
||||
<li><strong data-path-to-node="6,0,1,0" data-index-in-node="0">Gludināšana:</strong> Gludināt vidējā temperatūrā no kreisās puses, lai saglabātu auduma gludumu un struktūru.</li>\
|
||||
<li><strong data-path-to-node="6,0,2,0" data-index-in-node="0">Stilēšana:</strong> Kombinē ar klasiskām čino biksēm viedi ikdienišķam (<i data-path-to-node="6,0,2,0" data-index-in-node="63">smart-casual</i>) tēlam vai ar sporta biksēm brīvdienu komfortam.</li>\
|
||||
</ul>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="collapse-tab ptb-30 plr-15 plr-md-30 bst" data-animate="animate__fadeIn"><button type="button" class="w-100 d-flex align-items-center justify-content-between" data-bs-toggle="collapse" data-bs-target="#pro-key-ingredients-tab-mr4qwd32oxwvf" aria-expanded="false"><span class="heading-weight">Materiāls un īpašības</span></button>\
|
||||
<div class="collapse" id="pro-key-ingredients-tab-mr4qwd32oxwvf" data-bs-parent="#collapse-tab-mr4qwd32vxtxy">\
|
||||
<div class="pst-15">\
|
||||
<div class="product-key-ingredients-info">\
|
||||
<ul class="ul-mtm-15">\
|
||||
<li class="col-12"><strong data-path-to-node="8,0,0,0" data-index-in-node="0">100% Premium ķemmēta kokvilna:</strong> Īpaši mīksta pieskārienam, hipoalerģiska un nodrošina izcilu gaisa cirkulāciju visas dienas garumā.</li>\
|
||||
<li class="col-12"><span class="heading-color heading-weight"><strong data-path-to-node="8,0,1,0" data-index-in-node="0">Pastiprinātas vīles:</strong> Dubultās šuves apkakles un plecu zonā garantē apģērba ilgmūžību un struktūras noturību.</span></li>\
|
||||
<li class="col-12"><span class="heading-color heading-weight"><strong data-path-to-node="8,0,2,0" data-index-in-node="0">Oeko-Tex® sertifikāts:</strong> Apliecina, ka auduma ražošanā nav izmantotas kaitīgas ķīmiskas vielas.</span></li>\
|
||||
</ul>\
|
||||
<div class="product-detail-video section-pt">\
|
||||
<div class="container">\
|
||||
<div class="product-video" data-animate="animate__fadeIn"></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="product-detail-video section-pt">\
|
||||
<div class="container">\
|
||||
<div class="product-video" data-animate="animate__fadeIn">\
|
||||
<div class="video position-relative">\
|
||||
<div class="video-img banner-img position-relative br-hidden"></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<div class="product-detail-video section-pt">\
|
||||
<div class="container">\
|
||||
<div class="product-video" data-animate="animate__fadeIn">\
|
||||
<div class="video position-relative">\
|
||||
<div class="video-img banner-img position-relative br-hidden"><span>Kāpēc šim kreklam jābūt katra vīrieša garderobē?</span></div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
</div>\
|
||||
<section class="product-detail section-pt">\
|
||||
<div class="container">\
|
||||
<div class="product-description" data-animate="animate__fadeIn">\
|
||||
<p><span>Ne visi baltie t-krekli ir radīti vienādi. Šis demo modelis parāda, kā pareizais piegriezums un kvalitatīvs materiāls var acumirklī uzlabot kopējo tēlu.</span></p>\
|
||||
<ul data-path-to-node="16,1">\
|
||||
<li>\
|
||||
<p data-path-to-node="16,1,0,0"><strong data-path-to-node="16,1,0,0" data-index-in-node="0">Uzreiz gatavs tēls:</strong> Nav jātērē laiks domājot – tas piestāv burtiski visam.</p>\
|
||||
</li>\
|
||||
<li>\
|
||||
<p data-path-to-node="16,1,1,0"><strong data-path-to-node="16,1,1,0" data-index-in-node="0">Pārliecība un komforts:</strong> Audums ir pietiekami biezs, lai neizskatītos caurspīdīgs, nodrošinot solīdu un pārliecinātu koptēlu jebkurā situācijā.</p>\
|
||||
</li>\
|
||||
<li>\
|
||||
<p data-path-to-node="16,1,2,0"><strong data-path-to-node="16,1,2,0" data-index-in-node="0">Ilgtermiņa investīcija:</strong> Tas nav vienas sezonas krekliņš. Šis ir apģērbs, kas kalpos un izskatīsies labi arī pēc neskaitāmām mazgāšanas reizēm.</p>\
|
||||
</li>\
|
||||
</ul>\
|
||||
<p data-path-to-node="17"><img src="../../files/products/2026-07/09031e2a265f542fbc4d7b66310a33371cbb0ef2.png" /> </p>\
|
||||
</div>\
|
||||
</div>\
|
||||
</section> Šis ir klasisks un daudzpusīgs vīriešu bāzes t-krekls sniegbaltā krāsā. Izgatavots no augstas kvalitātes, mīkstas kokvilnas auduma, tas nodrošina maksimālu komfortu un elpojamību visas dienas garumā. Kreklam ir taisns, nedaudz pieguļošs griezums un klasiska apaļa apkakle.\
|
||||
\
|
||||
Lieliska izvēle gan ikdienas valkāšanai, gan kā apakškrekls zem džempera vai krekla. Pateicoties vienkāršajam dizainam, to ir viegli kombinēt ar jebkuru apģērbu – sākot no džinsiem un beidzot ar šortiem. Modeļa fit dizains nodrošina glītu izskatu un ērtu kustību brīvību. Nepieciešams elements ikviena vīrieša garderobē. balts t-krekls, vīriešu t-krekls, kokvilnas t-krekls, klasisks krekls, vīriešu apģērbs, krekliņš ar īsām piedurknēm, balts apģērbs, bāzes krekls
|
||||
6 9 asd asd
|
||||
6 10 asd asd
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
1 65
|
||||
2 65
|
||||
3 86
|
||||
5 65
|
||||
5 67
|
||||
4 65
|
||||
4 66
|
||||
8 65
|
||||
8 66
|
||||
7 66
|
||||
9 83
|
||||
6 65
|
||||
6 66
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
1 2 1 3 404 1 0 3 1777292909 1 1777237200 1777292909 1 1777292909 1
|
||||
2 3 2 3 0 10 0 3 1782391552 1 1782334800 1782391552 1 1782391552 1
|
||||
3 3 3 3 0 1 0 3 1782391570 1 1782334800 1782391570 1 1782391570 1
|
||||
4 5 4 201 0 123 0 3 1782916269 1 1782853200 1782916269 1 1782916269 1
|
||||
5 2 5 107 403 1 0 3 1783019096 1 1782939600 1783019096 1 1783019096 1
|
||||
6 6 6 3 401 1 0 3 1783019298 1 1782939600 1783019298 1 1783019298 1
|
||||
7 2 7 3 0 1 0 3 1783019664 1 1782939600 1783019664 1 1783019664 1
|
||||
8 2 8 3 405 1 0 3 1783020025 1 1782939600 1783020025 1 1783020025 1
|
||||
9 2 9 3 0 1 0 3 1783021095 1 1782939600 1783021095 1 1783021095 1
|
||||
10 2 1 3 404 3 0 3 1783022067 1 1782939600 1783022067 1 1783022067 1
|
||||
11 2 7 3 0 1 0 3 1783022067 1 1782939600 1783022067 1 1783022067 1
|
||||
12 7 10 3 405 1 0 3 1783080856 1 1783026000 1783080856 1 1783080856 1
|
||||
13 1 11 102 405 1 0 3 1783328401 1 1783285200 1783328401 1 1783328401 1
|
||||
14 6 6 3 401 3 0 3 1783418112 1 1783371600 1783418112 1 1783418112 1
|
||||
15 6 12 3 402 2 0 3 1783418112 1 1783371600 1783418112 1 1783418112 1
|
||||
16 2 5 107 403 3 0 3 1783945140 1 1783890000 1783945140 1 1783945140 1
|
||||
17 4 13 116 0 1 0 3 1783945455 1 1783890000 1783945455 1 1783945455 1
|
||||
18 8 14 102 402 1 0 3 1783946246 1 1783890000 1783946246 1 1783946246 1
|
||||
19 8 15 101 403 3 0 3 1784533873 1 1784494800 1784533873 1 1784533873 1
|
||||
20 8 17 101 404 3 0 3 1784533934 1 1784494800 1784533934 1 1784533934 1
|
||||
21 8 16 102 403 2 0 3 1784533934 1 1784494800 1784533934 1 1784533934 1
|
||||
22 7 18 201 403 3 0 3 1784534079 1 1784494800 1784534079 1 1784534079 1
|
||||
23 9 19 1702 0 3 0 3 1784535337 1 1784494800 1784535337 1 1784535337 1
|
||||
24 6 20 115 405 3 0 3 1784537098 1 1784494800 1784537098 1 1784537098 1
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
1 2 3 404 0 1 1 1
|
||||
2 3 3 0 0 12.99 7.99 0
|
||||
3 3 3 0 0 3 1.99 1
|
||||
4 5 201 0 0 123 234 0
|
||||
5 2 107 403 3 123 123 0
|
||||
6 6 3 401 0 1 99 0
|
||||
7 2 3 0 0 2 2 1
|
||||
8 2 3 405 0 1 50 0
|
||||
9 2 3 0 0 1 3 1
|
||||
10 7 3 405 0 17 19 0
|
||||
11 1 102 405 0 29.99 79.78 0
|
||||
12 6 3 402 0 3 33 0
|
||||
13 4 116 0 0 17 39.79 0
|
||||
14 8 102 402 0 29.99 69.99 0
|
||||
15 8 101 403 0 30 78.88 0
|
||||
16 8 102 403 2 29.99 66.73 0
|
||||
17 8 101 404 3 29.99 65.55 0
|
||||
18 7 201 403 3 1 12 0
|
||||
19 9 1702 0 3 3 13 0
|
||||
20 6 115 405 0 3 3 0
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
1 1454
|
||||
1 1453
|
||||
2 1454
|
||||
2 1453
|
||||
2 1452
|
||||
3 1454
|
||||
3 1453
|
||||
3 1452
|
||||
5 1454
|
||||
5 1453
|
||||
4 1454
|
||||
4 1453
|
||||
8 1454
|
||||
7 1454
|
||||
9 1454
|
||||
6 1454
|
||||
6 1453
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
1 1451
|
||||
1 1450
|
||||
2 1451
|
||||
2 1450
|
||||
3 1451
|
||||
3 1450
|
||||
5 1451
|
||||
5 1450
|
||||
4 1451
|
||||
4 1450
|
||||
8 1451
|
||||
8 1450
|
||||
7 1451
|
||||
9 1451
|
||||
9 1450
|
||||
6 1451
|
||||
6 1450
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
1 SEQ_PARTNER_CODE 2191
|
||||
2 SEQ_PRODUCT_NUMBER 10
|
||||
3 SEQ_BILL_NUMBER 17
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
1 asdasdasdas asdasdasdasd asd@asd.lv asd@asd.lv 234 $2y$11$LJgMB7A2Mud4fwtl0ZfZYeI9cWTjjKSd1Ngt48K8cgOUI6VD4hfF2 7 172.20.0.1 1785481498 /lietotaja-profils a:5:{s:5:"bools";a:3:{s:11:"bFullScreen";i:1;s:12:"bUseDarkMode";i:0;s:14:"bShowBtnLabels";i:1;}s:6:"tables";a:21:{s:17:"pubLursoftDataReq";a:0:{}s:14:"pubUserManager";a:0:{}s:14:"pubTransaction";a:0:{}s:11:"pubPartners";a:0:{}s:10:"pubObjects";a:0:{}s:10:"pubBalance";a:0:{}s:7:"pubBugs";a:0:{}s:13:"pubRoutePages";a:0:{}s:15:"pubIncDocuments";a:0:{}s:12:"pubDocuments";a:0:{}s:17:"pubTimeAccounting";a:0:{}s:17:"pubClassificators";a:0:{}s:15:"pubAccountingCl";a:0:{}s:13:"pubAccounting";a:0:{}s:19:"pubVisitorsRegister";a:0:{}s:31:"pubApartmentsMetersMeasurements";a:0:{}s:19:"pubApartmentsMeters";a:0:{}s:22:"pubClassificatorsTypes";a:0:{}s:25:"pubClassificatorsProjects";a:0:{}s:26:"pubClassificatorsContracts";a:0:{}s:27:"pubClassificatorsTransports";a:0:{}}s:7:"plugins";a:0:{}s:6:"values";a:3:{s:15:"iRecordsPerPage";i:20;s:11:"iActiveYear";a:0:{}s:20:"vFavoriteCompanyList";a:0:{}}s:10:"values_adv";a:4:{s:13:"vDashboardCFG";a:0:{}s:20:"vAdditionalTableData";a:0:{}s:12:"vProfileData";a:2:{s:10:"birth_date";s:10:"2009-01-02";s:6:"gender";s:0:"";}s:12:"vAddressBook";a:3:{i:0;a:17:{s:2:"id";s:16:"f28d3a0463e8bab1";s:5:"label";s:6:"mājaa";s:10:"first_name";s:6:"Aivars";s:9:"last_name";s:10:"Žukovskis";s:7:"company";s:8:"SIA Shio";s:5:"phone";s:8:"26572346";s:8:"address1";s:12:"P.lejiņa 20";s:8:"address2";s:8:"adrese 2";s:4:"city";s:5:"Rīga";s:5:"state";s:0:"";s:7:"country";s:6:"Latvia";s:3:"zip";s:4:"1029";s:4:"type";s:4:"both";s:19:"is_default_shipping";i:1;s:18:"is_default_billing";i:0;s:10:"created_at";i:1784719331;s:10:"updated_at";i:1784737071;}i:1;a:17:{s:2:"id";s:16:"3614234d9cdd7b1a";s:5:"label";s:4:"test";s:10:"first_name";s:3:"asd";s:9:"last_name";s:3:"asd";s:7:"company";s:3:"asd";s:5:"phone";s:10:"2343242342";s:8:"address1";s:3:"asd";s:8:"address2";s:3:"asd";s:4:"city";s:3:"asd";s:5:"state";s:3:"asd";s:7:"country";s:3:"asd";s:3:"zip";s:3:"asd";s:4:"type";s:7:"billing";s:19:"is_default_shipping";i:0;s:18:"is_default_billing";i:1;s:10:"created_at";i:1784737104;s:10:"updated_at";i:1785362823;}i:2;a:17:{s:2:"id";s:16:"fa00d1d4d887c644";s:5:"label";s:3:"xxx";s:10:"first_name";s:4:"aaaa";s:9:"last_name";s:4:"aaaa";s:7:"company";s:8:"SIA Shio";s:5:"phone";s:8:"26572346";s:8:"address1";s:12:"P.lejiņa 20";s:8:"address2";s:8:"adrese 2";s:4:"city";s:5:"Rīga";s:5:"state";s:4:"aaaa";s:7:"country";s:6:"Latvia";s:3:"zip";s:4:"1029";s:4:"type";s:4:"both";s:19:"is_default_shipping";i:0;s:18:"is_default_billing";i:0;s:10:"created_at";i:1784889927;s:10:"updated_at";i:1784889927;}}}} 0 1784069345 1785225256 1 0 0 0 1785370699 $2y$11$bL2j/eQy32gday2vERU6p.yNTB2DgSQ1X76kq2XWM4ulbCLBbxCRW -1 0
|
||||
9 Aivars Žukovskis test@tt.lv test@tt.lv $2y$11$zDmBkeU5T1ecx6iN0NUwFeZpxopDepWgRR0ngSPGzRgKVoCeMYVQy 7 172.20.0.1 1785445990 /lietotaja-profils 0 1785441553 1785441553 1 0 0 0 0 0 0
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
1 asd@asd.lv 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1781615275 1785479685
|
||||
2 asd@xxx.lv 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1781615586 1781690485
|
||||
3 xxx@asd.lc 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1781694045 1781694045
|
||||
4 xx@asd.lv 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1781694055 1781694055
|
||||
5 asd@ax.lv 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1781694721 1781694721
|
||||
6 aivars7.zukovskis@gmail.com 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1782460841 1784109698
|
||||
7 asd@E.xasd 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1783411311 1783411311
|
||||
8 sdfs@asd.lv 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 1783411319 1783411319
|
||||
9 asd@sd.lv 1 172.20.0.1 7 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1784760655 1784760655
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
25 9 7 1785446205
|
||||
29 1 3 1785482260
|
||||
30 1 2 1785482833
|
||||
32 1 1 1785483025
|
||||
|
|
@ -0,0 +1,620 @@
|
|||
3986 No result data found, please check your filter and try again!
|
||||
3987 Menus
|
||||
3988
|
||||
3989 Yes
|
||||
3990 No
|
||||
3991 Delete menus?
|
||||
3992 Selected menus will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
3993 Delete selected menus
|
||||
3994 Cancel operation
|
||||
3995 Please fill in the field!
|
||||
3996 MSG_LOGO_TITLE
|
||||
3997 Logout
|
||||
3998 My profile ...
|
||||
3999 Session will expire in:
|
||||
4000 Session has expired! Time left:
|
||||
4001 APP
|
||||
4002 GOOGLE_ANALYTICS_CODE
|
||||
4003 System menus
|
||||
4004 Select
|
||||
4005 Active
|
||||
4006 Inactive
|
||||
4007 ID
|
||||
4008 Menu title
|
||||
4009 Description
|
||||
4010 Blocked
|
||||
4011 Actions
|
||||
4012 Edit
|
||||
4013 Delete
|
||||
4014 Add new
|
||||
4015 Change item status
|
||||
4016 Delete selected
|
||||
4017 + Add new
|
||||
4018 records from
|
||||
4019 Table search
|
||||
4020 Search
|
||||
4021 Clear search
|
||||
4022 Languages
|
||||
4023 Delete languages?
|
||||
4024 Selected languages will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4025 Delete selected languages
|
||||
4026 System Languages
|
||||
4027 Language
|
||||
4028 Country
|
||||
4029 Code
|
||||
4030 Order
|
||||
4031 Type
|
||||
4032 Default
|
||||
4033 CMS Enabled
|
||||
4034 User Management
|
||||
4035 Min password length is 6 symbols!
|
||||
4036 Passwords must match!
|
||||
4037 Delete system user?
|
||||
4038 Selected users will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4039 Delete selected users
|
||||
4040 Create QR code
|
||||
4041 Create code
|
||||
4042 Not a valid email address specified!
|
||||
4043 Fields do not match!
|
||||
4044 Qr code
|
||||
4045 Secret key
|
||||
4046 Issue
|
||||
4047 User
|
||||
4048 User name
|
||||
4049 User surname
|
||||
4050 User login
|
||||
4051 Last login
|
||||
4052 User email
|
||||
4053 2FA
|
||||
4054 User IP
|
||||
4055 Users last location
|
||||
4056 Clone user
|
||||
4057 Login
|
||||
4058 Passed site map doesn't exist!
|
||||
4059 Save
|
||||
4060 LORETTA SECRET
|
||||
4061 BRSystems IT Solutions
|
||||
4062 Username
|
||||
4063 Password
|
||||
4064 Sign in
|
||||
4065 Two-factor authentication
|
||||
4066 Enter the two-factor authentication code provided by the Google Authenticator app
|
||||
4067 Back to login
|
||||
4068 Welcome
|
||||
4069 Site Map
|
||||
4070 Module content
|
||||
4071 APP Users
|
||||
4072 Manage
|
||||
4073 Cms users
|
||||
4074 Site base
|
||||
4075 Apc overview
|
||||
4076 Cms messages
|
||||
4077 App messages
|
||||
4078 Action Log
|
||||
4079 Permission groups
|
||||
4080 Permissions
|
||||
4081 IP Filter
|
||||
4082 Classificators
|
||||
4083 Pub Messages
|
||||
4084 Pub email subscribtions
|
||||
4085 Mail Constructor
|
||||
4086 Text manager
|
||||
4087 Outgoing mails
|
||||
4088 Sent mails
|
||||
4089 User Managament
|
||||
4090 User Permissions
|
||||
4091 User Permissions Group
|
||||
4092 System site map
|
||||
4093 App site map
|
||||
4094 Site modules
|
||||
4095 Total APP users
|
||||
4096 Total Accounts
|
||||
4097 Inquiries received
|
||||
4098 Subscriptions
|
||||
4099 Users online
|
||||
4100 January
|
||||
4101 February
|
||||
4102 March
|
||||
4103 April
|
||||
4104 May
|
||||
4105 June
|
||||
4106 July
|
||||
4107 August
|
||||
4108 September
|
||||
4109 October
|
||||
4110 November
|
||||
4111 December
|
||||
4112 Dashboard
|
||||
4113 Date / Time
|
||||
4114 Refresh rate
|
||||
4115 Read more...
|
||||
4116 WEB Users ONLINE by day
|
||||
4117 WEB Users ONLINE by month
|
||||
4118 APP System Users ONLINE by day
|
||||
4119 APP System Users ONLINE by month
|
||||
4120 CMS System Users ONLINE by day
|
||||
4121 CMS System Users ONLINE by month
|
||||
4122 Recent activity
|
||||
4123 Time
|
||||
4124 Message
|
||||
4125 Delete classificators?
|
||||
4126 Selected classificators will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4127 Delete selected classificators
|
||||
4128 Delete All C_ADDRESS classificators?
|
||||
4129 All C_ADDRESS classificators will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4130 Delete classificators
|
||||
4131 CMS Classificators
|
||||
4132 -- Select --
|
||||
4133 Classificator title
|
||||
4134 Delete article?
|
||||
4135 Selected article will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4136 Delete selected article
|
||||
4137 Click to add
|
||||
4138 NPK
|
||||
4139 Article Title
|
||||
4140 Article created
|
||||
4141 Disabled
|
||||
4142 Add new entry
|
||||
4143 Delete apc cache?
|
||||
4144 Selected keys will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4145 Delete selected keys
|
||||
4146 Clear whole APC cache table
|
||||
4147 Whole APC cache table will be permanently cleared and cannot be recovered. Confirm clear?
|
||||
4148 Clear all
|
||||
4149 Cancel
|
||||
4150 Enabled
|
||||
4151 APC key
|
||||
4152 Inserted
|
||||
4153 Expires
|
||||
4154 Delete whole cache table
|
||||
4155 Disable APC
|
||||
4156 Enable APC
|
||||
4157 Delete Entry?
|
||||
4158 Selected entries will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4159 Delete selected entries
|
||||
4160 Generate site map xml
|
||||
4161 Site map xml generation done!
|
||||
4162 APP New Site Map
|
||||
4163 Site
|
||||
4164 Title
|
||||
4165 Full url
|
||||
4166 /code
|
||||
4167 Parent
|
||||
4168 Ref Id
|
||||
4169 Modified by
|
||||
4170 Created
|
||||
4171 Modified
|
||||
4172 Enable
|
||||
4173 Visible
|
||||
4174 Invisible
|
||||
4175 SiteMap
|
||||
4176 Autocache
|
||||
4177 Clone selected row as new
|
||||
4178 Gen. insert sql
|
||||
4179 Gen. XML's - sitemap | Kurpirkt | Salidzini
|
||||
4180 Minify css
|
||||
4181 Minify js
|
||||
4182 Clear cache
|
||||
4183 Show unused modules
|
||||
4184 Change Administration folder
|
||||
4185 Delete temporary table records from DB
|
||||
4186 SYS New Site Map
|
||||
4187 Created:
|
||||
4188 Modified:
|
||||
4189 Modified by:
|
||||
4190 Copy To All Languages (*Everything*)
|
||||
4191 Add new Page
|
||||
4192 Copy data to all languages
|
||||
4193 Order nr
|
||||
4194 Page title
|
||||
4195 Page url
|
||||
4196 Redirect url
|
||||
4197 Link Options
|
||||
4198 Page enabled
|
||||
4199 Indicates whether page has been enabled
|
||||
4200 Page is visible
|
||||
4201 Page visible
|
||||
4202 Auto cache
|
||||
4203 Automatically create page cache
|
||||
4204 Static Content
|
||||
4205 Create page with text manager
|
||||
4206 Default page
|
||||
4207 Languages base fallback page
|
||||
4208 Request login
|
||||
4209 Request 2FA
|
||||
4210 Two factor authentication
|
||||
4211 404 Page
|
||||
4212 Page is 404 page not found
|
||||
4213 Page is included in siyte map
|
||||
4214 Simple settings
|
||||
4215 Smarty container template
|
||||
4216 Page description
|
||||
4217 Page keywords
|
||||
4218 Enable system Template
|
||||
4219 Edit page content using Text Manager
|
||||
4220 Module settings
|
||||
4221 Load Application modules
|
||||
4222 Module
|
||||
4223 Call Action
|
||||
4224 Load Javascript modules
|
||||
4225 Load Cascade style sheet modules
|
||||
4226 Permissions settings
|
||||
4227 Link in interface permission CMS
|
||||
4228 Menus settings
|
||||
4229 MENUS to load with site map
|
||||
4230 Link site Map to MENUS
|
||||
4231 Edit Page
|
||||
4232 Search for permissions
|
||||
4233 eCommerce
|
||||
4234 e-Commerce
|
||||
4235 Edit menu data
|
||||
4236 Menu name
|
||||
4237 Menu description
|
||||
4238 Menu settings
|
||||
4239 Menu blocked
|
||||
4240 Indicates whether menu is disabled or not
|
||||
4241 Load subchildren
|
||||
4242 Indicates whether to load subchildren or not
|
||||
4243 Menu pub side
|
||||
4244 Indicates whether menu is pub side or not
|
||||
4245 Children to be loaded
|
||||
4246 Search in loadable menus:
|
||||
4247 Check all:
|
||||
4248 No results found, please change the search and try again
|
||||
4249 Add menu filter
|
||||
4250 Search for menus
|
||||
4251 Delete permissions?
|
||||
4252 Selected permissions will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4253 Delete selected permission
|
||||
4254 CMS permissions
|
||||
4255 Permission title
|
||||
4256 Quick add
|
||||
4257 Gen. sql
|
||||
4258 Edit permission data
|
||||
4259 Permission name
|
||||
4260 Permission description
|
||||
4261 Permission type
|
||||
4262 Permission settings
|
||||
4263 Permission blocked
|
||||
4264 Indicates whether permission has been disabled or not
|
||||
4265 Search in groups:
|
||||
4266 Show selected:
|
||||
4267 Add new permission
|
||||
4268 Delete permission group?
|
||||
4269 Selected groups will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4270 Delete selected groups
|
||||
4271 CMS permission groups
|
||||
4272 Group title
|
||||
4273 Edit group data
|
||||
4274 Group name
|
||||
4275 Group description
|
||||
4276 Group settings
|
||||
4277 Group blocked
|
||||
4278 Indicates whether group has been disabled or not
|
||||
4279 Linked permissions
|
||||
4280 Search in permissions:
|
||||
4281 Add new permissions
|
||||
4282 Permission name start
|
||||
4283 ex: 'PUB_START' => PUB_START_XXX / will create NEW/DELETE/ADD/SHOW by default. Will go to group permission title too
|
||||
4284 Permission desc. phrase
|
||||
4285 ex: 'new project' => Permission to XXX in new project / xxx => new/delete etc
|
||||
4286 Additional permissions
|
||||
4287 Can be separated with ',' for more and everything will get to 'uppercase', SINGLE words only, for space use '_'. ex: 'export' => NAME_START_EXPORT
|
||||
4288 PUB permissions
|
||||
4289 Add new group
|
||||
4290 Search for parents
|
||||
4291 Search in Modules:
|
||||
4292 Reload
|
||||
4293 Products
|
||||
4294 Edit user profile
|
||||
4295 Last IP
|
||||
4296 Last location
|
||||
4297 Login name
|
||||
4298 Email
|
||||
4299 CMS Language
|
||||
4300 2FA Security
|
||||
4301 Install the Google Authenticator application on your device for <a target='_blank' href='https://itunes.apple.com/app/google-authenticator/id388497605'>iOS</a> or <a target='_blank' href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2'>Android</a>. Scan barcode with Google Authenticator, if your device has a camera. If your device has no camera, enter account and key manually.
|
||||
4302 Two Factor Authentication for Login
|
||||
4303 Option Enabled
|
||||
4304 Option Disabled
|
||||
4305 User settings
|
||||
4306 User blocked
|
||||
4307 Indicates whether user has acces to system or not
|
||||
4308 Reset 2FA
|
||||
4309 Drop user linked 2fa
|
||||
4310 leftmenu
|
||||
4311 leftmenu_description paragraph...
|
||||
4312 fullTable
|
||||
4313 fullTable_description paragraph...
|
||||
4314 Auto password gen
|
||||
4315 Generates new password for change
|
||||
4316 Password change
|
||||
4317 Request user password change
|
||||
4318 Change user password
|
||||
4319 Auto generated user password - automatically sets password change upon first login!
|
||||
4320 Copy password
|
||||
4321 Copied!
|
||||
4322 New password
|
||||
4323 New password again
|
||||
4324 Manage table fields
|
||||
4325 Manage welcome portlets
|
||||
4326 User permission groups
|
||||
4327 Selected entry will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4328 Delete selected entry
|
||||
4329 Sender
|
||||
4330 Phone
|
||||
4331 subject
|
||||
4332 Delete products?
|
||||
4333 Selected products will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4334 Delete selected products
|
||||
4335 Delete users?
|
||||
4336 Min password lenght is 6 symbols!
|
||||
4337 Name
|
||||
4338 IP
|
||||
4339 Companies
|
||||
4340 Delete mails?
|
||||
4341 Selected mails will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4342 Delete selected mails
|
||||
4343 Outgoing mail overview
|
||||
4344 Read
|
||||
4345 Unread
|
||||
4346 Z18
|
||||
4347 maisonalexandra.lv
|
||||
4348 Mail owner
|
||||
4349 CC owner
|
||||
4350 Date from
|
||||
4351 Date till
|
||||
4352 Sent
|
||||
4353 Att.
|
||||
4354 Priority
|
||||
4355 Attempts
|
||||
4356 Server
|
||||
4357 Send now
|
||||
4358 View
|
||||
4359 Add new mail
|
||||
4360 Disable all
|
||||
4361 Enable all
|
||||
4362 Change item delivery status
|
||||
4363 Template not found!
|
||||
4364 Pub Products
|
||||
4365 Product Nr
|
||||
4366 Product title
|
||||
4367 Disc. enabled
|
||||
4368 Disc. value
|
||||
4369 Linked categories
|
||||
4370 Add discount
|
||||
4371 Disable discounts
|
||||
4372 PUB
|
||||
4373 CMS
|
||||
4374 SYS
|
||||
4375 Module title
|
||||
4376 Module class name
|
||||
4377 Module db name
|
||||
4378 Module type
|
||||
4379 Created by
|
||||
4380 Product Attributes
|
||||
4381 Delete Item?
|
||||
4382 Selected items will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4383 Delete selected items
|
||||
4384 Delete All items?
|
||||
4385 All items will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4386 Delete items
|
||||
4387 CMS Product Attributes
|
||||
4388 Item code/name
|
||||
4389 Item type
|
||||
4390 Global Discount (%)
|
||||
4391 Include blocked products
|
||||
4392 Include discount products
|
||||
4393 Apply only to selected Products
|
||||
4394 Add new product
|
||||
4395 Item created
|
||||
4396 By
|
||||
4397 Item Modified
|
||||
4398 Product nr.
|
||||
4399 Price
|
||||
4400 New Price
|
||||
4401 Discount value
|
||||
4402 Units available
|
||||
4403 Max buy per person
|
||||
4404 Company
|
||||
4405 Count classification
|
||||
4406 Date
|
||||
4407 Delivery settings
|
||||
4408 Description data
|
||||
4409 Edit description with WYSIWYG
|
||||
4410 Content Files
|
||||
4411 Image data
|
||||
4412 Link categories
|
||||
4413 Settings
|
||||
4414 Product is disabled in pub shop
|
||||
4415 Discount enabled
|
||||
4416 Product discount enabled or not
|
||||
4417 Available categories
|
||||
4418 Filter
|
||||
4419 Add all
|
||||
4420 Add
|
||||
4421 Remove
|
||||
4422 Choosen categories
|
||||
4423 Remove all
|
||||
4424 Search in deliveries:
|
||||
4425 Product full title
|
||||
4426 Product url
|
||||
4427 Keywords
|
||||
4428 Product long description
|
||||
4429 Content File url
|
||||
4430 Show checked module
|
||||
4431 Clone mod. from other pages
|
||||
4432 Js
|
||||
4433 Css
|
||||
4434 Count
|
||||
4435 Inc. Price
|
||||
4436 Size/picture
|
||||
4437 Size/picture II
|
||||
4438 Disable
|
||||
4439 Check all
|
||||
4440 Add new row
|
||||
4441 Create articles with WYSIWYG
|
||||
4442 SVG Icon
|
||||
4443 Categories
|
||||
4444 Short desc.
|
||||
4445 Url
|
||||
4446 Button text
|
||||
4447 Article long description
|
||||
4448 Image settings
|
||||
4449 Item Disabled
|
||||
4450 Indicates whether item is Disabled or not
|
||||
4451 Deliveries
|
||||
4452 Delete deliver?
|
||||
4453 Selected deliveries will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4454 Delete selected deliveries
|
||||
4455 Delivery classificators
|
||||
4456 Dev. cost
|
||||
4457 Change delivery status
|
||||
4458 Orders
|
||||
4459 Products sold
|
||||
4460 Inventory Management
|
||||
4461 Add new delivery
|
||||
4462 Delivery cost
|
||||
4463 cms Title
|
||||
4464 Delivery enabled
|
||||
4465 Indicates whether Deliver is enabled or not
|
||||
4466 Delivery default
|
||||
4467 Indicates whether Delivery is default or not
|
||||
4468 Count to classificators
|
||||
4469 Delete record?
|
||||
4470 Selected records will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4471 Delete selected record
|
||||
4472 Product Count 2 Classificators / Orders / Storage
|
||||
4473 Order send
|
||||
4474 Buys module
|
||||
4475 Order deleted
|
||||
4476 Storage module
|
||||
4477 Product partner
|
||||
4478 Clear filter
|
||||
4479 Delivery
|
||||
4480 No data found!
|
||||
4481 CMS Orders
|
||||
4482 Pending
|
||||
4483 Order number
|
||||
4484 Order mail
|
||||
4485 Order date
|
||||
4486 Export .xls
|
||||
4487 Export .pdf
|
||||
4488 Edited
|
||||
4489 Create a new copy
|
||||
4490 Sales
|
||||
4491 Inventory
|
||||
4492 Shipping
|
||||
4493 No data
|
||||
4494 Error when saving data
|
||||
4495 Edit Deliver data
|
||||
4496 Add new Item
|
||||
4497 Item settings
|
||||
4498 Default opened
|
||||
4499 Indicates whether item is opened by default
|
||||
4500 Add new classificator
|
||||
4501 Classificator name
|
||||
4502 Classificator data
|
||||
4503 Classificator type
|
||||
4504 Classificator settings
|
||||
4505 Classificator blocked
|
||||
4506 Indicates whether Classificator is disabled or not
|
||||
4507 Available in filter
|
||||
4508 Edit Item data
|
||||
4509 Edit classificator data
|
||||
4510 Edit product data
|
||||
4511 Link in interface permission PUB
|
||||
4512 Manage your article with WYSIWYG
|
||||
4513 Url segment
|
||||
4514 My profile
|
||||
4515 Edit my profile
|
||||
4516 Activate
|
||||
4517 Deactivate
|
||||
4518 My settings
|
||||
4519 CMS form theme
|
||||
4520 User system variables
|
||||
4521 msg_prop_val_iRecordsPerPage
|
||||
4522 Change my password
|
||||
4523 Old password
|
||||
4524 My permission groups
|
||||
4525 My permissions
|
||||
4526 Edit message data
|
||||
4527 First name
|
||||
4528 Last name
|
||||
4529 Product Count to Classificators / Orders / Storage
|
||||
4530 Url already in use!
|
||||
4531 No active product items
|
||||
4532 No delivery methods selected
|
||||
4533 No payment methods selected
|
||||
4534 Product is disabled
|
||||
4535 Row errors
|
||||
4536 Product error
|
||||
4537 Row error
|
||||
4538 Prod. error
|
||||
4539 Error
|
||||
4540 Error(s)
|
||||
4541 Errors
|
||||
4542 Not a valid number specified!
|
||||
4543 Payment methods
|
||||
4544 Product short description
|
||||
4545 Featured
|
||||
4546 Product is featured or not
|
||||
4547 2FA Login input code error!
|
||||
4548 The username or password is incorrect!
|
||||
4549 Delete translations?
|
||||
4550 Selected translations will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4551 Delete selected translations
|
||||
4552 Clear all public translations?
|
||||
4553 All public translations will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4554 Delete all
|
||||
4555 Cleanup public translations?
|
||||
4556 Will perform cleanup procedure by deleting unused/untranslated messages.
|
||||
4557 Perform cleanup
|
||||
4558 System Public translations
|
||||
4559 Linked pages
|
||||
4560 Records
|
||||
4561 Delete whole translation table
|
||||
4562 Export translation data
|
||||
4563 Import translation data
|
||||
4564 Cleanup unused messages
|
||||
4565 lorettasecret.lv
|
||||
4566 Sent mail overview
|
||||
4567 Page not found
|
||||
4568 Page access error...
|
||||
4569 The page you're looking for is not found!
|
||||
4570 Back to Startpage
|
||||
4571 Invalid telephone specified!
|
||||
4572 Mail title
|
||||
4573 Mail created
|
||||
4574 Mail type
|
||||
4575 Mail HTML content
|
||||
4576 Mail settings
|
||||
4577 Mail blocked
|
||||
4578 Indicates whether mail is blocked or not
|
||||
4579 Edit Mail data
|
||||
4580 To
|
||||
4581 Edit translation data
|
||||
4582 Language translations
|
||||
4583 User phone
|
||||
4584 Reports
|
||||
4585 Available reports
|
||||
4586 Selected reports
|
||||
4587 User is admin
|
||||
4588 Set as primary company user
|
||||
4589 newsletters subscription
|
||||
4590 Indicates whether user is subscribed to zutenis.lv newsletters
|
||||
4591 User activated
|
||||
4592 Indicates whether user is activated
|
||||
4593 Available Companies
|
||||
4594 Selected Companies
|
||||
4595 Something went wrong while saving user data!
|
||||
4596 Preparing data for export...
|
||||
4597 Exporting table data rows %nr%/%nr_max% ...
|
||||
4598 Writing excel file!
|
||||
4599 Export successfully finished without errors!
|
||||
4600 Failed to export data, please contact administrator!
|
||||
4601 Pub subscriptions
|
||||
4602 Subscribed
|
||||
4603 Edit subscribtion email
|
||||
4604 Email subscribed
|
||||
4605 Indicates whether Email is subscribed or not
|
||||
|
|
@ -0,0 +1,620 @@
|
|||
3986 1 No result data found, please check your filter and try again!
|
||||
3987 1 Menus
|
||||
3988 1
|
||||
3989 1 Yes
|
||||
3990 1 No
|
||||
3991 1 Delete menus?
|
||||
3992 1 Selected menus will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
3993 1 Delete selected menus
|
||||
3994 1 Cancel operation
|
||||
3995 1 Please fill in the field!
|
||||
3996 1 MSG_LOGO_TITLE
|
||||
3997 1 Logout
|
||||
3998 1 My profile ...
|
||||
3999 1 Session will expire in:
|
||||
4000 1 Session has expired! Time left:
|
||||
4001 1 APP
|
||||
4002 1 GOOGLE_ANALYTICS_CODE
|
||||
4003 1 System menus
|
||||
4004 1 Select
|
||||
4005 1 Active
|
||||
4006 1 Inactive
|
||||
4007 1 ID
|
||||
4008 1 Menu title
|
||||
4009 1 Description
|
||||
4010 1 Blocked
|
||||
4011 1 Actions
|
||||
4012 1 Edit
|
||||
4013 1 Delete
|
||||
4014 1 Add new
|
||||
4015 1 Change item status
|
||||
4016 1 Delete selected
|
||||
4017 1 + Add new
|
||||
4018 1 records from
|
||||
4019 1 Table search
|
||||
4020 1 Search
|
||||
4021 1 Clear search
|
||||
4022 1 Languages
|
||||
4023 1 Delete languages?
|
||||
4024 1 Selected languages will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4025 1 Delete selected languages
|
||||
4026 1 System Languages
|
||||
4027 1 Language
|
||||
4028 1 Country
|
||||
4029 1 Code
|
||||
4030 1 Order
|
||||
4031 1 Type
|
||||
4032 1 Default
|
||||
4033 1 CMS Enabled
|
||||
4034 1 User Management
|
||||
4035 1 Min password length is 6 symbols!
|
||||
4036 1 Passwords must match!
|
||||
4037 1 Delete system user?
|
||||
4038 1 Selected users will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4039 1 Delete selected users
|
||||
4040 1 Create QR code
|
||||
4041 1 Create code
|
||||
4042 1 Not a valid email address specified!
|
||||
4043 1 Fields do not match!
|
||||
4044 1 Qr code
|
||||
4045 1 Secret key
|
||||
4046 1 Issue
|
||||
4047 1 User
|
||||
4048 1 User name
|
||||
4049 1 User surname
|
||||
4050 1 User login
|
||||
4051 1 Last login
|
||||
4052 1 User email
|
||||
4053 1 2FA
|
||||
4054 1 User IP
|
||||
4055 1 Users last location
|
||||
4056 1 Clone user
|
||||
4057 1 Login
|
||||
4058 1 Passed site map doesn't exist!
|
||||
4059 1 Save
|
||||
4060 1 LORETTA SECRET
|
||||
4061 1 BRSystems IT Solutions
|
||||
4062 1 Username
|
||||
4063 1 Password
|
||||
4064 1 Sign in
|
||||
4065 1 Two-factor authentication
|
||||
4066 1 Enter the two-factor authentication code provided by the Google Authenticator app
|
||||
4067 1 Back to login
|
||||
4068 1 Welcome
|
||||
4069 1 Site Map
|
||||
4070 1 Module content
|
||||
4071 1 APP Users
|
||||
4072 1 Manage
|
||||
4073 1 Cms users
|
||||
4074 1 Site base
|
||||
4075 1 Apc overview
|
||||
4076 1 Cms messages
|
||||
4077 1 App messages
|
||||
4078 1 Action Log
|
||||
4079 1 Permission groups
|
||||
4080 1 Permissions
|
||||
4081 1 IP Filter
|
||||
4082 1 Classificators
|
||||
4083 1 Pub Messages
|
||||
4084 1 Pub email subscribtions
|
||||
4085 1 Mail Constructor
|
||||
4086 1 Text manager
|
||||
4087 1 Outgoing mails
|
||||
4088 1 Sent mails
|
||||
4089 1 User Managament
|
||||
4090 1 User Permissions
|
||||
4091 1 User Permissions Group
|
||||
4092 1 System site map
|
||||
4093 1 App site map
|
||||
4094 1 Site modules
|
||||
4095 1 Total APP users
|
||||
4096 1 Total Accounts
|
||||
4097 1 Inquiries received
|
||||
4098 1 Subscriptions
|
||||
4099 1 Users online
|
||||
4100 1 January
|
||||
4101 1 February
|
||||
4102 1 March
|
||||
4103 1 April
|
||||
4104 1 May
|
||||
4105 1 June
|
||||
4106 1 July
|
||||
4107 1 August
|
||||
4108 1 September
|
||||
4109 1 October
|
||||
4110 1 November
|
||||
4111 1 December
|
||||
4112 1 Dashboard
|
||||
4113 1 Date / Time
|
||||
4114 1 Refresh rate
|
||||
4115 1 Read more...
|
||||
4116 1 WEB Users ONLINE by day
|
||||
4117 1 WEB Users ONLINE by month
|
||||
4118 1 APP System Users ONLINE by day
|
||||
4119 1 APP System Users ONLINE by month
|
||||
4120 1 CMS System Users ONLINE by day
|
||||
4121 1 CMS System Users ONLINE by month
|
||||
4122 1 Recent activity
|
||||
4123 1 Time
|
||||
4124 1 Message
|
||||
4125 1 Delete classificators?
|
||||
4126 1 Selected classificators will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4127 1 Delete selected classificators
|
||||
4128 1 Delete All C_ADDRESS classificators?
|
||||
4129 1 All C_ADDRESS classificators will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4130 1 Delete classificators
|
||||
4131 1 CMS Classificators
|
||||
4132 1 -- Select --
|
||||
4133 1 Classificator title
|
||||
4134 1 Delete article?
|
||||
4135 1 Selected article will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4136 1 Delete selected article
|
||||
4137 1 Click to add
|
||||
4138 1 NPK
|
||||
4139 1 Article Title
|
||||
4140 1 Article created
|
||||
4141 1 Disabled
|
||||
4142 1 Add new entry
|
||||
4143 1 Delete apc cache?
|
||||
4144 1 Selected keys will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4145 1 Delete selected keys
|
||||
4146 1 Clear whole APC cache table
|
||||
4147 1 Whole APC cache table will be permanently cleared and cannot be recovered. Confirm clear?
|
||||
4148 1 Clear all
|
||||
4149 1 Cancel
|
||||
4150 1 Enabled
|
||||
4151 1 APC key
|
||||
4152 1 Inserted
|
||||
4153 1 Expires
|
||||
4154 1 Delete whole cache table
|
||||
4155 1 Disable APC
|
||||
4156 1 Enable APC
|
||||
4157 1 Delete Entry?
|
||||
4158 1 Selected entries will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4159 1 Delete selected entries
|
||||
4160 1 Generate site map xml
|
||||
4161 1 Site map xml generation done!
|
||||
4162 1 APP New Site Map
|
||||
4163 1 Site
|
||||
4164 1 Title
|
||||
4165 1 Full url
|
||||
4166 1 /code
|
||||
4167 1 Parent
|
||||
4168 1 Ref Id
|
||||
4169 1 Modified by
|
||||
4170 1 Created
|
||||
4171 1 Modified
|
||||
4172 1 Enable
|
||||
4173 1 Visible
|
||||
4174 1 Invisible
|
||||
4175 1 SiteMap
|
||||
4176 1 Autocache
|
||||
4177 1 Clone selected row as new
|
||||
4178 1 Gen. insert sql
|
||||
4179 1 Gen. XML's - sitemap | Kurpirkt | Salidzini
|
||||
4180 1 Minify css
|
||||
4181 1 Minify js
|
||||
4182 1 Clear cache
|
||||
4183 1 Show unused modules
|
||||
4184 1 Change Administration folder
|
||||
4185 1 Delete temporary table records from DB
|
||||
4186 1 SYS New Site Map
|
||||
4187 1 Created:
|
||||
4188 1 Modified:
|
||||
4189 1 Modified by:
|
||||
4190 1 Copy To All Languages (*Everything*)
|
||||
4191 1 Add new Page
|
||||
4192 1 Copy data to all languages
|
||||
4193 1 Order nr
|
||||
4194 1 Page title
|
||||
4195 1 Page url
|
||||
4196 1 Redirect url
|
||||
4197 1 Link Options
|
||||
4198 1 Page enabled
|
||||
4199 1 Indicates whether page has been enabled
|
||||
4200 1 Page is visible
|
||||
4201 1 Page visible
|
||||
4202 1 Auto cache
|
||||
4203 1 Automatically create page cache
|
||||
4204 1 Static Content
|
||||
4205 1 Create page with text manager
|
||||
4206 1 Default page
|
||||
4207 1 Languages base fallback page
|
||||
4208 1 Request login
|
||||
4209 1 Request 2FA
|
||||
4210 1 Two factor authentication
|
||||
4211 1 404 Page
|
||||
4212 1 Page is 404 page not found
|
||||
4213 1 Page is included in siyte map
|
||||
4214 1 Simple settings
|
||||
4215 1 Smarty container template
|
||||
4216 1 Page description
|
||||
4217 1 Page keywords
|
||||
4218 1 Enable system Template
|
||||
4219 1 Edit page content using Text Manager
|
||||
4220 1 Module settings
|
||||
4221 1 Load Application modules
|
||||
4222 1 Module
|
||||
4223 1 Call Action
|
||||
4224 1 Load Javascript modules
|
||||
4225 1 Load Cascade style sheet modules
|
||||
4226 1 Permissions settings
|
||||
4227 1 Link in interface permission CMS
|
||||
4228 1 Menus settings
|
||||
4229 1 MENUS to load with site map
|
||||
4230 1 Link site Map to MENUS
|
||||
4231 1 Edit Page
|
||||
4232 1 Search for permissions
|
||||
4233 1 eCommerce
|
||||
4234 1 e-Commerce
|
||||
4235 1 Edit menu data
|
||||
4236 1 Menu name
|
||||
4237 1 Menu description
|
||||
4238 1 Menu settings
|
||||
4239 1 Menu blocked
|
||||
4240 1 Indicates whether menu is disabled or not
|
||||
4241 1 Load subchildren
|
||||
4242 1 Indicates whether to load subchildren or not
|
||||
4243 1 Menu pub side
|
||||
4244 1 Indicates whether menu is pub side or not
|
||||
4245 1 Children to be loaded
|
||||
4246 1 Search in loadable menus:
|
||||
4247 1 Check all:
|
||||
4248 1 No results found, please change the search and try again
|
||||
4249 1 Add menu filter
|
||||
4250 1 Search for menus
|
||||
4251 1 Delete permissions?
|
||||
4252 1 Selected permissions will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4253 1 Delete selected permission
|
||||
4254 1 CMS permissions
|
||||
4255 1 Permission title
|
||||
4256 1 Quick add
|
||||
4257 1 Gen. sql
|
||||
4258 1 Edit permission data
|
||||
4259 1 Permission name
|
||||
4260 1 Permission description
|
||||
4261 1 Permission type
|
||||
4262 1 Permission settings
|
||||
4263 1 Permission blocked
|
||||
4264 1 Indicates whether permission has been disabled or not
|
||||
4265 1 Search in groups:
|
||||
4266 1 Show selected:
|
||||
4267 1 Add new permission
|
||||
4268 1 Delete permission group?
|
||||
4269 1 Selected groups will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4270 1 Delete selected groups
|
||||
4271 1 CMS permission groups
|
||||
4272 1 Group title
|
||||
4273 1 Edit group data
|
||||
4274 1 Group name
|
||||
4275 1 Group description
|
||||
4276 1 Group settings
|
||||
4277 1 Group blocked
|
||||
4278 1 Indicates whether group has been disabled or not
|
||||
4279 1 Linked permissions
|
||||
4280 1 Search in permissions:
|
||||
4281 1 Add new permissions
|
||||
4282 1 Permission name start
|
||||
4283 1 ex: 'PUB_START' => PUB_START_XXX / will create NEW/DELETE/ADD/SHOW by default. Will go to group permission title too
|
||||
4284 1 Permission desc. phrase
|
||||
4285 1 ex: 'new project' => Permission to XXX in new project / xxx => new/delete etc
|
||||
4286 1 Additional permissions
|
||||
4287 1 Can be separated with ',' for more and everything will get to 'uppercase', SINGLE words only, for space use '_'. ex: 'export' => NAME_START_EXPORT
|
||||
4288 1 PUB permissions
|
||||
4289 1 Add new group
|
||||
4290 1 Search for parents
|
||||
4291 1 Search in Modules:
|
||||
4292 1 Reload
|
||||
4293 1 Products
|
||||
4294 1 Edit user profile
|
||||
4295 1 Last IP
|
||||
4296 1 Last location
|
||||
4297 1 Login name
|
||||
4298 1 Email
|
||||
4299 1 CMS Language
|
||||
4300 1 2FA Security
|
||||
4301 1 Install the Google Authenticator application on your device for <a target='_blank' href='https://itunes.apple.com/app/google-authenticator/id388497605'>iOS</a> or <a target='_blank' href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2'>Android</a>. Scan barcode with Google Authenticator, if your device has a camera. If your device has no camera, enter account and key manually.
|
||||
4302 1 Two Factor Authentication for Login
|
||||
4303 1 Option Enabled
|
||||
4304 1 Option Disabled
|
||||
4305 1 User settings
|
||||
4306 1 User blocked
|
||||
4307 1 Indicates whether user has acces to system or not
|
||||
4308 1 Reset 2FA
|
||||
4309 1 Drop user linked 2fa
|
||||
4310 1 leftmenu
|
||||
4311 1 leftmenu_description paragraph...
|
||||
4312 1 fullTable
|
||||
4313 1 fullTable_description paragraph...
|
||||
4314 1 Auto password gen
|
||||
4315 1 Generates new password for change
|
||||
4316 1 Password change
|
||||
4317 1 Request user password change
|
||||
4318 1 Change user password
|
||||
4319 1 Auto generated user password - automatically sets password change upon first login!
|
||||
4320 1 Copy password
|
||||
4321 1 Copied!
|
||||
4322 1 New password
|
||||
4323 1 New password again
|
||||
4324 1 Manage table fields
|
||||
4325 1 Manage welcome portlets
|
||||
4326 1 User permission groups
|
||||
4327 1 Selected entry will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4328 1 Delete selected entry
|
||||
4329 1 Sender
|
||||
4330 1 Phone
|
||||
4331 1 subject
|
||||
4332 1 Delete products?
|
||||
4333 1 Selected products will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4334 1 Delete selected products
|
||||
4335 1 Delete users?
|
||||
4336 1 Min password lenght is 6 symbols!
|
||||
4337 1 Name
|
||||
4338 1 IP
|
||||
4339 1 Companies
|
||||
4340 1 Delete mails?
|
||||
4341 1 Selected mails will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4342 1 Delete selected mails
|
||||
4343 1 Outgoing mail overview
|
||||
4344 1 Read
|
||||
4345 1 Unread
|
||||
4346 1 Z18
|
||||
4347 1 maisonalexandra.lv
|
||||
4348 1 Mail owner
|
||||
4349 1 CC owner
|
||||
4350 1 Date from
|
||||
4351 1 Date till
|
||||
4352 1 Sent
|
||||
4353 1 Att.
|
||||
4354 1 Priority
|
||||
4355 1 Attempts
|
||||
4356 1 Server
|
||||
4357 1 Send now
|
||||
4358 1 View
|
||||
4359 1 Add new mail
|
||||
4360 1 Disable all
|
||||
4361 1 Enable all
|
||||
4362 1 Change item delivery status
|
||||
4363 1 Template not found!
|
||||
4364 1 Pub Products
|
||||
4365 1 Product Nr
|
||||
4366 1 Product title
|
||||
4367 1 Disc. enabled
|
||||
4368 1 Disc. value
|
||||
4369 1 Linked categories
|
||||
4370 1 Add discount
|
||||
4371 1 Disable discounts
|
||||
4372 1 PUB
|
||||
4373 1 CMS
|
||||
4374 1 SYS
|
||||
4375 1 Module title
|
||||
4376 1 Module class name
|
||||
4377 1 Module db name
|
||||
4378 1 Module type
|
||||
4379 1 Created by
|
||||
4380 1 Product Attributes
|
||||
4381 1 Delete Item?
|
||||
4382 1 Selected items will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4383 1 Delete selected items
|
||||
4384 1 Delete All items?
|
||||
4385 1 All items will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4386 1 Delete items
|
||||
4387 1 CMS Product Attributes
|
||||
4388 1 Item code/name
|
||||
4389 1 Item type
|
||||
4390 1 Global Discount (%)
|
||||
4391 1 Include blocked products
|
||||
4392 1 Include discount products
|
||||
4393 1 Apply only to selected Products
|
||||
4394 1 Add new product
|
||||
4395 1 Item created
|
||||
4396 1 By
|
||||
4397 1 Item Modified
|
||||
4398 1 Product nr.
|
||||
4399 1 Price
|
||||
4400 1 New Price
|
||||
4401 1 Discount value
|
||||
4402 1 Units available
|
||||
4403 1 Max buy per person
|
||||
4404 1 Company
|
||||
4405 1 Count classification
|
||||
4406 1 Date
|
||||
4407 1 Delivery settings
|
||||
4408 1 Description data
|
||||
4409 1 Edit description with WYSIWYG
|
||||
4410 1 Content Files
|
||||
4411 1 Image data
|
||||
4412 1 Link categories
|
||||
4413 1 Settings
|
||||
4414 1 Product is disabled in pub shop
|
||||
4415 1 Discount enabled
|
||||
4416 1 Product discount enabled or not
|
||||
4417 1 Available categories
|
||||
4418 1 Filter
|
||||
4419 1 Add all
|
||||
4420 1 Add
|
||||
4421 1 Remove
|
||||
4422 1 Choosen categories
|
||||
4423 1 Remove all
|
||||
4424 1 Search in deliveries:
|
||||
4425 1 Product full title
|
||||
4426 1 Product url
|
||||
4427 1 Keywords
|
||||
4428 1 Product long description
|
||||
4429 1 Content File url
|
||||
4430 1 Show checked module
|
||||
4431 1 Clone mod. from other pages
|
||||
4432 1 Js
|
||||
4433 1 Css
|
||||
4434 1 Count
|
||||
4435 1 Inc. Price
|
||||
4436 1 Size/picture
|
||||
4437 1 Size/picture II
|
||||
4438 1 Disable
|
||||
4439 1 Check all
|
||||
4440 1 Add new row
|
||||
4441 1 Create articles with WYSIWYG
|
||||
4442 1 SVG Icon
|
||||
4443 1 Categories
|
||||
4444 1 Short desc.
|
||||
4445 1 Url
|
||||
4446 1 Button text
|
||||
4447 1 Article long description
|
||||
4448 1 Image settings
|
||||
4449 1 Item Disabled
|
||||
4450 1 Indicates whether item is Disabled or not
|
||||
4451 1 Deliveries
|
||||
4452 1 Delete deliver?
|
||||
4453 1 Selected deliveries will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4454 1 Delete selected deliveries
|
||||
4455 1 Delivery classificators
|
||||
4456 1 Dev. cost
|
||||
4457 1 Change delivery status
|
||||
4458 1 Orders
|
||||
4459 1 Products sold
|
||||
4460 1 Inventory Management
|
||||
4461 1 Add new delivery
|
||||
4462 1 Delivery cost
|
||||
4463 1 cms Title
|
||||
4464 1 Delivery enabled
|
||||
4465 1 Indicates whether Deliver is enabled or not
|
||||
4466 1 Delivery default
|
||||
4467 1 Indicates whether Delivery is default or not
|
||||
4468 1 Count to classificators
|
||||
4469 1 Delete record?
|
||||
4470 1 Selected records will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4471 1 Delete selected record
|
||||
4472 1 Product Count 2 Classificators / Orders / Storage
|
||||
4473 1 Order send
|
||||
4474 1 Buys module
|
||||
4475 1 Order deleted
|
||||
4476 1 Storage module
|
||||
4477 1 Product partner
|
||||
4478 1 Clear filter
|
||||
4479 1 Delivery
|
||||
4480 1 No data found!
|
||||
4481 1 CMS Orders
|
||||
4482 1 Pending
|
||||
4483 1 Order number
|
||||
4484 1 Order mail
|
||||
4485 1 Order date
|
||||
4486 1 Export .xls
|
||||
4487 1 Export .pdf
|
||||
4488 1 Edited
|
||||
4489 1 Create a new copy
|
||||
4490 1 Sales
|
||||
4491 1 Inventory
|
||||
4492 1 Shipping
|
||||
4493 1 No data
|
||||
4494 1 Error when saving data
|
||||
4495 1 Edit Deliver data
|
||||
4496 1 Add new Item
|
||||
4497 1 Item settings
|
||||
4498 1 Default opened
|
||||
4499 1 Indicates whether item is opened by default
|
||||
4500 1 Add new classificator
|
||||
4501 1 Classificator name
|
||||
4502 1 Classificator data
|
||||
4503 1 Classificator type
|
||||
4504 1 Classificator settings
|
||||
4505 1 Classificator blocked
|
||||
4506 1 Indicates whether Classificator is disabled or not
|
||||
4507 1 Available in filter
|
||||
4508 1 Edit Item data
|
||||
4509 1 Edit classificator data
|
||||
4510 1 Edit product data
|
||||
4511 1 Link in interface permission PUB
|
||||
4512 1 Manage your article with WYSIWYG
|
||||
4513 1 Url segment
|
||||
4514 1 My profile
|
||||
4515 1 Edit my profile
|
||||
4516 1 Activate
|
||||
4517 1 Deactivate
|
||||
4518 1 My settings
|
||||
4519 1 CMS form theme
|
||||
4520 1 User system variables
|
||||
4521 1 msg_prop_val_iRecordsPerPage
|
||||
4522 1 Change my password
|
||||
4523 1 Old password
|
||||
4524 1 My permission groups
|
||||
4525 1 My permissions
|
||||
4526 1 Edit message data
|
||||
4527 1 First name
|
||||
4528 1 Last name
|
||||
4529 1 Product Count to Classificators / Orders / Storage
|
||||
4530 1 Url already in use!
|
||||
4531 1 No active product items
|
||||
4532 1 No delivery methods selected
|
||||
4533 1 No payment methods selected
|
||||
4534 1 Product is disabled
|
||||
4535 1 Row errors
|
||||
4536 1 Product error
|
||||
4537 1 Row error
|
||||
4538 1 Prod. error
|
||||
4539 1 Error
|
||||
4540 1 Error(s)
|
||||
4541 1 Errors
|
||||
4542 1 Not a valid number specified!
|
||||
4543 1 Payment methods
|
||||
4544 1 Product short description
|
||||
4545 1 Featured
|
||||
4546 1 Product is featured or not
|
||||
4547 1 2FA Login input code error!
|
||||
4548 1 The username or password is incorrect!
|
||||
4549 1 Delete translations?
|
||||
4550 1 Selected translations will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4551 1 Delete selected translations
|
||||
4552 1 Clear all public translations?
|
||||
4553 1 All public translations will be permanently deleted and cannot be recovered. Confirm delete?
|
||||
4554 1 Delete all
|
||||
4555 1 Cleanup public translations?
|
||||
4556 1 Will perform cleanup procedure by deleting unused/untranslated messages.
|
||||
4557 1 Perform cleanup
|
||||
4558 1 System Public translations
|
||||
4559 1 Linked pages
|
||||
4560 1 Records
|
||||
4561 1 Delete whole translation table
|
||||
4562 1 Export translation data
|
||||
4563 1 Import translation data
|
||||
4564 1 Cleanup unused messages
|
||||
4565 1 lorettasecret.lv
|
||||
4566 1 Sent mail overview
|
||||
4567 1 Page not found
|
||||
4568 1 Page access error...
|
||||
4569 1 The page you're looking for is not found!
|
||||
4570 1 Back to Startpage
|
||||
4571 1 Invalid telephone specified!
|
||||
4572 1 Mail title
|
||||
4573 1 Mail created
|
||||
4574 1 Mail type
|
||||
4575 1 Mail HTML content
|
||||
4576 1 Mail settings
|
||||
4577 1 Mail blocked
|
||||
4578 1 Indicates whether mail is blocked or not
|
||||
4579 1 Edit Mail data
|
||||
4580 1 To
|
||||
4581 1 Edit translation data
|
||||
4582 1 Language translations
|
||||
4583 1 User phone
|
||||
4584 1 Reports
|
||||
4585 1 Available reports
|
||||
4586 1 Selected reports
|
||||
4587 1 User is admin
|
||||
4588 1 Set as primary company user
|
||||
4589 1 newsletters subscription
|
||||
4590 1 Indicates whether user is subscribed to zutenis.lv newsletters
|
||||
4591 1 User activated
|
||||
4592 1 Indicates whether user is activated
|
||||
4593 1 Available Companies
|
||||
4594 1 Selected Companies
|
||||
4595 1 Something went wrong while saving user data!
|
||||
4596 1 Preparing data for export...
|
||||
4597 1 Exporting table data rows %nr%/%nr_max% ...
|
||||
4598 1 Writing excel file!
|
||||
4599 1 Export successfully finished without errors!
|
||||
4600 1 Failed to export data, please contact administrator!
|
||||
4601 1 Pub subscriptions
|
||||
4602 1 Subscribed
|
||||
4603 1 Edit subscribtion email
|
||||
4604 1 Email subscribed
|
||||
4605 1 Indicates whether Email is subscribed or not
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
1 1 0 1 en U.K. English 1 0 1489013952 1489013952
|
||||
7 0 1 1 lv Latvia Latviešu 1 0 1489418084 1565477303
|
||||
9 0 2 0 en U.K. English 1 0 1541542927 1587856740
|
||||
10 0 3 0 ru Russia Русский 1 0 1551523000 1587856741
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
1 azevadmin Administration /azevadmin/ /azevadmin/welcome 0 1 1 1 1 2 /azevadmin/login/ 1312029940 1519133420 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0
|
||||
2 login Login /azevadmin/login/ 1 1 1 2 0 0 0 1548841914 1 0 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0
|
||||
3 two-factor-authentication Two-factor authentication /azevadmin/login/two-factor-authentication/ 2 1 1 3 0 0 1546861060 1550501445 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
4 password-change Password change /azevadmin/login/password-change/ 2 1 1 4 0 0 1546861246 1550501481 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
6 welcome Welcome /azevadmin/welcome/ 1 1 1 6 1 2 /azevadmin/login 1315231663 1560251155 1 1 0 23 1 1 1 0 1 0 1 1 0 0 1 0 0
|
||||
7 base Site base /azevadmin/base/ 1 1 1 7 1 2 /azevadmin/login/ 1315232886 1519137566 1 40 0 22 1 1 1 0 1 0 0 1 0 0 0 0 0
|
||||
8 users Cms users /azevadmin/users/ 1 1 1 8 1 2 /azevadmin/login/ 1315233866 1519139181 1 20 0 20 1 1 1 0 1 0 0 1 0 0 0 0 0
|
||||
9 languages Languages /azevadmin/base/languages/ 7 1 1 9 1 2 /azevadmin/login 1315234507 1550507023 1 5 0 28 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
10 menus Menus /azevadmin/base/menus/ 7 1 1 10 1 2 /azevadmin/login 1315234908 1550507066 1 10 0 32 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
11 management User Management /azevadmin/users/management/ 8 1 1 11 1 2 /azevadmin/login 1315303428 1550507072 1 10 0 18 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
12 permission-groups Permission groups /azevadmin/users/permission-groups/ 8 1 1 12 1 2 /azevadmin/login 1315303514 1550507077 1 15 0 17 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
13 permissions Permissions /azevadmin/users/permissions/ 8 1 1 13 1 2 /azevadmin/login 1315303595 1593683805 1 20 0 19 1 1 1 0 1 0 0 1 0 0 0 0 1
|
||||
14 content Module content /azevadmin/content/ 1 1 1 14 1 2 /azevadmin/login/ 1315308974 1519144418 1 15 0 24 1 1 1 0 1 0 0 1 0 0 0 0 0
|
||||
23 cms-messages Cms messages /azevadmin/base/cms-messages/ 7 1 1 23 1 2 /azevadmin/login 1315431735 1550507504 1 15 0 37 1 1 1 0 1 0 0 1 0 0 0 0 1
|
||||
36 apc Apc overview /azevadmin/base/apc/ 7 1 1 36 1 2 /azevadmin/login 1317072926 1550507236 1 1 0 171 1 1 1 0 1 0 0 1 0 0 0 0 1
|
||||
37 ip-filter IP Filter /azevadmin/users/ip-filter/ 8 1 1 37 1 2 /azevadmin/login 1317585198 1550507248 1 25 0 119 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
38 action-log Action Log /azevadmin/base/action-log/ 7 1 1 38 1 2 /azevadmin/login 1321569304 1550507252 1 30 0 177 1 1 1 0 1 0 0 1 0 0 0 0 1
|
||||
46 app-messages App messages /azevadmin/base/app-messages/ 7 1 1 46 1 2 /azevadmin/login 1322554880 1550507507 1 20 0 36 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
135 manage Manage /azevadmin/manage/ 1 1 1 135 1 2 /azevadmin/login/ 1328044536 1519144950 1 18 0 81 1 1 1 0 1 0 0 1 0 0 0 0 0
|
||||
141 mails Mail Constructor /azevadmin/content/mails/ 14 1 1 141 1 2 /azevadmin/login 1328485286 1556095982 1 15 0 75 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
259 mailsout Outgoing mails /azevadmin/manage/mailsout/ 135 1 1 259 1 2 /azevadmin/login 1338381281 1584996657 1 14 0 72 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
260 mailssent Sent mails /azevadmin/manage/mailssent/ 135 1 1 260 1 2 /azevadmin/login 1338381326 1556097578 1 15 0 73 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
261 classificators Classificators /azevadmin/content/classificators/ 14 1 1 261 1 2 /azevadmin/login 1338550438 1556106004 1 5 0 90 1 1 1 0 1 0 0 1 0 0 1 0 1
|
||||
401 my-profile My profile /azevadmin/my-profile/ 1 1 1 401 1 2 /azevadmin/login 1347105343 1550507107 1 5 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0
|
||||
524 site site 0 0 7 524 0 0 1415452127 1588075986 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0
|
||||
525 index Sākums /index/ Maison Alexandra 524 0 7 525 0 675 1415452145 1782913389 1 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 0
|
||||
620 site-map Site Map /azevadmin/site-map/ 1 1 1 620 1 2 /azevadmin/login 1462202284 1549372729 1 10 0 258 1 1 1 0 1 0 0 1 0 0 0 0 0
|
||||
621 system-site-map System site map /azevadmin/site-map/system-site-map/ 620 1 1 621 1 2 /azevadmin/login 1462205069 1550507286 1 5 0 252 1 1 1 0 1 0 0 1 0 0 0 0 1
|
||||
624 app-site-map App site map /azevadmin/site-map/app-site-map/ 620 1 1 624 1 2 /azevadmin/login 1462208019 1550507292 1 10 0 257 1 1 1 0 1 0 0 0 0 0 0 0 1
|
||||
648 text-manager Text manager /azevadmin/content/text-manager/ 14 1 1 648 1 2 /azevadmin/login 1487959488 1555714859 1 99 0 220 1 1 1 0 1 0 0 0 0 0 0 0 0
|
||||
654 atruna Atruna /atruna/ Lietošanas noteikumi, privātuma politika un sīkdatnes. Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. 524 0 7 654 0 0 1488925148 1784760115 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
656 autortiesibas Copyrights /autortiesibas/ Lietošanas noteikumi, privātuma politika un sīkdatnes. Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. 524 0 7 656 0 0 1488925221 1588144529 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
677 app-users APP Users /azevadmin/app-users/ 1 \N 1 1 677 1 2 /azevadmin/login/ 1493401062 1519145674 1 17 0 224 1 1 1 0 1 0 0 0 0 0 0 0 0
|
||||
678 user-managament User Managament /azevadmin/app-users/user-managament/ 677 1 1 678 1 2 /azevadmin/login 1493401513 1550507300 1 9 0 78 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
679 user-permissions User Permissions /azevadmin/app-users/user-permissions/ 677 \N 1 1 679 1 2 /azevadmin/login 1493401591 1550507306 1 10 0 239 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
680 user-permissions-group User Permissions Group /azevadmin/app-users/user-permissions-group/ 677 \N 1 1 680 1 2 /azevadmin/login 1493401664 1581411856 1 15 0 244 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
682 paroles-atgusana Password recovery /paroles-atgusana/ 524 0 7 682 0 0 1493481124 1784069516 1 15 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
686 index Home /index/ Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. Ērta dokumentu sagatavošana – rēķini, avansa rēķini, PNA, iesniegumi, u.c. Atskaišu sagatavošana un paraugi iesniegšanai EDS - ieņēmumu un izdevumu žurnāls, ceturkšņa atskaites, mikrouzņēmuma nodokļa atskaites, u.c. 524 0 9 525 0 675 1493745107 1782913389 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0
|
||||
709 disclaimer Disclaimer /disclaimer/ Terms of use, privacy policy and cookies. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 654 0 0 1541534159 1784760115 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
710 copyrights Copyrights /copyrights/ Terms of use, privacy policy and cookies. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 656 0 0 1541534170 1588144529 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
711 accounting-system-login Login page /accounting-system-login/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. System access - authentication. 524 0 9 801 0 0 1541534178 1588144524 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
712 user-profile User Profile /accounting-system/user-profile/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 804 1 675 /accounting-system-login/en 1541534186 1588144519 1 10 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
713 password-recovery Password recovery /password-recovery/ System user password recovery. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 682 0 0 1541534199 1784069516 1 15 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
714 user-manager User Manager /accounting-system/user-manager/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 805 1 675 /accounting-system-login/en 1541534210 1588144509 1 25 0 235 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
715 object-manager-2 Object manager /accounting-system/object-manager-2/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 828 1 675 /accounting-system-login/en 1541534219 1588144504 1 30 0 233 1 0 1 0 0 0 0 0 0 0 1 0 1
|
||||
716 partners Partners /accounting-system/partners/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 793 1 675 /accounting-system-login/en 1541534226 1679648883 1 35 0 337 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
717 objects-managament Objects /accounting-system/objects-managament/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 818 1 675 /accounting-system-login/en 1541534248 1588144494 1 40 0 233 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
718 transactions Transactions /accounting-system/transactions/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 817 1 675 /accounting-system-login/en 1541534254 1597056846 8 45 0 341 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
719 data-input Accounting Management /accounting-system/data-input/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 794 1 675 /accounting-system-login/en 1541534264 1588144484 1 50 0 345 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
720 accounting-classificators Accounting cl. /accounting-system/accounting-classificators/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 816 1 675 /accounting-system-login/en 1541534270 1588144479 1 50 0 346 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
721 classificators Classificators /accounting-system/classificators/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 815 1 675 /accounting-system-login/en 1541534281 1609159793 8 45 0 358 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
722 account-requisites Company Requisites /accounting-system/account-requisites/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 802 1 675 /accounting-system-login/en 1541534300 1588144469 1 35 0 350 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
723 bug-error-management Bugs/Errors managemenet /accounting-system/bug-error-management/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 797 1 675 /accounting-system-login/en 1541534306 1588144464 1 105 0 419 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
724 time-accounting Time accounting /accounting-system/time-accounting/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 798 1 675 /accounting-system-login/en 1541534315 1588144459 1 105 0 366 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
726 reports Reports /accounting-system/reports/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 795 1 675 /accounting-system-login/en 1541534333 1588144454 1 55 0 374 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
734 send-system-error Send System Error /accounting-system/send-system-error/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 786 1 675 /accounting-system-login/en 1544379206 1588144434 1 105 0 418 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
739 piekluves-kluda Access Error /piekluves-kluda/ Loretta Secret 524 0 7 739 0 0 1546079609 1782914010 1 5 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0
|
||||
741 pub-messages Pub Messages /azevadmin/content/pub-messages/ 14 \N 1 1 741 1 2 /azevadmin/login 1545916628 1550507519 1 5 0 296 1 1 1 0 1 0 0 0 0 0 0 0 1
|
||||
742 pierakstities subscribe /pierakstities/ Pierakstīšanās uz jaunumu saņemšanu e-pastā! 524 0 7 742 0 0 1545922833 1781695326 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
744 atrakstities unsubscribe /atrakstities/ Atrakstīšanās no jaunumu saņemšanu e-pastā! 524 0 7 744 0 0 1545933944 1781774551 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
745 pub-email-subscribtions Pub email subscribtions /azevadmin/content/pub-email-subscribtions/ 14 1 1 745 1 2 /azevadmin/login 1545941495 1550507333 1 6 0 300 1 1 1 0 1 0 0 0 0 0 0 0 1
|
||||
746 sazinies-ar-mums Contact us /sazinies-ar-mums/ Saziņas forma tiešsaistē. 524 \N 0 7 746 0 0 1546346508 1781698510 1 10 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
748 par-mums Par mums /par-mums/ Vairāk par mums 524 0 7 748 0 0 1546346526 1784760161 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
754 system-dashboard System Dashboard /accounting-system/system-dashboard/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 775 1 675 /accounting-system-login/en 1547453291 1603452687 8 20 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
757 site-modules Site modules /azevadmin/site-map/site-modules/ 620 1 1 757 1 2 /azevadmin/login 1548075102 1550507552 1 20 0 304 1 1 1 0 1 0 0 0 0 0 0 0 1
|
||||
759 page-not-found Page not found /azevadmin/page-not-found/ 1 1 1 759 1 2 /azevadmin/login 1550585794 1550586139 1 1 0 23 1 1 1 0 1 1 1 0 0 0 1 0 0
|
||||
760 account-selection Company selection /accounting-system/account-selection/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 803 1 675 /accounting-system-login/en 1549382858 1616183364 1 10 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
761 balance Balance /accounting-system/balance/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 796 1 675 /accounting-system-login/en 1549382916 1588144449 1 60 0 420 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
762 sikdatnes Cookies /sikdatnes/ Lietošanas noteikumi, privātuma politika un sīkdatnes. 524 0 7 762 0 0 1549469297 1781697108 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
763 cookies Cookies /cookies/ Terms of use, privacy policy and cookies. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 762 0 0 1549469297 1781697108 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
764 buj FAQ /buj/ Lietotāju biežāk uzdotie jautājumi un mūsu sniegtās atbildes. Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. 524 0 7 764 0 0 1549470086 1784760143 1 15 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
765 faq FAQ /faq/ Frequently asked questions of users and answers provided by us. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 764 0 0 1549470086 1784760143 1 15 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
767 accounting-system App system /accounting-system/ /accounting-system/system-dashboard/en Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 814 1 675 /accounting-system-login/en 1550574442 1588144379 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
|
||||
768 password-change Password change /accounting-system/password-change/ 767 0 9 806 0 0 1550575428 1588144424 1 5 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
775 sistemnaya-panel System Dashboard /sistema-ucheta/sistemnaya-panel/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 775 1 675 /voyti-v-sistemu-ucheta/ru 1556106577 1603452687 8 20 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
777 iframe-reports Iframe reports /accounting-system/reports/iframe-reports/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 726 0 9 778 1 675 /accounting-system-login/en 1556869251 1588144374 1 55 0 374 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
778 iframe-otchety Iframe reports /sistema-ucheta/otchety/iframe-otchety/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 795 0 10 778 1 675 /voyti-v-sistemu-ucheta/ru 1556869258 1588144374 1 55 0 374 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
779 two-factor Two-factor authentication /accounting-system-login/two-factor/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 711 0 9 780 0 0 1559041078 1726757824 1 5 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
780 dva-faktora Two-factor authentication /voyti-v-sistemu-ucheta/dva-faktora/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 801 0 10 780 0 0 1559041078 1726757824 1 5 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
783 subscription Subscription /accounting-system/subscription/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 784 1 675 /accounting-system-login/en 1563886260 1588144369 1 20 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1
|
||||
784 abonement Subscription /sistema-ucheta/abonement/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 784 1 675 /voyti-v-sistemu-ucheta/ru 1563886260 1588144369 1 20 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1
|
||||
786 soobshchit-ob-oshibke-sistemy Send System Error /sistema-ucheta/soobshchit-ob-oshibke-sistemy/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 786 1 675 /voyti-v-sistemu-ucheta/ru 1564691532 1588144434 1 105 0 418 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
787 index Home /index/ Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. Ērta dokumentu sagatavošana – rēķini, avansa rēķini, PNA, iesniegumi, u.c. Atskaišu sagatavošana un paraugi iesniegšanai EDS - ieņēmumu un izdevumu žurnāls, ceturkšņa atskaites, mikrouzņēmuma nodokļa atskaites, u.c. 524 0 10 525 0 0 1565086733 1782913389 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0
|
||||
788 about-us about us /about-us/ More about us - our mission, vision and values. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 748 0 0 1565086751 1784760161 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
789 o-nas about us /o-nas/ Больше о нас - наша миссия, видение и ценности. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 748 0 0 1565086751 1784760161 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
790 contact-us Contact us /contact-us/ Online communication form. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 \N 0 9 746 0 0 1565086840 1781698510 1 10 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
791 svyazatsya-s-nami Contact us /svyazatsya-s-nami/ Форма онлайн общения. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 \N 0 10 746 0 0 1565086840 1781698510 1 10 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
792 czv FAQ /czv/ Часто задаваемые вопросы пользователей и ответы, предоставленные нами. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 764 0 0 1565086860 1784760143 1 15 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
793 partnery Partners /sistema-ucheta/partnery/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 793 1 675 /voyti-v-sistemu-ucheta/ru 1565086937 1679648883 1 35 0 337 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
794 vvod-dannykh Accounting Management /sistema-ucheta/vvod-dannykh/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 794 1 675 /voyti-v-sistemu-ucheta/ru 1565086966 1588144484 1 50 0 345 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
795 otchety Reports /sistema-ucheta/otchety/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 795 1 675 /voyti-v-sistemu-ucheta/ru 1565086991 1588144454 1 55 0 374 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
796 balans Balance /sistema-ucheta/balans/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 796 1 675 /voyti-v-sistemu-ucheta/ru 1565087060 1588144449 1 60 0 420 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
797 menedzhment-oshibky Bugs/Errors managemenet /sistema-ucheta/menedzhment-oshibky/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 797 1 675 /voyti-v-sistemu-ucheta/ru 1565087072 1588144464 1 105 0 419 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
798 otslezhivaniye-vremeni Time accounting /sistema-ucheta/otslezhivaniye-vremeni/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 798 1 675 /voyti-v-sistemu-ucheta/ru 1565087091 1588144459 1 105 0 366 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
801 voyti-v-sistemu-ucheta Login page /voyti-v-sistemu-ucheta/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. Доступ к системе - аутентификация. 524 0 10 801 0 0 1565092294 1588144524 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
802 dannyye-scheta Company Requisites /sistema-ucheta/dannyye-scheta/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 802 1 675 /voyti-v-sistemu-ucheta/ru 1565092577 1588144469 1 35 0 350 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
803 vybor-akkaunta Company selection /sistema-ucheta/vybor-akkaunta/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 803 1 675 /voyti-v-sistemu-ucheta/ru 1565092587 1616183364 1 10 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
804 profil-polzovatelya User Profile /sistema-ucheta/profil-polzovatelya/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 804 1 675 /voyti-v-sistemu-ucheta/ru 1565092710 1588144519 1 10 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
805 upravleniye-polzovatelyami User Manager /sistema-ucheta/upravleniye-polzovatelyami/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 805 1 675 /voyti-v-sistemu-ucheta/ru 1565092744 1588144509 1 25 0 235 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
806 smenit-parol Password change /sistema-ucheta/smenit-parol/ 814 0 10 806 0 0 1565607516 1588144424 1 5 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
807 subscribe subscribe /subscribe/ Pierakstīšanās uz jaunumu saņemšanu e-pastā! Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. 524 0 9 742 0 0 1565609330 1781695326 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
808 podpisyvatsya subscribe /podpisyvatsya/ Подпишитесь на рассылку по электронной почте! Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 742 0 0 1565609330 1781695326 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
809 unsubscribe unsubscribe /unsubscribe/ Unsubscribe from receiving news by e-mail! Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 744 0 0 1565609338 1781774551 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
810 otpisyvatsya unsubscribe /otpisyvatsya/ Отписаться от получения новостей по электронной почте! Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 744 0 0 1565609338 1781774551 1 5 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
811 access-error Access Error /access-error/ System access error, the page or file you are looking for is no longer available! Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 739 0 0 1565609350 1782914010 1 5 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0
|
||||
812 oshibka-dostupa Access Error /oshibka-dostupa/ Ошибка доступа к системе, искомая страница или файл больше не доступны! Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 739 0 0 1565609350 1782914010 1 5 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0
|
||||
813 pechenye Cookies /pechenye/ Условия использования, политика конфиденциальности и куки. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 762 0 0 1565609391 1781697108 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
814 sistema-ucheta App system /sistema-ucheta/ /sistema-ucheta/sistemnaya-panel/ru Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 814 1 675 /voyti-v-sistemu-ucheta/ru 1565609450 1588144379 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0
|
||||
815 klassifikatory Classificators /sistema-ucheta/klassifikatory/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 815 1 675 /voyti-v-sistemu-ucheta/ru 1565609533 1609159793 8 45 0 358 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
816 klassifikatory-bukhgalterskogo-ucheta Accounting cl. /sistema-ucheta/klassifikatory-bukhgalterskogo-ucheta/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 816 1 675 /voyti-v-sistemu-ucheta/ru 1565609549 1588144479 1 50 0 346 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
817 operatsii Transactions /sistema-ucheta/operatsii/ Простой вводный учет! Онлайн-бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 817 1 675 /voyti-v-sistemu-ucheta/ru 1565609575 1597056846 8 45 0 341 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
818 upravleniye-obyektami Objects /sistema-ucheta/upravleniye-obyektami/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 818 1 675 /voyti-v-sistemu-ucheta/ru 1565609624 1588144494 1 40 0 233 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
819 vosstanovleniye-parolya Password recovery /vosstanovleniye-parolya/ Восстановление пароля пользователя системы. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 682 0 0 1565609642 1784069516 1 15 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
820 avtorskiye-prava Copyrights /avtorskiye-prava/ Условия использования, политика конфиденциальности и куки. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 656 0 0 1565609662 1588144529 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
821 ogovorki Disclaimer /ogovorki/ Условия использования, политика конфиденциальности и куки. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 654 0 0 1565609670 1784760115 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
823 unified-objects Unified Objects /accounting-system/unified-objects/ Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 767 0 9 824 1 675 /accounting-system-login/en 1566474239 1595851649 8 45 0 233 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
824 obshchiye-obyekty Unified Objects /sistema-ucheta/obshchiye-obyekty/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 824 1 675 /voyti-v-sistemu-ucheta/ru 1566474239 1595851649 8 45 0 233 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
826 documents Documents /accounting-system/documents/ Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. 767 0 9 827 1 675 /accounting-system-login/en 1573031461 1593183731 1 105 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
827 dokumenty Documents /sistema-ucheta/dokumenty/ Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. 814 0 10 827 1 675 /voyti-v-sistemu-ucheta/ru 1573031461 1593183731 1 105 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
828 upravleniye-obyektom-2 Object manager /sistema-ucheta/upravleniye-obyektom-2/ Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 814 0 10 828 1 675 /voyti-v-sistemu-ucheta/ru 1580986211 1588144504 1 30 0 233 1 0 1 0 0 0 0 0 0 0 1 0 1
|
||||
829 registracija Reģistrācija /registracija/ Lietotāja pieteikums / reģistrācijas forma sistēmas lietošanai. Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. Sistēmas piekļuve – autentifikācija. 524 0 7 829 0 0 1584945535 1784069007 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
830 registration Register page /registration/ User application / registration form for using the system. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. System access - authentication. 524 0 9 829 0 0 1584945535 1784069007 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
831 registratsiya Register page /registratsiya/ Пользовательское приложение / регистрационная форма для использования системы. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. Доступ к системе - аутентификация. 524 0 10 829 0 0 1584945535 1784069007 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
832 lietosanas-noteikumi Lietošanas noteikumi /lietosanas-noteikumi/ Lietošanas noteikumi, privātuma politika un sīkdatnes. 524 0 7 832 0 0 1584968853 1784761065 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
833 terms-of-use terms of use /terms-of-use/ Terms of use, privacy policy and cookies. Simple entry accounting! Online accounting program for sole proprietors, self-employed, associations and farms. 524 0 9 832 0 0 1584968853 1784761065 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
834 usloviya-ekspluatatsii terms of use /usloviya-ekspluatatsii/ Условия использования, политика конфиденциальности и куки. Простой входной учет! Онлайновая бухгалтерская программа для индивидуальных предпринимателей, индивидуальных предпринимателей, ассоциаций и фермерских хозяйств. 524 0 10 832 0 0 1584968853 1784761065 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
840 pub-export Pub export /pub-export/ 524 0 7 840 0 0 1516626023 1588144349 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
|
||||
841 pub-export Pub export /pub-export/ 524 \N 0 9 840 0 0 1588075560 1588144349 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
|
||||
842 pub-export Pub export /pub-export/ 524 \N 0 10 840 0 0 1588075560 1588144349 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0
|
||||
844 route-pages Route Pages /accounting-system/documents/route-pages/ 826 0 9 845 1 675 /accounting-system-login/en 1589974376 1593442423 1 105 0 487 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
845 stranitsy-marshruta Route Pages /sistema-ucheta/dokumenty/stranitsy-marshruta/ 827 0 10 845 1 675 /voyti-v-sistemu-ucheta/ru 1589974376 1593442423 1 105 0 487 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
847 incoming-documents Incoming Doc /accounting-system/documents/incoming-documents/ 826 0 9 848 1 675 /accounting-system-login/en 1591192981 1593442465 1 105 0 494 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
848 vkhodyashchiye-dokumenty Incoming Doc /sistema-ucheta/dokumenty/vkhodyashchiye-dokumenty/ 827 0 10 848 1 675 /voyti-v-sistemu-ucheta/ru 1591192981 1593442465 1 105 0 494 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
856 outgoing-documents Outgoing Doc. /accounting-system/documents/outgoing-documents/ 826 0 9 857 1 675 /accounting-system-login/en 1591272842 1630532892 1 105 0 370 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
857 iskhodyashchiye-dokumenty Outgoing Doc. /sistema-ucheta/dokumenty/iskhodyashchiye-dokumenty/ 827 0 10 857 1 675 /voyti-v-sistemu-ucheta/ru 1591272842 1630532892 1 105 0 370 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
859 visitors-register Visitors Register /accounting-system/visitors-register/ 767 0 9 860 1 675 /accounting-system-login/en 1603898861 1603899223 8 155 0 498 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
860 visitors-register Visitors Register /sistema-ucheta/visitors-register/ 814 0 10 860 1 675 /voyti-v-sistemu-ucheta/ru 1603898861 1603899223 8 155 0 498 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
862 house-management Association /accounting-system/house-management/ 767 0 9 863 1 675 /accounting-system-login/en 1608205788 1609955891 1 105 0 512 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
863 upravleniye-domom Association /sistema-ucheta/upravleniye-domom/ 814 0 10 863 1 675 /voyti-v-sistemu-ucheta/ru 1608205788 1609955891 1 105 0 512 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
868 meters Apartment meters /accounting-system/house-management/meters/ 862 0 9 869 1 675 /accounting-system-login/en 1608212658 1609956190 1 105 0 515 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
869 schetchiki Apartment meters /sistema-ucheta/upravleniye-domom/schetchiki/ 863 0 10 869 1 675 /voyti-v-sistemu-ucheta/ru 1608212658 1609956190 1 105 0 515 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
871 meter-readings Meter readings /accounting-system/house-management/meter-readings/ 862 0 9 872 1 675 /accounting-system-login/en 1608300879 1769769874 1 105 0 514 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
872 pokazaniya-schetchika Meter readings /sistema-ucheta/upravleniye-domom/pokazaniya-schetchika/ 863 0 10 872 1 675 /voyti-v-sistemu-ucheta/ru 1608300879 1769769874 1 105 0 514 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
875 universal-data-access Universal Data Access /accounting-system/universal-data-access/ Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. 767 0 9 876 0 0 1609942421 1609956497 1 46 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
876 universalnyy-dostup-k-dannym Universal Data Access /sistema-ucheta/universalnyy-dostup-k-dannym/ Vienkāršā ieraksta grāmatvedība! Tiešsaistes grāmatvedības programma individuālajiem komersantiem, pašnodarbinātajiem, biedrībām un zemnieku saimniecībām. 814 0 10 876 0 0 1609942421 1609956497 1 46 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
878 datu-imports Datu imports /accounting-system/datu-imports/ 767 0 9 879 1 675 /accounting-system-login/en 1612435808 1615906335 8 60 0 528 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
879 datu-imports Datu imports /sistema-ucheta/datu-imports/ 814 0 10 879 1 675 /voyti-v-sistemu-ucheta/ru 1612435808 1615906335 8 60 0 528 1 1 1 0 0 0 0 0 0 0 1 0 1
|
||||
884 two-factor-setup Two-Factor setup /accounting-system-login/two-factor-setup/ 711 \N 0 9 885 0 0 1726765272 1726765272 1 5 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
885 dvukhfaktornaya-nastroyka Two-Factor setup /voyti-v-sistemu-ucheta/dvukhfaktornaya-nastroyka/ 801 \N 0 10 885 0 0 1726765272 1726765272 1 5 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0
|
||||
887 plan-pricing Plan Pricing /plan-pricing/ 524 \N 0 9 888 0 0 1775206675 1775207035 1 70 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0
|
||||
888 plan-pricing Plan Pricing /plan-pricing/ 524 \N 0 10 888 0 0 1775206675 1775207035 1 70 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0
|
||||
889 e-commerce e-Commerce /azevadmin/e-commerce/ 1 \N 1 1 889 1 2 /azevadmin/login 1777018342 1777018564 1 16 0 474 1 1 1 0 1 0 0 0 0 0 0 0 0
|
||||
890 products Products /azevadmin/e-commerce/products/ 889 \N 1 1 890 1 2 /azevadmin/login 1777019714 1777287249 1 5 0 478 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
891 product-attributes Product Attributes /azevadmin/e-commerce/product-attributes/ 889 \N 1 1 891 1 2 /azevadmin/login 1777023737 1777289327 1 6 0 483 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
892 deliveries Delivery /azevadmin/e-commerce/deliveries/ 889 \N 1 1 892 1 2 /azevadmin/login 1777285573 1783326764 1 20 0 491 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
893 orders Orders /azevadmin/e-commerce/orders/ 889 \N 1 1 893 1 2 /azevadmin/login 1777285623 1777287237 1 1 0 487 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
894 sales Sales /azevadmin/e-commerce/sales/ 889 \N 1 1 894 1 2 /azevadmin/login 1777286161 1777287370 1 15 0 497 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
895 inventory Inventory /azevadmin/e-commerce/inventory/ 889 \N 1 1 895 1 2 /azevadmin/login 1777286634 1777287364 1 10 0 463 1 1 1 0 1 0 0 0 0 0 1 0 1
|
||||
896 grozs grozs /grozs/ 524 \N 0 7 896 0 0 1781857265 1781879300 1 35 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
897 grozs grozs /grozs/ 524 \N 0 9 896 0 0 1781857265 1781879300 1 35 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
898 grozs grozs /grozs/ 524 \N 0 10 896 0 0 1781857265 1781879300 1 35 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
899 veikals Veikals /veikals/ 524 \N 0 7 899 0 0 1782483539 1783070454 1 35 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
900 veikals Veikals /veikals/ 524 \N 0 9 899 0 0 1782483539 1783070454 1 35 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
901 veikals Veikals /veikals/ 524 \N 0 10 899 0 0 1782483539 1783070454 1 35 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
902 ienakt Ienākt /ienakt/ 524 \N 0 7 902 0 0 1784068209 1784068219 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
903 login Login /login/ 524 \N 0 9 902 0 0 1784068209 1784068219 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
904 login Login /login/ 524 \N 0 10 902 0 0 1784068209 1784068219 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
905 lietotaja-profils Lietotāja profils /lietotaja-profils/ 524 \N 0 7 905 0 0 1784069456 1784738983 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
906 lietotaja-profils Lietotāja profils /lietotaja-profils/ 524 \N 0 9 905 0 0 1784069456 1784738983 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
907 lietotaja-profils Lietotāja profils /lietotaja-profils/ 524 \N 0 10 905 0 0 1784069456 1784738983 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
908 meklet Meklēt /meklet/ 524 \N 0 7 908 0 0 1784207540 1784207540 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0
|
||||
909 meklet Meklēt /meklet/ 524 \N 0 9 908 0 0 1784207540 1784207540 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0
|
||||
910 // 524 \N 0 10 908 0 0 1784207540 1784207540 1 0 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0
|
||||
911 atgriesanas-politika Atgriešanas politika /atgriesanas-politika/ 524 \N 0 7 911 0 0 1784893304 1784893304 1 21 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
912 return-policy Return policy /return-policy/ 524 \N 0 9 911 0 0 1784893304 1784893304 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
913 // 524 \N 0 10 911 0 0 1784893304 1784893304 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
914 maksajumu-politika Maksājumu politika /maksajumu-politika/ 524 \N 0 7 914 0 0 1784893371 1784893632 1 21 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
915 payment-policy Payment policy /payment-policy/ 524 \N 0 9 914 0 0 1784893371 1784893632 1 21 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
916 maksajumu-politika Maksājumu politika /maksajumu-politika/ 524 \N 0 10 914 0 0 1784893371 1784893632 1 21 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
917 piegades-politika Piegādes politika /piegades-politika/ 524 \N 0 7 917 0 0 1784893512 1784893512 1 23 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
918 // 524 \N 0 9 917 0 0 1784893512 1784893512 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
919 // 524 \N 0 10 917 0 0 1784893512 1784893512 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
920 privatuma-politika Privātuma politika /privatuma-politika/ 524 \N 0 7 920 0 0 1784893655 1784893655 1 24 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
921 // 524 \N 0 9 920 0 0 1784893655 1784893655 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
922 // 524 \N 0 10 920 0 0 1784893655 1784893655 1 20 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
923 paroles-maina Paroles maiņa /lietotaja-profils/paroles-maina/ 905 \N 0 7 923 0 675 1785226223 1785226266 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
924 paroles-maina Paroles maiņa /lietotaja-profils/paroles-maina/ 906 \N 0 9 923 0 675 1785226223 1785226266 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
925 paroles-maina Paroles maiņa /lietotaja-profils/paroles-maina/ 907 \N 0 10 923 0 675 1785226223 1785226266 1 25 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0
|
||||
|
|
@ -0,0 +1,281 @@
|
|||
141 28 1 1
|
||||
142 28 4 1
|
||||
2984 422 15 1
|
||||
2985 422 16 1
|
||||
2986 422 17 1
|
||||
2988 422 8 0
|
||||
5276 659 8 0
|
||||
5278 658 8 0
|
||||
5281 660 8 1
|
||||
5282 660 2 0
|
||||
5285 661 8 1
|
||||
5286 661 2 0
|
||||
5669 7 2 1
|
||||
5670 7 1 0
|
||||
5681 8 3 1
|
||||
5682 8 1 0
|
||||
5695 14 4 1
|
||||
5696 14 1 0
|
||||
5709 135 23 1
|
||||
5710 135 1 0
|
||||
5728 677 32 1
|
||||
5729 677 1 0
|
||||
5964 733 34 1
|
||||
5965 733 8 0
|
||||
6416 620 1 0
|
||||
6417 620 33 1
|
||||
6492 9 1 1
|
||||
6493 9 2 0
|
||||
6494 10 1 1
|
||||
6495 10 2 0
|
||||
6496 11 1 1
|
||||
6497 11 3 0
|
||||
6498 12 1 1
|
||||
6499 12 3 0
|
||||
6500 401 1 1
|
||||
6501 401 1 1
|
||||
6504 36 1 1
|
||||
6505 36 2 0
|
||||
6506 37 1 1
|
||||
6507 37 3 0
|
||||
6508 38 1 1
|
||||
6509 38 2 0
|
||||
6518 621 1 1
|
||||
6519 621 33 0
|
||||
6520 624 1 1
|
||||
6521 624 33 0
|
||||
6524 678 1 1
|
||||
6525 678 32 0
|
||||
6526 679 1 1
|
||||
6527 679 32 0
|
||||
6536 745 1 1
|
||||
6537 745 4 0
|
||||
6538 23 1 1
|
||||
6539 23 2 0
|
||||
6540 46 1 1
|
||||
6541 46 2 0
|
||||
6542 741 1 1
|
||||
6543 741 4 0
|
||||
6544 757 1 1
|
||||
6545 757 33 0
|
||||
6720 759 1 1
|
||||
6781 648 4 0
|
||||
6782 648 1 1
|
||||
6787 141 4 0
|
||||
6788 141 1 1
|
||||
6791 260 23 0
|
||||
6792 260 1 1
|
||||
6795 261 4 0
|
||||
6796 261 1 1
|
||||
6821 6 1 1
|
||||
7254 680 1 1
|
||||
7255 680 32 0
|
||||
7283 259 23 0
|
||||
7284 259 1 1
|
||||
7722 768 8 1
|
||||
7723 806 8 1
|
||||
7729 734 34 1
|
||||
7730 734 8 1
|
||||
7731 786 34 1
|
||||
7732 786 8 1
|
||||
7744 761 8 1
|
||||
7745 761 34 0
|
||||
7746 796 8 1
|
||||
7747 796 34 0
|
||||
7750 726 8 1
|
||||
7751 726 34 0
|
||||
7752 795 8 1
|
||||
7753 795 34 0
|
||||
7756 724 8 1
|
||||
7757 724 34 0
|
||||
7758 798 8 1
|
||||
7759 798 34 0
|
||||
7762 723 8 1
|
||||
7763 723 34 0
|
||||
7764 797 8 1
|
||||
7765 797 34 0
|
||||
7768 722 8 1
|
||||
7769 722 34 1
|
||||
7770 802 34 1
|
||||
7771 802 8 1
|
||||
7774 720 34 1
|
||||
7775 720 8 1
|
||||
7776 816 8 1
|
||||
7777 816 34 1
|
||||
7780 719 8 1
|
||||
7781 719 34 0
|
||||
7782 794 8 1
|
||||
7783 794 34 0
|
||||
7792 717 8 1
|
||||
7793 717 34 1
|
||||
7794 818 34 1
|
||||
7795 818 8 1
|
||||
7804 715 8 1
|
||||
7805 715 34 0
|
||||
7806 828 8 1
|
||||
7807 828 34 0
|
||||
7810 714 8 1
|
||||
7811 714 34 1
|
||||
7812 805 8 1
|
||||
7813 805 34 1
|
||||
7819 712 8 1
|
||||
7820 712 34 1
|
||||
7821 804 8 1
|
||||
7822 804 34 1
|
||||
7823 656 8 1
|
||||
7824 710 8 1
|
||||
7825 820 8 1
|
||||
7912 850 38 1
|
||||
7915 851 38 1
|
||||
8136 826 38 1
|
||||
8137 826 38 1
|
||||
8138 826 34 0
|
||||
8139 827 38 1
|
||||
8140 827 38 1
|
||||
8141 827 34 0
|
||||
8146 844 34 1
|
||||
8147 844 8 1
|
||||
8148 844 38 0
|
||||
8149 844 38 0
|
||||
8150 845 34 1
|
||||
8151 845 8 1
|
||||
8152 845 38 0
|
||||
8153 845 38 0
|
||||
8157 847 34 1
|
||||
8158 847 38 0
|
||||
8159 847 38 0
|
||||
8160 848 34 1
|
||||
8161 848 38 0
|
||||
8162 848 38 0
|
||||
8172 13 1 1
|
||||
8173 13 3 0
|
||||
8176 823 8 1
|
||||
8177 823 34 0
|
||||
8178 824 8 1
|
||||
8179 824 34 0
|
||||
8184 718 8 1
|
||||
8185 718 34 1
|
||||
8186 817 8 1
|
||||
8187 817 34 1
|
||||
8189 754 34 1
|
||||
8190 775 34 1
|
||||
8193 859 34 0
|
||||
8194 859 8 1
|
||||
8195 860 34 0
|
||||
8196 860 8 1
|
||||
8205 721 34 1
|
||||
8206 815 34 1
|
||||
8259 875 34 1
|
||||
8260 876 34 1
|
||||
8294 878 34 1
|
||||
8295 879 34 1
|
||||
8297 760 8 1
|
||||
8298 803 8 1
|
||||
8301 862 39 1
|
||||
8302 862 34 0
|
||||
8303 863 39 1
|
||||
8304 863 34 0
|
||||
8307 868 34 1
|
||||
8308 868 39 0
|
||||
8309 869 34 1
|
||||
8310 869 39 0
|
||||
8333 856 38 0
|
||||
8334 856 38 0
|
||||
8335 856 34 1
|
||||
8336 857 38 0
|
||||
8337 857 38 0
|
||||
8338 857 34 1
|
||||
8341 716 34 0
|
||||
8342 716 8 1
|
||||
8343 793 34 0
|
||||
8344 793 8 1
|
||||
8350 779 8 1
|
||||
8351 780 8 1
|
||||
8354 884 8 1
|
||||
8355 885 8 1
|
||||
8364 871 34 1
|
||||
8365 871 39 0
|
||||
8366 872 34 1
|
||||
8367 872 39 0
|
||||
8381 887 8 1
|
||||
8382 888 8 1
|
||||
8392 889 40 1
|
||||
8393 889 1 0
|
||||
8422 893 1 1
|
||||
8423 893 40 0
|
||||
8426 890 1 1
|
||||
8427 890 40 0
|
||||
8432 895 1 1
|
||||
8433 895 40 0
|
||||
8434 894 1 1
|
||||
8435 894 40 0
|
||||
8440 891 1 1
|
||||
8441 891 40 0
|
||||
8493 742 8 1
|
||||
8494 807 8 1
|
||||
8495 808 8 1
|
||||
8505 762 8 1
|
||||
8506 763 8 1
|
||||
8507 813 8 1
|
||||
8523 746 8 0
|
||||
8524 790 8 0
|
||||
8525 791 8 0
|
||||
8529 744 8 1
|
||||
8530 809 8 1
|
||||
8531 810 8 1
|
||||
8547 896 8 1
|
||||
8548 897 8 1
|
||||
8549 898 8 1
|
||||
8562 525 8 0
|
||||
8563 686 8 0
|
||||
8564 787 8 0
|
||||
8565 739 8 1
|
||||
8566 811 8 1
|
||||
8567 812 8 1
|
||||
8574 899 8 1
|
||||
8575 900 8 1
|
||||
8576 901 8 1
|
||||
8577 892 1 1
|
||||
8578 892 40 0
|
||||
8585 902 8 1
|
||||
8586 903 8 1
|
||||
8587 904 8 1
|
||||
8591 829 8 1
|
||||
8592 830 8 1
|
||||
8593 831 8 1
|
||||
8609 682 8 1
|
||||
8610 713 8 1
|
||||
8611 819 8 1
|
||||
8612 908 8 0
|
||||
8613 909 8 0
|
||||
8614 910 8 0
|
||||
8624 905 8 1
|
||||
8625 906 8 1
|
||||
8626 907 8 1
|
||||
8639 654 8 1
|
||||
8640 709 8 1
|
||||
8641 821 8 1
|
||||
8642 764 8 0
|
||||
8643 765 8 0
|
||||
8644 792 8 0
|
||||
8648 748 8 0
|
||||
8649 788 8 0
|
||||
8650 789 8 0
|
||||
8660 832 8 1
|
||||
8661 833 8 1
|
||||
8662 834 8 1
|
||||
8663 911 8 1
|
||||
8664 912 8 1
|
||||
8665 913 8 1
|
||||
8669 917 8 1
|
||||
8670 918 8 1
|
||||
8671 919 8 1
|
||||
8672 914 8 1
|
||||
8673 915 8 1
|
||||
8674 916 8 1
|
||||
8675 920 8 1
|
||||
8676 921 8 1
|
||||
8677 922 8 1
|
||||
8681 923 8 1
|
||||
8682 924 8 1
|
||||
8683 925 8 1
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
1 CMS_ADMIN_HIDDEN CMS map node - hidden
|
||||
2 CMS_ADMIN CMS map node
|
||||
3 APP_DEFAULT APP default node
|
||||
4 APP_HIDDEN APP node hidden
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
99 0 /veikals/ 899 315 99 7 1
|
||||
119 0 /veikals/viriesiem/ 899 315 119 7 64
|
||||
120 119 /veikals/viriesiem/t-krekli/ 899 316 120 7 65
|
||||
121 119 /veikals/viriesiem/krekli/ 899 316 121 7 66
|
||||
122 119 /veikals/viriesiem/polo-krekli/ 899 316 122 7 67
|
||||
123 119 /veikals/viriesiem/dzemperi/ 899 316 123 7 68
|
||||
124 119 /veikals/viriesiem/hudiji/ 899 316 124 7 69
|
||||
125 119 /veikals/viriesiem/jakas/ 899 316 125 7 70
|
||||
126 119 /veikals/viriesiem/bikses/ 899 316 126 7 71
|
||||
127 119 /veikals/viriesiem/dzinsi/ 899 316 127 7 72
|
||||
128 119 /veikals/viriesiem/sorti/ 899 316 128 7 73
|
||||
129 119 /veikals/viriesiem/apaksvela/ 899 316 129 7 74
|
||||
130 119 /veikals/viriesiem/somas/ 899 316 130 7 75
|
||||
131 119 /veikals/viriesiem/maki/ 899 316 131 7 76
|
||||
132 119 /veikals/viriesiem/jostas/ 899 316 132 7 77
|
||||
133 119 /veikals/viriesiem/aksesuari/ 899 316 133 7 78
|
||||
134 0 /veikals/aromterapija-un-gariga-labsajuta/ 899 315 134 7 79
|
||||
135 134 /veikals/aromterapija-un-gariga-labsajuta/kristali/ 899 316 135 7 80
|
||||
136 134 /veikals/aromterapija-un-gariga-labsajuta/palo-santo/ 899 316 136 7 81
|
||||
137 134 /veikals/aromterapija-un-gariga-labsajuta/sandalkoka-kocini/ 899 316 137 7 82
|
||||
138 134 /veikals/aromterapija-un-gariga-labsajuta/viraki/ 899 316 138 7 83
|
||||
139 134 /veikals/aromterapija-un-gariga-labsajuta/viraku-turetaji/ 899 316 139 7 84
|
||||
140 134 /veikals/aromterapija-un-gariga-labsajuta/aromatiskie-sveki/ 899 316 140 7 85
|
||||
141 134 /veikals/aromterapija-un-gariga-labsajuta/sveku-difuzori/ 899 316 141 7 86
|
||||
142 0 /veikals/rotaslietas/ 899 315 142 7 87
|
||||
143 142 /veikals/rotaslietas/kristalu-rotas/ 899 316 143 7 88
|
||||
144 142 /veikals/rotaslietas/apzeltitas-rotas/ 899 316 144 7 89
|
||||
145 0 /veikals/sievietem/ 899 315 145 7 90
|
||||
146 145 /veikals/sievietem/zaketes/ 899 316 146 7 91
|
||||
147 145 /veikals/sievietem/kleitas/ 899 316 147 7 92
|
||||
148 145 /veikals/sievietem/somas/ 899 316 148 7 93
|
||||
149 145 /veikals/sievietem/topi/ 899 316 149 7 94
|
||||
150 145 /veikals/sievietem/bikses/ 899 316 150 7 95
|
||||
151 145 /veikals/sievietem/svarki/ 899 316 151 7 96
|
||||
155 120 /veikals/viriesiem/t-krekli/product1/ 899 0 155 7 2
|
||||
156 120 /veikals/viriesiem/t-krekli/dream-big-viriesu-krekls/ 899 0 156 7 5
|
||||
157 121 /veikals/viriesiem/krekli/viriesu-klasiskais-baltais-t-krekls/ 899 0 157 7 6
|
||||
158 120 /veikals/viriesiem/t-krekli/product-2/ 899 0 158 7 7
|
||||
159 121 /veikals/viriesiem/krekli/wondeful-long-sleve-t-shirt/ 899 0 159 7 4
|
||||
160 122 /veikals/viriesiem/polo-krekli/wondeful-long-sleve-t-shirt/ 899 0 160 7 4
|
||||
161 141 /veikals/aromterapija-un-gariga-labsajuta/sveku-difuzori/asd/ 899 0 161 7 3
|
||||
162 146 /veikals/sievietem/zaketes/asdasdas/ 899 0 162 7 1
|
||||
163 148 /veikals/sievietem/somas/asdasdas/ 899 0 163 7 1
|
||||
164 120 /veikals/viriesiem/t-krekli/viriesu-klasiskais-baltais-t-krekls/ 899 0 164 7 6
|
||||
165 121 /veikals/viriesiem/krekli/product-2/ 899 0 165 7 7
|
||||
166 120 /veikals/viriesiem/t-krekli/balts-t-krekls-ar-apdruku-kakis/ 899 0 166 7 1
|
||||
167 120 /veikals/viriesiem/t-krekli/wondeful-long-sleve-t-shirt/ 899 0 167 7 4
|
||||
168 122 /veikals/viriesiem/polo-krekli/dream-big-viriesu-krekls/ 899 0 168 7 5
|
||||
169 120 /veikals/viriesiem/t-krekli/balts-krekls/ 899 0 169 7 8
|
||||
170 121 /veikals/viriesiem/krekli/balts-krekls/ 899 0 170 7 8
|
||||
171 138 /veikals/aromterapija-un-gariga-labsajuta/viraki/smarzas-1/ 899 0 171 7 9
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
1 CMS_TOP CMS side top menu 0 1536222858 1777023896 1 0 2,3,4,23,32,33,36,40
|
||||
2 SITE_SETTINGS_LEFT CMS side site settings left submenu 0 0 0 0 0
|
||||
3 USERS_LEFT CMS side users left menu 0 1423321452 1423321452 0 0
|
||||
4 MODULE_CONETENT_LEFT CMS side module content submenu 0 1423321452 1423321452 0 0
|
||||
8 PUB_TOP APP top menu 0 1492694282 1492694282 1 1
|
||||
23 MANAGE_LEFT CMS side Manage left menu 0 1522160664 1522160664 0 0
|
||||
32 APP_MANAGER_LEFT CMS side App User management 0 1461249407 1461249407 0 0
|
||||
33 SITE_MAP_CONTENT_LEFT CMS side NEW Site Map left menu 0 1462202420 1462202420 0 0
|
||||
34 SYS_MNU APP System top menu 0 1546851953 1608204947 1 1 38,39
|
||||
36 ASSOCIATION_LEFT 0 1535963626 1535963626 0 0
|
||||
38 SYS_MNU_DOCUMENTS APP System top menu sub-menu with different document types 0 1591186965 1591186965 0 1
|
||||
39 SYS_MNU_ASSOCIATION APP System top menu sub-menu with different association modules 0 1608204934 1608204934 0 1
|
||||
40 E_COMMERCE_CONTENT_LEFT CMS side eCommerce content submenu 0 1777018437 1777023507 0 0
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
1 GL_APP Application side translations
|
||||
2 GL_CMS Cms side translations
|
||||
3 APP Application modules
|
||||
4 CMS Cms modules
|
||||
5 LIBRARY Library modules
|
||||
6 VIEW View class
|
||||
10 JS Javascript modules
|
||||
11 CSS Stylesheets
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
1 LOAD_SITE_TREE 4 Load site tree map data 0 1423391156 1423391156
|
||||
2 ADD_NEW_NODE 4 Add new map node 0 1423647137 1423647137
|
||||
3 EDIT_SITE_NODE 0 Edit site map node 0 1519144384 1519144384
|
||||
4 REQUEST_DATA 244 Request site map node data 0 1423401509 1423401509
|
||||
5 DELETE_SITE_NODE 244 Delete site map node permanently 0 1423401518 1423401518
|
||||
6 ADD_NEW_MODULE 4 Permission to add new template module for Programmer further development 0 0 0
|
||||
7 EDIT_CMS_TREE 4 Global permission to enable tree editing 0 0 0
|
||||
8 SYS_PERMISSIONS_ADD_NEW 0 Ability to add new type of permission for insertion 0 1349101978 1349101978
|
||||
9 SYS_PERMISSIONS_EDIT 0 Ability to edit CMS permissions 0 1349101994 1349101994
|
||||
10 SYS_PERMISSIONS_DELETE 0 Ability to delete CMS permission 0 1349102022 1349102022
|
||||
14 SYS_PERMISSION_GROUP_ADD_NEW 0 Ability to add new permission group record 0 1349102056 1349102056
|
||||
15 SYS_PERMISSION_GROUP_EDIT 0 Ability to edit permission group record 0 1349102068 1349102068
|
||||
16 SYS_PERMISSION_GROUP_DELETE 0 Abilility to delete permission group record 0 1349102079 1349102079
|
||||
17 SYS_PERMISSION_GROUP_SHOW_MANAGEMENT 0 Permission to see permission group management 0 1349102088 1349102088
|
||||
18 SYS_USER_SHOW_MANAGEMENT 0 Permission to see user management tab 0 1349102117 1349102117
|
||||
19 SYS_PERMISSIONS_SHOW_MANAGEMENT 0 Permission to see user permission management tab 0 1349101931 1349101931
|
||||
20 SYS_ADMIN_USERS_TAB_SHOW 0 Permission to see sys users menu tab 0 1352374794 1352374794
|
||||
21 SHOW_SITE_MAP 244 Permission to see site map main top tab 0 1423401524 1423401524
|
||||
22 SYS_SETTINGS_TAB_SHOW 0 Show main menu tab site settings 0 1352374896 1352374896
|
||||
23 SYS_WELCOME_TAB_SHOW 0 Permission to see welcome page with news 0 1352374957 1352374957
|
||||
24 CMS_APP_MODULE_CONTENT_TAB_SHOW 0 Top menu tab - module content 0 1463951695 1566210771
|
||||
25 SYS_LANGUAGES_EDIT 0 Permission to edit site language 0 1349102312 1349102312
|
||||
26 SYS_LANGUAGES_ADD_NEW 0 Permission to add new site language 0 1349102321 1349102321
|
||||
27 SYS_LANGUAGES_DELETE 0 Permission to delete site language 0 1349102327 1349102327
|
||||
28 SYS_LANGUAGES_SHOW_MANAGEMENT 0 Ability to see language tab in site settings 0 1349102334 1349102334
|
||||
29 SYS_MENUS_ADD_NEW 0 Permission to add new menu 0 1349348567 1349348567
|
||||
30 SYS_MENUS_EDIT 0 Permission to edit menu data 0 1349348583 1349348583
|
||||
31 SYS_MENUS_DELETE 0 Permission to delete site menu 0 1349348597 1349348597
|
||||
32 SYS_MENUS_SHOW_MANAGEMENT 0 Permission to see site menu tab 0 1349348624 1349348624
|
||||
34 SYS_PUB_TRANSLATIONS_EDIT 0 Permission to edit application messages data 0 1349352105 1349352105
|
||||
35 SYS_PUB_TRANSLATIONS_DELETE 0 Permission to delete application message 0 1349352148 1349352148
|
||||
36 SYS_PUB_TRANSLATIONS_SHOW_MANAGEMENT 0 Permission to see application messages tab 0 1349352046 1349352046
|
||||
37 SYS_CMS_TRANSLATIONS_SHOW_MANAGEMENT 0 Permission to view cms message translation 0 1349347779 1349347779
|
||||
38 SYS_CMS_TRANSLATIONS_EDIT 0 Permission to edit cms message 0 1349347825 1349347825
|
||||
39 SYS_CMS_TRANSLATIONS_DELETE 0 Permission to delete cms message 0 1349347925 1349347925
|
||||
54 CMS_LIB_MODULES 4 Show cms library modules 0 0 0
|
||||
55 CMS_JS_MODULES 4 Show cms js modules 0 0 0
|
||||
67 UPLOADIFY_PLUGIN 13 Perermission to use uploadify plugin 0 0 0
|
||||
72 CMS_MAILENGINE_OUT_SHOW_MANAGEMENT 0 Permission to see outgoing mail content 0 1350242199 1350242199
|
||||
73 CMS_MAILENGINE_SENT_SHOW_MANAGEMENT 0 Permision to see sent mail 0 1350242370 1350242370
|
||||
74 CMS_MAILENGINE_DELETE 0 Permission to delete outgoing/sent mail 0 1350242437 1350242437
|
||||
75 CMS_MAIL_CONSTRUCTOR_SHOW_MANAGEMENT 0 Permission to see mail constructor 0 1350394850 1350394850
|
||||
76 CMS_APP_USER_DELETE 0 Permission to delete app user 0 1463951799 1463951799
|
||||
77 CMS_APP_USER_EDIT 0 Permission to edit app user 0 1463951813 1463951813
|
||||
78 CMS_APP_USER_SHOW_MANAGEMENT 0 Permission to see public user list 0 1463951825 1463951825
|
||||
81 CMS_APP_MANAGE_TAB_SHOW 0 Top menu tab - manage 0 1463951690 1463951690
|
||||
90 CMS_CLASSIFICATORS_SHOW_MANAGEMENT 0 Permission to see mod content classificators 0 1349392451 1349392451
|
||||
91 CMS_CLASSIFICATORS_DELETE 0 Permission to delete classificator 0 1349649059 1349649059
|
||||
92 CMS_CLASSIFICATORS_EDIT 0 Permission to edit classificator 0 1349649085 1349649085
|
||||
93 CMS_CLASSIFICATORS_ADD_NEW 0 Permission to add new classificator 0 1349649104 1349649104
|
||||
94 CMS_MAILENGINE_EDIT 0 Permission to change outgoing mail status 0 1350242147 1350242147
|
||||
96 CMS_MAIL_CONSTRUCTOR_DELETE 0 Permission to delete mail constructor mail 0 1350394800 1350394800
|
||||
97 CMS_MAIL_CONSTRUCTOR_ADD_NEW 0 Permission to add new mail constructor template 0 1350394787 1350394787
|
||||
98 CMS_MAIL_CONSTRUCTOR_EDIT 0 Permission to edit mail constructor templates 0 1350394757 1350394757
|
||||
99 CMS_MAILENGINE_SEND_NOW 0 Permission to forcably send outgoing mail 0 1350242083 1350242083
|
||||
101 SHOW_PAGE_TEMPLATES 11 Permission to see page template module 0 0 0
|
||||
103 TEMPLATE_SAVE_RECORD 11 Permission to save template record 0 0 0
|
||||
104 TEMPLATE_LOAD_CONTENT 11 Permission to load template content data 0 0 0
|
||||
105 TEMPLATE_CHANGE_STATUS 11 Permisson to change template status. 0 0 0
|
||||
106 TEMPLATE_DELETE_RECORD 11 Permisson to ddelete template recod. 0 0 0
|
||||
111 SYS_USER_ADD_NEW 17 SYS permission to add new user 0 1349102253 1349102253
|
||||
112 SYS_USER_EDIT 17 SYS permission to edit user 0 1349102263 1349102263
|
||||
113 SYS_USER_DELETE 17 SYS permission to delete user 0 1349102272 1349102272
|
||||
116 SYS_IP_FILTER_EDIT 0 Permission to edit IP access filter 0 1349101816 1349101816
|
||||
117 SYS_IP_FILTER_ADD_NEW 0 Permission to add new ip access filter 0 1349101825 1349101825
|
||||
118 SYS_IP_FILTER_DELETE 0 Permission to delete ip access filter 0 1349101832 1349101832
|
||||
119 SYS_IP_FILTER_SHOW_MANAGEMENT 0 Permission to see ip access filter tab form 0 1349101837 1349101837
|
||||
120 SYS_CMS_TRANSLATIONS_DELETE_ALL 0 Clear whole translation table 0 1349347947 1349347947
|
||||
121 SYS_PUB_TRANSLATIONS_DELETE_ALL 0 Permission to delete whole translation table of public messages 0 1349352180 1349352180
|
||||
128 SYS_EXCEL_MEMORY_INCREASE 0 Permission to use extreme memory increase for huge xls file generation like EXCEL (260 000 rows - req ~320M) 0 1352294094 1352294094
|
||||
137 SYS_SHOW_ONLINE_USERS 0 Permission to see online user count 0 1352334630 1352334630
|
||||
143 SYS_SHOW_TABLE_IDS 0 Permission to see directly db ids 0 1357757328 1357757328
|
||||
157 CMS_MAILENGINE_ADD_NEW 0 Add new email via outgoing messages 0 1368003653 1368003653
|
||||
171 SYS_APC_OVERVIEW_SHOW_OVERVIEW 0 Permission to see apc overview module 0 1369839257 1369839257
|
||||
172 SYS_APC_OVERVIEW_DELETE 0 Permission to delete data from apc overview 0 1369839279 1369839279
|
||||
173 SYS_APC_OVERVIEW_DELETE_ALL 0 Permission to clear all data from apc overview 0 1369839292 1369839292
|
||||
174 SYS_APC_OVERVIEW_DISABLE 0 Permission to disable apc overview 0 1369839317 1369839317
|
||||
175 CMS_SPAM_SAVE_DATA 0 Permission to save spam mail data to excel file 0 1370354295 1370354295
|
||||
176 CMS_MAILENGINE_SHOW_5MIN_CRON_CALL_TIMEOUT 0 Permission to see 5min cron call timeout 0 1370380720 1370380720
|
||||
177 SYS_ACTION_LOG_MANAGEMENT_SHOW 0 Permission to see action log table 0 1380263230 1380263230
|
||||
178 SYS_ACTION_LOG_OVERVIEW_DELETE_ALL 0 Delete whole action log table 0 1380263279 1380263279
|
||||
179 SYS_ACTION_LOG_OVERVIEW_DELETE 0 Delete each record in table 0 1380263320 1380263320
|
||||
189 CMS_CATEGORY_EDIT 0 Permission to edit category 0 1395760196 1395760196
|
||||
190 CMS_CATEGORY_DELETE 0 Permission to delete category 0 1395760242 1395760242
|
||||
191 CMS_CATEGORY_ADD_NEW 0 Permission to add new category 0 1395760275 1395760275
|
||||
192 CMS_CATEGORY_SHOW_MANAGEMENT 0 Permission to see category management 0 1396690774 1396690774
|
||||
220 CMS_TEXTMANAGER_SHOW_MANAGEMENT 0 Permission to show text manager 0 1442839973 1442839973
|
||||
221 CMS_TEXTMANAGER_EDIT 0 Permission for editing in text manager 0 1442839995 1442839995
|
||||
222 CMS_TEXTMANAGER_DELETE 0 Permission to delete an entry in text manager 0 1442840015 1442840015
|
||||
223 CMS_TEXTMANAGER_ADD_NEW 0 Permission to add new entry in text manager 0 1442840031 1442840031
|
||||
224 CMS_APP_ADMIN_USER_TAB_SHOW 0 Top menu tab - App users 0 1463951685 1463951685
|
||||
232 CMS_APP_USER_SHOW 0 Top menu tab - App users - users 0 1463952181 1463952181
|
||||
233 CMS_APP_PERMISSION_SHOW 0 Top menu tab - App users - permissions 0 1463952216 1463952216
|
||||
234 CMS_APP_PERMISSION_GROUP_SHOW 0 Top menu tab - App users - permission groups 0 1463952259 1463952259
|
||||
235 CMS_APP_USER_ADD_NEW 0 Permission to add new user in app users 0 1463952851 1463952851
|
||||
238 CMS_APP_PERMISSIONS_ADD_NEW 0 Add new app permission 0 1463988880 1463988880
|
||||
239 CMS_APP_PERMISSIONS_SHOW_MANAGEMENT 0 App permission management 0 1463989028 1463989028
|
||||
240 CMS_APP_PERMISSIONS_EDIT 0 Permission to edit app permission 0 1463988982 1463988982
|
||||
242 CMS_APP_PERMISSIONS_DELETE 0 Permission to delete app permissions 0 1463989205 1463989205
|
||||
243 CMS_APP_PERMISSIONS_GROUPS_ADD_NEW 0 Add new app permission group 0 1463989441 1463989441
|
||||
244 CMS_APP_PERMISSIONS_GROUPS_SHOW_MANAGEMENT 0 App permission groups management 0 1463989468 1463989468
|
||||
245 CMS_APP_PERMISSIONS_GROUPS_EDIT 0 Permission to edit app permission group 0 1463989555 1463989555
|
||||
246 CMS_APP_PERMISSIONS_GROUPS_DELETE 0 Permission to delete app permissions group 0 1463989560 1463989560
|
||||
248 SYS_SITE_MAP_EDIT 0 Permission to edit system site map tree node 0 1463990744 1463990744
|
||||
249 SYS_SITE_MAP_ADD_NEW 0 Permission to add new tree node in system site map 0 1463990736 1463990736
|
||||
250 SYS_SITE_MAP_DELETE 0 Permission to delete system site map tree node 0 1463990724 1463990724
|
||||
251 SYS_SITE_MAP_SHOW_MANAGEMENT 0 Permission to see table in system site map 0 1463990864 1463990864
|
||||
252 SYS_SITE_MAP_SHOW 0 Top menu tab - New Site MAP - System site map 0 1463990917 1463990917
|
||||
253 CMS_APP_SITE_MAP_EDIT 0 Permission to edit app site map tree node 0 1463991094 1463991094
|
||||
254 CMS_APP_SITE_MAP_ADD_NEW 0 Permission to add new tree node in app site map 0 1463991123 1463991123
|
||||
255 CMS_APP_SITE_MAP_DELETE 0 Permission to delete app site map tree node 0 1463991145 1463991145
|
||||
256 CMS_APP_SITE_MAP_SHOW_MANAGEMENT 0 Permission to see table in app site map 0 1463991170 1463991170
|
||||
257 CMS_APP_SITE_MAP_SHOW 0 Top menu tab - New Site Map - APP site map 0 1463991219 1463991219
|
||||
258 SYS_NEW_SITE_MAP_SHOW 0 Top menu tab - New Site Map 0 1463991487 1463991487
|
||||
269 SYS_SITE_MAP_ADMIN_FOLDER_CHANGE 0 Permission to change administration link 0 1490201133 1490201133
|
||||
272 PUB_PROJECT_EDIT 0 Permission to edit projects 0 1505113304 1505113304
|
||||
273 PUB_PROJECT_NEW 0 Permission to add new project 0 1505113335 1505113335
|
||||
274 PUB_PROJECT_DELETE 0 Permission to delete project 0 1505113352 1505113352
|
||||
275 PUB_PROJECT_SHOW_MANAGEMENT 0 Permission to see project management page 0 1505113573 1505113573
|
||||
285 CMS_APARTMENTS_SHOW_MANAGEMENT 0 Permission to see cms apartment module 0 1535960387 1535960387
|
||||
293 CMS_MESSAGES_EDIT 0 Permission to edit in pub messages 0 1545916821 1545916821
|
||||
294 CMS_MESSAGES_ADD_NEW 0 Permission to add new in pub messages 0 1545916821 1545916821
|
||||
295 CMS_MESSAGES_DELETE 0 Permission to delete in pub messages 0 1545916821 1545916821
|
||||
296 CMS_MESSAGES_SHOW_MANAGEMENT 0 Permission to show management in pub messages 0 1545916821 1545916821
|
||||
297 CMS_PUB_SUBSCRIPTIONS_EDIT 0 Permission to edit in pub subscriptions 0 1545941538 1545941538
|
||||
298 CMS_PUB_SUBSCRIPTIONS_ADD_NEW 0 Permission to add new in pub subscriptions 0 1545941538 1545941538
|
||||
299 CMS_PUB_SUBSCRIPTIONS_DELETE 0 Permission to delete in pub subscriptions 0 1545941538 1545941538
|
||||
300 CMS_PUB_SUBSCRIPTIONS_SHOW_MANAGEMENT 0 Permission to show management in pub subscriptions 0 1545941538 1545941538
|
||||
301 SYS_SITE_MODULES_EDIT 0 Permission to edit in system site modules 0 1548409657 1548409657
|
||||
302 SYS_SITE_MODULES_ADD_NEW 0 Permission to add new in system site modules 0 1548409657 1548409657
|
||||
303 SYS_SITE_MODULES_DELETE 0 Permission to delete in system site modules 0 1548409657 1548409657
|
||||
304 SYS_SITE_MODULES_SHOW_MANAGEMENT 0 Permission to show management in system site modules 0 1548409657 1548409657
|
||||
306 SYS_SITE_MODULES_DELETE_FILES 0 Permission to delete module files in site modules 0 1548412598 1548412598
|
||||
319 CMS_SVN_PROJECT_EDIT 0 Permission for editing SVN projects 0 1566209819 1566209930
|
||||
320 CMS_SVN_PROJECT_MANAGEMENT 0 Permission for accessing SVN project module 0 1566209950 1566209950
|
||||
321 CMS_SVN_PROJECT_NEW 0 Permission for adding new svn project 0 1566209969 1566209969
|
||||
322 CMS_SVN_PROJECT_DELETE 0 Permission for deliting svn project 0 1566209985 1566209985
|
||||
323 CMS_SVN_PROJECT_DOWNLOAD 0 Permission to download svn project source code 0 1566216275 1566216275
|
||||
324 CMS_SVN_PROJECT_EXPORT_DEV 0 Permission to export DEV project to server 0 1566216410 1566216410
|
||||
325 CMS_SVN_PROJECT_EXPORT_EXP 0 Permission to export to Expl. server 0 1566216444 1566216444
|
||||
438 CMS_SVN_PROJECT_SVN_PERMISSION 0 Permission for Vecais svn projekts 0 0 1563276957
|
||||
439 CMS_SVN_PROJECT_BRSACC_PERMISSION 0 Permission for www.Zutenis.lv projekts 0 0 1565091273
|
||||
440 CMS_SVN_PROJECT_ABC_PERMISSION 0 Permission for Andra ABCserviss projekts 0 0 1563311036
|
||||
441 CMS_SVN_PROJECT_ASHOP_PERMISSION 0 Permission for Andra Ashop.lv projekts 0 0 1563311060
|
||||
442 CMS_SVN_PROJECT_DSD_PERMISSION 0 Permission for A.Biedris dsddeluxe EU projekts 0 0 1563311115
|
||||
443 CMS_SVN_PROJECT_DSD_LV_PERMISSION 0 Permission for A.Biedris dsddeluxe LV projekts 0 0 1563311130
|
||||
444 CMS_SVN_PROJECT_DSDL_PERMISSION 0 Permission for A.Biedris dsddeluxe landing page projekts 0 0 1563311157
|
||||
445 CMS_SVN_PROJECT_EKODOMA-KUE_PERMISSION 0 Permission for Ekodoma vecais projekts 0 0 1563311209
|
||||
446 CMS_SVN_PROJECT_KUE_PERMISSION 0 Permission for Ekodomas jaunās versijas projekts 0 0 1563311223
|
||||
447 CMS_SVN_PROJECT_LATEFEKTS_PERMISSION 0 Permission for A.Biedris Latefekts LV projekts 0 0 1563311247
|
||||
448 CMS_SVN_PROJECT_MBODE_PERMISSION 0 Permission for I.Medne MiegaBodes projekts 0 0 1563311289
|
||||
449 CMS_SVN_PROJECT_MKGROUP_PERMISSION 0 Permission for M.Brieža MKsolutionsGroup projekts 0 0 1563311330
|
||||
450 CMS_SVN_PROJECT_MMEISTARS_PERMISSION 0 Permission for I.Medne MatračuMeistars projekts 0 0 1563311348
|
||||
451 CMS_SVN_PROJECT_MP_PERMISSION 0 Permission for A.Bulavskis MediaPasts projekts 0 0 1563311415
|
||||
452 CMS_SVN_PROJECT_OMEGA_PERMISSION 0 Permission for A.Žukovskis Omega projekts 0 0 1563311432
|
||||
453 CMS_SVN_PROJECT_OMEGA_OLD_PERMISSION 0 Permission for A.Žukovskis Omega vecais projekts 0 0 1563311448
|
||||
454 CMS_SVN_PROJECT_PLASTIC_PERMISSION 0 Permission for L.Riekstiņa PlasticsGroup projekts 0 0 1563311472
|
||||
455 CMS_SVN_PROJECT_RENESCO_PERMISSION 0 Permission for Renseco projekts 0 0 1563311485
|
||||
456 CMS_SVN_PROJECT_SPECTRUMLEGAL_PERMISSION 0 Permission for I.Simpsone Spectrumlegal projekts 0 0 1563311505
|
||||
457 CMS_SVN_PROJECT_VIKREM_PERMISSION 0 Permission for Z.Cinglere Vikrem projekts 0 0 1566227672
|
||||
458 CMS_APARTMENTS_METERS_VER_DATE_CHANGE 0 Permission to change next verification date for apartments meters 0 1572861628 1572861628
|
||||
459 CMS_SVN_PROJECT_CENTRS_APLI_PERMISSION 0 Permission for Aprūpes Centrs &quot;APĻI&quot; 0 1577453827 1577453989
|
||||
462 CMS_ACCOUNT_ACTIVATION_DELETE 0 Permission to delete in account activation module 0 1585216725 1585216773
|
||||
463 CMS_ACCOUNT_ACTIVATION_SHOW_MANAGEMENT 0 Permission to show management in account activation module 0 1585216725 1585216765
|
||||
465 CMS_ACCOUNT_ACTIVATION_ACTIVATE 0 Permission to activate account in account activation module 0 1585216801 1585216801
|
||||
466 SYS_PUB_TRANSLATIONS_ADD_NEW 0 Permission to add new pub side translation message 0 1593683539 1593683539
|
||||
467 SYS_CMS_TRANSLATIONS_ADD_NEW 0 Permission to add new CMS side translation message 0 1593683564 1593683564
|
||||
468 CMS_SVN_PROJECT_ASHOPV2_PERMISSION 0 Permission for Andra Ashop.lv v2 projekts 0 0 1601640293
|
||||
469 CMS_SVN_PROJECT_CAR4ALL_PERMISSION 0 Permission for Cars 4 All 0 0 1608722489
|
||||
470 CMS_SQl_SCRIPT_EXEC_SHOW_MANAGEMENT 0 Permission to see script Executor 0 1615126587 1615126587
|
||||
472 CMS_SVN_PROJECT_MEZATIKLS_PERMISSION 0 Permission for Meža tikls - Mārtiņš 0 0 1623414992
|
||||
473 CMS_SVN_PROJECT_RITSAULE_PERMISSION 0 Permission for RitSaule - Daniels Barens 0 0 1635234699
|
||||
474 CMS_APP_E_COMMERCE_TAB_SHOW 0 Top menu tab - eCommerce 0 1777018550 1777018550
|
||||
475 CMS_APP_PRODUCTS_EDIT 0 Permission to edit in CMS APP products 0 1777020521 1777020521
|
||||
476 CMS_APP_PRODUCTS_ADD_NEW 0 Permission to add new in CMS APP products 0 1777020521 1777020521
|
||||
477 CMS_APP_PRODUCTS_DELETE 0 Permission to delete in CMS APP products 0 1777020521 1777020521
|
||||
478 CMS_APP_PRODUCTS_SHOW_MANAGEMENT 0 Permission to show management in CMS APP products 0 1777020521 1777020521
|
||||
479 CMS_APP_PRODUCTS_EXPORT 0 Permission to export in CMS APP products 0 1777020521 1777020521
|
||||
480 CMS_APP_PROD_ATT_EDIT 0 Permission to edit in CMS APP product attributes 0 1777020708 1777020708
|
||||
481 CMS_APP_PROD_ATT_ADD_NEW 0 Permission to add new in CMS APP product attributes 0 1777020708 1777020708
|
||||
482 CMS_APP_PROD_ATT_DELETE 0 Permission to delete in CMS APP product attributes 0 1777020708 1777020708
|
||||
483 CMS_APP_PROD_ATT_SHOW_MANAGEMENT 0 Permission to show management in CMS APP product attributes 0 1777020708 1777020708
|
||||
484 CMS_APP_ORDER_RECEIPTS_EDIT 0 Permission to edit in CMS APP order receipt 0 1777020830 1777020830
|
||||
485 CMS_APP_ORDER_RECEIPTS_ADD_NEW 0 Permission to add new in CMS APP order receipt 0 1777020830 1777020830
|
||||
486 CMS_APP_ORDER_RECEIPTS_DELETE 0 Permission to delete in CMS APP order receipt 0 1777020830 1777020830
|
||||
487 CMS_APP_ORDER_RECEIPTS_SHOW_MANAGEMENT 0 Permission to show management in CMS APP order receipt 0 1777020830 1777020830
|
||||
488 CMS_APP_DELIVERY_EDIT 0 Permission to edit in CMS APP delivery 0 1777020907 1777020907
|
||||
489 CMS_APP_DELIVERY_ADD_NEW 0 Permission to add new in CMS APP delivery 0 1777020907 1777020907
|
||||
490 CMS_APP_DELIVERY_DELETE 0 Permission to delete in CMS APP delivery 0 1777020907 1777020907
|
||||
491 CMS_APP_DELIVERY_SHOW_MANAGEMENT 0 Permission to show management in CMS APP delivery 0 1777020907 1777020907
|
||||
493 CMS_APP_COUNT_TO_CLASS 0 CMS APP count to classificator 0 1777021050 1777021050
|
||||
494 CMS_APP_BUYS_EDIT 0 Permission to edit in CMS APP buys 0 1777021172 1777021172
|
||||
495 CMS_APP_BUYS_ADD_NEW 0 Permission to add new in CMS APP buys 0 1777021172 1777021172
|
||||
496 CMS_APP_BUYS_DELETE 0 Permission to delete in CMS APP buys 0 1777021172 1777021172
|
||||
497 CMS_APP_BUYS_SHOW_MANAGEMENT 0 Permission to show management in CMS APP buys 0 1777021172 1777021172
|
||||
|
|
@ -0,0 +1,400 @@
|
|||
1142 Sākums
|
||||
1143
|
||||
1145 Ienākt
|
||||
1146 Meklēt
|
||||
1147 Par mums
|
||||
1148 Contact us
|
||||
1149 FAQ
|
||||
1150 No
|
||||
1151 Yes
|
||||
1152 Not a valid email address specified!
|
||||
1153 Invalid telephone specified!
|
||||
1154 Please fill in the field!
|
||||
1155 Login
|
||||
1156 Home
|
||||
1157 Login account
|
||||
1158 The username or password is incorrect!
|
||||
1159 Login successfull!
|
||||
1160 Email address or username
|
||||
1161 User login
|
||||
1162 Password
|
||||
1163 User password hidden
|
||||
1164 Terms & Conditions
|
||||
1165 Sign in
|
||||
1166 Forgot password?
|
||||
1167 Create account
|
||||
1168 Follow us
|
||||
1169 Instagram shop
|
||||
1170 Footer_company_details
|
||||
1171 Information
|
||||
1172 About us
|
||||
1173 Faqs
|
||||
1174 Store
|
||||
1175 Help
|
||||
1176 Cookie
|
||||
1177 Payment policy
|
||||
1178 Privacy policy
|
||||
1179 Return policy
|
||||
1180 Shipping policy
|
||||
1181 Terms & condition
|
||||
1182 Newsletter
|
||||
1183 Enter your email
|
||||
1184 Subscribe
|
||||
1185 Powered by lorettaSecret
|
||||
1186 Don't miss a thing
|
||||
1187 Join our newsletter and get 11% off your first order
|
||||
1188 Don't display again
|
||||
1189 Search here
|
||||
1190 Search for
|
||||
1191 See all results
|
||||
1192 Search not found
|
||||
1193 Trending search: a, e, skincare...
|
||||
1194 Notice
|
||||
1195 OK
|
||||
1196 Quickview
|
||||
1197 Add to cart
|
||||
1198 View full details
|
||||
1199 My shopping cart
|
||||
1200 No items in your shopping cart - yet!
|
||||
1201 Continue shopping
|
||||
1202 Type a note for the seller
|
||||
1203 Write your message...
|
||||
1204 Have a code? Apply here
|
||||
1205 Type your code here
|
||||
1206 Discount code button
|
||||
1207 Subtotal
|
||||
1208 Shipping, taxes, and discount codes calculated at checkout
|
||||
1209 View cart
|
||||
1210 Checkout
|
||||
1211 Wishlist
|
||||
1212 Account
|
||||
1213 Register
|
||||
1214 Forgot password
|
||||
1215 Shop
|
||||
1216 Cart
|
||||
1217 APP
|
||||
1218 GOOGLE_ANALYTICS_CODE
|
||||
1219 Lietotāja profils
|
||||
1220 You must be logged in to manage wishlist.
|
||||
1221 Index page
|
||||
1222 Shop by categories
|
||||
1223 Natural and certified organic products
|
||||
1224 item
|
||||
1225 Shop more
|
||||
1226 Our featured product
|
||||
1227 Cretified organic & natural ingredients
|
||||
1228 Shop collection
|
||||
1229 Inspired by traditional knowledge and nature
|
||||
1230 Testimonials
|
||||
1231 "Happy client"
|
||||
1232 Veikals
|
||||
1233 Passed site map doesn't exist!
|
||||
1234 No products found
|
||||
1235 Kristāli
|
||||
1236 Close
|
||||
1237 Price
|
||||
1238 The highest price is
|
||||
1239 Reset
|
||||
1240 From
|
||||
1241 To
|
||||
1242 Special products
|
||||
1243 Arrow previous
|
||||
1244 Arrow next
|
||||
1245 Filter
|
||||
1246 Grid view
|
||||
1247 List view
|
||||
1249 products
|
||||
1250 Sort by:
|
||||
1251 Newest first
|
||||
1252 Price, low to high
|
||||
1253 Price, high to low
|
||||
1254 First
|
||||
1255 Last
|
||||
1256 T-krekli
|
||||
1257 selected
|
||||
1258 Image full view
|
||||
1259 You're not alone
|
||||
1260 others are browsing this item
|
||||
1261 Eur
|
||||
1262 Inclusive of all taxes.
|
||||
1263 Shipping
|
||||
1264 calculated at checkout.
|
||||
1265 Availability:
|
||||
1266 Selling quickly
|
||||
1267 items left
|
||||
1268 Just
|
||||
1269 sold in the last
|
||||
1270 hours
|
||||
1271 Hurry! Discounts disappearing fast -
|
||||
1272 Available offers
|
||||
1273 View all
|
||||
1274 Looking for more
|
||||
1275 Ask a question
|
||||
1276 Delivery options
|
||||
1277 Enter your pincode
|
||||
1278 Check
|
||||
1279 Delivery available at
|
||||
1280 Delivery in
|
||||
1281 business days. Cash on delivery:
|
||||
1282 Delivery not available at
|
||||
1283 Quantity:
|
||||
1284 Remove item
|
||||
1285 Add item
|
||||
1286 Save to wishlist
|
||||
1287 Share
|
||||
1288 Compare
|
||||
1289 Buy now
|
||||
1290 Choose store
|
||||
1291 pickup
|
||||
1292 for faster access to your furniture favorites. Select
|
||||
1293 at checkout and enjoy a smoother, time-saving experience.
|
||||
1294 learn more
|
||||
1295 Reliable shipping:
|
||||
1296 at your door in under 5-7 business days
|
||||
1297 view details
|
||||
1298 30-day
|
||||
1299 hassle-free
|
||||
1300 returns
|
||||
1301 guaranteed
|
||||
1302 Your personal data stays
|
||||
1303 private & protected
|
||||
1304 SKU:
|
||||
1305 Return & exchange
|
||||
1306 Cash on delivery
|
||||
1307 Free delivery
|
||||
1308 Safe payment
|
||||
1309 Payment protection guaranteed
|
||||
1310 Offers for you
|
||||
1311 Size guide
|
||||
1312 Ask a question?
|
||||
1313 Name
|
||||
1314 Full name
|
||||
1315 Email
|
||||
1316 Phone number
|
||||
1317 Message
|
||||
1318 Submit now
|
||||
1319 Social link
|
||||
1320 Skip the wait - Pickup instantly!
|
||||
1321 Speedy service
|
||||
1322 skip the wait and grab your items on the same day.
|
||||
1323 No shipping fees
|
||||
1324 save money by picking up your order in-store.
|
||||
1325 Flexible pickup times
|
||||
1326 choose a time that suits your schedule.
|
||||
1327 Expert assistance
|
||||
1328 our friendly staff are on hand to help with any queries.
|
||||
1329 Select pickup
|
||||
1330 during checkout, choose the pickup option.
|
||||
1331 Receive confirmation
|
||||
1332 you'll receive an email confirmation once your order is ready for pickup.
|
||||
1333 Visit the store
|
||||
1334 head to your chosen store location at your convenience.
|
||||
1335 Collect your order
|
||||
1336 present your confirmation email at the pickup point, and our team will hand over your items.
|
||||
1337 Is pickup available for all items?
|
||||
1338 Pickup is available for most items. If an item is eligible, you'll see the pickup option during checkout.
|
||||
1339 When will my order be ready for pickup?
|
||||
1340 Orders are typically ready for pickup within a few hours. You'll receive an email notification once your order is ready.
|
||||
1341 Can someone else pick up my order for me?
|
||||
1342 Yes, you can authorize someone else to pick up your order. Simply forward them the confirmation email, and they can collect the items on your behalf.
|
||||
1343 Is there a cutoff time for same-day pickup?
|
||||
1344 Yes, orders placed before [insert cutoff time] are usually available for same-day pickup. Orders placed after this time will be ready the following day.
|
||||
1345 grozs
|
||||
1346 %VAR_URL_STEP_1%
|
||||
1347 %VAR_URL_STEP_2%
|
||||
1348 %VAR_URL_STEP_3%
|
||||
1349 %VAR_URL_STEP_4%
|
||||
1350 %VAR_URL_ORDER_RECEIVED%
|
||||
1351 %VAR_URL_PAYMENT%
|
||||
1352 Shopping cart
|
||||
1353 Customer information
|
||||
1354 Shipping & Payment method
|
||||
1355 Order complete
|
||||
1356 Only digits allowed!
|
||||
1357 Not a valid number specified!
|
||||
1358 Items
|
||||
1359 Clear cart
|
||||
1360 Order summary
|
||||
1361 Use discount code
|
||||
1362 Edit
|
||||
1363 Discount code
|
||||
1364 Apply
|
||||
1365 Discount
|
||||
1366 Total
|
||||
1367 Taxes excluded at checkout*
|
||||
1368 You may also like
|
||||
1369 Available Categories
|
||||
1370 + item
|
||||
1371 Select a category to view products
|
||||
1372 Lietošanas noteikumi
|
||||
1373 I have read and <a>agreed to terms.</a>
|
||||
1374 Reģistrācija
|
||||
1375 Create an account
|
||||
1376 Registration failed!
|
||||
1377 Registration successfull!
|
||||
1378 First name
|
||||
1379 User name
|
||||
1380 Last name
|
||||
1381 User surname
|
||||
1382 User email
|
||||
1383 Confirm password
|
||||
1384 Create
|
||||
1385 Already have an account?
|
||||
1386 Activation email has been sent. Please check your inbox.
|
||||
1387 Access Error
|
||||
1388 Oops!
|
||||
1389 Sorry but the page you are looking for does not exist, have been removed, name changed or is temporarity unavailable.
|
||||
1390 Back to home
|
||||
1391 Joined
|
||||
1392 Profile information
|
||||
1393 Address book
|
||||
1394 My wishlist
|
||||
1395 My orders
|
||||
1396 Delete account
|
||||
1397 Logout
|
||||
1398 An error occurred while processing your request!
|
||||
1399 Saved successfully!
|
||||
1400 Personal information
|
||||
1401 Date of birth
|
||||
1402 Gender
|
||||
1403 Select gender
|
||||
1404 Male
|
||||
1405 Female
|
||||
1406 I'd rather not say
|
||||
1407 Contact information
|
||||
1408 Email address
|
||||
1409 Email newsletter
|
||||
1410 I want to receive email newsletters
|
||||
1411 Save & close
|
||||
1412 Change password
|
||||
1413 Old password
|
||||
1414 New password
|
||||
1415 Repeat new password
|
||||
1416 Billing address
|
||||
1417 No billing address added
|
||||
1418 Shipping address
|
||||
1419 No shipping address added
|
||||
1420 Add or edit address
|
||||
1421 Label
|
||||
1422 Home, Office, etc.
|
||||
1423 Address type
|
||||
1424 Billing
|
||||
1425 Shipping & billing
|
||||
1426 Company
|
||||
1427 Company name
|
||||
1428 Country
|
||||
1429 Address
|
||||
1430 Address line1
|
||||
1431 Address2
|
||||
1432 Address line2
|
||||
1433 City
|
||||
1434 State
|
||||
1435 Post code
|
||||
1436 Set as default shipping address
|
||||
1437 Set as default billing address
|
||||
1438 Save address
|
||||
1439 Cancel
|
||||
1440 Product
|
||||
1441 Option
|
||||
1442 Loading wishlist...
|
||||
1443 No order placed yet
|
||||
1444 There are no order history yet. Start purchase some products and continue browsing from the shop.
|
||||
1445 Explore products
|
||||
1446 Deleting your account will anonymize your personal data, disable further logins and sign you out immediately.
|
||||
1447 Order records are retained only in anonymized form for bookkeeping and operational history.
|
||||
1448 Are you sure you want to delete account?
|
||||
1449 Orders history and all data associated with your account will be anonymized and you will be signed out.
|
||||
1450 Current password
|
||||
1451 I understand that this action cannot be undone.
|
||||
1452 Delete
|
||||
1453 My account
|
||||
1454 User password successfully changed!
|
||||
1455 Awaiting payment
|
||||
1456 Processing
|
||||
1457 Payment
|
||||
1458 Order id
|
||||
1459 Date
|
||||
1460 Statuss
|
||||
1461 Note
|
||||
1462 Template not found!
|
||||
1463 Cost summary
|
||||
1464 Email me with news and offers
|
||||
1465 Your name
|
||||
1466 Surname
|
||||
1467 Your surname
|
||||
1468 Phone
|
||||
1469 Zip code
|
||||
1470 Same as shipping address
|
||||
1471 Save & continue
|
||||
1472 Shipping notes
|
||||
1473 Order notes
|
||||
1474 Shipping method
|
||||
1475 Choose a shipping method:
|
||||
1476 Payment info
|
||||
1477 Choose payment method:
|
||||
1478 Place order
|
||||
1479 Return to cart
|
||||
1480 Thank you for your order!
|
||||
1481 You will be able to track your order status at your <a href="[%url%]" class="d-inline-block body-primary-color text-decoration-underline">order page</a>
|
||||
1482 Search
|
||||
1483 Your search for
|
||||
1484 revealed the following
|
||||
1485 Go to search
|
||||
1486 No item
|
||||
1488 Status
|
||||
1489 Address saved successfully.
|
||||
1490 Removed from wishlist.
|
||||
1491 My favorites
|
||||
1492 Your wishlist is empty
|
||||
1493 Password recovery
|
||||
1494 Reset your password
|
||||
1495 Sorry, we couldn't identify user!
|
||||
1496 Congratulations, a new password has been requested.
|
||||
1497 Please provide the username or email address that you use for your system account.
|
||||
1498 We will send you an email that will allow you to reset your password.
|
||||
1499 An email with password reset instructions has been sent to your email address.
|
||||
1500 If you still cannot access your account, please contact your administrator!
|
||||
1501 Send verification email
|
||||
1502 Back to Login
|
||||
1503 Džemperi
|
||||
1507 Clear all
|
||||
1508 Showing <span>x</span> products
|
||||
1509 Showing <span>x</span> product
|
||||
1510 Jakas
|
||||
1511 Vīraki
|
||||
1512 Added to wishlist.
|
||||
1513 Product already in wishlist.
|
||||
1514 Please select product options before adding to cart.
|
||||
1515 <a>Shipping</a> calculated at checkout.
|
||||
1516 In stock
|
||||
1517 Out of stock
|
||||
1518 Product unavailable!
|
||||
1520 Back to category
|
||||
1521 Sorry but the product you are looking for does not exist, have been removed, name changed or is temporarily unavailable.
|
||||
1522 Product not found
|
||||
1523 Piegādes politika
|
||||
1525 <b>Reliable shipping:</b> at your door in under 5-7 business days <a>view details</a>
|
||||
1526 Atgriešanas politika
|
||||
1527 Choose store <b>pickup</b> for faster access to your furniture favorites. Select <b>pickup</b> at checkout and enjoy a smoother, time-saving experience. <a>learn more</a>
|
||||
1528 <b>30-day</b> hassle-free <b>returns</b> guaranteed <a>view details</a>
|
||||
1529 Your personal data stays <b>private & protected</b> <a>view details</a>
|
||||
1531 Privātuma politika
|
||||
1532 No item added yet
|
||||
1533 Sorry your cart has currently no more products, click on 'explore products' button given below for continue browsing.
|
||||
1534 Registration form
|
||||
1535 Please activate your account before continuing.
|
||||
1536 Waiting for email activation
|
||||
1537 Profile
|
||||
1538 Cookies
|
||||
1539 Maksājumu politika
|
||||
1540 Payment terms
|
||||
1541 Krekli
|
||||
1542 Powered by
|
||||
1543 There are three main types of cookies that we follow on the
|
||||
1544 website.
|
||||
1545 By browsing the site, you accept the use of necessary cookies. You can also accept the use of other cookies.<br/>For more information <a href="[%REPLACE_URL%]" target="_blank">click here</a>
|
||||
1546 Necessary
|
||||
1547 Statistics
|
||||
1548 Preferences
|
||||
1549 Accept selected
|
||||
1550 Accept all
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
1 1565091529 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDA3OTQ4OWVjYTcxMTRjZjI5YWQ3MGEyN2E3MTQzYzkxMWM1ZmVlYzBmYzIwOWRjNzhlYjJhNWI1ODMxZTkxZmY0ZTk4ODA3MzVmMjgxNTI5MTBhMDgwODQ4ZGZmY2ZlZmNiNGFiZWQxZTEzYzUzYjhiMzk1MmFiOTVjMDg3Zjk5NDZkNzNjNTkzMWMxYmRhMjQ3Njk2NTRjNmI2NjVlYjljYzdlM2MzNTJiMDg2MzQ2N2QyOTNiYzE0NWVjNDU0MGNkYmNmOTM5MzUxMmEzMDRjNGNiMmIwZDEwMDY5YThlYzA3ZmI5OWI5YTM4MzhkYzI5M2EyZGVhMjIxYjE5NGMzNjIyN2NkNTYxZA https://www.zutenis.lv/ajax/id:ZGVmNTAyMDAyOTcyYmRkOWUxMmE3YzkxNDJjMzViY2RlNjg3Y2NiZDViM2JiNjM1NjBmNDM5Zjc1ZTYxMmZiMzRlMzExNWQyNzU3Yjc0MmJhN2E1YmVmZWYzZTNiMTdmNmQ2YTZmNDk2MWMyZjVkMWYwNTE5MjBlZTkzMzlhZmE4NmIwMGFjMGIwOTQzNGIyZjVkMGNmZTJhYjcwOTVjNjYyMmFkZTNjNWI/ac:init_project_update_pcheck/2fa:039982 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDAyOTcyYmRkOWUxMmE3YzkxNDJjMzViY2RlNjg3Y2NiZDViM2JiNjM1NjBmNDM5Zjc1ZTYxMmZiMzRlMzExNWQyNzU3Yjc0MmJhN2E1YmVmZWYzZTNiMTdmNmQ2YTZmNDk2MWMyZjVkMWYwNTE5MjBlZTkzMzlhZmE4NmIwMGFjMGIwOTQzNGIyZjVkMGNmZTJhYjcwOTVjNjYyMmFkZTNjNWI/ac:init_project_update_status_update/ 3.0.227 4
|
||||
2 1565102559 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDBlMmNiMGY2ZmRjNWY4M2I3MzExMzgzNzk4MjRjZGYxZTU5ZWNjOGE3NjE2MWE4NWRhMzYzOWI0NmVkNWE3YWZhYWY1NjY2ZmUyYjM4YjhiNDNiNTFhNjQyNTJkM2I3YjgzNWE4NTM4YjYyNjIyYmUzYWY3YmVkNTQyY2I5YWNlMmU2MDJmMGNiOWM1Yzc5YjE3YjQ0NmJlOGVjZWRmY2VjYjY3Njc5NjRhZDAyZWU5NmNiNDlmYjI5ZWJlOWM4NTc2MGFiZGExNzQ4MjI2MmVkNzE2ZDE5ZGIwMGZhMWM3MWFjOGU1ZmQzMTJhMjJjZmQ3MmViMmRmMDc2MWQwMjc4NjA3ODVlN2ZjNQ https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBkYjVlNGU3ZTVhN2E3MTQxOGIzMjczYTRkZWYzY2ZhYTg5MWRhZWZkMDAwYjE0NTVjMmFmOWE0NWMyMDEwZTNlYjgxMTI4MGRlZDQyNmZlM2NlODBkNjA3MWQzMjkyOWYwMTgwMTVjMDc3ZjEzZGY4MjNkNzQ1ODUwMzY0ZWJkZDViMDNmNmRjMjZiZjA2MDMwYmNiNzZhOTdkZGMyOWE2/ac:init_project_update_pcheck/2fa:969359 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBkYjVlNGU3ZTVhN2E3MTQxOGIzMjczYTRkZWYzY2ZhYTg5MWRhZWZkMDAwYjE0NTVjMmFmOWE0NWMyMDEwZTNlYjgxMTI4MGRlZDQyNmZlM2NlODBkNjA3MWQzMjkyOWYwMTgwMTVjMDc3ZjEzZGY4MjNkNzQ1ODUwMzY0ZWJkZDViMDNmNmRjMjZiZjA2MDMwYmNiNzZhOTdkZGMyOWE2/ac:init_project_update_status_update/ 3.0.227 4
|
||||
3 1565102608 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDA1NjkwZTQ0M2FhNTg5OTQwNmZhYjg0YjQzYzFjZmExZmRlMzQwOWFiNDA4YWRhZjM2NjNlYzQwMjUzM2ExMGNhNjNhZGEwN2E0NDQ5YTk3NzBjMDZiNmQ5MGYyZmExNTkwZjNmYmNiMDdmOGQxNzcyMzdkMzgwZDQxNTY2Y2E5ZWYzOWEzYjdjOGEzNTJiNGYxOWY1ZDgyMmY1NzQ4ZGUxN2EwYjI0NWVkMmJmNDg3YWNmYTczNTMxMTAzZmNkNGE4OTJlMGVlYjczZWI1MDNkMzUxYWZmMTA1NTlhNjE5NzEyMGVkY2NlZTIxNTc5MjA3ZWY4Zjc5OWRhZTViZTQxY2I2N2EzY2U2Nw https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBkMGU5MmUzZjY0NGFmYjc3ODAxMmYzMzdjNjIxNjAxNjUwYzk0Nzk0MDI3N2UwYzE5ZWMyZTAyYTc5Mjc0NWU2Mjg3ZGYxNzJhZjBjZDRhOGYzYTgwYjI4M2E1NjZkZmE1YjBhNjE0OTZlNmMxNjVlM2FhZWNjNDMxOWMyZTZjYzE2NTRkZTNiZDVjNGRjM2UxODI4MzhjOTg4YzBlNDU3/ac:init_project_update_pcheck/2fa:166422 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBkMGU5MmUzZjY0NGFmYjc3ODAxMmYzMzdjNjIxNjAxNjUwYzk0Nzk0MDI3N2UwYzE5ZWMyZTAyYTc5Mjc0NWU2Mjg3ZGYxNzJhZjBjZDRhOGYzYTgwYjI4M2E1NjZkZmE1YjBhNjE0OTZlNmMxNjVlM2FhZWNjNDMxOWMyZTZjYzE2NTRkZTNiZDVjNGRjM2UxODI4MzhjOTg4YzBlNDU3/ac:init_project_update_status_update/ 3.0.227 0
|
||||
4 1565102711 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDBkZWQ4YzA1NjIzOWE3YWUwZmI4NDRjNTAyNmY2M2NiNTY2ZGI2MjRkOGQ1Yjc5NzBlNjZhMTgwMzU0MGUxNjk3NDVmNzU4YjRkYWRhZTE3Nzg5ZjNlZjQxYTI5ZDIxYjUzMzI4ZDBjOGJhMjJkMTBmMjU2NTZjMGI0ZjQ4Mjc0YzQ2M2FkYTRiZDUzMWY4NmIwYWEwYjNlMjRlMjZlNjIyZTExMGM2Y2FiOGVmZDg5MjlkMjczZWMxNzdhMWMyMjMxODg4MjU4MTkyODAyNDRkY2RlMGJiOTU3MWQxOWU3ZmUxMmE0ZWFiYTM2MWQwNGIyOWU3MDQ3M2NhY2ZkYzE1ZDRiYWEzYjFkYw https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBmYmIzN2JmMWY0YTE3NDk5NTFlNmEyMjIwYjUxMmZlMWUyN2YxYmRkOGI1ZTQ2MTEzMzg1OTIyZDQyMWNiNDBlNmE2NWZjYjIyOTc3YzVmYTRjOTFmZGQzODIyZGU3OGM0Y2Q1MDdjNzAwZWEwM2NmZTM4MGU0Y2NiYmIxZWQzZGZlMTYxMzc1NTg2ZTgyODIzZWRiZTY4NjE5YjFmZmM3ZWM/ac:init_project_update_pcheck/2fa:279232 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBmYmIzN2JmMWY0YTE3NDk5NTFlNmEyMjIwYjUxMmZlMWUyN2YxYmRkOGI1ZTQ2MTEzMzg1OTIyZDQyMWNiNDBlNmE2NWZjYjIyOTc3YzVmYTRjOTFmZGQzODIyZGU3OGM0Y2Q1MDdjNzAwZWEwM2NmZTM4MGU0Y2NiYmIxZWQzZGZlMTYxMzc1NTg2ZTgyODIzZWRiZTY4NjE5YjFmZmM3ZWM/ac:init_project_update_status_update/ 3.0.227 4
|
||||
5 1565103087 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDBkMDBlZWZiZGQxMjI0MGE5Mjc3OGUzZTU5MWRlNWUxMGM4MWQ0Y2U1ODIyYWZjZTUwYzg0YjUyYWQwZDNiMmNkNzdlNmMyNzg0Y2ZiM2Q1ZjM3MmFjNDNhYmY1NTFiMzZmMGZkMmZmMDBkYmEwMTU5YmY1OWJhNjdkNDJlNjBmMzQwZGU5OGQ4MDQ1OGE4MzNkZTAxYjcwZTI1ZTZlZDJkNTNhYmFkYjEwNDA4MDk2OTRiNTE4MzllZWQxYTk4ZTY4NWM5MzE4NjY0YWZhNjZjNWNhZGY3MmYzZDNiM2ZjYmFjNmQyYWQ5MWYyMjcyNWNjYmRmYzUwNDAzMDUxMGQ0MjExYjdkNjRiNQ https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBlNjY3YTBlMDVmMDRjMzAwOTAzNjczYTY4OTEwNjJmYTNmNjA0YmVjNmRjNjY0ODQ1MjIzNTBjZGU4NzViNWQ3NjVkNjQ5ZjY4MDI4NjYxMjM4ZDc2Y2M2ZTI2Mjc0NmEwOGI0NDVmZjRkNTdlZWNiNWEyN2QyYTk5N2MzYmE5ZWI0ZTk1N2MxY2Q5YjllNGU5NDFmNzM3NWQ2YjFjY2JjZjA/ac:init_project_update_pcheck/2fa:631964 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBlNjY3YTBlMDVmMDRjMzAwOTAzNjczYTY4OTEwNjJmYTNmNjA0YmVjNmRjNjY0ODQ1MjIzNTBjZGU4NzViNWQ3NjVkNjQ5ZjY4MDI4NjYxMjM4ZDc2Y2M2ZTI2Mjc0NmEwOGI0NDVmZjRkNTdlZWNiNWEyN2QyYTk5N2MzYmE5ZWI0ZTk1N2MxY2Q5YjllNGU5NDFmNzM3NWQ2YjFjY2JjZjA/ac:init_project_update_status_update/ 3.0.227 4
|
||||
6 1565104331 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDA3MmRiNTdhZDNkNDc2ZDUxOTkwMjc5Y2Q2M2ZiOWI4ZDUzN2U3MGRmOWNlZGFhODA0YjAzY2E5NDRhNTQ1NWYwZjQ0YWQ4MGViMjAwOTE1Nzc3MmY5YWMxNjM0M2M2ZmNmZDk4MGE2NzdkMjM1MmU1NDg3N2E0NDFmYTExMzQwMmY5M2MyYmY1MWVlMzdhMGIxN2E2YmZlMWVhMWViZDg5Mjc4YzNhZTA2MDdjODhjNzFmMDE3M2FlMmI0ODk5ZTMxMTJmMjNkM2YwYWJmZDZhNzZkM2JlOTgwNjViYTIxMzYxNmMzOTBhMjBiZjFlOGNjMWUzM2Q5MTIzMmFhYjk2MTU1NmQ0YTM3NQ https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBhM2Q3MTdlMmM3Y2U1YzFlMDYyYjcyNjViM2JkOGE3YTUxN2I3YTU5NDRkMzc3NWI3MTAwYjEyNWU0ZGUwZjA0ZGM5MzNkZTc4ZjAxMWVlYWY0Zjg4M2JjY2E4MDJmMGQ5NDU5MTk4NjAzNzkzNmQ4M2E5Yzk2Yjk0OGJhZDM2OWQ5MmVlYzQ3NjkyYTgzOGZmMGU2NGY0NDJmZTcxM2YyYTY/ac:init_project_update_pcheck/2fa:580379 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBhM2Q3MTdlMmM3Y2U1YzFlMDYyYjcyNjViM2JkOGE3YTUxN2I3YTU5NDRkMzc3NWI3MTAwYjEyNWU0ZGUwZjA0ZGM5MzNkZTc4ZjAxMWVlYWY0Zjg4M2JjY2E4MDJmMGQ5NDU5MTk4NjAzNzkzNmQ4M2E5Yzk2Yjk0OGJhZDM2OWQ5MmVlYzQ3NjkyYTgzOGZmMGU2NGY0NDJmZTcxM2YyYTY/ac:init_project_update_status_update/ 3.0.227 4
|
||||
7 1565104507 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDAxODg2YWFmNzNmNDc2MTc3MDg0Mjc0NDkwODkxMTcyMmM3MWQzODJhZjIwOTBjMGVhNGI3MWZiYTM2MDA5NzFmNjAxNTIzZmI5ZjFlNmU2NTAzYWMzZTM5OWQ0MDMyYzkxN2YxMjMxMTgwYmU5MjQ1YTExYzM3NmFhOTk2MjRmNmVhN2Y1NzZmNzI2N2YyNmU0N2U1NGJhNjBiOGZhOTI1ZTMzZjFmNDMxZjkzZjdjN2RjY2Y3ZDg3ODhkMjA1N2IwM2VmZGExZmY1ODMzMWExNWU4M2M4ZTcxOGJkNWZiM2YyNTQ3OWIyY2QwMGIxYTQ4ZWY1NTcxMzUxZjQxMjRlOGJjMTZlYzRmOQ https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBkYzk0YWU2YjA0MzE3NTU2NWYxNThiMDM0Mzg2MDNjMjY5YTk5ODk0NjJlN2ViNTY1NzdhMDlkNzZmMTU4MjYzMWY4NTEwYTc0ODA4MjNhZGQyMTE2ZTZlYjYxMTAyZWE5MDY5MTkxODJjZDhkMzJjMDM5OTViZjVmNDdjMTM4NDJiODc4MzI4YjU4MGY5NmM0ODEyNmI4OTFlMTRiMjU2OGQ/ac:init_project_update_pcheck/2fa:870638 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBkYzk0YWU2YjA0MzE3NTU2NWYxNThiMDM0Mzg2MDNjMjY5YTk5ODk0NjJlN2ViNTY1NzdhMDlkNzZmMTU4MjYzMWY4NTEwYTc0ODA4MjNhZGQyMTE2ZTZlYjYxMTAyZWE5MDY5MTkxODJjZDhkMzJjMDM5OTViZjVmNDdjMTM4NDJiODc4MzI4YjU4MGY5NmM0ODEyNmI4OTFlMTRiMjU2OGQ/ac:init_project_update_status_update/ 3.0.227 4
|
||||
8 1565104691 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDAyZTBiNmE2NGI3YjEyODBkYjY3N2Y4N2U1MWVhOWQyMjk2ZWU3MmRlOTEzMGFhY2U1ODY1Y2QxMDMzOTM3MGE2NjFiNjFjM2JiNGMzNGJiZjcxZDE4YzYxNzBjZDdjYWNkZjA0N2VjMjdiYTAyNWY2OGRjNjRlZjgxNzg5NDNmMzRlNDEyOWNmZmI1ODAxZWY2MGIzOGNlNzJhZTUyMDA5NDZmOGFjNjk4NzViMGQ0MzI5ZWFiNGQ0ZjA2MmRiNGIzMmMyODNkMjY0NDZjODY1YzA3M2M0Y2UwZjZlN2I1ODE3Y2EyM2VlMDM2OTY0ODYwNTBiYzJmNjliMjgxNDRiZDZkZTM0OTJhOA https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBlMmE4OGNkZjVhNDNlZWMzODczYzZkYTQ3ODQ4NjlkNzJjYzc4MWYyNzY1MzkzNjk3YTE0NjE0ZjEzYzY4NTU1YWZiN2Y0NzIzMWQzNDI2OTRhODM2OTk0ZWY4M2E5YzRkYWMxNWIzMmY0M2Q1MWQ2YTYxZGZiMDc3NTdlZmNlYzI5YzRkZjI4MzdiNWNmODU2ZmIxNGU0OTkzOThhM2UwNjE/ac:init_project_update_pcheck/2fa:395703 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBlMmE4OGNkZjVhNDNlZWMzODczYzZkYTQ3ODQ4NjlkNzJjYzc4MWYyNzY1MzkzNjk3YTE0NjE0ZjEzYzY4NTU1YWZiN2Y0NzIzMWQzNDI2OTRhODM2OTk0ZWY4M2E5YzRkYWMxNWIzMmY0M2Q1MWQ2YTYxZGZiMDc3NTdlZmNlYzI5YzRkZjI4MzdiNWNmODU2ZmIxNGU0OTkzOThhM2UwNjE/ac:init_project_update_status_update/ 3.0.227 4
|
||||
9 1565105002 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDBiZjhmMWM4ZDNjNGQ5Njg3MDc3NTAyNGQ0NmMyYjk0OTA2MjY3NjJiMTM3YTNhZjNiMzQ1MDQ0OGQwYmNmM2JkYzBjYjZlZTU4NGJlODVmM2NhODI3ZDk4OTVhYmJhOGM0MTk4ZWFiMTdkNGU4N2FlYTg1NTQxNGY0NGM2N2YxODUxYTFlMDI0YmVhMjdlYjE4MzVkZWRiN2QxMTUxZjQyZTBkZGUxYTFlY2Y3ZTAyN2U2ODkxMTU5NzcyMThjNDlhMmExY2VjNjY4OWViZTg2OWI2ZDRhOGJlOWI3YzdkMGI0ZWQ0NGJiMDhjN2IyMzU3MmY3MmZkYzcxYjZhNmY5N2I5MjIyYTA3MA https://www.zutenis.lv/ajax/id:ZGVmNTAyMDA5NTVmNmI0ZGExMGIyMDdiY2IwMTM4OTI2MWJhZDliNzAyZGIyYjI3YWRjNTdjNGJlMmRkODY3YTVmOWE5Njk0NDk2NzY5YmMzYmIwNmU2Mzg1Mzk5MzFiNWM1YTBmZWU0ZjM3NDk2ODY0OTBiYmI5ODViZTIxMDM0OTRmYWMzN2E2YWIzMjVjNTE2OGVkZTVmMzJkYWVhNTA0OTI0NzE0NmQ4Mg/ac:init_project_update_pcheck/2fa:477209 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDA5NTVmNmI0ZGExMGIyMDdiY2IwMTM4OTI2MWJhZDliNzAyZGIyYjI3YWRjNTdjNGJlMmRkODY3YTVmOWE5Njk0NDk2NzY5YmMzYmIwNmU2Mzg1Mzk5MzFiNWM1YTBmZWU0ZjM3NDk2ODY0OTBiYmI5ODViZTIxMDM0OTRmYWMzN2E2YWIzMjVjNTE2OGVkZTVmMzJkYWVhNTA0OTI0NzE0NmQ4Mg/ac:init_project_update_status_update/ 3.0.227 4
|
||||
10 1565105466 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDBhYzhlNDZlMGM0ODMzZDliYjBhZDdjMWY2MmFjZjlhYjE3ZmQyNTM2NjE1MjliM2FiYTQ1OTc2MDYwNzBiODVjNjZlOThhYzAzNGU4OTUyYTkxYWUwZjBjOGI4YWQ4MjY5ZGM1NjQxZGZiZWE2MmI5ZDkwN2E5OWJlZWFkNWE4NzVjZmQ0ZmY3MDI1ZDc1ZGYxZDkwYzUxMGZiNmU5MTFhM2RhOWMyYjFmZDE2MTc2YTFjMGM1OGM4MGU4Yzg4MjkyYmY1OGU5MmI2YTY0MzlmZGY5MDVkZmM0YTIzMTg0ZjJhMGQ4NWE1NmJmYjFhOTIwYTA2OTI0ZjMwYWMxYjE5YjRkNGIzZTNkZA https://www.zutenis.lv/ajax/id:ZGVmNTAyMDA1ODQ5NWIyYTQ2NzNlM2QyMmRlZmY1NmYyNzM0OWQyNDdhOWE0N2VjZDFlMzlmOGExNjBiNGU1OGZjMzIwYTgxMjY2NDlmMmNlZjk4NjJhMDRhMGQ4YjhmZTlkNWJlZDJmNDUzYTRmZDU1NjQ1YzgyYzUzZTZkMmQ4ZWU2ODIxMTc2NTk0NTU4ODc3ZWFmOTJjNDYwNGIwYmMxYjI0Mjk2MGU0OA/ac:init_project_update_pcheck/2fa:606334 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDA1ODQ5NWIyYTQ2NzNlM2QyMmRlZmY1NmYyNzM0OWQyNDdhOWE0N2VjZDFlMzlmOGExNjBiNGU1OGZjMzIwYTgxMjY2NDlmMmNlZjk4NjJhMDRhMGQ4YjhmZTlkNWJlZDJmNDUzYTRmZDU1NjQ1YzgyYzUzZTZkMmQ4ZWU2ODIxMTc2NTk0NTU4ODc3ZWFmOTJjNDYwNGIwYmMxYjI0Mjk2MGU0OA/ac:init_project_update_status_update/ 3.0.227 4
|
||||
11 1565115469 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDA3ZmMzYzE1MzcyYTIxMDRjMTZmNTRkY2UzZTY5N2VlYWQ5YTgxZGIxYWUzMDA5YmQ1ODY4ZjE5MjBkYjRiZTQ1MDhiYzQ3ZTVjN2E5MGVmMTZmNmFlMGRlMjJhYTk4YTYwZjY3OTM2MDRiMGM0OWFhMzVkYWQ5MWRmOGNlMWJlOWE5YjdhNmQzM2EyNGYwMWU1NjA0MTQ1MTE3YTEwMmQ5MmI0ZTVjODBhMzNkZWFjYmI1NTYwOGI0ZGYwMGJiMmY0YmFmN2Y4MDVkZDM1NzY2MDQ0M2NlZWFkNDkyZDBhNzAzMjk0Y2E3YzMzM2ViNmEyZWRjMmEwYzc0NjdhY2MxMzk1YjQ1Zjk0MA https://www.zutenis.lv/ajax/id:ZGVmNTAyMDA0MDM0ZTNiMGFmN2IxZmZiZDhkZGJmYjJiNDI5NDQ3NzA4ZjljNGU2YzZmMzViNTg4YTJkZjRkMDI3ZDM3NjM0YzUzMTgyNzA4Yjk3Y2ZkMmZiOWVhZDQ2M2RiNTczYjM2MmJlYjg3NzEyODc5OTM4MzQ0YTU1MmE1NmQ0MjY4MWJmNTk5Nzc5MzQ2NDUwMmVmNTU1M2E2ZmNlMGM5NDZmOTU1ZA/ac:init_project_update_pcheck/2fa:906870 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDA0MDM0ZTNiMGFmN2IxZmZiZDhkZGJmYjJiNDI5NDQ3NzA4ZjljNGU2YzZmMzViNTg4YTJkZjRkMDI3ZDM3NjM0YzUzMTgyNzA4Yjk3Y2ZkMmZiOWVhZDQ2M2RiNTczYjM2MmJlYjg3NzEyODc5OTM4MzQ0YTU1MmE1NmQ0MjY4MWJmNTk5Nzc5MzQ2NDUwMmVmNTU1M2E2ZmNlMGM5NDZmOTU1ZA/ac:init_project_update_status_update/ 3.0.227 3
|
||||
12 1565115849 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDBiNjUxNzIyMTk2ZTI0ZTQ2MWYwNGMyZjM4MGM3YWM3ZDM0NGZjZDlkYTQxYWYxODIyZTAzZTI3ZGU0N2VlOWZiMDhiNDBmY2RmYjA0NmM0NzdlOGMzNmE5MWVlM2FhYTEzMjlkMjY0NjM5ODZhNzY3MWQxNjUwZjQ4Nzg3MzExYWUzYjM5NjBlOGRhNzgwZmY2YmQxMTNlZDI1OTIxZGQyNDBiZjFiMDc4ZDFhYTE5MjhhMTFjM2Y3NzBmZDc2MTE3MjAxZGUwY2YyMjlmOWQyZmYzMTM0YTk5NzY1MGUxZmJhOTU0Yzk2OTczYjdhNWJmMzczMGFiOTZlNmM0MjgyZjNjMWIzMDBlYg https://www.zutenis.lv/ajax/id:ZGVmNTAyMDA0YzJkZTMwMmQ0NTcxZmQ5ZGFlMzhmYzY0YTE1OGYxY2Q1ODYwOTczYWI1OTQ0ODYzYWVmMzMzNGU5MWYwODlhZDdhMGNiZGM5YjlmODA4NmM5NmM1ZTY3YTBlYTFkOGNkNjg4Y2I1OWUwZTZjZWU4NjM2MDc1NThkNTQ5YTZhZWY1NDhhZDkxNjliYmVjZDVmOGI5YTdhN2YyMTViOWI3MGIwZg/ac:init_project_update_pcheck/2fa:947179 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDA0YzJkZTMwMmQ0NTcxZmQ5ZGFlMzhmYzY0YTE1OGYxY2Q1ODYwOTczYWI1OTQ0ODYzYWVmMzMzNGU5MWYwODlhZDdhMGNiZGM5YjlmODA4NmM5NmM1ZTY3YTBlYTFkOGNkNjg4Y2I1OWUwZTZjZWU4NjM2MDc1NThkNTQ5YTZhZWY1NDhhZDkxNjliYmVjZDVmOGI5YTdhN2YyMTViOWI3MGIwZg/ac:init_project_update_status_update/ 3.0.227 3
|
||||
13 1565116438 https://www.zutenis.lv/a:file/p:1/f:ZGVmNTAyMDBhMjFiMDdlMzhjODZhM2YwYjY4OWQ0MmM0ZDU2ODZlNWY4MzJhNDgwOTU3YzYxYTk4MTQzNjdhYmE4ZmZiZTExZGZkNWI3MzdjYTY2NzQ1ZWExNmU4ZGVmZTM3NmZjYzUzNjg3NjRiODcxNGY3ZGNkMzUxMDhhZWM5ZjU4MmU0ZDYxZjI1MjlhMzQyNmQ3ODRiNTY2MzQ4ZmNiZmRhZTZiZjA1MWNjNjFiOThlODU2MDI3MjBlN2JmNzQ4MWVkZDc3ZjkzYjAxNjIzYTM5YmU3NmZhYjM2ZjJkNjMzNmQ2YjkyYTZlNzQxMTliNTM5MGVlMDJiNzJiMTc2MzhjMDU0OGFjY2Y3YWY5Mg https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBjZDFiNDk4ZDQ5MzFkOGZhMjJjOTE5ZGM5MGQ3NGM0YzAzZDhmMmNmMzQ2NmEzZWFkYTgzZTRkZDI3MjQ5ZmRiY2MyZDgwNmI0MDczMzY3MDc2MGQwZDk3ODg0MjE0ZDE0MDRhYzY4MGZiMTM5ZmUzOTViNTg5Yjk1ZGUxY2M3MjM5NGUzNzNlNTM1NDhlMzc0NDA1NzUxMmMxYmQ0YjJhOGI4OQ/ac:init_project_update_pcheck/2fa:880333 https://www.zutenis.lv/ajax/id:ZGVmNTAyMDBjZDFiNDk4ZDQ5MzFkOGZhMjJjOTE5ZGM5MGQ3NGM0YzAzZDhmMmNmMzQ2NmEzZWFkYTgzZTRkZDI3MjQ5ZmRiY2MyZDgwNmI0MDczMzY3MDc2MGQwZDk3ODg0MjE0ZDE0MDRhYzY4MGZiMTM5ZmUzOTViNTg5Yjk1ZGUxY2M3MjM5NGUzNzNlNTM1NDhlMzc0NDA1NzUxMmMxYmQ0YjJhOGI4OQ/ac:init_project_update_status_update/ 3.0.227 2
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
1 SYS_PERMISSIONS Group for full permission handler 0 1423392073 1423392073
|
||||
2 SYS_PERMISSION_GROUPS Full Manage user groups global permissions 0 1423392077 1423392077
|
||||
4 SYS_SITE_MAP Site map full control package including Programmer development Kit 0 1423392469 1423392469
|
||||
5 SYS_LANGUAGES Global site languages permissions 0 1423392293 1423392293
|
||||
6 SYS_MENUS Global site menu management 0 1352374986 1352374986
|
||||
7 PUB_MESSAGES Global permissions to edit & see application messages. 0 1352374493 1352374493
|
||||
8 SYS_MESSAGES Global full permission to handle cms messages. 0 1352378047 1352378047
|
||||
23 CMS_CLASSIFICATORS Group ment for manageing clasificators 0 1423401314 1423401314
|
||||
24 TEMPLATE_MANAGER Permission group for managing tempalte data 0 0 0
|
||||
25 SYS_USERS SYS side user manipulation operations 0 1352375111 1352375111
|
||||
33 SYS_IP_FILTER Full ipfilter module permissions 0 1352376410 1352376410
|
||||
35 CMS_MAIL_ENGENE Full permission gr form mail engine 0 1442444762 1442444762
|
||||
36 CMS_MAIL_CONSTRUCTOR Full permissions for mail constructor 0 1352376743 1352376743
|
||||
37 CMS_APP_USERS Full permission group for public user management 0 1463956542 1463956542
|
||||
49 WELCOME Welcome user permission gr. 0 1423329509 1423329509
|
||||
57 SYS_APC_FULL Apc overview management permission group 0 1369839799 1369839799
|
||||
59 SYS_ACTION_LOG_P Action log permissions 0 1380263881 1380263881
|
||||
60 CMS_APP_PERMISSIONS Full app permission management package 0 1463989400 1463989400
|
||||
61 CMS_APP_PERMISSION_GROUPS Full cms permission management package 0 1463989727 1463989727
|
||||
62 CMS_CATEGORIES_FULL Permission gr for managing categories 0 1395761270 1395761270
|
||||
63 CMS_DELIVERY_FULL Full delivery management group 0 1395764145 1395764145
|
||||
65 CMS_ORDERS_FULL Full order group 0 1398721398 1398721398
|
||||
68 CMS_TEXTMANAGER_ALL All permissions for text manager 0 1442842110 1567716402
|
||||
69 CMS_OBJECTS_MANAGER full object manager permission 0 1506968446 1506968446
|
||||
71 SYS_SITE_MAP_NEW Full new system site map permissions 0 1515602401 1515602401
|
||||
72 CMS_APP_SITE_MAP Full permissions for cms APP site map new 0 1463991665 1463991665
|
||||
76 CMS_ACCOUNT_MANAGER Full cms account manager permission 0 0 1558981471
|
||||
77 CMS_PARTNERS Full cms partners permissions 0 1506677004 1506677004
|
||||
79 CMS_APARTMENTS Full permission for cms apartments 0 1535965979 1535965979
|
||||
80 CMS_ASSOCIATION_EMAILS Full cms permission for association emails module 0 1535967545 1535967545
|
||||
82 CMS_MESSAGES Pub messages module - Full permission for cms messages 0 1545916821 1593683708
|
||||
83 CMS_PUB_SUBSCRIPTIONS Full permission for cms pub subscriptions 0 1545941538 1545941538
|
||||
84 SYS_SITE_MODULES Full permission for sys site modules 0 1548409657 1548409657
|
||||
85 CMS_REPORTS_DEF Full permission for cms reports def 0 1559651896 1559651896
|
||||
86 CMS_ACCOUNTS_TO_BILL Full permission for cms accounts to bill 0 1564655183 1564655183
|
||||
87 CMS_SVN_PROJECT_MODULE Full permissions for cms SVN project management module 0 1566210073 1566223111
|
||||
88 CMS_SVN_PROJECT_MODULE_ALL_PROJECTS Access all projects 0 1569838138 1569839590
|
||||
90 CMS_ACCOUNT_ACTIVATION Full permission for account activation 0 1585216725 1585216816
|
||||
91 E_COMMERCE eCommerce full permissions 0 1777019495 1777021507
|
||||
94 CMS_APP_PRODUCTS Full permission for cms app products 0 1777020521 1777020521
|
||||
96 CMS_APP_PROD_ATT Full permission for cms app prod att 0 1777020708 1777020708
|
||||
97 CMS_APP_ORDER_RECEIPTS Full permission for cms app order receipts 0 1777020830 1777020830
|
||||
98 CMS_APP_DELIVERY Full permission for cms app delivery 0 1777020907 1777020907
|
||||
99 CMS_APP_BUYS Full permission for cms app buys 0 1777021172 1777021172
|
||||
|
|
@ -0,0 +1,821 @@
|
|||
148 0 3 12
|
||||
149 0 3 13
|
||||
150 0 3 11
|
||||
151 0 3 18
|
||||
360 0 10 56
|
||||
361 0 10 65
|
||||
362 0 10 51
|
||||
363 0 10 58
|
||||
364 0 10 66
|
||||
365 0 10 53
|
||||
366 0 10 57
|
||||
367 0 10 64
|
||||
368 0 10 52
|
||||
369 0 10 50
|
||||
370 0 10 62
|
||||
371 0 10 63
|
||||
493 0 12 35
|
||||
494 0 12 34
|
||||
495 0 12 33
|
||||
496 0 12 36
|
||||
497 0 12 39
|
||||
498 0 12 38
|
||||
499 0 12 37
|
||||
500 0 12 40
|
||||
501 0 12 23
|
||||
667 0 14 34
|
||||
668 0 14 33
|
||||
669 0 14 36
|
||||
670 0 14 22
|
||||
671 0 14 23
|
||||
713 0 15 23
|
||||
714 0 15 46
|
||||
715 0 15 48
|
||||
716 0 15 47
|
||||
717 0 15 49
|
||||
718 0 15 42
|
||||
719 0 16 70
|
||||
720 0 16 71
|
||||
721 0 16 69
|
||||
722 0 16 68
|
||||
740 0 20 45
|
||||
741 0 20 44
|
||||
742 0 20 43
|
||||
743 0 20 41
|
||||
1061 0 21 86
|
||||
1062 0 21 85
|
||||
1063 0 21 84
|
||||
1099 0 11 23
|
||||
1100 0 11 67
|
||||
1104 0 22 88
|
||||
1105 0 22 89
|
||||
1106 0 22 81
|
||||
1107 0 22 87
|
||||
1116 0 17 97
|
||||
1117 0 17 95
|
||||
1118 0 17 94
|
||||
1119 0 17 96
|
||||
1120 0 17 74
|
||||
1121 0 17 98
|
||||
1122 0 17 99
|
||||
1123 0 17 75
|
||||
1124 0 17 72
|
||||
1125 0 17 73
|
||||
1126 0 17 81
|
||||
1201 0 24 101
|
||||
1202 0 24 105
|
||||
1203 0 24 106
|
||||
1204 0 24 104
|
||||
1205 0 24 103
|
||||
1259 0 18 107
|
||||
1260 0 18 79
|
||||
1261 0 18 80
|
||||
1861 0 26 111
|
||||
2063 0 29 8
|
||||
2767 0 19 78
|
||||
2768 0 19 76
|
||||
2769 0 19 81
|
||||
2770 0 19 77
|
||||
2771 0 19 102
|
||||
3789 0 7 35
|
||||
3790 0 7 121
|
||||
3791 0 7 34
|
||||
3792 0 7 36
|
||||
3793 0 7 22
|
||||
3798 0 4 6
|
||||
3799 0 4 2
|
||||
3800 0 4 55
|
||||
3801 0 4 7
|
||||
3802 0 4 4
|
||||
3803 0 4 3
|
||||
3804 0 4 21
|
||||
3805 0 4 5
|
||||
3806 0 4 1
|
||||
3807 0 1 8
|
||||
3808 0 1 10
|
||||
3809 0 1 9
|
||||
3810 0 1 19
|
||||
3811 0 1 20
|
||||
3817 0 5 26
|
||||
3818 0 5 27
|
||||
3819 0 5 25
|
||||
3820 0 5 28
|
||||
3821 0 5 22
|
||||
3822 0 6 29
|
||||
3823 0 6 31
|
||||
3824 0 6 30
|
||||
3825 0 6 32
|
||||
3826 0 6 22
|
||||
3827 0 23 93
|
||||
3828 0 23 91
|
||||
3829 0 23 92
|
||||
3830 0 23 90
|
||||
3832 0 25 111
|
||||
3833 0 25 113
|
||||
3834 0 25 112
|
||||
3835 0 25 18
|
||||
3836 0 25 20
|
||||
3837 0 30 132
|
||||
3838 0 30 133
|
||||
3839 0 30 131
|
||||
3840 0 30 136
|
||||
3841 0 30 135
|
||||
3842 0 30 134
|
||||
3843 0 30 130
|
||||
3844 0 30 128
|
||||
3845 0 30 81
|
||||
4081 0 2 20
|
||||
4082 0 2 14
|
||||
4083 0 2 16
|
||||
4084 0 2 15
|
||||
4085 0 2 17
|
||||
4123 0 33 20
|
||||
4124 0 33 117
|
||||
4125 0 33 118
|
||||
4126 0 33 116
|
||||
4127 0 33 119
|
||||
4155 0 34 88
|
||||
4156 0 34 89
|
||||
4157 0 34 87
|
||||
4158 0 34 81
|
||||
4165 0 36 97
|
||||
4166 0 36 96
|
||||
4167 0 36 98
|
||||
4168 0 36 75
|
||||
4198 0 39 107
|
||||
4199 0 39 125
|
||||
4200 0 39 126
|
||||
4201 0 39 124
|
||||
4202 0 39 127
|
||||
4203 0 39 123
|
||||
4204 0 39 79
|
||||
4205 0 39 80
|
||||
4238 0 8 39
|
||||
4239 0 8 120
|
||||
4240 0 8 38
|
||||
4241 0 8 37
|
||||
4242 0 8 22
|
||||
4311 0 40 46
|
||||
4312 0 40 48
|
||||
4313 0 40 47
|
||||
4314 0 40 42
|
||||
4315 0 40 70
|
||||
4316 0 40 71
|
||||
4317 0 40 69
|
||||
4318 0 40 68
|
||||
4319 0 40 67
|
||||
4330 0 42 107
|
||||
4331 0 42 125
|
||||
4332 0 42 126
|
||||
4333 0 42 124
|
||||
4334 0 42 127
|
||||
4335 0 42 123
|
||||
4336 0 42 79
|
||||
4337 0 42 80
|
||||
4375 0 45 88
|
||||
4376 0 45 87
|
||||
4390 0 46 122
|
||||
4391 0 46 44
|
||||
4392 0 46 45
|
||||
4393 0 46 41
|
||||
4408 0 48 35
|
||||
4409 0 48 121
|
||||
4410 0 48 34
|
||||
4411 0 48 36
|
||||
4412 0 48 22
|
||||
4520 0 50 70
|
||||
4521 0 50 71
|
||||
4522 0 50 69
|
||||
4523 0 50 68
|
||||
4599 0 51 140
|
||||
4600 0 51 141
|
||||
4601 0 51 139
|
||||
4602 0 51 138
|
||||
4649 0 49 23
|
||||
4982 0 52 149
|
||||
4983 0 52 148
|
||||
4984 0 52 151
|
||||
4985 0 52 147
|
||||
4986 0 52 146
|
||||
4987 0 52 144
|
||||
4988 0 52 145
|
||||
4989 0 52 150
|
||||
5126 0 31 81
|
||||
5127 0 31 86
|
||||
5128 0 31 85
|
||||
5129 0 31 129
|
||||
5130 0 31 84
|
||||
5131 0 31 152
|
||||
5247 0 53 159
|
||||
5248 0 53 161
|
||||
5249 0 53 158
|
||||
5250 0 53 160
|
||||
5251 0 53 162
|
||||
5252 0 54 159
|
||||
5253 0 54 161
|
||||
5254 0 54 158
|
||||
5255 0 54 160
|
||||
5256 0 54 162
|
||||
5257 0 32 163
|
||||
5258 0 32 165
|
||||
5259 0 32 164
|
||||
5260 0 32 166
|
||||
5261 0 32 46
|
||||
5262 0 32 48
|
||||
5263 0 32 47
|
||||
5264 0 32 109
|
||||
5265 0 32 42
|
||||
5266 0 32 70
|
||||
5267 0 32 71
|
||||
5268 0 32 69
|
||||
5269 0 32 68
|
||||
5270 0 32 67
|
||||
5271 0 32 162
|
||||
5273 0 55 163
|
||||
5274 0 55 165
|
||||
5275 0 55 164
|
||||
5276 0 55 166
|
||||
5277 0 55 162
|
||||
5298 0 38 162
|
||||
5299 0 38 122
|
||||
5300 0 38 44
|
||||
5301 0 38 45
|
||||
5302 0 38 41
|
||||
5303 0 38 167
|
||||
5304 0 38 169
|
||||
5305 0 38 168
|
||||
5306 0 38 170
|
||||
5307 0 56 167
|
||||
5308 0 56 169
|
||||
5309 0 56 168
|
||||
5310 0 56 170
|
||||
5311 0 56 162
|
||||
5468 0 57 22
|
||||
5469 0 57 172
|
||||
5470 0 57 173
|
||||
5471 0 57 174
|
||||
5472 0 57 171
|
||||
5632 0 58 155
|
||||
5633 0 58 156
|
||||
5634 0 58 154
|
||||
5635 0 58 153
|
||||
5679 0 59 177
|
||||
5680 0 59 179
|
||||
5681 0 59 178
|
||||
5740 0 44 86
|
||||
5741 0 44 129
|
||||
5742 0 44 84
|
||||
5743 0 44 81
|
||||
5744 0 44 180
|
||||
5823 0 41 97
|
||||
5824 0 41 96
|
||||
5825 0 41 98
|
||||
5826 0 41 75
|
||||
5828 0 43 78
|
||||
5829 0 43 81
|
||||
5830 0 43 76
|
||||
5831 0 43 77
|
||||
5832 0 47 72
|
||||
5833 0 47 73
|
||||
5834 0 47 81
|
||||
6097 0 62 191
|
||||
6098 0 62 190
|
||||
6099 0 62 189
|
||||
6100 0 62 192
|
||||
6101 0 63 193
|
||||
6102 0 63 195
|
||||
6103 0 63 194
|
||||
6104 0 63 196
|
||||
6133 0 64 198
|
||||
6134 0 64 199
|
||||
6135 0 64 197
|
||||
6136 0 64 200
|
||||
6200 0 65 205
|
||||
6201 0 65 206
|
||||
6202 0 65 204
|
||||
6203 0 65 203
|
||||
6204 0 65 202
|
||||
6205 0 65 207
|
||||
6206 0 65 211
|
||||
6207 0 65 201
|
||||
6208 0 65 210
|
||||
6565 0 35 157
|
||||
6566 0 35 74
|
||||
6567 0 35 94
|
||||
6568 0 35 72
|
||||
6569 0 35 99
|
||||
6570 0 35 73
|
||||
6571 0 35 81
|
||||
6629 0 66 214
|
||||
6630 0 66 215
|
||||
6631 0 66 213
|
||||
6632 0 66 212
|
||||
6661 0 67 218
|
||||
6662 0 67 217
|
||||
6663 0 67 219
|
||||
6664 0 67 216
|
||||
7083 0 70 231
|
||||
7084 0 70 236
|
||||
7085 0 70 229
|
||||
7086 0 70 230
|
||||
7087 0 70 237
|
||||
7088 0 37 224
|
||||
7089 0 37 235
|
||||
7090 0 37 76
|
||||
7091 0 37 77
|
||||
7092 0 37 232
|
||||
7093 0 37 78
|
||||
7099 0 60 238
|
||||
7100 0 60 242
|
||||
7101 0 60 240
|
||||
7102 0 60 239
|
||||
7103 0 60 233
|
||||
7109 0 61 243
|
||||
7110 0 61 246
|
||||
7111 0 61 245
|
||||
7112 0 61 244
|
||||
7113 0 61 234
|
||||
7318 0 72 254
|
||||
7319 0 72 255
|
||||
7320 0 72 253
|
||||
7321 0 72 257
|
||||
7322 0 72 256
|
||||
7323 0 72 258
|
||||
7399 0 74 266
|
||||
7400 0 74 267
|
||||
7401 0 74 265
|
||||
7402 0 74 268
|
||||
7403 0 74 264
|
||||
7687 0 75 274
|
||||
7688 0 75 272
|
||||
7689 0 75 273
|
||||
7690 0 75 275
|
||||
7728 0 77 281
|
||||
7729 0 77 282
|
||||
7730 0 77 280
|
||||
7731 0 77 283
|
||||
7772 0 69 226
|
||||
7773 0 69 227
|
||||
7774 0 69 228
|
||||
7775 0 69 225
|
||||
7809 0 71 258
|
||||
7810 0 71 249
|
||||
7811 0 71 269
|
||||
7812 0 71 250
|
||||
7813 0 71 248
|
||||
7814 0 71 252
|
||||
7815 0 71 251
|
||||
7880 0 78 284
|
||||
7916 0 79 287
|
||||
7917 0 79 288
|
||||
7918 0 79 286
|
||||
7919 0 79 285
|
||||
7959 0 80 291
|
||||
7961 0 80 290
|
||||
7962 0 80 289
|
||||
7963 0 80 292
|
||||
7965 0 81 293
|
||||
7966 0 81 294
|
||||
7967 0 81 295
|
||||
7968 0 81 296
|
||||
8009 0 83 297
|
||||
8010 0 83 298
|
||||
8011 0 83 299
|
||||
8012 0 83 300
|
||||
8092 0 84 301
|
||||
8093 0 84 302
|
||||
8094 0 84 303
|
||||
8095 0 84 304
|
||||
8184 0 76 276
|
||||
8185 0 76 277
|
||||
8186 0 76 278
|
||||
8187 0 76 279
|
||||
8218 0 85 311
|
||||
8219 0 85 312
|
||||
8220 0 85 313
|
||||
8221 0 85 314
|
||||
8347 0 86 315
|
||||
8348 0 86 316
|
||||
8349 0 86 317
|
||||
8350 0 86 318
|
||||
8355 0 87 319
|
||||
8356 0 87 320
|
||||
8357 0 87 321
|
||||
8358 0 87 322
|
||||
8359 0 87 323
|
||||
8360 0 87 324
|
||||
8361 0 87 325
|
||||
8403 0 68 24
|
||||
8404 0 68 223
|
||||
8405 0 68 222
|
||||
8406 0 68 221
|
||||
8407 0 68 220
|
||||
8545 0 88 440
|
||||
8546 0 88 441
|
||||
8547 0 88 439
|
||||
8548 0 88 322
|
||||
8549 0 88 323
|
||||
8550 0 88 444
|
||||
8551 0 88 443
|
||||
8552 0 88 442
|
||||
8553 0 88 319
|
||||
8554 0 88 445
|
||||
8555 0 88 324
|
||||
8556 0 88 325
|
||||
8557 0 88 446
|
||||
8558 0 88 447
|
||||
8559 0 88 320
|
||||
8560 0 88 448
|
||||
8561 0 88 449
|
||||
8562 0 88 450
|
||||
8563 0 88 451
|
||||
8564 0 88 321
|
||||
8565 0 88 453
|
||||
8566 0 88 452
|
||||
8567 0 88 454
|
||||
8568 0 88 455
|
||||
8569 0 88 456
|
||||
8570 0 88 438
|
||||
8571 0 88 457
|
||||
8927 0 90 462
|
||||
8928 0 90 463
|
||||
8929 0 90 465
|
||||
8975 7 90 0
|
||||
8976 7 35 0
|
||||
8977 7 49 0
|
||||
9037 0 7 466
|
||||
9038 0 8 467
|
||||
9039 0 82 294
|
||||
9040 0 82 295
|
||||
9041 0 82 293
|
||||
9042 0 82 296
|
||||
9212 9 0 67
|
||||
9213 9 86 0
|
||||
9214 9 76 0
|
||||
9215 9 37 0
|
||||
9216 9 23 0
|
||||
9217 9 36 0
|
||||
9218 9 35 0
|
||||
9219 9 82 0
|
||||
9220 9 83 0
|
||||
9221 9 68 0
|
||||
9222 9 7 0
|
||||
9223 9 57 0
|
||||
9224 9 5 0
|
||||
9225 9 8 0
|
||||
9226 9 49 0
|
||||
9277 8 0 224
|
||||
9278 8 0 176
|
||||
9279 8 0 468
|
||||
9280 8 0 439
|
||||
9281 8 0 447
|
||||
9282 8 0 448
|
||||
9283 8 0 472
|
||||
9284 8 0 452
|
||||
9285 8 0 457
|
||||
9286 8 0 3
|
||||
9287 8 0 143
|
||||
9288 8 0 269
|
||||
9289 8 0 67
|
||||
9290 8 0 5
|
||||
9291 8 86 0
|
||||
9292 8 90 0
|
||||
9293 8 76 0
|
||||
9294 8 79 0
|
||||
9295 8 60 0
|
||||
9296 8 61 0
|
||||
9297 8 72 0
|
||||
9298 8 37 0
|
||||
9299 8 80 0
|
||||
9300 8 62 0
|
||||
9301 8 23 0
|
||||
9302 8 63 0
|
||||
9303 8 36 0
|
||||
9304 8 35 0
|
||||
9305 8 82 0
|
||||
9306 8 69 0
|
||||
9307 8 65 0
|
||||
9308 8 77 0
|
||||
9309 8 83 0
|
||||
9310 8 85 0
|
||||
9311 8 87 0
|
||||
9312 8 68 0
|
||||
9313 8 7 0
|
||||
9314 8 59 0
|
||||
9315 8 57 0
|
||||
9316 8 33 0
|
||||
9317 8 5 0
|
||||
9318 8 6 0
|
||||
9319 8 8 0
|
||||
9320 8 1 0
|
||||
9321 8 2 0
|
||||
9322 8 4 0
|
||||
9323 8 71 0
|
||||
9324 8 84 0
|
||||
9325 8 25 0
|
||||
9326 8 24 0
|
||||
9327 8 49 0
|
||||
9431 0 92 475
|
||||
9432 0 92 476
|
||||
9433 0 92 477
|
||||
9434 0 92 478
|
||||
9435 0 92 479
|
||||
9436 0 93 475
|
||||
9437 0 93 476
|
||||
9438 0 93 477
|
||||
9439 0 93 478
|
||||
9440 0 93 479
|
||||
9441 0 94 475
|
||||
9442 0 94 476
|
||||
9443 0 94 477
|
||||
9444 0 94 478
|
||||
9445 0 94 479
|
||||
9446 0 95 480
|
||||
9447 0 95 481
|
||||
9448 0 95 482
|
||||
9449 0 95 483
|
||||
9450 0 96 480
|
||||
9451 0 96 481
|
||||
9452 0 96 482
|
||||
9453 0 96 483
|
||||
9454 0 97 484
|
||||
9455 0 97 485
|
||||
9456 0 97 486
|
||||
9457 0 97 487
|
||||
9458 0 98 488
|
||||
9459 0 98 489
|
||||
9460 0 98 490
|
||||
9461 0 98 491
|
||||
9462 0 99 494
|
||||
9463 0 99 495
|
||||
9464 0 99 496
|
||||
9465 0 99 497
|
||||
9466 0 91 316
|
||||
9467 0 91 317
|
||||
9468 0 91 315
|
||||
9469 0 91 318
|
||||
9470 0 91 465
|
||||
9471 0 91 462
|
||||
9472 0 91 463
|
||||
9473 0 91 277
|
||||
9474 0 91 278
|
||||
9475 0 91 276
|
||||
9476 0 91 279
|
||||
9477 0 91 287
|
||||
9478 0 91 288
|
||||
9479 0 91 286
|
||||
9480 0 91 458
|
||||
9481 0 91 285
|
||||
9482 0 91 495
|
||||
9483 0 91 496
|
||||
9484 0 91 494
|
||||
9485 0 91 497
|
||||
9486 0 91 493
|
||||
9487 0 91 489
|
||||
9488 0 91 490
|
||||
9489 0 91 488
|
||||
9490 0 91 491
|
||||
9491 0 91 474
|
||||
9492 0 91 485
|
||||
9493 0 91 486
|
||||
9494 0 91 484
|
||||
9495 0 91 487
|
||||
9496 0 91 476
|
||||
9497 0 91 477
|
||||
9498 0 91 475
|
||||
9499 0 91 479
|
||||
9500 0 91 478
|
||||
9501 0 91 481
|
||||
9502 0 91 482
|
||||
9503 0 91 480
|
||||
9504 0 91 483
|
||||
9505 0 91 291
|
||||
9506 0 91 292
|
||||
9507 0 91 290
|
||||
9508 0 91 289
|
||||
9509 0 91 214
|
||||
9510 0 91 215
|
||||
9511 0 91 213
|
||||
9512 0 91 212
|
||||
9513 0 91 191
|
||||
9514 0 91 190
|
||||
9515 0 91 189
|
||||
9516 0 91 192
|
||||
9517 0 91 93
|
||||
9518 0 91 91
|
||||
9519 0 91 92
|
||||
9520 0 91 90
|
||||
9521 0 91 193
|
||||
9522 0 91 195
|
||||
9523 0 91 194
|
||||
9524 0 91 196
|
||||
9525 0 91 218
|
||||
9526 0 91 217
|
||||
9527 0 91 219
|
||||
9528 0 91 216
|
||||
9529 0 91 157
|
||||
9530 0 91 74
|
||||
9531 0 91 94
|
||||
9532 0 91 72
|
||||
9533 0 91 99
|
||||
9534 0 91 73
|
||||
9535 0 91 176
|
||||
9536 0 91 97
|
||||
9537 0 91 96
|
||||
9538 0 91 98
|
||||
9539 0 91 75
|
||||
9540 0 91 294
|
||||
9541 0 91 295
|
||||
9542 0 91 293
|
||||
9543 0 91 296
|
||||
9544 0 91 205
|
||||
9545 0 91 206
|
||||
9546 0 91 204
|
||||
9547 0 91 281
|
||||
9548 0 91 282
|
||||
9549 0 91 280
|
||||
9550 0 91 283
|
||||
9551 0 91 298
|
||||
9552 0 91 299
|
||||
9553 0 91 297
|
||||
9554 0 91 300
|
||||
9555 0 91 312
|
||||
9556 0 91 313
|
||||
9557 0 91 311
|
||||
9558 0 91 314
|
||||
9559 0 91 175
|
||||
9560 0 91 470
|
||||
9561 0 91 440
|
||||
9562 0 91 468
|
||||
9563 0 91 441
|
||||
9564 0 91 439
|
||||
9565 0 91 469
|
||||
9566 0 91 459
|
||||
9567 0 91 322
|
||||
9568 0 91 323
|
||||
9569 0 91 444
|
||||
9570 0 91 443
|
||||
9571 0 91 442
|
||||
9572 0 91 319
|
||||
9573 0 91 445
|
||||
9574 0 91 324
|
||||
9575 0 91 325
|
||||
9576 0 91 446
|
||||
9577 0 91 447
|
||||
9578 0 91 320
|
||||
9579 0 91 448
|
||||
9580 0 91 472
|
||||
9581 0 91 449
|
||||
9582 0 91 450
|
||||
9583 0 91 451
|
||||
9584 0 91 321
|
||||
9585 0 91 453
|
||||
9586 0 91 452
|
||||
9587 0 91 454
|
||||
9588 0 91 455
|
||||
9589 0 91 473
|
||||
9590 0 91 456
|
||||
9591 0 91 438
|
||||
9592 0 91 457
|
||||
9593 0 91 223
|
||||
9594 0 91 222
|
||||
9595 0 91 221
|
||||
9596 0 91 220
|
||||
9597 0 91 3
|
||||
9598 0 91 203
|
||||
9599 0 91 202
|
||||
9600 0 91 207
|
||||
9601 0 91 208
|
||||
9602 0 91 211
|
||||
9603 0 91 201
|
||||
9604 0 91 210
|
||||
9605 0 91 274
|
||||
9606 0 91 272
|
||||
9607 0 91 273
|
||||
9608 0 91 275
|
||||
9609 0 91 270
|
||||
9610 0 91 177
|
||||
9611 0 91 179
|
||||
9612 0 91 178
|
||||
9613 0 91 20
|
||||
9614 0 91 172
|
||||
9615 0 91 173
|
||||
9616 0 91 174
|
||||
9617 0 91 171
|
||||
9618 0 91 467
|
||||
9619 0 91 39
|
||||
9620 0 91 120
|
||||
9621 0 91 38
|
||||
9622 0 91 37
|
||||
9623 0 91 128
|
||||
9624 0 91 117
|
||||
9625 0 91 118
|
||||
9626 0 91 116
|
||||
9627 0 91 119
|
||||
9628 0 91 26
|
||||
9629 0 91 27
|
||||
9630 0 91 25
|
||||
9631 0 91 28
|
||||
9632 0 91 29
|
||||
9633 0 91 31
|
||||
9634 0 91 30
|
||||
9635 0 91 32
|
||||
9636 0 91 258
|
||||
9637 0 91 8
|
||||
9638 0 91 10
|
||||
9639 0 91 9
|
||||
9640 0 91 19
|
||||
9641 0 91 14
|
||||
9642 0 91 16
|
||||
9643 0 91 15
|
||||
9644 0 91 17
|
||||
9645 0 91 466
|
||||
9646 0 91 35
|
||||
9647 0 91 121
|
||||
9648 0 91 34
|
||||
9649 0 91 36
|
||||
9650 0 91 22
|
||||
9651 0 91 137
|
||||
9652 0 91 143
|
||||
9653 0 91 249
|
||||
9654 0 91 269
|
||||
9655 0 91 250
|
||||
9656 0 91 248
|
||||
9657 0 91 252
|
||||
9658 0 91 251
|
||||
9659 0 91 302
|
||||
9660 0 91 303
|
||||
9661 0 91 306
|
||||
9662 0 91 301
|
||||
9663 0 91 304
|
||||
9664 0 91 18
|
||||
9665 0 91 23
|
||||
9666 0 91 6
|
||||
9667 0 91 2
|
||||
9668 0 91 55
|
||||
9669 0 91 54
|
||||
9670 0 91 7
|
||||
9671 0 91 1
|
||||
9672 0 91 101
|
||||
9673 0 91 105
|
||||
9674 0 91 106
|
||||
9675 0 91 104
|
||||
9676 0 91 103
|
||||
9677 0 91 67
|
||||
9678 0 91 111
|
||||
9679 0 91 113
|
||||
9680 0 91 112
|
||||
9681 0 91 5
|
||||
9682 0 91 4
|
||||
9683 0 91 21
|
||||
9684 1 0 458
|
||||
9685 1 0 176
|
||||
9686 1 0 470
|
||||
9687 1 0 468
|
||||
9688 1 0 469
|
||||
9689 1 0 459
|
||||
9690 1 0 472
|
||||
9691 1 0 473
|
||||
9692 1 0 137
|
||||
9693 1 0 143
|
||||
9694 1 0 101
|
||||
9695 1 0 67
|
||||
9696 1 86 0
|
||||
9697 1 90 0
|
||||
9698 1 76 0
|
||||
9699 1 79 0
|
||||
9700 1 60 0
|
||||
9701 1 61 0
|
||||
9702 1 72 0
|
||||
9703 1 37 0
|
||||
9704 1 80 0
|
||||
9705 1 62 0
|
||||
9706 1 23 0
|
||||
9707 1 63 0
|
||||
9708 1 36 0
|
||||
9709 1 35 0
|
||||
9710 1 82 0
|
||||
9711 1 69 0
|
||||
9712 1 65 0
|
||||
9713 1 77 0
|
||||
9714 1 83 0
|
||||
9715 1 85 0
|
||||
9716 1 87 0
|
||||
9717 1 88 0
|
||||
9718 1 68 0
|
||||
9719 1 91 0
|
||||
9720 1 7 0
|
||||
9721 1 59 0
|
||||
9722 1 57 0
|
||||
9723 1 33 0
|
||||
9724 1 5 0
|
||||
9725 1 6 0
|
||||
9726 1 8 0
|
||||
9727 1 1 0
|
||||
9728 1 2 0
|
||||
9729 1 4 0
|
||||
9730 1 71 0
|
||||
9731 1 84 0
|
||||
9732 1 25 0
|
||||
9733 1 24 0
|
||||
9734 1 49 0
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
1 1 1776857158 Mareks @ Admin logged in!
|
||||
2 1 1776938450 Mareks @ Admin logged in!
|
||||
3 1 1777018154 Mareks @ Admin logged in!
|
||||
4 1 1777279557 Mareks @ Admin logged in!
|
||||
5 1 1782391397 Mareks @ Admin logged in!
|
||||
6 1 1782460375 Mareks @ Admin logged in!
|
||||
7 1 1782483517 Mareks @ Admin logged in!
|
||||
8 1 1782812479 Mareks @ Admin logged in!
|
||||
9 1 1782820912 Mareks @ Admin logged in!
|
||||
10 1 1782894746 Mareks @ Admin logged in!
|
||||
11 1 1782896964 Mareks @ Admin logged in!
|
||||
12 1 1782991936 Mareks @ Admin logged in!
|
||||
13 1 1783015721 Mareks @ Admin logged in!
|
||||
14 1 1783022054 Mareks @ Admin logged in!
|
||||
15 1 1783067370 Mareks @ Admin logged in!
|
||||
16 1 1783078639 Mareks @ Admin logged in!
|
||||
17 1 1783324630 Mareks @ Admin logged in!
|
||||
18 1 1783339967 Mareks @ Admin logged in!
|
||||
19 1 1783412000 Mareks @ Admin logged in!
|
||||
20 1 1783505092 Mareks @ Admin logged in!
|
||||
21 1 1783670826 Mareks @ Admin logged in!
|
||||
22 1 1783689002 Mareks @ Admin logged in!
|
||||
23 1 1783928696 Mareks @ Admin logged in!
|
||||
24 1 1783938868 Mareks @ Admin logged in!
|
||||
25 1 1784012276 Mareks @ Admin logged in!
|
||||
26 1 1784018886 Mareks @ Admin logged in!
|
||||
27 1 1784067669 Mareks @ Admin logged in!
|
||||
28 1 1784103110 Mareks @ Admin logged in!
|
||||
29 1 1784128151 Mareks @ Admin logged in!
|
||||
30 1 1784196370 Mareks @ Admin logged in!
|
||||
31 1 1784271260 Mareks @ Admin logged in!
|
||||
32 1 1784533839 Mareks @ Admin logged in!
|
||||
33 1 1784546406 Mareks @ Admin logged in!
|
||||
34 1 1784570343 Mareks @ Admin logged in!
|
||||
35 1 1784624984 Mareks @ Admin logged in!
|
||||
36 1 1784652379 Mareks @ Admin logged in!
|
||||
37 1 1784719573 Mareks @ Admin logged in!
|
||||
38 1 1784724400 Mareks @ Admin logged in!
|
||||
39 1 1784737693 Mareks @ Admin logged in!
|
||||
40 1 1784758194 Mareks @ Admin logged in!
|
||||
41 1 1784891495 Mareks @ Admin logged in!
|
||||
42 1 1785142067 Mareks @ Admin logged in!
|
||||
43 1 1785180551 Mareks @ Admin logged in!
|
||||
44 1 1785221482 Mareks @ Admin logged in!
|
||||
45 1 1785245920 Mareks @ Admin logged in!
|
||||
46 1 1785331809 Mareks @ Admin logged in!
|
||||
47 1 1785350923 Mareks @ Admin logged in!
|
||||
48 1 1785409063 Mareks @ Admin logged in!
|
||||
49 1 1785438340 Mareks @ Admin logged in!
|
||||
50 1 1785479647 Mareks @ Admin logged in!
|
||||
51 1 1788999246 Mareks @ Admin logged in!
|
||||
|
|
@ -0,0 +1,738 @@
|
|||
1776857159 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 863b12de7840b8dcd75d5df72c67ee0d
|
||||
1776938451 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 863b12de7840b8dcd75d5df72c67ee0d
|
||||
1777018154 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777018461 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777018765 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777019354 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777019666 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777020416 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777020790 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777021126 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777021507 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777021815 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777022751 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777023056 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777023386 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777023706 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777025784 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777026839 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777027708 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777028212 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777028899 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777029268 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777029594 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777030795 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777032300 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 e4242a5f2f12023521a695428f745c98
|
||||
1777279557 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777282594 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777285425 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777286029 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777286613 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777286984 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777287290 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777287665 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777287966 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777288519 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777289314 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777290408 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777290782 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777291246 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777291616 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777292343 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777292735 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777293036 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777293519 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1777293823 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 98c234782bf7f05c6a68c234d6964149
|
||||
1782391398 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 662fc64ddf257674af58e12596a49793
|
||||
1782391912 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 662fc64ddf257674af58e12596a49793
|
||||
1782392928 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 662fc64ddf257674af58e12596a49793
|
||||
1782394573 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 662fc64ddf257674af58e12596a49793
|
||||
1782394921 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 662fc64ddf257674af58e12596a49793
|
||||
1782460376 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 662fc64ddf257674af58e12596a49793
|
||||
1782460716 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 662fc64ddf257674af58e12596a49793
|
||||
1782483518 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 e3455b86083bed73d0d4c871dd2ad68a
|
||||
1782484428 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 e3455b86083bed73d0d4c871dd2ad68a
|
||||
1782485038 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 e3455b86083bed73d0d4c871dd2ad68a
|
||||
1782485723 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 e3455b86083bed73d0d4c871dd2ad68a
|
||||
1782812480 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782812782 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782813102 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782813457 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782813786 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782814165 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782815271 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782815578 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782819313 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782820919 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782821243 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782821560 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782821870 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782822231 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782822532 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782822840 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782823336 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782823763 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782825494 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782827474 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782894747 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 41ba1c7f8b9cc29be9a20dc466fa6645
|
||||
1782896965 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782899421 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782900619 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782903080 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782905108 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782905543 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782906049 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782906478 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782906787 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782907134 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782908780 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782909370 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782910340 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782911000 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782912590 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782912980 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782913340 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782913649 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782913969 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782914277 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782914650 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782915029 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782915337 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782915642 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782915943 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782916269 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782916648 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782916956 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782917598 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782919640 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782920780 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782921260 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782991936 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782992341 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782993118 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782993468 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782993782 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782994706 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782995300 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782995813 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782996610 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782997180 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782997510 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782997826 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782998332 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782998636 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782999123 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782999437 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1782999740 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 37f1f00f833fa3ffc9a96f536514d0a9
|
||||
1783015731 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783016173 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783016767 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783017457 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783018814 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783019274 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783019650 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783020007 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783020677 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783021090 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783022055 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783022526 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783022831 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783023233 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783023567 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783067372 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783068328 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783068642 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783068949 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783070082 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783070454 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783071259 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783071566 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783071867 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783075535 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783078657 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783078963 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783080040 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783080530 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783080836 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783081138 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783082020 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783082453 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783084475 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783086099 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 95be2d825bb20a7e8da3f9769f6baca5
|
||||
1783324630 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783325022 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783325358 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783326575 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783326879 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783327185 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783328386 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783330045 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783330347 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783330803 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783339984 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783340426 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783340964 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783343640 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 54fd5ecf7de1ad514bddce3a84b3ba84
|
||||
1783412001 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783414131 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783414846 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783415201 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783415618 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783416268 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783416854 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783417434 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783417782 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783418083 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783420075 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783421978 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783422295 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783422641 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783422995 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783423665 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783426418 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 92e7ac686d24957a8ae6c14eae744048
|
||||
1783505092 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783505450 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783506030 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783506642 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783507176 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783507543 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783507874 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783508449 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783509443 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783509744 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783511727 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783513047 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 f09cd5795c67872cb7e9b7e4833c2c5f
|
||||
1783670826 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783671409 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783671984 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783673097 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783673413 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783673778 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783674140 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783674441 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783674765 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783675088 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783675546 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783675900 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783676299 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783676603 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783677015 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783677320 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783677904 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783678459 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783679027 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783679386 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783679717 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783680838 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783681616 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783682729 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783683069 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783683411 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783683730 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783684063 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783684461 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783684958 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783686956 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783688216 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783688696 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783689824 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783690749 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783691399 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783691713 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783692999 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783693501 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783694538 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783694850 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4a553d582a4db542c4b7b2fadeac0141
|
||||
1783928696 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783931110 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783931804 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783932113 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783932417 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783932725 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783933107 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783934029 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783934429 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783935222 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783936021 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783936832 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 bb97bc2e05e22ab90382ce569784a719
|
||||
1783938869 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783939181 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783939526 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783940662 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783943198 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783943552 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783944224 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783944890 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783945211 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783945737 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783946078 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783947018 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783947455 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783948125 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783948495 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783948950 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783949357 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783949754 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783950081 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783950712 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783951162 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1783954778 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784012276 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784012756 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784014107 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784015980 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784017720 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784018889 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784019202 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784019539 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784019926 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784020495 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784022027 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784022348 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784022705 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784024152 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784024464 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784024776 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784025126 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784025445 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784025751 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784026370 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784026671 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784026990 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784027292 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784027615 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784027916 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784028457 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784028952 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784029399 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784029860 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784030169 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784030538 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784030846 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784067670 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784068133 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784068472 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784068813 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784069149 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784069399 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784069456 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784069601 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784069790 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784069860 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784070327 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 7e63a71c7855cf8001a8a415221a4a3b
|
||||
1784103111 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784103759 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784104645 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784107943 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784109308 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784109617 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784109690 172.20.0.1 2 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 eb51b751bac641ff615d40d71f01edad
|
||||
1784113347 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784128154 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784130058 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784131286 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784131767 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784133257 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784133604 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784133905 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784134234 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784134750 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 e6861ac6087bcc433fdf372de50627c0
|
||||
1784196371 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784196860 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784197465 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784197766 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784198486 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784198836 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784199146 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784200243 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784200760 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784202836 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784203342 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784203692 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784204158 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784204532 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784205644 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784207501 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784208530 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784208832 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784209788 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784210426 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784211177 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784214237 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784217480 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784219040 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784219241 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784219597 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784271261 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784271942 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784273575 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784274047 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784274520 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784275050 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784275352 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784275819 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784276186 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784276841 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784277182 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784277488 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784278350 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784279025 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784280320 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784280708 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784281021 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784281350 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784281698 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784282089 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784282407 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784283002 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784283368 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784283674 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784283985 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784284293 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784285508 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784285809 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784285991 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784286016 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784286110 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784287038 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784287038 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784287172 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784287451 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784287602 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784287781 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784287997 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784288102 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784288311 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784288427 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784288670 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784288744 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784289054 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784289054 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784289506 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784289506 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784289816 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784289816 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784290195 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784290195 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784290637 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784290637 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784290963 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784290963 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784291514 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784291514 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784292264 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784292264 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784292730 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784292730 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784293114 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784293114 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784293416 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784293416 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784294129 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784294129 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 457b2e79cc17b30244e5ba0d514a3cb5
|
||||
1784533840 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784534147 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784534895 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784534937 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784534965 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784535245 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784535337 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784535810 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784535810 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784536404 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784536404 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784536880 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784536880 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784540724 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784546411 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784547461 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784547768 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784548072 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784548437 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784548847 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784549159 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784549800 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784550211 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784550930 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784551244 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784551864 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784552292 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784552675 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784553692 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784554277 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784554582 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784555051 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784555409 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784555940 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784556252 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784558425 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784558756 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784560165 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784562445 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784570352 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784573965 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 4147053cbd1638d11969bbf7f731f46d
|
||||
1784624985 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784625387 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784625859 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784625956 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784626292 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784626722 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784627024 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784627625 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784627926 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784628229 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784628566 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784629008 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784629327 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784629815 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784630154 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784631694 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784633974 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784652380 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784652687 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784653110 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784653396 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784653684 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 dc36f17258b03a9ed93057d578901f74
|
||||
1784717796 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784719164 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784719554 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784719574 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784724401 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784725678 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784726084 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784726566 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784727237 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784727563 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784728319 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784728644 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784728987 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784729367 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784729408 172.20.0.1 6 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8c6c04ec0f68609b4333e0189beb2e75
|
||||
1784729607 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784729630 172.20.0.1 6 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8c6c04ec0f68609b4333e0189beb2e75
|
||||
1784730084 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784730084 172.20.0.1 6 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8c6c04ec0f68609b4333e0189beb2e75
|
||||
1784731778 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784731779 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784736809 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784736853 172.20.0.1 7 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 ad69ba6d6eaea5bb3f5ccc4d7932bb15
|
||||
1784736983 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784737662 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784737694 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784737733 172.20.0.1 7 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 ad69ba6d6eaea5bb3f5ccc4d7932bb15
|
||||
1784737748 172.20.0.1 7 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 ad69ba6d6eaea5bb3f5ccc4d7932bb15
|
||||
1784737764 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784738084 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784738084 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784738509 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784738509 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784738813 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784738813 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784739353 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784739353 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784758194 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784758740 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784759044 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784759345 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784759671 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784760029 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784760342 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784760648 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784761034 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784761335 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784761478 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784800200 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784800520 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784800832 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784801138 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784801312 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784801618 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784801925 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784802231 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 8aaf95359af70433db3c174312c79db6
|
||||
1784886593 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784886902 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784889877 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784890224 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784891482 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784891495 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784891988 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784891988 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784892290 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784892290 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784892964 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784892964 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784893297 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784893297 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784893599 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784893599 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784894587 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784894587 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784897745 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784897745 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784898164 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784898164 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784898702 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784898702 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784899101 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784899101 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784899472 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784899472 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784899788 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784899788 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784900212 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784900212 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784900514 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784900514 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784900838 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784900838 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784901223 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1784901223 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 1be975848acd41c6752a7cb10c1b3ba5
|
||||
1785142067 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785143715 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785144139 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785144478 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785144880 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785145181 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785145504 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785145831 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785146138 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785146444 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785146763 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785147099 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785150935 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785180524 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785183353 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785183353 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785183923 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785183923 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785185426 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785185426 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785185851 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785185851 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785186334 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785186334 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785186740 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785186740 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785221482 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785221509 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785221784 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785222113 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785223054 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785223916 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785225183 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785225756 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785226148 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785226292 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785226450 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785226943 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785226943 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785227430 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785228055 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 12b2fbebd02e9e45b9fbd16eacd34dd8
|
||||
1785245921 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785246401 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785249577 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785250057 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785331809 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785332340 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785333275 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785336147 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785337107 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785350924 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785351751 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785353542 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785354602 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785355001 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785355307 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785355750 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785356171 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785356561 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785356813 172.20.0.1 8 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 647b7290afe9637abc2e6255b64a0d72
|
||||
1785356876 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785357114 172.20.0.1 8 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 647b7290afe9637abc2e6255b64a0d72
|
||||
1785357177 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785357479 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785357479 172.20.0.1 8 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 647b7290afe9637abc2e6255b64a0d72
|
||||
1785357786 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785357786 172.20.0.1 8 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 647b7290afe9637abc2e6255b64a0d72
|
||||
1785357822 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785360391 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785360391 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785360785 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785360785 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785362411 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785362411 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785362712 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785362712 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785363157 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785363157 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785363458 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785364227 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785364581 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785364914 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785365255 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785365559 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785366082 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785366214 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785409064 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785409408 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785410002 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785410315 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785410619 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785411032 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785411333 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785411659 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785411976 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785413381 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785413711 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785414026 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785414342 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785414660 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785414962 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785415647 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785416543 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785418707 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785420147 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785438347 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785438672 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785439408 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785441055 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785441371 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785442186 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785442487 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785442740 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785443214 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785443215 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785443537 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785443963 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785443963 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785444375 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785444375 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785444536 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785444629 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785444739 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785444975 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785445231 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785445273 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785445306 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785445641 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785445845 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785445873 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785445952 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 b06788404926a12ea74b80812e06429b
|
||||
1785445978 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785445990 172.20.0.1 9 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 9256a35d88f488f829819d0d883c0dcc
|
||||
1785479649 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785480878 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785481179 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785481489 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785481498 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785481806 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785481806 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785482255 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785482255 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785482691 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785482691 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785482996 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785482996 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785483586 172.20.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1785483586 172.20.0.1 1 0 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 25c6793c0bc3001a13e8b9481dbe2d36
|
||||
1788999246 172.21.0.1 1 1 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36 84c111b213753e1a6ff8e7374cad5862
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Dumping routines for database 'maison_alexandra_lv'
|
||||
--
|
||||
/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
|
||||
/*!50003 SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO' */ ;
|
||||
ALTER DATABASE `maison_alexandra_lv` CHARACTER SET utf8 COLLATE utf8_general_ci ;
|
||||
/*!50003 SET @saved_cs_client = @@character_set_client */ ;
|
||||
/*!50003 SET @saved_cs_results = @@character_set_results */ ;
|
||||
/*!50003 SET @saved_col_connection = @@collation_connection */ ;
|
||||
/*!50003 SET character_set_client = utf8mb4 */ ;
|
||||
/*!50003 SET character_set_results = utf8mb4 */ ;
|
||||
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
|
||||
DELIMITER ;;
|
||||
CREATE DEFINER=`root`@`localhost` FUNCTION `nextnum`(`seq_name` VARCHAR(100), `skip` INT) RETURNS bigint(20)
|
||||
BEGIN
|
||||
DECLARE
|
||||
cur_val int;
|
||||
SELECT
|
||||
next_index INTO cur_val
|
||||
FROM
|
||||
mod_sequences
|
||||
WHERE
|
||||
name = seq_name;
|
||||
|
||||
IF skip IS NULL THEN
|
||||
set skip = 1;
|
||||
END IF;
|
||||
IF cur_val IS NOT NULL THEN
|
||||
UPDATE mod_sequences SET next_index = cur_val+skip WHERE name = seq_name;
|
||||
ELSE
|
||||
set cur_val = skip;
|
||||
INSERT INTO mod_sequences (name, next_index) VALUES (seq_name, 2);
|
||||
END IF;
|
||||
|
||||
RETURN cur_val;
|
||||
END ;;
|
||||
DELIMITER ;
|
||||
/*!50003 SET sql_mode = @saved_sql_mode */ ;
|
||||
/*!50003 SET character_set_client = @saved_cs_client */ ;
|
||||
/*!50003 SET character_set_results = @saved_cs_results */ ;
|
||||
/*!50003 SET collation_connection = @saved_col_connection */ ;
|
||||
ALTER DATABASE `maison_alexandra_lv` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_articles`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_articles`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_articles` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`a_npk` int(11) NOT NULL,
|
||||
`a_title` varchar(360) NOT NULL,
|
||||
`a_date` int(11) NOT NULL,
|
||||
`a_type` int(11) NOT NULL,
|
||||
`a_cl_id` int(11) NOT NULL DEFAULT 0 COMMENT 'Linked classificators id',
|
||||
`a_cat` int(11) NOT NULL COMMENT 'for sub categories',
|
||||
`a_unique_name` varchar(360) NOT NULL DEFAULT '""',
|
||||
`a_link` varchar(690) DEFAULT '''''',
|
||||
`a_created` int(11) NOT NULL,
|
||||
`a_modified` int(11) NOT NULL,
|
||||
`a_disabled` enum('1','0') NOT NULL DEFAULT '1' COMMENT '1 for disabled',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `a_type` (`a_type`),
|
||||
KEY `a_cat` (`a_cat`),
|
||||
KEY `a_npk` (`a_npk`),
|
||||
KEY `a_disabled` (`a_disabled`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_articles_files`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_articles_files`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_articles_files` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ref_id` int(11) NOT NULL,
|
||||
`file_name` varchar(690) NOT NULL,
|
||||
`file_link` varchar(360) NOT NULL,
|
||||
`file_disabled` enum('1','0') NOT NULL,
|
||||
`file_order` int(11) NOT NULL,
|
||||
`file_type` int(11) NOT NULL COMMENT 'Witch file type ( carousel/button/cnt file ) ',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_articles_records`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_articles_records`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_articles_records` (
|
||||
`a_id` int(11) NOT NULL,
|
||||
`a_title` varchar(400) NOT NULL,
|
||||
`a_link` varchar(800) NOT NULL,
|
||||
`a_v` varchar(400) NOT NULL DEFAULT '',
|
||||
`a_url_alias_id` int(11) NOT NULL DEFAULT 0,
|
||||
`a_shtml` mediumtext NOT NULL,
|
||||
`a_lhtml` mediumtext NOT NULL,
|
||||
`a_int_1` float DEFAULT NULL COMMENT 'Fields for int values',
|
||||
`a_int_2` float DEFAULT NULL COMMENT 'Fields for int values',
|
||||
`a_lang_id` int(11) NOT NULL,
|
||||
KEY `a_id` (`a_id`),
|
||||
KEY `a_url_alias_id` (`a_url_alias_id`),
|
||||
KEY `a_lang_id` (`a_lang_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_classificators`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_classificators`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_classificators` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`cl_type` smallint(6) NOT NULL,
|
||||
`cl_name` varchar(1000) NOT NULL,
|
||||
`cl_data` mediumtext NOT NULL,
|
||||
`cl_order` int(11) NOT NULL,
|
||||
`cl_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`cl_created` int(11) NOT NULL,
|
||||
`cl_modified` int(11) NOT NULL,
|
||||
`cl_shop_filter` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`cl_has_translations` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `cl_name` (`cl_name`(250)),
|
||||
KEY `cl_type` (`cl_type`),
|
||||
KEY `cl_order` (`cl_order`),
|
||||
KEY `cl_has_translations` (`cl_has_translations`),
|
||||
KEY `cl_blocked` (`cl_blocked`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1472 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_classificators_translations`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_classificators_translations`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_classificators_translations` (
|
||||
`cl_id` int(11) NOT NULL,
|
||||
`cl_lang_id` int(11) NOT NULL,
|
||||
`cl_value` varchar(1000) NOT NULL,
|
||||
`cl_description` mediumtext NOT NULL,
|
||||
KEY `cl_id` (`cl_id`),
|
||||
KEY `cl_lang_id` (`cl_lang_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_delivery`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_delivery`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_delivery` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`t_title` varchar(690) NOT NULL DEFAULT '',
|
||||
`t_cms` varchar(690) NOT NULL DEFAULT '',
|
||||
`t_order` int(11) NOT NULL DEFAULT 0,
|
||||
`t_cost` float NOT NULL DEFAULT 0,
|
||||
`t_desc` text NOT NULL,
|
||||
`t_enabled` enum('1','0') NOT NULL DEFAULT '0',
|
||||
`t_default` enum('1','0') NOT NULL DEFAULT '0',
|
||||
`t_modified` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_items_attr`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_items_attr`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_items_attr` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`p_type` int(11) DEFAULT NULL COMMENT 'cl type',
|
||||
`p_status` enum('1','0') NOT NULL DEFAULT '0',
|
||||
`p_default` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_created` int(11) NOT NULL DEFAULT 0,
|
||||
`p_modified` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `p_type` (`p_type`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2709 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_items_attr_translations`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_items_attr_translations`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_items_attr_translations` (
|
||||
`t_id` int(11) NOT NULL,
|
||||
`t_title` varchar(120) NOT NULL DEFAULT '',
|
||||
`t_lang_id` int(11) NOT NULL DEFAULT 0,
|
||||
KEY `t_id` (`t_id`),
|
||||
KEY `t_lang_id` (`t_lang_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_mail_constructor`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_mail_constructor`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_mail_constructor` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`mail_type` int(11) NOT NULL COMMENT 'mail clasificator type',
|
||||
`mail_created` int(11) NOT NULL,
|
||||
`mail_disabled` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`mail_modified` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `mail_type` (`mail_type`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_mail_constructor_data`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_mail_constructor_data`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_mail_constructor_data` (
|
||||
`mail_id` int(11) NOT NULL,
|
||||
`mail_title` varchar(1000) NOT NULL,
|
||||
`mail_data` mediumtext NOT NULL,
|
||||
`mail_lang_id` int(11) NOT NULL,
|
||||
KEY `mail_id` (`mail_id`),
|
||||
KEY `mail_lang_id` (`mail_lang_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_mail_outgoing`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_mail_outgoing`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_mail_outgoing` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`mail_server_type` enum('0','1') NOT NULL DEFAULT '0' COMMENT '0 - zemturu 18, 1 - zutenis internal',
|
||||
`mail_lang_id` int(11) NOT NULL DEFAULT 0,
|
||||
`mail_template_id` int(11) NOT NULL DEFAULT 0,
|
||||
`mail_owner` varchar(100) NOT NULL DEFAULT '',
|
||||
`mail_owner_cc` varchar(100) NOT NULL DEFAULT '',
|
||||
`mail_sender` varchar(100) NOT NULL DEFAULT '',
|
||||
`mail_title` varchar(200) NOT NULL DEFAULT '',
|
||||
`mail_content` mediumtext NOT NULL,
|
||||
`mail_attachment` varchar(1000) NOT NULL DEFAULT '',
|
||||
`mail_inserted` int(11) NOT NULL,
|
||||
`mail_priority` enum('1','2','3') NOT NULL DEFAULT '1',
|
||||
`mail_send_atempt` enum('0','1','2','3','4') NOT NULL DEFAULT '0',
|
||||
`mail_disabled` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`mail_locked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`mail_modified` int(11) NOT NULL DEFAULT 0,
|
||||
`mail_marker` varchar(32) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `mail_lang_id` (`mail_lang_id`),
|
||||
KEY `mail_template_id` (`mail_template_id`),
|
||||
KEY `mail_owner` (`mail_owner`),
|
||||
KEY `mail_disabled` (`mail_disabled`),
|
||||
KEY `mail_marker` (`mail_marker`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_mail_sent`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_mail_sent`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_mail_sent` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`mail_server_type` enum('0','1') NOT NULL DEFAULT '0' COMMENT '0 - zemturu 18, 1 - zutenis internal',
|
||||
`mail_oid` int(11) NOT NULL,
|
||||
`mail_lang_id` int(11) NOT NULL,
|
||||
`mail_template_id` int(11) NOT NULL,
|
||||
`mail_owner` varchar(100) NOT NULL,
|
||||
`mail_owner_cc` varchar(100) NOT NULL,
|
||||
`mail_sender` varchar(100) NOT NULL,
|
||||
`mail_title` varchar(200) NOT NULL,
|
||||
`mail_content` mediumtext NOT NULL,
|
||||
`mail_attachment` varchar(1000) NOT NULL,
|
||||
`mail_inserted` int(11) NOT NULL,
|
||||
`mail_sent` int(11) NOT NULL,
|
||||
`mail_read` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`mail_priority` enum('1','2','3') NOT NULL DEFAULT '1',
|
||||
`mail_send_atempt` enum('0','1','2','3','4') NOT NULL DEFAULT '0',
|
||||
`mail_modified` int(11) NOT NULL,
|
||||
`mail_marker` varchar(32) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `mail_owner` (`mail_owner`),
|
||||
KEY `mail_template_id` (`mail_template_id`),
|
||||
KEY `mail_lang_id` (`mail_lang_id`),
|
||||
KEY `mail_marker` (`mail_marker`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_messages`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_messages`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_messages` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`first_name` varchar(69) NOT NULL DEFAULT '',
|
||||
`last_name` varchar(69) NOT NULL DEFAULT '',
|
||||
`email` varchar(90) NOT NULL DEFAULT '',
|
||||
`phone` varchar(120) NOT NULL DEFAULT '',
|
||||
`subject` varchar(260) NOT NULL DEFAULT '',
|
||||
`message` mediumtext NOT NULL,
|
||||
`ip_from` varchar(16) NOT NULL DEFAULT '',
|
||||
`user_agent` mediumtext NOT NULL,
|
||||
`created` int(11) NOT NULL DEFAULT 0,
|
||||
`modified` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_orders`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_orders`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_orders` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`o_nr` varchar(32) NOT NULL DEFAULT '',
|
||||
`o_date` int(11) NOT NULL DEFAULT 0,
|
||||
`o_mail` varchar(60) NOT NULL DEFAULT '',
|
||||
`o_payment_met` int(11) NOT NULL DEFAULT 0 COMMENT 'payment method cl id',
|
||||
`o_delivery_met` int(11) NOT NULL DEFAULT 0 COMMENT 'delivery method cl id',
|
||||
`o_input_data` mediumtext NOT NULL,
|
||||
`o_type` int(11) NOT NULL DEFAULT 0 COMMENT 'type if user has come from other links like kurpirtk/gudriem',
|
||||
`o_mid` int(11) NOT NULL DEFAULT 0 COMMENT 'Mail link id -1 sent directly, + through list',
|
||||
`o_mreceipt_id` varchar(100) NOT NULL DEFAULT '' COMMENT 'Sent mail from orders table - with receipt pdf',
|
||||
`o_user` int(11) DEFAULT NULL COMMENT 'Registered user id that placed the order',
|
||||
`o_edited` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`o_locked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`o_deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`o_modified` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_orders_addresses`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_orders_addresses`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_orders_addresses` (
|
||||
`o_id` int(11) NOT NULL,
|
||||
`o_type` enum('0','1') NOT NULL DEFAULT '0' COMMENT '0 - primary, 1 - delivery',
|
||||
`o_addr_name` varchar(60) NOT NULL DEFAULT '',
|
||||
`o_addr_lastname` varchar(60) NOT NULL DEFAULT '',
|
||||
`o_addr_phone` varchar(60) NOT NULL DEFAULT '',
|
||||
`o_addr_address` varchar(400) NOT NULL DEFAULT '',
|
||||
`o_addr_city` varchar(30) NOT NULL DEFAULT '',
|
||||
`o_addr_country` varchar(30) NOT NULL DEFAULT '',
|
||||
`o_addr_zip` varchar(10) NOT NULL DEFAULT ''
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_orders_data`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_orders_data`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_orders_data` (
|
||||
`o_id` int(11) NOT NULL DEFAULT 0,
|
||||
`p_id` int(11) NOT NULL DEFAULT 0,
|
||||
`p_row_id` int(11) NOT NULL DEFAULT 0 COMMENT 'count to class table id',
|
||||
`p_price` float NOT NULL DEFAULT 0,
|
||||
`p_count` smallint(6) NOT NULL DEFAULT 0,
|
||||
`p_type1` int(11) NOT NULL DEFAULT 0,
|
||||
`p_type2` int(11) NOT NULL DEFAULT 0
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_orders_data_edited`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_orders_data_edited`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_orders_data_edited` (
|
||||
`o_id` int(11) NOT NULL DEFAULT 0,
|
||||
`row_nr` int(11) NOT NULL DEFAULT 1,
|
||||
`p_id` int(11) NOT NULL DEFAULT 0,
|
||||
`p_row_id` int(11) NOT NULL DEFAULT 0 COMMENT 'count to class table id',
|
||||
`p_cl1` int(11) NOT NULL DEFAULT 0,
|
||||
`p_cl2` int(11) NOT NULL DEFAULT 0,
|
||||
`p_price` float NOT NULL DEFAULT 0,
|
||||
`p_count` smallint(6) NOT NULL DEFAULT 0,
|
||||
`p_name` varchar(1200) NOT NULL DEFAULT '',
|
||||
KEY `o_id` (`o_id`),
|
||||
KEY `p_id` (`p_id`),
|
||||
KEY `p_row_id` (`p_row_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_orders_deleted_nr`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_orders_deleted_nr`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_orders_deleted_nr` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`order_nr` varchar(32) NOT NULL DEFAULT '' COMMENT 'deleted order number ready to be used again',
|
||||
`reserved` enum('0','1') NOT NULL DEFAULT '0' COMMENT '1 when reserved for use',
|
||||
`time` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_orders_edited`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_orders_edited`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_orders_edited` (
|
||||
`o_id` int(11) NOT NULL DEFAULT 0,
|
||||
`o_nr` varchar(32) NOT NULL DEFAULT '0',
|
||||
`o_date` int(11) NOT NULL DEFAULT 0,
|
||||
`a_p_amount_words` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_desc` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_desc_transaction` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_term_of_payment` int(11) NOT NULL DEFAULT 0,
|
||||
`a_payment_met` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_shipping_met` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_info` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_supplier` varchar(990) NOT NULL DEFAULT '',
|
||||
`a_sup_reg_nr` varchar(14) NOT NULL DEFAULT '',
|
||||
`a_sup_domicile` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_sup_pvn_reg_nr` varchar(360) NOT NULL DEFAULT '',
|
||||
`a_sup_sett_details` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_sup_cont_nr` varchar(169) NOT NULL DEFAULT '',
|
||||
`a_sup_phone` varchar(120) NOT NULL DEFAULT '',
|
||||
`a_sup_email` varchar(120) NOT NULL DEFAULT '',
|
||||
`a_beneficiary` varchar(990) NOT NULL DEFAULT '',
|
||||
`a_ben_reg_nr` varchar(14) NOT NULL DEFAULT '''''',
|
||||
`a_ben_domicile` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_ben_pvn_reg_nr` varchar(360) NOT NULL DEFAULT '',
|
||||
`a_ben_sett_details` varchar(1200) NOT NULL DEFAULT '',
|
||||
`a_ben_cont_nr` varchar(169) NOT NULL DEFAULT '',
|
||||
`a_ben_phone` varchar(120) NOT NULL DEFAULT '',
|
||||
`a_ben_email` varchar(120) NOT NULL DEFAULT '',
|
||||
`a_modified` int(11) NOT NULL DEFAULT 0,
|
||||
KEY `o_id` (`o_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:45
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_permissions`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_permissions`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_permissions` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`p_name` varchar(200) NOT NULL DEFAULT '',
|
||||
`p_type_id` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_description` mediumtext NOT NULL,
|
||||
`p_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_modified` int(11) NOT NULL,
|
||||
`p_created` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `p_name` (`p_name`),
|
||||
KEY `p_type_id` (`p_type_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_permissions_groups`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_permissions_groups`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_permissions_groups` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`group_name` varchar(200) NOT NULL,
|
||||
`group_description` mediumtext NOT NULL,
|
||||
`group_type` enum('0','1') NOT NULL DEFAULT '0' COMMENT 'If group shows in public side or not',
|
||||
`group_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`group_modified` int(11) NOT NULL,
|
||||
`group_created` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `group_name` (`group_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`prod_nr` varchar(20) NOT NULL,
|
||||
`prod_price` float NOT NULL DEFAULT 0,
|
||||
`prod_vat` smallint(6) NOT NULL DEFAULT 0,
|
||||
`prod_model` varchar(40) NOT NULL DEFAULT '',
|
||||
`prod_new_price` float NOT NULL DEFAULT 0,
|
||||
`prod_buy_per_pers` smallint(6) NOT NULL DEFAULT 100 COMMENT 'Max prod buy by person',
|
||||
`prod_available` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_order` smallint(6) NOT NULL DEFAULT 0,
|
||||
`prod_comp_link_id` int(11) NOT NULL DEFAULT 0 COMMENT 'Linked company to this product',
|
||||
`prod_disabled` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`prod_attribute` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`prod_created` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_created_by` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_modified` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_modified_by` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`prod_discount_value` float NOT NULL DEFAULT 0,
|
||||
`prod_discount` enum('0','1') NOT NULL DEFAULT '0' COMMENT 'Product is on discount or not',
|
||||
`prod_featured` enum('0','1') NOT NULL DEFAULT '0' COMMENT 'Is product displayed as featured or not',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `prod_nr` (`prod_nr`),
|
||||
KEY `prod_price` (`prod_price`),
|
||||
KEY `prod_new_price` (`prod_new_price`),
|
||||
KEY `prod_order` (`prod_order`),
|
||||
KEY `prod_deleted` (`prod_deleted`),
|
||||
KEY `prod_disabled` (`prod_disabled`),
|
||||
KEY `prod_modified_by` (`prod_modified_by`),
|
||||
KEY `prod_created_by` (`prod_created_by`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_files`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_files`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_files` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`prod_id` int(11) NOT NULL DEFAULT 0,
|
||||
`file_name` varchar(690) NOT NULL DEFAULT '',
|
||||
`file_link` varchar(360) NOT NULL DEFAULT '',
|
||||
`file_disabled` enum('1','0') NOT NULL DEFAULT '0',
|
||||
`file_order` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_images`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_images`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_images` (
|
||||
`prod_id` int(11) NOT NULL,
|
||||
`img_path` varchar(1000) NOT NULL DEFAULT '',
|
||||
`img_alt` varchar(200) NOT NULL DEFAULT '',
|
||||
`img_title` varchar(200) NOT NULL DEFAULT '',
|
||||
`img_order` smallint(6) NOT NULL DEFAULT 0,
|
||||
`img_blocked` enum('0','1') NOT NULL DEFAULT '0'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_info`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_info`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_info` (
|
||||
`prod_id` int(11) NOT NULL,
|
||||
`lang_id` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_key` char(100) NOT NULL DEFAULT '',
|
||||
`prod_name` varchar(300) NOT NULL DEFAULT '',
|
||||
`prod_description` mediumtext NOT NULL,
|
||||
`prod_sdescription` mediumtext NOT NULL,
|
||||
`prod_keywords` mediumtext NOT NULL,
|
||||
KEY `prod_id` (`prod_id`),
|
||||
KEY `lang_id` (`lang_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_to_categories`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_to_categories`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_to_categories` (
|
||||
`prod_id` int(11) NOT NULL,
|
||||
`cat_id` int(11) NOT NULL,
|
||||
KEY `prod_id` (`prod_id`),
|
||||
KEY `cat_id` (`cat_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_to_count`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_to_count`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_to_count` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`prod_id` int(11) NOT NULL,
|
||||
`row_id` int(11) NOT NULL,
|
||||
`cl1_id` int(11) NOT NULL DEFAULT 0,
|
||||
`cl2_id` int(11) NOT NULL DEFAULT 0,
|
||||
`count` int(11) NOT NULL DEFAULT 0,
|
||||
`price_sold` float NOT NULL DEFAULT 0 COMMENT 'Price sold with vat',
|
||||
`note` varchar(1000) NOT NULL DEFAULT '' COMMENT 'Sold note',
|
||||
`op_type` enum('1','2','3','4') DEFAULT '1' COMMENT '1 - orders send, 2 - orders delete, 3 - storage module, 4 - buys module',
|
||||
`op_date` int(11) NOT NULL DEFAULT 0 COMMENT 'date when operation was made ( same as modified ) ',
|
||||
`user_id` int(11) NOT NULL DEFAULT 0 COMMENT 'Same as created_by',
|
||||
`date` int(11) NOT NULL DEFAULT 0,
|
||||
`modified` int(11) NOT NULL DEFAULT 0,
|
||||
`modified_by` int(11) NOT NULL DEFAULT 0,
|
||||
`created` int(11) NOT NULL DEFAULT 0,
|
||||
`created_by` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `prod_id` (`prod_id`),
|
||||
KEY `row_id` (`row_id`),
|
||||
KEY `cl1_id` (`cl1_id`),
|
||||
KEY `cl2_id` (`cl2_id`),
|
||||
KEY `date` (`date`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_to_count_and_classificators`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_to_count_and_classificators`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_to_count_and_classificators` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`prod_id` int(11) NOT NULL,
|
||||
`prod_cl_id` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_cl_id_2` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_count` int(11) NOT NULL DEFAULT 0,
|
||||
`prod_incoming_price` float NOT NULL DEFAULT 0 COMMENT 'Sensitive information - Don''t use/show this in public side',
|
||||
`prod_price` float NOT NULL DEFAULT 0,
|
||||
`prod_disabled` enum('0','1','2') DEFAULT '0' COMMENT '0 - enabled / 1 - disabled / 2 - deleted',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `id` (`id`),
|
||||
KEY `prod_id` (`prod_id`),
|
||||
KEY `prod_cl_id` (`prod_cl_id`),
|
||||
KEY `prod_cl_id_2` (`prod_cl_id_2`),
|
||||
KEY `prod_disabled` (`prod_disabled`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_to_delivery`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_to_delivery`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_to_delivery` (
|
||||
`prod_id` int(11) NOT NULL,
|
||||
`dev_id` int(11) NOT NULL DEFAULT 0
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_to_filters`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_to_filters`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_to_filters` (
|
||||
`prod_id` int(11) NOT NULL,
|
||||
`filter_id` int(11) NOT NULL DEFAULT 0,
|
||||
KEY `prod_id` (`prod_id`),
|
||||
KEY `filter_id` (`filter_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_products_to_payments`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_products_to_payments`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_products_to_payments` (
|
||||
`prod_id` int(11) NOT NULL,
|
||||
`paym_id` int(11) NOT NULL DEFAULT 0,
|
||||
KEY `prod_id` (`prod_id`),
|
||||
KEY `paym_id` (`paym_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_sequences`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_sequences`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_sequences` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(200) NOT NULL,
|
||||
`next_index` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_users`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_users`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_users` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_name` varchar(200) NOT NULL,
|
||||
`user_surname` varchar(200) NOT NULL,
|
||||
`user_login` varchar(60) NOT NULL,
|
||||
`user_email` varchar(60) NOT NULL,
|
||||
`user_phone` varchar(30) DEFAULT NULL,
|
||||
`user_password` varchar(255) NOT NULL,
|
||||
`user_img` varchar(390) NOT NULL DEFAULT '',
|
||||
`user_lang_id` int(11) NOT NULL DEFAULT 0,
|
||||
`user_last_ip` varchar(15) NOT NULL DEFAULT '',
|
||||
`user_last_login` int(11) NOT NULL DEFAULT 0,
|
||||
`user_last_location_url` varchar(1000) NOT NULL DEFAULT '',
|
||||
`user_cfg` mediumtext NOT NULL COMMENT 'User cfg serialized',
|
||||
`user_fchange` enum('0','1') NOT NULL DEFAULT '0' COMMENT 'Force change password',
|
||||
`user_2fa_secret_enabled` varchar(40) NOT NULL DEFAULT '',
|
||||
`user_created` int(11) NOT NULL,
|
||||
`user_modified` int(11) NOT NULL,
|
||||
`user_activated` enum('0','1') NOT NULL DEFAULT '1' COMMENT 'Indicates if user is activated ( 0 inactive, 1 active ), by default all users are activated',
|
||||
`user_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`user_deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`user_admin` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`user_pwdtime` int(11) NOT NULL DEFAULT 0,
|
||||
`user_newpwd` varchar(60) NOT NULL DEFAULT '',
|
||||
`user_modified_by` int(11) NOT NULL,
|
||||
`user_created_by` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_users_permissions`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_users_permissions`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_users_permissions` (
|
||||
`user_id` int(11) NOT NULL,
|
||||
`groups_id` int(11) NOT NULL DEFAULT 0,
|
||||
`permissions_id` int(11) NOT NULL DEFAULT 0
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_users_subscription_mails`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_users_subscription_mails`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_users_subscription_mails` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`email` varchar(90) NOT NULL,
|
||||
`email_sub` enum('1','0') NOT NULL,
|
||||
`email_sub_ip` varchar(16) NOT NULL COMMENT 'Ip address from where subscribed',
|
||||
`email_sub_language` int(11) NOT NULL DEFAULT 0,
|
||||
`email_reg_user_agent` mediumtext NOT NULL COMMENT 'User agent when subscribed',
|
||||
`email_added` int(11) NOT NULL COMMENT 'time when subscribed',
|
||||
`email_modified` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `mod_users_whishlist`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `mod_users_whishlist`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `mod_users_whishlist` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) NOT NULL,
|
||||
`product_id` int(11) NOT NULL,
|
||||
`created_at` int(11) DEFAULT NULL COMMENT 'Unix timestamp',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `unique_user_product` (`user_id`,`product_id`),
|
||||
KEY `idx_user` (`user_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_cms_msg`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_cms_msg`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_cms_msg` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`msg_message` varchar(4000) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `msg_message` (`msg_message`(250))
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4581 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_cms_msg_translations`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_cms_msg_translations`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_cms_msg_translations` (
|
||||
`msg_id` int(11) NOT NULL,
|
||||
`msg_lang_id` int(11) NOT NULL,
|
||||
`msg_translation` mediumtext NOT NULL,
|
||||
KEY `msg_id` (`msg_id`),
|
||||
KEY `msg_lang_id` (`msg_lang_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_ipaccess`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_ipaccess`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_ipaccess` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`access_start_ip` int(10) unsigned DEFAULT NULL,
|
||||
`access_end_ip` int(10) unsigned NOT NULL,
|
||||
`access_title` varchar(200) NOT NULL,
|
||||
`access_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`access_created` int(11) NOT NULL,
|
||||
`access_modified` int(11) NOT NULL,
|
||||
`access_global_filter` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`access_description` mediumtext NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_languages`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_languages`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_languages` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`type` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`order` smallint(6) NOT NULL,
|
||||
`default` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`lang_code` varchar(2) NOT NULL,
|
||||
`lang_country` varchar(200) NOT NULL,
|
||||
`lang_title` varchar(20) NOT NULL,
|
||||
`lang_locale` varchar(5) DEFAULT NULL,
|
||||
`lang_cms_e` enum('0','1') NOT NULL DEFAULT '1' COMMENT 'Enabled in cms',
|
||||
`lang_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`lang_created` int(11) NOT NULL,
|
||||
`lang_modified` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `lang_code` (`lang_code`),
|
||||
KEY `type` (`type`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_map`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_map`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_map` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`p_url` varchar(400) NOT NULL,
|
||||
`p_title` varchar(65) NOT NULL,
|
||||
`p_fulltitle` varchar(65) DEFAULT NULL,
|
||||
`p_full_url` varchar(4000) NOT NULL,
|
||||
`p_redirect_url` varchar(4000) DEFAULT NULL,
|
||||
`p_keywords` mediumtext DEFAULT NULL,
|
||||
`p_description` mediumtext DEFAULT NULL,
|
||||
`p_parent` int(11) NOT NULL DEFAULT 0,
|
||||
`p_sdata` mediumtext DEFAULT NULL,
|
||||
`p_type` int(11) NOT NULL DEFAULT 3,
|
||||
`p_lang_id` int(11) NOT NULL,
|
||||
`p_lang_ref_id` int(11) NOT NULL DEFAULT 0,
|
||||
`p_login` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_req_login` int(11) NOT NULL DEFAULT 0,
|
||||
`p_login_redirect` mediumtext DEFAULT NULL,
|
||||
`p_created` int(11) NOT NULL,
|
||||
`p_modified` int(11) NOT NULL,
|
||||
`p_modified_user_id` int(11) NOT NULL,
|
||||
`p_order` int(11) NOT NULL,
|
||||
`p_template_id` int(11) NOT NULL DEFAULT 0,
|
||||
`p_permission` int(11) DEFAULT NULL,
|
||||
`p_menus` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_enabled` enum('0','1') NOT NULL DEFAULT '1',
|
||||
`p_visible` enum('0','1') NOT NULL,
|
||||
`p_skipurl` enum('0','1') NOT NULL,
|
||||
`p_sitemap` enum('0','1') NOT NULL DEFAULT '1',
|
||||
`p_404` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_default` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_inc_by_default` enum('0','1') NOT NULL DEFAULT '0' COMMENT 'Include in menus & show by default in case selected lang url not found',
|
||||
`p_delete_time` int(11) NOT NULL DEFAULT 0,
|
||||
`p_deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_autocache` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_st_cnt` enum('0','1') NOT NULL COMMENT 'static content',
|
||||
`p_2fa` enum('0','1') NOT NULL DEFAULT '0' COMMENT 'Request 2FA',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `p_url` (`p_url`(250)),
|
||||
KEY `p_lang_id` (`p_lang_id`),
|
||||
KEY `p_lang_ref_id` (`p_lang_ref_id`),
|
||||
KEY `p_full_url` (`p_full_url`(250)),
|
||||
KEY `p_redirect_url` (`p_redirect_url`(250)),
|
||||
KEY `p_parent` (`p_parent`),
|
||||
KEY `p_type` (`p_type`),
|
||||
KEY `p_order` (`p_order`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=911 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_map_menus`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_map_menus`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_map_menus` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`map_id` int(11) NOT NULL,
|
||||
`menu_id` int(11) NOT NULL,
|
||||
`menu_type` enum('0','1') NOT NULL DEFAULT '0' COMMENT '0 - link, 1 - load',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `map_id` (`map_id`),
|
||||
KEY `menu_id` (`menu_id`),
|
||||
KEY `menu_type` (`menu_type`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=8627 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_map_modules`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_map_modules`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_map_modules` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`mod_type` int(11) NOT NULL,
|
||||
`mod_code` varchar(200) NOT NULL,
|
||||
`mod_map_id` int(11) NOT NULL,
|
||||
`mod_primary` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`mod_set_byname` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`mod_call_method` varchar(200) DEFAULT NULL,
|
||||
`mod_use_tmpl` varchar(200) NOT NULL,
|
||||
`mod_load_order` smallint(6) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `mod_map_id` (`mod_map_id`),
|
||||
KEY `mod_type` (`mod_type`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=73296 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_map_types`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_map_types`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_map_types` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`m_name` varchar(200) NOT NULL,
|
||||
`m_description` mediumtext NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_map_urls`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_map_urls`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_map_urls` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`url_p_id` int(11) NOT NULL DEFAULT 0 COMMENT 'Url parent id for tree structure',
|
||||
`url_fname` varchar(4000) NOT NULL DEFAULT '' COMMENT 'Url full name',
|
||||
`url_alias_id` int(11) DEFAULT 0 COMMENT 'Url alias module id in site_map',
|
||||
`url_type` int(11) NOT NULL DEFAULT 0 COMMENT 'Url clasificator type',
|
||||
`url_lang_ref_id` int(11) NOT NULL DEFAULT 0 COMMENT 'Base copy node id within url lang range',
|
||||
`url_lang_id` int(11) DEFAULT 0,
|
||||
`url_item_id` int(11) NOT NULL DEFAULT 0 COMMENT 'Linked item id for reference',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `url_fname` (`url_fname`(250)),
|
||||
KEY `url_alias_id` (`url_alias_id`),
|
||||
KEY `url_lang_ref_id` (`url_lang_ref_id`),
|
||||
KEY `url_lang_id` (`url_lang_id`),
|
||||
KEY `url_type` (`url_type`),
|
||||
KEY `url_item_id` (`url_item_id`),
|
||||
KEY `url_p_id` (`url_p_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=172 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_menus`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_menus`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_menus` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`menu_name` varchar(200) NOT NULL,
|
||||
`menu_description` mediumtext NOT NULL,
|
||||
`menu_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`menu_created` int(11) NOT NULL,
|
||||
`menu_modified` int(11) NOT NULL,
|
||||
`menu_load_subs` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`menu_pub_side` enum('1','0') NOT NULL DEFAULT '0',
|
||||
`menu_allowed_sub_ids` varchar(400) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `menu_name` (`menu_name`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_module_types`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_module_types`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_module_types` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`type_name` varchar(200) NOT NULL,
|
||||
`type_description` mediumtext NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_permissions`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_permissions`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_permissions` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`p_name` varchar(200) NOT NULL DEFAULT '',
|
||||
`p_type_id` int(11) NOT NULL DEFAULT 0,
|
||||
`p_description` mediumtext NOT NULL,
|
||||
`p_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`p_created` int(11) NOT NULL DEFAULT 0,
|
||||
`p_modified` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `p_name` (`p_name`),
|
||||
KEY `p_type_id` (`p_type_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=499 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_pub_msg`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_pub_msg`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_pub_msg` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`msg_message` mediumtext NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=769 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_pub_msg_translations`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_pub_msg_translations`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_pub_msg_translations` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`msg_id` int(11) NOT NULL,
|
||||
`msg_lang_id` int(11) NOT NULL,
|
||||
`msg_translation` mediumtext NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `msg_id` (`msg_id`),
|
||||
KEY `msg_lang_id` (`msg_lang_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=769 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_settings`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_settings`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_settings` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`param` varchar(100) NOT NULL,
|
||||
`value` mediumtext NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_update`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_update`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_update` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`u_date` int(11) NOT NULL,
|
||||
`u_remote_file` varchar(2000) NOT NULL,
|
||||
`u_2fa_code` varchar(2000) NOT NULL,
|
||||
`u_remote_status` varchar(2000) NOT NULL,
|
||||
`u_version` varchar(40) NOT NULL,
|
||||
`u_old_version` varchar(40) NOT NULL,
|
||||
`u_response` mediumtext NOT NULL,
|
||||
`u_status` enum('0','1','2','3','4') NOT NULL COMMENT '0 - error, 1 - initiated, 2 - cron accepted, 3 - updated, 4 - canceled',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_users`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_users`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_users` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_name` varchar(200) NOT NULL,
|
||||
`user_surname` varchar(200) NOT NULL,
|
||||
`user_login` varchar(60) NOT NULL,
|
||||
`user_email` varchar(60) NOT NULL,
|
||||
`user_password` varchar(255) NOT NULL,
|
||||
`user_2fa_secret_enabled` varchar(40) NOT NULL DEFAULT '',
|
||||
`user_lang_id` int(11) NOT NULL DEFAULT 1,
|
||||
`user_last_ip` varchar(15) DEFAULT '',
|
||||
`user_last_login` int(11) NOT NULL DEFAULT 0,
|
||||
`user_last_location_url` varchar(1000) NOT NULL DEFAULT '',
|
||||
`user_cfg` mediumtext NOT NULL DEFAULT '' COMMENT 'User cfg serialized',
|
||||
`user_fchange` enum('0','1') NOT NULL DEFAULT '0' COMMENT 'Force change password',
|
||||
`user_created` int(11) NOT NULL DEFAULT 0,
|
||||
`user_modified` int(11) NOT NULL DEFAULT 0,
|
||||
`user_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_login` (`user_login`),
|
||||
KEY `user_password` (`user_password`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_users_groups`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_users_groups`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_users_groups` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`group_name` varchar(200) NOT NULL,
|
||||
`group_description` mediumtext NOT NULL,
|
||||
`group_blocked` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`group_created` int(11) NOT NULL DEFAULT 0,
|
||||
`group_modified` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `group_name` (`group_name`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_users_ipaccess`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_users_ipaccess`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_users_ipaccess` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`range_id` int(11) NOT NULL,
|
||||
`user_id` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `site_users_permissions`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `site_users_permissions`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `site_users_permissions` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) NOT NULL,
|
||||
`groups_id` int(11) NOT NULL DEFAULT 0,
|
||||
`permissions_id` int(11) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_id` (`user_id`),
|
||||
KEY `groups_id` (`groups_id`),
|
||||
KEY `permissions_id` (`permissions_id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9735 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `sys_modules`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `sys_modules`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `sys_modules` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`mod_class_name` varchar(360) NOT NULL,
|
||||
`mod_title` varchar(360) NOT NULL,
|
||||
`mod_db_name` varchar(300) NOT NULL DEFAULT '',
|
||||
`mod_p_name` varchar(90) NOT NULL DEFAULT '' COMMENT 'Module permission name',
|
||||
`mod_type` enum('1','2','3') NOT NULL DEFAULT '1' COMMENT '1 - pub, 2 - cms, 3 - sys',
|
||||
`mod_permission_sql` mediumtext NOT NULL COMMENT 'Permission insert/delete multi sql',
|
||||
`mod_table_sql` mediumtext NOT NULL COMMENT 'Db Table structure sql',
|
||||
`mod_modified` int(11) NOT NULL,
|
||||
`mod_modified_by` int(11) NOT NULL,
|
||||
`mod_created` int(11) NOT NULL,
|
||||
`mod_created_by` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `temp_access_tokens`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `temp_access_tokens`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `temp_access_tokens` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`sid` varchar(64) NOT NULL COMMENT 'sha1 session id',
|
||||
`stime` int(11) NOT NULL COMMENT 'time active till',
|
||||
`stoken` varchar(64) NOT NULL COMMENT 'access token',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `sid` (`sid`),
|
||||
KEY `stime` (`stime`),
|
||||
KEY `stoken` (`stoken`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1746 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `temp_action_log`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `temp_action_log`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `temp_action_log` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) NOT NULL DEFAULT 0,
|
||||
`time` int(11) NOT NULL,
|
||||
`action` varchar(200) NOT NULL,
|
||||
`value` varchar(4000) NOT NULL,
|
||||
UNIQUE KEY `id` (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `temp_cache_exp`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `temp_cache_exp`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `temp_cache_exp` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`key` varchar(60) NOT NULL,
|
||||
`inserted` int(11) NOT NULL,
|
||||
`expires` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `key` (`key`),
|
||||
KEY `inserted` (`inserted`),
|
||||
KEY `expires` (`expires`),
|
||||
KEY `expires_2` (`expires`),
|
||||
KEY `key_2` (`key`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=3417 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='Site Apc cache expire time table';
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `temp_cms_msg_links`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `temp_cms_msg_links`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `temp_cms_msg_links` (
|
||||
`msg_id` int(11) NOT NULL,
|
||||
`map_id` int(11) NOT NULL,
|
||||
KEY `map_id` (`map_id`),
|
||||
KEY `msg_id` (`msg_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `temp_map_links`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `temp_map_links`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `temp_map_links` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`map_id` int(11) NOT NULL,
|
||||
`map_ref_id` int(11) NOT NULL,
|
||||
`map_link_id` int(11) NOT NULL,
|
||||
`map_base_uri` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`map_lang_id` int(11) NOT NULL,
|
||||
`map_type` enum('0','1') NOT NULL DEFAULT '0' COMMENT '0 - site_map link, 1 - site map urls link',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `map_id` (`map_id`),
|
||||
KEY `map_ref_id` (`map_ref_id`),
|
||||
KEY `map_link_id` (`map_link_id`),
|
||||
KEY `map_lang_id` (`map_lang_id`),
|
||||
KEY `map_type` (`map_type`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=11123 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `temp_pub_msg_links`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `temp_pub_msg_links`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `temp_pub_msg_links` (
|
||||
`msg_id` int(11) NOT NULL,
|
||||
`map_id` int(11) NOT NULL,
|
||||
KEY `msg_id` (`msg_id`),
|
||||
KEY `map_id` (`map_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `temp_users_online`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `temp_users_online`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `temp_users_online` (
|
||||
`o_time` int(11) NOT NULL COMMENT 'Online time inserted',
|
||||
`o_ip` varchar(16) NOT NULL COMMENT 'User IP',
|
||||
`o_user_id` int(11) NOT NULL COMMENT 'User id',
|
||||
`o_type` enum('0','1') NOT NULL DEFAULT '0' COMMENT '0 - pub side, 1 - cms side',
|
||||
`o_user_agent` varchar(400) NOT NULL,
|
||||
`o_user_md5_key` varchar(64) NOT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*M!999999\- enable the sandbox mode */
|
||||
-- MariaDB dump 10.19 Distrib 10.5.29-MariaDB, for debian-linux-gnu (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: maison_alexandra_lv
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 10.5.29-MariaDB-ubu2004
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Final view structure for view `view_products_count`
|
||||
--
|
||||
|
||||
/*!50001 DROP VIEW IF EXISTS `view_products_count`*/;
|
||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||
/*!50001 SET character_set_client = utf8mb4 */;
|
||||
/*!50001 SET character_set_results = utf8mb4 */;
|
||||
/*!50001 SET collation_connection = utf8mb4_unicode_ci */;
|
||||
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
|
||||
/*!50001 VIEW `view_products_count` AS select `tc`.`prod_id` AS `prod_id`,`tc`.`row_id` AS `row_id`,`tc`.`cl1_id` AS `cl1_id`,`tc`.`cl2_id` AS `cl2_id`,sum(`tc`.`count`) AS `count`,`cc`.`prod_price` AS `price` from (`mod_products_to_count` `tc` left join `mod_products_to_count_and_classificators` `cc` on(`tc`.`prod_id` = `cc`.`prod_id` and `tc`.`row_id` = `cc`.`id`)) group by `tc`.`prod_id`,`tc`.`row_id`,`tc`.`cl1_id`,`tc`.`cl2_id` */;
|
||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2026-07-22 19:50:46
|
||||
|
|
@ -0,0 +1,484 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# SCRIPT EXEC LOCATION: /opt/update
|
||||
# ---------------------------------------------------------------------------------------------------------------------
|
||||
# Usage: ./export_project.sh -project=maisonalexandra.lv -branch="release/legacy-system-php74"=
|
||||
|
||||
git_repository=""
|
||||
www_project_dir=""
|
||||
git_clone_dir=""
|
||||
project_title=""
|
||||
export_branch=""
|
||||
backup_cfg_file_location_check=""
|
||||
|
||||
Red='\033[31m'
|
||||
Green='\033[0;32m'
|
||||
Color_Off='\033[0m'
|
||||
|
||||
script_dir="/opt/update/project_updates"
|
||||
|
||||
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-project=*|--update_project=*) project_title="${i#*=}" ;;
|
||||
-branch=*|--export_branch=*) export_branch="${i#*=}" ;;
|
||||
*) echo "Unknown parameter passed: $i"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Override Script dir for testing for maisonalexandra.local.test
|
||||
if [[ "$project_title" == "maisonalexandra.local.test" ]]; then
|
||||
script_dir="/var/www/html/development/scripts/temp"
|
||||
script_dir="/Users/marekskeiss/Projects/brsystems/git/MAISON ALEXANDRA/development/scripts/temp"
|
||||
fi
|
||||
|
||||
statusOkMessageOutput() {
|
||||
local msg=$1
|
||||
local status=$2
|
||||
local dashes="------------------------------------------------------------"
|
||||
echo -e "$msg ${dashes:1:60-${#msg}}> ${Green}$status${Color_Off}"
|
||||
}
|
||||
dirOperationFailure() {
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}An error occured while executing cd command...${Red}\n"
|
||||
echo -e "${Red}$1${Color_Off}\n"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Check if base data provided
|
||||
if [[ -z "$project_title" || -z "$export_branch" ]]; then
|
||||
echo "Base data not provided...."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Declare configuration for export
|
||||
declare -a repoConfiguration
|
||||
|
||||
repoConfiguration[0]="maisonalexandra.lv;ssh://git@gitea.brsystems.lv:2020/brs/MAISON ALEXANDRA.git;MAISON ALEXANDRA;/var/www;system-brs-core/config/init.cfg.ini"
|
||||
repoConfiguration[1]="maisonalexandra.local.test;ssh://git@gitea.brsystems.lv:2020/brs/MAISON ALEXANDRA.git;MAISON ALEXANDRA;$script_dir/www;system-brs-core/config/init.cfg.ini"
|
||||
repoConfiguration[3]="domain.fr;fr;http"
|
||||
|
||||
for page in "${repoConfiguration[@]}"
|
||||
do
|
||||
# turn e.g. 'domain.de;de;https' into
|
||||
# array ['domain.de', 'de', 'https']
|
||||
IFS=";" read -r -a arr <<< "${page}"
|
||||
|
||||
site="${arr[0]}" # maisonalexandra.lv
|
||||
|
||||
if [[ "$project_title" == "$site" ]]; then
|
||||
|
||||
git_repository="${arr[1]}" # ssh://git@gitea.brsystems.lv:2020/brs/MAISON ALEXANDRA.git
|
||||
git_clone_dir="${arr[2]}" # MAISON ALEXANDRA
|
||||
www_project_dir="${arr[3]}" # /var/www
|
||||
backup_cfg_file_location_check="${arr[4]}" # system-brs-core/config/init.cfg.ini
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
# Check if base structure found in cfg
|
||||
if [[ -z "$git_clone_dir" || -z "$git_repository" || -z "$www_project_dir" || ! -d "$script_dir" || ! -d "$www_project_dir/$project_title" || ! -d "$www_project_dir/$project_title" ]]; then
|
||||
echo "Base configuration not found...."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
statusOkMessageOutput "Base configuration load & check" "OK"
|
||||
|
||||
# Create copy of current project state
|
||||
temp_dir_title=$(date +%Y.%m.%d)_${project_title}_update_$(date +%H%M%S)
|
||||
working_dir="$script_dir/$temp_dir_title"
|
||||
# if directory exists exit
|
||||
if [[ -d "$working_dir" ]]; then
|
||||
echo "Project already exists ahead of backup creation - try again a bit later..."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
mkdir "$working_dir"
|
||||
cd "$working_dir" || dirOperationFailure "$working_dir"
|
||||
statusOkMessageOutput "Working directory configuration" "OK"
|
||||
|
||||
# Create backup copy of original code
|
||||
mkdir -p "$working_dir/backup/${project_title}"
|
||||
cp -rip "$www_project_dir/$project_title" "$working_dir/backup"
|
||||
if [[ ! -d "$working_dir/backup/${project_title}" || ! -d "$working_dir/backup/${project_title}/files" || ! -f "$working_dir/backup/${project_title}/${backup_cfg_file_location_check}" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Backup copy creation failed!\n"
|
||||
exit 0
|
||||
fi
|
||||
statusOkMessageOutput "Backup copy created" "OK"
|
||||
statusOkMessageOutput "Zipping project backup data - SLOW!!!" "Zipping"
|
||||
|
||||
# Zip backup for easier access
|
||||
cd "$working_dir/backup/" || dirOperationFailure "$working_dir/backup/"
|
||||
zip -r "${project_title}.zip" "${project_title}" >/dev/null
|
||||
if [[ ! -f "${project_title}.zip" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Backup copy zip creation failed!\n"
|
||||
exit 0
|
||||
fi
|
||||
echo -e "Backup .zip location: $working_dir/backup/${project_title}.zip"
|
||||
statusOkMessageOutput "Backup copy zipped for easier access" "OK"
|
||||
|
||||
# Extract new code from git
|
||||
cd "$working_dir" || dirOperationFailure "$working_dir"
|
||||
git clone "$git_repository"
|
||||
cd "$git_clone_dir" || dirOperationFailure "$git_clone_dir"
|
||||
statusOkMessageOutput "Git repository cloned" "OK"
|
||||
|
||||
# Check that the correct branch exists
|
||||
# -q quiet output, not to output found string
|
||||
# -i option, short for –ignore-case
|
||||
# -c option tells grep to count its total number of occurrences
|
||||
# by default exit status is 0 (true) if the pattern was found; otherwise blank string.
|
||||
if [[ $(git branch -a | grep -ic "$export_branch") -eq 0 ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Specified branch not found...${Red}\n"
|
||||
echo -e "${Red}$export_branch${Color_Off}\n"
|
||||
exit 0
|
||||
fi
|
||||
if [[ $(git branch -a | grep -ic "$export_branch") -gt 1 ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}More than one export branch found:${Red}\n"
|
||||
git branch -a | grep -i "$export_branch"
|
||||
echo -e "\n${Color_Off}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Checkout desired branch
|
||||
git checkout "$export_branch"
|
||||
|
||||
# Check that the correct branch has been exported
|
||||
if [[ ! $(git branch | grep -ic "$export_branch") -eq 1 ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Branch checkout failure! :${Red}\n"
|
||||
echo -e "$export_branch${Color_Off}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
statusOkMessageOutput "Switched to correct branch" "OK"
|
||||
|
||||
# Create git archive for update
|
||||
git archive --format zip --output "$working_dir/export.zip" "$export_branch"
|
||||
|
||||
if [[ ! -f "$working_dir/export.zip" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Zip archive not found!${Red}\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
statusOkMessageOutput "Archive .zip created successfully" "OK"
|
||||
|
||||
cd "$working_dir" || dirOperationFailure "$working_dir"
|
||||
unzip export.zip -d "$working_dir/new_version_data" >/dev/null
|
||||
cd "$working_dir/new_version_data" || dirOperationFailure "$working_dir/new_version_data"
|
||||
|
||||
statusOkMessageOutput "Archive successfully unzipped" "OK"
|
||||
|
||||
|
||||
# Data / folder movement according to each specific project
|
||||
case $project_title in
|
||||
|
||||
#--------------------------------------------------------------------------------------
|
||||
# ZUTENIS GIT BASE DEPLOYMENT
|
||||
#--------------------------------------------------------------------------------------
|
||||
"zutenis.lv"|"zutenis.local.test")
|
||||
|
||||
su_user_pass='$2y$11$nM7tTu3k/rQGswhREUXlsOUJoZdbumlcoQG07YiCFbQGFTqcYY3Di'
|
||||
su_user_key='3HMZGRH7JEC2OBPR'
|
||||
|
||||
# Moving & renaming WWW
|
||||
mv "$working_dir/new_version_data/www" "$working_dir/new_$project_title"
|
||||
|
||||
if [[ ! -d "$working_dir/new_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}WWW DIR movement failed!${Red}\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cd "$working_dir/new_$project_title" || dirOperationFailure "$working_dir/new_$project_title"
|
||||
rm -Rf "files"
|
||||
rm -f "system-brs-core/config/init.cfg.ini"
|
||||
|
||||
cp "$www_project_dir/$project_title/system-brs-core/config/init.cfg.ini" "system-brs-core/config/init.cfg.ini"
|
||||
cp -r "$www_project_dir/$project_title/files" "files"
|
||||
|
||||
# Validate that the directories are all in place
|
||||
if [[ ! -f "system-brs-core/config/init.cfg.ini" || ! -d "files" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Some files are not copied correctly!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
statusOkMessageOutput "File update / movement" "OK"
|
||||
|
||||
cd "$working_dir/new_$project_title" || dirOperationFailure "$working_dir/new_$project_title"
|
||||
|
||||
twoFactor='3HMZGRH7JEC2OBPR'
|
||||
password='$2y$11$nM7tTu3k\/rQGswhREUXlsOUJoZdbumlcoQG07YiCFbQGFTqcYY3Di'
|
||||
sed -i "s/^ CONST suUserPassword.*/ CONST suUserPassword = '$password';/" system-brs-core/app/pubUsers/inc/pubUsersController.php
|
||||
sed -i "s/^ CONST sSUser2FASecret.*/ CONST sSUser2FASecret = '$twoFactor';/" system-brs-core/app/pubUsers/inc/pubUsersController.php
|
||||
statusOkMessageOutput "Sed replacement operations" "OK"
|
||||
|
||||
chown apache:apache -R "$working_dir/new_$project_title"
|
||||
|
||||
cd "$working_dir/new_$project_title" || dirOperationFailure "$working_dir/new_$project_title"
|
||||
find . -type f -exec chmod 0644 {} \;
|
||||
find . -type d -exec chmod 0755 {} \;
|
||||
statusOkMessageOutput "Directory permission [chown/chmod] setup" "OK"
|
||||
|
||||
chcon -t httpd_sys_content_t "$working_dir/new_$project_title" -R
|
||||
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/cache" -R
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/files" -R
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/logs" -R
|
||||
|
||||
statusOkMessageOutput "SElinux Permission [httpd_sys_rw_content_t] setup" "OK"
|
||||
|
||||
# Check if destination already doesn't have new folder
|
||||
if [[ -d "$www_project_dir/new_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Movement to base WWW dir failed!"
|
||||
echo -e "\n${Red}$www_project_dir/new_$project_title ${Color_Off}already exists!\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
||||
# Update COMPOSER library location - each project might contain its own copy
|
||||
# - so it will reside inside project folder
|
||||
#--------------------------------------------------------------------------------------
|
||||
cd "$working_dir/new_$project_title" || dirOperationFailure "$working_dir/new_$project_title"
|
||||
sed -i "s#^ include './../vendor/autoload.php';# include './vendor/autoload.php';#" ./index.php
|
||||
|
||||
# Copy composer files to directory
|
||||
cp "$working_dir/new_version_data/composer.json" "$working_dir/new_$project_title/composer.json"
|
||||
cp "$working_dir/new_version_data/composer.lock" "$working_dir/new_$project_title/composer.lock"
|
||||
|
||||
# Modify composer file autoload paths
|
||||
sed -i 's#^ "BRSystems\\\\Core\\\\Cms\\\\" : "www/system-brs-core/cms/",# "BRSystems\\\\Core\\\\Cms\\\\" : "system-brs-core/cms/",#' "$working_dir/new_$project_title/composer.json"
|
||||
sed -i 's#^ "BRSystems\\\\Core\\\\App\\\\" : "www/system-brs-core/app/",# "BRSystems\\\\Core\\\\App\\\\" : "system-brs-core/app/",#' "$working_dir/new_$project_title/composer.json"
|
||||
sed -i 's#^ "BRSystems\\\\Core\\\\Sys\\\\" : "www/system-brs-core/sys/",# "BRSystems\\\\Core\\\\Sys\\\\" : "system-brs-core/sys/",#' "$working_dir/new_$project_title/composer.json"
|
||||
sed -i 's#^ "BRSystems\\\\Core\\\\Config\\\\" : "www/system-brs-core/config/",# "BRSystems\\\\Core\\\\Config\\\\" : "system-brs-core/config/",#' "$working_dir/new_$project_title/composer.json"
|
||||
sed -i 's#^ "BRSystems\\\\Core\\\\Library\\\\" : "www/system-brs-core/library/",# "BRSystems\\\\Core\\\\Library\\\\" : "system-brs-core/library/",#' "$working_dir/new_$project_title/composer.json"
|
||||
sed -i 's#^ "BRSystems\\\\Core\\\\Helpers\\\\" : "www/system-brs-core/functions/"# "BRSystems\\\\Core\\\\Helpers\\\\" : "system-brs-core/functions/"#' "$working_dir/new_$project_title/composer.json"
|
||||
|
||||
|
||||
# Validate copied files
|
||||
if [[ ! -f "composer.json" || ! -f "composer.lock" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Composer cfg files are not copied correctly!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
statusOkMessageOutput "Composer cfg files copied" "OK"
|
||||
statusOkMessageOutput "Composer install - SLOW!!!" "installing"
|
||||
|
||||
# Override composer install for testing for maisonalexandra.local.test
|
||||
# TODO BRS: Be great to create a separate container with same server structure and testing ground
|
||||
if [[ "$project_title" == "maisonalexandra.local.test" ]]; then
|
||||
if [[ $(docker exec -i maisonalexandra_php bash -c "cd /var/www/html/development/scripts/temp/$temp_dir_title/new_$project_title; composer install --no-dev" 2>&1 | grep -ic "autoload") -eq 0 ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Composer installation failed...${Red}\n"
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
# Install composer library
|
||||
if [[ $(COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev 2>&1 | grep -ic "autoload") -eq 0 ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Composer installation failed...${Red}\n"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check some dirs exists in vendor folder
|
||||
if [[ ! -d "vendor" || ! -d "vendor/dompdf" || ! -d "vendor/twig" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Composer package not installed correctly!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
statusOkMessageOutput "Composer installed into new dir" "OK"
|
||||
|
||||
|
||||
# Copy FONT to DomPdf & Install "Muli" font
|
||||
#--------------------------------------------------------------------------------------
|
||||
cd "$working_dir/new_$project_title" || dirOperationFailure "$working_dir/new_$project_title"
|
||||
|
||||
# Check some dirs exists in vendor folder
|
||||
if [[ ! -d "vendor/dompdf" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Dompdf package is missing, failed installing Muli font!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Copy font loader and data to package location
|
||||
cp "$working_dir/new_$project_title/system-brs-core/library/cPdfFromHTML/load_font.php" \
|
||||
"$working_dir/new_$project_title/vendor/dompdf/load_font.php"
|
||||
mv "$working_dir/new_$project_title/system-brs-core/library/cPdfFromHTML/FONTS" \
|
||||
"$working_dir/new_$project_title/vendor/dompdf/FONTS"
|
||||
|
||||
# Navigate to font dir
|
||||
cd "$working_dir/new_$project_title/vendor/dompdf" || dirOperationFailure "$working_dir/new_$project_title/vendor/dompdf"
|
||||
if [[ ! -d "FONTS" || ! -f "load_font.php" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Dompdf font installation data are missing!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Add permissions
|
||||
chmod +x "$working_dir/new_$project_title/vendor/dompdf/load_font.php"
|
||||
chmod +x -R "$working_dir/new_$project_title/vendor/dompdf/FONTS"
|
||||
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/vendor/dompdf/load_font.php"
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/vendor/dompdf/FONTS" -R
|
||||
|
||||
# Install the font - FONT LOADER FAILS, NEED TO CALL MANUALLY !!!!!
|
||||
php load_font.php 'Muli' ./FONTS/Muli/static/Muli-Regular.ttf ./FONTS/Muli/static/Muli-Bold.ttf ./FONTS/Muli/static/Muli-Italic.ttf ./FONTS/Muli/static/Muli-BoldItalic.ttf >/dev/null
|
||||
|
||||
# Check Muli font in new location
|
||||
cd "dompdf/lib/fonts" || dirOperationFailure "dompdf/lib/fonts"
|
||||
if [[ ! -f "Muli-Bold.ufm" || ! -f "Muli-Bold.ttf" || ! -f "Muli-Regular.ttf" || ! -f "Muli-Regular.ufm" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Dompdf font installation failed - new font not found!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
statusOkMessageOutput "Dompdf Muli font installation successful" "OK"
|
||||
|
||||
|
||||
# Final movement before DEPLOYMENT
|
||||
#--------------------------------------------------------------------------------------
|
||||
mv "$working_dir/new_$project_title" "$www_project_dir/new_$project_title"
|
||||
|
||||
if [[ ! -d "$www_project_dir/new_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Movement to base WWW dir failed!"
|
||||
exit 0
|
||||
fi
|
||||
statusOkMessageOutput "Pre-deployment status check" "OK"
|
||||
|
||||
# Deploy new Version
|
||||
mv "$www_project_dir/$project_title" "$www_project_dir/old_$project_title"
|
||||
mv "$www_project_dir/new_$project_title" "$www_project_dir/$project_title"
|
||||
|
||||
if [[ -d "$www_project_dir/new_$project_title" || ! -d "$www_project_dir/old_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}DEPLOYMENT within WWW dir failed!!!!!!!!"
|
||||
exit 0
|
||||
fi
|
||||
statusOkMessageOutput "Project $project_title deployment successful" "OK"
|
||||
|
||||
# Cleanup
|
||||
rm -Rf "$working_dir/${git_clone_dir:?}"
|
||||
rm -Rf "$working_dir/new_version_data"
|
||||
rm -Rf "$www_project_dir/old_${project_title:?}"
|
||||
|
||||
if [[ -d "$working_dir/$git_clone_dir" || -d "$working_dir/new_version_data" || -d "$www_project_dir/old_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Data CLEANUP failed!"
|
||||
exit 0
|
||||
fi
|
||||
statusOkMessageOutput "Project $project_title CLEANUP successful" "OK"
|
||||
|
||||
# Clearing cache folder
|
||||
rm -Rf "$www_project_dir/$git_clone_dir/cache/*"
|
||||
statusOkMessageOutput "Cache clear successful" "OK"
|
||||
|
||||
;;
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------------
|
||||
# DSDDELUXE.EU GIT BASE DEPLOYMENT
|
||||
#--------------------------------------------------------------------------------------
|
||||
"dsddeluxe.eu")
|
||||
|
||||
# Moving & renaming WWW
|
||||
mv "$working_dir/new_version_data/www" "$working_dir/new_$project_title"
|
||||
|
||||
if [[ ! -d "$working_dir/new_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}WWW DIR movement failed!${Red}\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
cd "$working_dir/new_$project_title" || dirOperationFailure "$working_dir/new_$project_title"
|
||||
rm -Rf "files"
|
||||
rm -f "system/config/main.cfg.php"
|
||||
|
||||
cp "$www_project_dir/$project_title/system/config/main.cfg.php" "system/config/main.cfg.php"
|
||||
cp -r "$www_project_dir/$project_title/files" "files"
|
||||
|
||||
# Validate that the directories are all in place
|
||||
if [[ ! -f "system/config/main.cfg.php" || ! -d "files" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Some files are not copied correctly!"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
statusOkMessageOutput "File update / movement" "OK"
|
||||
|
||||
|
||||
chown apache:apache -R "$working_dir/new_$project_title"
|
||||
|
||||
cd "$working_dir/new_$project_title" || dirOperationFailure "$working_dir/new_$project_title"
|
||||
find . -type f -exec chmod 0644 {} \;
|
||||
find . -type d -exec chmod 0755 {} \;
|
||||
statusOkMessageOutput "Directory permission [chown/chmod] setup" "OK"
|
||||
|
||||
chcon -t httpd_sys_content_t "$working_dir/new_$project_title" -R
|
||||
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/cache" -R
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/files" -R
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/logs" -R
|
||||
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/system/library/vendor/dompdf/dompdf/lib/fonts" -R
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/system/library/smarty/cache" -R
|
||||
chcon -t httpd_sys_rw_content_t "$working_dir/new_$project_title/system/library/smarty/templates_c" -R
|
||||
|
||||
statusOkMessageOutput "SElinux Permission [httpd_sys_rw_content_t] setup" "OK"
|
||||
|
||||
|
||||
# Check if destination already doesn't have new folder
|
||||
if [[ -d "$www_project_dir/new_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Movement to base WWW dir failed!"
|
||||
echo -e "\n${Red}$www_project_dir/new_$project_title ${Color_Off}already exists!\n"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Final movement before DEPLOYMENT
|
||||
mv "$working_dir/new_$project_title" "$www_project_dir/new_$project_title"
|
||||
|
||||
if [[ ! -d "$www_project_dir/new_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Movement to base WWW dir failed!"
|
||||
exit 0
|
||||
fi
|
||||
statusOkMessageOutput "Pre-deployment status check" "OK"
|
||||
|
||||
# Deploy new Version
|
||||
mv "$www_project_dir/$project_title" "$www_project_dir/old_$project_title"
|
||||
mv "$www_project_dir/new_$project_title" "$www_project_dir/$project_title"
|
||||
|
||||
if [[ -d "$www_project_dir/new_$project_title" || ! -d "$www_project_dir/old_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}DEPLOYMENT within WWW dir failed!!!!!!!!"
|
||||
exit 0
|
||||
fi
|
||||
statusOkMessageOutput "Project $project_title deployment successful" "OK"
|
||||
|
||||
# Cleanup
|
||||
rm -Rf "$working_dir/${git_clone_dir:?}"
|
||||
rm -Rf "$working_dir/new_version_data"
|
||||
rm -Rf "$www_project_dir/old_${project_title:?}"
|
||||
|
||||
if [[ -d "$working_dir/$git_clone_dir" || -d "$working_dir/new_version_data" || -d "$www_project_dir/old_$project_title" ]]; then
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Data CLEANUP failed!"
|
||||
exit 0
|
||||
fi
|
||||
statusOkMessageOutput "Project $project_title CLEANUP successful" "OK"
|
||||
|
||||
# Clearing cache folder
|
||||
rm -Rf "$www_project_dir/$git_clone_dir/cache/*"
|
||||
rm -Rf "$www_project_dir/$git_clone_dir/system/library/smarty/cache/*"
|
||||
rm -Rf "$www_project_dir/$git_clone_dir/system/library/smarty/templates_c/*"
|
||||
statusOkMessageOutput "Cache clear successful" "OK"
|
||||
|
||||
;;
|
||||
|
||||
#--------------------------------------------------------------------------------------
|
||||
# OMEGAONLINE.LV GIT BASE DEPLOYMENT
|
||||
#--------------------------------------------------------------------------------------
|
||||
"omegaonline.lv")
|
||||
echo -e "Romanian"
|
||||
;;
|
||||
|
||||
|
||||
#--------------------------------------------------------------------------------------
|
||||
# UNSUPPORTED PROJECT - EXIT !
|
||||
#--------------------------------------------------------------------------------------
|
||||
*)
|
||||
echo -e "\n${Red}ABORTING: ${Color_Off}Project folder setup not found / not defined!"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
|
||||
exit 1
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
version: "3.8"
|
||||
|
||||
services:
|
||||
php_74:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: docker/development/php-apache.DockerFile
|
||||
container_name: maisonalexandra_php
|
||||
environment:
|
||||
TZ: "Europe/Riga"
|
||||
WEB_DOCUMENT_ROOT: "/var/www/html/www"
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
# Mount folders
|
||||
# :delegated - when docker container performs changes, host is in read only mode.
|
||||
# :cached - when the host performs changes, the container is in read only mode.
|
||||
- .:/var/www/html
|
||||
|
||||
# Mount Environment configuration
|
||||
- ./docker/development/php.ini:/opt/docker/etc/php/php.ini
|
||||
networks:
|
||||
maisonalexandra-network:
|
||||
aliases:
|
||||
- local.maisonalexandra.lv
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
|
||||
mysql:
|
||||
#image: mysql:5.7
|
||||
image: mariadb:10.5
|
||||
container_name: maisonalexandra_mysql
|
||||
ports:
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
- ./development/database:/opt
|
||||
- ./docker/development/mysql-config-file.cnf:/etc/mysql/conf.d/config-file.cnf
|
||||
environment:
|
||||
TZ: "Europe/Riga"
|
||||
MYSQL_ROOT_PASSWORD: 'root'
|
||||
networks:
|
||||
- maisonalexandra-network
|
||||
|
||||
mailhog:
|
||||
image: mailhog/mailhog
|
||||
container_name: maisonalexandra_mailhog
|
||||
ports:
|
||||
- "1025:1025"
|
||||
- "8025:8025"
|
||||
networks:
|
||||
- maisonalexandra-network
|
||||
|
||||
phpmyadmin:
|
||||
image: phpmyadmin/phpmyadmin
|
||||
container_name: maisonalexandra_phpmyadmin
|
||||
environment:
|
||||
TZ: "Europe/Riga"
|
||||
PMA_HOST: maisonalexandra_mysql
|
||||
PMA_PORT: 3306
|
||||
UPLOAD_LIMIT: 40M
|
||||
ports:
|
||||
- "8888:80"
|
||||
networks:
|
||||
- maisonalexandra-network
|
||||
|
||||
# Selenium Hub & Browser Nodes
|
||||
selenium_hub:
|
||||
container_name: maisonalexandra_selenium_hub
|
||||
image: selenium/hub:3.141.59
|
||||
ports:
|
||||
- "4444:4444"
|
||||
restart: always
|
||||
networks:
|
||||
- maisonalexandra-network
|
||||
volumes:
|
||||
- ./tests:/var/www
|
||||
environment:
|
||||
- GRID_UNREGISTER_IF_STILL_DOWN_AFTER=300
|
||||
|
||||
firefox_node:
|
||||
container_name: maisonalexandra_selenium_firefox_node
|
||||
image: selenium/node-firefox-debug:3.141.59
|
||||
ports:
|
||||
- "5902:5900"
|
||||
restart: always
|
||||
networks:
|
||||
- maisonalexandra-network
|
||||
volumes:
|
||||
- ./temp:/var/www/temp
|
||||
environment:
|
||||
- HUB_HOST=maisonalexandra_selenium_hub
|
||||
- HUB_PORT=4444
|
||||
|
||||
chrome_node:
|
||||
container_name: maisonalexandra_selenium_chrome_node
|
||||
image: selenium/node-chrome-debug:3.141.59
|
||||
ports:
|
||||
- "5901:5900"
|
||||
restart: always
|
||||
networks:
|
||||
- maisonalexandra-network
|
||||
volumes:
|
||||
- ./temp:/var/www/temp
|
||||
environment:
|
||||
- HUB_HOST=maisonalexandra_selenium_hub
|
||||
- HUB_PORT=4444
|
||||
|
||||
networks:
|
||||
maisonalexandra-network:
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
deb http://archive.debian.org/debian/ buster main non-free contrib
|
||||
deb-src http://archive.debian.org/debian/ buster main non-free contrib
|
||||
deb http://archive.debian.org/debian-security/ buster/updates main non-free contrib
|
||||
deb-src http://archive.debian.org/debian-security/ buster/updates main non-free contr
|
||||
|
|
@ -0,0 +1 @@
|
|||
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * wget -q -O /var/www/html/www/logs/cron_call.log http://local.elixirvault.lv/cron/ctp:ZUTENIS-A94A8FE5CCB19BA61C4C0873D391E987982FBBD3/ct:check
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
[mysqld]
|
||||
secure-file-priv = ""
|
||||
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
# GoLang image - For MailHog
|
||||
#FROM golang:1.13.4-buster AS mailhogBuilder
|
||||
#RUN go get github.com/mailhog/mhsendmail \
|
||||
# && cp /go/bin/mhsendmail /usr/bin/mhsendmail
|
||||
|
||||
# Apple silicon setup
|
||||
FROM golang:1.15 AS mailhogBuilder
|
||||
RUN go get -d -v github.com/mailhog/mhsendmail \
|
||||
&& cd /go/src/github.com/mailhog/mhsendmail/ \
|
||||
&& GOOS=linux GOARCH=arm64 go build -o mhsendmail .
|
||||
|
||||
# For M1 support use this image:
|
||||
FROM formatdgmbh/webdevops-php-apache-dev:7.4
|
||||
|
||||
# Copy new Debian archive sources list to fix APT
|
||||
COPY ./docker/development/config/sources.list /etc/apt/sources.list
|
||||
|
||||
RUN apt-get update &&\
|
||||
apt-get install --no-install-recommends --assume-yes --quiet ca-certificates vim screen poppler-utils cron
|
||||
|
||||
|
||||
RUN rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Add php to default path as shell
|
||||
ENV PATH="${PATH}:/usr/local/bin/php"
|
||||
|
||||
WORKDIR /var/www/html/www
|
||||
|
||||
# Configure the cron
|
||||
# Copy file to the cron.d directory
|
||||
RUN touch /var/log/cron.log
|
||||
COPY ./docker/development/cron_job /etc/cron.d/cron_job
|
||||
|
||||
# Give execution rights on the cron job
|
||||
RUN chmod 0644 /etc/cron.d/cron_job
|
||||
|
||||
# Apply cron job
|
||||
RUN crontab /etc/cron.d/cron_job
|
||||
|
||||
# Disable sendmail_path from php.webdevops.ini cfg file which overrider php.ini
|
||||
RUN sed -i "s/^sendmail_path/;sendmail_path/" /opt/docker/etc/php/php.webdevops.ini
|
||||
RUN sed -i "s/^php_admin_value\[sendmail_path\]/;php_admin_value\[sendmail_path\]/" /opt/docker/etc/php/fpm/pool.d/application.conf
|
||||
|
||||
COPY ./docker/development/php.ini /opt/docker/etc/php/php.ini
|
||||
|
||||
|
||||
# Copy the Mailhog executable from the GoLang image to the PHP image
|
||||
#COPY --from=mailhogBuilder /usr/bin/mhsendmail /usr/bin/mhsendmail
|
||||
# Apple silicon support
|
||||
COPY --from=mailhogBuilder /go/src/github.com/mailhog/mhsendmail/mhsendmail /usr/bin/mhsendmail
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
; Maximum allowed size for uploaded files.
|
||||
upload_max_filesize = 40M
|
||||
; Must be greater than or equal to upload_max_filesize
|
||||
post_max_size = 40M
|
||||
|
||||
xdebug.max_nesting_level="1000"
|
||||
xdebug.idekey="docker"
|
||||
xdebug.discover_client_host="0"
|
||||
xdebug.mode="develop,debug,coverage"
|
||||
xdebug.start_with_request="trigger"
|
||||
xdebug.client_host="host.docker.internal"
|
||||
xdebug.client_port="9003"
|
||||
|
||||
memory_limit=-1
|
||||
;error_reporting=-1
|
||||
;log_errors_max_len=0
|
||||
;zend.assertions=1
|
||||
;assert.exception=1
|
||||
xdebug.show_exception_trace=0
|
||||
|
||||
[mail function]
|
||||
SMTP = elixirvault_mailhog
|
||||
smtp_port = 1025
|
||||
mail.add_x_header = On
|
||||
sendmail_path = /usr/bin/mhsendmail -oi -t --smtp-addr elixirvault_mailhog:1025
|
||||
php_admin_value[sendmail_path] = /usr/bin/mhsendmail -oi -t --smtp-addr elixirvault_mailhog:1025
|
||||
mail.log = /var/www/html/www/logs/mail_log.log
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
Copyright (c) 2016 The Muli Project Authors (contact@sansoxygen.com)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
Muli Variable Font
|
||||
==================
|
||||
|
||||
This download contains Muli as both variable fonts and static fonts.
|
||||
|
||||
Muli is a variable font with this axis:
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
Muli-VariableFont:wght.ttf
|
||||
Muli-Italic-VariableFont:wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Muli:
|
||||
static/Muli-ExtraLight.ttf
|
||||
static/Muli-Light.ttf
|
||||
static/Muli-Regular.ttf
|
||||
static/Muli-Medium.ttf
|
||||
static/Muli-SemiBold.ttf
|
||||
static/Muli-Bold.ttf
|
||||
static/Muli-ExtraBold.ttf
|
||||
static/Muli-Black.ttf
|
||||
static/Muli-ExtraLightItalic.ttf
|
||||
static/Muli-LightItalic.ttf
|
||||
static/Muli-Italic.ttf
|
||||
static/Muli-MediumItalic.ttf
|
||||
static/Muli-SemiBoldItalic.ttf
|
||||
static/Muli-BoldItalic.ttf
|
||||
static/Muli-ExtraBoldItalic.ttf
|
||||
static/Muli-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
Commercial usage is allowed for any purpose, in any medium, but some
|
||||
requirements apply in some situations. Always read your font licenses and
|
||||
understand what they mean.
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# PDF fonts
|
||||
###Installation of additional fonts for PDF generation utf support
|
||||
|
||||
In normal case fonts are copied by the setup script upon composer installation, if manual instal required note that font utility is required after which please run the specific terminal command, by specifying correct font paths & file locations
|
||||
|
||||
|
||||
`php load_font.php 'Muli' ./FONTS/Muli/static/Muli-Regular.ttf ./FONTS/Muli/static/Muli-Bold.ttf ./FONTS/Muli/static/Muli-Italic.ttf ./FONTS/Muli/static/Muli-BoldItalic.ttf`
|
||||
|
||||
php load_font.php 'Muli' ./FONTS/Muli/static/Muli-Regular.ttf ./FONTS/Muli/static/Muli-Bold.ttf ./FONTS/Muli/static/Muli-Italic.ttf ./FONTS/Muli/static/Muli-BoldItalic.ttf
|
||||
./FONTS/Muli/static/Muli-SemiBold.ttf ./FONTS/Muli/static/Muli-Bold.ttf ./FONTS/Muli/static/Muli-Italic.ttf ./FONTS/Muli/static/Muli-BoldItalic.ttf
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# **Upon migration:**
|
||||
|
||||
* Add `Muli` font for `dompdf` pdf exports, copy vendor folder to its location & run copy `Mule` font command - if `composer` is reinstalled add `font_load.php`, `FONTS/Muli` dir & load `Muli` font;
|
||||
* Enable selinux `setsebool -P httpd_can_network_connect 1`;
|
||||
* Check gd has png support;
|
||||
* Update MySql server to disable group by `sql_mode=` does not have `ONLY_FULL_GROUP_BY` - edit `my.cnf`, under `[mysqld]` section set `sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION`;
|
||||
* Update CRON calls for outgoing mails;
|
||||
* Update CRON for backup generation & update NAS access;
|
||||
* Check Apcu enabled on Rocky Linux 9 for php74 - `sudo dnf update && sudo dnf install php74-php-pecl-apcu-bc.x86_64`;
|
||||
* Regenerate SSL certificates;
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.5/phpunit.xsd"
|
||||
bootstrap="vendor/autoload.php"
|
||||
cacheResultFile=".phpunit.cache/test-results"
|
||||
colors="true"
|
||||
executionOrder="depends,defects"
|
||||
forceCoversAnnotation="false"
|
||||
processIsolation="false"
|
||||
beStrictAboutCoversAnnotation="true"
|
||||
beStrictAboutOutputDuringTests="true"
|
||||
beStrictAboutTodoAnnotatedTests="true"
|
||||
convertDeprecationsToExceptions="true"
|
||||
failOnRisky="true"
|
||||
failOnWarning="true"
|
||||
verbose="true">
|
||||
<php>
|
||||
<ini name="session.use_cookies" value="0" />
|
||||
<ini name="session.use_only_cookies" value="0" />
|
||||
<ini name="session.use_trans_sid" value="0" />
|
||||
<ini name="session.cache_limiter" value="" />
|
||||
</php>
|
||||
<testsuites>
|
||||
<testsuite name="Unit">
|
||||
<directory>tests/UnitTests</directory>
|
||||
</testsuite>
|
||||
<testsuite name="Selenium">
|
||||
<directory>tests/SeleniumTests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<coverage processUncoveredFiles="true">
|
||||
<include>
|
||||
<!-- APP -->
|
||||
<directory suffix=".php">./www/system-brs-core/app/e404</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/index</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/pubDocuments</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/pubObjects</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/pubPartners</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/pubReports</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/pubSysDashboard</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/pubUnifiedObjects</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/pubUserManager</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/app/pubUsers</directory>
|
||||
|
||||
<!-- CMS -->
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsClassificators</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsMailEngine</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsMailEngineSent</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsMailsConstructor</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsMessages</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsPermissionGroups</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsPermissions</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsPubUsers</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsSubscriptions</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/cms/cmsTextManager</directory>
|
||||
|
||||
<!-- SYS -->
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysActionLog</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysApcOverview</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysEmpty</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysIpFilter</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysLanguages</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysMenus</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysPermissionGroups</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysPermissions</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysSiteMap</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysSiteModules</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysTranslations</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysTranslationsPub</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysUsers</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysUsersLogin</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/sys/sysUsersManager</directory>
|
||||
|
||||
<!-- FUNCTIONS -->
|
||||
<directory suffix=".php">./www/system-brs-core/functions</directory>
|
||||
|
||||
<!-- CONFIG -->
|
||||
<file>./www/system-brs-core/config/constants.php</file>
|
||||
|
||||
<!-- LIBRARY -->
|
||||
<directory suffix=".php">./www/system-brs-core/library/cApc</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cCore</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cCoreSystem</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cCron</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cCrypt</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cDb</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cDefuseCrypto</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cINI</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cJSON</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cMail</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cMapUrls</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cMessages</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cNumbers</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cPdfFromHTML</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cSession</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cUrl</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cValidator</directory>
|
||||
<directory suffix=".php">./www/system-brs-core/library/cView</directory>
|
||||
|
||||
<file>./www/system-brs-core/library/cExcel/cExcel.php</file>
|
||||
<file>./www/system-brs-core/library/cGoogle2FA/cGoogle2FA.php</file>
|
||||
<file>./www/system-brs-core/library/cPasswordMaster/cPasswordMaster.php</file>
|
||||
|
||||
<!-- JS FILE UPLOAD -->
|
||||
<file>./www/js/fileupload/php/index.php</file>
|
||||
|
||||
<!-- CRON -->
|
||||
<file>./www/cron-c/cron.php</file>
|
||||
|
||||
<!-- CRON -->
|
||||
<directory>./www/ajax-c</directory>
|
||||
</include>
|
||||
<exclude>
|
||||
<file>./www/system-brs-core/library/cPdfFromHTML/load_font.php</file>
|
||||
</exclude>
|
||||
</coverage>
|
||||
</phpunit>
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/************************************* aside css *************************************/
|
||||
/*====================================
|
||||
aside-nav css
|
||||
====================================*/
|
||||
aside {
|
||||
left: -300px;
|
||||
width: 300px;
|
||||
max-width: 100%;
|
||||
visibility: hidden;
|
||||
-webkit-transition: left 0.3s ease-in-out;
|
||||
transition: left 0.3s ease-in-out;
|
||||
}
|
||||
aside.active {
|
||||
left: 0px;
|
||||
visibility: visible;
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
aside {
|
||||
left: 0;
|
||||
right: 0;
|
||||
visibility: unset;
|
||||
-webkit-transition: unset;
|
||||
transition: unset;
|
||||
}
|
||||
}
|
||||
aside nav#side-navbar nav.nav a.nav-link.active,
|
||||
aside nav#side-navbar nav.nav a.nav-link:focus {
|
||||
color: var(--extra-font-color-light);
|
||||
background-color: var(--secondary-font-color);
|
||||
}
|
||||
/************************************* aside end *************************************/
|
||||
|
||||
/************************************* introduction css start *************************************/
|
||||
/*====================================
|
||||
intro-feature css
|
||||
====================================*/
|
||||
.intro-feature-content ul.intro-feature-ul li.intro-feature-li span {
|
||||
position: relative;
|
||||
}
|
||||
.intro-feature-content ul.intro-feature-ul li.intro-feature-li span::before {
|
||||
content: "\f3c1";
|
||||
font-family: remixicon!important;
|
||||
color: var(--secondary-font-color);
|
||||
font-size: 10px;
|
||||
vertical-align: middle;
|
||||
padding: 0px 10px 0px 0px;
|
||||
}
|
||||
/************************************* introduction css end *************************************/
|
||||
|
|
@ -0,0 +1,591 @@
|
|||
/*====================================
|
||||
google font
|
||||
====================================*/
|
||||
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
|
||||
|
||||
/*====================================
|
||||
root
|
||||
====================================*/
|
||||
[data-theme="light"] {
|
||||
--body-font-color: #acacac;
|
||||
--body-bgcolor: #ffffff;
|
||||
--paragraph-font-color: #acacac;
|
||||
--extra-bgcolor: #f7f7f7;
|
||||
}
|
||||
[data-theme="dark"] {
|
||||
--body-font-color: #acacac;
|
||||
--body-bgcolor: #000000;
|
||||
--paragraph-font-color: #acacac;
|
||||
--extra-bgcolor: #131313;
|
||||
}
|
||||
|
||||
:root, [data-theme="dark"] {
|
||||
/* body */
|
||||
--body-font-size: 14px;
|
||||
--body-font-family: "Poppins", sans-serif;
|
||||
--body-font-weight: 400;
|
||||
--body-font-style: normal;
|
||||
--body-font-line-height: normal;
|
||||
--body-font-letter-spacing: normal;
|
||||
|
||||
/* heading */
|
||||
--heading-font-color: #263978;
|
||||
--heading-font-family: "Poppins", sans-serif;
|
||||
--heading-font-weight: 600;
|
||||
--heading-font-style: normal;
|
||||
--heading-font-line-height: normal;
|
||||
|
||||
/* section-heading */
|
||||
--section-heading-font-color: #f1592e;
|
||||
--section-heading-font-family: "Poppins", sans-serif;
|
||||
--section-heading-font-text: none;
|
||||
--section-heading-font-weight: 600;
|
||||
--section-heading-font-style: normal;
|
||||
--section-heading-font-line-height: 1.2;
|
||||
|
||||
/* paragraph */
|
||||
--paragraph-font-family: "Poppins", sans-serif;
|
||||
--paragraph-font-line-height: 25px;
|
||||
|
||||
/* general color */
|
||||
--primary-font-color: #f1592e;
|
||||
--secondary-font-color: #263978;
|
||||
--extra-font-color-light: #ffffff;
|
||||
--extra-font-color-dark: #333333;
|
||||
|
||||
/* border */
|
||||
--border-color: 128,128,128;
|
||||
--border-opacity: 0.1;
|
||||
--border-radius: 0px;
|
||||
--border-radius2: 0px;
|
||||
|
||||
/* box-shadow */
|
||||
--box-shadow-outer: 0, 0, 0;
|
||||
--box-shadow-outer-opacity: 0.15;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
color css
|
||||
====================================*/
|
||||
/* body property css */
|
||||
.body-color,
|
||||
.body-primary-color,
|
||||
.body-secondary-color {
|
||||
color: var(--body-font-color);
|
||||
}
|
||||
.body-primary-color,
|
||||
.body-secondary-color {
|
||||
-webkit-transition: color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out;
|
||||
}
|
||||
.body-primary-color:hover {
|
||||
color: var(--primary-font-color);
|
||||
}
|
||||
.body-secondary-color:hover {
|
||||
color: var(--secondary-font-color);
|
||||
}
|
||||
.body-bg {
|
||||
background-color: var(--body-bgcolor);
|
||||
}
|
||||
|
||||
/* heading property css */
|
||||
.heading-color {
|
||||
color: var(--heading-font-color);
|
||||
}
|
||||
.heading-weight {
|
||||
font-weight: var(--heading-font-weight);
|
||||
}
|
||||
.section-heading-weight {
|
||||
font-weight: var(--section-heading-font-weight);
|
||||
}
|
||||
|
||||
/* general property css */
|
||||
.primary-color {
|
||||
color: var(--primary-font-color);
|
||||
}
|
||||
.primary-bg {
|
||||
background-color: var(--primary-font-color);
|
||||
}
|
||||
.secondary-color {
|
||||
color: var(--secondary-font-color);
|
||||
}
|
||||
.secondary-bg {
|
||||
background-color: var(--secondary-font-color);
|
||||
}
|
||||
.extra-color-light {
|
||||
color: var(--extra-font-color-light);
|
||||
}
|
||||
.extra-bg-light {
|
||||
background-color: var(--extra-font-color-light);
|
||||
}
|
||||
.extra-bg {
|
||||
background-color: var(--extra-bgcolor);
|
||||
}
|
||||
.primary-btn {
|
||||
color: var(--extra-font-color-light);
|
||||
background-color: var(--primary-font-color);
|
||||
border: 1px solid var(--primary-font-color);
|
||||
}
|
||||
.primary-btn:hover {
|
||||
color: var(--primary-font-color);
|
||||
background-color: transparent;
|
||||
}
|
||||
.secondary-btn {
|
||||
color: var(--extra-font-color-light);
|
||||
background-color: var(--secondary-font-color);
|
||||
border: 1px solid var(--secondary-font-color);
|
||||
}
|
||||
.secondary-btn:hover {
|
||||
color: var(--secondary-font-color);
|
||||
background-color: transparent;
|
||||
}
|
||||
.primary-btn,
|
||||
.secondary-btn {
|
||||
-webkit-transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
/************************************* 'html', 'body', 'h1 to h6' start *************************************/
|
||||
@media (prefers-reduced-motion:no-preference) {
|
||||
:root {
|
||||
scroll-behavior: auto
|
||||
}
|
||||
}
|
||||
|
||||
/*=====================================
|
||||
html css
|
||||
=====================================*/
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
body css
|
||||
====================================*/
|
||||
body {
|
||||
color: var(--body-font-color);
|
||||
font-size: var(--body-font-size);
|
||||
background-color: var(--body-bgcolor);
|
||||
font-family: var(--body-font-family);
|
||||
font-weight: var(--body-font-weight);
|
||||
font-style: var(--body-font-style);
|
||||
line-height: var(--body-font-line-height);
|
||||
letter-spacing: var(--body-font-letter-spacing);
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
heading css
|
||||
====================================*/
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: var(--heading-font-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: var(--heading-font-family);
|
||||
font-weight: var(--heading-font-weight);
|
||||
font-style: var(--heading-font-style);
|
||||
line-height: var(--heading-font-line-height);
|
||||
}
|
||||
/************************************* 'html', 'body', 'h1 to h6' end *************************************/
|
||||
|
||||
/************************************* section start *************************************/
|
||||
/*====================================
|
||||
section-heading css
|
||||
====================================*/
|
||||
.section-heading {
|
||||
color: var(--section-heading-font-color);
|
||||
font-size: 20px;
|
||||
margin-bottom: 30px;
|
||||
font-family: var(--section-heading-font-family);
|
||||
text-transform: var(--section-heading-font-text);
|
||||
font-weight: var(--section-heading-font-weight);
|
||||
font-style: var(--section-heading-font-style);
|
||||
line-height: var(--section-heading-font-line-height);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
section-sub-heading padding css
|
||||
====================================*/
|
||||
.section-sub-heading {
|
||||
font-size: 18px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
section padding css
|
||||
====================================*/
|
||||
.section-ptb {
|
||||
padding-top: 60px;
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
.section-pt {
|
||||
padding-top: 60px;
|
||||
}
|
||||
.section-pb {
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
@media (min-width: 576px) {
|
||||
.section-ptb {
|
||||
padding-top: 80px;
|
||||
padding-bottom: 80px;
|
||||
}
|
||||
.section-pt {
|
||||
padding-top: 80px;
|
||||
}
|
||||
.section-pb {
|
||||
padding-bottom: 80px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.section-ptb {
|
||||
padding-top: 100px;
|
||||
padding-bottom: 100px;
|
||||
}
|
||||
.section-pt {
|
||||
padding-top: 100px;
|
||||
}
|
||||
.section-pb {
|
||||
padding-bottom: 100px;
|
||||
}
|
||||
}
|
||||
/************************************* section end *************************************/
|
||||
|
||||
/************************************* 'p' start *************************************/
|
||||
/*====================================
|
||||
paragraph css
|
||||
====================================*/
|
||||
p {
|
||||
color: var(--paragraph-font-color);
|
||||
margin: 0;
|
||||
font-family: var(--paragraph-font-family);
|
||||
line-height: var(--paragraph-font-line-height);
|
||||
}
|
||||
/************************************* 'p' end *************************************/
|
||||
|
||||
/************************************* 'container', 'container-fluid' start *************************************/
|
||||
/*====================================
|
||||
'container' tag css
|
||||
====================================*/
|
||||
.container {
|
||||
padding: 0px 15px;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
'container-fluid' tag css
|
||||
====================================*/
|
||||
.container-fluid {
|
||||
padding: 0px 15px;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.container-fluid {
|
||||
padding: 0px 30px;
|
||||
}
|
||||
}
|
||||
/************************************* 'container', 'container-fluid' end *************************************/
|
||||
|
||||
/************************************* 'row', 'col' start *************************************/
|
||||
/*====================================
|
||||
row, col css
|
||||
====================================*/
|
||||
.row {
|
||||
margin-left: -7.5px;
|
||||
margin-right: -7.5px;
|
||||
}
|
||||
.row>* {
|
||||
padding-left: 7.5px;
|
||||
padding-right: 7.5px;
|
||||
}
|
||||
.row-mtm {
|
||||
margin-top: -30px;
|
||||
}
|
||||
.row-mtm>* {
|
||||
margin-top: 30px;
|
||||
}
|
||||
.row-mtm10 {
|
||||
margin-top: -10px;
|
||||
}
|
||||
.row-mtm10>* {
|
||||
margin-top: 10px;
|
||||
}
|
||||
@media (min-width: 576px) {
|
||||
.row {
|
||||
margin-left: -15px;
|
||||
margin-right: -15px;
|
||||
}
|
||||
.row>* {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
}
|
||||
/************************************* 'row', 'col' end *************************************/
|
||||
|
||||
/************************************* 'a' start *************************************/
|
||||
/*====================================
|
||||
'a' tag css
|
||||
====================================*/
|
||||
a {
|
||||
color: var(--heading-font-color);
|
||||
text-decoration: none;
|
||||
}
|
||||
a:focus {
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
/************************************* 'a' end *************************************/
|
||||
|
||||
/************************************* button start *************************************/
|
||||
/*====================================
|
||||
'button' tag css
|
||||
====================================*/
|
||||
button {
|
||||
display: inline-block;
|
||||
padding: 0px;
|
||||
background: 0 0;
|
||||
font-family: var(--body-font-family);
|
||||
border: none;
|
||||
line-height: var(--body-font-line-height);
|
||||
}
|
||||
button, button:focus {
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
.btn:focus,
|
||||
.btn:active:focus,
|
||||
.btn.active:focus {
|
||||
outline: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
'btn-style' tag css
|
||||
====================================*/
|
||||
.btn-style {
|
||||
display: inline-block;
|
||||
padding: 10px 30px;
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
toggler-wrapper css
|
||||
====================================*/
|
||||
button.navbar-toggler {
|
||||
display: block;
|
||||
padding: 0px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
}
|
||||
button.navbar-toggler:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
button.navbar-toggler span.line,
|
||||
button.navbar-toggler span.line::before,
|
||||
button.navbar-toggler span.line::after {
|
||||
display: block;
|
||||
width: 16px;
|
||||
height: 2px;
|
||||
background-color: var(--heading-font-color);
|
||||
-webkit-transition: background-color 0.3s ease-in-out,top 0.3s ease-in-out,transform 0.3s ease-in-out;
|
||||
transition: background-color 0.3s ease-in-out,top 0.3s ease-in-out,transform 0.3s ease-in-out;
|
||||
}
|
||||
button.navbar-toggler span.line {
|
||||
position: relative;
|
||||
}
|
||||
button.navbar-toggler span.line::before,
|
||||
button.navbar-toggler span.line::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
}
|
||||
button.navbar-toggler span.line::before {
|
||||
top: -7px;
|
||||
}
|
||||
button.navbar-toggler span.line::after {
|
||||
top: 7px;
|
||||
}
|
||||
button.navbar-toggler[aria-expanded="true"] span.line {
|
||||
background-color: transparent;
|
||||
}
|
||||
button.navbar-toggler[aria-expanded="true"] span.line::before,
|
||||
button.navbar-toggler[aria-expanded="true"] span.line::after {
|
||||
top: 0;
|
||||
}
|
||||
button.navbar-toggler[aria-expanded="true"] span.line::before {
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
button.navbar-toggler[aria-expanded="true"] span.line::after {
|
||||
transform: rotate(-45deg);
|
||||
}
|
||||
/************************************* button end *************************************/
|
||||
|
||||
/************************************* ul start *************************************/
|
||||
/*====================================
|
||||
'ul', 'li' tag css
|
||||
====================================*/
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* ul-mt30 css */
|
||||
.ul-mt30 {
|
||||
margin-top: -15px;
|
||||
margin-left: -7.5px;
|
||||
margin-right: -7.5px;
|
||||
}
|
||||
.ul-mt30>* {
|
||||
margin-top: 15px;
|
||||
padding-left: 7.5px;
|
||||
padding-right: 7.5px;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.ul-mt30 {
|
||||
margin-top: -30px;
|
||||
margin-left: -15px;
|
||||
margin-right: -15px;
|
||||
}
|
||||
.ul-mt30>* {
|
||||
margin-top: 30px;
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
}
|
||||
/************************************* ul end *************************************/
|
||||
|
||||
/************************************* b, strong start *************************************/
|
||||
/*===========================================
|
||||
'b', 'strong' tag css
|
||||
===========================================*/
|
||||
b, strong {
|
||||
color: var(--heading-font-color);
|
||||
font-weight: var(--heading-font-weight);
|
||||
}
|
||||
/************************************* b, strong end *************************************/
|
||||
|
||||
/************************************* back-to-top start *************************************/
|
||||
/*====================================
|
||||
back-to-top css
|
||||
====================================*/
|
||||
a#top {
|
||||
font-size: 20px;
|
||||
bottom: 30px;
|
||||
right: 15px;
|
||||
height: 45px;
|
||||
width: 45px;
|
||||
-webkit-transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,opacity 0.3s ease-in-out,visibility 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,opacity 0.3s ease-in-out,visibility 0.3s ease-in-out;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
a#top {
|
||||
right: 30px;
|
||||
height: 60px;
|
||||
width: 60px;
|
||||
}
|
||||
}
|
||||
/************************************* back-to-top end *************************************/
|
||||
|
||||
/************************************* custom-switch css start *************************************/
|
||||
/*====================================
|
||||
custom-switch css
|
||||
====================================*/
|
||||
label.cust-switch-label {
|
||||
width: 28px;
|
||||
height: 12px;
|
||||
cursor: pointer;
|
||||
}
|
||||
label.cust-switch-label span.cust-switch-slide {
|
||||
cursor: pointer;
|
||||
border-radius: 25px;
|
||||
}
|
||||
label.cust-switch-label span.cust-switch-slide::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
transform: translateX(0%);
|
||||
background-color: var(--heading-font-color);
|
||||
border-radius: 100%;
|
||||
line-height: 1;
|
||||
-webkit-transition: transform 0.3s ease-in-out;
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
label.cust-switch-label.theme-switch span.cust-switch-slide::before {
|
||||
content: "\f1bf";
|
||||
font-family: remixicon!important;
|
||||
color: var(--extra-font-color-dark);
|
||||
font-size: 12px;
|
||||
left: 0px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: var(--extra-font-color-light);
|
||||
}
|
||||
label.cust-switch-label input:checked ~ span.cust-switch-slide::before {
|
||||
transform: translateX(100%);
|
||||
}
|
||||
label.cust-switch-label.theme-switch input:checked ~ span.cust-switch-slide::before {
|
||||
content: "\ef75";
|
||||
color: var(--extra-font-color-light);
|
||||
background-color: var(--extra-font-color-dark);
|
||||
}
|
||||
/************************************* custom-switch css start *************************************/
|
||||
|
||||
/************************************* counter-num css start *************************************/
|
||||
/*====================================
|
||||
counter-area css
|
||||
====================================*/
|
||||
.counter-area {
|
||||
counter-reset: section;
|
||||
}
|
||||
.counter-area .counter-num h2.section-heading::before {
|
||||
counter-increment: section;
|
||||
content: counter(section) ". ";
|
||||
}
|
||||
.counter-area .counter-num .counter-sub-num {
|
||||
counter-reset: subsection;
|
||||
}
|
||||
.counter-area .counter-num .counter-sub-num h2.section-sub-heading::before {
|
||||
counter-increment: subsection;
|
||||
content: counter(section) "." counter(subsection) " ";
|
||||
}
|
||||
.counter-area .counter-num .counter-sub-num .counter-sup-num {
|
||||
counter-reset: supsection;
|
||||
}
|
||||
.counter-area .counter-num .counter-sub-num .counter-sup-num h2.section-sub-heading::before {
|
||||
counter-increment: supsection;
|
||||
content: counter(section) "." counter(subsection) "." counter(supsection) " ";
|
||||
}
|
||||
/************************************* counter-num css end *************************************/
|
||||
|
||||
/************************************* scrollbar css end *************************************/
|
||||
/*====================================
|
||||
scrollbar css
|
||||
====================================*/
|
||||
aside {
|
||||
-webkit-scrollbar-width: thin;
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
aside::-webkit-scrollbar {
|
||||
width: 2px;
|
||||
}
|
||||
aside::-webkit-scrollbar-track {
|
||||
background-color: transparent;
|
||||
}
|
||||
aside::-webkit-scrollbar-thumb {
|
||||
background-color: var(--primary-font-color);
|
||||
}
|
||||
/************************************* scrollbar css end *************************************/
|
||||
|
||||
/************************************* animation css start *************************************/
|
||||
/*====================================
|
||||
animation css
|
||||
====================================*/
|
||||
[data-animate] {
|
||||
opacity: 0
|
||||
}
|
||||
[data-animate].animate__animated {
|
||||
opacity: 1
|
||||
}
|
||||
/************************************* animation css end *************************************/
|
||||
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 156 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 130 KiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
|
@ -0,0 +1,155 @@
|
|||
(function($) {
|
||||
"use strict";
|
||||
var $body = $("body"),
|
||||
$window = $(window),
|
||||
$document = $(document);
|
||||
var ST = {
|
||||
init: function() {
|
||||
this.headerSticky();
|
||||
this.sideToggler();
|
||||
this.switchClick();
|
||||
this.backTop();
|
||||
},
|
||||
headerSticky: function() {
|
||||
$.fn.fixedHeader = function(options) {
|
||||
var defaults = {
|
||||
HeaderTarget: $(this)
|
||||
};
|
||||
options = $.extend(defaults, options);
|
||||
return this.each(function() {
|
||||
var HeaderTarget = options.HeaderTarget;
|
||||
var createSticky = function() {
|
||||
var targetHeight = HeaderTarget.outerHeight();
|
||||
function updatePadding() {
|
||||
$("body").css({
|
||||
"padding-top": targetHeight
|
||||
});
|
||||
$("aside").css({
|
||||
"top": targetHeight
|
||||
});
|
||||
}
|
||||
updatePadding();
|
||||
$(window).on("resize", function() {
|
||||
targetHeight = HeaderTarget.outerHeight();
|
||||
updatePadding();
|
||||
});
|
||||
};
|
||||
createSticky();
|
||||
});
|
||||
};
|
||||
$("header").fixedHeader();
|
||||
},
|
||||
sideToggler: function() {
|
||||
var $sideToggler = $("button.side-toggler"),
|
||||
$sideMenu = $("aside"),
|
||||
$sideMenuClose = $("button.side-menu-close-btn");
|
||||
$sideToggler.on("click", function() {
|
||||
$sideMenu.addClass("active");
|
||||
});
|
||||
$sideMenuClose.on("click", function() {
|
||||
$sideMenu.removeClass("active");
|
||||
});
|
||||
},
|
||||
switchClick: function() {
|
||||
var $switchClick = $(".theme-switch");
|
||||
$switchClick.on("click", function() {
|
||||
var $themeSwitch = $("#themeSwitch");
|
||||
if($themeSwitch.is(":checked") == true) {
|
||||
$(this).parents("html").attr("data-theme","light");
|
||||
} else {
|
||||
$(this).parents("html").attr("data-theme","dark");
|
||||
}
|
||||
});
|
||||
},
|
||||
backTop: function() {
|
||||
var $back_top = $("#top"),
|
||||
$html_body = $("html, body");
|
||||
$window.scroll(function() {
|
||||
if($(this).scrollTop() > 600) {
|
||||
$back_top.removeClass("opacity-0 invisible").addClass("opacity-100 visible");
|
||||
} else {
|
||||
$back_top.addClass("opacity-0 invisible").removeClass("opacity-100 visible");
|
||||
}
|
||||
});
|
||||
$back_top.click(function() {
|
||||
$html_body.animate({
|
||||
scrollTop: 0
|
||||
}, 100);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
};
|
||||
ST.animateTemplate = {
|
||||
aDelay: 50,
|
||||
aQueue: [],
|
||||
aTimer: null,
|
||||
aBody: null,
|
||||
init: function() {
|
||||
var $at = this;
|
||||
$at.aBody = $body;
|
||||
$at.aQueue = [];
|
||||
$at.aTimer = null;
|
||||
if(typeof aDelay !== 'undefined') {
|
||||
$at.aDelay = aDelay;
|
||||
}
|
||||
$at.aQueue["animate__animated_0"] = [];
|
||||
$body.find("#main").find(">div, >section").each(function(index) {
|
||||
$(this).attr("data-animated-id", (index + 1));
|
||||
$at.aQueue["animate__animated_" + (index + 1)] = [];
|
||||
});
|
||||
setTimeout(function() {
|
||||
$at.registerAnimation();
|
||||
}, 200);
|
||||
},
|
||||
registerAnimation: function() {
|
||||
var $at = this;
|
||||
$("[data-animate]:not(.animate__animated)", $at.aBody).waypoint(function() {
|
||||
var $at_el = this.element ? this.element : this,
|
||||
$this = $($at_el);
|
||||
if($this.is(":visible")) {
|
||||
var $at_animated_wrap = $this.closest("[data-animated-id]"),
|
||||
$at_animated_id = '0';
|
||||
if($at_animated_wrap.length) {
|
||||
$at_animated_id = $at_animated_wrap.data("animated-id");
|
||||
}
|
||||
$at.aQueue["animate__animated_" + $at_animated_id].push($at_el);
|
||||
$at.processItemQueue();
|
||||
} else {
|
||||
$this.addClass($this.data("animate")).addClass("animate__animated");
|
||||
}
|
||||
}, {
|
||||
offset: '90%',
|
||||
triggerOnce: true
|
||||
});
|
||||
},
|
||||
processItemQueue: function() {
|
||||
var $at = this;
|
||||
if($at.aTimer) {
|
||||
return;
|
||||
}
|
||||
$at.aTimer = window.setInterval(function() {
|
||||
var $at_queue = false;
|
||||
for(var $at_animated_id in $at.aQueue) {
|
||||
if($at.aQueue[$at_animated_id].length) {
|
||||
$at_queue = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if($at_queue) {
|
||||
for(var $at_animated_id in $at.aQueue) {
|
||||
var $at_item = $($at.aQueue[$at_animated_id].shift());
|
||||
$at_item.addClass($at_item.data("animate")).addClass("animate__animated");
|
||||
}
|
||||
$at.processItemQueue();
|
||||
} else {
|
||||
window.clearInterval($at.aTimer);
|
||||
$at.aTimer = null
|
||||
}
|
||||
}, $at.aDelay);
|
||||
}
|
||||
};
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
ST.init();
|
||||
ST.animateTemplate.init();
|
||||
});
|
||||
})(jQuery);
|
||||
|
|
@ -0,0 +1,829 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" data-theme="light">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="Cache-control" content="max-age=31536000">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Welcome to spacingtech - Your Destination for Exceptional Web Design and Development Products</title>
|
||||
<meta name="description" content="At spacingtech, we take pride in being a leading Web Design and Development Company with a passion for creating stunning online experiences. Our commitment to excellence is showcased through our premium HTML templates, exceptional UI/UX designs, and our proficiency in crafting seamless solutions on platforms like Shopify, WordPress, Prestashop, BigCommerce, and Opencart.">
|
||||
<meta name="keywords" content="web agency, web design HTML Templates, UI/UX design, e-commerce platforms, innovation, customization, quality, customer approach, support, product, online store, mobile friendly, user friendly, responsive design, SEO, digital marketing, services, idea, stunning, realities, crafting digital experiences, redefining possibilities, one page template, dark mode, light mode">
|
||||
<meta name="author" content="spacingtech_webify">
|
||||
<!-- favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="assets/image/favicon.png">
|
||||
<!-- plugin css -->
|
||||
<link rel="stylesheet" type="text/css" href="assets/css/plugin.css">
|
||||
<!-- theme css -->
|
||||
<link rel="stylesheet" type="text/css" href="assets/css/theme.css">
|
||||
<!-- style css -->
|
||||
<link rel="stylesheet" type="text/css" href="assets/css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- header start -->
|
||||
<header id="header" class="position-fixed top-0 start-0 end-0 z-2 body-bg ptb-10 beb">
|
||||
<div class="container-fluid">
|
||||
<div class="row align-items-center header-area">
|
||||
<div class="col-6 col-md-3 header-element header-logo">
|
||||
<!-- header-logo start -->
|
||||
<div class="header-theme-logo">
|
||||
<a href="index.html" class="d-inline-block theme-logo">
|
||||
<img src="assets/image/logo.png" class="width-120 width-xl-144 img-fluid" alt="logo">
|
||||
</a>
|
||||
</div>
|
||||
<!-- header-logo end -->
|
||||
</div>
|
||||
<div class="col-6 col-md-9 d-flex align-items-center justify-content-end header-element header-menu-icon">
|
||||
<div class="header-menu">
|
||||
<nav class="navbar-expand-md">
|
||||
<!-- mainmenu-content start -->
|
||||
<div class="mainmenu-content collapse navbar-collapse p-absolute p-md-unset top-100 start-0 end-0 body-bg z-2 beb beb-md-none" id="navbar">
|
||||
<div class="main-menu">
|
||||
<ul class="main-ul d-md-flex flex-md-wrap align-items-md-center" id="main-menu">
|
||||
<li class="menu-li bst bst-md-none">
|
||||
<a href="https://themeforest.net/user/spacingtech_webify/portfolio" class="link-title d-block body-primary-color pst-10 peb-10 psl-15 per-15">Our themes</a>
|
||||
</li>
|
||||
<li class="menu-li bst bst-md-none">
|
||||
<span class="link-title d-block pst-10 pst-xl-0 peb-10 peb-xl-0 psl-15 per-15">
|
||||
<a href="https://themeforest.net/user/spacingtech_webify/portfolio" class="d-flex align-items-center btn-style secondary-btn" target="_blank">Buy now <i class="ri-arrow-right-line icon-16 msl-5"></i></a>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- mainmenu-content end -->
|
||||
</nav>
|
||||
</div>
|
||||
<div class="header-icon">
|
||||
<ul class="shop-element d-flex align-items-center">
|
||||
<!-- side-toggler start -->
|
||||
<li class="side-wrap side-toggler-wrap d-lg-none">
|
||||
<button type="button" class="d-block side-toggler secondary-color icon-16 lh-1" aria-label="Side-toggler menu"><i class="ri-contract-left-line"></i></button>
|
||||
</li>
|
||||
<!-- side-toggler end -->
|
||||
<!-- navbar-toggler start -->
|
||||
<li class="side-wrap toggler-wrap d-md-none msl-15">
|
||||
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar" aria-expanded="false" aria-label="Toggler menu"><span class="line"></span></button>
|
||||
</li>
|
||||
<!-- navbar-toggler end -->
|
||||
<!-- theme-switch start -->
|
||||
<li class="side-wrap switch-wrap msl-15">
|
||||
<label class="cust-switch-label d-block theme-switch position-relative">
|
||||
<input type="checkbox" id="themeSwitch" name="themeSwitch" class="cust-switch position-absolute top-0 end-0 bottom-0 start-0 h-auto opacity-0" aria-label="Switch" checked>
|
||||
<span class="cust-switch-slide position-absolute top-0 end-0 bottom-0 start-0 d-flex align-items-center primary-bg"></span>
|
||||
</label>
|
||||
</li>
|
||||
<!-- theme-switch end -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<!-- header end -->
|
||||
<main id="main">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-3 col-xxl-2">
|
||||
<aside class="col-lg-3 col-xxl-2 position-fixed psl-lg-15 psl-xl-30 z-2 overflow-auto">
|
||||
<div class="side-menu-close position-sticky top-0 d-lg-none d-flex justify-content-end extra-bg beb">
|
||||
<button type="button" class="side-menu-close-btn d-block secondary-color icon-16 ptb-15 plr-15 lh-1" aria-label="Close"><i class="ri-close-line"></i></button>
|
||||
</div>
|
||||
<nav class="extra-bg" id="side-navbar">
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-1" class="nav-link body-secondary-color ptb-15 plr-15 rounded-0"><i class="ri-file-paper-line icon-16 mer-5"></i>Introduction</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-1-1" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-flashlight-line icon-16 mer-5"></i>Features</a>
|
||||
<a href="#item-1-2" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-file-text-line icon-16 mer-5"></i>Files</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-1-2-1" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-folder-line icon-16 mer-5"></i>Documentation</a>
|
||||
<a href="#item-1-2-2" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-folder-line icon-16 mer-5"></i>Theme</a>
|
||||
</nav>
|
||||
</nav>
|
||||
<a href="#item-2" class="nav-link body-secondary-color ptb-15 plr-15 rounded-0"><i class="ri-install-line icon-16 mer-5"></i>Installation</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-2-1" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-file-download-line icon-16 mer-5"></i>Download theme</a>
|
||||
<a href="#item-2-2" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-file-download-line icon-16 mer-5"></i>Install theme</a>
|
||||
</nav>
|
||||
<a href="#item-3" class="nav-link body-secondary-color ptb-15 plr-15 rounded-0"><i class="ri-booklet-line icon-16 mer-5"></i>Template structure</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-3-1" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-html5-line icon-16 mer-5"></i>HTML5</a>
|
||||
<a href="#item-3-2" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-css3-line icon-16 mer-5"></i>CSS</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-3-2-1" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-file-text-line icon-16 mer-5"></i>Theme.css</a>
|
||||
<a href="#item-3-2-2" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-file-text-line icon-16 mer-5"></i>Style.css</a>
|
||||
<a href="#item-3-2-3" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-file-text-line icon-16 mer-5"></i>Plugin.css</a>
|
||||
</nav>
|
||||
<a href="#item-3-3" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-font-sans icon-16 mer-5"></i>Font</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-3-3-1" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-bookmark-line icon-16 mer-5"></i>Link tag</a>
|
||||
<a href="#item-3-3-2" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-bookmark-line icon-16 mer-5"></i>@import rule</a>
|
||||
<a href="#item-3-3-3" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-bookmark-line icon-16 mer-5"></i>Apply font</a>
|
||||
<a href="#item-3-3-4" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-bookmark-line icon-16 mer-5"></i>Font icon</a>
|
||||
</nav>
|
||||
<a href="#item-3-4" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-image-line icon-16 mer-5"></i>Image</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-3-4-1" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-file-image-line icon-16 mer-5"></i>Logo sample</a>
|
||||
</nav>
|
||||
<a href="#item-3-5" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-javascript-line icon-16 mer-5"></i>JavaScript</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-3-5-1" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-file-text-line icon-16 mer-5"></i>Theme.js</a>
|
||||
<a href="#item-3-5-2" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-file-text-line icon-16 mer-5"></i>Plugin.js</a>
|
||||
</nav>
|
||||
</nav>
|
||||
<a href="#item-4" class="nav-link body-secondary-color ptb-15 plr-15 rounded-0"><i class="ri-file-edit-line icon-16 mer-5"></i>Change contents</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-4-1" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-code-s-slash-line icon-16 mer-5"></i>Images</a>
|
||||
<a href="#item-4-2" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-code-s-slash-line icon-16 mer-5"></i>Color</a>
|
||||
<a href="#item-4-3" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-code-s-slash-line icon-16 mer-5"></i>Header</a>
|
||||
<a href="#item-4-4" class="nav-link body-secondary-color ptb-15 psl-30 per-15 rounded-0"><i class="ri-code-s-slash-line icon-16 mer-5"></i>Slider</a>
|
||||
<nav class="nav nav-pills flex-column">
|
||||
<a href="#item-4-5-1" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-arrow-left-right-line icon-16 mer-5"></i>Swiper</a>
|
||||
<a href="#item-4-5-2" class="nav-link body-secondary-color ptb-15 psl-45 per-15 rounded-0"><i class="ri-arrow-left-right-line icon-16 mer-5"></i>Slick slider</a>
|
||||
</nav>
|
||||
</nav>
|
||||
<a href="#item-5" class="nav-link body-secondary-color ptb-15 plr-15 rounded-0"><i class="ri-open-source-line icon-16 mer-5"></i>Sources & credits</a>
|
||||
<a href="#item-6" class="nav-link body-secondary-color ptb-15 plr-15 rounded-0"><i class="ri-customer-service-line icon-16 icon-16 mer-5"></i>Support</a>
|
||||
</nav>
|
||||
</nav>
|
||||
</aside>
|
||||
</div>
|
||||
<div class="col-12 col-lg-9 col-xxl-10">
|
||||
<div class="scrollspy-example-2" data-bs-spy="scroll" data-bs-target="#side-navbar" data-bs-smooth-scroll="true" tabindex="0">
|
||||
<section class="ptb-30">
|
||||
<div class="counter-area row-mtm d-flex flex-column">
|
||||
<div class="counter-num" id="item-1">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-margin">
|
||||
<!-- document start -->
|
||||
<div class="doc-info peb-30 meb-30 beb">
|
||||
<h6 class="font-18">Beluxe - Documentation</h6>
|
||||
</div>
|
||||
<!-- document end -->
|
||||
<!-- introduction start -->
|
||||
<h2 class="section-heading">Introduction</h2>
|
||||
<div class="intro-content">
|
||||
<h6 class="font-16">Beluxe - Beauty & Cosmetics eCommerce HTML5 Template</h6>
|
||||
<div class="mst-20">
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Thank you very much for choosing our theme. We truly appreciate and really happy that you'll enjoy our theme!</p>
|
||||
<p>Beluxe is a <strong>Fully Responsive</strong> HTML5 Theme like modern design website, HTML5 template, responsive design, SEO which has build by bootstrap. It features a clean and responsive design, we blend creativity with functionality to design spaces that inspire.</p>
|
||||
<p>It has a fully responsive width adjusts automatically to any screen size or resolution. Theme have with lot of option like <strong>Header, Footer, Slider, Banner, Product Grid-list, Timer option, Blog, Article, Root directory option (like body, heading, secton heading, paragraph etc...) Typography option, Preloader, Section padding option, Button option, Animation etc...</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- introduction end -->
|
||||
</div>
|
||||
<div class="counter-sub-num">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-sub-margin" id="item-1-1">
|
||||
<!-- intro-feature start -->
|
||||
<h2 class="section-sub-heading">Theme features</h2>
|
||||
<div class="intro-feature-content">
|
||||
<ul class="row row-mtm10 intro-feature-ul">
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">HTML5</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">CSS3</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Bootstrap 5</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Jquery</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Typography</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Color</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Icon</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Easy to customize</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Fully responsive</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">W3C validate</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Dropdown menu</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Clean code</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Clean design</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Grid</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">List</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Blog</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Slider</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Social share</span>
|
||||
</li>
|
||||
<li class="col-6 col-sm-4 col-lg-3 intro-feature-li">
|
||||
<span class="d-block">Best rated</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- intro-feature end -->
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-1-2">
|
||||
<!-- intro-files start -->
|
||||
<h2 class="section-sub-heading">Files included</h2>
|
||||
<div class="intro-files">
|
||||
<ol class="intro-files-ul row-mtm10 d-flex flex-column meb-0 psl-17">
|
||||
<li class="intro-files-li">
|
||||
<span>Documentation</span>
|
||||
</li>
|
||||
<li class="intro-files-li">
|
||||
<span>Template</span>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/files/files-include.jpg" class="img-fluid" alt="files-include">
|
||||
</div>
|
||||
<!-- intro-files end -->
|
||||
<div class="counter-sup-num mst-30">
|
||||
<div class="row row-mtm">
|
||||
<div class="col-12" id="item-1-2-1">
|
||||
<!-- intro-documentation start -->
|
||||
<h2 class="section-sub-heading">Documentation</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Documentation folder include whole theme option from strat to end.</p>
|
||||
<p>Open index file to show the documentation page, Open in browser to show perfect view of the documentation.</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/files/documentation.jpg" class="img-fluid" alt="documentation">
|
||||
</div>
|
||||
<!-- intro-documentation end -->
|
||||
</div>
|
||||
<div class="col-12" id="item-1-2-2">
|
||||
<!-- intro-theme start -->
|
||||
<h2 class="section-sub-heading">Template</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Template folder included file.</p>
|
||||
<p>Template folder file contain to show file with same as you shown in template with image ratio.</p>
|
||||
<p>Image ratio means you will may know about the exact image dimension of the HTML template, So you will add that image dimension in your demo file respectively and show your future theme how it look.</p>
|
||||
</div>
|
||||
<!-- intro-theme end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-num" id="item-2">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-margin">
|
||||
<!-- installation start -->
|
||||
<h2 class="section-heading">Installation</h2>
|
||||
<div class="intro-content">
|
||||
<h6 class="font-16">Package download from <strong>envatomarket</strong></h6>
|
||||
<div class="mst-20">
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Go to the <a href="https://themeforest.net/" class="secondary-color text-decoration-underline" target="_blank">envatomarket</a> website and log in to your account. This is the account you used to make the purchase.</p>
|
||||
<p>After logging in, look for a <strong>Downloads</strong> tab to download your purchase theme from your <strong>envatomarket</strong> account. The specific wording and location may vary depending on the website's design.</p>
|
||||
<p>In the <strong>Downloads</strong> tab, you should see the theme you purchased listed there. Click on <strong>Download</strong> button.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- installation end -->
|
||||
</div>
|
||||
<div class="counter-sub-num">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-sub-margin" id="item-2-1">
|
||||
<!-- download-theme start -->
|
||||
<h2 class="section-sub-heading">Download the theme</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>You will typically be provided with options to download the theme files. Download the files to your computer. The theme files might be in a compressed format like ZIP.</p>
|
||||
<p>If the theme files are in a compressed format, unzip or extract them to a location on your computer.</p>
|
||||
</div>
|
||||
<!-- download-theme end -->
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/account.jpg" class="img-fluid" alt="account">
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-2-2">
|
||||
<!-- install-theme start -->
|
||||
<h2 class="section-sub-heading">Install the theme</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Follow the documentation or instructions provided with the theme to develop an ecommerce big platform like <strong>wordpress, shopify, opencart, prestashop, bigcommerce</strong>.</p>
|
||||
<p>After Devlope HTML theme in variours platform then installation, activate the theme as per the instructions. This might involve going to your website's admin panel or theme settings and selecting the newly installed theme.</p>
|
||||
<p>Envaomarket website layout and theme delivery process may change over time, so it's important to follow the specific instructions provided on their website or in the <strong>documentation</strong> that comes with the theme you purchased.</p>
|
||||
</div>
|
||||
<!-- install-theme end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-num" id="item-3">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-margin">
|
||||
<!-- template start -->
|
||||
<h2 class="section-heading">Template structure</h2>
|
||||
<div class="intro-content">
|
||||
<h6 class="font-16">Theme folder template package structure</h6>
|
||||
<div class="mst-20">
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>There are many types of structure to build template.</p>
|
||||
<p>We follow below type of structure for <strong>template</strong>.</p>
|
||||
</div>
|
||||
<div class="temp-files mst-15">
|
||||
<ol class="temp-files-ul row-mtm10 d-flex flex-column meb-0 psl-17">
|
||||
<li class="temp-files-li">
|
||||
<span>Assets folder</span>
|
||||
</li>
|
||||
<li class="temp-files-li">
|
||||
<span>HTML5 files</span>
|
||||
</li>
|
||||
</ol>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/structure.jpg" class="img-fluid" alt="structure">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mst-20">
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>We follow below type of structure for <strong>assets folder</strong>.</p>
|
||||
</div>
|
||||
<div class="temp-files mst-15">
|
||||
<ol class="temp-files-ul row-mtm10 d-flex flex-column meb-0 psl-17">
|
||||
<li class="temp-files-li">
|
||||
<span>CSS files</span>
|
||||
</li>
|
||||
<li class="temp-files-li">
|
||||
<span>Font files</span>
|
||||
</li>
|
||||
<li class="temp-files-li">
|
||||
<span>Image files</span>
|
||||
</li>
|
||||
<li class="temp-files-li">
|
||||
<span>JavaScript files</span>
|
||||
</li>
|
||||
</ol>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/assets.jpg" class="img-fluid" alt="assets">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- template end -->
|
||||
</div>
|
||||
<div class="counter-sub-num">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-sub-margin" id="item-3-1">
|
||||
<!-- HTML5 start -->
|
||||
<h2 class="section-sub-heading">HTML5 structure</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>The main contents are inside the 'body' tag divided into different section & div (i.e. preloader, top-bar, header, main,... footer etc.).</p>
|
||||
<p>The general template structure is the same throughout the template. Here is the general structure.</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/html.jpg" class="img-fluid" alt="html">
|
||||
</div>
|
||||
<!-- HTML5 end -->
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-3-2">
|
||||
<!-- CSS start -->
|
||||
<h2 class="section-sub-heading">CSS files structure</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>We are using various type of CSS files (i.e. account.css, blog.css, collection.css, other.css, product.css, style.css, theme.css,... etc.) and several vendor css files (i.e. plugin.css).</p>
|
||||
<p>CSS file structure is as follows:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/css.jpg" class="img-fluid" alt="css">
|
||||
</div>
|
||||
<!-- CSS end -->
|
||||
<div class="counter-sup-num mst-30">
|
||||
<div class="row row-mtm">
|
||||
<div class="col-12" id="item-3-2-1">
|
||||
<!-- theme-css start -->
|
||||
<div class="col-12">
|
||||
<h2 class="section-sub-heading">Theme css</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Theme css file include all tag css (i.e. body, heading, anchor link, paragraph, header,... footer etc.).</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/theme_css.jpg" class="img-fluid" alt="theme_css">
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/theme_css2.jpg" class="img-fluid" alt="theme_css2">
|
||||
</div>
|
||||
</div>
|
||||
<!-- theme-css end -->
|
||||
</div>
|
||||
<div class="col-12" id="item-3-2-2">
|
||||
<!-- style-css start -->
|
||||
<div class="col-12">
|
||||
<h2 class="section-sub-heading">Style css</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Style css file include index layout css.</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/style_css.jpg" class="img-fluid" alt="style_css">
|
||||
</div>
|
||||
</div>
|
||||
<!-- style-css end -->
|
||||
</div>
|
||||
<div class="col-12" id="item-3-2-3">
|
||||
<!-- plugin-css start -->
|
||||
<div class="col-12">
|
||||
<h2 class="section-sub-heading">Plugin css</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Plugin css file include all several vendor css files (i.e. bootstrap, animate, remix-icon, owl-carousel, swiper,... custom etc.).</p>
|
||||
<p>Custom css is our customize files (i.e. margin, padding, other,... etc.).</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/plugin_css.jpg" class="img-fluid" alt="plugin_css">
|
||||
</div>
|
||||
</div>
|
||||
<!-- plugin-css end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-3-3">
|
||||
<!-- Font start -->
|
||||
<h2 class="section-sub-heading">Font files structure</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>To use <a href="https://www.google.com/fonts" class="secondary-color text-decoration-underline" target="_blank">Google Fonts Library</a> in an HTML5 template, you can follow these steps.</p>
|
||||
<p>Google Fonts provides two ways to include fonts in your HTML template:</p>
|
||||
</div>
|
||||
<!-- Font end -->
|
||||
<div class="counter-sup-num mst-30">
|
||||
<div class="row row-mtm">
|
||||
<!-- font-head start -->
|
||||
<div class="col-12" id="item-3-3-1">
|
||||
<h2 class="section-sub-heading">'Link' tag css (Recommended)</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Google Fonts will provide you with a "link" tag that you should include in the "head" section of your HTML document. It looks like this:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/font_head.jpg" class="img-fluid" alt="font_head">
|
||||
</div>
|
||||
</div>
|
||||
<!-- font-head end -->
|
||||
<!-- font-css start -->
|
||||
<div class="col-12" id="item-3-3-2">
|
||||
<h2 class="section-sub-heading">@import CSS Rule</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>If you prefer to include fonts using CSS, Google Fonts also provides a CSS @import rule. It looks like this:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/font_css.jpg" class="img-fluid" alt="font_css">
|
||||
</div>
|
||||
</div>
|
||||
<!-- font-css end -->
|
||||
<!-- font-css start -->
|
||||
<div class="col-12" id="item-3-3-3">
|
||||
<h2 class="section-sub-heading">Apply the font to your HTML elements</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Once you have linked to the google font in your HTML document, you can apply the font to specific HTML elements using CSS. For example, to apply the font to all paragraphs, you can do this in your CSS file</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/font_apply.jpg" class="img-fluid" alt="font_apply">
|
||||
</div>
|
||||
</div>
|
||||
<!-- font-css end -->
|
||||
<!-- font-icon start -->
|
||||
<div class="col-12" id="item-3-3-4">
|
||||
<h2 class="section-sub-heading">Font icon rule</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>If you want to add any other font icon need to attach that vendor file and download that font and store that font in font files with rendom folder (i.e. eot, ttf, woff, woff2,... etc.). It looks like this:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/font_folder.jpg" class="img-fluid" alt="font_folder">
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/font_folder_icon.jpg" class="img-fluid" alt="font_folder_icon">
|
||||
</div>
|
||||
</div>
|
||||
<!-- font-icon end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-3-4">
|
||||
<!-- Image start -->
|
||||
<h2 class="section-sub-heading">Image files structure</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Image folder include whole theme image location.</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/image.jpg" class="img-fluid" alt="image">
|
||||
</div>
|
||||
<!-- Image end -->
|
||||
<div class="counter-sup-num mst-30">
|
||||
<div class="row row-mtm">
|
||||
<!-- logo-sample start -->
|
||||
<div class="col-12" id="item-3-4-1">
|
||||
<h2 class="section-sub-heading">Logo sample</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Suppose you want to change the following image file. It looks like this:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/image_logo.jpg" class="img-fluid" alt="image_logo">
|
||||
</div>
|
||||
</div>
|
||||
<!-- logo-sample end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-3-5">
|
||||
<!-- JavaScript start -->
|
||||
<h2 class="section-sub-heading">JavaScript files structure</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>We are using one custome js files (i.e. theme.js,... etc.) and several vendor css files (i.e. plugin.min.js).</p>
|
||||
<p>JavaScript file structure is as follows:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/js.jpg" class="img-fluid" alt="js">
|
||||
</div>
|
||||
<!-- JavaScript end -->
|
||||
<div class="counter-sup-num mst-30">
|
||||
<div class="row row-mtm">
|
||||
<div class="col-12" id="item-3-5-1">
|
||||
<!-- theme-css start -->
|
||||
<div class="col-12">
|
||||
<h2 class="section-sub-heading">Theme js</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Theme js file include whole template js (i.e. loadpage, imgresize, switchclick, headersticky, navactive, contactform, backtotop, cursorpoint, animatetemplate,... custom etc.).</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/theme_js.jpg" class="img-fluid" alt="theme_js">
|
||||
</div>
|
||||
</div>
|
||||
<!-- theme-css end -->
|
||||
</div>
|
||||
<div class="col-12" id="item-3-5-2">
|
||||
<!-- plugin-css start -->
|
||||
<div class="col-12">
|
||||
<h2 class="section-sub-heading">Plugin js</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Plugin js file include all several vendor css files (i.e. popper, bootstrap, jquery, jquery-nav, waypoints, owl-carousel, swiper,... custom etc.).</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/template/plugin_js.jpg" class="img-fluid" alt="plugin_js">
|
||||
</div>
|
||||
</div>
|
||||
<!-- plugin-css end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-num" id="item-4">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-margin">
|
||||
<!-- template start -->
|
||||
<h2 class="section-heading">Change contents</h2>
|
||||
<div class="intro-content">
|
||||
<h6 class="font-16">Change the content as per your requirements</h6>
|
||||
<div class="mst-20">
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Moslty these type of changes contents follow below like this.</p>
|
||||
</div>
|
||||
<div class="content-files mst-15">
|
||||
<ol class="content-files-ul row-mtm10 d-flex flex-column meb-0 psl-17">
|
||||
<li class="content-files-li">
|
||||
<span>Logo & Favicon</span>
|
||||
</li>
|
||||
<li class="content-files-li">
|
||||
<span>Color</span>
|
||||
</li>
|
||||
<li class="content-files-li">
|
||||
<span>Header</span>
|
||||
</li>
|
||||
<li class="content-files-li">
|
||||
<span>Slider</span>
|
||||
</li>
|
||||
<li class="content-files-li">
|
||||
<span>Footer</span>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- template end -->
|
||||
</div>
|
||||
<div class="counter-sub-num">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-sub-margin" id="item-4-1">
|
||||
<!-- changing-images start -->
|
||||
<h2 class="section-sub-heading">Changing images (i.e. logo, favicon,... etc.)</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>To change any images of the website.</p>
|
||||
<p>Carefully collect the source name of the image.</p>
|
||||
<p>Open the file called image.</p>
|
||||
<p>Find the particular image file.</p>
|
||||
<p>Replace the file with your image.</p>
|
||||
<p>Make sure that the file name does not change.The file name should be the same.</p>
|
||||
<p>Suppose you want to change the following image file.</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/content/change_img_logo.jpg" class="img-fluid" alt="change_img_logo">
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/content/change_img_favicon.jpg" class="img-fluid" alt="change_img_favicon">
|
||||
</div>
|
||||
<!-- changing-images end -->
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-4-2">
|
||||
<!-- changing-colors start -->
|
||||
<h2 class="section-sub-heading">Changing default template colors</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>We have used root directory in <strong>theme.css</strong> for this project to write css.</p>
|
||||
<p>If you are familiar with <strong>theme.css</strong> you should customize only the <strong>theme.css</strong> files.</p>
|
||||
<p>Please make sure you compile the <strong>theme.css</strong> file after you have made changes in any of the <strong>theme.css</strong> files.</p>
|
||||
<p>Open the <strong>theme.css</strong> file from <strong>assets > css > defaults</strong> folder with a text-editor.</p>
|
||||
<p>Change the right-side values of the variables to change any default colors of your site.</p>
|
||||
<p>Save your file.</p>
|
||||
<p>Have a look at the following image for a visual description:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/content/change_color.jpg" class="img-fluid" alt="change_color">
|
||||
</div>
|
||||
<!-- changing-colors end -->
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-4-3">
|
||||
<!-- header-sticky start -->
|
||||
<h2 class="section-sub-heading">Changing sticky header</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>If you don't want sticky header then remove js from <strong>theme.js</strong> files.</p>
|
||||
<p>Follow instructions in image below:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/content/change_sticky.jpg" class="img-fluid" alt="change_sticky">
|
||||
</div>
|
||||
<!-- header-sticky end -->
|
||||
</div>
|
||||
<div class="counter-sub-margin" id="item-4-4">
|
||||
<!-- slider start -->
|
||||
<h2 class="section-sub-heading">Changing slider</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>We are using two slider now (i.e. swiper, slick... etc.).</p>
|
||||
<p>These both several vendor css & js files store in <strong>plugin.min.css</strong> & <strong>plugin.min.js</strong> respectively.</p>
|
||||
<p>If you want to change any features then edit js from <strong>theme.js</strong> files.</p>
|
||||
</div>
|
||||
<!-- slider end -->
|
||||
<div class="counter-sup-num mst-30">
|
||||
<div class="row row-mtm">
|
||||
<!-- swiper-slider start -->
|
||||
<div class="col-12" id="item-4-5-2">
|
||||
<h2 class="section-sub-heading">Swiper slider</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Swiper slider file structure is as follows:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/content/change_swiper.jpg" class="img-fluid" alt="change_swiper">
|
||||
</div>
|
||||
</div>
|
||||
<!-- swiper-slider end -->
|
||||
<!-- slick-slider start -->
|
||||
<div class="col-12" id="item-4-5-1">
|
||||
<h2 class="section-sub-heading">Slick slider</h2>
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Slickl slider file structure is as follows:</p>
|
||||
</div>
|
||||
<div class="mst-15">
|
||||
<img src="assets/image/content/change_slick.jpg" class="img-fluid" alt="change_slick">
|
||||
</div>
|
||||
</div>
|
||||
<!-- slick-slider end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-num" id="item-5">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-margin">
|
||||
<!-- source start -->
|
||||
<h2 class="section-heading">Sources & credits</h2>
|
||||
<div class="intro-content">
|
||||
<h6 class="font-16">Our source has given in below structure</h6>
|
||||
<div class="mst-20">
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>We've used the following source as listed.</p>
|
||||
</div>
|
||||
<div class="source-files mst-15">
|
||||
<ol class="source-files-ul row-mtm10 d-flex flex-column meb-0 psl-17">
|
||||
<li class="source-files-li">
|
||||
<span>Google fonts</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Bootstrap</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>jQuery</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Magnific Popup</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Waypoints js</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Swiper slider</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Slick slider</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Smooth scroll</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Zoom</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Card</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Ckeditor5 classic</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Html2canvas</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Jspdf</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Animate</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Remix icon</span>
|
||||
</li>
|
||||
<li class="source-files-li">
|
||||
<span>Other custom source css (i.e. color, margin, padding, other-property,... etc.)</span>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- source end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="counter-num" id="item-6">
|
||||
<div class="row-mtm d-flex flex-column">
|
||||
<div class="counter-margin">
|
||||
<!-- source start -->
|
||||
<h2 class="section-heading">Support</h2>
|
||||
<div class="intro-content">
|
||||
<h6 class="font-16">Our support always available for our client</h6>
|
||||
<div class="mst-20">
|
||||
<div class="row-mtm10 d-flex flex-column">
|
||||
<p>Thank you for purchasing our template.</p>
|
||||
<p>If you have any questions that are beyond the scope of this help file, please feel free to open a new ticket at <a href="mailto:spacingtech10@gmail.com" class="secondary-color text-decoration-underline" target="_blank">spacingtech10@gmail.com</a> respectively.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- source end -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
<!-- footer start -->
|
||||
<footer id="footer" class="position-sticky bottom-0 body-bg ptb-10 text-center bst">
|
||||
<div class="container">
|
||||
<p>Powered by <a href="https://themeforest.net/user/spacingtech_webify/portfolio" class="secondary-color text-decoration-underline">spacingtech</a><sup>TM</sup></p>
|
||||
</div>
|
||||
</footer>
|
||||
<!-- footer end -->
|
||||
<!-- back-to-top start -->
|
||||
<a href="#" id="top" class="secondary-btn position-fixed d-flex align-items-center justify-content-center z-1 opacity-0 invisible rounded-circle lh-1" aria-label="Back to top"><i class="ri-arrow-up-line"></i></a>
|
||||
<!-- back-to-top end -->
|
||||
<!-- plugin js -->
|
||||
<script src="assets/js/plugin.js" defer></script>
|
||||
<!-- theme js -->
|
||||
<script src="assets/js/theme.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,482 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# root css
|
||||
# cart-page css
|
||||
# wishlist-page css
|
||||
# invoice css
|
||||
# checkout css
|
||||
# account-page css
|
||||
# empty css
|
||||
# track-page css
|
||||
# ticket-create-edit css
|
||||
# ticket-page css
|
||||
# ticket-info page css
|
||||
# extra css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* root css start *************************************/
|
||||
/*=====================================
|
||||
root
|
||||
=====================================*/
|
||||
:root {
|
||||
--bs-card-ratio: 58%;
|
||||
--bs-card-sm-ratio: 49.02%;
|
||||
--bs-card-md-ratio: 60.61%;
|
||||
--bs-card-lg-ratio: 72%;
|
||||
--bs-card-xl-ratio: 59.51%;
|
||||
}
|
||||
.jp-card .ratio::before {
|
||||
padding-top: var(--bs-card-ratio);
|
||||
}
|
||||
@media (min-width: 576px) {
|
||||
.jp-card .ratio::before {
|
||||
padding-top: var(--bs-card-sm-ratio);
|
||||
}
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.jp-card .ratio::before {
|
||||
padding-top: var(--bs-card-md-ratio);
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.jp-card .ratio::before {
|
||||
padding-top: var(--bs-card-lg-ratio);
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.jp-card .ratio::before {
|
||||
padding-top: var(--bs-card-xl-ratio);
|
||||
}
|
||||
}
|
||||
/************************************* root css end *************************************/
|
||||
|
||||
/************************************* cart-page css start *************************************/
|
||||
/*====================================
|
||||
cart-page discount css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.cart-orderview .cart-info .cart-detail .cart-detail-form .cart-detail-field input.cart-dis-input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.cart-orderview .cart-info .cart-detail .cart-detail-form .cart-detail-field button.cart-dis-btn {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* cart-page css end *************************************/
|
||||
|
||||
/************************************* wishlist-page css start *************************************/
|
||||
/*====================================
|
||||
wish-note-cart css
|
||||
====================================*/
|
||||
.wish-table .wish-table-data .wish-table-info .wish-note-content .wish-textarea textarea[name].focus {
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
/************************************* wishlist-page css end *************************************/
|
||||
|
||||
/************************************* invoice css start *************************************/
|
||||
/*====================================
|
||||
invoice css
|
||||
====================================*/
|
||||
.invoice .invoice-table {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.invoice .invoice-table>* {
|
||||
overflow-x: auto;
|
||||
scrollbar-width: thin;
|
||||
-webkit-scrollbar-width: thin;
|
||||
}
|
||||
.invoice .invoice-table>*::-webkit-scrollbar-track {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
.invoice .invoice-table>*::-webkit-scrollbar-thumb {
|
||||
background-color: #c1c1c1;
|
||||
}
|
||||
.invoice .invoice-table>*::-webkit-scrollbar-thumb:hover {
|
||||
background-color: var(--primary-font-color);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.invoice .invoice-table>* {
|
||||
-webkit-scrollbar-width: unset;
|
||||
scrollbar-width: unset;
|
||||
max-width: unset;
|
||||
overflow-x: unset;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
invoice-table-block-row css
|
||||
====================================*/
|
||||
.invoice .invoice-table .invoice-table-block .invoice-table-block-row {
|
||||
width: calc(100% + 33.33%);
|
||||
}
|
||||
@media (min-width: 425px) {
|
||||
.invoice .invoice-table .invoice-table-block .invoice-table-block-row {
|
||||
width: calc(100% + 0%);
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
invoice-print css
|
||||
====================================*/
|
||||
@media print {
|
||||
body {
|
||||
height: 100%;
|
||||
padding-top: 0px!important;
|
||||
}
|
||||
header, .breadcrumb-area, footer, a#top, .bottom-menu {
|
||||
display: none!important;
|
||||
}
|
||||
.container, .plr-15, .plr-md-30 {
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
.container {
|
||||
max-width: 100%;
|
||||
}
|
||||
.section-ptb {
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
.border-full {
|
||||
border: none;
|
||||
}
|
||||
.invoice .invoice-button {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
/************************************* invoice css end *************************************/
|
||||
|
||||
/************************************* checkout css start *************************************/
|
||||
/*====================================
|
||||
checkout orderview css
|
||||
====================================*/
|
||||
.checkout-summary .checkout-orderview h6 span::before {
|
||||
content: "(";
|
||||
}
|
||||
.checkout-summary .checkout-orderview h6 span::after {
|
||||
content: ")";
|
||||
}
|
||||
|
||||
/* checkout item-img css */
|
||||
.checkout-summary .checkout-orderview .checkitem-content .checkitem-img span.checkitem-qty {
|
||||
top: -10px;
|
||||
right: -10px;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
checkout method css
|
||||
====================================*/
|
||||
.check-method .check-method-option .check-method-content .check-method-radio span a.pickup-availability {
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
|
||||
/* checkout-method btn css */
|
||||
.apple-btn, .google-btn, .bank-btn {
|
||||
color: var(--extra-font-color);
|
||||
background-color: #000000;
|
||||
border: 2px solid #000000;
|
||||
}
|
||||
.paypal-btn {
|
||||
color: #003087;
|
||||
background-color: #ffc439;
|
||||
border: 2px solid #ffc439;
|
||||
}
|
||||
.apple-btn, .google-btn, .bank-btn, .paypal-btn {
|
||||
gap: 5px;
|
||||
-webkit-transition: background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
.apple-btn:hover, .google-btn:hover, .bank-btn:hover {
|
||||
background-color: #3c4043;
|
||||
border-color: #3c4043;
|
||||
}
|
||||
.paypal-btn:hover {
|
||||
background-color: #f1a900;
|
||||
border-color: #f1a900;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
pickup-availability-modal css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.pickup-availability-modal .modal-dialog {
|
||||
max-width: 750px;
|
||||
}
|
||||
}
|
||||
|
||||
/* pickup-availability-warehouse css */
|
||||
.pickup-availability-modal .pickup-availability-modal-content .pickup-availability-warehouse .pickup-warehouse-detail .pickup-warehouse-location a span {
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
.pickup-availability-modal .pickup-availability-modal-content .pickup-availability-warehouse .pickup-warehouse-detail .pickup-warehouse-available {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.pickup-availability-modal .pickup-availability-modal-content .pickup-availability-warehouse .pickup-warehouse-detail .pickup-warehouse-available::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: var(--primary-font-color);
|
||||
opacity: 0.1;
|
||||
z-index: -1;
|
||||
}
|
||||
/************************************* checkout css end *************************************/
|
||||
|
||||
/************************************* account-page css start *************************************/
|
||||
/*====================================
|
||||
account-page author css
|
||||
====================================*/
|
||||
.account-page .ap-info .ap-profile a:nth-child(even) {
|
||||
background-color: var(--extra-bgcolor);
|
||||
}
|
||||
.account-page .ap-info .ap-profile a span.ap-count {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
/************************************* account-page css end *************************************/
|
||||
|
||||
/************************************* empty css start *************************************/
|
||||
/*====================================
|
||||
empty-info css
|
||||
====================================*/
|
||||
.empty-info img {
|
||||
-webkit-filter: grayscale(1) opacity(0.3);
|
||||
filter: grayscale(1) opacity(0.3);
|
||||
}
|
||||
/************************************* empty css end *************************************/
|
||||
|
||||
/************************************* track-page css start *************************************/
|
||||
/*====================================
|
||||
track-record css
|
||||
====================================*/
|
||||
ul.track-ul li.track-li {
|
||||
padding: 0px 0px 30px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
ul.track-ul li.track-li:last-child {
|
||||
padding: 0px;
|
||||
}
|
||||
ul.track-ul li.track-li::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 64px;
|
||||
left: 30px;
|
||||
width: 1px;
|
||||
height: calc(100% - 64px);
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
z-index: -1;
|
||||
}
|
||||
ul.track-ul li.track-li:last-child::after {
|
||||
display: none;
|
||||
}
|
||||
ul.track-ul li.track-li.active::after {
|
||||
background-color: var(--primary-font-color);
|
||||
}
|
||||
ul.track-ul li.track-li .track-icon-text span.track-icon {
|
||||
color: var(--heading-font-color);
|
||||
background-color: var(--body-bgcolor);
|
||||
border: 1px solid rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
ul.track-ul li.track-li.active .track-icon-text span.track-icon {
|
||||
color: var(--extra-font-color);
|
||||
background-color: var(--primary-font-color);
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
ul.track-ul li.track-li.active-next .track-icon-text span.track-icon {
|
||||
color: var(--primary-font-color);
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
/************************************* track-page css end *************************************/
|
||||
|
||||
/************************************* ticket-create-edit css start *************************************/
|
||||
/*====================================
|
||||
ckeditor css
|
||||
====================================*/
|
||||
.editor-creator .ck.ck-toolbar,
|
||||
.editor-creator .ck.ck-dropdown__panel {
|
||||
background-color: var(--extra-bgcolor);
|
||||
}
|
||||
.editor-creator .ck.ck-editor__main>.ck-editor__editable {
|
||||
border-top-width: 1px;
|
||||
}
|
||||
.editor-creator .ck.ck-toolbar,
|
||||
.editor-creator .ck.ck-dropdown__panel,
|
||||
.editor-creator .ck.ck-editor__main>.ck-editor__editable:not(.ck-focused) {
|
||||
border-color: rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.editor-creator .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,
|
||||
.editor-creator .ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-dropdown__panel,
|
||||
.editor-creator .ck.ck-dropdown__panel.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,
|
||||
.editor-creator .ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,
|
||||
.editor-creator .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,
|
||||
.editor-creator .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-button,
|
||||
.editor-creator .ck-rounded-corners a.ck.ck-button,
|
||||
.editor-creator .ck.ck-button.ck-rounded-corners,
|
||||
.editor-creator a.ck.ck-button.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,
|
||||
.editor-creator .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners {
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
.editor-creator .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,
|
||||
.editor-creator .ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,
|
||||
.editor-creator .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners {
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
.editor-creator .ck.ck-dropdown__panel.ck-dropdown__panel_se,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,
|
||||
.editor-creator .ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,
|
||||
.editor-creator .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners {
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
.editor-creator .ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,
|
||||
.editor-creator .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners,
|
||||
.editor-creator .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,
|
||||
.editor-creator .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners {
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
.editor-creator .ck.ck-toolbar .ck.ck-toolbar__separator {
|
||||
background: rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.editor-creator .ck.ck-dropdown__panel,
|
||||
.editor-creator .ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused {
|
||||
box-shadow: none;
|
||||
}
|
||||
.editor-creator .ck.ck-editor__editable_inline {
|
||||
height: 300px;
|
||||
padding: 0px 15px;
|
||||
}
|
||||
.editor-creator .ck.ck-editor__main p {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.editor-creator .ck.ck-editor__main ul {
|
||||
list-style: unset;
|
||||
margin-top: 10px;
|
||||
padding-left: 16px;
|
||||
}
|
||||
/************************************* ticket-create-edit css end *************************************/
|
||||
|
||||
/************************************* ticket-page css start *************************************/
|
||||
/*====================================
|
||||
ticket-header css
|
||||
====================================*/
|
||||
.ticket-content .ticket-header {
|
||||
position: relative;
|
||||
}
|
||||
.ticket-content .ticket-header::before,
|
||||
.ticket-content .ticket-header::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: -15px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
background-color: var(--body-bgcolor);
|
||||
z-index: 1;
|
||||
border-radius: 100%;
|
||||
}
|
||||
.ticket-content .ticket-header::before {
|
||||
left: -15px;
|
||||
}
|
||||
.ticket-content .ticket-header::after {
|
||||
right: -15px;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
ticket-body css
|
||||
====================================*/
|
||||
.ticket-content .ticket-body {
|
||||
position: relative;
|
||||
}
|
||||
.ticket-content .ticket-body::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 1px;
|
||||
background-image: linear-gradient(90deg, rgba(var(--border-color),var(--border-opacity)), rgba(var(--border-color),var(--border-opacity)) 75%, transparent 75%, transparent 100%);
|
||||
background-size: 16px 1px;
|
||||
}
|
||||
/************************************* ticket-page css end *************************************/
|
||||
|
||||
/************************************* ticket-info page css start *************************************/
|
||||
/*====================================
|
||||
ticket-view css
|
||||
====================================*/
|
||||
.ti-view .ti-view-info .ti-image ul.ti-img-ul li.ti-img-li .ti-ss button {
|
||||
top: -4px;
|
||||
right: -4px;
|
||||
}
|
||||
.ti-view .ti-view-info .ti-point ul {
|
||||
list-style-type: disc;
|
||||
padding-left: 17px;
|
||||
}
|
||||
.ti-view .ti-view-info .ti-point ul li {
|
||||
margin-top: 7px;
|
||||
}
|
||||
.ti-view .ti-view-info .ti-point ul li:first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
.ti-view .ti-view-info .ti-point ul li::marker {
|
||||
color: var(--heading-font-color);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
ticket-chat css
|
||||
====================================*/
|
||||
.ti-reply-info .ti-chat .ti-chat-col .ti-chat-reply .ti-content-info .ti-content ul {
|
||||
list-style-type: disc;
|
||||
padding-left: 17px;
|
||||
}
|
||||
.ti-reply-info .ti-chat .ti-chat-col .ti-chat-reply .ti-content-info .ti-content ul li {
|
||||
margin-top: 7px;
|
||||
}
|
||||
.ti-reply-info .ti-chat .ti-chat-col .ti-chat-reply .ti-content-info .ti-content ul li:first-child {
|
||||
margin-top: 0px;
|
||||
}
|
||||
.ti-reply-info .ti-chat .ti-chat-col .ti-chat-reply .ti-content-info .ti-content ul li::marker {
|
||||
color: var(--heading-font-color);
|
||||
}
|
||||
/************************************* ticket-info page css end *************************************/
|
||||
|
||||
/************************************* extra css start *************************************/
|
||||
/*====================================
|
||||
st-field-btn css
|
||||
====================================*/
|
||||
button.st-field-btn span.st-field-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
st-label css
|
||||
====================================*/
|
||||
.st-small-label {
|
||||
color: var(--extra-font-color);
|
||||
font-size: 10px;
|
||||
padding: 3px 5px;
|
||||
text-transform: uppercase;
|
||||
border-radius: var(--border-radius);
|
||||
line-height: 1;
|
||||
}
|
||||
.st-big-label {
|
||||
color: var(--extra-font-color);
|
||||
font-size: 12px;
|
||||
min-width: 64px;
|
||||
padding: 4px 5px;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
border-radius: var(--border-radius);
|
||||
line-height: 1;
|
||||
}
|
||||
/************************************* extra css end *************************************/
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# blog-sidebar css
|
||||
# article css
|
||||
# search-blog css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* blog-sidebar css start *************************************/
|
||||
/*====================================
|
||||
blog-post-sidebar css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar {
|
||||
padding-top: 30px;
|
||||
margin-top: 30px;
|
||||
border-top: 1px solid rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.blog-sidebar-wrap .blog-post-sidebar:first-child {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-recent css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar .blog-recent-post .blog-img-content .blog-recent-content span a {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-tag css
|
||||
====================================*/
|
||||
ul.tag-ul li.tag-li a {
|
||||
-webkit-transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
ul.tag-ul li.tag-li a:hover {
|
||||
color: var(--extra-font-color);
|
||||
background-color: var(--secondary-font-color);
|
||||
border-color: var(--secondary-font-color);
|
||||
}
|
||||
ul.tag-ul li.tag-li a::before {
|
||||
content: "#";
|
||||
}
|
||||
/************************************* blog-sidebar css end *************************************/
|
||||
|
||||
/************************************* article css start *************************************/
|
||||
/*====================================
|
||||
article-comments css
|
||||
====================================*/
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button {
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 1px;
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
/************************************* article css end *************************************/
|
||||
|
||||
/************************************* search-blog css start *************************************/
|
||||
/*====================================
|
||||
search-blog css
|
||||
====================================*/
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::before {
|
||||
content: '"';
|
||||
}
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::after {
|
||||
content: '"';
|
||||
}
|
||||
|
||||
/* search-blog result css */
|
||||
.blog-post-sidebar .search-bar .search-results ul.search-ul,
|
||||
.search-page .search-bar .search-results ul.search-ul {
|
||||
max-height: 153px;
|
||||
}
|
||||
/************************************* search-blog css end *************************************/
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# blog-sidebar css
|
||||
# article css
|
||||
# search-blog css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* blog-sidebar css start *************************************/
|
||||
/*====================================
|
||||
blog-post-sidebar css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar {
|
||||
padding-top: 30px;
|
||||
margin-top: 30px;
|
||||
border-top: 1px solid rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.blog-sidebar-wrap .blog-post-sidebar:first-child {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-recent css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar .blog-recent-post .blog-img-content .blog-recent-content span a {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-tag css
|
||||
====================================*/
|
||||
ul.tag-ul li.tag-li a {
|
||||
-webkit-transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
ul.tag-ul li.tag-li a:hover {
|
||||
color: var(--extra-font-color);
|
||||
background-color: var(--secondary-font-color);
|
||||
border-color: var(--secondary-font-color);
|
||||
}
|
||||
ul.tag-ul li.tag-li a::before {
|
||||
content: "#";
|
||||
}
|
||||
/************************************* blog-sidebar css end *************************************/
|
||||
|
||||
/************************************* article css start *************************************/
|
||||
/*====================================
|
||||
article-comments css
|
||||
====================================*/
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button {
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 1px;
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
/************************************* article css end *************************************/
|
||||
|
||||
/************************************* search-blog css start *************************************/
|
||||
/*====================================
|
||||
search-blog css
|
||||
====================================*/
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::before {
|
||||
content: '"';
|
||||
}
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::after {
|
||||
content: '"';
|
||||
}
|
||||
|
||||
/* search-blog result css */
|
||||
.blog-post-sidebar .search-bar .search-results ul.search-ul,
|
||||
.search-page .search-bar .search-results ul.search-ul {
|
||||
max-height: 153px;
|
||||
}
|
||||
/************************************* search-blog css end *************************************/
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# blog-sidebar css
|
||||
# article css
|
||||
# search-blog css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* blog-sidebar css start *************************************/
|
||||
/*====================================
|
||||
blog-post-sidebar css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar {
|
||||
padding-top: 30px;
|
||||
margin-top: 30px;
|
||||
border-top: 1px solid rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.blog-sidebar-wrap .blog-post-sidebar:first-child {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-recent css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar .blog-recent-post .blog-img-content .blog-recent-content span a {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-tag css
|
||||
====================================*/
|
||||
ul.tag-ul li.tag-li a {
|
||||
-webkit-transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
ul.tag-ul li.tag-li a:hover {
|
||||
color: var(--extra-font-color);
|
||||
background-color: var(--secondary-font-color);
|
||||
border-color: var(--secondary-font-color);
|
||||
}
|
||||
ul.tag-ul li.tag-li a::before {
|
||||
content: "#";
|
||||
}
|
||||
/************************************* blog-sidebar css end *************************************/
|
||||
|
||||
/************************************* article css start *************************************/
|
||||
/*====================================
|
||||
article-comments css
|
||||
====================================*/
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button {
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 1px;
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
/************************************* article css end *************************************/
|
||||
|
||||
/************************************* search-blog css start *************************************/
|
||||
/*====================================
|
||||
search-blog css
|
||||
====================================*/
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::before {
|
||||
content: '"';
|
||||
}
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::after {
|
||||
content: '"';
|
||||
}
|
||||
|
||||
/* search-blog result css */
|
||||
.blog-post-sidebar .search-bar .search-results ul.search-ul,
|
||||
.search-page .search-bar .search-results ul.search-ul {
|
||||
max-height: 153px;
|
||||
}
|
||||
/************************************* search-blog css end *************************************/
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# blog-sidebar css
|
||||
# article css
|
||||
# search-blog css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* blog-sidebar css start *************************************/
|
||||
/*====================================
|
||||
blog-post-sidebar css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar {
|
||||
padding-top: 30px;
|
||||
margin-top: 30px;
|
||||
border-top: 1px solid rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.blog-sidebar-wrap .blog-post-sidebar:first-child {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-recent css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar .blog-recent-post .blog-img-content .blog-recent-content span a {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-tag css
|
||||
====================================*/
|
||||
ul.tag-ul li.tag-li a {
|
||||
-webkit-transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
ul.tag-ul li.tag-li a:hover {
|
||||
color: var(--extra-font-color);
|
||||
background-color: var(--secondary-font-color);
|
||||
border-color: var(--secondary-font-color);
|
||||
}
|
||||
ul.tag-ul li.tag-li a::before {
|
||||
content: "#";
|
||||
}
|
||||
/************************************* blog-sidebar css end *************************************/
|
||||
|
||||
/************************************* article css start *************************************/
|
||||
/*====================================
|
||||
article-comments css
|
||||
====================================*/
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button {
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 1px;
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
/************************************* article css end *************************************/
|
||||
|
||||
/************************************* search-blog css start *************************************/
|
||||
/*====================================
|
||||
search-blog css
|
||||
====================================*/
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::before {
|
||||
content: '"';
|
||||
}
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::after {
|
||||
content: '"';
|
||||
}
|
||||
|
||||
/* search-blog result css */
|
||||
.blog-post-sidebar .search-bar .search-results ul.search-ul,
|
||||
.search-page .search-bar .search-results ul.search-ul {
|
||||
max-height: 153px;
|
||||
}
|
||||
/************************************* search-blog css end *************************************/
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# blog-sidebar css
|
||||
# article css
|
||||
# search-blog css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* blog-sidebar css start *************************************/
|
||||
/*====================================
|
||||
blog-post-sidebar css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar {
|
||||
padding-top: 30px;
|
||||
margin-top: 30px;
|
||||
border-top: 1px solid rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.blog-sidebar-wrap .blog-post-sidebar:first-child {
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-recent css
|
||||
====================================*/
|
||||
.blog-sidebar-wrap .blog-post-sidebar .blog-recent-post .blog-img-content .blog-recent-content span a {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
blog-tag css
|
||||
====================================*/
|
||||
ul.tag-ul li.tag-li a {
|
||||
-webkit-transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
ul.tag-ul li.tag-li a:hover {
|
||||
color: var(--extra-font-color);
|
||||
background-color: var(--secondary-font-color);
|
||||
border-color: var(--secondary-font-color);
|
||||
}
|
||||
ul.tag-ul li.tag-li a::before {
|
||||
content: "#";
|
||||
}
|
||||
/************************************* blog-sidebar css end *************************************/
|
||||
|
||||
/************************************* article css start *************************************/
|
||||
/*====================================
|
||||
article-comments css
|
||||
====================================*/
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button {
|
||||
position: relative;
|
||||
margin-left: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 1px;
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.article-comments form .article-cmt .article-cmt-wrap .article-cmt-wrapper .article-cmt-content .article-cmt-red ul li .article-edit-reply button:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
/************************************* article css end *************************************/
|
||||
|
||||
/************************************* search-blog css start *************************************/
|
||||
/*====================================
|
||||
search-blog css
|
||||
====================================*/
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::before {
|
||||
content: '"';
|
||||
}
|
||||
.search-page .search-bar-page form.search-form .section-title h2 span::after {
|
||||
content: '"';
|
||||
}
|
||||
|
||||
/* search-blog result css */
|
||||
.blog-post-sidebar .search-bar .search-results ul.search-ul,
|
||||
.search-page .search-bar .search-results ul.search-ul {
|
||||
max-height: 153px;
|
||||
}
|
||||
/************************************* search-blog css end *************************************/
|
||||
|
|
@ -0,0 +1,362 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# other-swiper-wrap css
|
||||
# other-tab-title css
|
||||
# other-tab css
|
||||
# index css
|
||||
# about-us css
|
||||
# about-us2 css
|
||||
# contact-us css
|
||||
# faqs css
|
||||
# store css
|
||||
# coming-soon css
|
||||
# keyframes css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* other-swiper-wrap css start *************************************/
|
||||
/*========================================
|
||||
other-swiper-wrap swiper-buttons css
|
||||
========================================*/
|
||||
.other-swiper-wrap {
|
||||
position: relative;
|
||||
}
|
||||
.other-swiper-wrap .swiper-buttons {
|
||||
margin-top: 30px;
|
||||
text-align: center;
|
||||
line-height: 0;
|
||||
}
|
||||
.other-swiper-wrap .swiper-buttons .swiper-buttons-wrap {
|
||||
display: inline-flex;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.other-swiper-wrap .swiper-buttons {
|
||||
margin-top: 0px;
|
||||
}
|
||||
.other-swiper-wrap .swiper-buttons .swiper-buttons-wrap {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
/* other-swiper-wrap swiper-buttons navigation css */
|
||||
.other-swiper-wrap .swiper-buttons button {
|
||||
color: var(--secondary-font-color);
|
||||
font-size: 16px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background-color: var(--extra-font-color);
|
||||
margin-right: 10px;
|
||||
border: 1px solid rgba(var(--border-color),var(--border-opacity));
|
||||
border-radius: 100%;
|
||||
box-shadow: rgba(var(--box-shadow-outer),var(--box-shadow-outer-opacity));
|
||||
-webkit-transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
.other-swiper-wrap .swiper-buttons button:last-child:last-child {
|
||||
margin: 0px;
|
||||
}
|
||||
.other-swiper-wrap .swiper-buttons button:hover {
|
||||
color: var(--extra-font-color);
|
||||
background-color: var(--primary-font-color);
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.other-swiper-wrap .swiper-buttons button {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
margin-right: 0px;
|
||||
}
|
||||
.other-swiper-wrap .swiper-buttons button.swiper-prev {
|
||||
left: 0;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.other-swiper-wrap .swiper-buttons button.swiper-next {
|
||||
right: 0;
|
||||
transform: translateX(50%);
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.other-swiper-wrap .swiper-buttons button {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
/*========================================
|
||||
other-swiper-wrap swiper-dot css
|
||||
========================================*/
|
||||
.other-swiper-wrap .swiper-dots {
|
||||
margin-top: 30px;
|
||||
line-height: 0;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.other-swiper-wrap .swiper-dots {
|
||||
margin-top: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
/* other-swiper-wrap swiper-dot-pagination css */
|
||||
.other-swiper-wrap .swiper-dots .swiper-pagination {
|
||||
width: unset;
|
||||
position: unset;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
margin: -5px 0px 0px -5px;
|
||||
}
|
||||
.other-swiper-wrap .swiper-dots .swiper-pagination span {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: transparent;
|
||||
margin: 5px 0px 0px 5px;
|
||||
opacity: 1;
|
||||
border: 1px solid var(--primary-font-color);
|
||||
}
|
||||
.other-swiper-wrap .swiper-dots .swiper-pagination span.swiper-pagination-bullet-active {
|
||||
background-color: var(--primary-font-color);
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
/************************************* other-swiper-wrap css end *************************************/
|
||||
|
||||
/************************************* other-tab-title css start *************************************/
|
||||
/*====================================
|
||||
other-tab-title css
|
||||
====================================*/
|
||||
.other-tab-title span {
|
||||
border-bottom: 2px solid;
|
||||
}
|
||||
/************************************* other-tab-title css end *************************************/
|
||||
|
||||
/************************************* other-tab css start *************************************/
|
||||
/*====================================
|
||||
other-tab title css
|
||||
====================================*/
|
||||
.other-tab a[aria-expanded="true"] {
|
||||
color: var(--primary-font-color);
|
||||
}
|
||||
.other-tab a[aria-expanded="true"] span.other-tab-icon i::before {
|
||||
content: "\f1af";
|
||||
}
|
||||
/************************************* other-tab css end *************************************/
|
||||
|
||||
/************************************* index css start *************************************/
|
||||
/*====================================
|
||||
question-index css
|
||||
====================================*/
|
||||
.question-index {
|
||||
counter-reset: Questions;
|
||||
}
|
||||
.question-index .question-sub-index::before {
|
||||
counter-increment: Questions;
|
||||
content: "Q." counter(Questions) " ";
|
||||
}
|
||||
|
||||
/*====================================
|
||||
number-index css
|
||||
====================================*/
|
||||
.number-index {
|
||||
counter-reset: number;
|
||||
}
|
||||
.number-index .number-sub-index {
|
||||
counter-reset: sub-number;
|
||||
}
|
||||
.number-index .number-sub-index::before {
|
||||
counter-increment: number;
|
||||
content: counter(number) ". ";
|
||||
}
|
||||
.number-index .p-number::before {
|
||||
counter-increment: sub-number;
|
||||
content: counter(number) "."counter(sub-number)" ";
|
||||
}
|
||||
/************************************* index css end *************************************/
|
||||
|
||||
/************************************* about-us css start *************************************/
|
||||
/*====================================
|
||||
about-testimonial css
|
||||
====================================*/
|
||||
.about-testimonial {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.about-testimonial::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
height: var(--section-before-height);
|
||||
background-color: var(--extra-bgcolor);
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
/* about-testimonial swiper css */
|
||||
.about-testimonial .about-testislider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* about-testi-content css */
|
||||
.about-testimonial .about-testislider p {
|
||||
line-height: 28px;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.about-testimonial .about-testislider p {
|
||||
line-height: 36px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
about-us-banner css
|
||||
====================================*/
|
||||
.about-us-banner {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.about-us-banner::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
height: 50%;
|
||||
background-color: var(--extra-bgcolor);
|
||||
z-index: -1;
|
||||
}
|
||||
/************************************* about-us css end *************************************/
|
||||
|
||||
/************************************* about-us2 css start *************************************/
|
||||
/*====================================
|
||||
about-story-video css
|
||||
====================================*/
|
||||
.about-us .about-story-video {
|
||||
z-index: 1;
|
||||
}
|
||||
.about-us .about-story-video::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 1px;
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
z-index: -1;
|
||||
}
|
||||
/************************************* about-us2 css end *************************************/
|
||||
|
||||
/************************************* contact-us css start *************************************/
|
||||
/*====================================
|
||||
contact-location css
|
||||
====================================*/
|
||||
.contact-location.section-overlay {
|
||||
margin-top: -30px;
|
||||
}
|
||||
|
||||
/* contact-location-location swiper css */
|
||||
.contact-location .contact-locationslider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.contact-location .contact-locationslider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.contact-location .contact-locationslider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
contact-map css
|
||||
====================================*/
|
||||
.contact-map iframe {
|
||||
height: 320px;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.contact-map iframe {
|
||||
height: 400px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.contact-map iframe {
|
||||
height: 500px;
|
||||
}
|
||||
}
|
||||
/************************************* contact-us css start *************************************/
|
||||
|
||||
/************************************* faqs css start *************************************/
|
||||
/*====================================
|
||||
faqs-collapse-group css
|
||||
====================================*/
|
||||
.faqs-collapse-group>* {
|
||||
border-top: 1px solid rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
.faqs-collapse-group>*:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
/************************************* faqs css end *************************************/
|
||||
|
||||
/************************************* store css start *************************************/
|
||||
/*====================================
|
||||
store css
|
||||
====================================*/
|
||||
.store .store-content .store-info {
|
||||
margin-top: -12px;
|
||||
}
|
||||
.store .store-content .store-info>* {
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
store-alert-msg css
|
||||
====================================*/
|
||||
.store .store-search .store-alert-msg {
|
||||
display: none;
|
||||
--bs-bg-opacity: 0.1;
|
||||
--bs-border-opacity: 0.1;
|
||||
border: 1px solid;
|
||||
}
|
||||
.store .store-search .store-alert-msg.active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
store-data css
|
||||
====================================*/
|
||||
.store .store-data {
|
||||
display: none;
|
||||
}
|
||||
.store .store-data.active {
|
||||
display: block;
|
||||
}
|
||||
/************************************* store css end *************************************/
|
||||
|
||||
/************************************* coming-soon css start *************************************/
|
||||
/*====================================
|
||||
coming-soon-news css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.coming-news form.coming-form .coming-wrap input.coming-notify-input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.coming-news form.coming-form .coming-wrap button.coming-notify-btn {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* coming-soon css end *************************************/
|
||||
|
||||
/************************************* keyframes css start *************************************/
|
||||
/*====================================
|
||||
blinking keyframes css
|
||||
====================================*/
|
||||
.blinking {
|
||||
-webkit-animation: blinking 2s cubic-bezier(.4, 0, .6, 1) infinite;
|
||||
animation: blinking 2s cubic-bezier(.4, 0, .6, 1) infinite;
|
||||
}
|
||||
@-webkit-keyframes blinking {
|
||||
50% {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
@keyframes blinking {
|
||||
50% {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
/************************************* keyframes css end *************************************/
|
||||
|
|
@ -0,0 +1,626 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# product-slider css
|
||||
# product-detail-info css
|
||||
# share-modal css
|
||||
# product-frequently-bought css
|
||||
# product-detail-tab css
|
||||
# product-detail-how-to-use css
|
||||
# product-detail-key-ingredients css
|
||||
# product-detail-review css
|
||||
# product-comparison css
|
||||
# keyframes css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* product-slider css start *************************************/
|
||||
/*====================================
|
||||
product-slider-big swiper css
|
||||
====================================*/
|
||||
.product-detail-slider .product-img-big .product-swiper .swiper:not(.swiper-initialized) .swiper-slide:not([style]),
|
||||
.product-detail-slider .product-img-big.slider-big-h .swiper:not(.swiper-initialized) .swiper-slide:not([style]),
|
||||
.product-detail-slider .product-img-big.slider-big-v .swiper:not(.swiper-initialized) .swiper-slide:not([style]),
|
||||
.product-detail-slider .product-img-big.slider-big-s .swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-img-big css
|
||||
====================================*/
|
||||
/* slider-big product-item-img css */
|
||||
@media (min-width: 1200px) {
|
||||
.product-detail-slider .product-img-big .product-swiper-slide .product-item-img:hover span.pro-zoom img.zoomImg {
|
||||
cursor: crosshair;
|
||||
}
|
||||
}
|
||||
|
||||
/* slider-big navigation css */
|
||||
.product-detail-slider .product-img-big .swiper-buttons button.swiper-prev {
|
||||
left: 15px;
|
||||
}
|
||||
.product-detail-slider .product-img-big .swiper-buttons button.swiper-next {
|
||||
right: 15px;
|
||||
}
|
||||
.product-detail-slider .product-img-big .swiper-buttons button[disabled] {
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* slider-big dots css */
|
||||
.product-detail-slider .product-img-big .swiper-dots .swiper-pagination {
|
||||
width: unset;
|
||||
position: unset;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
margin: -5px 0px 0px -5px;
|
||||
}
|
||||
.product-detail-slider .product-img-big .swiper-dots .swiper-pagination span {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: transparent;
|
||||
margin: 5px 0px 0px 5px;
|
||||
opacity: 1;
|
||||
border: 1px solid var(--primary-font-color);
|
||||
}
|
||||
.product-detail-slider .product-img-big .swiper-dots .swiper-pagination span.swiper-pagination-bullet-active {
|
||||
background-color: var(--primary-font-color);
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-slider-small swiper css
|
||||
====================================*/
|
||||
.product-detail-slider .product-img-small.slider-small-h .swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 25%;
|
||||
}
|
||||
.product-detail-slider .product-img-small.slider-small-v .swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 25%;
|
||||
}
|
||||
@media (min-width: 576px) {
|
||||
.product-detail-slider .product-img-small.slider-small-v .swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-img-small css
|
||||
====================================*/
|
||||
.product-detail-slider .product-img-small .product-swiper-slide .product-item-img {
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.product-detail-slider .product-img-small .product-swiper-slide .product-item-img:hover,
|
||||
.product-detail-slider .product-img-small .product-swiper-slide.swiper-slide-thumb-active .product-item-img {
|
||||
border-color: var(--heading-font-color);
|
||||
}
|
||||
/************************************* product-slider css end *************************************/
|
||||
|
||||
/************************************* product-detail-info css start *************************************/
|
||||
/*====================================
|
||||
product-ratting css
|
||||
====================================*/
|
||||
.product-detail-info .product-ratting a.pro-review span.review-ratting {
|
||||
margin-left: -2.5px;
|
||||
margin-right: -2.5px;
|
||||
}
|
||||
.product-detail-info .product-ratting a.pro-review span.review-ratting>* {
|
||||
padding-left: 2.5px;
|
||||
padding-right: 2.5px;
|
||||
}
|
||||
.product-detail-info .product-ratting a.pro-review span.review-ratting span.review-average {
|
||||
display: inline;
|
||||
font-size: var(--body-font-size);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-price css
|
||||
====================================*/
|
||||
.product-detail-info .product-price .pro-price-box span.discount-price::before {
|
||||
content: "(";
|
||||
}
|
||||
.product-detail-info .product-price .pro-price-box span.discount-price::after {
|
||||
content: ")";
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-stock css
|
||||
====================================*/
|
||||
.product-detail-info .product-stock span.stock-fill,
|
||||
.product-detail-info .product-stock span.stock-empty {
|
||||
position: relative;
|
||||
padding-left: 20px;
|
||||
}
|
||||
.product-detail-info .product-stock span.stock-fill::before,
|
||||
.product-detail-info .product-stock span.stock-fill::after,
|
||||
.product-detail-info .product-stock span.stock-empty::before,
|
||||
.product-detail-info .product-stock span.stock-empty::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
--bs-bg-opacity: 1;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.product-detail-info .product-stock span.stock-fill::before,
|
||||
.product-detail-info .product-stock span.stock-empty::before {
|
||||
top: 6px;
|
||||
left: 4px;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
.product-detail-info .product-stock span.stock-fill::after,
|
||||
.product-detail-info .product-stock span.stock-empty::after {
|
||||
top: 2px;
|
||||
left: 0;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border: 2px solid;
|
||||
--bs-border-opacity: 0.3;
|
||||
}
|
||||
.product-detail-info .product-stock span.stock-fill::before {
|
||||
background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity));
|
||||
}
|
||||
.product-detail-info .product-stock span.stock-empty::before {
|
||||
background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity));
|
||||
}
|
||||
.product-detail-info .product-stock span.stock-fill::after {
|
||||
border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity));
|
||||
}
|
||||
.product-detail-info .product-stock span.stock-empty::after {
|
||||
border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity));
|
||||
}
|
||||
|
||||
/* product-stock-bar css */
|
||||
.product-detail-info .product-stock .product-stock-bar {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 4px;
|
||||
background-color: rgba(var(--border-color), var(--border-opacity));
|
||||
--border-opacity: 0.2;
|
||||
}
|
||||
.product-detail-info .product-stock .product-stock-bar::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
--bs-bg-opacity: 1;
|
||||
}
|
||||
.product-detail-info .product-stock .product-stock-bar.product-stock-fill::after {
|
||||
width: 66%;
|
||||
background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity));
|
||||
}
|
||||
.product-detail-info .product-stock .product-stock-bar.product-stock-empty::after {
|
||||
width: 9%;
|
||||
background-color: rgba(var(--bs-danger-rgb),var(--bs-bg-opacity));
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-quantity-action css
|
||||
====================================*/
|
||||
.product-detail-info .product-quantity-action .product-quantity-wishlist {
|
||||
margin-top: -15px;
|
||||
margin-left: -7.5px;
|
||||
margin-right: -7.5px;
|
||||
}
|
||||
.product-detail-info .product-quantity-action .product-quantity-wishlist>* {
|
||||
margin-top: 15px;
|
||||
padding-left: 7.5px;
|
||||
padding-right: 7.5px;
|
||||
}
|
||||
.product-detail-info .product-quantity-action .product-quantity-wishlist .product-quantity .js-qty-wrapper .js-qty-wrap {
|
||||
align-items: center;
|
||||
}
|
||||
.product-detail-info .product-quantity-action .product-quantity-wishlist .product-quantity .js-qty-wrapper .js-qty-wrap,
|
||||
.product-detail-info .product-quantity-action .product-quantity-wishlist .product-quantity .js-qty-wrapper .js-qty-wrap button.js-qty-adjust,
|
||||
.product-detail-info .product-quantity-action .product-quantity-wishlist .product-quantity .js-qty-wrapper .js-qty-wrap input.js-qty-num {
|
||||
height: 40px;
|
||||
}
|
||||
.product-detail-info .product-quantity-action .product-quantity-wishlist .product-notify-stock a {
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
.product-detail-info .product-quantity-action .product-action button,
|
||||
.product-detail-info .product-quantity-action .product-action a {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-preorder css
|
||||
====================================*/
|
||||
.product-detail-info .product-preorder {
|
||||
--bs-bg-opacity: 0.1;
|
||||
--bs-border-opacity: 0.1;
|
||||
border: 1px solid;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-service css
|
||||
====================================*/
|
||||
.product-detail-info .product-service>*,
|
||||
.product-detail-service .product-service>* {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.product-detail-info .product-service>*::before,
|
||||
.product-detail-info .product-service>*::after,
|
||||
.product-detail-service .product-service>*::before,
|
||||
.product-detail-service .product-service>*::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 34px;
|
||||
width: calc(50% - 16px);
|
||||
height: 2px;
|
||||
background-color: var(--heading-font-color);
|
||||
z-index: -1;
|
||||
}
|
||||
.product-detail-info .product-service>*::before,
|
||||
.product-detail-service .product-service>*::before {
|
||||
left: 0;
|
||||
}
|
||||
.product-detail-info .product-service>*::after,
|
||||
.product-detail-service .product-service>*::after {
|
||||
right: 0;
|
||||
}
|
||||
.product-detail-info .product-service>*:first-child::before,
|
||||
.product-detail-info .product-service>*:last-child::after,
|
||||
.product-detail-service .product-service>*:first-child::before,
|
||||
.product-detail-service .product-service>*:last-child::after {
|
||||
display: none;
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.product-detail-service .product-service>*:first-child::before,
|
||||
.product-detail-service .product-service>*:last-child::after {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
/************************************* product-detail-info css end *************************************/
|
||||
|
||||
/************************************* share-modal css start *************************************/
|
||||
/*====================================
|
||||
share-modal css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.share-modal .share-modal-content .product-link input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.share-modal .share-modal-content .product-link button {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* share-modal css end *************************************/
|
||||
|
||||
/************************************* product-frequently-bought css start *************************************/
|
||||
/*====================================
|
||||
frequent-image css
|
||||
====================================*/
|
||||
.frequent .frequent-group form .frequent-detail .frequent-image ul {
|
||||
margin-left: -15px;
|
||||
margin-right: -15px;
|
||||
}
|
||||
.frequent .frequent-group form .frequent-detail .frequent-image ul>* {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
.frequent .frequent-group form .frequent-detail .frequent-image ul li {
|
||||
position: relative;
|
||||
}
|
||||
.frequent .frequent-group form .frequent-detail .frequent-image ul li::before {
|
||||
content: "\f4b2";
|
||||
font-family: remixicon !important;
|
||||
font-size: 16px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
.frequent .frequent-group form .frequent-detail .frequent-image ul li:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
.frequent .frequent-group form .frequent-detail .frequent-image ul li span.freq-img.active img {
|
||||
border-color: var(--heading-font-color);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
frequent-info css
|
||||
====================================*/
|
||||
.frequent .frequent-group form .frequent-detail .frequent-info .frequent-content a span {
|
||||
border-bottom: 1px solid var(--heading-font-color);
|
||||
}
|
||||
.frequent .frequent-group form .frequent-detail .frequent-info .frequent-content a[aria-expanded="true"] i {
|
||||
transform: scaleY(-1);
|
||||
}
|
||||
/************************************* product-frequently-bought css end *************************************/
|
||||
|
||||
/************************************* product-detail-tab css start *************************************/
|
||||
/*====================================
|
||||
product-tab-nav css
|
||||
====================================*/
|
||||
.product-tab .product-tab-nav ul.nav-tabs {
|
||||
margin-left: -7.5px;
|
||||
margin-right: -7.5px;
|
||||
}
|
||||
.product-tab .product-tab-nav ul.nav-tabs>* {
|
||||
padding-left: 7.5px;
|
||||
padding-right: 7.5px;
|
||||
}
|
||||
@media(min-width: 768px) {
|
||||
.product-tab .product-tab-nav ul.nav-tabs {
|
||||
margin-left: -15px;
|
||||
margin-right: -15px;
|
||||
}
|
||||
.product-tab .product-tab-nav ul.nav-tabs>* {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
horizontal-tab css
|
||||
====================================*/
|
||||
.product-tab.horizontal-tab .product-tab-nav ul.nav-tabs {
|
||||
margin-top: -11px;
|
||||
}
|
||||
.product-tab.horizontal-tab .product-tab-nav ul.nav-tabs>* {
|
||||
margin-top: 11px;
|
||||
}
|
||||
.product-tab.horizontal-tab .product-tab-nav ul.nav-tabs li a {
|
||||
color: var(--heading-font-color);
|
||||
border-bottom: 2px solid transparent;
|
||||
-webkit-transition: color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
.product-tab.horizontal-tab .product-tab-nav ul.nav-tabs li a.active {
|
||||
color: var(--primary-font-color);
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
collapse-tab css
|
||||
====================================*/
|
||||
.product-tab .collapse-tab button[aria-expanded="false"] {
|
||||
color: var(--heading-font-color);
|
||||
}
|
||||
.product-tab .collapse-tab button[aria-expanded="true"] {
|
||||
color: var(--primary-font-color);
|
||||
}
|
||||
.product-tab .collapse-tab button[aria-expanded="true"] span.tab-icon i::before {
|
||||
content: "\f1af";
|
||||
}
|
||||
|
||||
/*====================================
|
||||
vertical-tab css
|
||||
====================================*/
|
||||
.product-tab.vertical-tab .product-tab-nav ul.nav-tabs {
|
||||
margin-top: -16px;
|
||||
}
|
||||
.product-tab.vertical-tab .product-tab-nav ul.nav-tabs>* {
|
||||
margin-top: 16px;
|
||||
}
|
||||
.product-tab.vertical-tab .product-tab-nav ul.nav-tabs li a {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.product-tab.vertical-tab .product-tab-nav ul.nav-tabs li a span {
|
||||
color: var(--heading-font-color);
|
||||
border-bottom: 2px solid transparent;
|
||||
-webkit-transition: color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
.product-tab.vertical-tab .product-tab-nav ul.nav-tabs li a.active span {
|
||||
color: var(--primary-font-color);
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
.product-tab.vertical-tab .product-tab-nav ul.nav-tabs li a::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 1px;
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-tab-title css
|
||||
====================================*/
|
||||
.product-tab h6.product-tab-title span {
|
||||
border-bottom: 2px solid;
|
||||
}
|
||||
/************************************* product-detail-tab css end *************************************/
|
||||
|
||||
/************************************* product-detail-how-to-use css start *************************************/
|
||||
/*========================================
|
||||
product-detail-how-to-use css
|
||||
========================================*/
|
||||
.product-how-to-use-info ul {
|
||||
list-style-type: number;
|
||||
padding-left: 17px;
|
||||
}
|
||||
/************************************* product-detail-how-to-use css end *************************************/
|
||||
|
||||
/************************************* product-detail-key-ingredients css start *************************************/
|
||||
/*========================================
|
||||
product-detail-key-ingredients css
|
||||
========================================*/
|
||||
.product-key-ingredients-info ul {
|
||||
list-style-type: disc;
|
||||
padding-left: 17px;
|
||||
}
|
||||
/************************************* product-detail-key-ingredients css end *************************************/
|
||||
|
||||
/************************************* product-detail-review css start *************************************/
|
||||
/*====================================
|
||||
product-review css
|
||||
====================================*/
|
||||
.product-review .product-review-count span.product-review-stars {
|
||||
width: 30px;
|
||||
}
|
||||
.product-review .product-review-count span.product-review-progress {
|
||||
width: calc(100% - 100px);
|
||||
height: 5px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.product-review .product-review-count span.product-review-progress::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: var(--heading-font-color);
|
||||
z-index: -1;
|
||||
opacity: 0.2;
|
||||
}
|
||||
.product-review .product-review-count span.product-review-number {
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-review-form css
|
||||
====================================*/
|
||||
.product-review .product-review-form .product-review-ratting .product-ratting span.review-ratting span.review-star i {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-review-comment css
|
||||
====================================*/
|
||||
.product-review .product-review-comment .product-review-detail .product-reviewer-info span {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.product-review .product-review-comment .product-review-detail .product-reviewer-info span::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: var(--primary-font-color);
|
||||
opacity: 0.1;
|
||||
z-index: -1;
|
||||
}
|
||||
/************************************* product-detail-review css end *************************************/
|
||||
|
||||
/************************************* product-comparison css start *************************************/
|
||||
/*====================================
|
||||
product-comparison css
|
||||
====================================*/
|
||||
.product-comparison .product-compare-area {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.product-comparison .product-compare-area>* {
|
||||
overflow-x: auto;
|
||||
scrollbar-width: thin;
|
||||
-webkit-scrollbar-width: thin;
|
||||
}
|
||||
.product-comparison .product-compare-area>*::-webkit-scrollbar-track {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
.product-comparison .product-compare-area>*::-webkit-scrollbar-thumb {
|
||||
background-color: #c1c1c1;
|
||||
}
|
||||
.product-comparison .product-compare-area>*::-webkit-scrollbar-thumb:hover {
|
||||
background-color: var(--primary-font-color);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.product-comparison .product-compare-area>* {
|
||||
-webkit-scrollbar-width: unset;
|
||||
scrollbar-width: unset;
|
||||
max-width: unset;
|
||||
overflow-x: unset;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-compare-block-row css
|
||||
====================================*/
|
||||
.product-comparison .product-compare-area .product-compare-block .product-compare-block-row {
|
||||
width: calc(100% + 33.33%);
|
||||
}
|
||||
@media (min-width: 420px) {
|
||||
.product-comparison .product-compare-area .product-compare-block .product-compare-block-row {
|
||||
width: calc(100% + 0%);
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product-compare-col css
|
||||
====================================*/
|
||||
.product-comparison .product-compare-area .product-compare-block .product-compare-row .product-compare-col .flex-nowrap>* {
|
||||
position: relative;
|
||||
}
|
||||
.product-comparison .product-compare-area .product-compare-block .product-compare-row .product-compare-col .flex-nowrap>*::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 1px;
|
||||
background-color: rgba(var(--border-color),var(--border-opacity));
|
||||
}
|
||||
|
||||
/*====================================
|
||||
compare-modal css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.compare-modal .modal-dialog {
|
||||
max-width: 750px;
|
||||
}
|
||||
}
|
||||
|
||||
/* compare-product-results css */
|
||||
.compare-modal .compare-search .compare-product-results {
|
||||
max-height: 386px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
-webkit-scrollbar-width: thin;
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
.compare-modal .compare-search .compare-product-results::-webkit-scrollbar {
|
||||
width: 2px;
|
||||
}
|
||||
.compare-modal .compare-search .compare-product-results::-webkit-scrollbar-track {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
.compare-modal .compare-search .compare-product-results::-webkit-scrollbar-thumb {
|
||||
background-color: #c1c1c1;
|
||||
}
|
||||
.compare-modal .compare-search .compare-product-results::-webkit-scrollbar-thumb:hover {
|
||||
background-color: var(--primary-font-color);
|
||||
}
|
||||
|
||||
/* compare-product-label css */
|
||||
.compare-modal .compare-search .compare-product-results label.compare-product-label {
|
||||
display: block;
|
||||
position: relative;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
.compare-modal .compare-search .compare-product-results label.compare-product-label input.cust-checkbox {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
.compare-modal .compare-search .compare-product-results label.compare-product-label:hover .compare-product-content,
|
||||
.compare-modal .compare-search .compare-product-results label.compare-product-label input.cust-checkbox:checked ~ .compare-product-content {
|
||||
border-color: var(--primary-font-color);
|
||||
}
|
||||
/************************************* product-comparison css end *************************************/
|
||||
|
||||
/************************************* keyframes css start *************************************/
|
||||
/*====================================
|
||||
blinking keyframes css
|
||||
====================================*/
|
||||
.blinking {
|
||||
-webkit-animation: blinking 2s cubic-bezier(.4, 0, .6, 1) infinite;
|
||||
animation: blinking 2s cubic-bezier(.4, 0, .6, 1) infinite;
|
||||
}
|
||||
@-webkit-keyframes blinking {
|
||||
50% {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
@keyframes blinking {
|
||||
50% {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
/************************************* keyframes css end *************************************/
|
||||
|
|
@ -0,0 +1,286 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# newsletter-modal css
|
||||
# home-slider css
|
||||
# category-slider css
|
||||
# banner-area css
|
||||
# service css
|
||||
# deal-banner css
|
||||
# testimonial css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* newsletter-modal css start *************************************/
|
||||
/*====================================
|
||||
newsletter-modal css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap button {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* newsletter-modal css end *************************************/
|
||||
|
||||
/************************************* home-slider css start *************************************/
|
||||
/*====================================
|
||||
home-slider swiper css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-content css
|
||||
====================================*/
|
||||
.slider-content .home-slider h2 {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-content transition css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image span,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image a {
|
||||
opacity: 0;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image span,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
opacity: 1;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
-webkit-animation-name: fadeInUp;
|
||||
animation-name: fadeInUp;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image span {
|
||||
-webkit-animation-delay: 0.3s;
|
||||
animation-delay: 0.3s;
|
||||
-webkit-animation-duration: 0.3s;
|
||||
animation-duration: 0.3s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2 {
|
||||
-webkit-animation-delay: 0.6s;
|
||||
animation-delay: 0.6s;
|
||||
-webkit-animation-duration: 0.6s;
|
||||
animation-duration: 0.6s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
-webkit-animation-delay: 0.9s;
|
||||
animation-delay: 0.9s;
|
||||
-webkit-animation-duration: 0.9s;
|
||||
animation-duration: 0.9s;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-navigation css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button {
|
||||
color: var(--primary-font-color);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
-webkit-transition: color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover {
|
||||
color: var(--extra-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: var(--primary-font-color);
|
||||
z-index: -1;
|
||||
opacity: 0.1;
|
||||
-webkit-transition: opacity 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover::after {
|
||||
opacity: 1;
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 10px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1600px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 30px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-dot css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination {
|
||||
width: unset;
|
||||
position: unset;
|
||||
margin: -5px 0px 0px -5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: var(--primary-font-color);
|
||||
margin: 5px 0px 0px 5px;
|
||||
opacity: 0.1;
|
||||
border: 1px solid var(--primary-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet:hover,
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet.swiper-pagination-bullet-active {
|
||||
opacity: 1;
|
||||
}
|
||||
/************************************* home-slider css end *************************************/
|
||||
|
||||
/************************************* category-slider css start *************************************/
|
||||
/*====================================
|
||||
category-slider swiper css
|
||||
====================================*/
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 25%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 20%;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
cat-block css
|
||||
====================================*/
|
||||
.category-slider .cat-slider .cat-block a.cat-img span.cat-icon {
|
||||
transform: translate(-50%, calc(-50% + 5px));
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
-webkit-transition: transform 0.3s ease-in-out,opacity 0.3s ease-in-out,visibility 0.3s ease-in-out,brightness 0.3s ease-in-out;
|
||||
transition: transform 0.3s ease-in-out,opacity 0.3s ease-in-out,visibility 0.3s ease-in-out,brightness 0.3s ease-in-out;
|
||||
}
|
||||
.category-slider .cat-slider .cat-block:hover a.cat-img span.cat-icon {
|
||||
transform: translate(-50%, -50%);
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
.category-slider .cat-slider .cat-block a.cat-img img {
|
||||
-webkit-transform: translate(-5px, 5px) scale(1);
|
||||
transform: translate(-5px, 5px) scale(1);
|
||||
}
|
||||
.category-slider .cat-slider .cat-block:hover a.cat-img img {
|
||||
-webkit-transform: translate(0, 0) scale(1.1);
|
||||
transform: translate(0, 0) scale(1.1);
|
||||
-webkit-filter: brightness(0.80);
|
||||
filter: brightness(0.80);
|
||||
}
|
||||
/************************************* category-slider css end *************************************/
|
||||
|
||||
/************************************* banner-area css start *************************************/
|
||||
/*====================================
|
||||
banner-area css
|
||||
====================================*/
|
||||
@media (min-width: 992px) {
|
||||
.banner-area .banner-block img {
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
}
|
||||
}
|
||||
/************************************* banner-area css end *************************************/
|
||||
|
||||
/************************************* service css start *************************************/
|
||||
/*====================================
|
||||
service-content css
|
||||
====================================*/
|
||||
.service-area .service-content span.service-img {
|
||||
-webkit-transition: background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
transition: background-color 0.3s ease-in-out,border-color 0.3s ease-in-out;
|
||||
}
|
||||
.service-area .service-content:hover span.service-img {
|
||||
background-color: var(--primary-font-color);
|
||||
}
|
||||
.service-area .service-content span.service-img img {
|
||||
-webkit-transition: opacity 0.3s ease-in-out,visibility 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out,visibility 0.3s ease-in-out;
|
||||
}
|
||||
.service-area .service-content:hover span.service-img img.service-img1,
|
||||
.service-area .service-content span.service-img img.service-img2 {
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
.service-area .service-content:hover span.service-img img.service-img2 {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
/************************************* service css end *************************************/
|
||||
|
||||
/************************************* deal-banner css start *************************************/
|
||||
/*====================================
|
||||
deal-banner css
|
||||
====================================*/
|
||||
@media (min-width: 992px) {
|
||||
.deal-banner .banner-block img {
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
deal-timer css
|
||||
====================================*/
|
||||
.deal-banner .deal-timer ul>* {
|
||||
position: relative;
|
||||
}
|
||||
.deal-banner .deal-timer ul>*::before {
|
||||
content: ":";
|
||||
color: var(--body-font-color);
|
||||
font-size: 24px;
|
||||
position: absolute;
|
||||
left: -1.5px;
|
||||
top: 0;
|
||||
font-weight: var(--heading-font-weight);
|
||||
line-height: 1;
|
||||
}
|
||||
.deal-banner .deal-timer ul>*:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
/************************************* deal-banner css start *************************************/
|
||||
|
||||
/************************************* testimonial css start *************************************/
|
||||
/*====================================
|
||||
testimonial slider-swiper css
|
||||
====================================*/
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
/************************************* testimonial css end *************************************/
|
||||
|
|
@ -0,0 +1,300 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# newsletter-modal css
|
||||
# home-slider css
|
||||
# category-slider css
|
||||
# service css
|
||||
# home-about-product css
|
||||
# deal-area css
|
||||
# testimonial css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* newsletter-modal css start *************************************/
|
||||
/*====================================
|
||||
newsletter-modal css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap button {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* newsletter-modal css end *************************************/
|
||||
|
||||
/************************************* home-slider css start *************************************/
|
||||
/*====================================
|
||||
home-slider swiper css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-content transition css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image span,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image a {
|
||||
opacity: 0;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image span,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
opacity: 1;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
-webkit-animation-name: fadeInUp;
|
||||
animation-name: fadeInUp;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image span {
|
||||
-webkit-animation-delay: 0.3s;
|
||||
animation-delay: 0.3s;
|
||||
-webkit-animation-duration: 0.3s;
|
||||
animation-duration: 0.3s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2 {
|
||||
-webkit-animation-delay: 0.6s;
|
||||
animation-delay: 0.6s;
|
||||
-webkit-animation-duration: 0.6s;
|
||||
animation-duration: 0.6s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
-webkit-animation-delay: 0.9s;
|
||||
animation-delay: 0.9s;
|
||||
-webkit-animation-duration: 0.9s;
|
||||
animation-duration: 0.9s;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-navigation css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button {
|
||||
color: var(--secondary-font-color);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
-webkit-transition: color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover {
|
||||
color: var(--secondary-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: var(--extra-font-color);
|
||||
z-index: -1;
|
||||
opacity: 0.3;
|
||||
-webkit-transition: opacity 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover::after {
|
||||
opacity: 1;
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 10px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1600px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 30px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-dot css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination {
|
||||
width: unset;
|
||||
position: unset;
|
||||
margin: -5px 0px 0px -5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: var(--secondary-font-color);
|
||||
margin: 5px 0px 0px 5px;
|
||||
opacity: 0.1;
|
||||
border: 1px solid var(--secondary-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet:hover,
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet.swiper-pagination-bullet-active {
|
||||
opacity: 1;
|
||||
}
|
||||
/************************************* home-slider css end *************************************/
|
||||
|
||||
/************************************* category-slider css start *************************************/
|
||||
/*====================================
|
||||
category-slider swiper css
|
||||
====================================*/
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
/************************************* category-slider css end *************************************/
|
||||
|
||||
/************************************* service css start *************************************/
|
||||
/*====================================
|
||||
service-content css
|
||||
====================================*/
|
||||
.service-area .service-content span.service-img img {
|
||||
-webkit-transition: transform 0.3s ease-in-out;
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
.service-area .service-content:hover span.service-img img {
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
/************************************* service css end *************************************/
|
||||
|
||||
/************************************* home-about-product css start *************************************/
|
||||
/*====================================
|
||||
home-about-product css
|
||||
====================================*/
|
||||
.home-about-product .home-about-product-text ul {
|
||||
padding-top: 20px;
|
||||
margin-top: -20px;
|
||||
}
|
||||
.home-about-product .home-about-product-text ul>* {
|
||||
margin-top: 20px;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.home-about-product .home-about-product-text ul {
|
||||
padding-top: 50px;
|
||||
margin-top: -30px;
|
||||
}
|
||||
.home-about-product .home-about-product-text ul>* {
|
||||
margin-top: 30px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.home-about-product .home-about-product-text ul {
|
||||
padding-top: 100px;
|
||||
margin-top: -50px;
|
||||
}
|
||||
.home-about-product .home-about-product-text ul>* {
|
||||
margin-top: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
home-about-product-text css
|
||||
====================================*/
|
||||
.home-about-product .home-about-product-text ul li span.home-about-product-line {
|
||||
position: relative;
|
||||
height: 1px;
|
||||
z-index: 1;
|
||||
background-color: rgba(var(--border-color), var(--border-opacity));
|
||||
}
|
||||
.home-about-product .home-about-product-text ul li span.home-about-product-line::after {
|
||||
content: "\f3c1";
|
||||
font-family: remixicon;
|
||||
color: rgba(var(--border-color), 0.4);
|
||||
font-size: 8px;
|
||||
position: absolute;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
background-color: var(--extra-font-color);
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
z-index: 1;
|
||||
border: 1px solid rgba(var(--border-color), var(--border-opacity));
|
||||
border-radius: 50%;
|
||||
line-height: 1;
|
||||
}
|
||||
.home-about-product .home-about-product-text ul.home-about-product-ul-left li span.home-about-product-line::after,
|
||||
.home-about-product .home-about-product-text ul.home-about-product-ul-right li span.home-about-product-line::after {
|
||||
left: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.home-about-product .home-about-product-text ul.home-about-product-ul-left li span.home-about-product-line::after {
|
||||
left: 100%;
|
||||
}
|
||||
.home-about-product .home-about-product-text ul.home-about-product-ul-right li span.home-about-product-line::after {
|
||||
left: auto;
|
||||
right: 100%;
|
||||
}
|
||||
}
|
||||
/************************************* home-about-product css end *************************************/
|
||||
|
||||
/************************************* deal-area css start *************************************/
|
||||
/*====================================
|
||||
deal-area css
|
||||
====================================*/
|
||||
.deal-area .deal-timer ul>* {
|
||||
position: relative;
|
||||
}
|
||||
.deal-area .deal-timer ul>*::before {
|
||||
content: ":";
|
||||
color: var(--heading-font-color);
|
||||
font-size: 24px;
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
left: -2px;
|
||||
font-weight: var(--heading-font-weight);
|
||||
line-height: 1;
|
||||
}
|
||||
.deal-area .deal-timer ul>*:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.deal-area .deal-timer ul>*::before {
|
||||
top: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
product slider-swiper css
|
||||
====================================*/
|
||||
.collection-wrap #deal-product-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.collection-wrap #deal-product-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.collection-wrap #deal-product-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
/************************************* deal-area css start *************************************/
|
||||
|
||||
/************************************* testimonial css start *************************************/
|
||||
/*====================================
|
||||
testimonial slider-swiper css
|
||||
====================================*/
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
testi-content css
|
||||
====================================*/
|
||||
@media (min-width: 1200px) {
|
||||
.testimonial .testi-slider .testi-content p {
|
||||
line-height: 30px;
|
||||
}
|
||||
}
|
||||
/************************************* testimonial css end *************************************/
|
||||
|
|
@ -0,0 +1,293 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# newsletter-modal css
|
||||
# offer-text css
|
||||
# home-slider css
|
||||
# category-slider css
|
||||
# service css
|
||||
# testimonial css
|
||||
# newsletter-area css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* newsletter-modal css start *************************************/
|
||||
/*====================================
|
||||
newsletter-modal css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap button {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* newsletter-modal css end *************************************/
|
||||
|
||||
/************************************* offer-text css start *************************************/
|
||||
/*====================================
|
||||
offer-text css
|
||||
====================================*/
|
||||
.offer-text a {
|
||||
-webkit-transition: opacity 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
.offer-text a:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
offer-text-marquee css
|
||||
====================================*/
|
||||
.offer-text .offer-text-marquee .offer-text-marquee-row {
|
||||
-webkit-animation: slide-left 20s linear infinite;
|
||||
animation: slide-left 20s linear infinite;
|
||||
}
|
||||
.offer-text:hover .offer-text-marquee .offer-text-marquee-row,
|
||||
.offer-text:focus .offer-text-marquee .offer-text-marquee-row {
|
||||
-webkit-animation-play-state: paused;
|
||||
animation-play-state: paused
|
||||
}
|
||||
/************************************* offer-text css end *************************************/
|
||||
|
||||
/************************************* home-slider css start *************************************/
|
||||
/*====================================
|
||||
home-slider swiper css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-content css
|
||||
====================================*/
|
||||
.slider-content .home-slider h2 {
|
||||
line-height: 1.06;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-content transition css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image a {
|
||||
opacity: 0;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
opacity: 1;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
-webkit-animation-name: fadeInUp;
|
||||
animation-name: fadeInUp;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2 {
|
||||
-webkit-animation-delay: 0.3s;
|
||||
animation-delay: 0.3s;
|
||||
-webkit-animation-duration: 0.3s;
|
||||
animation-duration: 0.3s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
-webkit-animation-delay: 0.6s;
|
||||
animation-delay: 0.6s;
|
||||
-webkit-animation-duration: 0.6s;
|
||||
animation-duration: 0.6s;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-navigation css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button {
|
||||
color: var(--primary-font-color);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
-webkit-transition: color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover {
|
||||
color: var(--extra-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: var(--primary-font-color);
|
||||
z-index: -1;
|
||||
opacity: 0.1;
|
||||
-webkit-transition: opacity 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover::after {
|
||||
opacity: 1;
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 10px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1600px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 30px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-dot css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination {
|
||||
width: unset;
|
||||
position: unset;
|
||||
margin: -5px 0px 0px -5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: var(--primary-font-color);
|
||||
margin: 5px 0px 0px 5px;
|
||||
opacity: 0.1;
|
||||
border: 1px solid var(--primary-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet:hover,
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet.swiper-pagination-bullet-active {
|
||||
opacity: 1;
|
||||
}
|
||||
/************************************* home-slider css end *************************************/
|
||||
|
||||
/************************************* category-slider css start *************************************/
|
||||
/*====================================
|
||||
category-slider swiper css
|
||||
====================================*/
|
||||
.category-slider .cat-wrap {
|
||||
margin: 0px -7.5px;
|
||||
}
|
||||
.category-slider .cat-wrap .cat-slider.swiper {
|
||||
padding: 0px 7.5px;
|
||||
}
|
||||
.category-slider .cat-wrap .cat-slider.swiper .swiper-slide {
|
||||
padding: 15px 0px;
|
||||
}
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.category-slider .cat-wrap {
|
||||
margin: 0px -15px;
|
||||
}
|
||||
.category-slider .cat-wrap .cat-slider.swiper {
|
||||
padding: 0px 15px;
|
||||
}
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
cat-block css
|
||||
====================================*/
|
||||
.category-slider .cat-slider .cat-block .cat-content span.cat-bgimg {
|
||||
width: 136px;
|
||||
}
|
||||
.category-slider .cat-slider .cat-block .cat-content span.cat-img {
|
||||
width: 160px;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.category-slider .cat-slider .cat-block .cat-content span.cat-bgimg {
|
||||
width: 168px;
|
||||
}
|
||||
.category-slider .cat-slider .cat-block .cat-content span.cat-img {
|
||||
width: 184px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.category-slider .cat-slider .cat-block .cat-content span.cat-bgimg {
|
||||
width: 184px;
|
||||
}
|
||||
.category-slider .cat-slider .cat-block .cat-content span.cat-img {
|
||||
width: 224px;
|
||||
}
|
||||
}
|
||||
/************************************* category-slider css end *************************************/
|
||||
|
||||
/************************************* service css start *************************************/
|
||||
/*====================================
|
||||
service-content css
|
||||
====================================*/
|
||||
.service-area .service-content span.service-img img {
|
||||
-webkit-transition: transform 0.3s ease-in-out;
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
.service-area .service-content:hover span.service-img img {
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
/************************************* service css end *************************************/
|
||||
|
||||
/************************************* testimonial css start *************************************/
|
||||
/*====================================
|
||||
testimonial slider-swiper css
|
||||
====================================*/
|
||||
.testimonial .testi-wrap {
|
||||
margin: 0px -7.5px;
|
||||
}
|
||||
.testimonial .testi-wrap .testi-slider.swiper {
|
||||
padding: 0px 7.5px;
|
||||
}
|
||||
.testimonial .testi-wrap .testi-slider.swiper .swiper-slide {
|
||||
padding: 15px 0px;
|
||||
}
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.testimonial .testi-wrap {
|
||||
margin: 0px -15px;
|
||||
}
|
||||
.testimonial .testi-wrap .testi-slider.swiper {
|
||||
padding: 0px 15px;
|
||||
}
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
/************************************* testimonial css end *************************************/
|
||||
|
||||
/************************************* newsletter-area css start *************************************/
|
||||
/*====================================
|
||||
newsletter-title css
|
||||
====================================*/
|
||||
.newsletter-area .newsletter-form .section-capture .section-title h2.section-heading {
|
||||
color: var(--primary-font-color);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
newsletter-form css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.newsletter-area .newsletter-form form.news-form .news-wrap input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.newsletter-area .newsletter-form form.news-form .news-wrap button {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* newsletter-area css end *************************************/
|
||||
|
|
@ -0,0 +1,296 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# newsletter-modal css
|
||||
# home-slider css
|
||||
# category-slider css
|
||||
# banner-area css
|
||||
# testimonial css
|
||||
# brand-logo css
|
||||
# deal-area css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* newsletter-modal css start *************************************/
|
||||
/*====================================
|
||||
newsletter-modal css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap button {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* newsletter-modal css end *************************************/
|
||||
|
||||
/************************************* home-slider css start *************************************/
|
||||
/*====================================
|
||||
home-slider swiper css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-content transition css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image span,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image a {
|
||||
opacity: 0;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image span,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
opacity: 1;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
-webkit-animation-name: fadeInUp;
|
||||
animation-name: fadeInUp;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image span {
|
||||
-webkit-animation-delay: 0.3s;
|
||||
animation-delay: 0.3s;
|
||||
-webkit-animation-duration: 0.3s;
|
||||
animation-duration: 0.3s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2 {
|
||||
-webkit-animation-delay: 0.6s;
|
||||
animation-delay: 0.6s;
|
||||
-webkit-animation-duration: 0.6s;
|
||||
animation-duration: 0.6s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
-webkit-animation-delay: 0.9s;
|
||||
animation-delay: 0.9s;
|
||||
-webkit-animation-duration: 0.9s;
|
||||
animation-duration: 0.9s;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-navigation css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button {
|
||||
color: var(--primary-font-color);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
-webkit-transition: color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover {
|
||||
color: var(--extra-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: var(--primary-font-color);
|
||||
z-index: -1;
|
||||
opacity: 0.1;
|
||||
-webkit-transition: opacity 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover::after {
|
||||
opacity: 1;
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 10px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1600px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 30px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-dot css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination {
|
||||
width: unset;
|
||||
position: unset;
|
||||
margin: -5px 0px 0px -5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: var(--primary-font-color);
|
||||
margin: 5px 0px 0px 5px;
|
||||
opacity: 0.1;
|
||||
border: 1px solid var(--primary-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet:hover,
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet.swiper-pagination-bullet-active {
|
||||
opacity: 1;
|
||||
}
|
||||
/************************************* home-slider css end *************************************/
|
||||
|
||||
/************************************* category-slider css start *************************************/
|
||||
/*====================================
|
||||
category-slider swiper css
|
||||
====================================*/
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
cat-block css
|
||||
====================================*/
|
||||
.category-slider .cat-slider .cat-block a.cat-img .cat-content {
|
||||
-webkit-transition: background-color 0.3s ease-in-out;
|
||||
transition: background-color 0.3s ease-in-out;
|
||||
}
|
||||
.category-slider .cat-slider .cat-block:hover a.cat-img .cat-content {
|
||||
background-color: var(--primary-font-color);
|
||||
}
|
||||
.category-slider .cat-slider .cat-block a.cat-img .cat-content h6,
|
||||
.category-slider .cat-slider .cat-block a.cat-img .cat-content span {
|
||||
-webkit-transition: color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out;
|
||||
}
|
||||
.category-slider .cat-slider .cat-block:hover a.cat-img .cat-content h6,
|
||||
.category-slider .cat-slider .cat-block:hover a.cat-img .cat-content span {
|
||||
color: var(--extra-font-color);
|
||||
}
|
||||
/************************************* category-slider css end *************************************/
|
||||
|
||||
/************************************* banner-area css start *************************************/
|
||||
/*====================================
|
||||
banner-area css
|
||||
====================================*/
|
||||
.banner-area .banner-block a.banner-img .banner-content {
|
||||
z-index: 1;
|
||||
}
|
||||
.banner-area .banner-block a.banner-img img {
|
||||
-webkit-filter: brightness(0.60);
|
||||
filter: brightness(0.60);
|
||||
}
|
||||
.banner-area .banner-block a.banner-img .banner-content::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: #000000;
|
||||
opacity: 0.6;
|
||||
z-index: -1;
|
||||
}
|
||||
/************************************* banner-area css end *************************************/
|
||||
|
||||
/************************************* testimonial css start *************************************/
|
||||
/*====================================
|
||||
testimonial slider-swiper css
|
||||
====================================*/
|
||||
.testimonial .testi-wrap {
|
||||
margin: 0px -7.5px;
|
||||
}
|
||||
.testimonial .testi-wrap .testi-slider.swiper {
|
||||
padding: 0px 7.5px;
|
||||
}
|
||||
.testimonial .testi-wrap .testi-slider.swiper .swiper-slide {
|
||||
padding: 15px 0px;
|
||||
}
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.testimonial .testi-wrap {
|
||||
margin: 0px -15px;
|
||||
}
|
||||
.testimonial .testi-wrap .testi-slider.swiper {
|
||||
padding: 0px 15px;
|
||||
}
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
/************************************* testimonial css end *************************************/
|
||||
|
||||
/************************************* brand-logo css start *************************************/
|
||||
/*====================================
|
||||
brand-logo swiper css
|
||||
====================================*/
|
||||
.brand-logo .brand-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.brand-logo .brand-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.brand-logo .brand-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 25%;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
brand-content css
|
||||
====================================*/
|
||||
@media (min-width: 1200px) {
|
||||
.brand-logo .brand-slider .brand-content span.brand-img img {
|
||||
-webkit-filter: opacity(0.3) grayscale(1);
|
||||
filter: opacity(0.3) grayscale(1);
|
||||
-webkit-transition: filter 0.3s ease-in-out;
|
||||
transition: filter 0.3s ease-in-out;
|
||||
}
|
||||
.brand-logo .brand-slider .brand-content:hover span.brand-img img {
|
||||
-webkit-filter: opacity(1) grayscale(0);
|
||||
filter: opacity(1) grayscale(0);
|
||||
}
|
||||
}
|
||||
/************************************* brand-logo css end *************************************/
|
||||
|
||||
/************************************* deal-area css start *************************************/
|
||||
/*====================================
|
||||
deal-area css
|
||||
====================================*/
|
||||
.deal-area .deal-timer ul>* {
|
||||
position: relative;
|
||||
}
|
||||
.deal-area .deal-timer ul>*::before {
|
||||
content: ":";
|
||||
color: var(--heading-font-color);
|
||||
font-size: 24px;
|
||||
position: absolute;
|
||||
top: -1px;
|
||||
left: -2px;
|
||||
font-weight: var(--heading-font-weight);
|
||||
line-height: 1;
|
||||
}
|
||||
.deal-area .deal-timer ul>*:first-child::before {
|
||||
display: none;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.deal-area .deal-timer ul>*::before {
|
||||
top: 7px;
|
||||
}
|
||||
}
|
||||
/************************************* deal-area css start *************************************/
|
||||
|
|
@ -0,0 +1,253 @@
|
|||
/*----------------------------------[Table of contents]----------------------------------
|
||||
# newsletter-modal css
|
||||
# home-slider css
|
||||
# category-slider css
|
||||
# deal-area css
|
||||
# service css
|
||||
# testimonial css
|
||||
---------------------------------------------------------------------------------------*/
|
||||
|
||||
/************************************* newsletter-modal css start *************************************/
|
||||
/*====================================
|
||||
newsletter-modal css
|
||||
====================================*/
|
||||
@media (min-width: 768px) {
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap input {
|
||||
border-radius: var(--border-radius) 0px 0px var(--border-radius);
|
||||
}
|
||||
.newsletter-modal .newsletter-info .newsletter-content .newsletter-form .news-wrap button {
|
||||
border-radius: 0px var(--border-radius) var(--border-radius) 0px;
|
||||
}
|
||||
}
|
||||
/************************************* newsletter-modal css end *************************************/
|
||||
|
||||
/************************************* home-slider css start *************************************/
|
||||
/*====================================
|
||||
home-slider swiper css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-image css
|
||||
====================================*/
|
||||
.slider-content .home-slider .slider-image .slide-img img {
|
||||
-webkit-filter: brightness(0.40);
|
||||
filter: brightness(0.40);
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-content css
|
||||
====================================*/
|
||||
.slider-content .home-slider h2 {
|
||||
line-height: 1.125;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-content transition css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image span,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide .slider-image a {
|
||||
opacity: 0;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image span,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2,
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
opacity: 1;
|
||||
-webkit-animation-fill-mode: both;
|
||||
animation-fill-mode: both;
|
||||
-webkit-animation-name: fadeInUp;
|
||||
animation-name: fadeInUp;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image span {
|
||||
-webkit-animation-delay: 0.3s;
|
||||
animation-delay: 0.3s;
|
||||
-webkit-animation-duration: 0.3s;
|
||||
animation-duration: 0.3s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image h2 {
|
||||
-webkit-animation-delay: 0.6s;
|
||||
animation-delay: 0.6s;
|
||||
-webkit-animation-duration: 0.6s;
|
||||
animation-duration: 0.6s;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-slide.swiper-slide-active .slider-image a {
|
||||
-webkit-animation-delay: 0.9s;
|
||||
animation-delay: 0.9s;
|
||||
-webkit-animation-duration: 0.9s;
|
||||
animation-duration: 0.9s;
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-navigation css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button {
|
||||
color: var(--extra-font-color);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
-webkit-transition: color 0.3s ease-in-out;
|
||||
transition: color 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover {
|
||||
color: var(--primary-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: var(--extra-font-color);
|
||||
z-index: -1;
|
||||
opacity: 0.1;
|
||||
-webkit-transition: opacity 0.3s ease-in-out;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button:hover::after {
|
||||
opacity: 1;
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 10px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1600px) {
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-prev {
|
||||
left: 30px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-buttons .swiper-buttons-wrap button.swiper-next {
|
||||
right: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
slider-dot css
|
||||
====================================*/
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination {
|
||||
width: unset;
|
||||
position: unset;
|
||||
margin: -5px 0px 0px -5px;
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-color: var(--extra-font-color);
|
||||
margin: 5px 0px 0px 5px;
|
||||
opacity: 0.3;
|
||||
border: 1px solid var(--extra-font-color);
|
||||
}
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet:hover,
|
||||
.slider-content .home-slider.swiper .swiper-dots .swiper-pagination span.swiper-pagination-bullet.swiper-pagination-bullet-active {
|
||||
opacity: 1;
|
||||
}
|
||||
/************************************* home-slider css end *************************************/
|
||||
|
||||
/************************************* category-slider css start *************************************/
|
||||
/*====================================
|
||||
category-slider swiper css
|
||||
====================================*/
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.category-slider .cat-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
cat-block css
|
||||
====================================*/
|
||||
.category-slider .cat-slider .cat-block a.cat-img img {
|
||||
-webkit-clip-path: polygon(60.41% 0, 100% 0, 100% 100%, 33.33% 100%);
|
||||
clip-path: polygon(60.41% 0, 100% 0, 100% 100%, 33.33% 100%);
|
||||
}
|
||||
/************************************* category-slider css end *************************************/
|
||||
|
||||
/************************************* deal-area css start *************************************/
|
||||
/*====================================
|
||||
deal-area css
|
||||
====================================*/
|
||||
.deal-area {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.deal-area::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: #000000;
|
||||
z-index: -1;
|
||||
opacity: 0.6;
|
||||
}
|
||||
/************************************* deal-area css end *************************************/
|
||||
|
||||
/************************************* service css start *************************************/
|
||||
/*====================================
|
||||
service-content css
|
||||
====================================*/
|
||||
.service-area .service-content span.service-img img {
|
||||
-webkit-transition: transform 0.3s ease-in-out;
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
.service-area .service-content:hover span.service-img img {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
/************************************* service css end *************************************/
|
||||
|
||||
/************************************* testimonial css start *************************************/
|
||||
/*====================================
|
||||
testimonial slider-swiper css
|
||||
====================================*/
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 100%;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.testimonial .testi-slider.swiper:not(.swiper-initialized) .swiper-slide:not([style]) {
|
||||
width: 33.33%;
|
||||
}
|
||||
}
|
||||
|
||||
/*====================================
|
||||
testimonial content css
|
||||
====================================*/
|
||||
.testimonial .testi-slider .testi-content span.testi-img {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
.testimonial .testi-slider .testi-content span.testi-img::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
border: 1px solid rgba(var(--border-color), var(--border-opacity));
|
||||
border-radius: var(--border-radius2);
|
||||
transform: translateY(5px);
|
||||
z-index: -1;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.testimonial .testi-slider .testi-content span.testi-img::after {
|
||||
transform: translateX(5px);
|
||||
}
|
||||
}
|
||||
/************************************* testimonial css end *************************************/
|
||||
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 478 B |
|
After Width: | Height: | Size: 478 B |
|
After Width: | Height: | Size: 478 B |
|
After Width: | Height: | Size: 478 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 837 B |
|
After Width: | Height: | Size: 837 B |
|
After Width: | Height: | Size: 837 B |
|
After Width: | Height: | Size: 837 B |
|
After Width: | Height: | Size: 837 B |
|
After Width: | Height: | Size: 837 B |
|
After Width: | Height: | Size: 837 B |
|
After Width: | Height: | Size: 837 B |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 498 B |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 193 B |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 655 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 193 B |
|
After Width: | Height: | Size: 751 B |
|
After Width: | Height: | Size: 607 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.7 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 914 B |
|
After Width: | Height: | Size: 914 B |
|
After Width: | Height: | Size: 914 B |
|
After Width: | Height: | Size: 914 B |
|
After Width: | Height: | Size: 914 B |
|
After Width: | Height: | Size: 832 B |
|
After Width: | Height: | Size: 193 B |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 607 B |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 193 B |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 607 B |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 193 B |
|
After Width: | Height: | Size: 624 B |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 624 B |
|
After Width: | Height: | Size: 597 B |
|
After Width: | Height: | Size: 597 B |
|
After Width: | Height: | Size: 597 B |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 478 B |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 219 B |
|
After Width: | Height: | Size: 219 B |
|
After Width: | Height: | Size: 219 B |
|
After Width: | Height: | Size: 219 B |
|
After Width: | Height: | Size: 219 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 245 B |
|
After Width: | Height: | Size: 245 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 245 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 245 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 434 B |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
|
@ -0,0 +1,182 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>Beluxe - Beauty & Cosmetics eCommerce HTML5 Template</title>
|
||||
<meta name="description" content="Beluxe is a modern HTML5 beauty eCommerce template built with Bootstrap 5, ideal for cosmetics, skincare, makeup, and salon online stores.">
|
||||
<meta name="keywords" content="beauty eCommerce template, cosmetics store HTML, skincare shop, makeup online store, Bootstrap 5 beauty theme, responsive beauty website">
|
||||
<meta name="author" content="spacingtech_webify">
|
||||
<!-- favicon -->
|
||||
<link rel="shortcut icon" type="image/favicon" href="assets/image/index/favicon.png">
|
||||
<!-- plugin css -->
|
||||
<link rel="stylesheet" type="text/css" href="assets/css/plugin.css">
|
||||
<!-- theme css -->
|
||||
<link rel="stylesheet" type="text/css" href="assets/css/theme.css">
|
||||
<!-- other css -->
|
||||
<link rel="stylesheet" type="text/css" href="assets/css/other.css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- preloader start -->
|
||||
<div class="preloader position-fixed top-0 start-0 w-100 h-100 body-bg z-index-5">
|
||||
<div class="loader-img position-absolute top-0 start-0 w-100 h-100 d-flex align-items-center justify-content-center">
|
||||
<img src="assets/image/index/logo.png" class="width-88 width-xl-120 img-fluid" alt="logo">
|
||||
</div>
|
||||
</div>
|
||||
<!-- preloader end -->
|
||||
<main id="main">
|
||||
<!-- coming-content start -->
|
||||
<section class="coming-content">
|
||||
<div class="d-lg-none" data-animate="animate__fadeIn">
|
||||
<img src="assets/image/other/coming-soon-mobile.jpg" class="w-100 img-fluid" alt="coming-soon-mobile">
|
||||
</div>
|
||||
<div class="container d-lg-none section-ptb">
|
||||
<div class="col-12 col-md-10 mx-md-auto text-center">
|
||||
<div class="coming-theme-logo section-capture" data-animate="animate__fadeIn">
|
||||
<a href="index.html" class="d-block theme-logo">
|
||||
<img src="assets/image/index/logo.png" class="width-88 width-xl-120 img-fluid" alt="logo">
|
||||
</a>
|
||||
</div>
|
||||
<div class="row row-mtm">
|
||||
<h2 class="font-24 font-sm-32 font-xl-40 lh-1" data-animate="animate__fadeIn">We are coming soon!</h2>
|
||||
<div class="coming-timer countdown" data-time="2027/12/31 00:00:00">
|
||||
<div class="row row-mtm15">
|
||||
<div class="col-3" data-animate="animate__fadeIn">
|
||||
<div class="coming-timer-content position-relative pbp-100">
|
||||
<span class="day primary-color font-20 font-sm-24 position-absolute top-0 end-0 bottom-0 start-0 ptb-5 plr-5 d-flex flex-column align-items-center justify-content-center extra-bg heading-weight rounded-circle"></span>
|
||||
</div>
|
||||
<span class="d-inline-block heading-color mst-15 text-uppercase">Day</span>
|
||||
</div>
|
||||
<div class="col-3" data-animate="animate__fadeIn">
|
||||
<div class="coming-timer-content position-relative pbp-100">
|
||||
<span class="hrs primary-color font-20 font-sm-24 position-absolute top-0 end-0 bottom-0 start-0 ptb-5 plr-5 d-flex flex-column align-items-center justify-content-center extra-bg heading-weight rounded-circle"></span>
|
||||
</div>
|
||||
<span class="d-inline-block heading-color mst-15 text-uppercase">Hrs</span>
|
||||
</div>
|
||||
<div class="col-3" data-animate="animate__fadeIn">
|
||||
<div class="coming-timer-content position-relative pbp-100">
|
||||
<span class="min primary-color font-20 font-sm-24 position-absolute top-0 end-0 bottom-0 start-0 ptb-5 plr-5 d-flex flex-column align-items-center justify-content-center extra-bg heading-weight rounded-circle"></span>
|
||||
</div>
|
||||
<span class="d-inline-block heading-color mst-15 text-uppercase">Min</span>
|
||||
</div>
|
||||
<div class="col-3" data-animate="animate__fadeIn">
|
||||
<div class="coming-timer-content position-relative pbp-100">
|
||||
<span class="sec primary-color font-20 font-sm-24 position-absolute top-0 end-0 bottom-0 start-0 ptb-5 plr-5 d-flex flex-column align-items-center justify-content-center extra-bg heading-weight rounded-circle"></span>
|
||||
</div>
|
||||
<span class="d-inline-block heading-color mst-15 text-uppercase">Sec</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="coming-news">
|
||||
<p class="font-16 meb-13" data-animate="animate__fadeIn">Be the first, To know when we launch. Promotions, new products and sales. Directly to your inbox.</p>
|
||||
<form method="post" class="coming-form" data-animate="animate__fadeIn">
|
||||
<div class="coming-wrap d-md-flex">
|
||||
<input type="email" id="coming-email-mobile" name="coming-email-mobile" class="coming-notify-input width-100 height-md-auto text-center text-md-start" placeholder="Enter your email" required>
|
||||
<button type="submit" class="coming-btn coming-notify-btn width-100 width-md-auto btn-style secondary-btn mst-15 mst-md-0 text-nowrap">Notify me</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="coming-social">
|
||||
<ul class="social-ul justify-content-center ul-mt30">
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-facebook-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-instagram-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-pinterest-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-twitter-x-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-youtube-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-none d-lg-flex flex-lg-wrap flex-lg-row-reverse">
|
||||
<div class="col-12 col-lg-6 bg-img fullscreen" data-bgimg="assets/image/other/coming-soon.jpg" data-animate="animate__fadeIn"></div>
|
||||
<div class="col-12 col-lg-6 d-flex flex-column align-items-start justify-content-center section-ptb plr-30 fullscreen2">
|
||||
<div class="coming-desktop col-xl-11 col-xxl-9 mx-xl-auto">
|
||||
<div class="coming-theme-logo section-capture" data-animate="animate__fadeIn">
|
||||
<a href="index.html" class="d-block theme-logo">
|
||||
<img src="assets/image/index/logo.png" class="width-88 width-xl-144 img-fluid" alt="logo">
|
||||
</a>
|
||||
</div>
|
||||
<div class="row row-mtm">
|
||||
<h2 class="font-24 font-sm-32 font-xl-40 lh-1" data-animate="animate__fadeIn">We are coming soon!</h2>
|
||||
<div class="coming-timer text-center countdown" data-time="2027/12/31 00:00:00">
|
||||
<div class="row row-mtm15">
|
||||
<div class="col-3" data-animate="animate__fadeIn">
|
||||
<div class="coming-timer-content position-relative pbp-100">
|
||||
<span class="day primary-color font-20 font-sm-24 position-absolute top-0 end-0 bottom-0 start-0 ptb-5 plr-5 d-flex flex-column align-items-center justify-content-center extra-bg heading-weight rounded-circle"></span>
|
||||
</div>
|
||||
<span class="d-inline-block mst-16 text-uppercase">Day</span>
|
||||
</div>
|
||||
<div class="col-3" data-animate="animate__fadeIn">
|
||||
<div class="coming-timer-content position-relative pbp-100">
|
||||
<span class="hrs primary-color font-20 font-sm-24 position-absolute top-0 end-0 bottom-0 start-0 ptb-5 plr-5 d-flex flex-column align-items-center justify-content-center extra-bg heading-weight rounded-circle"></span>
|
||||
</div>
|
||||
<span class="d-inline-block mst-16 text-uppercase">Hrs</span>
|
||||
</div>
|
||||
<div class="col-3" data-animate="animate__fadeIn">
|
||||
<div class="coming-timer-content position-relative pbp-100">
|
||||
<span class="min primary-color font-20 font-sm-24 position-absolute top-0 end-0 bottom-0 start-0 ptb-5 plr-5 d-flex flex-column align-items-center justify-content-center extra-bg heading-weight rounded-circle"></span>
|
||||
</div>
|
||||
<span class="d-inline-block mst-16 text-uppercase">Min</span>
|
||||
</div>
|
||||
<div class="col-3" data-animate="animate__fadeIn">
|
||||
<div class="coming-timer-content position-relative pbp-100">
|
||||
<span class="sec primary-color font-20 font-sm-24 position-absolute top-0 end-0 bottom-0 start-0 ptb-5 plr-5 d-flex flex-column align-items-center justify-content-center extra-bg heading-weight rounded-circle"></span>
|
||||
</div>
|
||||
<span class="d-inline-block mst-16 text-uppercase">Sec</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="coming-news">
|
||||
<p class="font-16 meb-13" data-animate="animate__fadeIn">Be the first, To know when we launch. Promotions, new products and sales. Directly to your inbox.</p>
|
||||
<form method="post" class="coming-form" data-animate="animate__fadeIn">
|
||||
<div class="coming-wrap d-md-flex">
|
||||
<input type="email" id="coming-email" name="coming-email" class="coming-notify-input width-100 height-md-auto text-center text-md-start" placeholder="Enter your email" required>
|
||||
<button type="submit" class="coming-btn coming-notify-btn width-100 width-md-auto btn-style secondary-btn mst-15 mst-md-0 text-nowrap">Notify me</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="coming-social">
|
||||
<ul class="social-ul ul-mt30">
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-facebook-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-instagram-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-pinterest-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-twitter-x-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
<li class="social-li" data-animate="animate__fadeIn">
|
||||
<a href="javascript:void(0)" class="d-block body-primary-color icon-16" aria-label="Social link"><i class="ri-youtube-fill d-block lh-1"></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- coming-content end -->
|
||||
</main>
|
||||
<!-- main end -->
|
||||
<!-- plugin js -->
|
||||
<script src="assets/js/plugin.js"></script>
|
||||
<!-- theme js -->
|
||||
<script src="assets/js/theme.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
/*----------------------------------------------------------------------------------*/
|
||||
/* AFTER UPDATE DATA MOVED UNDER UPDATE BLOCK */
|
||||
/* LATEST QUERY AT THE BOTTOM - SO THAT ON SITE */
|
||||
/* UPDATE ALL CAN BE EXECUTED AT ONCE */
|
||||
/* ↓↓↓↓↓↓ NEXT UPDATE GOES HERE BELOW ↓↓↓↓↓↓ */
|
||||
/*----------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------------*/
|
||||
/* ↑↑↑ UPDATE END ↑↑↑ */
|
||||
/*----------------------------------------------------------------------------------*/
|
||||
|
||||
|
|
@ -0,0 +1,625 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests;
|
||||
|
||||
use BRSystems\Core\Library\cCoreSystem\cCoreSystem;
|
||||
use BRSystems\Core\Library\cDb\cDb;
|
||||
use BRSystems\Core\Library\cDefuseCrypto\cDefuseCrypto;
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use BRSystems\Core\Library\cINI\cINI;
|
||||
use BRSystems\Core\Library\cUrl\cUrl;
|
||||
use Exception;
|
||||
use Http\Client\Curl\Client;
|
||||
use MyCLabs\Enum\Enum;
|
||||
use Nyholm\Psr7\Factory\Psr17Factory;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use BRSystems\Core\App\pubUsers\pubUsers;
|
||||
use BRSystems\Core\App\pubUsers\inc\pubUsersController;
|
||||
use ReflectionClass;
|
||||
use rpkamp\Mailhog\MailhogClient;
|
||||
use rpkamp\Mailhog\Message\Contact;
|
||||
use rpkamp\Mailhog\Message\Message;
|
||||
use rpkamp\Mailhog\NoSuchMessageException;
|
||||
use BRSystems\Core\Sys\sysUsers\sysUsers;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteMap;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
/**
|
||||
* @method static DbTitleEnum E_ELIXIR()
|
||||
*/
|
||||
final class DbTitleEnum extends Enum
|
||||
{
|
||||
private const E_ELIXIR = 'elixir';
|
||||
}
|
||||
|
||||
abstract class BasePhpUnitCase extends TestCase
|
||||
{
|
||||
/**
|
||||
* @var cDb
|
||||
*/
|
||||
protected cDb $cDb;
|
||||
|
||||
/**
|
||||
* @var String - Mysql DB title
|
||||
*/
|
||||
protected string $mysqlName = 'maison_alexandra_lv';
|
||||
|
||||
/**
|
||||
* @var String - Mysql connection user
|
||||
*/
|
||||
protected string $mysqlUser = 'dAccGlobal';
|
||||
|
||||
/**
|
||||
* @var String - Mysql connection user password
|
||||
*/
|
||||
protected string $mysqlPass = 'dAccGlobal12!@';
|
||||
|
||||
/**
|
||||
* @var String - Mysql connection host
|
||||
*/
|
||||
protected string $mysqlHost = 'maisonalexandra_mysql';
|
||||
|
||||
/**
|
||||
* @var String - Mysql connection port
|
||||
*/
|
||||
protected string $mysqlPort = '3306';
|
||||
|
||||
/**
|
||||
* @var Int - Mail send delay timeout
|
||||
*/
|
||||
protected int $mailSendTimeout = 14;
|
||||
|
||||
/**
|
||||
* @var Int - Server port
|
||||
*/
|
||||
protected int $serverPort = 80;
|
||||
|
||||
/**
|
||||
* @var bool - Unit test case
|
||||
*/
|
||||
protected bool $unitTestsAreRunning = false;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected string $mailHogAPIRequestUrl = 'http://maisonalexandra_mailhog:8025/';
|
||||
|
||||
protected pubUsers $pubUser;
|
||||
protected sysUsers $cmsUser;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
/*** define the site path constant ***/
|
||||
if(!defined('__MDIR__')) {
|
||||
define('__MDIR__', realpath(__DIR__ . '/../www/') . '/');
|
||||
}
|
||||
|
||||
// Set default
|
||||
ini_set('date.timezone', 'Europe/Riga');
|
||||
date_default_timezone_set('Europe/Riga');
|
||||
|
||||
ini_set('display_errors', 'On');
|
||||
ini_set('error_reporting', E_ALL);
|
||||
|
||||
// Increase time & memory limit
|
||||
set_time_limit(60 * 60 * 3);
|
||||
ini_set('memory_limit', '2048M');
|
||||
|
||||
// Define base sql constants for system to use
|
||||
if (!defined('DB_HOST')) define('DB_HOST', $this->mysqlHost);
|
||||
if (!defined('DB_USR')) define('DB_USR', $this->mysqlUser);
|
||||
if (!defined('DB_PWD')) define('DB_PWD', $this->mysqlPass);
|
||||
if (!defined('DB_PORT')) define('DB_PORT', $this->mysqlPort);
|
||||
if (!defined('DB_NAME')) define('DB_NAME', $this->mysqlName);
|
||||
|
||||
// To be replaced by namespaces later!!!!
|
||||
include_once(__DIR__ . "/../www/system-brs-core/config/constants.php");
|
||||
include_once(__DIR__ . "/../www/system-brs-core/functions/com.funct.php");
|
||||
|
||||
// Set handler functions
|
||||
// Setup without namespaces before namespaces ar implemented into project - system autoloader
|
||||
set_error_handler('errorHandler');
|
||||
|
||||
if ($this->unitTestsAreRunning) {
|
||||
|
||||
// Set flag while global tests are running
|
||||
$GLOBALS['coverage_tests_running'] = true;
|
||||
|
||||
// Load site configuration file
|
||||
$oCfg = new cINI(__CFG__ . 'init.cfg.ini');
|
||||
$oCfg->loadSystemConstants();
|
||||
|
||||
// Set default values host, server port, etc.
|
||||
if (
|
||||
empty($_SERVER['HTTP_HOST'])
|
||||
&& $sDefaultHost = $oCfg->getV('system', 'DEFAULT_HOST')
|
||||
) {
|
||||
$_SERVER['HTTP_HOST'] = $sDefaultHost;
|
||||
}
|
||||
if (empty($_SERVER['SERVER_PORT'])) {
|
||||
$_SERVER['SERVER_PORT'] = $this->serverPort;
|
||||
}
|
||||
foreach (['SERVER_ADDR', 'REQUEST_URI', 'REMOTE_ADDR'] as $key) {
|
||||
if (empty($_SERVER[$key])) {
|
||||
$_SERVER[$key] = $this->serverPort;
|
||||
}
|
||||
}
|
||||
|
||||
// Set request type - while testing POST needs to be specified
|
||||
$this->setUnitTestRequestType();
|
||||
}
|
||||
|
||||
$this->cDb = cDb::getInstance($this->mysqlHost, $this->mysqlUser, $this->mysqlPass, $this->mysqlPort, $this->mysqlName, 'SeleniumDbConnection');
|
||||
$this->cDb->disableDispose = true;
|
||||
|
||||
// Reload base data tables
|
||||
$this->reloadDbTables(['mod_users', 'mod_account_manager']);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
protected function dbSetup(array $files): void
|
||||
{
|
||||
try {
|
||||
foreach ($files as $file) {
|
||||
$file = __DIR__ . '/DataSetup/' . $file;
|
||||
if (!file_exists($file)) {
|
||||
throw new Exception('DB setup file not found: ' . $file);
|
||||
}
|
||||
|
||||
$sql = preg_split('/[.+;][\s]*\n/', file_get_contents($file), -1, PREG_SPLIT_NO_EMPTY);
|
||||
if (!is_array($sql)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($sql as $query) {
|
||||
if (empty(trim($query))) {
|
||||
continue;
|
||||
}
|
||||
$this->cDb->query($query);
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
protected function reloadDbTables(array $tables = null, DbTitleEnum $baseTable = null): void
|
||||
{
|
||||
if (is_null($baseTable)) {
|
||||
$baseTable = DbTitleEnum::E_ZUTENIS();
|
||||
}
|
||||
if (!is_null($tables)) {
|
||||
foreach ($tables as $table) {
|
||||
$this->cDb->query("TRUNCATE TABLE `{$baseTable}`.`{$table}`");
|
||||
$this->cDb->query("LOAD DATA INFILE '/opt/data/{$baseTable}/$table.txt' INTO TABLE `{$baseTable}`.`{$table}`");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to exec insert with a data array
|
||||
*
|
||||
* @param string $table - table name
|
||||
* @param array $data - fields to insert with key to field structure
|
||||
* @return array|bool - array with ids
|
||||
*/
|
||||
protected function insertTestDataMulti(string $table, array $data)
|
||||
{
|
||||
if (empty($data)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$ids = $this->cDb->_queryInsertArray($table, $data);
|
||||
return $ids ?: false;
|
||||
}
|
||||
|
||||
protected function updateTestDataMulti(string $table, array $data, string $idColumn = 'id'): bool
|
||||
{
|
||||
if (empty($data) || !$idColumn) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $this->cDb->_queryUpdateMulti($table, $data, $idColumn);
|
||||
}
|
||||
|
||||
protected function assertExpected(array $expectedData, string $output, bool $convertToLowercase = false): void
|
||||
{
|
||||
foreach ($expectedData as $expected) {
|
||||
if ($convertToLowercase) {
|
||||
$this->assertStringContainsString(mb_strtolower($expected), mb_strtolower($output));
|
||||
} else {
|
||||
$this->assertStringContainsString($expected, $output);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function emailHtmlDecode(string $data = ''): string
|
||||
{
|
||||
return html_entity_decode($data, ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401, 'UTF-8');
|
||||
}
|
||||
|
||||
protected function getAndSetStructureForFirstMatchedUrl(int $mapId): array
|
||||
{
|
||||
$url = new cUrl();
|
||||
$urlData = getFirstMatchByMapId($mapId);
|
||||
|
||||
$_SERVER['SERVER_PORT'] = 80;
|
||||
$_SERVER['HTTPS'] = 'off';
|
||||
$_SERVER['HTTP_HOST'] = 'local.elixir';
|
||||
$_SERVER['REQUEST_URI'] = $url->rmSlashesIndex($urlData['p_full_url']);
|
||||
$_SERVER['REMOTE_ADDR'] = '';
|
||||
$_SERVER['SERVER_ADDR'] = '';
|
||||
|
||||
return $urlData;
|
||||
}
|
||||
|
||||
protected function mprint(): void
|
||||
{
|
||||
// Get all arguments
|
||||
$vPassedArguments = func_get_args();
|
||||
if(!!$vPassedArguments){
|
||||
$sDebugOutput = PHP_EOL . 'START DEBUG OUTPUT:' . PHP_EOL;
|
||||
foreach($vPassedArguments as $vData) $sDebugOutput .= PHP_EOL . print_r($vData, true) . PHP_EOL;
|
||||
die($sDebugOutput . PHP_EOL . 'END OF DEBUG!');
|
||||
}
|
||||
die('NO ARGUMENTS PASSED!');
|
||||
}
|
||||
|
||||
function getLoginCredentialsByType(string $userType = siteUsers::loginCmsAdmin): array
|
||||
{
|
||||
return siteUsers::loginData[$userType] ?? [];
|
||||
}
|
||||
|
||||
protected function setUnitTestRequestType(bool $isGET = true, bool $isPOST = false): void
|
||||
{
|
||||
if ($isPOST) {
|
||||
$_SERVER['REQUEST_METHOD'] = 'POST';
|
||||
}
|
||||
if (!defined('POST_REQ')) define('POST_REQ', $isPOST);
|
||||
if (!defined('GET_REQ')) define('GET_REQ', $isGET);
|
||||
}
|
||||
|
||||
protected function initBaseClassObjectBySiteMapId(
|
||||
string $siteMapId = SiteMap::PUB_LOGIN,
|
||||
?string $loginUser = siteUsers::loginAppSelfEmployed,
|
||||
bool $security2FAEnabled = true,
|
||||
int $selYear = 2022,
|
||||
array $unlockYear = [2026, 2025, 2024, 2023, 2022]
|
||||
): ?object {
|
||||
$app = new cCoreSystem();
|
||||
$this->getAndSetStructureForFirstMatchedUrl($siteMapId);
|
||||
|
||||
// Check if from previous test user is not still logged in - otherwise log out user
|
||||
$this->logOutUnitTestUser();
|
||||
|
||||
// System modules requires users to be logged in
|
||||
if (!is_null($loginUser)) {
|
||||
$this->loginUnitTestUserForCoverage($loginUser, false, $security2FAEnabled);
|
||||
}
|
||||
|
||||
// Return null on 2FA disabled
|
||||
if ($security2FAEnabled) {
|
||||
return $app->launch(true);
|
||||
} else {
|
||||
try {
|
||||
$app->launch(true);
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /ienakt-gramatvedibas-sistema/divu-faktoru-iestatisana'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function loginUnitTestUserForCoverage(
|
||||
string $loginUser = siteUsers::loginAppSelfEmployed,
|
||||
bool $isCmsUser = false,
|
||||
bool $security2FAEnabled = true
|
||||
): void {
|
||||
// Simulate user login
|
||||
if ($isCmsUser) {
|
||||
$this->cmsUser = new sysUsers(getFirstMatchByMapId(SiteMap::PUB_LOGIN));
|
||||
} else {
|
||||
$this->pubUser = new pubUsers(getFirstMatchByMapId(SiteMap::PUB_LOGIN));
|
||||
|
||||
// If user already logged in continue
|
||||
if ($this->pubUser->controller->isLoggedIn()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$userData = $this->getLoginCredentialsByType($loginUser);
|
||||
|
||||
// Log in & catch redirect exception
|
||||
try {
|
||||
$this->pubUser->controller->loginUser(
|
||||
[
|
||||
'chkTerms' => 1,
|
||||
'user_login' => $userData['user'],
|
||||
'user_password' => $userData['password'],
|
||||
]
|
||||
);
|
||||
} catch (Exception $error) {
|
||||
if ($security2FAEnabled) {
|
||||
$this->assertExpected(['Redirected to Location'], $error->getMessage());
|
||||
} else {
|
||||
$this->assertExpected(
|
||||
['"jsonok":true,', '"url":"\/gramatvedibas-sistema\/konta-izvele"'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Submit 2fa security & catch json send data exception
|
||||
if ($security2FAEnabled) {
|
||||
try {
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($userData['2fa']);
|
||||
|
||||
$_POST['code'] = $next2FACode;
|
||||
$this->pubUser->controller->set2FAForm();
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Check if user company is set
|
||||
if ($this->pubUser->controller->selCompId) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function logOutUnitTestUser(bool $isCmsUser = false): void
|
||||
{
|
||||
try {
|
||||
if ($isCmsUser) {
|
||||
$this->cmsUser->controller->logOut();
|
||||
} else {
|
||||
if (!isset($this->pubUser)) {
|
||||
$this->pubUser = new pubUsers(getFirstMatchByMapId(SiteMap::PUB_LOGIN));
|
||||
}
|
||||
$this->pubUser->controller->logOut();
|
||||
}
|
||||
} catch (Exception $error) {
|
||||
if ($isCmsUser) {
|
||||
$this->assertFalse($this->cmsUser->controller->isLoggedIn());
|
||||
} else {
|
||||
$this->assertFalse($this->pubUser->controller->isLoggedIn());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function resetGetAndPost(array $data = [], bool $destroyPrev = true): void
|
||||
{
|
||||
$this->setPost();
|
||||
$this->setGet();
|
||||
}
|
||||
|
||||
protected function destroyUserSession(): void
|
||||
{
|
||||
unset($_SESSION[pubUsersController::USER_SESSION_KEY]);
|
||||
unset($_SESSION[pubUsersController::USER_2FA_SESSION_KEY]);
|
||||
unset($_SESSION[pubUsersController::USER_PWD_SESSION_KEY]);
|
||||
}
|
||||
|
||||
protected function setPost(array $data = [], bool $destroyPrev = true): void
|
||||
{
|
||||
if ($destroyPrev) {
|
||||
$_POST = [];
|
||||
}
|
||||
|
||||
if (!!$data) {
|
||||
foreach ($data as $key => $value) {
|
||||
$_POST[$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function setGet(array $data = [], bool $destroyPrev = true): void
|
||||
{
|
||||
if ($destroyPrev) {
|
||||
$_GET = [];
|
||||
}
|
||||
|
||||
if (!!$data) {
|
||||
foreach ($data as $key => $value) {
|
||||
$_GET[$key] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function testModuleLoginRequirement(string $siteMapId = SiteMap::PUB_LOGIN): void
|
||||
{
|
||||
try {
|
||||
$this->logOutUnitTestUser();
|
||||
// Create new class
|
||||
$this->initBaseClassObjectBySiteMapId($siteMapId, null);
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /ienakt-gramatvedibas-sistema'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected function clearMailHogMessages(): void
|
||||
{
|
||||
$client = new MailhogClient(new Client(), new Psr17Factory(), new Psr17Factory(), $this->mailHogAPIRequestUrl);
|
||||
$client->purgeMessages();
|
||||
}
|
||||
|
||||
protected function awaitEmailFromMailHog(
|
||||
string $recipient = null,
|
||||
string $subject = null,
|
||||
int $timeout = 30,
|
||||
bool $presumeMailboxIsEmpty = false
|
||||
): Message {
|
||||
$reqTime = time() - 5;
|
||||
// Create connection to MailHog
|
||||
$client = new MailhogClient(new Client(), new Psr17Factory(), new Psr17Factory(), $this->mailHogAPIRequestUrl);
|
||||
|
||||
$time = 0;
|
||||
$error = null;
|
||||
|
||||
while ($time <= $timeout) {
|
||||
|
||||
// Init timeout
|
||||
sleep(1);
|
||||
$time++;
|
||||
|
||||
try {
|
||||
$messages = $client->getLastMessage();
|
||||
$messageTime = strtotime($messages->headers->get('date'));
|
||||
|
||||
// Ignore older messages and empty mailbox flag is not set
|
||||
if (!$presumeMailboxIsEmpty && $messageTime < $reqTime) {
|
||||
continue;
|
||||
}
|
||||
|
||||
# Search for recipient & title
|
||||
if (!is_null($recipient) && !is_null($subject)) {
|
||||
if (
|
||||
$messages->recipients->contains(Contact::fromString($recipient)) &&
|
||||
$messages->subject == $subject
|
||||
) {
|
||||
return $messages;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
# Search for recipient
|
||||
if (
|
||||
!is_null($recipient) &&
|
||||
$messages->recipients->contains(Contact::fromString($recipient))
|
||||
) {
|
||||
return $messages;
|
||||
}
|
||||
|
||||
# Search for title
|
||||
if (
|
||||
!is_null($subject) &&
|
||||
$messages->subject == $subject
|
||||
) {
|
||||
return $messages;
|
||||
}
|
||||
|
||||
// Default
|
||||
if (
|
||||
is_null($recipient) &&
|
||||
is_null($subject)
|
||||
) {
|
||||
return $messages;
|
||||
}
|
||||
} catch (NoSuchMessageException $error) {
|
||||
// Continue waiting for message
|
||||
}
|
||||
}
|
||||
|
||||
// Max timeout reached
|
||||
throw new NoSuchMessageException($error);
|
||||
}
|
||||
|
||||
public function setProtectedProperty($classObject, $property, $value): void
|
||||
{
|
||||
$reflection = new ReflectionClass($classObject);
|
||||
$reflection_property = $reflection->getProperty($property);
|
||||
$reflection_property->setAccessible(true);
|
||||
$reflection_property->setValue($classObject, $value);
|
||||
}
|
||||
|
||||
public function setUserPermission(string $permissionKey): void
|
||||
{
|
||||
// Add pub user permission without ID
|
||||
$_SESSION['pub-user']['permissions'][] = $permissionKey;
|
||||
}
|
||||
public function lockOrUnlockCompanyDetailsYear(int $year, bool $locked): void
|
||||
{
|
||||
// After usage needs to reload table mod_account_manager && clear apc from db
|
||||
$partners = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_PARTNERS);
|
||||
$partners->controller->saveYearsSettings(['id' => $year, 'locked' => $locked ? 1 : 0 ]);
|
||||
}
|
||||
|
||||
public function getSqlDataInjectionCfg(string $tableName = 'some_db_table'): array
|
||||
{
|
||||
return [
|
||||
'SMPOL' => "DROP $tableName;--",
|
||||
'M' => "DROP $tableName;#",
|
||||
'M2' => "data' --",
|
||||
|
||||
'Bypassing login screens (SMO+)' => "admin' --",
|
||||
'Bypassing login screens (SMO+) 1' => "admin' #",
|
||||
'Bypassing login screens (SMO+) 2' => "admin'/*",
|
||||
'Bypassing login screens (SMO+) 3' => "' or 1=1--",
|
||||
'Bypassing login screens (SMO+) 4' => "' or 1=1#",
|
||||
'Bypassing login screens (SMO+) 5' => "' or 1=1/*",
|
||||
'Bypassing login screens (SMO+) 6' => "') or '1'='1--",
|
||||
'Bypassing login screens (SMO+) 7' => "') or ('1'='1--",
|
||||
|
||||
'Obfuscation' => "test;DROP/*comment*/$tableName",
|
||||
'Breaking up a keyword to avoid filters' => ";DR/**/OP/*bypass blacklisting*/$tableName",
|
||||
'Removing space characters' => ";SELECT/*avoid-spaces*/password/**/FROM/**/$tableName",
|
||||
'ID value' => "10; DROP TABLE $tableName /*",
|
||||
'ID value 2' => "10; DROP TABLE $tableName --",
|
||||
'Stacking Queries - MSP' => "1; DROP $tableName--",
|
||||
'Stacking Queries - MSP ID value' => "10;DROP $tableName --",
|
||||
|
||||
|
||||
'Error-based ways to discover column information' => "' HAVING 1=1",
|
||||
'Simple INSERT payload' => "'; insert into $tableName values( 1, 'hax0r', 'coolpass', 9 )/*",
|
||||
|
||||
'sample insert data' => "''ert'' // */=-+12!@#$%^&*()",
|
||||
'sample insert data 2' => "āēšģīķļžčņ",
|
||||
'html' => "<b>test data </b>",
|
||||
];
|
||||
}
|
||||
|
||||
public function updateCfgStructure(
|
||||
string $updateText,
|
||||
array $structure,
|
||||
array $fields = [],
|
||||
array $excludeFields = []
|
||||
): array
|
||||
{
|
||||
$updatedFields = $structure;
|
||||
if (empty($structure) || !strlen($updateText)) {
|
||||
return $structure;
|
||||
}
|
||||
|
||||
// Keep only the requested fields
|
||||
if (!empty($fields)) {
|
||||
$updatedFields = $fields;
|
||||
}
|
||||
|
||||
// Get all fields except the passed excluded
|
||||
if (!empty($excludeFields)) {
|
||||
$updatedFields = array_diff_key($updatedFields, array_flip($excludeFields));
|
||||
}
|
||||
|
||||
// Fill data from config
|
||||
$filledArray = array_fill_keys(array_keys($updatedFields), $updateText);
|
||||
|
||||
return array_merge($structure , $filledArray);
|
||||
}
|
||||
|
||||
protected function switchDbSchema(DbTitleEnum $schema)
|
||||
{
|
||||
$this->cDb = cDb::getInstance(
|
||||
$this->mysqlHost,
|
||||
$this->mysqlUser,
|
||||
$this->mysqlPass,
|
||||
$this->mysqlPort,
|
||||
$schema,
|
||||
'SeleniumDbConnection',
|
||||
);
|
||||
$this->cDb->disableDispose = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,978 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests;
|
||||
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use Exception;
|
||||
use Facebook\WebDriver\Chrome\ChromeOptions;
|
||||
use Facebook\WebDriver\Exception\NoSuchElementException;
|
||||
use Facebook\WebDriver\Exception\TimeOutException;
|
||||
use Facebook\WebDriver\Firefox\FirefoxDriver;
|
||||
use Facebook\WebDriver\Firefox\FirefoxProfile;
|
||||
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
||||
use Facebook\WebDriver\Remote\RemoteWebDriver;
|
||||
use Facebook\WebDriver\Remote\RemoteWebElement;
|
||||
use Facebook\WebDriver\WebDriverBy;
|
||||
use Facebook\WebDriver\WebDriverDimension;
|
||||
use Facebook\WebDriver\WebDriverElement;
|
||||
use Facebook\WebDriver\WebDriverExpectedCondition;
|
||||
use Facebook\WebDriver\WebDriverSelect;
|
||||
use PHPUnit\Runner\BaseTestRunner;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
|
||||
|
||||
abstract class BasePhpUnitSeleniumCase extends BasePhpUnitCase
|
||||
{
|
||||
public const CLASS_NAME = 'className';
|
||||
public const CSS_SELECTOR = 'cssSelector';
|
||||
public const ID = 'id';
|
||||
public const NAME = 'name';
|
||||
public const LINK_TEXT = 'linkText';
|
||||
public const PARTIAL_LINK_TEXT = 'partialLinkText';
|
||||
public const TAG_NAME = 'tagName';
|
||||
public const XPATH = 'xPath';
|
||||
|
||||
/**
|
||||
* @var RemoteWebDriver
|
||||
*/
|
||||
public $webDriver;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $seleniumHost = 'http://maisonalexandra_selenium_hub:4444/wd/hub';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $seleniumBrowser = "firefox";
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $timeoutInSeconds = 60;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected int $timeoutWait = 30;
|
||||
protected int $timeoutWaitInterval = 250;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $applicationBaseUrl = 'http://local.maisonalexandra.lv/';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $screenshotPath = "build";
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $screenshotOnFailedTest = true;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $user2FASecureCode = '3HMZGRH7JEC2OBPR';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $applicationDownloadFolder = '/var/www/temp';
|
||||
|
||||
protected $CMSDateFormat = 'd/m/Y';
|
||||
protected $PUBDateFormat = 'd.m.Y';
|
||||
protected $PUBTime = 'H:i';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
// Get WebDriver Instance
|
||||
$this->webDriver = RemoteWebDriver::create(
|
||||
$this->seleniumHost,
|
||||
$this->buildCapabilities(),
|
||||
$this->timeoutInSeconds * 1000,
|
||||
$this->timeoutInSeconds * 1000
|
||||
);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
// Screenshot Failed Test
|
||||
if (in_array($this->getStatus(), array(BaseTestRunner::STATUS_ERROR, BaseTestRunner::STATUS_FAILURE))) {
|
||||
$this->screenshotFailedTest();
|
||||
}
|
||||
|
||||
parent::tearDown();
|
||||
|
||||
// Quit WebDriver Instance
|
||||
$this->webDriver->quit();
|
||||
}
|
||||
|
||||
protected function logIntoAdmin($eUserLogin, $waitForDashboard = true): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType($eUserLogin);
|
||||
$this->url($loginData['url']);
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
// Check if we landed on dashboard - default page after login redirect
|
||||
if ($this->elementExists('dashboard')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->byId("user_login")->sendKeys($loginData['user']);
|
||||
$this->byId("user_password")->sendKeys($loginData['password']);
|
||||
|
||||
$this->byCssSelector("button.btn")->click();
|
||||
|
||||
// Wait for form to load 2fa elements & continue with testing
|
||||
$this->waitFormToLoadBySelector('form#frm_2fa_input');
|
||||
|
||||
// Validate code
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($loginData['2fa']);
|
||||
|
||||
foreach (str_split($next2FACode) as $i => $char) {
|
||||
$selector = "input.code2fa[tabindex='" . ++$i . "']";
|
||||
$this->elementWait($selector, self::CSS_SELECTOR);
|
||||
$this->byCssSelector($selector)->sendKeys($char);
|
||||
}
|
||||
|
||||
if ($waitForDashboard) {
|
||||
$this->elementWait("dashboard", self::ID);
|
||||
}
|
||||
}
|
||||
|
||||
protected function logout(bool $useFormButton = true)
|
||||
{
|
||||
// Check a way exists to log out
|
||||
$logoutButton = '#company_menu > ul > li.comp_profile > a';
|
||||
if (
|
||||
$useFormButton &&
|
||||
$this->elementExists($logoutButton, self::CSS_SELECTOR, true) &&
|
||||
$this->byCssSelector($logoutButton)->isDisplayed()
|
||||
) {
|
||||
$this->scrollElementIntoView($logoutButton, self::CSS_SELECTOR);
|
||||
$this->moveToElement($logoutButton, self::CSS_SELECTOR);
|
||||
$this->byCssSelector($logoutButton)->click();
|
||||
|
||||
$this->elementWait('#comp_menu .logout', self::CSS_SELECTOR);
|
||||
$this->moveToElement('#comp_menu .logout', self::CSS_SELECTOR);
|
||||
$this->byCssSelector("#comp_menu .logout")->click();
|
||||
} else {
|
||||
$this->url("?logout=1");
|
||||
}
|
||||
|
||||
$this->elementWait('user_login');
|
||||
}
|
||||
|
||||
protected function changeYear(int $year): void
|
||||
{
|
||||
$elementSelector = '#company_menu > ul > li.year_select > a';
|
||||
if (
|
||||
!$this->elementExists($elementSelector, self::CSS_SELECTOR, true) ||
|
||||
!$this->byCssSelector($elementSelector)->isDisplayed()
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->scrollIntoViewHoverClick($elementSelector, self::CSS_SELECTOR);
|
||||
$this->elementWait('#year_menu', self::CSS_SELECTOR);
|
||||
|
||||
$this->scrollIntoViewHoverClick('#year_menu a[data-year="' . $year . '"]', self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
protected function logoutAdmin(bool $useFormButton = true)
|
||||
{
|
||||
// Check a way exists to log out
|
||||
$logoutButton = '.menu-cnt .settbox li.sett.last > a';
|
||||
if ($useFormButton && $this->elementExists($logoutButton, self::CSS_SELECTOR)) {
|
||||
$this->moveToElement($logoutButton, self::CSS_SELECTOR);
|
||||
$this->elementWait('div.settbox_cnt.sub-menu ul', self::CSS_SELECTOR);
|
||||
|
||||
$elementXpath = '//div[contains(@class,"settbox_cnt")]/ul/li/a/div[@class="ico-logout"]/..';
|
||||
$this->moveToElement($elementXpath, self::XPATH);
|
||||
$this->byXPath($elementXpath)->click();
|
||||
} else {
|
||||
$this->url("?logout=1");
|
||||
}
|
||||
|
||||
// Wait for redirect to complete
|
||||
$this->elementWait('user_login');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $pageUrl
|
||||
* @param bool $overrideBaseUrl
|
||||
* @return string|void
|
||||
*/
|
||||
public function url(string $pageUrl = null, bool $overrideBaseUrl = false)
|
||||
{
|
||||
$url = ($overrideBaseUrl) ? $pageUrl : $this->applicationBaseUrl . $pageUrl;
|
||||
$this->webDriver->get($url);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function title(): string
|
||||
{
|
||||
return $this->webDriver->getTitle();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param WebDriverElement|string|null $frameElement
|
||||
*/
|
||||
public function frame($frameElement = null): void
|
||||
{
|
||||
if (is_null($frameElement)) {
|
||||
$this->webDriver->switchTo()->defaultContent();
|
||||
} else {
|
||||
$this->webDriver->switchTo()->frame($frameElement);
|
||||
}
|
||||
}
|
||||
|
||||
public function acceptAlert(): void
|
||||
{
|
||||
$this->webDriver->switchTo()->alert()->accept();
|
||||
}
|
||||
|
||||
public function dismissAlert(): void
|
||||
{
|
||||
$this->webDriver->switchTo()->alert()->dismiss();
|
||||
}
|
||||
|
||||
public function elementExists(string $elementSelector, ?string $elementSelectorType = null, bool $now = false): bool
|
||||
{
|
||||
try {
|
||||
/** Prevent checking for non-existent elements taking x seconds instead of 0. */
|
||||
if ($now) {
|
||||
$this->webDriver->manage()->timeouts()->implicitlyWait(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* We use getRemoteWebElements instead of getRemoteWebElement because getRemoteWebElements
|
||||
* returns an empty array instead of throwing an exception if not found.
|
||||
*/
|
||||
$elements = $this->getRemoteWebElements($elementSelector, $elementSelectorType ?? self::ID);
|
||||
$exists = count($elements) > 0;
|
||||
|
||||
/** Set the implicit wait back to what it was. */
|
||||
if ($now) {
|
||||
$this->webDriver->manage()->timeouts()->implicitlyWait($this->timeoutWait);
|
||||
}
|
||||
|
||||
return $exists;
|
||||
} catch (Exception $e) {
|
||||
// Restore wait even if an unexpected driver error occurs
|
||||
if ($now) {
|
||||
$this->webDriver->manage()->timeouts()->implicitlyWait($this->timeoutWait);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function elementHasClass(string $class, string $selector, string $selectorType = self::ID): bool
|
||||
{
|
||||
try {
|
||||
$classes = $this->getRemoteWebElement($selector, $selectorType)->getAttribute('class');
|
||||
return in_array($class, explode(' ', $classes));
|
||||
} catch (NoSuchElementException $exception) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function elementWaitRemoved(string $selector, string $selectorType = self::ID): void
|
||||
{
|
||||
try {
|
||||
$element = $this->getWebDriverBy($selector, $selectorType);
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(
|
||||
WebDriverExpectedCondition::invisibilityOfElementLocated($element),
|
||||
);
|
||||
} catch (NoSuchElementException $exception) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $selector
|
||||
* @param string|null $selectorType
|
||||
* @param bool|true $waitUntilDomReadyState
|
||||
* @param bool|true $presenceOfElementLocated
|
||||
* @param bool|true $visibilityOfElementLocated
|
||||
* @param bool|true $elementToBeClickable
|
||||
* @return bool|void
|
||||
*/
|
||||
public function elementWait(
|
||||
string $selector,
|
||||
string $selectorType = self::ID,
|
||||
bool $waitUntilDomReadyState = true,
|
||||
bool $presenceOfElementLocated = true,
|
||||
bool $visibilityOfElementLocated = true,
|
||||
bool $elementToBeClickable = true
|
||||
) {
|
||||
try {
|
||||
$element = $this->getWebDriverBy($selector, $selectorType);
|
||||
|
||||
if ($waitUntilDomReadyState) {
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
if ($presenceOfElementLocated) {
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(
|
||||
WebDriverExpectedCondition::presenceOfElementLocated($element),
|
||||
);
|
||||
}
|
||||
if ($visibilityOfElementLocated) {
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(
|
||||
WebDriverExpectedCondition::visibilityOfElementLocated($element),
|
||||
);
|
||||
}
|
||||
if ($elementToBeClickable) {
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(
|
||||
WebDriverExpectedCondition::elementToBeClickable($element),
|
||||
);
|
||||
}
|
||||
if ($visibilityOfElementLocated) {
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(
|
||||
WebDriverExpectedCondition::visibilityOf($this->webDriver->findElement($element)),
|
||||
);
|
||||
}
|
||||
|
||||
return;
|
||||
} catch (NoSuchElementException $exception) {
|
||||
return false;
|
||||
} catch (TimeOutException $exception) {
|
||||
return false;
|
||||
} catch (Exception $exception) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $selector
|
||||
* @param string|null $selectorType
|
||||
* @return RemoteWebElement[]
|
||||
*/
|
||||
protected function getRemoteWebElements(string $selector, string $selectorType = self::ID): array
|
||||
{
|
||||
return $this->webDriver->findElements($this->getWebDriverBy($selector, $selectorType));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $selector
|
||||
* @param string|null $selectorType
|
||||
* @return RemoteWebElement
|
||||
*/
|
||||
protected function getRemoteWebElement(string $selector, string $selectorType = self::ID): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement($this->getWebDriverBy($selector, $selectorType));
|
||||
}
|
||||
|
||||
private function getWebDriverBy(string $selector, string $selectorType = self::ID): WebDriverBy
|
||||
{
|
||||
switch ($selectorType) {
|
||||
case self::CLASS_NAME:
|
||||
$element = WebDriverBy::className($selector);
|
||||
break;
|
||||
case self::CSS_SELECTOR:
|
||||
$element = WebDriverBy::cssSelector($selector);
|
||||
break;
|
||||
case self::NAME:
|
||||
$element = WebDriverBy::name($selector);
|
||||
break;
|
||||
case self::LINK_TEXT:
|
||||
$element = WebDriverBy::linkText($selector);
|
||||
break;
|
||||
case self::PARTIAL_LINK_TEXT:
|
||||
$element = WebDriverBy::partialLinkText($selector);
|
||||
break;
|
||||
case self::TAG_NAME:
|
||||
$element = WebDriverBy::tagName($selector);
|
||||
break;
|
||||
case self::XPATH:
|
||||
$element = WebDriverBy::xpath($selector);
|
||||
break;
|
||||
case self::ID:
|
||||
default:
|
||||
$element = WebDriverBy::id($selector);
|
||||
break;
|
||||
}
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
public function pageTitleWait(string $pageTitle): void
|
||||
{
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(
|
||||
WebDriverExpectedCondition::titleContains($pageTitle)
|
||||
);
|
||||
}
|
||||
|
||||
public function newWindowWait(): void
|
||||
{
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(
|
||||
WebDriverExpectedCondition::numberOfWindowsToBe(2)
|
||||
);
|
||||
}
|
||||
|
||||
public function byClassName(string $elementClassName): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement(WebDriverBy::className($elementClassName));
|
||||
}
|
||||
|
||||
public function byCssSelector(string $elementCssSelector): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement(WebDriverBy::cssSelector($elementCssSelector));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return RemoteWebElement[] a list of all WebDriverElements, or an empty array if nothing
|
||||
*/
|
||||
public function elementsByCssSelector(string $elementCssSelector): array
|
||||
{
|
||||
return $this->webDriver->findElements(WebDriverBy::cssSelector($elementCssSelector));
|
||||
}
|
||||
|
||||
public function byId(string $elementId): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement(WebDriverBy::id($elementId));
|
||||
}
|
||||
|
||||
public function byName(string $elementName): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement(WebDriverBy::name($elementName));
|
||||
}
|
||||
|
||||
public function byLinkText(string $elementLinkText): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement(WebDriverBy::linkText($elementLinkText));
|
||||
}
|
||||
|
||||
public function byPartialLinkText(string $elementPartialLinkText): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement(WebDriverBy::partialLinkText($elementPartialLinkText));
|
||||
}
|
||||
|
||||
public function byTagName(string $elementTagName): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement(WebDriverBy::tagName($elementTagName));
|
||||
}
|
||||
|
||||
public function byXPath(string $elementXPath): RemoteWebElement
|
||||
{
|
||||
return $this->webDriver->findElement(WebDriverBy::xpath($elementXPath));
|
||||
}
|
||||
|
||||
public function select(RemoteWebElement $element): WebDriverSelect
|
||||
{
|
||||
return new WebDriverSelect($element);
|
||||
}
|
||||
|
||||
private function screenshotFailedTest(): void
|
||||
{
|
||||
if ($this->screenshotOnFailedTest !== true) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!is_dir($this->screenshotPath)) {
|
||||
mkdir($this->screenshotPath, 0777, true);
|
||||
}
|
||||
|
||||
if (glob($this->screenshotPath . '/' . $this->getName() . "*.png")) {
|
||||
array_map('unlink', glob($this->screenshotPath . '/' . $this->getName() . "*.png"));
|
||||
}
|
||||
|
||||
$filePath = $this->screenshotPath . '/' . $this->getName() . '_' . time() . '.png';
|
||||
$this->webDriver->takeScreenshot($filePath);
|
||||
}
|
||||
|
||||
private function buildCapabilities(): DesiredCapabilities
|
||||
{
|
||||
$capabilities = null;
|
||||
switch ($this->seleniumBrowser) {
|
||||
case 'firefox':
|
||||
$profile = new FirefoxProfile();
|
||||
$capabilities = DesiredCapabilities::firefox();
|
||||
|
||||
$profile->setPreference('browser.download.folderList', 2);
|
||||
$profile->setPreference('browser.download.dir', $this->applicationDownloadFolder);
|
||||
$profile->setPreference('browser.download.panel.shown', false);
|
||||
$profile->setPreference('browser.download.manager.showWhenStarting', false);
|
||||
$profile->setPreference('pdfjs.disabled', true);
|
||||
$profile->setPreference(
|
||||
'browser.helperApps.neverAsk.saveToDisk',
|
||||
'application/pdf, text/csv, application/xlsx, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
);
|
||||
|
||||
$capabilities->setCapability(FirefoxDriver::PROFILE, $profile);
|
||||
break;
|
||||
|
||||
case 'chrome':
|
||||
$options = new ChromeOptions();
|
||||
$capabilities = DesiredCapabilities::chrome();
|
||||
|
||||
$options->setExperimentalOption('prefs', array(
|
||||
'download.directory_upgrade' => true,
|
||||
'download.prompt_for_download' => false,
|
||||
'download.default_directory' => $this->applicationDownloadFolder,
|
||||
'safebrowsing.enabled' => false,
|
||||
'safebrowsing.disable_download_protection' => true,
|
||||
'profile.default_content_settings.popups' => 0,
|
||||
'profile.default_content_settings.multiple-automatic-downloads' => 1,
|
||||
'plugins.always_open_pdf_externally' => true,
|
||||
'plugins.plugins_disabled' => ['Chrome PDF Viewer'],
|
||||
));
|
||||
|
||||
$capabilities->setCapability(ChromeOptions::CAPABILITY_W3C, $options);
|
||||
break;
|
||||
|
||||
default:
|
||||
$this->fail('Unsupported browser type!');
|
||||
}
|
||||
|
||||
return $capabilities;
|
||||
}
|
||||
|
||||
public function clearTempFolder(string $dir = __DIR__ . '/../temp'): void
|
||||
{
|
||||
foreach (glob($dir . '/*', GLOB_MARK) as $file) {
|
||||
if (is_dir($file)) {
|
||||
$this->clearTempFolder($file);
|
||||
} else {
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function getFileFromTempFolder(string $dir = __DIR__ . '/../temp'): ?string
|
||||
{
|
||||
for ($i = 1; $i < 30; $i++) {
|
||||
foreach (glob($dir . '/*', GLOB_MARK) as $file) {
|
||||
if (is_file($file)) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
sleep(1);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function waitFormToLoadBySelector(string $selector): void
|
||||
{
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(
|
||||
function ($driver) use ($selector) {
|
||||
return $driver->findElements(WebDriverBy::cssSelector($selector));
|
||||
},
|
||||
'Error element'
|
||||
);
|
||||
}
|
||||
|
||||
protected function waitUntilDomReadyState(): void
|
||||
{
|
||||
$this->webDriver->wait($this->timeoutWait, $this->timeoutWaitInterval)->until(function ($driver) {
|
||||
$jsScript = "return " .
|
||||
"document.readyState === 'complete' && " . // Initial document ready state
|
||||
"window.documentReloadIsUnderWay === undefined && " . // Custom reload condition test
|
||||
"(" .
|
||||
"typeof(jQuery) == 'undefined' || " . // None jquery pages error prevention
|
||||
"(" .
|
||||
"(" .
|
||||
"typeof jQuery.active === undefined || " .
|
||||
"jQuery.active === 0" . // jQuery active states e.g. ajax requests
|
||||
" ) && " .
|
||||
"jQuery(':animated').length === 0" . // jQuery's animation end state
|
||||
")" .
|
||||
") ? true : false";
|
||||
return $driver->executeScript($jsScript);
|
||||
});
|
||||
}
|
||||
|
||||
protected function executeJS(string $script)
|
||||
{
|
||||
return $this->webDriver->executeScript($script);
|
||||
}
|
||||
|
||||
protected function executeJSBlur(): void
|
||||
{
|
||||
$this->executeJS('$(":focus").blur();');
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
protected function markWebDocumentAsBusyUntilPageReloads(): void
|
||||
{
|
||||
$this->webDriver->executeScript('window.documentReloadIsUnderWay = true;');
|
||||
}
|
||||
|
||||
protected function normalizeUrl(string $url, bool $endSlash = false): string
|
||||
{
|
||||
if (str_ends_with($url, '/')) {
|
||||
if (!$endSlash) $url = substr($url, 0, strlen($url)-1);
|
||||
} else {
|
||||
if ($endSlash) $url .= '/';
|
||||
}
|
||||
|
||||
if (str_starts_with($url, '/')) $url = substr($url, 1);
|
||||
if (!$url) $url = 'index';
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
protected function mprint(): void
|
||||
{
|
||||
// Get all arguments
|
||||
$vPassedArguments = func_get_args();
|
||||
if(!!$vPassedArguments){
|
||||
$sDebugOutput = PHP_EOL . 'START DEBUG OUTPUT:' . PHP_EOL;
|
||||
foreach($vPassedArguments as $vData) $sDebugOutput .= PHP_EOL . print_r($vData, true) . PHP_EOL;
|
||||
echo $sDebugOutput . PHP_EOL . 'END OF DEBUG!';
|
||||
}else {
|
||||
echo 'NO ARGUMENTS PASSED!';
|
||||
}
|
||||
$this->tearDown();
|
||||
}
|
||||
|
||||
protected function scrollIntoViewHoverClick(
|
||||
string $selector,
|
||||
string $selectorType = self::ID,
|
||||
bool $elementClick = true
|
||||
): RemoteWebElement {
|
||||
$element = $this->scrollElementIntoView($selector, $selectorType, 'true');
|
||||
$this->moveToElement($selector, $selectorType);
|
||||
if ($elementClick) {
|
||||
$element->click();
|
||||
}
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
protected function scrollElementIntoView(
|
||||
string $selector,
|
||||
string $selectorType = self::ID,
|
||||
string $options = '{behavior:"instant", block:"center", inline:"end"}'
|
||||
): RemoteWebElement {
|
||||
$element = $this->getVisibleFormFieldElement($selector, $selectorType);
|
||||
$this->webDriver->executeScript("arguments[0].scrollIntoView($options);", [$element]);
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* When invalid HTML contains duplicates like:
|
||||
* <input id="a_field_1" style="display:none">
|
||||
* <textarea id="a_field_1">...</textarea>
|
||||
* pick the one actually visible.
|
||||
*/
|
||||
public function getVisibleFormFieldElement(string $selector, string $selectorType = self::ID): RemoteWebElement
|
||||
{
|
||||
if ($selectorType === self::ID) {
|
||||
$css = ".doc .form-data #$selector";
|
||||
$selType = self::CSS_SELECTOR;
|
||||
} else {
|
||||
// TODO: Needs to be tested
|
||||
$css = $selector;
|
||||
$selType = $selectorType;
|
||||
}
|
||||
|
||||
// Ensure at least one exists
|
||||
$this->elementWait($css, $selType, true, true, false, false);
|
||||
|
||||
$elements = $this->getRemoteWebElements($css, $selType);
|
||||
if (count($elements) === 0) {
|
||||
$this->fail("Field '$selector' not found by selector: $css and selector type: $selType");
|
||||
}
|
||||
|
||||
foreach ($elements as $el) {
|
||||
try {
|
||||
if ($el->isDisplayed()) {
|
||||
return $el;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
// ignore and continue
|
||||
}
|
||||
}
|
||||
|
||||
if (count($elements) === 1) {
|
||||
return $elements[0];
|
||||
}
|
||||
|
||||
// If nothing is "displayed":
|
||||
$this->fail("Field '$selector' was found (" . count($elements) . " matches) but none are displayed.");
|
||||
}
|
||||
|
||||
|
||||
protected function getElementPosition($element, array $elements): int
|
||||
{
|
||||
foreach ($elements as $index => $item) {
|
||||
if ($item->getID() === $element->getID()) {
|
||||
return $index;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
protected function getItemHeight($element): int
|
||||
{
|
||||
return (int) $element->getSize()->getHeight();
|
||||
}
|
||||
|
||||
protected function switchToPageLanguage(string $id = siteLanguages::LANG_LV): void
|
||||
{
|
||||
$selectedLangSelector = 'footer div.inner-lang-block';
|
||||
if ($this->elementExists("$selectedLangSelector > a.$id", self::CSS_SELECTOR, true)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Click on the lang menu container and click on the language
|
||||
$this->scrollIntoViewHoverClick($selectedLangSelector, self::CSS_SELECTOR);
|
||||
$this->scrollIntoViewHoverClick("footer .inner-lang-block #lang li > a#$id", self::CSS_SELECTOR);
|
||||
$this->assertTrue($this->elementExists("$selectedLangSelector > a.$id", self::CSS_SELECTOR));
|
||||
}
|
||||
|
||||
protected function gotoLocationByClickingVisibleUrl(
|
||||
string $menuItem,
|
||||
string $waitPageTitle,
|
||||
string $menuParentItem = null,
|
||||
string $waitForElementSelector = null
|
||||
): void {
|
||||
if ($this->webDriver->getTitle() === $waitPageTitle) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($menuParentItem) {
|
||||
$this->scrollIntoViewHoverClick($this->getMenuItemSelectXpathByTitle($menuParentItem), self::XPATH);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
$this->scrollIntoViewHoverClick($this->getMenuItemSelectXpathByTitle($menuItem), self::XPATH);
|
||||
$this->pageTitleWait($waitPageTitle);
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
if (!is_null($waitForElementSelector)) {
|
||||
$this->elementWait($waitForElementSelector, self::CSS_SELECTOR);
|
||||
}
|
||||
}
|
||||
|
||||
public function getMenuItemSelectXpathByTitle(string $title): string
|
||||
{
|
||||
return "//div[@id='fablesNavDropdown']//a[contains(., '$title')]";
|
||||
}
|
||||
|
||||
public function getCompMenuItemSelectXpathByTitle(string $title): string
|
||||
{
|
||||
return "//div[@id='company_menu']//a[contains(., '$title')]";
|
||||
}
|
||||
|
||||
protected function assertExpectedElements(array $expectedElements, string $elementSelectorType = null): void
|
||||
{
|
||||
foreach ($expectedElements as $expected) {
|
||||
$this->assertTrue($this->elementExists($expected, $elementSelectorType), "Unable to locate element: $expected");
|
||||
}
|
||||
}
|
||||
|
||||
protected function getRowDataByRowId(int $rowId, array $chkBoxes = []): array
|
||||
{
|
||||
$data = [];
|
||||
$cells = $this->webDriver->findElements(WebDriverBy::cssSelector('.table-rows .sticky-header ul.thead > li'));
|
||||
$dataCells = $this->webDriver->findElements(WebDriverBy::cssSelector('.table-rows .tbody ul[id="' . $rowId . '"] > li'));
|
||||
foreach ($cells as $key => $cell) {
|
||||
$cellKey = $cell->getAttribute('id');
|
||||
if (in_array($cellKey, $chkBoxes)) {
|
||||
$class = $dataCells[$key]->findElement(WebDriverBy::cssSelector('.ncheckbox .status.chk'))->getAttribute('class');
|
||||
$data[$cellKey] = strpos($class, 'chked') !== false;
|
||||
} else {
|
||||
$data[$cellKey] = trim($dataCells[$key]->getText());
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
private function getTableElementIndexBy(string $idToFind, string $selector, string $selectorType = self::ID): ?int
|
||||
{
|
||||
$elements = $this->webDriver->findElements($this->getWebDriverBy($selector, $selectorType));
|
||||
foreach ($elements as $key => $el) {
|
||||
if ($el->getAttribute('id') == $idToFind) {
|
||||
return $key;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected function selectTableDropDownLiItemById(string $dropDownId, string $dropDownItemId): void
|
||||
{
|
||||
// Open search if closed
|
||||
$this->scrollIntoViewHoverClick('#btnSearch', self::CSS_SELECTOR);
|
||||
|
||||
$this->scrollIntoViewHoverClick('.table-rows .sticky-header ul.thead > li#' . $dropDownId, self::CSS_SELECTOR, false);
|
||||
$index = $this->getTableElementIndexBy($dropDownId, '.table-rows .sticky-header ul.thead > li', self::CSS_SELECTOR);
|
||||
$this->scrollIntoViewHoverClick('//div[@id="tSearch"]//ul/li[' . ($index + 1) . ']', self::XPATH);
|
||||
$this->scrollIntoViewHoverClick('//div[@id="tSearch"]//ul/li[' . ($index + 1) . ']//ul/li[@id="' . $dropDownItemId . '"]', self::XPATH);
|
||||
}
|
||||
|
||||
protected function setBrowserDimensions(int $width, int $height): void
|
||||
{
|
||||
$this->webDriver->manage()->window()->setSize(new WebDriverDimension($width, $height));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $zoomPercentage
|
||||
* @return void
|
||||
*/
|
||||
protected function setBrowserContentZoom(int $zoomPercentage): void
|
||||
{
|
||||
if ($this->seleniumBrowser == 'firefox') {
|
||||
// Firefox
|
||||
$this->webDriver->executeScript(
|
||||
'document.body.style.MozTransform = "scale(' . $zoomPercentage / 100 . ')";'
|
||||
);
|
||||
$this->webDriver->executeScript('document.body.style.MozTransformOrigin = "top";');
|
||||
} else {
|
||||
// Other cases
|
||||
$this->webDriver->executeScript('document.body.style.zoom = "' . $zoomPercentage . '%";');
|
||||
}
|
||||
}
|
||||
|
||||
protected function isElementHorizontalScrollbarVisible(
|
||||
string $selector,
|
||||
string $selectorType = self::ID
|
||||
): bool {
|
||||
$scrollbars = $this->getElementScrollbarVisibility($selector, $selectorType);
|
||||
return $scrollbars['horizontal'];
|
||||
}
|
||||
|
||||
protected function isElementVerticalScrollbarVisible(
|
||||
string $selector,
|
||||
string $selectorType = self::ID
|
||||
): bool {
|
||||
$scrollbars = $this->getElementScrollbarVisibility($selector, $selectorType);
|
||||
return $scrollbars['vertical'];
|
||||
}
|
||||
|
||||
/** @return array<string, bool> */
|
||||
private function getElementScrollbarVisibility(
|
||||
string $selector,
|
||||
string $selectorType = self::ID
|
||||
): array {
|
||||
$element = $this->getRemoteWebElement($selector, $selectorType);
|
||||
|
||||
$script = "
|
||||
let node = arguments[0];
|
||||
let overflowY = window.getComputedStyle(node)['overflow-y'];
|
||||
let overflowX = window.getComputedStyle(node)['overflow-x'];
|
||||
return {
|
||||
vertical: (overflowY === 'scroll' || overflowY === 'auto') && node.scrollHeight > node.clientHeight,
|
||||
horizontal: (overflowX === 'scroll' || overflowX === 'auto') && node.scrollWidth > node.clientWidth,
|
||||
};
|
||||
";
|
||||
|
||||
$data = (array)$this->webDriver->executeScript($script, [$element]);
|
||||
|
||||
return [
|
||||
'vertical' => isset($data['vertical']) && $data['vertical'] == true,
|
||||
'horizontal' => isset($data['horizontal']) && $data['horizontal'] == true,
|
||||
];
|
||||
}
|
||||
|
||||
protected function selectDropDownByValue(
|
||||
string $selector,
|
||||
string $value,
|
||||
string $selectorType = self::ID
|
||||
): void {
|
||||
$this->elementWait($selector, $selectorType, $this->timeoutWait);
|
||||
|
||||
$time = microtime(true);
|
||||
$totalTime = 0;
|
||||
while ($totalTime < $this->timeoutWait) {
|
||||
try {
|
||||
(new WebDriverSelect($this->getRemoteWebElement($selector, $selectorType)))->selectByValue($value);
|
||||
return;
|
||||
} catch (Exception $exception) {
|
||||
}
|
||||
usleep(250);
|
||||
$totalTime = microtime(true) - $time;
|
||||
}
|
||||
|
||||
throw new Exception("Select value not found '$value'.");
|
||||
}
|
||||
|
||||
|
||||
protected function waitForElementEnabled(string $selector, string $selectorType = self::ID): void
|
||||
{
|
||||
$this->elementWait($selector, $selectorType, $this->timeoutWait);
|
||||
|
||||
$time = microtime(true);
|
||||
$totalTime = 0;
|
||||
while ($totalTime < $this->timeoutWait) {
|
||||
try {
|
||||
if ($this->getRemoteWebElement($selector, $selectorType)->isEnabled()) {
|
||||
return;
|
||||
}
|
||||
} catch (Exception $exception) {
|
||||
}
|
||||
|
||||
usleep(250);
|
||||
$totalTime = microtime(true) - $time;
|
||||
}
|
||||
|
||||
throw new Exception("Element '{$selector}' by '{$selectorType}' is not enabled.");
|
||||
}
|
||||
|
||||
protected function waitForElementDisplay(string $selector, string $selectorType = self::ID): void
|
||||
{
|
||||
$this->elementWait($selector, $selectorType, $this->timeoutWait);
|
||||
$time = microtime(true);
|
||||
$totalTime = 0;
|
||||
while ($totalTime < $this->timeoutWait) {
|
||||
try {
|
||||
if ($this->getRemoteWebElement($selector, $selectorType)->isDisplayed()) {
|
||||
return;
|
||||
}
|
||||
} catch (Exception $exception) {
|
||||
}
|
||||
|
||||
usleep(250);
|
||||
$totalTime = microtime(true) - $time;
|
||||
}
|
||||
|
||||
throw new Exception("Element '{$selector}' by '{$selectorType}' is not displayed.");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $file
|
||||
* @param array $excelValueCfg
|
||||
* @param bool $containsStrings
|
||||
* @return void
|
||||
*/
|
||||
protected function assertionsOnExcelSheetData(
|
||||
string $file = '',
|
||||
array $excelValueCfg = [],
|
||||
bool $containsStrings = false
|
||||
): void {
|
||||
try {
|
||||
$xmlCheckerObject = new ExcelDataExtractForTestingValues($this->applicationDownloadFolder);
|
||||
$xmlCheckerObject->assertionsOnExcelSheetData($this, $file, $excelValueCfg, $containsStrings);
|
||||
} catch (Exception $e) {
|
||||
$this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function moveToElement(string $selector, string $selectorType = self::ID): RemoteWebElement
|
||||
{
|
||||
$element = $this->getVisibleFormFieldElement($selector, $selectorType);
|
||||
$this->webDriver->action()->moveToElement($element)->perform();
|
||||
|
||||
return $element;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Constants;
|
||||
|
||||
class siteAccounts
|
||||
{
|
||||
public const ACCOUNT_SELF_EMPLOYED = 'Mareks Keišs pašn.';
|
||||
public const ACCOUNT_ZEMTURU_18 = '"Zemturu 18" Biedrība';
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\constants;
|
||||
|
||||
class siteLanguages
|
||||
{
|
||||
public const LANG_LV = 'lv';
|
||||
public const LANG_RU = 'ru';
|
||||
public const LANG_EN = 'en';
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\constants;
|
||||
|
||||
class siteMap
|
||||
{
|
||||
public const PUB_INDEX = 525;
|
||||
public const PUB_LOGIN = 675;
|
||||
public const PUB_SEL_COMPANY = 730;
|
||||
public const PUB_USER_PASS_CHANGE = 738;
|
||||
public const PUB_USER_SECURITY_ENFORCEMENT = 881;
|
||||
public const PUB_USER_2FA = 737;
|
||||
public const PUB_USER_PASS_RECOVERY = 682;
|
||||
public const PUB_USER_PROFILE = 676;
|
||||
public const PUB_PARTNERS = 691;
|
||||
public const CMS_LOGIN = 2;
|
||||
public const SYSTEM_DASHBOARD = 752;
|
||||
public const PUB_USER_MANAGER = 683;
|
||||
public const PUB_UNIFIED_OBJECTS = 731;
|
||||
public const PUB_TRANSACTIONS = 694;
|
||||
public const PUB_SYSTEM_DASHBOARD = 752;
|
||||
public const PUB_BALANCE = 728;
|
||||
public const PUB_ACCOUNTING_MANAGEMENT = 695;
|
||||
public const PUB_OUTGOING_DOC = 855;
|
||||
public const PUB_INCOMING_DOC = 846;
|
||||
public const PUB_LURSOFT_REQUESTS = 861;
|
||||
public const PUB_OBJECTS = 693;
|
||||
public const PUB_ACCOUNTING_CL = 696;
|
||||
public const PUB_REPORTS_CL = 706;
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\constants;
|
||||
|
||||
use BRSystems\Core\App\pubUsers\inc\pubUsersController;
|
||||
|
||||
class siteUsers
|
||||
{
|
||||
const loginCmsAdmin = 'cmsUser';
|
||||
const loginAppSelfEmployed = 'appSelfEmployed';
|
||||
const loginAppHouseManagement = 'appHouseManagement';
|
||||
const superUserPrefix = 'su_';
|
||||
const superUserPass = 'AppTestPass2024';
|
||||
const superUserPassEncrypted = pubUsersController::suUserPassword;
|
||||
const superUser2FA = pubUsersController::sSUser2FASecret;
|
||||
|
||||
const loginData = [
|
||||
self::loginCmsAdmin => [
|
||||
'id' => 12,
|
||||
'user' => 'testadmin',
|
||||
'password' => '5MR0q4V34191B0ENq',
|
||||
'2fa' => pubUsersController::sSUser2FASecret,
|
||||
'url' => 'lslsadmin/login',
|
||||
'email' => 'keiss.mareks@gmail.com',
|
||||
'profile_url' => 'zsmkadmin/profile',
|
||||
'data' => [],
|
||||
],
|
||||
self::loginAppSelfEmployed => [
|
||||
'id' => 12,
|
||||
'sel_comp_id' => 23,
|
||||
'name' => 'Mareks',
|
||||
'surname' => 'Keišs',
|
||||
'user' => 'testmareks',
|
||||
'email' => 'keiss.mareks@gmail.com',
|
||||
'phone' => '28639957',
|
||||
'password' => '5MR0q4V34191B0ENq',
|
||||
'2fa' => pubUsersController::sSUser2FASecret,
|
||||
'url' => 'ienakt-gramatvedibas-sistema',
|
||||
'profile_url' => 'gramatvedibas-sistema/lietotaja-profils',
|
||||
'data' => [],
|
||||
],
|
||||
self::loginAppHouseManagement => [
|
||||
'id' => 111,
|
||||
'sel_comp_id' => 178,
|
||||
'name' => 'Mareks',
|
||||
'surname' => 'Test 2',
|
||||
'user' => 'keiss.mareks3@gmail.com',
|
||||
'email' => 'keiss.mareks3@gmail.com',
|
||||
'phone' => '+37128639957',
|
||||
'password' => '5MR0q4V34191B0ENq',
|
||||
'2fa' => pubUsersController::sSUser2FASecret,
|
||||
'url' => 'ienakt-gramatvedibas-sistema',
|
||||
'profile_url' => 'gramatvedibas-sistema/lietotaja-profils',
|
||||
'data' => [],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
|
@ -0,0 +1,160 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Traits\App\Helpers;
|
||||
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
|
||||
trait assertionsTrait
|
||||
{
|
||||
private $baseTableData = '#base_table > div.table-data';
|
||||
private $colHeaderSelector = '#cms-table-drop-marker ul.thead';
|
||||
private $tableBodyContainer = '#cms-table-drop-marker .table-rows .tbody';
|
||||
private $tablePagerContainer = "//ul[@class='dx pager-cnt']";
|
||||
|
||||
public function assertStringContains(string $haystack, string $needle): void
|
||||
{
|
||||
$this->assertTrue(strpos($haystack, $needle) !== false);
|
||||
}
|
||||
|
||||
public function assertTableTitle(string $expectedTitle, ?string $expectedSubTitle = null): void
|
||||
{
|
||||
$sel = "$this->baseTableData li.breadcrumb-item.active";
|
||||
$this->elementWait($sel, self::CSS_SELECTOR);
|
||||
$this->assertElementTextContainsByCss($sel, $expectedTitle, "On selector: $sel");
|
||||
|
||||
if ($expectedSubTitle) {
|
||||
$this->assertElementTextContainsByCss("$this->baseTableData li:nth-child(3)", $expectedSubTitle);
|
||||
}
|
||||
}
|
||||
|
||||
public function assertFormTitle(string $expectedTitle): void
|
||||
{
|
||||
$sel = '.form-data li.breadcrumb-item.active';
|
||||
$this->elementWait($sel, self::CSS_SELECTOR);
|
||||
$this->assertElementTextContainsByCss($sel, $expectedTitle);
|
||||
}
|
||||
|
||||
public function assertElementValueById(string $id, string $expectedValue, string $message = ''): void
|
||||
{
|
||||
$this->assertSame($expectedValue, $this->byId($id)->getAttribute('value'), $message);
|
||||
}
|
||||
|
||||
public function assertElementValueByCss(string $selector, string $expectedText, string $message = ''): void
|
||||
{
|
||||
$this->assertSame($expectedText, $this->byCssSelector($selector)->getAttribute('value'), $message);
|
||||
}
|
||||
|
||||
public function assertElementTextByCss(string $selector, string $expectedText, string $message = ''): void
|
||||
{
|
||||
$this->assertSame($expectedText, $this->byCssSelector($selector)->getText(), $message);
|
||||
}
|
||||
|
||||
public function assertElementTextContainsByCss(string $selector, string $expectedText, string $message = ''): void
|
||||
{
|
||||
$this->assertStringContainsString($expectedText, $this->byCssSelector($selector)->getText(), $message);
|
||||
}
|
||||
|
||||
public function assertFieldError(string $fieldId, string $expectedErrorMessage): void
|
||||
{
|
||||
// Wait for the error class to be set on input
|
||||
$this->elementWait("div.validate.v-error #$fieldId", self::CSS_SELECTOR);
|
||||
// Hover the element
|
||||
$this->webDriver->action()->moveToElement($this->byId($fieldId))->perform();
|
||||
// Wait for the error bubble
|
||||
$this->elementWait("#$fieldId + div.errMsg", self::CSS_SELECTOR);
|
||||
// Get an error message from the error bubble
|
||||
$this->assertEquals($expectedErrorMessage, $this->byCssSelector("#$fieldId + div.errMsg")->getText());
|
||||
}
|
||||
|
||||
public function assertCmsCheckboxStateById(string $id, bool $isChecked = true, string $message = ''): void
|
||||
{
|
||||
$exists = $this->elementExists("#$id.chk.chked", self::CSS_SELECTOR, true);
|
||||
$this->assertSame($isChecked, $exists, $message);
|
||||
}
|
||||
|
||||
public function assertCmsCheckboxState(string $selector, bool $shouldBeChecked = true, string $message = ''): void
|
||||
{
|
||||
$exists = $this->elementExists($selector . ' .chk.chked', self::CSS_SELECTOR, true);
|
||||
$this->assertSame($shouldBeChecked, $exists, $message);
|
||||
}
|
||||
|
||||
public function assertCmsTableNoResults(string $lang): void
|
||||
{
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$msg = 'Nav ierakstu, lūdzu pārbaudiet filtru un mēģiniet vēlreiz!';
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
$msg = 'Результаты не найдены данные, пожалуйста, проверьте фильтр и попробуйте еще раз!';
|
||||
break;
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$msg = 'No result data found, please check your filter and try again!';
|
||||
}
|
||||
$this->assertElementTextContainsByCss($this->tableBodyContainer . ' > div', $msg);
|
||||
}
|
||||
|
||||
public function assertCmsTableRow(int $row, array $values, bool $scrollIntoView = false): void
|
||||
{
|
||||
$rowSel = $this->tableBodyContainer . " > ul:nth-child($row)";
|
||||
|
||||
if ($scrollIntoView) {
|
||||
$this->scrollElementIntoView($rowSel, self::CSS_SELECTOR);
|
||||
}
|
||||
|
||||
$col = 3;
|
||||
foreach ($values as $value) {
|
||||
if (is_string($value) || is_int($value)) {
|
||||
$this->assertCmsTableRowData($row, $col, $value);
|
||||
} else {
|
||||
$this->assertCmsCheckboxState("$rowSel > li:nth-child($col)", $value);
|
||||
}
|
||||
|
||||
$col++;
|
||||
}
|
||||
}
|
||||
|
||||
public function assertCmsTableRowData($row, $column, $expectedText): void
|
||||
{
|
||||
$selector = $this->tableBodyContainer . " > ul:nth-child($row) > li:nth-child($column) > div";
|
||||
$exists = $this->elementExists($selector, self::CSS_SELECTOR, true);
|
||||
if (empty($expectedText) && !$exists) {
|
||||
$selector = $this->tableBodyContainer . " > ul:nth-child($row) > li:nth-child($column)";
|
||||
}
|
||||
$errorMessage = "Table record with text '$expectedText' not found in column $column, selector: $selector";
|
||||
$this->assertElementTextByCss($selector, $expectedText, $errorMessage);
|
||||
}
|
||||
|
||||
public function assertFormValueById(string $id, string $expectedValue): void
|
||||
{
|
||||
if (strpos($id, '_visible_text')) {
|
||||
/** Visible text is used to assert the chosen selected value in form. */
|
||||
$id = str_replace('_visible_text', '_chosen', $id);
|
||||
$field = $this->getFormElementSelector($id) . " > a.chosen-single > span";
|
||||
$this->assertElementTextByCss($field, $expectedValue, "Field '$field' text is not '$expectedValue'");
|
||||
return;
|
||||
}
|
||||
|
||||
$field = $this->getVisibleFormFieldElement($id);
|
||||
$this->assertSame($expectedValue, $field->getAttribute('value'), "Field '$id' text is not '$expectedValue'");
|
||||
}
|
||||
|
||||
private function assertDataRowCountInFormSection(string $settings, int $count = 0)
|
||||
{
|
||||
$this->assertCount($count, $this->elementsByCssSelector("#$settings > div > div.data > ul > li"));
|
||||
}
|
||||
|
||||
public function assertSaveButton($exists = true): void
|
||||
{
|
||||
$elementExists = $this->elementExists('.buttons_bottom #fsave', self::CSS_SELECTOR, true);
|
||||
$this->assertSame($exists, $elementExists, 'Save button state mismatch');
|
||||
}
|
||||
|
||||
public function assertBackButton($exists = true): void
|
||||
{
|
||||
$elementExists = $this->elementExists('.buttons_bottom #tback', self::CSS_SELECTOR, true);
|
||||
$this->assertSame($exists, $elementExists, 'Back button state mismatch');
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Traits\App\Helpers;
|
||||
|
||||
use Facebook\WebDriver\Remote\RemoteWebElement;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
|
||||
trait commonTrait
|
||||
{
|
||||
public function switchToLanguage(string $language = siteLanguages::LANG_LV): void
|
||||
{
|
||||
$selector = "footer .inner-lang-block > a";
|
||||
// Wait for error class to be set on input
|
||||
$this->elementWait($selector, self::CSS_SELECTOR);
|
||||
$aTag = $this->getRemoteWebElement($selector, self::CSS_SELECTOR);
|
||||
|
||||
// Return if already selected
|
||||
if ($aTag->getAttribute('class') == $language) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->scrollIntoViewHoverClick($selector, self::CSS_SELECTOR);
|
||||
$this->scrollIntoViewHoverClick("$selector + div li a#$language" , self::CSS_SELECTOR);
|
||||
|
||||
$this->elementWait("$selector.$language", self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function toggleCheckbox(string $chkSelector, bool $tick = true): void
|
||||
{
|
||||
$element = $this->getVisibleFormFieldElement($chkSelector, self::CSS_SELECTOR);
|
||||
$this->scrollElementIntoView($chkSelector, self::CSS_SELECTOR);
|
||||
$isChecked = str_contains($element->getAttribute('class'), "chked");
|
||||
if ($isChecked !== $tick) {
|
||||
$element->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
}
|
||||
|
||||
public function selectOptionByAttrDataOptionArrayIndex(string $id, $index): void
|
||||
{
|
||||
$select = "#$id > a > span";
|
||||
$option = "#" . $id . ' > div li[data-option-array-index="' . $index . '"]';
|
||||
$this->scrollIntoViewHoverClick($select, self::CSS_SELECTOR);
|
||||
$this->scrollIntoViewHoverClick($option, self::CSS_SELECTOR);
|
||||
}
|
||||
|
||||
public function getElementInfo(RemoteWebElement $element): array
|
||||
{
|
||||
$tagName = $element->getTagName();
|
||||
$classes = array_filter(explode(' ', $element->getAttribute('class') ?? ''));
|
||||
|
||||
return [
|
||||
'tag' => $tagName,
|
||||
'classes' => $classes,
|
||||
'type' => $element->getAttribute('type'), // relevant for <input>
|
||||
'id' => $element->getAttribute('id'),
|
||||
'name' => $element->getAttribute('name'),
|
||||
'isSelect' => $tagName === 'select',
|
||||
'isInput' => $tagName === 'input',
|
||||
'isTextarea' => $tagName === 'textarea',
|
||||
'isDatePicker'=> in_array('date-picker', $classes),
|
||||
'isDropBox' => in_array('drop-box', $classes),
|
||||
'isDisabled' => $element->getAttribute('disabled') !== null,
|
||||
];
|
||||
}
|
||||
|
||||
public function selectCompMenuItem(object $page): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick("li.comp_profile > a", self::CSS_SELECTOR, false);
|
||||
$this->waitUntilDomReadyState();
|
||||
$this->scrollIntoViewHoverClick($this->getCompMenuItemSelectXpathByTitle($page->menuItem), self::XPATH);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Traits\App\Helpers;
|
||||
|
||||
/**
|
||||
* Trait for common CMS Dialog interactions
|
||||
*/
|
||||
trait dialogTrait
|
||||
{
|
||||
public function openConfirmDialog(string $triggerSelector, bool $scrollIntoView = false): void
|
||||
{
|
||||
if ($scrollIntoView) {
|
||||
$this->scrollElementIntoView($triggerSelector, self::CSS_SELECTOR);
|
||||
}
|
||||
|
||||
$this->byCssSelector($triggerSelector)->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function cmsConfirmDialogActionYes(bool $waitRemove = true): void
|
||||
{
|
||||
$this->cmsConfirmDialogTriggerActions('#confirmDialog .buttons a#buttonYes', $waitRemove);
|
||||
}
|
||||
|
||||
public function cmsConfirmDialogActionCancel(): void
|
||||
{
|
||||
$this->cmsConfirmDialogTriggerActions('#confirmDialog .buttons a#buttonNo');
|
||||
}
|
||||
|
||||
public function cmsConfirmDialogSliderActionYes(string $id = '#buttonYes'): void
|
||||
{
|
||||
$this->cmsConfirmDialogTriggerActions("#dialogSlider .buttons a$id");
|
||||
}
|
||||
|
||||
public function cmsConfirmDialogSliderActionClose(): void
|
||||
{
|
||||
$this->cmsConfirmDialogTriggerActions('#dialogSlider div.header.section-heading > h3 > a');
|
||||
}
|
||||
|
||||
|
||||
public function cmsConfirmDialogTriggerActions($actionSelector, bool $waitRemove = true): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick($actionSelector, self::CSS_SELECTOR);
|
||||
if ($waitRemove) {
|
||||
$this->elementWaitRemoved($actionSelector, self::CSS_SELECTOR);
|
||||
}
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function assertDialogSliderHeaderMessage(string $message): void
|
||||
{
|
||||
$this->assertSame($message, $this->byCssSelector('#dialogSlider div.header.section-heading > h3')->getText());
|
||||
}
|
||||
|
||||
public function assertDialogSliderBodyMessage(string $message): void
|
||||
{
|
||||
$this->assertSame($message, $this->byCssSelector('#dialogSlider div.slider-wrapper > div div > h4')->getText());
|
||||
}
|
||||
|
||||
public function assertDialogSliderBodyDescMessage(string $message): void
|
||||
{
|
||||
$this->assertSame($message, $this->byCssSelector('#dialogSlider div.slider-wrapper > div div > p')->getText());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,328 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Traits\App\Helpers;
|
||||
|
||||
trait formLayoutTrait
|
||||
{
|
||||
public function getFormElementSelector(string $id, string $selectorType = self::ID): string {
|
||||
if ($selectorType !== self::ID) {
|
||||
$this->fail("Only supports ID selector type for now.");
|
||||
}
|
||||
|
||||
return ".doc .form-data #$id";
|
||||
}
|
||||
|
||||
public function sendKeysAndTriggerValidation(string $selector, $value, string $selectorType = self::ID): void
|
||||
{
|
||||
// Hover the parent element
|
||||
$containerXpath = $this->getFieldValidateContainerXpath($selector, $selectorType);
|
||||
$this->elementWait($containerXpath, self::XPATH);
|
||||
$this->scrollElementIntoView($containerXpath, self::XPATH);
|
||||
$this->webDriver->action()->moveToElement($this->byXPath($containerXpath))->perform();
|
||||
|
||||
try {
|
||||
// IMPORTANT: Pages can have multiple elements with the same id.
|
||||
// Always type into the visible one.
|
||||
$remoteElement = $this->getVisibleFormFieldElement($selector, $selectorType);
|
||||
$classes = $remoteElement->getAttribute('class');
|
||||
if (str_contains($classes, 'hasDatepicker') || str_contains($classes, 'chz')) {
|
||||
/** Handle datepicker and dropdown differently */
|
||||
if (str_contains($classes, 'hasDatepicker')) {
|
||||
$this->setDatepickerValue($selector, $value, $selectorType);
|
||||
}
|
||||
|
||||
if (str_contains($classes, 'chz')) {
|
||||
$this->setDropdownValueWithJquery($selector, $value);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear & update field value
|
||||
$remoteElement->click();
|
||||
$remoteElement->clear()->sendKeys($value);
|
||||
|
||||
// Wait for field validation
|
||||
$this->executeJSBlur();
|
||||
} catch (\Exception $e) {
|
||||
$msg = "\nFailed on element $selectorType: $selector";
|
||||
$msg .= "\nContainer xpath: $containerXpath";
|
||||
$msg .= "\nValue: $value";
|
||||
$msg .= "\nMessage: {$e->getMessage()}";
|
||||
$this->fail($msg);
|
||||
}
|
||||
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function setDatepickerValue(string $selector, $value, string $selectorType = self::ID): void
|
||||
{
|
||||
try {
|
||||
$this->getRemoteWebElement($selector, $selectorType)->click()->clear()->sendKeys($value);
|
||||
$this->executeJSBlur();
|
||||
} catch (\Exception $e) {
|
||||
$this->fail("Failed on setting Date value on: \nSelector: $selector \nValue: $value \nSelector type: $selectorType");
|
||||
}
|
||||
}
|
||||
|
||||
public function setDropdownValueWithJquery(string $id, $value): void
|
||||
{
|
||||
try {
|
||||
// Trigger blur/change to ensure the chosen dropdown update
|
||||
$this->executeJS("$('select#$id').val('$value').trigger('chosen:updated').trigger('change');");
|
||||
$this->executeJSBlur();
|
||||
$this->waitUntilDomReadyState();
|
||||
} catch (\Exception $e) {
|
||||
$this->fail("Failed on selecting dropdown value with jQuery on element id: $id");
|
||||
}
|
||||
}
|
||||
|
||||
public function setDropdownValueByIndexWithJquery(string $id, int $index): void
|
||||
{
|
||||
// eq(0) = first, eq(1) = second ...
|
||||
$value = $this->executeJS("return $('select#$id').find('option').eq($index).val();");
|
||||
$this->setDropdownValueWithJquery($id, $value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Multi select box
|
||||
*/
|
||||
public function selectItemInMultiSelectBox(string $selector, string $value): void
|
||||
{
|
||||
/**
|
||||
* This widget is a dual multi-select:
|
||||
* - left: select#items_from
|
||||
* - right: select#items_to
|
||||
* - add: a.selector-add
|
||||
* We select option(s) by value on the left and click "Add",
|
||||
* then wait until the option appears on the right.
|
||||
*/
|
||||
try {
|
||||
$this->openFormSection($selector);
|
||||
$rootCss = "#$selector #multiselect_1";
|
||||
$fromCss = "$rootCss select#items_from";
|
||||
$toCss = "$rootCss select#items_to";
|
||||
$addCss = "$rootCss a.selector-add";
|
||||
|
||||
$this->scrollElementIntoView($fromCss, self::CSS_SELECTOR);
|
||||
$this->select($this->byCssSelector($fromCss))->selectByValue($value);
|
||||
|
||||
// Click "Add" (move to the right)
|
||||
$this->scrollIntoViewHoverClick($addCss, self::CSS_SELECTOR);
|
||||
|
||||
// Wait until the moved option exists in the right select
|
||||
$this->elementWait(
|
||||
$toCss . ' option[value="' . $value . '"]',
|
||||
self::CSS_SELECTOR,
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false
|
||||
);
|
||||
|
||||
$this->executeJSBlur();
|
||||
} catch (\Exception $e) {
|
||||
$this->fail("Failed on selecting item in multi select box on element id: $selector");
|
||||
}
|
||||
}
|
||||
|
||||
public function removeItemInMultiSelectBox(string $selector, string $value): void
|
||||
{
|
||||
/** Remove a single value from the RIGHT box using "Remove". */
|
||||
try {
|
||||
$this->openFormSection($selector);
|
||||
$rootCss = "#$selector #multiselect_1";
|
||||
$toCss = "$rootCss select#items_to";
|
||||
|
||||
$this->scrollElementIntoView($toCss, self::CSS_SELECTOR);
|
||||
$toSelect = $this->byCssSelector($toCss);
|
||||
|
||||
// Ensure the option is present before trying to remove (clear error message if not)
|
||||
if (!$this->elementExists($toCss . ' option[value="' . $value . '"]', self::CSS_SELECTOR, true)) {
|
||||
$this->fail("Value '$value' not found in selected multi select box.");
|
||||
}
|
||||
|
||||
$this->select($toSelect)->selectByValue($value);
|
||||
|
||||
$this->scrollIntoViewHoverClick("$rootCss a.selector-remove", self::CSS_SELECTOR);
|
||||
$this->executeJSBlur();
|
||||
} catch (\Exception $e) {
|
||||
$this->fail("Failed on removing item in multi select box on element id: $selector");
|
||||
}
|
||||
}
|
||||
|
||||
public function chooseAllInMultiSelectBox(string $selector): void
|
||||
{
|
||||
try {
|
||||
$this->openFormSection($selector);
|
||||
$this->scrollIntoViewHoverClick("#$selector #multiselect_1 .available a.chooseall", self::CSS_SELECTOR);
|
||||
$this->executeJSBlur();
|
||||
} catch (\Exception $e) {
|
||||
$this->fail("Failed on choose-all in multi select box on element id: $selector");
|
||||
}
|
||||
}
|
||||
|
||||
public function clearAllInMultiSelectBox(string $selector): void
|
||||
{
|
||||
try {
|
||||
$this->openFormSection($selector);
|
||||
$this->scrollIntoViewHoverClick("#$selector #multiselect_1 .chosen a.clearall", self::CSS_SELECTOR);
|
||||
$this->executeJSBlur();
|
||||
} catch (\Exception $e) {
|
||||
$this->fail("Failed on clear-all in multi select box on element id: $selector");
|
||||
}
|
||||
}
|
||||
|
||||
private function getMultiSelectChosenValues(string $selector): array
|
||||
{
|
||||
$selector = "#$selector #multiselect_1 select#items_to option";
|
||||
if (!$this->elementExists($selector, self::CSS_SELECTOR, true)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$options = $this->getRemoteWebElements($selector, self::CSS_SELECTOR);
|
||||
$values = [];
|
||||
foreach ($options as $opt) {
|
||||
$values[] = (string)$opt->getAttribute('value');
|
||||
}
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
public function assertMultiSelectChosenContains(string $selector, array $expected): void
|
||||
{
|
||||
$actual = $this->getMultiSelectChosenValues($selector);
|
||||
$missing = array_values(array_diff($expected, $actual));
|
||||
$this->assertEmpty(
|
||||
$missing,
|
||||
'Multiselect is missing expected values: ' . implode(', ', $missing) .
|
||||
'. Actual: ' . implode(', ', $actual)
|
||||
);
|
||||
}
|
||||
|
||||
public function assertMultiSelectChosenEquals(string $selector, array $expected): void
|
||||
{
|
||||
$actual = $this->getMultiSelectChosenValues($selector);
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
$actual,
|
||||
'Multiselect chosen values mismatch. Expected: ' . implode(', ', $expected) .
|
||||
'. Actual: ' . implode(', ', $actual)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Form Settings
|
||||
*/
|
||||
public function openFormSection(string $selector = 'psettings'): void
|
||||
{
|
||||
$settings = $this->byId($selector);
|
||||
if (!strpos($settings->getAttribute('class'), 'hide')) {
|
||||
$settings->click();
|
||||
//$this->waitUntilDomReadyState();
|
||||
}
|
||||
}
|
||||
|
||||
public function closeFormSection(string $selector = 'psettings'): void
|
||||
{
|
||||
$settings = $this->byId($selector);
|
||||
if (strpos($settings->getAttribute('class'), 'hide')) {
|
||||
$settings->click();
|
||||
//$this->waitUntilDomReadyState();
|
||||
}
|
||||
}
|
||||
|
||||
private function addNewDataRowInFormSection(string $settings)
|
||||
{
|
||||
$this->byCssSelector("#$settings > div > div.add_more > a")->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Form actions
|
||||
*/
|
||||
public function cancelMainForm(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick('#base_table > div.doc div.title > div.fables-light-background-color > div > a', self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function goBackToTable(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick('.buttons_bottom #tback', self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function saveMainForm(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick('.buttons_bottom #fsave', self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function saveMainFormAndAssertSuccess(string $lang): void
|
||||
{
|
||||
$this->saveMainForm();
|
||||
$this->assertFormSuccessfullySavedMessage($lang);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Quick generate data for errors and save
|
||||
*/
|
||||
private function createNewDataRowsTestErrorsAndFillWithData(int $rows = 1, array $data = [], array $cfg = []): void
|
||||
{
|
||||
for ($row = 1; $row <= $rows; $row++) {
|
||||
$this->createNewDataRowTestErrorsAndFillForSave($data, $cfg);
|
||||
}
|
||||
}
|
||||
|
||||
private function createNewDataRowTestErrorsAndFillForSave(array $testData, array $rowCfg = []): void
|
||||
{
|
||||
if (empty($testData) || empty($rowCfg)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$elements = $this->getRemoteWebElements("{$rowCfg['container']} > ul", self::CSS_SELECTOR);
|
||||
$this->byCssSelector($rowCfg['newRow'])->click();
|
||||
$newIndex = (count($elements) + 1);
|
||||
// Wait for the row to pop up
|
||||
$this->elementWait($rowCfg['rowKey'] . $newIndex);
|
||||
|
||||
foreach ($testData as $field) {
|
||||
|
||||
// Change fields unique id in found a key
|
||||
$field['v'] = str_replace('%ID%', $newIndex, $field['v']);
|
||||
|
||||
$id = $field['id'] . $newIndex;
|
||||
$fieldPath = "{$rowCfg['inputPath']}#$id";
|
||||
$fieldParentPath = str_replace('%FIELD%', $id, $rowCfg['inputXPath']);
|
||||
$ribbonErrorSelector = "div.custom-status .cdrop [data-id='$id'] .emsg";
|
||||
|
||||
if ($field['mandatory'] ?? false) {
|
||||
$this->webDriver->executeScript("$('$fieldPath').focus().blur();");
|
||||
// Wait for the error
|
||||
$this->elementWait("{$fieldParentPath}[contains(@class,'v-error')]", self::XPATH);
|
||||
$this->elementWait($ribbonErrorSelector, self::CSS_SELECTOR);
|
||||
|
||||
// Check top ribbon error text
|
||||
$actualText = $this->byCssSelector($ribbonErrorSelector)->getText();
|
||||
$this->assertEquals(($field['o_text']), ($actualText));
|
||||
|
||||
$this->byCssSelector($fieldPath)->sendKeys($field['v']);
|
||||
$this->webDriver->executeScript("$('$fieldPath').blur();");
|
||||
$this->elementWaitRemoved("{$fieldParentPath}[contains(@class,'v-error')]", self::XPATH);
|
||||
$this->elementWaitRemoved($ribbonErrorSelector, self::CSS_SELECTOR);
|
||||
} elseif ($field['v'] ?? false) {
|
||||
$this->byCssSelector($fieldPath)->clear();
|
||||
$this->byCssSelector($fieldPath)->sendKeys($field['v']);
|
||||
$this->webDriver->executeScript("$('$fieldPath').focus().blur();");
|
||||
$this->elementWait("{$fieldParentPath}[contains(@class,'v-ok')]", self::XPATH);
|
||||
$this->assertTrue(
|
||||
$this->elementExists("{$fieldParentPath}[contains(@class,'v-ok')]", self::XPATH)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,345 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Traits\App\Helpers;
|
||||
|
||||
use Facebook\WebDriver\WebDriverBy;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
|
||||
trait formValidationTrait
|
||||
{
|
||||
public function getCompulsoryKey(): string
|
||||
{
|
||||
return 'compulsory';
|
||||
}
|
||||
|
||||
public function getTypeKey(): string
|
||||
{
|
||||
return 'type';
|
||||
}
|
||||
|
||||
public function getTypeText(): string
|
||||
{
|
||||
return 'text';
|
||||
}
|
||||
|
||||
public function getTypeEmail(): string
|
||||
{
|
||||
return 'email';
|
||||
}
|
||||
|
||||
public function getTypePhone(): string
|
||||
{
|
||||
return 'phone';
|
||||
}
|
||||
|
||||
public function getTypeNumber(): string
|
||||
{
|
||||
return 'number';
|
||||
}
|
||||
|
||||
public function getTypeDate(): string
|
||||
{
|
||||
return 'date';
|
||||
}
|
||||
|
||||
public function getTypeSelect(): string
|
||||
{
|
||||
return 'select';
|
||||
}
|
||||
|
||||
public function assertFieldErrorValidations(string $id, array $field, string $langCode): void
|
||||
{
|
||||
// Assert compulsory field error is shown after leaving the field empty.
|
||||
if ($field[$this->getCompulsoryKey()]) {
|
||||
if ($field[$this->getTypeKey()] == $this->getTypeSelect()) {
|
||||
$this->setDropdownValueByIndexWithJquery($id, 0);
|
||||
} else {
|
||||
$this->sendKeysAndTriggerValidation($id, '');
|
||||
}
|
||||
|
||||
$this->assertFieldHasCompulsoryError($id, $langCode);
|
||||
}
|
||||
|
||||
switch ($field[$this->getTypeKey()]) {
|
||||
case $this->getTypeDate():
|
||||
// Assert invalid date error is shown after entering invalid date.
|
||||
if ($field[$this->getCompulsoryKey()]) {
|
||||
$this->sendKeysAndTriggerValidation($id, 'test');
|
||||
$this->assertFieldHasCompulsoryError($id, $langCode);
|
||||
}
|
||||
|
||||
$this->sendKeysAndTriggerValidation($id, '123');
|
||||
$this->assertInvalidDateError($id, $langCode);
|
||||
|
||||
$this->sendKeysAndTriggerValidation($id, date($this->PUBDateFormat . ' ' . $this->PUBTime));
|
||||
$this->assertInvalidDateError($id, $langCode);
|
||||
break;
|
||||
case $this->getTypeNumber():
|
||||
$this->sendKeysAndTriggerValidation($id, 'asd');
|
||||
$this->assertFieldHasNotValidNumberError($id, $langCode);
|
||||
break;
|
||||
case $this->getTypeEmail():
|
||||
$this->sendKeysAndTriggerValidation($id, 'test');
|
||||
$this->assertInvalidEmailError($id, $langCode);
|
||||
break;
|
||||
case $this->getTypePhone():
|
||||
$this->sendKeysAndTriggerValidation($id, 'test');
|
||||
$this->assertInvalidPhoneError($id, $langCode);
|
||||
break;
|
||||
case $this->getTypeText():
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function fillingInDefaultRequiredFieldValue(string $fieldType, string $id): void
|
||||
{
|
||||
if ($fieldType === $this->getTypeDate()) {
|
||||
$this->sendKeysAndTriggerValidation($id, date($this->PUBDateFormat));
|
||||
} elseif ($fieldType === $this->getTypeSelect()) {
|
||||
$this->setDropdownValueByIndexWithJquery($id, 1);
|
||||
} elseif ($fieldType === $this->getTypeNumber()) {
|
||||
$this->sendKeysAndTriggerValidation($id, 0);
|
||||
} elseif ($fieldType === $this->getTypePhone()) {
|
||||
$this->sendKeysAndTriggerValidation($id, '+371123456789');
|
||||
} elseif ($fieldType === $this->getTypeEmail()) {
|
||||
$this->sendKeysAndTriggerValidation($id, 'test@zutenis.lv');
|
||||
} else {
|
||||
$this->sendKeysAndTriggerValidation($id, 'default value');
|
||||
}
|
||||
}
|
||||
|
||||
public function assertCompulsoryFields(array $compulsoryFields, string $langCode): void
|
||||
{
|
||||
// Assert the right amount of compulsory error is displayed in the sticky status bar
|
||||
$allCompErrors = $this->elementsByCssSelector("#custom-sticky-status-cnt > div > div > div.cdrop > div");
|
||||
$this->assertCount(count($compulsoryFields), $allCompErrors);
|
||||
|
||||
$compErrors = [];
|
||||
foreach ($allCompErrors as $remoteWebElement) {
|
||||
$compErrors[$remoteWebElement->getAttribute('data-id')]
|
||||
= $remoteWebElement->findElement(WebDriverBy::cssSelector('span.emsg'))->getText();
|
||||
}
|
||||
|
||||
foreach ($compulsoryFields as $id) {
|
||||
$this->assertFieldHasCompulsoryError($id, $langCode);
|
||||
$this->assertSame($compErrors[$id], $this->getFieldErrorMessage($id));
|
||||
}
|
||||
}
|
||||
|
||||
public function assertFieldsGeneralError(array $fields): void
|
||||
{
|
||||
// Assert the right amount of compulsory error is displayed in the sticky status bar
|
||||
$allCompErrors = $this->elementsByCssSelector("#custom-sticky-status-cnt > div > div > div.cdrop > div");
|
||||
$compErrors = [];
|
||||
foreach ($allCompErrors as $remoteWebElement) {
|
||||
$compErrors[$remoteWebElement->getAttribute('data-id')]
|
||||
= $remoteWebElement->findElement(WebDriverBy::cssSelector('span.emsg'))->getText();
|
||||
}
|
||||
|
||||
foreach ($fields as $field => $expected) {
|
||||
$err = "On field: $field, expected: $expected, got: {$compErrors[$field]}";
|
||||
$this->assertSame($compErrors[$field], $expected, $err);
|
||||
}
|
||||
}
|
||||
|
||||
public function assertFieldHasNotValidNumberError(string $id, string $lang = ''): void
|
||||
{
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$this->assertFieldHasError($id, 'Norādīts nekorekts cipars!');
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
$this->assertFieldHasError($id, 'Указан неправильно цифра!');
|
||||
break;
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$this->assertFieldHasError($id, 'Not a valid number specified!');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function assertInvalidDateError(string $id, string $lang = ''): void
|
||||
{
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$this->assertFieldHasError($id, 'Ievadīts nekorekts datums!');
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$this->assertFieldHasError($id, 'Invalid date specified!');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function assertInvalidEmailError(string $id, string $lang = ''): void
|
||||
{
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$this->assertFieldHasError($id, 'Ievadīta nekorekta e-pasta adrese!');
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
$this->assertFieldhasError($id, 'Не указан правильный адрес электронной почты!');
|
||||
break;
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$this->assertFieldHasError($id, 'Not a valid email address specified!');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function assertInvalidPhoneError(string $id, string $lang = ''): void
|
||||
{
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$this->assertFieldHasError($id, 'Norādīts nepareizs tālrunis!');
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
$this->assertFieldhasError($id, 'Указан неверный телефон!');
|
||||
break;
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$this->assertFieldHasError($id, 'Invalid telephone specified!');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function assertPartnerDocNrInUse(string $id, string $lang = ''): void
|
||||
{
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$this->assertFieldHasError($id, 'Partnera dokuments ar šo numuru jau ievadīts!');
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
$this->assertFieldhasError($id, 'Партнерский документ с этим номером уже введен!');
|
||||
break;
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$this->assertFieldHasError($id, 'Partner has already document with this number entered!');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function assertFieldHasCompulsoryError(string $id, $lang = ''): void
|
||||
{
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$this->assertFieldHasError($id, 'Lūdzu aizpildiet lauku!');
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
$this->assertFieldHasError($id, 'Пожалуйста, заполните поле!');
|
||||
break;
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$this->assertFieldHasError($id, 'Please fill in the field!');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function assertErrorWhileSavingForm($lang = null): void
|
||||
{
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$this->assertFormErrorMessage(
|
||||
'Saglabājot Dokumentu, Tika Atrastas Dažas Kļūdas',
|
||||
'Lai turpinātu, izlabojiet norādītās kļūdas. Uz katras kļūdas variet noklikšķināt, tādējādi ātri nokļūstot uz izvēlēto kļūdaino lauku formā!'
|
||||
);
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
$this->assertFormErrorMessage(
|
||||
'При Сохранении Документа Обнаружены Ошибки',
|
||||
'Пожалуйста, исправьте эти ошибки, прежде чем продолжить. Вы можете щелкнуть каждое поле, чтобы быстро перейти к полю ошибки!'
|
||||
);
|
||||
break;
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$this->assertFormErrorMessage(
|
||||
'Some Errors Were Found While Saving Document',
|
||||
'Please correct these mistakes before continuing, you may click on each if the field to quickly get to error field!'
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function getFieldValidateContainerXpath(string $selector, string $selectorType = self::ID): string
|
||||
{
|
||||
$element = $this->getRemoteWebElement($selector, $selectorType);
|
||||
$id = $element->getAttribute('id');
|
||||
return "//div[contains(@class, 'validate') and .//@id='$id']";
|
||||
}
|
||||
|
||||
public function getFieldValidateErrorContainerXpath(string $id): string
|
||||
{
|
||||
return "//div[contains(@class, 'validate') and contains(@class, 'v-error') and .//@id='$id']";
|
||||
}
|
||||
|
||||
public function getFieldErrorMessage(string $id): string
|
||||
{
|
||||
return $this->byXPath($this->getFieldValidateErrorContainerXpath($id) . "//div[contains(@class, 'errMsg')]")->getText();
|
||||
}
|
||||
|
||||
public function moveOnFieldValidateContainer(string $id): void
|
||||
{
|
||||
$containerXPath = $this->getFieldValidateErrorContainerXpath($id);
|
||||
$this->elementWait($containerXPath, self::XPATH);
|
||||
$this->webDriver->action()->moveToElement($this->byXPath($containerXPath))->perform();
|
||||
}
|
||||
|
||||
public function assertFieldHasError(string $id, string $expectedMessage): void
|
||||
{
|
||||
$errorXPath = $this->getFieldValidateErrorContainerXpath($id) . "//div[contains(@class, 'errMsg')]";
|
||||
$actualMessage = '';
|
||||
try {
|
||||
$this->moveOnFieldValidateContainer($id);
|
||||
|
||||
// Wait for the error message element to be present and visible
|
||||
$this->elementWait($errorXPath, self::XPATH, true, true, true, false);
|
||||
|
||||
$actualMessage = $this->byXPath($errorXPath)->getText();
|
||||
$this->assertSame($expectedMessage, $actualMessage); // TODO: Varbūt vajag gaidīt kamēr parādas teksts.
|
||||
} catch (\Exception $exception) {
|
||||
$msg = "Failed on error XPath: $errorXPath" . PHP_EOL . "With the message: {$exception->getMessage()}";
|
||||
$msg .= PHP_EOL . "Expected message '$expectedMessage', got '$actualMessage'";
|
||||
$this->fail($msg);
|
||||
}
|
||||
}
|
||||
|
||||
public function assertFieldIsOk(string $id): void
|
||||
{
|
||||
// Use XPath to find the .validate container with v-ok class for the specific field
|
||||
$containerXPath = "//div[contains(@class, 'validate') and contains(@class, 'v-ok') and .//@id='$id']";
|
||||
$this->assertTrue($this->elementExists($containerXPath, self::XPATH, true), "Xpath '$containerXPath'");
|
||||
}
|
||||
|
||||
public function assertFormErrorMessage(string $messageTitle, string $messageDescription): void
|
||||
{
|
||||
$validatorCustomerMsg = '#custom-sticky-status-cnt > div > div.validator-custom-msg';
|
||||
$selector = $validatorCustomerMsg . '.err-show > h3';
|
||||
$descSelector = $validatorCustomerMsg . '.err-show > div.desc > p';
|
||||
|
||||
$this->scrollElementIntoView($selector, self::CSS_SELECTOR);
|
||||
$this->assertElementTextContainsByCss($selector, $messageTitle);
|
||||
$this->assertElementTextContainsByCss($descSelector, $messageDescription);
|
||||
}
|
||||
|
||||
public function assertFormSuccessfullySavedMessage(string $lang = ''): void
|
||||
{
|
||||
$selector = '#custom-sticky-status-cnt > div > div > h3';
|
||||
$this->scrollElementIntoView($selector, self::CSS_SELECTOR);
|
||||
switch ($lang) {
|
||||
case siteLanguages::LANG_LV:
|
||||
$this->assertElementTextContainsByCss($selector, "Dati Veiksmīgi Saglabāti!");
|
||||
break;
|
||||
case siteLanguages::LANG_RU:
|
||||
$this->assertElementTextContainsByCss($selector, "Данные Были Успешно Сохранены!");
|
||||
break;
|
||||
case siteLanguages::LANG_EN:
|
||||
default:
|
||||
$this->assertElementTextContainsByCss($selector, "Data Has Been Successfully Saved!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Traits\App\Helpers;
|
||||
|
||||
/**
|
||||
* Tests provide a small per-language config; this trait expands it into the object-structure
|
||||
* used by existing tests ($page->menuItem, $page->gM->pageTitle, etc.).
|
||||
*/
|
||||
trait pageDataTrait
|
||||
{
|
||||
private array $uoDefaultTableColumns = [
|
||||
'h_checkbox',
|
||||
'h_id',
|
||||
'h_a_title',
|
||||
'h_a_desc',
|
||||
'h_cl_name',
|
||||
'h_a_created',
|
||||
'h_a_valid_from',
|
||||
'h_a_valid_till',
|
||||
'h_status',
|
||||
'h_buttons',
|
||||
];
|
||||
|
||||
private array $uoDefaultTableColumnsToSkip = [
|
||||
'h_checkbox',
|
||||
'h_status',
|
||||
'h_buttons',
|
||||
];
|
||||
|
||||
/**
|
||||
* Build expanded page data for Unified Objects tests.
|
||||
*
|
||||
* Input config (per language):
|
||||
* [
|
||||
* LANG_CODE => [
|
||||
* 'url' => '...',
|
||||
* 'menuItem' => '...',
|
||||
* 'pageTitle' => '...',
|
||||
* 'objectItem' => '...',
|
||||
* 'messagesExist' => ['mod' => '...', 'sub' => '...'], // partial ok
|
||||
*
|
||||
* 'tableColumns' => [
|
||||
* 'remove' => ['h_cl_name'],
|
||||
* 'add' => ['h_custom' => 'Custom label'], // adds to order + adds label
|
||||
* ],
|
||||
* 'rename' => ['h_a_title' => 'Title'], // label override for existing column
|
||||
*
|
||||
* 'tableColumnsToSkip' => [
|
||||
* 'add' => ['h_custom'],
|
||||
* 'remove' => ['h_status'],
|
||||
* ],
|
||||
* ],
|
||||
* ]
|
||||
*
|
||||
* Extra supported keys (optional):
|
||||
* - 'dropdownActions' => ['inew' => '...', ...]
|
||||
* - 'tableColumnsOrder' => ['h_checkbox', 'h_id', ...] // overrides default order for this language/test
|
||||
*
|
||||
* @return array<string, object> languageCode => pageData object
|
||||
*/
|
||||
protected function getPageData(array $config): array
|
||||
{
|
||||
$out = [];
|
||||
|
||||
foreach ($config as $langCode => $cfg) {
|
||||
if (!is_array($cfg)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// TODO: Table columns and skip columns should be simplified.
|
||||
$tableCfg = is_array($cfg['tableColumns'] ?? null) ? $cfg['tableColumns'] : [];
|
||||
$rename = is_array($tableCfg['rename'] ?? null) ? $tableCfg['rename'] : [];
|
||||
$removeCols = is_array($tableCfg['remove'] ?? null) ? $tableCfg['remove'] : [];
|
||||
$addCols = is_array($tableCfg['add'] ?? null) ? $tableCfg['add'] : [];
|
||||
|
||||
$skipCfg = is_array($cfg['tableColumnsToSkip'] ?? null) ? $cfg['tableColumnsToSkip'] : [];
|
||||
$skipAdd = is_array($skipCfg['add'] ?? null) ? $skipCfg['add'] : [];
|
||||
$skipRemove = is_array($skipCfg['remove'] ?? null) ? $skipCfg['remove'] : [];
|
||||
|
||||
$baseOrder = is_array($cfg['tableColumnsOrder'] ?? null)
|
||||
? $cfg['tableColumnsOrder']
|
||||
: $this->uoDefaultTableColumns;
|
||||
|
||||
$tableColumns = $this->buildTableColumnsFromBase($baseOrder, $removeCols, array_keys($addCols));
|
||||
$tableColumnsToSkip = $this->buildTableColumnsToSkip($removeCols, $skipAdd, $skipRemove);
|
||||
|
||||
// Labels map:
|
||||
// - rename overrides existing labels
|
||||
// - add provides labels for new columns (and can also override if same key)
|
||||
$labels = [];
|
||||
foreach ($rename as $id => $label) {
|
||||
$labels[(string)$id] = (string)$label;
|
||||
}
|
||||
foreach ($addCols as $id => $label) {
|
||||
$labels[(string)$id] = (string)$label;
|
||||
}
|
||||
|
||||
$expanded = [
|
||||
'url' => isset($cfg['url']) ? (string)$cfg['url'] : '',
|
||||
'menuItem' => isset($cfg['menuItem']) ? (string)$cfg['menuItem'] : '',
|
||||
'menuParentItem' => isset($cfg['menuItem']) ? (string)$cfg['menuParentItem'] : '',
|
||||
'gM' => (object)[
|
||||
'pageTitle' => isset($cfg['pageTitle']) ? (string)$cfg['pageTitle'] : '',
|
||||
'objectItem' => isset($cfg['objectItem']) ? (string)$cfg['objectItem'] : '',
|
||||
'messagesExist' => is_array($cfg['messagesExist'] ?? null) ? $cfg['messagesExist'] : [],
|
||||
'tableColumns' => $labels,
|
||||
'dropdownActions' => is_array($cfg['dropdownActions'] ?? null) ? $cfg['dropdownActions'] : [],
|
||||
'validationErrors' => is_array($cfg['validationErrors'] ?? null) ? $cfg['validationErrors'] : [],
|
||||
'rowActions' => is_array($cfg['rowActions'] ?? null) ? $cfg['rowActions'] : [],
|
||||
'dialog' => is_array($cfg['dialog'] ?? null) ? $cfg['dialog'] : [],
|
||||
],
|
||||
'tableColumns' => $tableColumns,
|
||||
'tableColumnsToSkip' => $tableColumnsToSkip,
|
||||
];
|
||||
|
||||
$out[(string)$langCode] = (object) $expanded;
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $baseOrder
|
||||
* @param string[] $remove
|
||||
* @param string[] $addIds
|
||||
* @return string[]
|
||||
*/
|
||||
private function buildTableColumnsFromBase(array $baseOrder, array $remove, array $addIds): array
|
||||
{
|
||||
$cols = array_merge(array_values(array_diff($baseOrder, $remove)), $addIds);
|
||||
|
||||
// Keep order, drop duplicates.
|
||||
$seen = [];
|
||||
$out = [];
|
||||
foreach ($cols as $id) {
|
||||
$id = (string) $id;
|
||||
if (isset($seen[$id])) {
|
||||
continue;
|
||||
}
|
||||
$seen[$id] = true;
|
||||
$out[] = $id;
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[] $removedColumns
|
||||
* @param string[] $skipAdd
|
||||
* @param string[] $skipRemove
|
||||
* @return string[]
|
||||
*/
|
||||
private function buildTableColumnsToSkip(array $removedColumns, array $skipAdd, array $skipRemove): array
|
||||
{
|
||||
$allRemove = array_merge($removedColumns, $skipRemove);
|
||||
|
||||
$skip = array_diff($this->uoDefaultTableColumnsToSkip, $allRemove);
|
||||
$skip = array_merge(array_values($skip), $skipAdd);
|
||||
|
||||
// Keep order, drop duplicates.
|
||||
$seen = [];
|
||||
$out = [];
|
||||
foreach ($skip as $id) {
|
||||
$id = (string) $id;
|
||||
if (isset($seen[$id])) {
|
||||
continue;
|
||||
}
|
||||
$seen[$id] = true;
|
||||
$out[] = $id;
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,565 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Traits\App\Helpers;
|
||||
|
||||
use Facebook\WebDriver\Exception\WebDriverException;
|
||||
use Facebook\WebDriver\WebDriverBy;
|
||||
use Facebook\WebDriver\WebDriverKeys;
|
||||
|
||||
trait tableLayoutTrait
|
||||
{
|
||||
private $baseTableData = '#base_table > div.table-data';
|
||||
private $colHeaderSelector = '#cms-table-drop-marker ul.thead';
|
||||
private $tableBodyContainer = '#cms-table-drop-marker .table-rows .tbody';
|
||||
private $tablePagerContainer = "//ul[@class='dx pager-cnt']";
|
||||
|
||||
public function testTableHeaderTitles(array $idToTitleText = null): void
|
||||
{
|
||||
if (is_null($idToTitleText)) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($idToTitleText as $id => $textToValidate) {
|
||||
|
||||
$this->assertTrue(
|
||||
$this->elementExists("$this->colHeaderSelector #$id", self::CSS_SELECTOR),
|
||||
"Failed locating element by CSS selector: $this->colHeaderSelector #$id"
|
||||
);
|
||||
|
||||
switch ($id) {
|
||||
case 'h_checkbox':
|
||||
break;
|
||||
|
||||
case 'h_buttons':
|
||||
$this->assertStringContainsString(
|
||||
$textToValidate,
|
||||
$this->byCssSelector("$this->colHeaderSelector #$id > a")->getText()
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
$this->assertEquals(
|
||||
$textToValidate,
|
||||
$this->byCssSelector("$this->colHeaderSelector #$id div")->getText()
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testTableRowBaseCheckboxes(): void
|
||||
{}
|
||||
|
||||
public function testTableBaseFunctionality()
|
||||
{
|
||||
// Test header columns
|
||||
|
||||
// Test column sort
|
||||
|
||||
// Test column reorder
|
||||
|
||||
// Test rows per page
|
||||
|
||||
// Test column visibility
|
||||
|
||||
// Test row search
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** Table settings */
|
||||
public function openTableSettings(string $id = 'iTableSettings', string $class = 'base-table-settings'): void
|
||||
{
|
||||
$headerSelector = "#dialogSlider.$class .slider-wrapper .header > h3";
|
||||
if (
|
||||
$this->elementExists($headerSelector, self::CSS_SELECTOR, true) &&
|
||||
$this->byCssSelector($headerSelector)->isDisplayed()
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->selectTableActionById($id);
|
||||
$this->waitTableSlider($headerSelector);
|
||||
}
|
||||
|
||||
public function closeTableSettings(): void
|
||||
{
|
||||
$headerSelector = '#dialogSlider .slider-wrapper .header > h3';
|
||||
if (
|
||||
$this->elementExists($headerSelector, self::CSS_SELECTOR) &&
|
||||
$this->byCssSelector($headerSelector)->isDisplayed()
|
||||
) {
|
||||
$this->scrollElementIntoView($headerSelector, self::CSS_SELECTOR);
|
||||
$this->byCssSelector("$headerSelector a.close")->click();
|
||||
$this->elementWaitRemoved("$headerSelector a.close", self::CSS_SELECTOR);
|
||||
}
|
||||
}
|
||||
|
||||
public function updateTableSettingsViewMaxRows(int $rows = 40): void
|
||||
{
|
||||
$this->openTableSettings();
|
||||
$this->setTableSettingsMaxRowsPerPage($rows);
|
||||
$this->cmsConfirmDialogSliderActionYes();
|
||||
|
||||
$this->waitUntilDomReadyState();
|
||||
$rowsListed = $this->getRemoteWebElements("$this->tableBodyContainer > ul", self::CSS_SELECTOR);
|
||||
$this->assertTrue(count($rowsListed) <= $rows);
|
||||
}
|
||||
|
||||
public function setTableSettingsMaxRowsPerPage(int $rowsPerPage = 10): void
|
||||
{
|
||||
$this->openTableSettings();
|
||||
$inputSelector = '#dialogSlider .slider-wrapper #pBase #a_rec_per_page';
|
||||
$this->scrollElementIntoView($inputSelector, self::CSS_SELECTOR);
|
||||
|
||||
$this->byCssSelector($inputSelector)->clear()->sendKeys($rowsPerPage);
|
||||
$this->webDriver->executeScript('$("' . $inputSelector . '").focus().blur();');
|
||||
}
|
||||
|
||||
public function selectTableSettingsCheckbox(string $id, bool $visibility): void
|
||||
{
|
||||
$chkSelector = "#dialogSlider .slider-wrapper .document-settings .inner-cnt > ul #$id";
|
||||
$this->scrollElementIntoView($chkSelector, self::CSS_SELECTOR);
|
||||
|
||||
$element = $this->byCssSelector($chkSelector);
|
||||
$isChecked = str_contains($element->getAttribute('class'), "chked");
|
||||
|
||||
if ($isChecked !== $visibility) {
|
||||
$element->click();
|
||||
}
|
||||
}
|
||||
|
||||
public function selectTableRow(int $row): void
|
||||
{
|
||||
$chkSelector = $this->tableBodyContainer . " > ul:nth-child($row) > li.first > div > div.chk";
|
||||
$this->toggleCheckbox($chkSelector);
|
||||
}
|
||||
|
||||
public function resetTableSettingsColumnConfig(array $defaultConfig): void
|
||||
{
|
||||
$this->openTableSettings();
|
||||
$this->scrollIntoViewHoverClick("#dialogSlider .slider-wrapper #reset_cfg", self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
$this->elementWaitRemoved("#dialogSlider .slider-wrapper a.close", self::CSS_SELECTOR);
|
||||
|
||||
$this->testTableHeaderTitles($defaultConfig);
|
||||
}
|
||||
|
||||
public function updateTableSettingsColumnsVisibility(array $config): void
|
||||
{
|
||||
$this->openTableSettings();
|
||||
|
||||
foreach ($config as $id => $data) {
|
||||
$this->selectTableSettingsCheckbox($id, $data);
|
||||
}
|
||||
|
||||
$this->cmsConfirmDialogSliderActionYes();
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
foreach ($config as $id => $visibility) {
|
||||
$elementExists = $this->elementExists("$this->colHeaderSelector > #$id", self::CSS_SELECTOR, true);
|
||||
$this->assertEquals($visibility, $elementExists, "Element id: $id");
|
||||
}
|
||||
}
|
||||
|
||||
public function reorderTableSettingsColumnConfig(array $orderedIds): void
|
||||
{
|
||||
$this->openTableSettings();
|
||||
|
||||
$allItemsSel = '#dialogSlider .slider-wrapper .document-settings .inner-cnt li';
|
||||
$allItems = $this->getRemoteWebElements($allItemsSel, self::CSS_SELECTOR);
|
||||
|
||||
foreach ($orderedIds as $targetPosition => $itemId) {
|
||||
$elementXpath = "//div[@id='dialogSlider']/div[2]//ul/li[.//*[@id='$itemId']]";
|
||||
$targetPosition += 1; // First is reserved
|
||||
$this->dragTableSettingListItemToPosition($elementXpath, $allItems, $targetPosition);
|
||||
}
|
||||
|
||||
$this->cmsConfirmDialogSliderActionYes();
|
||||
|
||||
foreach ($orderedIds as $itemId) {
|
||||
$exists = $this->elementExists("$this->colHeaderSelector > #$itemId", self::CSS_SELECTOR, true);
|
||||
$this->assertTrue($exists, 'Failed on: ' . $itemId);
|
||||
}
|
||||
}
|
||||
|
||||
public function reorderTableColumn(array $orderedIds): void
|
||||
{
|
||||
foreach ($orderedIds as $targetPosition => $itemId) {
|
||||
$elementXpath = "//*[@id='cms-table-drop-marker']//li[@id='$itemId']";
|
||||
$allItemsSel = $this->colHeaderSelector . ' > li';
|
||||
$allItems = $this->getRemoteWebElements($allItemsSel, self::CSS_SELECTOR);
|
||||
$targetPosition += 2;
|
||||
$this->dragTableSettingListItemToPosition($elementXpath, $allItems, $targetPosition);
|
||||
}
|
||||
|
||||
foreach ($orderedIds as $itemId) {
|
||||
$exists = $this->elementExists("$this->colHeaderSelector > #$itemId", self::CSS_SELECTOR, true);
|
||||
$this->assertTrue($exists, 'Failed on: ' . $itemId);
|
||||
}
|
||||
}
|
||||
|
||||
public function dragTableSettingListItemToPosition(string $xpath, array $allItems, int $targetPosition): void
|
||||
{
|
||||
$sourceElement = $this->scrollElementIntoView($xpath, self::XPATH);
|
||||
$currentPosition = $this->getElementPosition($sourceElement, $allItems);
|
||||
if ($currentPosition === $targetPosition) {
|
||||
return;
|
||||
}
|
||||
|
||||
$targetElement = $allItems[$targetPosition];
|
||||
$movingLeft = $currentPosition > $targetPosition;
|
||||
|
||||
// Target near edge of the target element — avoids misfiring on wide columns
|
||||
// Offset is from the center: negative = left side, positive = right side
|
||||
$targetWidth = $targetElement->getSize()->getWidth();
|
||||
$xOffset = $movingLeft
|
||||
? -intdiv($targetWidth, 2) + 5 // near left edge
|
||||
: intdiv($targetWidth, 2) - 5; // near right edge
|
||||
|
||||
try {
|
||||
$this->webDriver->action()
|
||||
->clickAndHold($sourceElement)
|
||||
->moveToElement($targetElement, $xOffset, 0)
|
||||
->release()
|
||||
->perform();
|
||||
$this->waitUntilDomReadyState();
|
||||
} catch (WebDriverException $e) {
|
||||
$this->assertFalse(
|
||||
sprintf(
|
||||
"dragListItemToPosition failed.\nSource xpath: %s\nError: %s",
|
||||
$xpath,
|
||||
$e->getMessage()
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function waitTableSlider($headerSelector): void
|
||||
{
|
||||
$this->elementWait($headerSelector, self::CSS_SELECTOR);
|
||||
$this->scrollElementIntoView($headerSelector, self::CSS_SELECTOR);
|
||||
|
||||
$exists = $this->elementExists($headerSelector, self::CSS_SELECTOR, true);
|
||||
$this->assertTrue($exists, "Failed locating element by CSS selector: $headerSelector");
|
||||
}
|
||||
|
||||
|
||||
/** Table actions */
|
||||
public function selectTableActionById($id): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick("$this->colHeaderSelector #h_buttons a", self::CSS_SELECTOR);
|
||||
$this->scrollIntoViewHoverClick("#table-actions li#$id a", self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function deleteTableRow($row, bool $scrollIntoView = false): void
|
||||
{
|
||||
$selector = $this->tableBodyContainer . " > ul:nth-child($row) > li.last.actions > div > a#ldelete";
|
||||
$this->openConfirmDialog($selector, $scrollIntoView);
|
||||
$this->cmsConfirmDialogActionYes();
|
||||
}
|
||||
|
||||
public function editTableRow($row, bool $scrollIntoView = false): void
|
||||
{
|
||||
$selector = $this->tableBodyContainer . " > ul:nth-child($row) > li.last.actions > div > a#ledit";
|
||||
|
||||
if ($scrollIntoView) {
|
||||
$this->scrollElementIntoView($selector, self::CSS_SELECTOR);
|
||||
}
|
||||
|
||||
$this->byCssSelector($selector)->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function editTableRowById(int $id, bool $scrollIntoView = false): void
|
||||
{
|
||||
$selector = $this->tableBodyContainer . " ul[id='$id'] > li.last.actions > div > a#ledit";
|
||||
|
||||
if ($scrollIntoView) {
|
||||
$this->scrollElementIntoView($selector, self::CSS_SELECTOR);
|
||||
}
|
||||
$this->byCssSelector($selector)->click();
|
||||
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function clickRowExcelExport($row, bool $scrollIntoView = false): void
|
||||
{
|
||||
$selector = $this->tableBodyContainer . " > ul:nth-child($row) > li > div > a.download_pdf";
|
||||
|
||||
if ($scrollIntoView) {
|
||||
$this->scrollElementIntoView($selector, self::CSS_SELECTOR);
|
||||
}
|
||||
$this->byCssSelector($selector)->click();
|
||||
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function clickRowExcelExportById(int $id, bool $scrollIntoView = false): void
|
||||
{
|
||||
$selector = $this->tableBodyContainer . " > ul[id='$id'] > li > div > a.download_pdf";
|
||||
if ($scrollIntoView) {
|
||||
$this->scrollElementIntoView($selector, self::CSS_SELECTOR);
|
||||
}
|
||||
|
||||
$this->byCssSelector($selector)->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function addNewRecord(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick('.table-bactions ' . $this->getNewButtonId(), self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function getNewButtonId(): string
|
||||
{
|
||||
return '#bButtonNew';
|
||||
}
|
||||
|
||||
public function cloneTableRow(int $row): void
|
||||
{
|
||||
$this->selectTableRow($row);
|
||||
$this->byId('clone')->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
|
||||
/** Table search */
|
||||
public function openCmsTableSearch(): void
|
||||
{
|
||||
$this->byId("btnSearch")->click();
|
||||
}
|
||||
|
||||
public function resetCmsTableSearch(): void
|
||||
{
|
||||
$this->byCssSelector(".sticky-header .search-hidden #tSearch > ul #tclear")->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function searchCmsTableByColumn(string $columnID, string $value, bool $submit = true): void
|
||||
{
|
||||
if (!$this->getRemoteWebElement('tSearch')->isDisplayed()) {
|
||||
$this->openCmsTableSearch();
|
||||
}
|
||||
|
||||
$search = ".sticky-header .search-hidden #tSearch > ul";
|
||||
$selector = "$search #$columnID";
|
||||
$parentLi = $this->byCssSelector($selector)->findElement(WebDriverBy::xpath("./ancestor::li[1]"));
|
||||
if (strpos($parentLi->getAttribute('class'), 'dropBox') !== false) {
|
||||
$this->scrollIntoViewHoverClick("//input[@id='$columnID']/preceding-sibling::span[1]", self::XPATH);
|
||||
$selectedValue = "//input[@id='$columnID']/ancestor::li//ul/li[@id='$value']";
|
||||
$this->scrollIntoViewHoverClick($selectedValue, self::XPATH);
|
||||
$this->waitUntilDomReadyState();
|
||||
// We don't need to submit the search as DropBox auto submits the form.
|
||||
} else {
|
||||
$element = $this->byCssSelector($selector);
|
||||
$element->click()->clear()->sendKeys($value);
|
||||
if ($submit) {
|
||||
$element->click()->sendKeys(WebDriverKeys::ENTER);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function sortTableByColumn(string $columnID, string $orderWay = 'ASC'): void
|
||||
{
|
||||
$colSelector = "$this->colHeaderSelector #$columnID";
|
||||
$this->assertTrue(
|
||||
$this->elementExists($colSelector, self::CSS_SELECTOR),
|
||||
"Failed locating element by CSS selector: $this->colHeaderSelector #$columnID"
|
||||
);
|
||||
|
||||
if (
|
||||
$orderWay == 'ASC' &&
|
||||
(
|
||||
$this->elementHasClass('sortDesc', $colSelector, self::CSS_SELECTOR) ||
|
||||
!$this->elementHasClass('sort', $colSelector, self::CSS_SELECTOR)
|
||||
)
|
||||
) {
|
||||
$this->byCssSelector($colSelector)->click();
|
||||
$this->elementWait("$this->colHeaderSelector #$columnID.sort", self::CSS_SELECTOR);
|
||||
}
|
||||
|
||||
if (
|
||||
$orderWay == 'DESC' &&
|
||||
!$this->elementHasClass('sortDesc', $colSelector, self::CSS_SELECTOR)
|
||||
) {
|
||||
if (!$this->elementHasClass('sort', $colSelector, self::CSS_SELECTOR)) {
|
||||
$this->byCssSelector($colSelector)->click();
|
||||
$this->elementWait("$this->colHeaderSelector #$columnID.sort", self::CSS_SELECTOR);
|
||||
}
|
||||
|
||||
$this->byCssSelector($colSelector)->click();
|
||||
$this->elementWait("$this->colHeaderSelector #$columnID.sortDesc", self::CSS_SELECTOR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** Footer helper functions **/
|
||||
public function navigateThroughPager($expectedPages, $pageCallback = null, int $fix = 7)
|
||||
{
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
$this->assertCurrentPage(1);
|
||||
$this->assertPreviousButtonExists(false);
|
||||
|
||||
// If only 1 page, then run the callback and go back.
|
||||
if ($expectedPages === 1) {
|
||||
$this->assertNextButtonExists(false);
|
||||
|
||||
if ($pageCallback) {
|
||||
call_user_func($pageCallback, 1);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$this->assertNextButtonExists($this->shouldShowNextButton(1, $expectedPages));
|
||||
|
||||
// Navigate through each page - test the next button.
|
||||
for ($page = 2; $page <= $expectedPages; $page++) {
|
||||
|
||||
if (!$this->shouldShowNextButton($page, $expectedPages)) {
|
||||
$this->clickPageNumber($page);
|
||||
} else {
|
||||
$this->clickNext();
|
||||
}
|
||||
|
||||
$this->waitUntilDomReadyState();
|
||||
$this->assertCurrentPage($page);
|
||||
|
||||
$this->assertPreviousButtonExists($this->shouldShowPreviousButton($page, $expectedPages, $fix));
|
||||
$this->assertNextButtonExists($this->shouldShowNextButton($page, $expectedPages, $fix));
|
||||
|
||||
if ($pageCallback) {
|
||||
call_user_func($pageCallback, $page);
|
||||
}
|
||||
}
|
||||
|
||||
// Go back to page 1 - test the previous button
|
||||
for ($page = $expectedPages - 1; $page >= 1; $page--) {
|
||||
|
||||
if ($this->shouldShowPreviousButton($page, $expectedPages,$fix)) {
|
||||
$this->clickPrevious();
|
||||
} else {
|
||||
$this->clickPageNumber($page);
|
||||
}
|
||||
|
||||
$this->waitUntilDomReadyState();
|
||||
$this->assertCurrentPage($page);
|
||||
|
||||
$this->assertPreviousButtonExists($this->shouldShowPreviousButton($page, $expectedPages,$fix));
|
||||
$this->assertNextButtonExists($this->shouldShowNextButton($page, $expectedPages,$fix));
|
||||
}
|
||||
}
|
||||
|
||||
public function shouldShowPreviousButton($currentPage, $totalPages, int $fix = 7): bool
|
||||
{
|
||||
/** Previous is displayed only if total pages over 7, and we are over the fifth page. */
|
||||
return $totalPages > $fix && $currentPage > 4;
|
||||
}
|
||||
|
||||
public function shouldShowNextButton($currentPage, $totalPages, int $fix = 7): bool
|
||||
{
|
||||
/** The Next button is displayed if there are more than 7 pages, and we're not on the last 4 pages. */
|
||||
return $totalPages > $fix && $currentPage < $totalPages - 3;
|
||||
}
|
||||
|
||||
public function clickNext(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick(
|
||||
"$this->tablePagerContainer/li[contains(@class, 'last')]//a[@class='nextp']",
|
||||
self::XPATH,
|
||||
);
|
||||
}
|
||||
|
||||
public function clickPrevious(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick(
|
||||
"$this->tablePagerContainer/li[contains(@class, 'first')]//a[@class='prevp']",
|
||||
self::XPATH,
|
||||
);
|
||||
}
|
||||
|
||||
public function clickPageNumber($pageNumber): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick("$this->tablePagerContainer/li[@id='$pageNumber']//a", self::XPATH);
|
||||
}
|
||||
|
||||
public function assertPreviousButtonExists(bool $exists = true): void
|
||||
{
|
||||
$selector = "$this->tablePagerContainer/li[contains(@class, 'first')]//a[@class='prevp']";
|
||||
$this->assertSame($exists, $this->elementExists($selector, self::XPATH, true));
|
||||
}
|
||||
|
||||
public function assertNextButtonExists(bool $exists = true): void
|
||||
{
|
||||
$selector = "$this->tablePagerContainer/li[contains(@class, 'last')]//a[@class='nextp']";
|
||||
$this->assertSame($exists, $this->elementExists($selector, self::XPATH, true));
|
||||
}
|
||||
|
||||
public function assertCurrentPage($pageNumber): void
|
||||
{
|
||||
$selectedPage = $this->byXPath("$this->tablePagerContainer/li[contains(@class, 'sel')]");
|
||||
$actualPage = (int)$selectedPage->getAttribute('id');
|
||||
$this->assertEquals($pageNumber, $actualPage, "Wrong page. Expected: $pageNumber, actual: $actualPage");
|
||||
|
||||
// Check <a> has 'selected'
|
||||
$link = $selectedPage->findElement(WebDriverBy::tagName('a'));
|
||||
$msg = "Page $pageNumber link has not been marked as selected";
|
||||
$this->assertStringContainsString('selected', $link->getAttribute('class'), $msg);
|
||||
}
|
||||
|
||||
public function assertTablePagerCount(string $pager): void
|
||||
{
|
||||
$selector = "#cms-table-drop-marker .pager .rcount";
|
||||
$this->assertStringContainsString($pager, $this->byCssSelector($selector)->getText());
|
||||
}
|
||||
|
||||
public function toggleTableRowLastCheckbox(int $id, bool $tick = true): void
|
||||
{
|
||||
$chkSelector = "//ul[@id='$id']//li[not(contains(@class, 'first'))][last()]//div[@class='ncheckbox']";
|
||||
$this->scrollElementIntoView($chkSelector, self::XPATH);
|
||||
$element = $this->byXPath($chkSelector);
|
||||
$isChecked = str_contains($element->getAttribute('class'), "chked");
|
||||
if ($isChecked !== $tick) {
|
||||
$element->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
}
|
||||
|
||||
public function searchCmsTableByColumnId(int $id, bool $submit = true): void
|
||||
{
|
||||
$this->searchCmsTableByColumn('id', (string) $id, $submit);
|
||||
}
|
||||
|
||||
public function sortCmsTableByColumnId(string $order = 'ASC'): void
|
||||
{
|
||||
$this->sortTableByColumn('h_id', $order);
|
||||
}
|
||||
|
||||
public function validateTableOrderBy($page, array $expectedData): void
|
||||
{
|
||||
$col = 3;
|
||||
foreach ($page->tableColumns as $tableColumn) {
|
||||
if (in_array($tableColumn, $page->tableColumnsToSkip ?? [])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isset($expectedData[$tableColumn])) {
|
||||
$col++;
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->sortTableByColumn($tableColumn);
|
||||
$this->assertCmsTableRowData(1, $col, $expectedData[$tableColumn]['ASC']);
|
||||
|
||||
$this->sortTableByColumn($tableColumn, 'DESC');
|
||||
$this->assertCmsTableRowData(1, $col, $expectedData[$tableColumn]['DESC']);
|
||||
|
||||
$col++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\Traits\App;
|
||||
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteAccounts;
|
||||
|
||||
trait pubUsersTrait
|
||||
{
|
||||
function logIntoApplicationByUserType(
|
||||
$eUserLogin,
|
||||
bool $acceptCookies = true,
|
||||
string $siteAccount = siteAccounts::ACCOUNT_SELF_EMPLOYED
|
||||
) {
|
||||
$loginData = $this->getLoginCredentialsByType($eUserLogin);
|
||||
|
||||
$this->url($loginData['url']);
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
// Check if we landed on dashboard - already logged in
|
||||
if ($this->elementExists('report_period_chosen')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Else continue with the login
|
||||
$this->elementWait('user_login');
|
||||
|
||||
$this->byId("user_login")->sendKeys($loginData['user']);
|
||||
$this->byId("user_password")->sendKeys($loginData['password']);
|
||||
|
||||
$this->byCssSelector("form#frm_input div#agree_to_terms")->click();
|
||||
$this->byCssSelector("form#frm_input button.btn.btn-block")->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
$this->awaitAndFill2FASecurityAfterLoginRequest($loginData);
|
||||
if (strlen($siteAccount) > 0) {
|
||||
$this->awaitAndSelectAccount($siteAccount);
|
||||
} else {
|
||||
sleep(1); // Sleep - otherwise awaitAndAcceptCookies() fail.
|
||||
}
|
||||
$this->awaitAndAcceptCookies();
|
||||
}
|
||||
|
||||
function fillAndSubmitPasswordChangeForm(array $data)
|
||||
{
|
||||
if ($this->byId("old_password")->isEnabled()) {
|
||||
$this->byId("old_password")->clear()->sendKeys($data['oldPass']);
|
||||
}
|
||||
$this->byId("new_password")->sendKeys($data['newPass']);
|
||||
$this->byId("rnew_password")->sendKeys($data['newPass']);
|
||||
|
||||
$this->byCssSelector("form#pwd_cnt > button.btn.btn-block")->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
function awaitAndProceedWithSecuritySetupRequest()
|
||||
{
|
||||
$this->elementWait('a.enable_2fa', self::CSS_SELECTOR);
|
||||
|
||||
$this->byCssSelector('a.enable_2fa')->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
function awaitAndFill2FASecurityAfterLoginRequest(array $loginData): void
|
||||
{
|
||||
// Wait for form to load 2fa elements & continue with testing
|
||||
$this->elementWait('frm_2fa_input');
|
||||
|
||||
// Validate code
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($loginData['2fa']);
|
||||
|
||||
foreach (str_split($next2FACode) as $i => $char) {
|
||||
$this->byCssSelector("form#frm_2fa_input div#fields input[tabindex='" . ++$i . "']")->sendKeys($char);
|
||||
}
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
function awaitAndAcceptCookies(): void
|
||||
{
|
||||
if ($this->elementExists('div.accept_cookies a#accept-cookies', self::CSS_SELECTOR)) {
|
||||
$this->elementWait('div#popup_onload.accept_cookies a#accept-cookies', self::CSS_SELECTOR);
|
||||
$this->byId('accept-cookies')->click();
|
||||
$this->elementWaitRemoved('#popup_onload.accept_cookies', self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
}
|
||||
|
||||
function awaitAndSelectAccount(string $accountTitleToSelect): void
|
||||
{
|
||||
// Wait for company selection screen by default user has now multiple companies
|
||||
$xPathSelector = "//div[@class='container']/div/div/form" .
|
||||
"//li[not(contains(@style,'display:none'))]/a/i[contains(., '$accountTitleToSelect')]";
|
||||
$this->elementWait($xPathSelector, self::XPATH);
|
||||
$this->assertEquals($accountTitleToSelect, $this->byXPath($xPathSelector)->getText());
|
||||
$this->byXPath($xPathSelector)->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
function awaitAndSetup2FASecurity(): string
|
||||
{
|
||||
$this->elementWait('div span#secret', self::CSS_SELECTOR);
|
||||
$securityCode = $this->byCssSelector('div span#secret')->getText();
|
||||
|
||||
// Validate code
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($securityCode);
|
||||
|
||||
// Fill form 2fa data
|
||||
foreach (str_split($next2FACode) as $i => $char) {
|
||||
$this->byCssSelector("form#frm_2fa_input div#fields input[tabindex='" . ++$i . "']")->sendKeys($char);
|
||||
}
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
return $securityCode;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\traits\Cms;
|
||||
|
||||
trait cmsAssertionsTrait
|
||||
{
|
||||
public function assertModuleTitle($moduleTitle): void
|
||||
{
|
||||
$this->elementWait('.module-title', self::CSS_SELECTOR);
|
||||
$this->assertElementTextByCss('.module-title', $moduleTitle);
|
||||
}
|
||||
|
||||
public function assertFormTitle(string $expectedTitle): void
|
||||
{
|
||||
$this->elementWait('h2.title', self::CSS_SELECTOR);
|
||||
$this->assertElementTextContainsByCss('h2.title', $expectedTitle);
|
||||
}
|
||||
|
||||
public function assertFormSuccessfullySavedMessage(): void
|
||||
{
|
||||
$selector = '.form-data .save-status';
|
||||
$this->scrollElementIntoView($selector, self::CSS_SELECTOR);
|
||||
$this->assertElementTextContainsByCss($selector, "DATA SUCCESSFULLY SAVED");
|
||||
}
|
||||
|
||||
public function assertTableSuccessfullyDeletedMessage(): void
|
||||
{
|
||||
$selector = '.cnt .save-status';
|
||||
$this->scrollElementIntoView($selector, self::CSS_SELECTOR);
|
||||
$this->assertElementTextByCss($selector, 'RECORD SUCCESSFULLY DELETED');
|
||||
}
|
||||
|
||||
public function assertElementValueById(string $id, string $expectedValue, string $message = ''): void
|
||||
{
|
||||
$actualValue = $this->byId($id)->getAttribute('value');
|
||||
$this->assertSame($expectedValue, $actualValue, $message);
|
||||
}
|
||||
|
||||
public function assertElementValueByCss(string $selector, string $expectedText, string $message = ''): void
|
||||
{
|
||||
$actualText = $this->byCssSelector($selector)->getAttribute('value');
|
||||
$this->assertSame($expectedText, $actualText, $message);
|
||||
}
|
||||
|
||||
public function assertElementTextByCss(string $selector, string $expectedText, string $message = ''): void
|
||||
{
|
||||
$actualText = $this->byCssSelector($selector)->getText();
|
||||
$this->assertSame($expectedText, $actualText, $message);
|
||||
}
|
||||
|
||||
public function assertElementTextContainsByCss(string $selector, string $expectedText, string $message = ''): void
|
||||
{
|
||||
$actualText = $this->byCssSelector($selector)->getText();
|
||||
$this->assertStringContainsString($expectedText, $actualText, $message);
|
||||
}
|
||||
|
||||
public function assertCmsCheckboxState(string $selector, bool $shouldBeChecked, string $message = ''): void
|
||||
{
|
||||
$exists = $this->elementExists($selector . ' .chk.chked', self::CSS_SELECTOR, true);
|
||||
$this->assertSame($shouldBeChecked, $exists, $message);
|
||||
}
|
||||
|
||||
public function assertFieldHasNotValidNumberError(string $id): void
|
||||
{
|
||||
$this->assertFieldHasError($id, 'Not a valid number specified!');
|
||||
}
|
||||
|
||||
public function assertFieldHasCompulsoryError(string $id): void
|
||||
{
|
||||
$this->assertFieldHasError($id, 'Please fill in the field!');
|
||||
}
|
||||
|
||||
public function assertFieldHasError(string $id, string $expectedMessage): void
|
||||
{
|
||||
// Use XPath to find the .validate container that has the specific input ID and the v-error class
|
||||
$containerXPath = "//div[contains(@class, 'validate') and contains(@class, 'v-error') and .//input[@id='$id']]";
|
||||
$errorXPath = "$containerXPath//div[contains(@class, 'errMsg')]";
|
||||
|
||||
$this->elementWait($containerXPath, self::XPATH);
|
||||
|
||||
// Hover the input field to trigger the visibility of the error bubble (as done in formLayoutTrait)
|
||||
$inputElement = $this->byId($id);
|
||||
$this->webDriver->action()->moveToElement($inputElement)->perform();
|
||||
|
||||
// Wait for the error message element to be present and visible
|
||||
$this->elementWait($errorXPath, self::XPATH, true, true, true, false);
|
||||
|
||||
$actualMessage = $this->byXPath($errorXPath)->getText();
|
||||
$this->assertEquals($expectedMessage, $actualMessage);
|
||||
}
|
||||
|
||||
public function assertFieldIsOk(string $id): void
|
||||
{
|
||||
// Use XPath to find the .validate container with v-ok class for the specific input
|
||||
$containerXPath = "//div[contains(@class, 'validate') and contains(@class, 'v-ok') and .//input[@id='$id']]";
|
||||
$this->assertTrue($this->elementExists($containerXPath, self::XPATH));
|
||||
}
|
||||
|
||||
public function assertCmsTableRowData($row, $column, $expectedText): void
|
||||
{
|
||||
$selector = "#cms-table-drop-marker > div.table-rows > div > ul:nth-child($row) > li:nth-child($column) > div";
|
||||
$errorMessage = "Table record with text '$expectedText' not found in column $column";
|
||||
$this->assertElementTextByCss($selector, $expectedText, $errorMessage);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\traits\Cms;
|
||||
|
||||
/**
|
||||
* Trait for common CMS Dialog interactions
|
||||
*/
|
||||
trait cmsDialogTrait
|
||||
{
|
||||
public function getNewButtonId(): string
|
||||
{
|
||||
return '#bButtonNew';
|
||||
}
|
||||
|
||||
public function openCmsConfirmDialog(string $triggerSelector): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick($triggerSelector, self::CSS_SELECTOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Click the confirmation button on a CMS dialog
|
||||
*/
|
||||
public function cmsConfirmDialogActionYes(): void
|
||||
{
|
||||
$selector = 'buttonYes';
|
||||
|
||||
// Wait for the button to be ready
|
||||
$this->waitForElementDisplay($selector, self::ID);
|
||||
$this->waitForElementEnabled($selector, self::ID);
|
||||
|
||||
// Move to the element to simulate human focus before clicking
|
||||
$element = $this->byId($selector);
|
||||
$this->webDriver->action()->moveToElement($element)->perform();
|
||||
|
||||
$element->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function cmsConfirmDialogActionCancel(): void
|
||||
{
|
||||
$selector = '#confirmDialog > div > div.header.ui-draggable-handle > a';
|
||||
$this->waitForElementDisplay($selector, self::CSS_SELECTOR);
|
||||
$this->byCssSelector($selector)->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\DataSetup\traits\Cms;
|
||||
|
||||
/**
|
||||
* Trait for common CMS Table interactions
|
||||
*/
|
||||
trait cmsTableTrait
|
||||
{
|
||||
public function saveMainFormAndAssertSuccess(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick('.buttons_bottom #fsave', self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
$this->assertFormSuccessfullySavedMessage();
|
||||
}
|
||||
|
||||
public function cancelMainForm(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick('.buttons_bottom #fcancel', self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function goBackToTable(): void
|
||||
{
|
||||
$this->scrollIntoViewHoverClick('.buttons_bottom #tback', self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function deleteCmsTableRow($row): void
|
||||
{
|
||||
$selector = "#cms-table-drop-marker > div.table-rows > div > ul:nth-child($row) > li.w20.last.actions.even > div > a#ldelete";
|
||||
$this->openCmsConfirmDialog($selector);
|
||||
$this->cmsConfirmDialogActionYes();
|
||||
$this->assertTableSuccessfullyDeletedMessage();
|
||||
}
|
||||
|
||||
public function editCmsTableRow($row): void
|
||||
{
|
||||
$selector = "#cms-table-drop-marker > div.table-rows > div > ul:nth-child($row) > li.w20.last.actions.even > div > a#ledit";
|
||||
$this->scrollIntoViewHoverClick($selector, self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function editCmsTableRowById(int $id): void
|
||||
{
|
||||
$selector = "#cms-table-drop-marker > div.table-rows > div > ul#($id) > li.w20.last.actions.even > div > a#ledit";
|
||||
$this->scrollIntoViewHoverClick($selector, self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
|
||||
public function clickRowExcelExport($row): void
|
||||
{
|
||||
$selector = "#cms-table-drop-marker > div.table-rows > div > ul:nth-child($row) > li > div > a.download";
|
||||
$this->scrollIntoViewHoverClick($selector, self::CSS_SELECTOR);
|
||||
$this->waitUntilDomReadyState();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,461 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests;
|
||||
|
||||
use Exception;
|
||||
use SimpleXMLElement;
|
||||
use ZipArchive;
|
||||
|
||||
class ExcelDataExtractForTestingValues
|
||||
{
|
||||
/**
|
||||
* Global Temp folder
|
||||
*/
|
||||
private $globalExtractionFolder;
|
||||
|
||||
/**
|
||||
* Temp folder for single file
|
||||
*/
|
||||
private $extractionFolder;
|
||||
|
||||
/**
|
||||
* Active sheet file
|
||||
*/
|
||||
private $activeSheetId;
|
||||
|
||||
/**
|
||||
* Default sheet file
|
||||
*/
|
||||
private $defaultActiveSheetId = 1;
|
||||
|
||||
/**
|
||||
* Workbook XML file path within zip
|
||||
*/
|
||||
private $workbookXmlFile = '/xl/workbook.xml';
|
||||
|
||||
/**
|
||||
* SharedStrings XML file path within zip
|
||||
*/
|
||||
private $sharedStringsFile = '/xl/sharedStrings.xml';
|
||||
|
||||
/**
|
||||
* Sheet XML file path within zip
|
||||
*/
|
||||
private $SheetBaseFile = '/xl/worksheets/sheet%d.xml';
|
||||
|
||||
/**
|
||||
* SharedStrings XML object
|
||||
* SimpleXMLElement $sharedStringsObject
|
||||
*/
|
||||
private $sharedStringsObject = null;
|
||||
|
||||
/**
|
||||
* SharedStrings XML object
|
||||
* SimpleXMLElement $activeSheetObject
|
||||
*/
|
||||
private $activeSheetObject = null;
|
||||
|
||||
private const ERROR_NODE_NOT_FOUND = 10;
|
||||
|
||||
public function __construct(string $tempDirectory)
|
||||
{
|
||||
$this->globalExtractionFolder = $tempDirectory;
|
||||
if (!strlen($this->globalExtractionFolder)) {
|
||||
throw new Exception("No Temp extraction directory specified!");
|
||||
}
|
||||
|
||||
// Set shared directory
|
||||
if (!file_exists($this->globalExtractionFolder)) {
|
||||
mkdir($this->globalExtractionFolder, 0777, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $file
|
||||
* @return bool|null
|
||||
* @throws Exception
|
||||
*/
|
||||
public function loadFileForExtraction(string $file): ?bool
|
||||
{
|
||||
// Fail on invalid file
|
||||
if (!file_exists($file) || !is_file($file)) {
|
||||
throw new Exception("Base extraction file not found!");
|
||||
}
|
||||
|
||||
$this->activeSheetObject = null;
|
||||
$this->sharedStringsObject = null;
|
||||
|
||||
// Set sheet ID
|
||||
$this->activeSheetId = $this->defaultActiveSheetId;
|
||||
|
||||
// Create file temp folder
|
||||
$fileInfo = pathinfo($file);
|
||||
$this->extractionFolder = $this->globalExtractionFolder . '/' . $fileInfo['filename'] . '_data_';
|
||||
|
||||
$i = 1;
|
||||
while (file_exists($this->extractionFolder . $i)) {
|
||||
$i++;
|
||||
}
|
||||
$this->extractionFolder .= $i;
|
||||
|
||||
// Copy base file as zip
|
||||
mkdir($this->extractionFolder, 0777, true);
|
||||
$newFile = $this->globalExtractionFolder . '/' . $fileInfo['filename'] . '.zip';
|
||||
copy($file, $newFile);
|
||||
|
||||
// Extract xls file data
|
||||
$zip = new ZipArchive();
|
||||
$res = $zip->open($newFile);
|
||||
if ($res === true) {
|
||||
$zip->extractTo($this->extractionFolder);
|
||||
$zip->close();
|
||||
} else {
|
||||
throw new Exception("Data extraction from base file has failed!");
|
||||
}
|
||||
|
||||
// Validate that we got base xml files
|
||||
if (
|
||||
!file_exists($this->extractionFolder . $this->workbookXmlFile)
|
||||
|| !file_exists($this->extractionFolder . $this->sharedStringsFile)
|
||||
|| !file_exists(sprintf($this->extractionFolder . $this->SheetBaseFile, $this->activeSheetId))
|
||||
) {
|
||||
throw new Exception("Structure files are missing!");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sheetTitle
|
||||
* @return int
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getSheetIdByTitle(string $sheetTitle): int
|
||||
{
|
||||
if (
|
||||
strlen($sheetTitle) == 0
|
||||
|| !file_exists($this->extractionFolder . $this->workbookXmlFile)
|
||||
) {
|
||||
throw new Exception("Sheet title or base workbook file is missing!");
|
||||
}
|
||||
|
||||
$xmlObject = simplexml_load_file($this->extractionFolder . $this->workbookXmlFile);
|
||||
if ($xmlObject instanceof SimpleXMLElement) {
|
||||
foreach ($xmlObject->sheets->sheet as $sheet) {
|
||||
if ($sheet['name'] == $sheetTitle) {
|
||||
return (int)$sheet['sheetId'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
throw new Exception("Excel '$sheetTitle' sheet not found!");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $sheetId
|
||||
* @return bool|null
|
||||
* @throws Exception
|
||||
*/
|
||||
public function setActiveWorkingSheetById(int $sheetId): ?bool
|
||||
{
|
||||
if (
|
||||
$sheetId <= 0
|
||||
|| !file_exists(sprintf($this->extractionFolder . $this->SheetBaseFile, $sheetId))
|
||||
) {
|
||||
throw new Exception("Sheet ID or sheet XML file is missing!");
|
||||
}
|
||||
|
||||
if ($this->activeSheetId != $sheetId) {
|
||||
$this->activeSheetId = $sheetId;
|
||||
$this->activeSheetObject = null;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
* @return string|null
|
||||
* @throws Exception
|
||||
*/
|
||||
public function extractTextFromCell(int $x, int $y): ?string
|
||||
{
|
||||
if ($x <= 0 || $y <= 0) {
|
||||
throw new Exception("Invalid coordinates!");
|
||||
}
|
||||
|
||||
if (
|
||||
$this->activeSheetId <= 0
|
||||
|| !file_exists(sprintf($this->extractionFolder . $this->SheetBaseFile, $this->activeSheetId))
|
||||
) {
|
||||
throw new Exception("Sheet ID or sheet XML file is missing!");
|
||||
}
|
||||
|
||||
$value = null;
|
||||
|
||||
// Load sheet XMl if not loaded
|
||||
if (is_null($this->activeSheetObject)) {
|
||||
$this->activeSheetObject = simplexml_load_file(
|
||||
sprintf($this->extractionFolder . $this->SheetBaseFile, $this->activeSheetId)
|
||||
);
|
||||
|
||||
// Without namespace XPath queries won't work
|
||||
if ($this->activeSheetObject instanceof SimpleXMLElement) {
|
||||
$namespaces = $this->activeSheetObject->getDocNamespaces();
|
||||
|
||||
if (is_array($namespaces)) {
|
||||
foreach ($namespaces as $prefix => $namespace) {
|
||||
$this->activeSheetObject->registerXPathNamespace($prefix ?: 'default', $namespace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Look for data
|
||||
if ($this->activeSheetObject instanceof SimpleXMLElement) {
|
||||
$reqCell = $this->activeSheetObject->xpath(
|
||||
'//default:sheetData/default:row[@r="' . $y . '"]/default:c[@r="' . self::getAddress($x, $y) . '"]'
|
||||
);
|
||||
|
||||
|
||||
if (!is_array($reqCell) || count($reqCell) <= 0) {
|
||||
$message = "Cell " . self::getAddress($x, $y) . " not found in '" .
|
||||
basename(sprintf($this->SheetBaseFile, $this->activeSheetId)) . "'!";
|
||||
throw new Exception($message, self::ERROR_NODE_NOT_FOUND);
|
||||
}
|
||||
$reqCell = $reqCell[0];
|
||||
|
||||
// Get value
|
||||
$value = $reqCell->{'v'};
|
||||
|
||||
// Check if formula exists - then return formula
|
||||
if (isset($reqCell->{'f'})) {
|
||||
$value = $reqCell->{'f'};
|
||||
}
|
||||
|
||||
// Check if we got rich text set in cell
|
||||
if (isset($reqCell['t']) && $reqCell['t'] == 'inlineStr') {
|
||||
$value = $reqCell->{'is'}->{'r'}->{'t'};
|
||||
}
|
||||
|
||||
// Check if we got a string from sharedStrings.xml and retrieve text
|
||||
if (isset($reqCell['t']) && $reqCell['t'] == 's') {
|
||||
// Load shared strings if not loaded
|
||||
if (is_null($this->sharedStringsObject)) {
|
||||
$this->sharedStringsObject = simplexml_load_file(
|
||||
$this->extractionFolder . $this->sharedStringsFile
|
||||
);
|
||||
|
||||
// Without namespace XPath queries won't work
|
||||
if ($this->sharedStringsObject instanceof SimpleXMLElement) {
|
||||
$namespaces = $this->sharedStringsObject->getDocNamespaces();
|
||||
if (is_array($namespaces)) {
|
||||
foreach ($namespaces as $prefix => $namespace) {
|
||||
$this->sharedStringsObject->registerXPathNamespace($prefix ?: 'default', $namespace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get string by index
|
||||
if ($this->sharedStringsObject instanceof SimpleXMLElement) {
|
||||
$reqCell = $this->sharedStringsObject->xpath('//default:si[' . ((int)$value + 1) . ']/default:t');
|
||||
if ($reqCell === false || !is_array($reqCell) || count($reqCell) <= 0) {
|
||||
throw new Exception("Shared string not found in '" . basename($this->sharedStringsFile) . "'!");
|
||||
}
|
||||
|
||||
$value = $reqCell[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $x
|
||||
* @param int $y
|
||||
* @return string
|
||||
*/
|
||||
public static function getAddress(int $x, int $y): string
|
||||
{
|
||||
$x = $x <= 0 ? 1 : $x;
|
||||
$y = $y <= 0 ? 1 : $y;
|
||||
|
||||
$sk = 0;
|
||||
$iX = $x;
|
||||
$address = '';
|
||||
|
||||
while (1) {
|
||||
if ($iX > 26) {
|
||||
while ($iX > 26) {
|
||||
$iX -= 26;
|
||||
$sk++;
|
||||
}
|
||||
|
||||
$address = Chr(64 + $iX) . $address;
|
||||
$iX = $sk;
|
||||
$sk = 0;
|
||||
} else {
|
||||
return chr(64 + $iX) . $address . $y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param BasePhpUnitSeleniumCase $baseTestCase
|
||||
* @param string $file
|
||||
* @param array<string, array<int, array<int, string>>> $excelValueCfg -
|
||||
* ['sheet_title' => ['row_index' => ['col_index 0 based' => 'assertion value']]]
|
||||
* @param bool $assertByStringContainsString
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function assertionsOnExcelSheetData(
|
||||
BasePhpUnitSeleniumCase $baseTestCase,
|
||||
string $file = '',
|
||||
array $excelValueCfg = [],
|
||||
bool $assertByStringContainsString = false
|
||||
): void {
|
||||
if (count($excelValueCfg) == 0) {
|
||||
throw new Exception("Validation configuration is missing!");
|
||||
}
|
||||
|
||||
try {
|
||||
$this->loadFileForExtraction($file);
|
||||
|
||||
// Loop cfg & assert values within Excel sheets
|
||||
foreach ($excelValueCfg as $sheetTitle => $rows) {
|
||||
$this->setActiveWorkingSheetById(
|
||||
$this->getSheetIdByTitle($sheetTitle)
|
||||
);
|
||||
|
||||
foreach ($rows as $rowExactIndex => $values) {
|
||||
foreach ($values as $k => $val) {
|
||||
// Check is formula - remove = sign since formulas are stored without it
|
||||
if (mb_substr($val, 0, 1) == '=') {
|
||||
$val = mb_substr($val, 1);
|
||||
}
|
||||
|
||||
// Find cell in xml & do the assertion
|
||||
try {
|
||||
$rawActual = (string)$this->extractTextFromCell($k + 1, $rowExactIndex);
|
||||
$rawExpected = (string)$val;
|
||||
|
||||
$errorMessage = "Error within '$sheetTitle' sheet cell '" .
|
||||
self::getAddress($k + 1, $rowExactIndex) . "'!" .
|
||||
"\nexpected: $val \n actual: $rawActual";
|
||||
|
||||
if ($assertByStringContainsString) {
|
||||
$baseTestCase->assertStringContainsString($val, $rawActual, $errorMessage);
|
||||
} else {
|
||||
if (is_numeric($rawActual) && is_numeric($rawExpected)) {
|
||||
if (!$this->excelNumbersEqual($rawActual, $rawExpected, 3)) {
|
||||
$baseTestCase->fail($errorMessage);
|
||||
}
|
||||
} else {
|
||||
$baseTestCase->assertEquals($rawExpected, $rawActual, $errorMessage);
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
// Expect empty string assertions to fail on xml lookup - since empty cells are not stored
|
||||
if (
|
||||
strlen($val) == 0 &&
|
||||
$e->getCode() == self::ERROR_NODE_NOT_FOUND
|
||||
) {
|
||||
continue;
|
||||
} else {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
$baseTestCase->fail($e->getMessage());
|
||||
}
|
||||
|
||||
$baseTestCase->clearTempFolder($this->globalExtractionFolder);
|
||||
}
|
||||
|
||||
private function excelNumbersEqual($a, $b, int $precision = 3): bool
|
||||
{
|
||||
if (!is_numeric($a) || !is_numeric($b)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Round precision
|
||||
$a = round((float)$a, $precision);
|
||||
$b = round((float)$b, $precision);
|
||||
|
||||
return bccomp((string)$a, (string)$b, $precision) === 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a PHP expected array file directly from Excel XML (1:1)
|
||||
*
|
||||
* @param string $excelFilePath Path to a source Excel file
|
||||
* @param string $outputPhpFile Path where a PHP file will be written
|
||||
* @param string $sheetTitle Excel sheet title
|
||||
* @param int $startRow First row index (Excel-based)
|
||||
* @param int $endRow Last row index (inclusive)
|
||||
* @param int $startCol First column index (Excel-based)
|
||||
* @param int $endCol Last column index (inclusive)
|
||||
* @return void
|
||||
* @throws Exception
|
||||
*/
|
||||
public function generateExpectedPhpArrayFile(
|
||||
string $excelFilePath,
|
||||
string $outputPhpFile,
|
||||
string $sheetTitle,
|
||||
int $startRow,
|
||||
int $endRow,
|
||||
int $startCol,
|
||||
int $endCol
|
||||
): void {
|
||||
if ($startRow <= 0 || $endRow < $startRow) {
|
||||
throw new Exception('Invalid row range');
|
||||
}
|
||||
|
||||
if ($startCol <= 0 || $endCol < $startCol) {
|
||||
throw new Exception('Invalid column range');
|
||||
}
|
||||
|
||||
$this->loadFileForExtraction($excelFilePath);
|
||||
|
||||
$sheetId = $this->getSheetIdByTitle($sheetTitle);
|
||||
$this->setActiveWorkingSheetById($sheetId);
|
||||
|
||||
$result = [];
|
||||
|
||||
for ($row = $startRow; $row <= $endRow; $row++) {
|
||||
$rowData = [];
|
||||
|
||||
for ($col = $startCol; $col <= $endCol; $col++) {
|
||||
try {
|
||||
$rowData[] = (string)$this->extractTextFromCell($col, $row);
|
||||
} catch (Exception $e) {
|
||||
// Empty cells are not stored in XML
|
||||
if ($e->getCode() === self::ERROR_NODE_NOT_FOUND) {
|
||||
$rowData[] = '';
|
||||
} else {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$result[$row] = $rowData;
|
||||
}
|
||||
|
||||
$php = "<?php\n\n";
|
||||
$php .= "/**\n";
|
||||
$php .= " * AUTO-GENERATED FILE\n";
|
||||
$php .= " * Source: " . basename($excelFilePath) . "\n";
|
||||
$php .= " */\n\n";
|
||||
$php .= "return " . var_export($result, true) . ";\n";
|
||||
|
||||
if (file_put_contents($outputPhpFile, $php) === false) {
|
||||
throw new Exception("Failed to write output file: $outputPhpFile");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,216 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\SeleniumTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use ElixirAudit\Tests\BasePhpUnitSeleniumCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteAccounts;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
use ElixirAudit\Tests\DataSetup\Traits\App\pubUsersTrait;
|
||||
|
||||
class pubUserLoginForcePwdChangeTest extends BasePhpUnitSeleniumCase
|
||||
{
|
||||
use pubUsersTrait;
|
||||
|
||||
const url = [
|
||||
siteLanguages::LANG_LV => [
|
||||
'url' => 'ienakt-gramatvedibas-sistema',
|
||||
'header' => 'Ienākt grāmatvedības sistēmā',
|
||||
'header-2fa' => 'Divu faktoru autentifikācija',
|
||||
'header-3pwd' => 'Mainīt lietotāja paroli',
|
||||
|
||||
'exists' => ['#user_name', '#old_password', '#new_password', '#rnew_password', 'button.btn.btn-block'],
|
||||
'text-exists' => ['Mainīt lietotāja paroli','Manīt paroli'],
|
||||
|
||||
'inv-pwd' => 'Jaunā lietotāja parole nevar sakrist ar veco!',
|
||||
'pwd-ok' => 'Lietotāja parole veiksmīgi nomainīta!',
|
||||
|
||||
'welcome-msg' => ['Laipni lūdzam,', 'Grāmatvedības sistēma', 'Sākums'],
|
||||
|
||||
'fill-field' => 'Lūdzu aizpildiet lauku!',
|
||||
'fill-min' => 'Min value length is 6',
|
||||
'fill-dont-match' => 'Fields do not match!',
|
||||
]
|
||||
];
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
// Set user force password change param
|
||||
$this->cDb->query("UPDATE mod_users SET user_fchange = '1' WHERE id = 12");
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
//$this->dbSetup(['App/pubUsers/mod_users_db_setup.sql']);
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testPwdChange(): void
|
||||
{
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
|
||||
// Got to location to test
|
||||
$this->goToPasswordChangeForm($pageData);
|
||||
|
||||
// Change user password
|
||||
$this->changeUserPassword($pageData);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPwdChangeForm(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
|
||||
// Got to location to test
|
||||
$this->goToPasswordChangeForm($pageData);
|
||||
|
||||
// Test error containing fields
|
||||
$this->webDriver->action()->moveToElement($this->byId('new_password'))->perform();
|
||||
$this->webDriver->executeScript('$("#new_password").focus().blur();');
|
||||
$this->elementWait('#new_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-field'], $this->byCssSelector('#new_password + div.errMsg')->getText());
|
||||
|
||||
$this->webDriver->action()->moveToElement($this->byId('rnew_password'))->perform();
|
||||
$this->webDriver->executeScript('$("#rnew_password").focus().blur();');
|
||||
$this->elementWait('#rnew_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-field'], $this->byCssSelector('#rnew_password + div.errMsg')->getText());
|
||||
|
||||
$this->webDriver->executeScript('$("#new_password").focus().val("asd").blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('new_password'))->perform();
|
||||
$this->elementWait('#new_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-min'], $this->byCssSelector('#new_password + div.errMsg')->getText());
|
||||
|
||||
$this->webDriver->executeScript('$("#new_password").focus().val("' . $loginData['password'] . '").blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('new_password'))->perform();
|
||||
$this->elementWait('#new_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-dont-match'], $this->byCssSelector('#new_password + div.errMsg')->getText());
|
||||
|
||||
// Both fields should have error
|
||||
$this->webDriver->action()->moveToElement($this->byId('rnew_password'))->perform();
|
||||
$this->elementWait('#rnew_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-field'], $this->byCssSelector('#rnew_password + div.errMsg')->getText());
|
||||
|
||||
$this->webDriver->executeScript('$("#rnew_password").focus().val("dsa").blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('rnew_password'))->perform();
|
||||
$this->elementWait('#rnew_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-min'], $this->byCssSelector('#rnew_password + div.errMsg')->getText());
|
||||
|
||||
$this->webDriver->executeScript('$("#rnew_password").focus().val("testLongerPassword").blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('rnew_password'))->perform();
|
||||
$this->elementWait('#rnew_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-dont-match'], $this->byCssSelector('#rnew_password + div.errMsg')->getText());
|
||||
|
||||
// Set both fields to same long password
|
||||
$this->webDriver->executeScript('$("#rnew_password").focus().val("' . $loginData['password'] . '").blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('rnew_password'))->perform();
|
||||
|
||||
// Errors should be gone - hidden/removed
|
||||
$this->assertEquals('', $this->byCssSelector('#new_password + div.errMsg')->getText());
|
||||
$this->assertEquals('', $this->byCssSelector('#rnew_password + div.errMsg')->getText());
|
||||
$this->assertTrue($this->elementExists('.v-ok #new_password', self::CSS_SELECTOR));
|
||||
$this->assertTrue($this->elementExists('.v-ok #rnew_password', self::CSS_SELECTOR));
|
||||
|
||||
// Send password change request
|
||||
$this->byCssSelector("form#pwd_cnt button.btn.btn-block")->click();
|
||||
|
||||
// Wait for error message
|
||||
$this->elementWait('status_error', self::CLASS_NAME);
|
||||
$this->assertEquals($pageData['inv-pwd'], $this->byCssSelector('div.status_error')->getText());
|
||||
|
||||
// Change user password
|
||||
$this->changeUserPassword($pageData);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPwdChangePageLoaded(): void
|
||||
{
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
|
||||
// Got to location to test
|
||||
$this->goToPasswordChangeForm($pageData);
|
||||
|
||||
foreach ($pageData['exists'] as $selectorToFind) {
|
||||
$this->assertTrue($this->elementExists($selectorToFind, self::CSS_SELECTOR));
|
||||
}
|
||||
|
||||
$this->assertExpected($pageData['text-exists'], $this->byTagName('body')->getText());
|
||||
}
|
||||
}
|
||||
|
||||
private function goToPasswordChangeForm(array $pageData): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->url($pageData['url']);
|
||||
$this->elementWait('user_login');
|
||||
$this->assertEquals($pageData['header'], $this->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
|
||||
// Input login data
|
||||
$this->byId("user_login")->sendKeys($loginData['user']);
|
||||
$this->byId("user_password")->sendKeys($loginData['password']);
|
||||
|
||||
$this->byCssSelector("form#frm_input div#agree_to_terms")->click();
|
||||
$this->byCssSelector("form#frm_input button.btn.btn-block")->click();
|
||||
|
||||
$this->elementWait('frm_2fa_input');
|
||||
$this->assertEquals($pageData['header-2fa'], $this->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
|
||||
// Validate 2fa code from google
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($loginData['2fa']);
|
||||
|
||||
foreach (str_split($next2FACode) as $i => $char) {
|
||||
$this->byCssSelector("input.code2fa[tabindex='" . ++$i . "']")->clear()->sendKeys($char);
|
||||
}
|
||||
|
||||
$this->elementWait('pwd_cnt');
|
||||
$this->assertEquals(
|
||||
$pageData['header-3pwd'],
|
||||
$this->byCssSelector('div.container .relative > p.font-20')->getText()
|
||||
);
|
||||
}
|
||||
|
||||
private function changeUserPassword(array $pageData, bool $has2FASecurityEnabled = true): void
|
||||
{
|
||||
// Input data
|
||||
$this->byId("new_password")->sendKeys('testmynewpassword12!@');
|
||||
$this->byId("rnew_password")->sendKeys('testmynewpassword12!@');
|
||||
$this->byCssSelector("form#pwd_cnt > button.btn.btn-block")->click();
|
||||
|
||||
// Increase response timeout before redirect - Wait for confirmation message
|
||||
$this->webDriver->executeScript('JsBase.jsModule.iMessageTimeOut = 3000;');
|
||||
$this->waitUntilDomReadyState();
|
||||
$this->assertEquals(
|
||||
$pageData['pwd-ok'],
|
||||
$this->byCssSelector('div.container .relative > div.status_ok')->getText()
|
||||
);
|
||||
|
||||
// Wait for company selection screen by default user has now multiple companies
|
||||
$this->elementWait(
|
||||
"//ul[@id='favorite']//li/a/i[contains(text(),'" . siteAccounts::ACCOUNT_SELF_EMPLOYED . "')]",
|
||||
self::XPATH
|
||||
);
|
||||
$this->elementExists(
|
||||
"//ul[@id='favorite']//li/a/i[contains(text(),'" . siteAccounts::ACCOUNT_SELF_EMPLOYED . "')]",
|
||||
self::XPATH
|
||||
);
|
||||
$this->byXPath(
|
||||
"//ul[@id='favorite']//li/a/i[contains(text(),'" . siteAccounts::ACCOUNT_SELF_EMPLOYED . "')]/.."
|
||||
)->click();
|
||||
|
||||
// Validate dashboard welcome messages
|
||||
if ($has2FASecurityEnabled) {
|
||||
$this->elementWait("#drop_cnt > .doc > .form-data div.container.dashboard-cnt", self::CSS_SELECTOR);
|
||||
$this->assertExpected($pageData['welcome-msg'], $this->byTagName('body')->getText());
|
||||
}
|
||||
|
||||
// Accept cookies message
|
||||
$this->awaitAndAcceptCookies();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,203 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\SeleniumTests\App\PubUsers;
|
||||
|
||||
use Facebook\WebDriver\WebDriverBy;
|
||||
use ElixirAudit\Tests\BasePhpUnitSeleniumCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
use ElixirAudit\Tests\DataSetup\Traits\App\pubUsersTrait;
|
||||
|
||||
class pubUserLoginTest extends BasePhpUnitSeleniumCase
|
||||
{
|
||||
use pubUsersTrait;
|
||||
|
||||
const url = [
|
||||
siteLanguages::LANG_LV => [
|
||||
'menuItemXPath' => "//div[@id='navbar']//span[contains(., 'Grāmatvedības sistēma')]//ancestor::a",
|
||||
|
||||
'url' => 'ienakt-gramatvedibas-sistema',
|
||||
'header' => 'Ienākt grāmatvedības sistēmā',
|
||||
|
||||
'exists' => ['#user_login', '#user_password', 'div.rchk.agree_to', 'button.btn.btn-block'],
|
||||
'text-exists' => [
|
||||
'Ienākt grāmatvedības sistēmā',
|
||||
'Es esmu izlasījis un', 'piekrītu noteikumiem.',
|
||||
'Ienākt', 'Aizmirsi paroli?', 'Reģistrācija', 'Atgriezties uz zutenis.lv mājaslapu'
|
||||
],
|
||||
|
||||
'inv-user' => 'Lietotāja vārds vai parole ievadīta nepareizi!',
|
||||
'blocked-user' => 'Lietotāja vārds vai parole ievadīta nepareizi!',
|
||||
'login-ok' => 'Lietotāja vārds vai parole ievadīta nepareizi!',
|
||||
|
||||
'fill-field' => 'Lūdzu aizpildiet lauku!',
|
||||
|
||||
'linksToTexts' => [
|
||||
'/paroles-atgusana' => [
|
||||
'wait_id' => 'passRecovery_cnt',
|
||||
'text' => 'Paroles atgūšana',
|
||||
'text_selector' => 'div.pw_recovery > p.font-20.semi-font'
|
||||
],
|
||||
'/registracija' => [
|
||||
'wait_tag' => 'h1',
|
||||
'text' => 'Reģistrācija',
|
||||
'text_selector' => 'h1.to-animate'
|
||||
],
|
||||
'/' => [
|
||||
'wait_tag' => 'h1',
|
||||
'text' => 'Laipni lūgti grāmatvedības sistēmā ZUTENIS',
|
||||
'text_selector' => 'h1.to-animate'
|
||||
],
|
||||
],
|
||||
|
||||
'iframe-content' => 'Lietošanas noteikumi',
|
||||
'login-2nd-step' => 'Divu faktoru autentifikācija'
|
||||
]
|
||||
];
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
}
|
||||
|
||||
public function testLogin(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
$this->url($pageData['url']);
|
||||
|
||||
// Login user till Two-factor authentication
|
||||
self::logInUserByCredentials($this, $pageData, $loginData);
|
||||
// $this->elementWait('user_login');
|
||||
// $this->assertEquals($pageData['header'], $this->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
//
|
||||
// // Input login data
|
||||
// $this->byId("user_login")->sendKeys($loginData['user']);
|
||||
// $this->byId("user_password")->sendKeys($loginData['password']);
|
||||
//
|
||||
// $this->byCssSelector("form#frm_input div#agree_to_terms")->click();
|
||||
// $this->byCssSelector("form#frm_input button.btn.btn-block")->click();
|
||||
//
|
||||
// $this->elementWait('frm_2fa_input');
|
||||
// $this->assertEquals($pageData['login-2nd-step'], $this->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
|
||||
// Check for logout - log out
|
||||
$this->byCssSelector("form#frm_2fa_input > a.link")->click();
|
||||
$this->elementWait('user_login');
|
||||
$this->assertEquals($pageData['header'], $this->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
}
|
||||
}
|
||||
|
||||
public static function logInUserByCredentials(
|
||||
BasePhpUnitSeleniumCase $activeTestCase, array $langData = null, array $loginData = null): void
|
||||
{
|
||||
$activeTestCase->elementWait('user_login');
|
||||
$activeTestCase->assertEquals($langData['header'], $activeTestCase->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
|
||||
// Input login data
|
||||
$activeTestCase->byId("user_login")->sendKeys($loginData['user']);
|
||||
$activeTestCase->byId("user_password")->sendKeys($loginData['password']);
|
||||
|
||||
$activeTestCase->byCssSelector("form#frm_input div#agree_to_terms")->click();
|
||||
$activeTestCase->byCssSelector("form#frm_input button.btn.btn-block")->click();
|
||||
|
||||
$activeTestCase->elementWait('frm_2fa_input');
|
||||
$activeTestCase->assertEquals($langData['login-2nd-step'], $activeTestCase->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
}
|
||||
|
||||
public function testLoginForm(): void
|
||||
{
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
$this->url($pageData['url']);
|
||||
$this->elementWait('user_login');
|
||||
|
||||
// Test error containing fields
|
||||
$this->webDriver->executeScript('$("#user_login").focus().blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('user_login'))->perform();
|
||||
$this->elementWait('#user_login + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-field'], $this->byCssSelector('#user_login + div.errMsg')->getText());
|
||||
|
||||
$this->webDriver->executeScript('$("#user_password").focus().blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('user_password'))->perform();
|
||||
$this->elementWait('#user_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-field'], $this->byCssSelector('#user_password + div.errMsg')->getText());
|
||||
|
||||
// Input invalid login data
|
||||
$this->byId("user_login")->sendKeys('test');
|
||||
$this->byId("user_password")->sendKeys('test');
|
||||
|
||||
$this->byCssSelector("form#frm_input div#agree_to_terms")->click();
|
||||
$this->byCssSelector("form#frm_input button.btn.btn-block")->click();
|
||||
|
||||
$this->elementWait('status_error', self::CLASS_NAME);
|
||||
$this->assertEquals($pageData['inv-user'], $this->byCssSelector('div.status_error')->getText());
|
||||
|
||||
// Check agree to terms iframe - wait for login page to reload
|
||||
$this->byCssSelector("a#show-terms")->click();
|
||||
$this->elementWait('.fancybox-iframe', self::CSS_SELECTOR);
|
||||
|
||||
$this->webDriver->switchTo()->frame($this->byCssSelector('.fancybox-iframe'));
|
||||
$this->elementWait('#fh5co-home .row div.col-md-8 h1', self::CSS_SELECTOR);
|
||||
|
||||
sleep(2); // Sleep while animation is complete
|
||||
$this->assertEquals($pageData['iframe-content'], $this->byCssSelector('h1')->getText());
|
||||
$this->webDriver->switchTo()->defaultContent();
|
||||
}
|
||||
}
|
||||
|
||||
public function testLoginPageRedirectLinks(): void
|
||||
{
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
|
||||
$this->url($pageData['url']);
|
||||
$this->elementWait('user_login');
|
||||
|
||||
// Test pages clicks
|
||||
$pagesToVisit = [];
|
||||
$links = $this->webDriver->findElements(WebDriverBy::cssSelector('#frm_input > a.link'));
|
||||
foreach ($links as $link) {
|
||||
$pagesToVisit[] = $link->getAttribute('href');
|
||||
}
|
||||
|
||||
foreach ($pagesToVisit as $href) {
|
||||
if (isset($pageData['linksToTexts'][$href])) {
|
||||
$this->url($this->normalizeUrl($href));
|
||||
sleep(2);
|
||||
|
||||
// Element Wait fails for some unknown reason
|
||||
if (isset($pageData['linksToTexts'][$href]['wait_id']))
|
||||
$this->elementWait($pageData['linksToTexts'][$href]['wait_id']);
|
||||
elseif (isset($pageData['linksToTexts'][$href]['wait_tag']))
|
||||
$this->elementWait($pageData['linksToTexts'][$href]['wait_tag'], self::TAG_NAME);
|
||||
|
||||
$this->assertEquals($pageData['linksToTexts'][$href]['text'], $this->byCssSelector($pageData['linksToTexts'][$href]['text_selector'])->getText());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testLoginPageLoaded(): void
|
||||
{
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
$this->url('index');
|
||||
$this->awaitAndAcceptCookies();
|
||||
$this->elementWait($pageData['menuItemXPath'], self::XPATH);
|
||||
$this->byXPath($pageData['menuItemXPath'])->click();
|
||||
|
||||
sleep(2);
|
||||
|
||||
$this->url($pageData['url']);
|
||||
$this->elementWait('user_login');
|
||||
|
||||
foreach ($pageData['exists'] as $selectorToFind) {
|
||||
$this->assertTrue($this->elementExists($selectorToFind, self::CSS_SELECTOR));
|
||||
}
|
||||
|
||||
$this->assertExpected($pageData['text-exists'], $this->byTagName('body')->getText());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,284 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\SeleniumTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use DOMDocument;
|
||||
use DOMXPath;
|
||||
use Facebook\WebDriver\WebDriverBy;
|
||||
use ElixirAudit\Tests\BasePhpUnitSeleniumCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteAccounts;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
use ElixirAudit\Tests\DataSetup\Traits\App\pubUsersTrait;
|
||||
|
||||
class pubUserPwdResetTest extends BasePhpUnitSeleniumCase
|
||||
{
|
||||
use pubUsersTrait;
|
||||
|
||||
const url = [
|
||||
siteLanguages::LANG_LV => [
|
||||
'url' => 'paroles-atgusana',
|
||||
'header' => 'Paroles atgūšana',
|
||||
|
||||
'exists' => ['#user_data', 'button.btn.btn-block'],
|
||||
'text-exists' => [
|
||||
'Paroles atgūšana', 'Atpakaļ uz autentifikāciju',
|
||||
'Lūdzu ievadiet lietotāja e-pastu vai lietotājvārdu, kuram vēlieties atgūt paroli.'
|
||||
],
|
||||
|
||||
'inv-user' => 'Lietotājs nav atrasts vai ir bloķēts!',
|
||||
|
||||
'fill-field' => 'Lūdzu aizpildiet lauku!',
|
||||
'fill-email' => 'Ievadīta nekorekta e-pasta adrese!',
|
||||
|
||||
'email-sent' => 'E-pasts tika nosūtīts',
|
||||
'email-sent-error' => 'Lietotājs nav atrasts vai ir bloķēts!',
|
||||
|
||||
'linksToTexts' => [
|
||||
'/ienakt-gramatvedibas-sistema' => [
|
||||
'wait_id' => 'user_login',
|
||||
'text' => 'Ienākt grāmatvedības sistēmā',
|
||||
'text_selector' => 'div#form > .relative > p.font-20.semi-font'
|
||||
],
|
||||
],
|
||||
|
||||
'email-a' => 'Atjaunot paroli',
|
||||
'email-subject' => 'Konts - Paroles atjaunošana',
|
||||
'email-expected-body' => [
|
||||
'Labdien', 'Esam saņēmuši pieprasījumu atjaunot nozaudētu ZUTENIS konta paroli.',
|
||||
'Zemāk jūs atradīsit pagaidu ģenerētu paroli, kas būs derīga 2 stundas.',
|
||||
'Pagaidu parole', 'Paroli var arī atjaunot, noklikšķinot uz pogas',
|
||||
'Ar cieņu', 'Nepieciešama palīdzība?', 'info@zutenis.lv',
|
||||
'Jūs saņēmāt šo e-pastu, jo šī e-pasta adrese ir reģistrēta www.ZUTENIS.lv'
|
||||
],
|
||||
'header-3pwd' => 'Mainīt lietotāja paroli',
|
||||
'pwd-change-error' => [
|
||||
'Lietotāja paroles atgūšana neizdevās!',
|
||||
'Lūdzu, mēģiniet vēlreiz atiestatīt paroli',
|
||||
'lūdzu, sazinieties ar atbalsta dienestu!',
|
||||
],
|
||||
]
|
||||
];
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
}
|
||||
|
||||
public function testPwdReset(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
$this->url($pageData['url']);
|
||||
$this->elementWait('user_data');
|
||||
|
||||
// Test error containing fields
|
||||
$this->webDriver->executeScript('$("#user_data").focus().blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('user_data'))->perform();
|
||||
$this->elementWait('#user_data + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-field'], $this->byCssSelector('#user_data + div.errMsg')->getText());
|
||||
|
||||
$this->webDriver->executeScript('$("#user_data").focus().val("test").blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('user_data'))->perform();
|
||||
$this->elementWait('#user_data + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-email'], $this->byCssSelector('#user_data + div.errMsg')->getText());
|
||||
|
||||
|
||||
// Input invalid login data
|
||||
$this->byId("user_data")->clear()->sendKeys('test.test@gmail.com');
|
||||
$this->byCssSelector("form#passRecovery_cnt button.btn.btn-block")->click();
|
||||
$this->elementWait('div.status_error', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['email-sent-error'], $this->byCssSelector('div.status_error')->getText());
|
||||
|
||||
$this->byId("user_data")->clear()->sendKeys($loginData['email']);
|
||||
$this->byCssSelector("form#passRecovery_cnt button.btn.btn-block")->click();
|
||||
$this->elementWait('div.status_ok', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['email-sent'], $this->byCssSelector('div.status_ok')->getText());
|
||||
|
||||
|
||||
// Fetch email from MailHog
|
||||
$messages = $this->awaitEmailFromMailHog(
|
||||
$loginData['email'],
|
||||
$pageData['email-subject'],
|
||||
60 * 5
|
||||
);
|
||||
|
||||
// Validate mail content
|
||||
$this->assertEquals($pageData['email-subject'], $this->emailHtmlDecode($messages->subject));
|
||||
$this->assertExpected($pageData['email-expected-body'], $this->emailHtmlDecode($messages->body));
|
||||
|
||||
// Preserve user password reset db data state
|
||||
$loginData['data'] = $this->cDb->_querySelectRow(
|
||||
'mod_users', ['user_password', 'user_pwdtime', 'user_newpwd'], ['id' => $loginData['id']]);
|
||||
|
||||
|
||||
// Get password reset url from mail
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadHTML($messages->body);
|
||||
|
||||
$xpath = new DOMXpath($doc);
|
||||
$activationUrl = $xpath->query("//a[contains(., '{$pageData['email-a']}')]")
|
||||
->item(0)->attributes->item(0)->nodeValue;
|
||||
$tempPassword = $xpath->query("//b[@id='pass']")->item(0)->nodeValue;
|
||||
|
||||
|
||||
// Test password change from link case 1
|
||||
//------------------------------------------------------------
|
||||
$this->userPassRecoveryForm($activationUrl, $lang, $pageData, $loginData);
|
||||
$this->logout();
|
||||
|
||||
|
||||
// Test password change from link case 2 - error activation case
|
||||
//------------------------------------------------------------
|
||||
$this->url($activationUrl, true);
|
||||
$this->elementWait('div#form div.status_error', self::CSS_SELECTOR);
|
||||
$this->assertExpected($pageData['pwd-change-error'], $this->byCssSelector('div#form div.status_error')->getText());
|
||||
|
||||
|
||||
// Test password change from link case 3 - manual password input login form
|
||||
//------------------------------------------------------------
|
||||
$this->url($loginData['url']);
|
||||
$this->elementWait('user_login');
|
||||
|
||||
// Reset user db state to previous before password change
|
||||
$this->cDb->_queryUpdate('mod_users', $loginData['data'], ['id' => $loginData['id']]);
|
||||
|
||||
// Input login data
|
||||
$this->byId("user_login")->sendKeys($loginData['user']);
|
||||
$this->byId("user_password")->sendKeys($tempPassword);
|
||||
$this->byCssSelector("form#frm_input div#agree_to_terms")->click();
|
||||
$this->byCssSelector("form#frm_input button.btn.btn-block")->click();
|
||||
|
||||
// Change password
|
||||
$this->userPassRecoveryForm(null, $lang, $pageData, $loginData);
|
||||
$this->logout();
|
||||
|
||||
|
||||
// Test password change from link case 4 - no 2fa security - manual password input login form
|
||||
//------------------------------------------------------------
|
||||
$this->url($loginData['url']);
|
||||
$this->elementWait('user_login');
|
||||
|
||||
// Reset user db state to previous before password change
|
||||
$loginData['data']['user_2fa_secret_enabled'] = '';
|
||||
$this->cDb->_queryUpdate('mod_users', $loginData['data'], ['id' => $loginData['id']]);
|
||||
|
||||
// Input login data
|
||||
$this->byId("user_login")->sendKeys($loginData['user']);
|
||||
$this->byId("user_password")->sendKeys($tempPassword);
|
||||
$this->byCssSelector("form#frm_input div#agree_to_terms")->click();
|
||||
$this->byCssSelector("form#frm_input button.btn.btn-block")->click();
|
||||
|
||||
// Change password
|
||||
$this->userPassRecoveryForm(null, $lang, $pageData, $loginData, false);
|
||||
$this->elementWait('#restricted-access a.logout', self::CSS_SELECTOR);
|
||||
// Logout
|
||||
$this->byCssSelector("#restricted-access a.logout")->click();
|
||||
|
||||
|
||||
// Test password change from link case 5 - no 2fa security
|
||||
//------------------------------------------------------------
|
||||
// Reset user db state to previous before password change
|
||||
$this->cDb->_queryUpdate('mod_users', $loginData['data'], ['id' => $loginData['id']]);
|
||||
|
||||
$this->userPassRecoveryForm($activationUrl, $lang, $pageData, $loginData, false);
|
||||
$this->elementWait('#restricted-access a.logout', self::CSS_SELECTOR);
|
||||
// Logout
|
||||
$this->byCssSelector("#restricted-access a.logout")->click();
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
}
|
||||
}
|
||||
|
||||
public function userPassRecoveryForm(
|
||||
string $url = null, string $lang = siteLanguages::LANG_LV,
|
||||
array $pageData = [], array $loginData = [], bool $has2FASecurityEnabled = true
|
||||
): void
|
||||
{
|
||||
// Activate account
|
||||
if (!is_null($url)) {
|
||||
$this->url($url, true);
|
||||
}
|
||||
|
||||
if ($has2FASecurityEnabled) {
|
||||
// Wait for 2FA activation request
|
||||
$this->elementWait('frm_2fa_input');
|
||||
|
||||
// Validate 2fa code from google
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($loginData['2fa']);
|
||||
|
||||
foreach (str_split($next2FACode) as $i => $char) {
|
||||
$this->byCssSelector("input.code2fa[tabindex='" . ++$i . "']")->clear()->sendKeys($char);
|
||||
}
|
||||
}
|
||||
|
||||
// Check are we in right place
|
||||
$this->elementWait('pwd_cnt');
|
||||
$this->assertEquals($pageData['header-3pwd'], $this->byCssSelector('div.container .relative > p.font-20')->getText());
|
||||
|
||||
// Test password change
|
||||
$this->fillAndSubmitPasswordChangeForm([
|
||||
'newPass' => 'testmynewpassword12!@'
|
||||
]);
|
||||
|
||||
$this->awaitAndSelectAccount(siteAccounts::ACCOUNT_SELF_EMPLOYED);
|
||||
|
||||
// Validate dashboard welcome messages
|
||||
if ($has2FASecurityEnabled) {
|
||||
$this->elementWait("#drop_cnt > .doc > .form-data div.container.dashboard-cnt", self::CSS_SELECTOR);
|
||||
$this->assertExpected(pubUserLoginForcePwdChangeTest::url[$lang]['welcome-msg'], $this->byTagName('body')->getText());
|
||||
}
|
||||
|
||||
$this->awaitAndAcceptCookies();
|
||||
}
|
||||
|
||||
public function testLoginPageRedirectLinks(): void
|
||||
{
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
|
||||
$this->url($pageData['url']);
|
||||
$this->elementWait('user_data');
|
||||
|
||||
// Test pages clicks
|
||||
$pagesToVisit = [];
|
||||
$links = $this->webDriver->findElements(WebDriverBy::cssSelector('#passRecovery_cnt > a.link'));
|
||||
foreach ($links as $link) {
|
||||
$pagesToVisit[] = $link->getAttribute('href');
|
||||
}
|
||||
|
||||
foreach ($pagesToVisit as $href) {
|
||||
if (isset($pageData['linksToTexts'][$href])) {
|
||||
$this->url($this->normalizeUrl($href));
|
||||
sleep(2);
|
||||
|
||||
// Element Wait fails for some unknown reason
|
||||
if (isset($pageData['linksToTexts'][$href]['wait_id']))
|
||||
$this->elementWait($pageData['linksToTexts'][$href]['wait_id']);
|
||||
elseif (isset($pageData['linksToTexts'][$href]['wait_tag']))
|
||||
$this->elementWait($pageData['linksToTexts'][$href]['wait_tag'], self::TAG_NAME);
|
||||
|
||||
$this->assertEquals($pageData['linksToTexts'][$href]['text'], $this->byCssSelector($pageData['linksToTexts'][$href]['text_selector'])->getText());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testPwdResetPageLoaded(): void
|
||||
{
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
$this->url($pageData['url']);
|
||||
$this->elementWait('user_data');
|
||||
|
||||
foreach ($pageData['exists'] as $selectorToFind) {
|
||||
$this->assertTrue($this->elementExists($selectorToFind, self::CSS_SELECTOR));
|
||||
}
|
||||
|
||||
$this->assertExpected($pageData['text-exists'], $this->byTagName('body')->getText());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,536 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\SeleniumTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use DOMDocument;
|
||||
use DOMXPath;
|
||||
use stdClass;
|
||||
use ElixirAudit\Tests\BasePhpUnitSeleniumCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
use ElixirAudit\Tests\DataSetup\traits\app\helpers\assertionsTrait;
|
||||
use ElixirAudit\Tests\DataSetup\Traits\App\Helpers\formLayoutTrait;
|
||||
use ElixirAudit\Tests\DataSetup\traits\app\helpers\formValidationTrait;
|
||||
use ElixirAudit\Tests\DataSetup\Traits\App\pubUsersTrait;
|
||||
|
||||
class pubUserRegistrationTest extends BasePhpUnitSeleniumCase
|
||||
{
|
||||
use assertionsTrait;
|
||||
use formLayoutTrait;
|
||||
use formValidationTrait;
|
||||
use pubUsersTrait;
|
||||
|
||||
public $pageData;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
$this->resetDatabaseState();
|
||||
|
||||
$this->pageData = [
|
||||
siteLanguages::LANG_LV => (object)[
|
||||
'url' => 'index',
|
||||
'menuItemXPath' => "//div[@id='navbar']//span[contains(., 'Reģistrācija')]//ancestor::a",
|
||||
'gM' => (object)[
|
||||
'registration' => 'Reģistrācija',
|
||||
'messagesExist' => [
|
||||
'Reģistrācija', 'Reģistrācijas forma', 'Saimnieciskās darbības veicēja informācija',
|
||||
'Aizpildiet zemāk atrodošo reģistrācijas veidlapu un sāciet izmantot mūsu sistēmu jau šodien!',
|
||||
'Vārds Uzvārds / Firmas nosaukums', 'Reģ. numurs',
|
||||
'Ir PVN maksātājs', 'Pieejamie sistēmas moduļi', 'Vienkāršā ieraksta grāmatvedība',
|
||||
'Dokumentu sagatavošanas modulis', 'Kontaktinformācija',
|
||||
'Vārds', 'Uzvārds', 'E-pasts', 'Tālrunis',
|
||||
'Lietotāja informācija',
|
||||
'Man jau ir lietotājs, ienāciet sistēmā, lai piesaistītu jaunu kontu',
|
||||
'Pierakstīties uz jaunumu saņemšanu e-pastā',
|
||||
'Es esmu izlasījis un', 'piekrītu noteikumiem.',
|
||||
'Noderīgas saites',
|
||||
],
|
||||
'fieldIsMandatory' => 'Lūdzu aizpildiet lauku!',
|
||||
'invalidEMail' => 'Ievadīta nekorekta e-pasta adrese!',
|
||||
'invalidEMailAlreadyTaken' => 'Lietotājs ar šo e-pastu jau ir reģistrēts!',
|
||||
'invalidPhone' => 'Norādīts nepareizs tālrunis!',
|
||||
'agreeToTermsH1' => 'Lietošanas noteikumi',
|
||||
'alreadyHaveAnAccount' => 'Ienākt grāmatvedības sistēmā',
|
||||
'logoutUseDifferentUser' => 'Izrakstīties, izmantot citu lietotāju',
|
||||
'registrationEmailTitle' => 'Konts - Reģistrācija un E-pasta apstiprināšana',
|
||||
'registrationEmailActText' => 'aktivizēt noklikšķinot šeit',
|
||||
'registrationEmailBody' => [
|
||||
'Esiet sveicināti sistēmā ZUTENIS.',
|
||||
'Esam sagatavojuši Jums lietotāja kontu, kuru atlicis tikai',
|
||||
'aktivizēt noklikšķinot šeit',
|
||||
'Sistēmas piekļuves dati:',
|
||||
'Kontu var arī aktivizēt, noklikšķinot uz pogas',
|
||||
'Ja Tev ir jautājumi par pakalpojumu, būsim priecīgi palīdzēt! ',
|
||||
],
|
||||
'activationSuccessfullText' => [
|
||||
'Aktivizācija veiksmīga!',
|
||||
'Lai turpinātu, lūdzu nomainiet pagaidu paroli.',
|
||||
],
|
||||
'securityUpdateRequest' => [
|
||||
'Lai piekļūtu grāmatvedības sistēmai, ir jāiespējo',
|
||||
'2FA', 'Divu faktoru autentifikācijas drošība!', 'Ieslēgt', 'Iziet'
|
||||
],
|
||||
'securityUpdate2FAForm' => [
|
||||
'Divu faktoru autentifikācijas uzstādīšana',
|
||||
'Uzinstalējiet "Google Authenticator" lietojumprogrammu savā ierīcē',
|
||||
'Ja ierīci nav kameras, ievadiet atslēgu manuāli.',
|
||||
'Skatieties video pamācību:',
|
||||
'Ievadi Google Authenticator lietotnes piešķirto',
|
||||
'Divu faktoru autentifikācijas kodu',
|
||||
],
|
||||
|
||||
'registrationComplete' => [
|
||||
'Lūdzu pārbaudiet e-pastu', 'Jums tūliņ tiks nosūtīts aktivizācijas e-pasts!',
|
||||
'Paldies par izrādīto interesi' , 'Lūdzu parbaudiet arī mestules sadaļu', 'Lai veiksmīga sadarbība!'
|
||||
]
|
||||
],
|
||||
'elementsExist' => [
|
||||
'#acc_name', '#reg_nr', '#vat_payer', '#full_system', '#document_system', '#name', '#surname', '#email', '#phone',
|
||||
'#login', '#loginchk', '#subscribe', '#agree_to_terms', 'input.btn.btn-primary', '#vat_reg_nr'
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
parent::tearDown();
|
||||
$this->resetDatabaseState();
|
||||
}
|
||||
|
||||
protected function resetDatabaseState(): void
|
||||
{
|
||||
$this->reloadDbTables([
|
||||
'mod_users',
|
||||
'mod_users_permissions',
|
||||
'mod_users_subscription_mails',
|
||||
'mod_account_to_create',
|
||||
'mod_account_manager',
|
||||
'mod_account_to_user',
|
||||
]);
|
||||
}
|
||||
|
||||
public function testRegistrationForm(): void
|
||||
{
|
||||
foreach ($this->pageData as $lang => $langData) {
|
||||
|
||||
$this->goToRegistrationPage($langData);
|
||||
|
||||
// Test error containing fields
|
||||
foreach (['acc_name', 'reg_nr', 'name', 'surname', 'email', 'phone',] as $field) {
|
||||
$this->scrollElementIntoView("#$field", self::CSS_SELECTOR);
|
||||
$this->webDriver->action()->moveToElement($this->byId($field))->perform();
|
||||
$this->webDriver->executeScript('$("#' . $field . '").focus().blur();');
|
||||
$this->elementWait('#' . $field . ' + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($langData->gM->fieldIsMandatory, $this->byCssSelector('#' . $field . ' + div.errMsg')->getText());
|
||||
}
|
||||
|
||||
// Invalid E-mail specified
|
||||
$this->scrollElementIntoView('#email', self::CSS_SELECTOR);
|
||||
$this->webDriver->action()->moveToElement($this->byId('email'))->perform();
|
||||
$this->webDriver->executeScript('$("#email").focus().val("test").blur();');
|
||||
$this->elementWait('#email + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($langData->gM->invalidEMail, $this->byCssSelector('#email + div.errMsg')->getText());
|
||||
|
||||
// Invalid Phone specified
|
||||
$this->scrollElementIntoView('#phone', self::CSS_SELECTOR);
|
||||
$this->webDriver->executeScript('$("#phone").focus().val("test").blur();');
|
||||
$this->webDriver->action()->moveToElement($this->byId('phone'))->perform(); sleep(1);
|
||||
$this->elementWait('#phone + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($langData->gM->invalidPhone, $this->byCssSelector('#phone + div.errMsg')->getText());
|
||||
|
||||
// Invalid VAT specified
|
||||
$this->byId("vat_payer")->click();
|
||||
$this->elementWait('vat_reg_nr');
|
||||
|
||||
$this->webDriver->action()->moveToElement($this->byId('vat_reg_nr'))->perform();
|
||||
$this->webDriver->executeScript('$("#vat_reg_nr").focus().blur();');
|
||||
$this->elementWait('#vat_reg_nr + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals($langData->gM->fieldIsMandatory, $this->byCssSelector('#vat_reg_nr + div.errMsg')->getText());
|
||||
|
||||
$this->byId("vat_payer")->click();
|
||||
$this->elementWaitRemoved('vat_reg_nr');
|
||||
$this->assertFalse($this->elementExists('#vat_payer.chked', self::CSS_SELECTOR));
|
||||
|
||||
// Radio check test
|
||||
$this->scrollElementIntoView('#document_system', self::CSS_SELECTOR);
|
||||
$this->assertFalse($this->elementExists('#document_system.chked', self::CSS_SELECTOR));
|
||||
$this->byId("document_system")->click();
|
||||
$this->assertFalse($this->elementExists('#full_system.chked', self::CSS_SELECTOR));
|
||||
$this->byId("full_system")->click();
|
||||
|
||||
$this->byId("union_system")->click();
|
||||
$this->assertTrue($this->elementExists('#union_system.chked', self::CSS_SELECTOR));
|
||||
$this->byId("religious_org_system")->click();
|
||||
$this->assertTrue($this->elementExists('#religious_org_system.chked', self::CSS_SELECTOR));
|
||||
|
||||
|
||||
// Check agree to terms iframe - wait for iframe to reload
|
||||
$this->scrollElementIntoView('#show-terms', self::CSS_SELECTOR);
|
||||
$this->byCssSelector("a#show-terms")->click();
|
||||
$this->elementWait('.fancybox-iframe', self::CSS_SELECTOR);
|
||||
|
||||
$this->webDriver->switchTo()->frame($this->byCssSelector('.fancybox-iframe'));
|
||||
// Page weird animation cannot be caught via traditional wait conditions
|
||||
$this->elementWait('h1.animated', self::CSS_SELECTOR);
|
||||
$this->elementWait('#fh5co-home .row div.col-md-8 h1', self::CSS_SELECTOR);
|
||||
|
||||
$this->assertEquals($langData->gM->agreeToTermsH1, $this->byCssSelector('h1')->getText());
|
||||
$this->byId('close-terms-of-use')->click();
|
||||
$this->webDriver->switchTo()->defaultContent();
|
||||
$this->elementWaitRemoved('.fancybox-iframe', self::CSS_SELECTOR);
|
||||
|
||||
|
||||
// Check have already an account - wait for login iframe page to load
|
||||
$this->byCssSelector("div#loginchk")->click();
|
||||
$this->elementWait('loginf');
|
||||
|
||||
$this->webDriver->switchTo()->frame($this->byId('loginf'));
|
||||
$this->elementWait('#form .relative p.font-20', self::CSS_SELECTOR);
|
||||
|
||||
sleep(2); // Sleep while animation is complete
|
||||
$this->assertEquals($langData->gM->alreadyHaveAnAccount, $this->byCssSelector('#form .relative p.font-20')->getText());
|
||||
$this->elementWait('#close-iframe', self::CSS_SELECTOR);
|
||||
$this->byId('close-iframe')->click();
|
||||
$this->webDriver->switchTo()->defaultContent();
|
||||
|
||||
$this->elementWaitRemoved('loginf');
|
||||
$this->elementWait('div#loginchk', self::CSS_SELECTOR);
|
||||
$this->assertFalse($this->elementExists('div#loginchk.chked', self::CSS_SELECTOR));
|
||||
|
||||
|
||||
// Test if additional login form works
|
||||
$this->byCssSelector("div#loginchk")->click();
|
||||
$this->elementWait('loginf');
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->webDriver->switchTo()->frame($this->byId('loginf'));
|
||||
$this->elementWait('#form .relative p.font-20', self::CSS_SELECTOR);
|
||||
|
||||
sleep(2); // Sleep while animation is complete
|
||||
$this->assertEquals($langData->gM->alreadyHaveAnAccount, $this->byCssSelector('#form .relative p.font-20')->getText());
|
||||
// Login user till Two-factor authentication
|
||||
pubUserLoginTest::logInUserByCredentials($this, pubUserLoginTest::url[$lang], $loginData);
|
||||
|
||||
// Validate 2fa code from google
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($loginData['2fa']);
|
||||
|
||||
foreach (str_split($next2FACode) as $i => $char) {
|
||||
$this->byCssSelector("input.code2fa[tabindex='" . ++$i . "']")->clear()->sendKeys($char);
|
||||
}
|
||||
|
||||
$this->elementWaitRemoved('loginf');
|
||||
$this->webDriver->switchTo()->defaultContent();
|
||||
$this->elementWait('#registration-form a.logout', self::CSS_SELECTOR);
|
||||
$this->assertEquals($langData->gM->logoutUseDifferentUser, $this->byCssSelector('#registration-form a.logout')->getText());
|
||||
$this->assertTrue($this->elementExists('div#loginchk.chked', self::CSS_SELECTOR));
|
||||
|
||||
// Test filled data match
|
||||
$this->assertEquals($loginData['user'], $this->byId('login')->getAttribute('value'));
|
||||
foreach (['name', 'surname', 'email', 'phone'] as $field) {
|
||||
$this->assertEquals($loginData[$field], $this->byId($field)->getAttribute('value'));
|
||||
}
|
||||
|
||||
// Wait for the element to be clickable
|
||||
$this->elementWait('div#loginchk', self::CSS_SELECTOR);
|
||||
// Tick checkbox again - to remove input data
|
||||
$this->byCssSelector("div#loginchk")->click();
|
||||
$this->elementWaitRemoved('#registration-form a.logout', self::CSS_SELECTOR);
|
||||
|
||||
// Test filled data are empty
|
||||
$this->assertEquals('', $this->byId('login')->getAttribute('value'));
|
||||
foreach (['name', 'surname', 'email', 'phone'] as $field) {
|
||||
$this->assertEquals('', $this->byId($field)->getAttribute('value'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function testUserRegistrationCaseNew(): void
|
||||
{
|
||||
foreach ($this->pageData as $lang => $langData) {
|
||||
|
||||
$this->goToRegistrationPage($langData);
|
||||
$inputData = [
|
||||
'acc_name' => 'Test ccount',
|
||||
'reg_nr' => 'REG-ID123456789',
|
||||
'name' => 'Mareks',
|
||||
'surname' => 'Test 2',
|
||||
'email' => 'keiss.mareks@gmail.com',
|
||||
'phone' => '+37128639957'
|
||||
];
|
||||
|
||||
// Fill data
|
||||
foreach ($inputData as $key => $value) {
|
||||
$this->byId($key)->clear()->sendKeys($value);
|
||||
}
|
||||
|
||||
// Accept terms
|
||||
$this->byId("agree_to_terms")->click();
|
||||
|
||||
// Validate filled data
|
||||
$this->assertEquals($inputData['email'], $this->byId('login')->getAttribute('value'));
|
||||
// Send registration data
|
||||
$this->byCssSelector('input.btn.btn-primary')->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
$this->assertFieldError('email', $langData->gM->invalidEMailAlreadyTaken);
|
||||
|
||||
// Change e-mail & Perform registration action
|
||||
$this->sendKeysAndTriggerValidation('#email', 'keiss.mareks2@gmail.com', self::CSS_SELECTOR);
|
||||
|
||||
// Send registration data
|
||||
$this->byCssSelector('input.btn.btn-primary')->click();
|
||||
|
||||
$this->elementWait('#registration-form .msg p', self::CSS_SELECTOR);
|
||||
$this->scrollElementIntoView('#registration-form .msg p', self::CSS_SELECTOR);
|
||||
$this->assertExpected($langData->gM->registrationComplete, $this->byTagName('body')->getText());
|
||||
|
||||
// Wait & get account activation e-mail confirmation
|
||||
// Create connection to MailHog
|
||||
// Sleep while e-mail is dispatched & get last message x2 - 2x CRON requests initiated -
|
||||
// 1. when requesting registration, 2nd when sending confirmation
|
||||
$messages = $this->awaitEmailFromMailHog(
|
||||
'keiss.mareks2@gmail.com',
|
||||
$langData->gM->registrationEmailTitle,
|
||||
60 * 5
|
||||
);
|
||||
|
||||
// Validate mail content
|
||||
$this->assertEquals($langData->gM->registrationEmailTitle, $this->emailHtmlDecode($messages->subject));
|
||||
$this->assertExpected($langData->gM->registrationEmailBody, $this->emailHtmlDecode($messages->body));
|
||||
|
||||
|
||||
// Get password reset url from mail
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadHTML($messages->body);
|
||||
|
||||
$xpath = new DOMXpath($doc);
|
||||
$activationUrl = $xpath->query("//a[@id='link']")->item(0)->attributes->item(0)->nodeValue;
|
||||
$path = parse_url($activationUrl, PHP_URL_PATH);
|
||||
$tempPassword = $xpath->query("//b[@id='pass']")->item(0)->nodeValue;
|
||||
|
||||
|
||||
$this->url($path);
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
$this->assertExpected(
|
||||
$langData->gM->activationSuccessfullText,
|
||||
$this->byCssSelector('#act_ok')->getText()
|
||||
);
|
||||
|
||||
$this->assertTrue($this->elementExists('new_password'));
|
||||
$this->assertTrue($this->elementExists('rnew_password'));
|
||||
|
||||
// Change user pwd
|
||||
$this->fillAndSubmitPasswordChangeForm([
|
||||
'oldPass' => $tempPassword,
|
||||
'newPass' => 'testmynewpassword12!@'
|
||||
]);
|
||||
|
||||
// Wait for security update request form
|
||||
$this->elementWait('a.enable_2fa', self::CSS_SELECTOR);
|
||||
|
||||
// Validate form data
|
||||
$this->assertExpected(
|
||||
$langData->gM->securityUpdateRequest,
|
||||
$this->byId('restricted-access')->getText(),
|
||||
true
|
||||
);
|
||||
|
||||
// Security request setup
|
||||
$this->awaitAndProceedWithSecuritySetupRequest();
|
||||
|
||||
// Wait for 2fa form
|
||||
$this->elementWait('div span#secret', self::CSS_SELECTOR);
|
||||
|
||||
// Validate form data
|
||||
$this->assertExpected(
|
||||
$langData->gM->securityUpdate2FAForm,
|
||||
$this->byId('form')->getText()
|
||||
);
|
||||
|
||||
// Setup 2FA
|
||||
$this->awaitAndSetup2FASecurity();
|
||||
|
||||
// Validate dashboard welcome screen
|
||||
$this->elementWait("#drop_cnt > .doc > .form-data div.container.dashboard-cnt", self::CSS_SELECTOR);
|
||||
$this->assertTrue($this->elementExists('report_period_chosen'));
|
||||
}
|
||||
}
|
||||
|
||||
public function testUserRegistrationAssociation(): void
|
||||
{
|
||||
$langData = $this->pageData[siteLanguages::LANG_LV];
|
||||
$this->goToRegistrationPage($langData);
|
||||
|
||||
$inputData = [
|
||||
'acc_name' => 'House management',
|
||||
'reg_nr' => 'REG-ID123456789',
|
||||
'name' => 'Mareks',
|
||||
'surname' => 'Test 2',
|
||||
'email' => 'keiss.mareks2@gmail.com',
|
||||
'phone' => '+37128639957',
|
||||
'system' => 'housem_system',
|
||||
];
|
||||
|
||||
// Fill data
|
||||
foreach ($inputData as $key => $value) {
|
||||
if ($key === 'system') {
|
||||
$this->byId($value)->click();
|
||||
} else {
|
||||
$this->byId($key)->clear()->sendKeys($value);
|
||||
}
|
||||
}
|
||||
|
||||
// Accept terms
|
||||
$this->byId("agree_to_terms")->click();
|
||||
|
||||
// Validate filled data
|
||||
$this->assertEquals($inputData['email'], $this->byId('login')->getAttribute('value'));
|
||||
// Send registration data
|
||||
$this->byCssSelector('input.btn.btn-primary')->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
$this->elementWait('#registration-form .msg p', self::CSS_SELECTOR);
|
||||
$this->scrollElementIntoView('#registration-form .msg p', self::CSS_SELECTOR);
|
||||
$this->assertExpected($langData->gM->registrationComplete, $this->byTagName('body')->getText());
|
||||
|
||||
// Wait & get account activation e-mail confirmation
|
||||
// Create connection to MailHog
|
||||
// Sleep while e-mail is dispatched & get last message x2 - 2x CRON requests initiated -
|
||||
// 1. when requesting registration, 2nd when sending confirmation
|
||||
$messages = $this->awaitEmailFromMailHog(
|
||||
'keiss.mareks2@gmail.com',
|
||||
$langData->gM->registrationEmailTitle,
|
||||
60 * 5
|
||||
);
|
||||
|
||||
// Validate mail content
|
||||
$this->assertEquals($langData->gM->registrationEmailTitle, $this->emailHtmlDecode($messages->subject));
|
||||
$this->assertExpected($langData->gM->registrationEmailBody, $this->emailHtmlDecode($messages->body));
|
||||
|
||||
|
||||
// Get password reset url from mail
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadHTML($messages->body);
|
||||
|
||||
$xpath = new DOMXpath($doc);
|
||||
$activationUrl = $xpath->query("//a[@id='link']")->item(0)->attributes->item(0)->nodeValue;
|
||||
$path = parse_url($activationUrl, PHP_URL_PATH);
|
||||
$tempPassword = $xpath->query("//b[@id='pass']")->item(0)->nodeValue;
|
||||
|
||||
|
||||
$this->url($path);
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
$this->assertExpected(
|
||||
$langData->gM->activationSuccessfullText,
|
||||
$this->byCssSelector('#act_ok')->getText()
|
||||
);
|
||||
|
||||
$this->assertTrue($this->elementExists('new_password'));
|
||||
$this->assertTrue($this->elementExists('rnew_password'));
|
||||
|
||||
// Change user pwd
|
||||
$this->fillAndSubmitPasswordChangeForm([
|
||||
'oldPass' => $tempPassword,
|
||||
'newPass' => 'asdasd'
|
||||
]);
|
||||
|
||||
// Wait for security update request form
|
||||
$this->elementWait('a.enable_2fa', self::CSS_SELECTOR);
|
||||
|
||||
// Validate form data
|
||||
$this->assertExpected(
|
||||
$langData->gM->securityUpdateRequest,
|
||||
$this->byId('restricted-access')->getText(),
|
||||
true
|
||||
);
|
||||
|
||||
// Security request setup
|
||||
$this->awaitAndProceedWithSecuritySetupRequest();
|
||||
|
||||
// Wait for 2fa form
|
||||
$this->elementWait('div span#secret', self::CSS_SELECTOR);
|
||||
|
||||
// Validate form data
|
||||
$this->assertExpected(
|
||||
$langData->gM->securityUpdate2FAForm,
|
||||
$this->byId('form')->getText()
|
||||
);
|
||||
|
||||
// Setup 2FA
|
||||
$this->awaitAndSetup2FASecurity();
|
||||
|
||||
// Validate dashboard welcome screen
|
||||
$this->elementWait("#drop_cnt > .doc > .form-data div.container.dashboard-cnt", self::CSS_SELECTOR);
|
||||
$this->assertTrue($this->elementExists($this->getMenuItemSelectXpathByTitle('Apsaimniekošana'), self::XPATH));
|
||||
}
|
||||
|
||||
/* public function testLoginPageRedirectLinks(): void
|
||||
{
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
|
||||
$this->url($pageData['url']);
|
||||
$this->elementWait('user_login');
|
||||
|
||||
// Test pages clicks
|
||||
$pagesToVisit = [];
|
||||
$links = $this->webDriver->findElements(WebDriverBy::cssSelector('#frm_input > a.link'));
|
||||
foreach ($links as $link) {
|
||||
$pagesToVisit[] = $link->getAttribute('href');
|
||||
}
|
||||
|
||||
foreach ($pagesToVisit as $href) {
|
||||
if (isset($pageData['linksToTexts'][$href])) {
|
||||
$this->url($this->normalizeUrl($href));
|
||||
sleep(2);
|
||||
|
||||
// Element Wait fails for some unknown reason
|
||||
if (isset($pageData['linksToTexts'][$href]['wait_id']))
|
||||
$this->elementWait($pageData['linksToTexts'][$href]['wait_id']);
|
||||
elseif (isset($pageData['linksToTexts'][$href]['wait_tag']))
|
||||
$this->elementWait($pageData['linksToTexts'][$href]['wait_tag'], self::TAG_NAME);
|
||||
|
||||
$this->assertEquals($pageData['linksToTexts'][$href]['text'], $this->byCssSelector($pageData['linksToTexts'][$href]['text_selector'])->getText());
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
public function testRegistrationPageLoaded(): void
|
||||
{
|
||||
foreach ($this->pageData as $lang => $langData) {
|
||||
|
||||
$this->url($langData->url);
|
||||
$this->awaitAndAcceptCookies();
|
||||
$this->elementWait($langData->menuItemXPath, self::XPATH);
|
||||
$this->byXPath($langData->menuItemXPath)->click();
|
||||
|
||||
sleep(2);
|
||||
$this->elementWait('h1.to-animate', self::CSS_SELECTOR);
|
||||
|
||||
foreach ($langData->elementsExist as $selectorToFind) {
|
||||
$this->assertTrue($this->elementExists($selectorToFind, self::CSS_SELECTOR));
|
||||
}
|
||||
|
||||
$this->assertExpected($langData->gM->messagesExist, $this->byTagName('body')->getText());
|
||||
}
|
||||
}
|
||||
|
||||
private function goToRegistrationPage(stdClass $langData = null): void
|
||||
{
|
||||
$this->url($langData->url);
|
||||
$this->awaitAndAcceptCookies();
|
||||
$this->elementWait($langData->menuItemXPath, self::XPATH);
|
||||
$this->byXPath($langData->menuItemXPath)->click();
|
||||
|
||||
$this->pageTitleWait($langData->gM->registration);
|
||||
sleep(2);
|
||||
$this->elementWait('h1.to-animate', self::CSS_SELECTOR);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace ElixirAudit\Tests\SeleniumTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use Facebook\WebDriver\WebDriverBy;
|
||||
use ElixirAudit\Tests\BasePhpUnitSeleniumCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteAccounts;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
use ElixirAudit\Tests\DataSetup\Traits\App\Helpers\commonTrait;
|
||||
use ElixirAudit\Tests\DataSetup\Traits\App\pubUsersTrait;
|
||||
|
||||
class pubUserTwoFactorAuthActionTest extends BasePhpUnitSeleniumCase
|
||||
{
|
||||
use commonTrait;
|
||||
use pubUsersTrait;
|
||||
|
||||
const url = [
|
||||
siteLanguages::LANG_LV => [
|
||||
'url' => 'ienakt-gramatvedibas-sistema',
|
||||
|
||||
'header' => 'Ienākt grāmatvedības sistēmā',
|
||||
'header-2fa' => 'Divu faktoru autentifikācija',
|
||||
|
||||
'exists' => [
|
||||
'input.code2fa[tabindex=\'1\']', 'input.code2fa[tabindex=\'2\']', 'input.code2fa[tabindex=\'3\']',
|
||||
'input.code2fa[tabindex=\'4\']', 'input.code2fa[tabindex=\'5\']', 'input.code2fa[tabindex=\'6\']',
|
||||
'button#submit'
|
||||
],
|
||||
'text-exists' => [
|
||||
'Divu faktoru autentifikācija',
|
||||
'Ievadi Google Authenticator lietotnes piešķirto', 'Divu faktoru autentifikācijas kodu',
|
||||
'Ienākt', 'Atpakaļ uz autentifikāciju', 'Ja esat zaudējis piekļuvi sava autentifikācijas ierīcei,'
|
||||
],
|
||||
|
||||
'inv-code' => '2 faktoru autentifikācijas koda kļūda!',
|
||||
|
||||
'fill-field' => 'Lūdzu aizpildiet lauku!',
|
||||
'welcome-msg' => ['Laipni lūdzam,', 'Grāmatvedības sistēma', 'Sākums']
|
||||
]
|
||||
];
|
||||
|
||||
public function testLogin2fa(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
|
||||
// Login - redirect to 2FA
|
||||
$this->url($pageData['url']);
|
||||
$this->switchToLanguage($lang);
|
||||
$this->elementWait('user_login');
|
||||
|
||||
// Input login data
|
||||
$this->byId("user_login")->sendKeys($loginData['user']);
|
||||
$this->byId("user_password")->sendKeys($loginData['password']);
|
||||
|
||||
$this->byCssSelector("form#frm_input div#agree_to_terms")->click();
|
||||
$this->byCssSelector("form#frm_input button.btn.btn-block")->click();
|
||||
|
||||
$this->elementWait('frm_2fa_input');
|
||||
$this->assertEquals(
|
||||
$pageData['header-2fa'],
|
||||
$this->byCssSelector('div#form > .relative > p.font-20')->getText()
|
||||
);
|
||||
|
||||
|
||||
// Validate 2fa code from google
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($loginData['2fa']);
|
||||
|
||||
foreach (str_split($next2FACode) as $i => $char) {
|
||||
$this->byCssSelector("input.code2fa[tabindex='" . ++$i . "']")->clear()->sendKeys($char);
|
||||
}
|
||||
|
||||
// Wait for company selection screen by default user has now multiple companies
|
||||
$this->elementWait(
|
||||
"//ul[@id='favorite']//li/a/i[contains(text(),'" . siteAccounts::ACCOUNT_SELF_EMPLOYED . "')]",
|
||||
self::XPATH
|
||||
);
|
||||
$this->elementExists(
|
||||
"//ul[@id='favorite']//li/a/i[contains(text(),'" . siteAccounts::ACCOUNT_SELF_EMPLOYED . "')]",
|
||||
self::XPATH
|
||||
);
|
||||
$this->byXPath(
|
||||
"//ul[@id='favorite']//li/a/i[contains(text(),'" . siteAccounts::ACCOUNT_SELF_EMPLOYED . "')]/.."
|
||||
)->click();
|
||||
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
// Accept cookies message
|
||||
$this->awaitAndAcceptCookies();
|
||||
$this->switchToLanguage($lang);
|
||||
|
||||
// Validate dashboard welcome messages
|
||||
$this->elementWait("#drop_cnt > .doc > .form-data div.container.dashboard-cnt", self::CSS_SELECTOR);
|
||||
$this->assertExpected($pageData['welcome-msg'], $this->byTagName('body')->getText());
|
||||
|
||||
// Log Out
|
||||
$this->logout();
|
||||
$this->assertEquals($pageData['header'], $this->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
}
|
||||
}
|
||||
|
||||
public function testLogin2faForm(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
foreach (self::url as $lang => $pageData) {
|
||||
|
||||
// Login - redirect to 2FA
|
||||
$this->url($pageData['url']);
|
||||
|
||||
// Login user till Two-factor authentication
|
||||
pubUserLoginTest::logInUserByCredentials($this, pubUserLoginTest::url[$lang], $loginData);
|
||||
|
||||
// Test if 2FA page loaded correctly
|
||||
foreach ($pageData['exists'] as $selectorToFind) {
|
||||
$this->assertTrue($this->elementExists($selectorToFind, self::CSS_SELECTOR),
|
||||
"Could not find element by selector -> {$selectorToFind}");
|
||||
}
|
||||
|
||||
// Check for form texts in page
|
||||
$this->assertExpected($pageData['text-exists'], $this->byTagName('body')->getText());
|
||||
|
||||
|
||||
// Check validation
|
||||
$i = 0;
|
||||
$inputs = $this->webDriver->findElements(WebDriverBy::cssSelector('#frm_2fa_input input.code2fa'));
|
||||
foreach ($inputs as $element) {
|
||||
$i++;
|
||||
|
||||
$this->webDriver->action()->moveToElement($this->byCssSelector("input.code2fa[tabindex='" . $i . "']"))->perform();
|
||||
$this->webDriver->executeScript('$("input.code2fa:focus").blur();');
|
||||
$this->webDriver->executeScript('$("input.code2fa[tabindex=\'' . $i . '\']").focus().blur().focus();');
|
||||
$this->byCssSelector("input.code2fa[tabindex='" . $i . "']")->click();
|
||||
|
||||
$this->elementWait("input.code2fa[tabindex='" . $i . "'] + div.errMsg", self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['fill-field'], $this->byCssSelector(
|
||||
"input.code2fa[tabindex='" . $i . "'] + div.errMsg")->getText(),
|
||||
"2FA code for 2FA not found by input index {$i}"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Send random code
|
||||
foreach ($inputs as $element) {
|
||||
$element->sendKeys('1');
|
||||
}
|
||||
$this->elementWait('div.status_error', self::CSS_SELECTOR);
|
||||
$this->assertEquals($pageData['inv-code'], $this->byCssSelector('div.status_error')->getText());
|
||||
|
||||
|
||||
// Check for logout - log out
|
||||
$this->byCssSelector("#frm_2fa_input > a.link")->click();
|
||||
$this->elementWait('user_login');
|
||||
$this->assertEquals($pageData['header'], $this->byCssSelector('div#form > .relative > p.font-20')->getText());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\SeleniumTests;
|
||||
|
||||
use ElixirAudit\Tests\BasePhpUnitSeleniumCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
use ElixirAudit\Tests\DataSetup\Traits\App\pubUsersTrait;
|
||||
|
||||
class BaseLoginTest extends BasePhpUnitSeleniumCase
|
||||
{
|
||||
use pubUsersTrait;
|
||||
|
||||
public function testBaseLogin()
|
||||
{
|
||||
|
||||
// $this->logIntoApplicationByUserType(BasePhpUnitSeleniumCase::loginAppSelfEmployed);
|
||||
// sleep(6);
|
||||
// $this->logIntoAdmin(siteUsers::loginCmsAdmin);
|
||||
// sleep(6);
|
||||
|
||||
|
||||
|
||||
$this->assertTrue(true);
|
||||
|
||||
|
||||
|
||||
// $this->dbSetup([
|
||||
// 'kvsApp.sql', 'appUserData.sql',
|
||||
// 'appMessages.sql', 'countries.sql',
|
||||
// 'templateAndLinks.sql',
|
||||
// //'pagesV3.sql'
|
||||
// ]);
|
||||
|
||||
// $this->url('admin/access/login');
|
||||
// $this->assertEquals('System Access', $this->byCssSelector('h1')->getText());
|
||||
//
|
||||
// $this->byId("accessloginusername")->sendKeys('martin');
|
||||
// $this->byId("accessloginpassword")->sendKeys('magic8417');
|
||||
// $this->byCssSelector("button.btn-primary")->click();
|
||||
|
||||
// $this->assertEquals('Dashboard', $this->byCssSelector('h1')->getText());
|
||||
// $this->url('admin/apps/');
|
||||
//
|
||||
// $this->url('admin/apps/impersonate/45');
|
||||
// $this->assertStringContainsString('Training Portal Dashboard', $this->byCssSelector('h1')->getText());
|
||||
//
|
||||
// $this->applicationBaseUrl = 'http://purple-square-recruitment-demo.healthcare_audit_php/';
|
||||
// $this->url('user/6562');
|
||||
//
|
||||
// $this->clearTempFolder();
|
||||
// $this->byCssSelector(".external.btn.btn-primary.btn-xs")->click();
|
||||
//
|
||||
// $file = $this->getFileFromTempFolder();
|
||||
// $this->assertIsString($file, 'Downloaded file not found');
|
||||
//
|
||||
// $this->assertExpected([
|
||||
// 'Purple Square Recruitment',
|
||||
// 'Current Training Certificate Summary',
|
||||
// 'Name of Candidate : Andy Corson'
|
||||
// ], (new Extract())->pdf($file)->text());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\SeleniumTests\Sys\SysSiteMap;
|
||||
|
||||
use ElixirAudit\Tests\BasePhpUnitSeleniumCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class sysSiteMapRoutesTest extends BasePhpUnitSeleniumCase
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
public function testSysSitemapLogin(): void
|
||||
{
|
||||
$this->logIntoAdmin(siteUsers::loginCmsAdmin);
|
||||
|
||||
$this->url('zsmkadmin/site-map/system-site-map');
|
||||
|
||||
$this->elementWait("data");
|
||||
$this->assertStringContainsString(
|
||||
mb_strtoupper('SYS New Site Map'),
|
||||
mb_strtoupper($this->byCssSelector('#data div.search > h2')->getText()),
|
||||
);
|
||||
|
||||
$this->logoutAdmin();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,172 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\SeleniumTests\Sys\SysUsersLogin;
|
||||
|
||||
// use BRSystems\Core\Library\CGoogle2FA\cGoogle2FABase;
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use Facebook\WebDriver\WebDriverBy;
|
||||
use ElixirAudit\Tests\BasePhpUnitSeleniumCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class sysUserLoginTest extends BasePhpUnitSeleniumCase
|
||||
{
|
||||
const url = 'lslsadmin/login';
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->logoutAdmin();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testSysLogin(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType();
|
||||
$this->url(self::url);
|
||||
|
||||
// Login user till Two-factor authentication
|
||||
self::logInUserByCredentials($this, $loginData);
|
||||
|
||||
// Check for logout - log out
|
||||
$this->assertEquals('Back to login', $this->byCssSelector('#frm_2fa_input a')->getText());
|
||||
$this->byCssSelector("#frm_2fa_input a")->click();
|
||||
$this->elementWait('user_login');
|
||||
$this->assertEquals('ACCOUNTING', $this->byCssSelector('#frm_input > h1')->getText());
|
||||
}
|
||||
|
||||
public static function logInUserByCredentials(
|
||||
BasePhpUnitSeleniumCase $activeTestCase,
|
||||
array $loginData = null
|
||||
): void {
|
||||
$activeTestCase->elementWait('user_login');
|
||||
$activeTestCase->assertEquals('ACCOUNTING', $activeTestCase->byCssSelector('#frm_input > h1')->getText());
|
||||
|
||||
// Input login data
|
||||
$activeTestCase->byId("user_login")->sendKeys($loginData['user']);
|
||||
$activeTestCase->byId("user_password")->sendKeys($loginData['password']);
|
||||
|
||||
$activeTestCase->byCssSelector("#frm_input button.btn")->click();
|
||||
|
||||
$activeTestCase->elementWait('frm_2fa_input');
|
||||
$activeTestCase->assertEquals('Two-factor authentication', $activeTestCase->byCssSelector('#frm_2fa_input > h1')->getText());
|
||||
}
|
||||
|
||||
public function testSysLoginErrorMessages(): void
|
||||
{
|
||||
$this->url(self::url);
|
||||
|
||||
// Login user till Two-factor authentication
|
||||
$this->elementWait('user_login');
|
||||
$this->assertEquals('ACCOUNTING', $this->byCssSelector('#frm_input > h1')->getText());
|
||||
|
||||
// Input login data
|
||||
$this->byId("user_login")->sendKeys("");
|
||||
$this->byId("user_password")->sendKeys("");
|
||||
|
||||
$this->byCssSelector("#frm_input button.btn")->click();
|
||||
|
||||
$this->webDriver->action()->moveToElement($this->byCssSelector('#user_login'))->perform();
|
||||
$this->elementWait('div.validate.v-error #user_login + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals('Please fill in the field!', $this->byCssSelector('#user_login + div.errMsg')->getText());
|
||||
|
||||
$this->webDriver->action()->moveToElement($this->byCssSelector('#user_password'))->perform();
|
||||
$this->elementWait('div.validate.v-error #user_password + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals('Please fill in the field!', $this->byCssSelector('#user_password + div.errMsg')->getText());
|
||||
|
||||
// Input data into fields
|
||||
$this->byId("user_login")->sendKeys("test");
|
||||
$this->webDriver->executeScript('$("#user_login").focus().blur();');
|
||||
$this->elementWait('div.validate.v-ok #user_login', self::CSS_SELECTOR);
|
||||
$xPath = '//input[@id="user_login"]/ancestor::div[contains(@class,"v-ok")]';
|
||||
$this->assertTrue($this->elementExists($xPath, self::XPATH));
|
||||
|
||||
$this->byId("user_password")->sendKeys("test");
|
||||
$this->webDriver->executeScript('$("#user_password").focus().blur();');
|
||||
$xPath = '//input[@id="user_password"]/ancestor::div[contains(@class,"v-ok")]';
|
||||
$this->assertTrue($this->elementExists($xPath, self::XPATH));
|
||||
|
||||
// Check error login
|
||||
$this->byCssSelector("#frm_input button.btn")->click();
|
||||
$this->waitUntilDomReadyState();
|
||||
|
||||
$this->webDriver->action()->moveToElement($this->byCssSelector('#user_login'))->perform();
|
||||
$this->elementWait('div.validate.v-error #user_login + div.errMsg', self::CSS_SELECTOR);
|
||||
$this->assertEquals('The username or password is incorrect!', $this->byCssSelector('#user_login + div.errMsg')->getText());
|
||||
}
|
||||
|
||||
public function testSysLogin2FactorAuthentication(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType();
|
||||
$this->url(self::url);
|
||||
|
||||
// Login user till Two-factor authentication
|
||||
self::logInUserByCredentials($this, $loginData);
|
||||
|
||||
$fieldsToCheck = [
|
||||
'input.code2fa[tabindex=\'1\']', 'input.code2fa[tabindex=\'2\']', 'input.code2fa[tabindex=\'3\']',
|
||||
'input.code2fa[tabindex=\'4\']', 'input.code2fa[tabindex=\'5\']', 'input.code2fa[tabindex=\'6\']',
|
||||
'button[type=submit]', '#frm_2fa_input a'
|
||||
];
|
||||
|
||||
// Test if 2FA page loaded correctly
|
||||
foreach ($fieldsToCheck as $selectorToFind) {
|
||||
$this->assertTrue(
|
||||
$this->elementExists($selectorToFind, self::CSS_SELECTOR),
|
||||
"Could not find element by selector -> {$selectorToFind}"
|
||||
);
|
||||
}
|
||||
|
||||
// Check validation
|
||||
$i = 1;
|
||||
$inputs = $this->webDriver->findElements(WebDriverBy::cssSelector('#frm_2fa_input input.code2fa'));
|
||||
foreach ($inputs as $element) {
|
||||
$this->webDriver->action()->moveToElement($this->byCssSelector("input.code2fa[tabindex='" . $i . "']"))->perform();
|
||||
$this->webDriver->executeScript('$("input.code2fa:focus").blur(); $("input.code2fa[tabindex=\'' . $i . '\']").focus().blur().focus();');
|
||||
|
||||
$this->elementWait("input.code2fa[tabindex='" . $i . "'] + div.errMsg", self::CSS_SELECTOR);
|
||||
$this->assertEquals(
|
||||
'Please fill in the field!',
|
||||
$this->byCssSelector("input.code2fa[tabindex='" . $i . "'] + div.errMsg")->getText(),
|
||||
"2FA code for 2FA not found by input index {$i}"
|
||||
);
|
||||
$i++;
|
||||
}
|
||||
|
||||
|
||||
// Send random code
|
||||
foreach ($inputs as $element) {
|
||||
$element->sendKeys('1');
|
||||
}
|
||||
$this->elementWait('p.msg-error', self::CSS_SELECTOR);
|
||||
$this->assertEquals(
|
||||
'2FA Login input code error!',
|
||||
$this->byCssSelector('p.msg-error')->getText()
|
||||
);
|
||||
|
||||
|
||||
// Validate actual 2fa code from google
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($loginData['2fa']);
|
||||
|
||||
foreach (str_split($next2FACode) as $i => $char) {
|
||||
$this->byCssSelector("input.code2fa[tabindex='" . ++$i . "']")->clear()->sendKeys($char);
|
||||
}
|
||||
|
||||
// Validate dashboard welcome messages
|
||||
$this->elementWait("#dashboard", self::CSS_SELECTOR);
|
||||
$this->assertStringContainsString(
|
||||
mb_strtoupper('Dashboard'),
|
||||
mb_strtoupper($this->byCssSelector('h2.title')->getText())
|
||||
);
|
||||
|
||||
|
||||
// Check for logout - log out
|
||||
$this->webDriver->action()->moveToElement($this->byCssSelector('.menu-cnt .settbox li.sett.last a'))->perform();
|
||||
$this->elementWait('div.settbox_cnt.sub-menu ul', self::CSS_SELECTOR);
|
||||
$elementXpath = '//div[contains(@class,"settbox_cnt")]/ul/li/a/div[@class="ico-logout"]/..';
|
||||
$this->webDriver->action()->moveToElement($this->byXPath($elementXpath))->perform();
|
||||
$this->byXPath($elementXpath)->click();
|
||||
|
||||
$this->elementWait('user_login');
|
||||
$this->assertEquals('ACCOUNTING', $this->byCssSelector('#frm_input > h1')->getText());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\Index;
|
||||
|
||||
use BRSystems\Core\App\index\index;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteMap;
|
||||
|
||||
class indexBase extends BasePhpUnitCase
|
||||
{
|
||||
protected index $index;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
parent::setUp();
|
||||
$this->clearDbState();
|
||||
|
||||
// Create new class
|
||||
$this->index = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_INDEX);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->clearDbState();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
protected function clearDbState(): void
|
||||
{
|
||||
$this->resetGetAndPost();
|
||||
$this->reloadDbTables(
|
||||
[
|
||||
'mod_account_manager',
|
||||
'mod_articles_files',
|
||||
'mod_users_subscription_mails',
|
||||
|
||||
'mod_account_manager',
|
||||
'mod_account_permissions',
|
||||
'mod_account_to_bills',
|
||||
'mod_account_to_create',
|
||||
'mod_account_to_users',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\Index;
|
||||
|
||||
class indexModuleTest extends indexBase
|
||||
{
|
||||
public function testPageCookiesActionDefaultAction(): void
|
||||
{
|
||||
$this->index->controller->module->activateUser(13);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,504 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\Index;
|
||||
|
||||
use BRSystems\Core\Library\cDefuseCrypto\cDefuseCrypto;
|
||||
use Exception;
|
||||
|
||||
class indexTest extends indexBase
|
||||
{
|
||||
public function testIndexPageDefaultAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageIndexAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Sākums</title>',
|
||||
'<h1 class="to-animate">Laipni lūgti grāmatvedības sistēmā ZUTENIS</h1>',
|
||||
'<h2 class="to-animate">Atsauksmes</h2>',
|
||||
'<h2>Pakalpojumi</h2>',
|
||||
'<h2>Mēs esam radoši</h2>',
|
||||
'<h2>Grāmatvedības sistēma</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
|
||||
// Scroll param added
|
||||
$this->setGet(['scroll_to' => '#fh5co-intro']);
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location:'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testIndexPageRequestFileDownloadAction(): void
|
||||
{
|
||||
$oCry = new cDefuseCrypto();
|
||||
$this->setGet([
|
||||
'action' => 'file',
|
||||
'f' => $oCry->encrypt(71),
|
||||
'p' => true
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location:'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Delete user cfg
|
||||
$id = $this->cDb->_queryInsert(
|
||||
'mod_articles_files',
|
||||
[
|
||||
'ref_id' => 0,
|
||||
'file_name' => 'TRANZAKCIJU_IMPORTS.xlsx',
|
||||
'file_link' => '/company/doc_logo/8412e9930cf0cc07800ffa5977ebe0e1d717374c.png',
|
||||
'file_disabled' => '0',
|
||||
'file_order' => 0,
|
||||
'file_type' => 2,
|
||||
]
|
||||
);
|
||||
|
||||
$this->setGet([
|
||||
'action' => 'file',
|
||||
'f' => $oCry->encrypt($id),
|
||||
'p' => false
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['File Download: /var/www/html/www/files/company/doc_logo/8412e9930cf0cc07800ffa5977ebe0e1d717374c.png'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testIndexPageContactUsAction(): void
|
||||
{
|
||||
$this->setGet([
|
||||
'action' => 'contact_us',
|
||||
'data' => '{"name":"Title","email":"test@test.lv","phone":"123456789","message":"msg"}'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// error case
|
||||
$this->setGet([
|
||||
'action' => 'contact_us',
|
||||
'data' => '{"name":"","message":""}'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['"error":true,"0":"fData","1"'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testIndexPageSubscribeAction(): void
|
||||
{
|
||||
$this->setGet([
|
||||
'action' => 'subscribe',
|
||||
'data' => ['sub_email' => 'test@test.lv']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Case 2
|
||||
$this->setGet([
|
||||
'action' => 'subscribe',
|
||||
'data' => ['sub_email' => 'test2222@test.lv']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Error Case
|
||||
$this->setGet([
|
||||
'action' => 'subscribe',
|
||||
'data' => ['sub_email' => '']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"Something went wrong!"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Error Case 2
|
||||
$this->setGet([
|
||||
'action' => 'subscribe',
|
||||
'data' => ['sub_email' => 'test@']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"Something went wrong!"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testIndexPageUnsubscribeAction(): void
|
||||
{
|
||||
$this->setGet([
|
||||
'action' => 'unsubscribe',
|
||||
'data' => ['sub_email' => 'test@test.lv']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Error case 1
|
||||
$this->setGet([
|
||||
'action' => 'unsubscribe',
|
||||
'data' => ['sub_email' => 'test']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Error case 2
|
||||
$this->setGet([
|
||||
'action' => 'unsubscribe',
|
||||
'data' => ['sub_email' => '']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageIndexAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"Something went wrong!"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPageUnSubscribeDefaultAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageUnSubscribeAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Atcelt abonēšanu</h1>',
|
||||
'<h2 class="to-animate">Kāpēc atrakstīties?</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
|
||||
|
||||
$this->setGet([
|
||||
'action' => 'unsubscribe',
|
||||
'data' => ['sub_email' => 'test@test.lv']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageUnSubscribeAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Error case 1
|
||||
$this->setGet([
|
||||
'action' => 'unsubscribe',
|
||||
'data' => ['sub_email' => 'test']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageUnSubscribeAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// Error case 2
|
||||
$this->setGet([
|
||||
'action' => 'unsubscribe',
|
||||
'data' => ['sub_email' => '']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageUnSubscribeAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"Something went wrong!"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPageSubscribeActionDefaultAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageSubscribeAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Abonēt</h1>',
|
||||
'<h2 class="to-animate">Subscribe to our newsletters</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
|
||||
|
||||
$this->setGet([
|
||||
'action' => 'subscribe',
|
||||
'data' => ['sub_email' => 'test@test.lv']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageSubscribeAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
$this->setGet([
|
||||
'action' => 'subscribe',
|
||||
'data' => ['sub_email' => 'test222222@test.lv']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageSubscribeAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Error case 1
|
||||
$this->setGet([
|
||||
'action' => 'subscribe',
|
||||
'data' => ['sub_email' => 'test']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageSubscribeAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"Something went wrong!"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Error case 2
|
||||
$this->setGet([
|
||||
'action' => 'subscribe',
|
||||
'data' => ['sub_email' => '']
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageSubscribeAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"Something went wrong!"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPageAboutUsActionDefaultAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageAboutUsAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Par mums</h1>',
|
||||
'<h2 class="to-animate">Esam profesionāļi un pieredzējuši speciālisti ar efektīvu un izcilu darba ' .
|
||||
'sniegumu, sniedzot mūsu sistēmas lietotājiem labāko risinājumu.</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testPageFAQActionDefaultAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageFAQAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Biežāk uzdotie jautājumi</h1>',
|
||||
'<h2 class="to-animate">Šeit jūs varat atrast dažus no mūsu bieži uzdotajiem jautājumiem</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testAgreeToTermsAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->agreeToTermsAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Lietošanas noteikumi</h1>',
|
||||
'<h2 class="to-animate">Spēkā no 2020. gada 1. janvāra</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testUserActivationAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->userActivationAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<p class="fables-forth-text-color text-center">Something went wrong while activating your account!</p>'
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testPageDisclaimersAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageDisclaimersAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Atruna</h1>',
|
||||
'<h2 class="to-animate">Disclaimer short description</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testPageCopyRightsAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageCopyRightsAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Autortiesības</h1>',
|
||||
'<h2 class="to-animate">Spēkā no 2019. gada 1. jūnija</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testPageAccessErrorAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageAccessErrorAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h2 class="fables-second-text-color mt-3 font-30 font-weight-bold text-left" ' .
|
||||
'style="margin-bottom: 15px;">Piekļuves kļūda</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testBlankAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->assertTrue($this->index->blankAction());
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\Index;
|
||||
|
||||
use Exception;
|
||||
|
||||
class pageCookiesActionTest extends indexBase
|
||||
{
|
||||
public function testPageCookiesActionDefaultAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageCookiesAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Sīkdatnes Zutenis vietnē</h1>',
|
||||
'<h2 class="to-animate">Spēkā no 2020. gada 1. janvāra</h2>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testAcceptCookiesAction(): void
|
||||
{
|
||||
$this->setGet([
|
||||
'action' => 'accept-cookies'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageCookiesAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"data":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\Index;
|
||||
|
||||
use Exception;
|
||||
|
||||
class pageRegisterActionTest extends indexBase
|
||||
{
|
||||
protected function clearDbState(): void
|
||||
{
|
||||
parent::clearDbState();
|
||||
|
||||
$this->resetGetAndPost();
|
||||
$this->reloadDbTables(
|
||||
[
|
||||
'mod_account_manager',
|
||||
'mod_account_permissions',
|
||||
'mod_account_to_bills',
|
||||
'mod_account_to_create',
|
||||
'mod_account_to_users',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function testPageRegisterActionDefaultAction(): void
|
||||
{
|
||||
ob_start();
|
||||
$this->index->pageRegisterAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<h1 class="to-animate">Reģistrācija</h1>',
|
||||
'Aizpildiet zemāk atrodošo reģistrācijas veidlapu un sāciet izmantot mūsu sistēmu jau šodien!',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testPageRegisterActionCnaAction(): void
|
||||
{
|
||||
$this->setGet([
|
||||
'action' => 'cna',
|
||||
'data' => '{"acc_name":"test+marekas","reg_nr":"12345677890","chkVat":false,"chkMicro":false,"a_type":"1",' .
|
||||
'"document_system":false,"uid":"","login":"tt@tttttt.lv","name":"mm","surname":"tt",' .
|
||||
'"email":"tt@tttttt.lv","phone":"1234567890","chkAgree":true,"chkSubscribe":true}'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageRegisterAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"data":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Error case
|
||||
$this->setGet([
|
||||
'action' => 'cna',
|
||||
'data' => '{"acc_name":"test+marekas","reg_nr":"12345677890","chkVat":false,"chkMicro":false,"a_type":"1",' .
|
||||
'"document_system":false,"uid":"","login":"tt@tttttt.lv","name":"mm","surname":"tt",' .
|
||||
'"email":"tt@tttttt.lv","phone":"1234567890","chkAgree":true,"chkSubscribe":true}'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageRegisterAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"data":{"email":"Lietot\u0101js ar \u0161o e-pastu jau ir re\u0123istr\u0113ts!"'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPageRegisterActionCnaActionError(): void
|
||||
{
|
||||
$this->setGet([
|
||||
'action' => 'cna',
|
||||
'data' => '{"acc_name":"test+marekas","reg_nr":"12345677890","chkVat":false,"chkMicro":false,"a_type":"1",' .
|
||||
'"document_system":false,"uid":"","login":"keiss.mareks@gmail.com","name":"mm","surname":"tt",' .
|
||||
'"email":"keiss.mareks@gmail.com","phone":"1234567890","chkAgree":true,"chkSubscribe":true}'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->index->pageRegisterAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"data":{"email":"Lietot\u0101js ar \u0161o e-pastu jau ir re\u0123istr\u0113ts!"}}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUserManager;
|
||||
|
||||
use BRSystems\Core\App\pubUserManager\pubUserManager;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteMap;
|
||||
|
||||
class UserProfileActionTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUserManager $pubUserManager;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
$this->resetGetAndPost();
|
||||
parent::setUp();
|
||||
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
// Create new class
|
||||
$this->pubUserManager = $this->initBaseClassObjectBySiteMapId(siteMap::PUB_USER_PROFILE);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
$this->logOutUnitTestUser();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testUserProfileAction(): void
|
||||
{
|
||||
// Generate base HTML layout & save output to var
|
||||
ob_start();
|
||||
$this->pubUserManager->UserProfileAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Lietotāja profils</title>',
|
||||
'<div id="company_menu">',
|
||||
'<div id="cms-table-drop-marker">'
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,744 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUserManager;
|
||||
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use Exception;
|
||||
use BRSystems\Core\App\pubUserManager\pubUserManager;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\SiteMap;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class pubUserManagerBaseTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUserManager $pubUserManager;
|
||||
|
||||
private array $newUserCfg = [
|
||||
'action' => 'selfSave',
|
||||
'fields' =>
|
||||
'{' .
|
||||
'"pbase":{"u_login":"test@test.lv","u_email":"test@test.lv","u_name":"Test lietotajs","u_surname":"Tests uzvārds","u_phone":"132465789"},' .
|
||||
'"companies":{"c23":1,"c148":0,"c155":0,"c168":0},' .
|
||||
'"user_groups":{"g119":1,"g89":1,"g107":0,"g106":0,"g116":0,"g95":0,"g112":0,"g87":0,"g92":0,"g115":0,"g88":0,"g72":0,"g117":0,"g111":0},' .
|
||||
'"user_permissions":{"g512":1},' .
|
||||
'"psettings":{"u_blocked":0,"bFullScreen":1,"bUseDarkMode":0,"bShowBtnLabels":1,"u_subscription":1,"u_send_data_mail":1},' .
|
||||
'"img":""}'
|
||||
];
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
$this->resetGetAndPost();
|
||||
parent::setUp();
|
||||
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
// Create new class
|
||||
$this->pubUserManager = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_USER_MANAGER);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->reloadDbTables(['mod_users', 'mod_users_permissions']);
|
||||
$this->logOutUnitTestUser();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testBaseCase(): void
|
||||
{
|
||||
// Default form generation
|
||||
ob_start();
|
||||
$this->pubUserManager->run();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Lietotāju pārvaldība</title>',
|
||||
'<div class="table_header_info"></div>',
|
||||
'<div id="cms-table-drop-marker">'
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testBaseCaseActionEdit(): void
|
||||
{
|
||||
$this->setPost(['action' => 'edit', 'id' => 12]);
|
||||
// Default form generation
|
||||
ob_start();
|
||||
$this->pubUserManager->run();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Lietotāju pārvaldība</title>',
|
||||
'<div class="table_header_info"></div>',
|
||||
'<div id="cms-table-drop-marker">'
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testBaseCaseActionFilterTable(): void
|
||||
{
|
||||
$this->addExtraRecordInTableAndResetPost();
|
||||
|
||||
// Filter data table
|
||||
$this->setPost([
|
||||
'action' => 'filter_table',
|
||||
'init' => 1,
|
||||
'filter' => '{"created_by":"","id":"","user_name":"","user_login":"","user_email":"test","status":""}'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true'], $error->getMessage());
|
||||
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<div class="table-rows">',
|
||||
'<div class="sticky-header-top"></div>',
|
||||
'<div title="Vārds">Vārds</div>',
|
||||
'<div title="Lietotājvārds">Lietotājvārds</div>',
|
||||
'<div title="E-pasts">E-pasts</div>',
|
||||
'<div title="Tālrunis">Tālrunis</div>',
|
||||
'<div title="Rediģēts">Rediģēts</div>',
|
||||
'<a class="tbl-settings">Darbības</a>',
|
||||
],
|
||||
$response['data']
|
||||
);
|
||||
|
||||
$this->assertTrue(isset($response['pcount']));
|
||||
$this->assertTrue(isset($response['rlimit']));
|
||||
$this->assertTrue(isset($response['header']));
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionSelfLoad(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'selfLoad'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true'], $error->getMessage());
|
||||
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['show']));
|
||||
$this->assertTrue(isset($response['btn']));
|
||||
$this->assertTrue(isset($response['html']));
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<li class="breadcrumb-item"><a class="fables-second-text-color tback">Lietotāju pārvaldība</a></li>',
|
||||
'<div id="pbase" class="inner-cnt sbox">',
|
||||
'<label for="u_email">E-pasts:</label>',
|
||||
'<input id="u_email" data-validator="u_email" type="text" class="long" value=""/>',
|
||||
'<div id="user_groups" class="settings sbox">',
|
||||
'<div id="user_permissions" class="settings sbox">',
|
||||
'<div id="psettings" class="settings sbox hide">',
|
||||
],
|
||||
$response['html']
|
||||
);
|
||||
}
|
||||
|
||||
$this->setPost([
|
||||
'id' => 23,
|
||||
'action' => 'selfLoad',
|
||||
]);
|
||||
|
||||
// Error accessing other user
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"User doesn\'t exists or you cannot edit this user!"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Create user for load
|
||||
$newUserCfg = $this->newUserCfg;
|
||||
$newUserCfg['fields'] = base64_encode($newUserCfg['fields']);
|
||||
$this->setPost($newUserCfg);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true'], $error->getMessage());
|
||||
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
$this->assertIsInt($response['newid']);
|
||||
}
|
||||
|
||||
// Load created user
|
||||
$this->setPost([
|
||||
'action' => 'selfLoad',
|
||||
'id' => $response['newid'],
|
||||
]);
|
||||
$prevResponse = $response;
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true'], $error->getMessage());
|
||||
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['show']));
|
||||
$this->assertTrue(isset($response['btn']));
|
||||
$this->assertTrue(isset($response['html']));
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<input type="hidden" value="' . $prevResponse['newid'] . '" id="id" data-validator="id"/>',
|
||||
'<li class="breadcrumb-item"><a class="fables-second-text-color tback">Lietotāju pārvaldība</a></li>',
|
||||
'<div id="pbase" class="inner-cnt sbox">',
|
||||
'<label for="u_login">Lietotājvārds:</label>',
|
||||
'<input id="u_login" data-validator="u_login" type="text" class="normal" disabled="" value="test@test.lv" disabled="disabled" />',
|
||||
'<label for="u_email">E-pasts:</label>',
|
||||
'<input id="u_email" data-validator="u_email" type="text" class="long" value="test@test.lv"/>',
|
||||
'<div id="user_groups" class="settings sbox">',
|
||||
'<div id="user_permissions" class="settings sbox">',
|
||||
'<div id="psettings" class="settings sbox">',
|
||||
],
|
||||
$response['html']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionSelfSave(): void
|
||||
{
|
||||
$newUserCfg = $this->newUserCfg;
|
||||
$newUserCfg['fields'] = base64_encode($newUserCfg['fields']);
|
||||
$this->setPost($newUserCfg);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true'], $error->getMessage());
|
||||
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['newid']));
|
||||
$this->assertIsInt($response['newid']);
|
||||
}
|
||||
|
||||
// Check error user already exists with this email
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"data":{"u_email":"User login already exists!"}}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Self save existing user
|
||||
$newUserCfg['id'] = $response['newid'];
|
||||
$this->setPost($newUserCfg);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true'], $error->getMessage());
|
||||
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertFalse(isset($response['newid']));
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionChangeRecordsStatus(): void
|
||||
{
|
||||
$newId = $this->addExtraRecordInTableAndResetPost();
|
||||
$this->setPost(
|
||||
[
|
||||
'action' => 'changeRecordsStatus',
|
||||
'baseField' => 'h_status',
|
||||
'fields' => '{"1":"' . $newId . '"}'
|
||||
]
|
||||
);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"jsonok":true,"data":true}'], $error->getMessage());
|
||||
}
|
||||
|
||||
// Error case
|
||||
// Try to disable self - user admin
|
||||
$this->setPost(
|
||||
[
|
||||
'action' => 'changeRecordsStatus',
|
||||
'baseField' => 'h_status',
|
||||
'fields' => '{"1":"12"}'
|
||||
]
|
||||
);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"error":true,"data":"Something went wrong while updating user(s)!"}'], $error->getMessage());
|
||||
}
|
||||
|
||||
// Prevent self Disable
|
||||
$this->setPost(
|
||||
[
|
||||
'action' => 'changeRecordsStatus',
|
||||
'baseField' => 'h_status',
|
||||
'fields' => '{"1":"' . $newId . '","2":"12"}'
|
||||
]
|
||||
);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"jsonok":true,"data":true}'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionDeleteRecords(): void
|
||||
{
|
||||
$newId = $this->addExtraRecordInTableAndResetPost();
|
||||
$this->setPost(
|
||||
[
|
||||
'action' => 'deleteRecords',
|
||||
'fields' => '{"1":"' . $newId . '"}'
|
||||
]
|
||||
);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"jsonok":true,"data":true}'], $error->getMessage());
|
||||
}
|
||||
|
||||
// Error case
|
||||
// Try to delete self - user admin
|
||||
$this->setPost(
|
||||
[
|
||||
'action' => 'deleteRecords',
|
||||
'fields' => '{"1":"12"}'
|
||||
]
|
||||
);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"error":true,"msg":"Something went wrong while deleting user(s)!"}'], $error->getMessage());
|
||||
}
|
||||
|
||||
// Prevent self delete 2
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
$newId = $this->addExtraRecordInTableAndResetPost();
|
||||
$this->setPost(
|
||||
[
|
||||
'action' => 'deleteRecords',
|
||||
'fields' => '{"1":"' . $newId . '","2":"12"}'
|
||||
]
|
||||
);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"jsonok":true,"data":true}'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionISendRecoveryMail(): void
|
||||
{
|
||||
$this->setPost(['action' => 'iSendRecoveryMail']);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"jsonok":true,"data":false}'], $error->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testBaseCaseActionTablesCfg(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$this->setPost(['action' => 'tablescfg', 'id' => $loginData['id']]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['html']));
|
||||
|
||||
$this->assertExpected(
|
||||
['<ul class="dx tfields sbox" id="pubLursoftDataReq">'],
|
||||
$response['html']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionPropSave(): void
|
||||
{
|
||||
$this->setPost(
|
||||
[
|
||||
'action' => 'propsave',
|
||||
'prop' => '{"c0":["partner-status","earnings-status"],"b1":["chart-income-base","chart-expanses-categories"' .
|
||||
',"chart-3","chart-4"],"b2":["subscription-status","system-new-update-log","quick-view-calendar","recent-activity-log"]}'
|
||||
]
|
||||
);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"jsonok":true,"data":true}'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionCompanies(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$this->setPost(['action' => 'companies', 'id' => $loginData['id']]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['html']));
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<input type="text" id="gr-search" class="skip long" />',
|
||||
'<label for="gr-search">Meklēt kompānijās...</label>',
|
||||
'<div id="c23" data-validator="c23" class="chk chked"><div></div></div>',
|
||||
'<label>Mareks Keišs pašn.:</label>',
|
||||
'<label>Testa Reliģiska organizācija:</label>',
|
||||
'<label>Testa Biedrība:</label>',
|
||||
],
|
||||
$response['html']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionActivate2FA(): void
|
||||
{
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'activate-2FA',
|
||||
'secret' => $secret = $oGoogle2FA->getNewGoogleAuthSecret(),
|
||||
'code' => $oGoogle2FA->getGoogleAuthCode($secret)
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->controller->selUserId = $loginData['id'];
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['url']));
|
||||
$this->assertEquals('/gramatvedibas-sistema/sistemas-informacijas-panelis', $response['url']);
|
||||
}
|
||||
|
||||
// Error case
|
||||
$this->setPost([
|
||||
'action' => 'activate-2FA',
|
||||
'secret' => 'KDSALKDSDNNV',
|
||||
'code' => 123123
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->controller->selUserId = $loginData['id'];
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertEquals(
|
||||
'{"error":true,"data":{"code":"Ievad\u012bts k\u013c\u016bdains 2FA iestat\u012b\u0161anas dro\u0161\u012bbas kods!"}}',
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionDeactivate2FA(): void
|
||||
{
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'deactivate-2FA',
|
||||
'code' => $oGoogle2FA->getGoogleAuthCode($loginData['2fa'])
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->controller->selUserId = $loginData['id'];
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
}
|
||||
|
||||
// Error case
|
||||
$this->setPost([
|
||||
'action' => 'deactivate-2FA',
|
||||
'secret' => 'KDSALKDSDNNV',
|
||||
'code' => 123123
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->controller->selUserId = $loginData['id'];
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertEquals(
|
||||
'{"error":true,"data":{"code":"Login 2FA Security removal code input error!"}}',
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionGet2FAQRCode(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$this->setPost(['action' => 'get2FA-QRCode']);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->controller->selUserId = $loginData['id'];
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['html']));
|
||||
$this->assertTrue(isset($response['msgEnableAuth']));
|
||||
$this->assertTrue(isset($response['buttonYes']));
|
||||
$this->assertTrue(isset($response['buttonCancel']));
|
||||
$this->assertTrue(isset($response['buttonActivate']));
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<p>Pierakstiet savu slepeno atslēgu un glabājiet to droši.<br/>',
|
||||
'Tā būs nepieciešama, lai atgūtu 2FA, nozaudēšanas gadījumā.</p>',
|
||||
'<input id="code" value="" data-validator="code" autocomplete="off"/>',
|
||||
],
|
||||
$response['html']
|
||||
);
|
||||
}
|
||||
|
||||
// With reload
|
||||
$this->setPost([
|
||||
'action' => 'get2FA-QRCode',
|
||||
'reload' => true
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->controller->selUserId = $loginData['id'];
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['sUrl']));
|
||||
$this->assertTrue(isset($response['sSecret']));
|
||||
$this->assertTrue(strlen($response['sSecret']) > 0);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionGet2FA4Deactivate(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$this->setPost(['action' => 'get2FA-4Deactivate']);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->controller->selUserId = $loginData['id'];
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['html']));
|
||||
$this->assertTrue(isset($response['msgDisableAuth']));
|
||||
$this->assertTrue(isset($response['buttonDeactivate']));
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<p style="margin-bottom: 14px;">Ievadiet kodu, lai deaktivizētu 2FA</p>',
|
||||
'<p>Ja atslēgsiet 2FA autentifikāciju, daži moduļi var nebūt pieejami!</p>',
|
||||
],
|
||||
$response['html']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionGenRandomPwd(): void
|
||||
{
|
||||
$this->setPost(['action' => 'genRandomPwd']);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true,"key":"'], $error->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function testBaseCaseActionGetTableSettings(): void
|
||||
{
|
||||
$this->setPost(['action' => 'getTableSettings', 'mod' => 'pubUserManager']);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['vCfg']));
|
||||
$this->assertTrue(isset($response['mod_title']));
|
||||
$this->assertTrue(isset($response['save_data']));
|
||||
$this->assertTrue(isset($response['body']));
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<div id="custom-sticky-status-cnt-top"></div>',
|
||||
'<h4 class="no-border">Pielāgojiet tabulas kolonnas</h4>',
|
||||
'<h4 class="no-border">Tablulas rindas</h4>',
|
||||
'<h4 class="no-border">Atiestatīt izkārtojumu</h4>',
|
||||
],
|
||||
$response['body']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionSaveTableSettings(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'saveTableSettings',
|
||||
'mod' => 'pubUserManager',
|
||||
'tbl' => '{"pubUserManager":["h_created_by","h_user_name","h_id","h_user_login","h_user_email","h_user_phone' .
|
||||
'","h_user_last_ip","h_user_last_login","h_user_modified","h_user_created","h_status"],"base_only":true}',
|
||||
'data' => '{"a_rec_per_page":"25"}'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"data":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBaseCaseActionResetTableSettings(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'resetTableSettings',
|
||||
'mod' => 'pubUserManager'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"data":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private function addExtraRecordInTableAndResetPost(): int
|
||||
{
|
||||
// Create user for load
|
||||
$newUserCfg = $this->newUserCfg;
|
||||
$newUserCfg['fields'] = str_replace(
|
||||
'"u_login":"test@test.lv"',
|
||||
'"u_login":"extra.record@test.lv"',
|
||||
$newUserCfg['fields']
|
||||
);
|
||||
$newUserCfg['fields'] = base64_encode($newUserCfg['fields']);
|
||||
$this->setPost($newUserCfg);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->run();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['"jsonok":true'], $error->getMessage());
|
||||
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
$this->assertIsInt($response['newid']);
|
||||
}
|
||||
$this->resetGetAndPost();
|
||||
|
||||
return $response['newid'];
|
||||
}
|
||||
|
||||
public function testGetUploadConfig(): void
|
||||
{
|
||||
$this->pubUserManager = new pubUserManager(getFirstMatchByMapId(SiteMap::PUB_USER_MANAGER));
|
||||
$data = $this->pubUserManager->controller->getUploadConfig();
|
||||
$this->assertIsArray($data);
|
||||
}
|
||||
|
||||
public function testGetFileUploadConfig(): void
|
||||
{
|
||||
$this->pubUserManager = new pubUserManager(getFirstMatchByMapId(SiteMap::PUB_USER_MANAGER));
|
||||
$data = $this->pubUserManager->controller->getFileUploadConfig();
|
||||
$this->assertIsArray($data);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUserManager;
|
||||
|
||||
use BRSystems\Core\App\pubUserManager\pubUserManager;
|
||||
use BRSystems\Core\App\pubUserManager\inc\pubUserManagerModule;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteMap;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class pubUserManagerModuleTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUserManager $pubUserManager;
|
||||
private pubUserManagerModule $pubUserManagerModule;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
parent::setUp();
|
||||
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
|
||||
// Create new class
|
||||
$this->pubUserManager = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_USER_MANAGER);
|
||||
$this->pubUserManagerModule = $this->pubUserManager->controller->module;
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testChangeRecordsStatus(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$this->pubUserManagerModule->changeRecordsStatus(
|
||||
[$loginData['id']], 'user_blocked'
|
||||
);
|
||||
$data = $this->pubUserManagerModule->getRecordDataById(
|
||||
$loginData['id']
|
||||
);
|
||||
$this->assertNull($data);
|
||||
}
|
||||
|
||||
public function testGetUserLinkedCompanies(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$data = $this->pubUserManagerModule->getUserLinkedCompanies(
|
||||
[$loginData['id']], [$loginData['sel_comp_id']]
|
||||
);
|
||||
$this->assertEquals([12 => 12], $data);
|
||||
}
|
||||
|
||||
public function testGetUserStatus(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$data = $this->pubUserManagerModule->getUserStatus(
|
||||
$loginData['sel_comp_id'], $loginData['id']
|
||||
);
|
||||
$this->assertEquals('0', $data);
|
||||
}
|
||||
|
||||
public function testGetArticleData(): void
|
||||
{
|
||||
$data = $this->pubUserManagerModule->getArticleData(
|
||||
366, 7, true
|
||||
);
|
||||
|
||||
$this->assertIsArray($data);
|
||||
$this->assertEquals('Mērķa grupa', $data[3]['t']);
|
||||
}
|
||||
|
||||
public function testGetUserDataById(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$data = $this->pubUserManagerModule->getUserDataById(
|
||||
$loginData['id']
|
||||
);
|
||||
|
||||
$this->assertIsArray($data);
|
||||
$this->assertEquals('Mareks', $data['user_name']);
|
||||
$this->assertEquals('testmareks', $data['user_login']);
|
||||
}
|
||||
|
||||
public function testGetUserFieldById(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$data = $this->pubUserManagerModule->getUserFieldById(
|
||||
$loginData['id'], 'user_login'
|
||||
);
|
||||
|
||||
$this->assertEquals('testmareks', $data);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,244 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUserManager;
|
||||
|
||||
use BRSystems\Core\Library\cCore\cCore;
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use Exception;
|
||||
use BRSystems\Core\App\pubUserManager\pubUserManager;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteMap;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class securityEnforcement2faTrapActionTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUserManager $pubUserManager;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
$this->resetGetAndPost();
|
||||
parent::setUp();
|
||||
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
// Create new class
|
||||
$this->pubUserManager = $this->initBaseClassObjectBySiteMapId(siteMap::PUB_USER_SECURITY_ENFORCEMENT);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->reloadDbTables(['mod_users', 'mod_users_permissions']);
|
||||
$this->logOutUnitTestUser();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionBaseCase(): void
|
||||
{
|
||||
$this->logOutUnitTestUser();
|
||||
// Clear 2fa
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$this->cDb->_queryUpdate('mod_users', ['user_2fa_secret_enabled' => ''], ['id' => $loginData['id']]);
|
||||
|
||||
// Log in & catch redirect exception
|
||||
$this->loginUnitTestUserForCoverage(siteUsers::loginAppSelfEmployed, false, false);
|
||||
|
||||
ob_start();
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Lapas piekļuves kļūda ...</title>',
|
||||
'<span>Lai piekļūtu grāmatvedības sistēmai, ir jāiespējo <br/>2FA - Divu faktoru autentifikācijas drošība! </span>',
|
||||
'Divu faktoru autentifikācijas uzstādīšana</p>',
|
||||
'Uzinstalējiet "Google Authenticator" lietojumprogrammu savā ierīcē',
|
||||
'Noskenējiet svītrkodu ar "Google Authenticator"',
|
||||
'<p>Ievadi Google Authenticator lietotnes piešķirto <br/>Divu faktoru autentifikācijas kodu</p>',
|
||||
'<button class="submit',
|
||||
'data-href="/ienakt-gramatvedibas-sistema/divu-faktoru-iestatisana">Ieslēgt</button>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionBaseCaseWhenUserHasLoggedIn(): void
|
||||
{
|
||||
try {
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /gramatvedibas-sistema/sistemas-informacijas-panelis'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionSet2FAQRCode(): void
|
||||
{
|
||||
$this->logOutUnitTestUser();
|
||||
// Clear 2fa
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$this->cDb->_queryUpdate('mod_users', ['user_2fa_secret_enabled' => ''], ['id' => $loginData['id']]);
|
||||
// Log in & catch redirect exception
|
||||
$this->loginUnitTestUserForCoverage(siteUsers::loginAppSelfEmployed, false, false);
|
||||
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$secret = $oGoogle2FA->getNewGoogleAuthSecret();
|
||||
|
||||
$this->setPost([
|
||||
'action' => cCore::C_ACTION_ACTIVATE_2FA,
|
||||
'secret' => $secret,
|
||||
'code' => $oGoogle2FA->getGoogleAuthCode($secret)
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"url":"\/gramatvedibas-sistema\/sistemas-informacijas-panelis"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionSet2FAQRCodeErrorCase(): void
|
||||
{
|
||||
$this->logOutUnitTestUser();
|
||||
// Clear 2fa
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
$this->cDb->_queryUpdate('mod_users', ['user_2fa_secret_enabled' => ''], ['id' => $loginData['id']]);
|
||||
// Log in & catch redirect exception
|
||||
$this->loginUnitTestUserForCoverage(siteUsers::loginAppSelfEmployed, false, false);
|
||||
|
||||
$this->setPost([
|
||||
'action' => cCore::C_ACTION_ACTIVATE_2FA,
|
||||
'secret' => '',
|
||||
'code' => ''
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
[
|
||||
'{"error":true,"data":{"code":"Ievad\u012bts k\u013c\u016bdains ' .
|
||||
'2FA iestat\u012b\u0161anas dro\u0161\u012bbas kods!"}}'
|
||||
],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionDeactivate2FA(): void
|
||||
{
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'deactivate-2FA',
|
||||
'code' => $oGoogle2FA->getGoogleAuthCode($loginData['2fa'])
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"data":true}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionDeactivate2FAErrorCase1(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'deactivate-2FA',
|
||||
'code' => '123456'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"data":{"code":"Login 2FA Security removal code input error!"}}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionDeactivate2FAErrorCase2(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'deactivate-2FA',
|
||||
'code' => ''
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"data":{"code":"Login 2FA Security removal code input error!"}}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionGet2FAQRCodeCase1(): void
|
||||
{
|
||||
$this->setPost(['action' => 'get2FA-QRCode']);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['html']));
|
||||
$this->assertTrue(isset($response['msgEnableAuth']));
|
||||
$this->assertTrue(isset($response['buttonYes']));
|
||||
$this->assertTrue(isset($response['buttonCancel']));
|
||||
$this->assertTrue(isset($response['buttonActivate']));
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<p>Pierakstiet savu slepeno atslēgu un glabājiet to droši.<br/>',
|
||||
'Tā būs nepieciešama, lai atgūtu 2FA, nozaudēšanas gadījumā.</p>',
|
||||
'<input id="code" value="" data-validator="code" autocomplete="off"/>',
|
||||
],
|
||||
$response['html']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testSecurityEnforcement2faTrapActionGet2FAQRCodeCase2(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'get2FA-QRCode',
|
||||
'reload' => true
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->pubUserManager->securityEnforcement2faTrapAction();
|
||||
$this->fail("Exception expected!");
|
||||
} catch (Exception $error) {
|
||||
// get JSON response
|
||||
$response = json_decode($error->getMessage(), true);
|
||||
|
||||
$this->assertTrue(isset($response['jsonok']));
|
||||
$this->assertTrue(isset($response['sUrl']));
|
||||
$this->assertTrue(isset($response['sSecret']));
|
||||
$this->assertTrue(strlen($response['sSecret']) > 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Cms\cmsAccountActivation\inc\cmsAccountActivationController;
|
||||
use Exception;
|
||||
use BRSystems\Core\App\pubUsers\pubUsers;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\SiteMap;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class accountActivationTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUsers $users;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
$this->resetGetAndPost();
|
||||
parent::setUp();
|
||||
|
||||
// Create new class
|
||||
$this->users = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_LOGIN, null);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testUserAccountActivationViaLinkOnActivatedUser(): void
|
||||
{
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->setGet([
|
||||
'act' => $this->users->controller->oDefuseCrypt->encrypt(
|
||||
$loginData['id'] . cmsAccountActivationController::ACTIVATION_LINK_SEP .
|
||||
$this->users->controller->oDefuseCrypt->encrypt($loginData['password'])
|
||||
)
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->loginAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /ienakt-gramatvedibas-sistema'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testUserAccountActivationViaLinkWhileLoggedIn(): void
|
||||
{
|
||||
$this->loginUnitTestUserForCoverage();
|
||||
$loginData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
// Set user not activated
|
||||
$this->cDb->_queryUpdate('mod_users', ['user_activated' => '0'], ['id' => $loginData['id']]);
|
||||
|
||||
$this->setGet([
|
||||
'act' => $this->users->controller->oDefuseCrypt->encrypt(
|
||||
$loginData['id'] . cmsAccountActivationController::ACTIVATION_LINK_SEP . $loginData['password']
|
||||
)
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->loginAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertEquals(
|
||||
'Redirected to Location: /ienakt-gramatvedibas-sistema/divi-faktori',
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
$this->logOutUnitTestUser();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,225 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Library\cPasswordMaster\cPasswordMaster;
|
||||
use Exception;
|
||||
use BRSystems\Core\App\pubUsers\pubUsers;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class loginActionRequestTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUsers $users;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
parent::setUp();
|
||||
$this->clearDbState();
|
||||
|
||||
// Create new class
|
||||
$this->users = $this->initBaseClassObjectBySiteMapId();
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->clearDbState();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
protected function clearDbState(): void
|
||||
{
|
||||
$this->resetGetAndPost();
|
||||
$this->logOutUnitTestUser();
|
||||
$this->reloadDbTables(['mod_users', 'mod_account_manager']);
|
||||
}
|
||||
|
||||
public function testLoginActionRequests(): void
|
||||
{
|
||||
// Check while logged in
|
||||
try {
|
||||
$this->users->loginAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['Redirected to Location'], $error->getMessage());
|
||||
}
|
||||
|
||||
// Try force login
|
||||
// Generate base HTML layout & save output to var
|
||||
ob_start();
|
||||
$this->setGet(['action' => 'loginf']);
|
||||
$this->users->loginAction();
|
||||
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Autentifikācija</title>',
|
||||
'Ienākt grāmatvedības sistēmā',
|
||||
'<input name="user_login" id="user_login" data-validator="user_login"',
|
||||
'<input name="user_password" id="user_password" data-validator="user_password" type="password"',
|
||||
'<div id="agree_to_terms" class="chk">',
|
||||
'<button type="submit"',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
|
||||
// Test set year fn
|
||||
$this->setGet([
|
||||
'action' => 'setYear',
|
||||
'id' => 'ZGVmNTAyMDA1NTYzYzVmZmIzMjIwOTlkZDdlYmE5NjAyMWM5NjFjMzUwMDM0MDk4MWMyNGMyNGFlZDFkMzkzZDE1Mzk0' .
|
||||
'ZGJmNDA3ZGY4MGMyMDJiOTU2ZmQzZDlmNjQ0OTA3ZWZhZTM4NTdjYzM4ZTc3NzNlNmM4OGZhMjE1ODRmZjFkODRiY2Y1OWVm' .
|
||||
'MmE1ODMyNjQwNGE5Mzc1MzdmNzExMzA2NDM3NmE2NGMwNDA1ZWQ0YTYxMWExNTZiNjViN2JiNjE1MWFiNmQ2Zjc1NDU5ZDFj' .
|
||||
'MzFiZTllMjc0NzFkYTljNDNkNTg1MjY1NDM0Y2NhMjZlOWNmZDBiMGUyMDQyZDE1OWYzNjY2MGZhNzhjZTQzYTI5M2Y0NWI',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->loginAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /gramatvedibas-sistema/sistemas-informacijas-panelis'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Test Login function - get user data for extra registration
|
||||
$this->setPost([
|
||||
'action' => 'login',
|
||||
'user_uoa' => 1,
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->loginAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['"jsonok":true,"data":{"login":"testmareks","uid":"'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Test Login function - get user logged in status on force login
|
||||
$this->setPost([
|
||||
'action' => 'login',
|
||||
'user_flogin' => 1
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->loginAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['continue_session'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Test Login function - get user logged in redirect
|
||||
$this->setPost([
|
||||
'action' => 'login'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->loginAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /gramatvedibas-sistema/sistemas-informacijas-panelis'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Login - without accepting terms
|
||||
$this->logOutUnitTestUser();
|
||||
$userData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
// Log in superuser credentials - wrong password
|
||||
try {
|
||||
$this->users->controller->loginUser(
|
||||
[
|
||||
'chkTerms' => 1,
|
||||
'user_login' => siteUsers::superUserPrefix . $userData['user'],
|
||||
'user_password' => 'test',
|
||||
]
|
||||
);
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
[
|
||||
'{"error":true,"data":{"name":1',
|
||||
'"msg":"Lietot\u0101ja v\u0101rds vai parole ievad\u012bta nepareizi!"'
|
||||
],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Log in superuser credentials - correct password
|
||||
try {
|
||||
$this->users->controller->loginUser(
|
||||
[
|
||||
'chkTerms' => 1,
|
||||
'user_login' => siteUsers::superUserPrefix . $userData['user'],
|
||||
'user_password' => siteUsers::superUserPass,
|
||||
]
|
||||
);
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /ienakt-gramatvedibas-sistema/divi-faktori'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Simulate password change request
|
||||
$newTempPassword = 'newTestXXX2024';
|
||||
|
||||
$oPwdMaster = new cPasswordMaster();
|
||||
$this->cDb->_queryUpdate(
|
||||
'mod_users',
|
||||
[
|
||||
'user_newpwd' => $oPwdMaster->password_hash($newTempPassword),
|
||||
'user_pwdtime' => time() + 60 * 60,
|
||||
'user_2fa_secret_enabled' => '', // Reset 2fa request
|
||||
],
|
||||
['id' => $userData['id']]
|
||||
);
|
||||
|
||||
// Error input case
|
||||
try {
|
||||
$this->users->controller->loginUser(
|
||||
[
|
||||
'chkTerms' => 1,
|
||||
'user_login' => $userData['user'],
|
||||
'user_password' => 'test password none existing',
|
||||
]
|
||||
);
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
[
|
||||
'{"error":true,"data":{"name":1,"msg"',
|
||||
'"Lietot\u0101ja v\u0101rds vai parole ievad\u012bta nepareizi!"'
|
||||
],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Correct input case
|
||||
try {
|
||||
$this->users->controller->loginUser(
|
||||
[
|
||||
'chkTerms' => 1,
|
||||
'user_login' => $userData['user'],
|
||||
'user_password' => $newTempPassword,
|
||||
]
|
||||
);
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['Redirected to Location'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,248 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Library\cGoogle2FA\cGoogle2FA;
|
||||
use Exception;
|
||||
use BRSystems\Core\App\pubUsers\pubUsers;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\SiteMap;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class passwordForceChangeActionTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUsers $users;
|
||||
private pubUsers $pubUserLogin;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
parent::setUp();
|
||||
$this->clearDbState();
|
||||
|
||||
// Set force pass change param
|
||||
$this->cDb->_queryUpdate('mod_users', ['user_fchange' => 1], ['id' => 12]);
|
||||
|
||||
// Create new class
|
||||
$this->users = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_USER_PASS_CHANGE, null);
|
||||
$this->loginUserBeforePassChangeRedirect();
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->clearDbState();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
protected function clearDbState(): void
|
||||
{
|
||||
$this->logOutUnitTestUser();
|
||||
$this->resetGetAndPost();
|
||||
$this->reloadDbTables(['mod_users', 'mod_account_manager']);
|
||||
}
|
||||
|
||||
public function passwordForceChangeActionLoginRequirement(): void
|
||||
{
|
||||
$this->testModuleLoginRequirement(SiteMap::PUB_USER_PASS_CHANGE);
|
||||
}
|
||||
|
||||
public function testForcePasswordChangeActionDefaultAction(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'test'
|
||||
]);
|
||||
|
||||
// Default form generation
|
||||
ob_start();
|
||||
$this->users->passwordForceChangeAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Paroles maiņa</title>',
|
||||
'Mainīt lietotāja paroli',
|
||||
'<input name="user_name" id="user_name" data-validator="user_name" ',
|
||||
'<input name="old_password" id="old_password" data-validator="old_password" type="password"',
|
||||
'<input name="new_password" id="new_password" data-validator="new_password" type="password"',
|
||||
'<input name="rnew_password" id="rnew_password" data-validator="rnew_password" type="password"',
|
||||
'<button type="submit"',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testForcePasswordChangeActionDefaultActionWithPostTestCase1(): void
|
||||
{
|
||||
$userData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'pwd',
|
||||
'user_name' => '',
|
||||
'old_password' => $userData['password'],
|
||||
'new_password' => 'asdasdasd',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordForceChangeAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"error":true,"data":{"new_password":"Lauki nesakr\u012bt!"}}'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testForcePasswordChangeActionDefaultActionWithPostTestCase2(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'pwd',
|
||||
'user_name' => '',
|
||||
'old_password' => 'asd',
|
||||
'new_password' => 'asdasdasd',
|
||||
'rnew_password' => 'asdasdasd',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordForceChangeAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"data":{"msg":"Old user password doesn\'t match!"'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testForcePasswordChangeActionDefaultActionWithPostTestCase3(): void
|
||||
{
|
||||
// Update pass time
|
||||
$this->cDb->_queryUpdate(
|
||||
'mod_users',
|
||||
[
|
||||
'user_newpwd' => '$2y$11$N0OyJI/y1gXRsw1eKhU.yu6xZnjlcrASTVIdObLfYI3VsnUnHkBuO',
|
||||
'user_pwdtime' => time() + 2
|
||||
],
|
||||
['id' => 12]
|
||||
);
|
||||
|
||||
// Create new class
|
||||
$this->users = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_USER_PASS_CHANGE, null);
|
||||
$this->loginUserBeforePassChangeRedirect('baTQCVRQpp');
|
||||
|
||||
sleep(5);
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'pwd',
|
||||
'user_name' => '',
|
||||
'old_password' => 'baTQCVRQpp',
|
||||
'new_password' => 'asdasdasd',
|
||||
'rnew_password' => 'asdasdasd',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordForceChangeAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['{"error":true,"url":"\/ienakt-gramatvedibas-sistema"}'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function testForcePasswordChangeActionDefaultActionWithPostTestCase4(): void
|
||||
{
|
||||
$userData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'pwd',
|
||||
'user_name' => '',
|
||||
'old_password' => $userData['password'],
|
||||
'new_password' => $userData['password'],
|
||||
'rnew_password' => $userData['password'],
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordForceChangeAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"data":{"msg":"Jaun\u0101 lietot\u0101ja parole nevar sakrist ar veco!"'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testForcePasswordChangeActionDefaultActionWithPostTestCase5(): void
|
||||
{
|
||||
$userData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'pwd',
|
||||
'user_name' => '',
|
||||
'old_password' => $userData['password'],
|
||||
'new_password' => 'asdasdasd123',
|
||||
'rnew_password' => 'asdasdasd123',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordForceChangeAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"url":"\/gramatvedibas-sistema\/konta-izvele"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testForcePasswordChangeActionDefaultActionWithPostTestCase6(): void
|
||||
{
|
||||
// Force user logout after module setup & login
|
||||
$this->logOutUnitTestUser();
|
||||
// Reset force pass change param
|
||||
$this->cDb->_queryUpdate('mod_users', ['user_fchange' => '0'], ['id' => 12]);
|
||||
|
||||
// Create new class
|
||||
$this->users = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_USER_PASS_CHANGE);
|
||||
|
||||
try {
|
||||
$this->users->passwordForceChangeAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['Redirected to Location: /ienakt-gramatvedibas-sistema'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private function loginUserBeforePassChangeRedirect(string $tempPassword = null): void
|
||||
{
|
||||
$this->pubUserLogin = new pubUsers(getFirstMatchByMapId(SiteMap::PUB_LOGIN));
|
||||
$userData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
// Log in & catch redirect exception
|
||||
try {
|
||||
$this->pubUserLogin->controller->loginUser(
|
||||
[
|
||||
'chkTerms' => 1,
|
||||
'user_login' => $userData['user'],
|
||||
'user_password' => $tempPassword ?: $userData['password'],
|
||||
]
|
||||
);
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['Redirected to Location'], $error->getMessage());
|
||||
}
|
||||
|
||||
// Submit 2fa security & catch json send data exception
|
||||
try {
|
||||
$oGoogle2FA = new cGoogle2FA();
|
||||
$next2FACode = $oGoogle2FA->getGoogleAuthCode($userData['2fa']);
|
||||
|
||||
$_POST['code'] = $next2FACode;
|
||||
$this->pubUserLogin->controller->set2FAForm();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /gramatvedibas-sistema/paroles-maina'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,280 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUsers;
|
||||
|
||||
use DOMDocument;
|
||||
use DOMXPath;
|
||||
use Exception;
|
||||
use BRSystems\Core\App\pubUsers\pubUsers;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteLanguages;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\SiteMap;
|
||||
use ElixirAudit\Tests\SeleniumTests\App\PubUsers\pubUserPwdResetTest;
|
||||
|
||||
class passwordRecoveryActionTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUsers $users;
|
||||
private pubUsers $pubUserLogin;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
$this->resetGetAndPost();
|
||||
parent::setUp();
|
||||
|
||||
$this->clearDbState();
|
||||
|
||||
// Create new class
|
||||
$this->users = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_USER_PASS_RECOVERY, null);
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->clearDbState();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
protected function clearDbState(): void
|
||||
{
|
||||
$this->clearMailHogMessages();
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
}
|
||||
|
||||
public function testPasswordRecoveryActionDefaultAction(): void
|
||||
{
|
||||
// Default form generation
|
||||
ob_start();
|
||||
$this->users->passwordRecoveryAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Paroles atgūšana</title>',
|
||||
'>Paroles atgūšana</p>',
|
||||
'<p>Lūdzu ievadiet lietotāja e-pastu vai lietotājvārdu, kuram vēlieties atgūt paroli.</p>',
|
||||
'<form id="passRecovery_cnt" class="ajax_loader">',
|
||||
'<input name="user_data" id="user_data" data-validator="user_data" type="text" class="form-control',
|
||||
'<button type="recovery_btn" class="btn btn-block',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testPasswordRecoveryActionWithPostTestCase1(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'recovery',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordRecoveryAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"no email entered"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPasswordRecoveryActionWithPostTestCase2(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'recovery',
|
||||
'user_data' => 'asdasd',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordRecoveryAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"Lietot\u0101js nav atrasts vai ir blo\u0137\u0113ts!"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPasswordRecoveryActionWithPostTestCase3(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => 'recovery',
|
||||
'user_data' => 'testmareks'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordRecoveryAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"msg":"E-pasts tika nos\u016bt\u012bts"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Wait for mail to be sent - otherwise it messes with the secondary mail sent
|
||||
// in call function testPasswordRecoveryActionWithLinkFromEmail - which gets wrong mail for process
|
||||
$this->awaitEmailFromMailHog(
|
||||
'keiss.mareks@gmail.com',
|
||||
'Konts - Paroles atjaunošana',
|
||||
60 * 5,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
public function testPasswordRecoveryActionWithPostTestCase4(): void
|
||||
{
|
||||
// Set double email link
|
||||
$this->cDb->_queryUpdate('mod_users', ['user_email' => 'keiss.mareks@gmail.com'], ['id' => 14]);
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'recovery',
|
||||
'user_data' => 'keiss.mareks@gmail.com'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordRecoveryAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"msg":"There are more then one user registered to this email,'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPasswordRecoveryActionWithLinkFromEmail(): void
|
||||
{
|
||||
// Force user logout if active login pending
|
||||
$this->logOutUnitTestUser();
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'recovery',
|
||||
'user_data' => 'testmareks'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordRecoveryAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"msg":"E-pasts tika nos\u016bt\u012bts"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Destroy session
|
||||
$this->destroyUserSession();
|
||||
$this->resetGetAndPost();
|
||||
|
||||
// Fetch email from MailHog
|
||||
$messages = $this->awaitEmailFromMailHog(
|
||||
'keiss.mareks@gmail.com',
|
||||
'Konts - Paroles atjaunošana',
|
||||
60 * 5,
|
||||
true
|
||||
);
|
||||
|
||||
// Validate mail content
|
||||
$testData = pubUserPwdResetTest::url[siteLanguages::LANG_LV];
|
||||
$this->assertEquals($testData['email-subject'], $this->emailHtmlDecode($messages->subject));
|
||||
$this->assertExpected($testData['email-expected-body'], $this->emailHtmlDecode($messages->body));
|
||||
|
||||
// Get password reset url from mail
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadHTML($messages->body);
|
||||
|
||||
$xpath = new DOMXpath($doc);
|
||||
$activationUrl = $xpath->query("//a[contains(., '{$testData['email-a']}')]")
|
||||
->item(0)->attributes->item(0)->nodeValue;
|
||||
|
||||
$urlData = explode('/pwd:', $activationUrl);
|
||||
|
||||
$this->setGet([
|
||||
'pwd' => $urlData[1]
|
||||
]);
|
||||
|
||||
try {
|
||||
// Catch output - flaky test, fails from time to time
|
||||
ob_start();
|
||||
$this->users->loginAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
$this->fail('Output generated! Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
ob_end_clean();
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /ienakt-gramatvedibas-sistema/divi-faktori'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testPasswordRecoveryActionWithLinkFromEmailErrorCase(): void
|
||||
{
|
||||
// Force user logout if active login pending
|
||||
$this->logOutUnitTestUser();
|
||||
|
||||
$this->setPost([
|
||||
'action' => 'recovery',
|
||||
'user_data' => 'testmareks'
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->passwordRecoveryAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"msg":"E-pasts tika nos\u016bt\u012bts"}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
// Set double email link
|
||||
$this->cDb->_queryUpdate('mod_users', ['user_pwdtime' => time() - 100], ['id' => 12]);
|
||||
|
||||
// Fetch email from MailHog
|
||||
$messages = $this->awaitEmailFromMailHog(
|
||||
'keiss.mareks@gmail.com',
|
||||
'Konts - Paroles atjaunošana',
|
||||
60 * 5,
|
||||
true
|
||||
);
|
||||
|
||||
// Validate mail content
|
||||
$testData = pubUserPwdResetTest::url[siteLanguages::LANG_LV];
|
||||
$this->assertEquals($testData['email-subject'], $this->emailHtmlDecode($messages->subject));
|
||||
$this->assertExpected($testData['email-expected-body'], $this->emailHtmlDecode($messages->body));
|
||||
|
||||
// Get password reset url from mail
|
||||
$doc = new DOMDocument();
|
||||
$doc->loadHTML($messages->body);
|
||||
|
||||
$xpath = new DOMXpath($doc);
|
||||
$activationUrl = $xpath->query("//a[contains(., '{$testData['email-a']}')]")
|
||||
->item(0)->attributes->item(0)->nodeValue;
|
||||
|
||||
$this->resetGetAndPost();
|
||||
$urlData = explode('/pwd:', $activationUrl);
|
||||
|
||||
$this->setGet([
|
||||
'pwd' => $urlData[1]
|
||||
]);
|
||||
|
||||
ob_start();
|
||||
$this->users->loginAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<div class="status_error">Lietotāja paroles atgūšana neizdevās!',
|
||||
'<br/>Lūdzu, mēģiniet vēlreiz atiestatīt paroli,',
|
||||
'<br/>ja ziņojums atkārtojas, lūdzu, sazinieties ar atbalsta dienestu!</div>',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Cms\cmsAccountManager\inc\cmsAccountManagerController;
|
||||
use Exception;
|
||||
use BRSystems\Core\App\pubUsers\pubUsers;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\SiteMap;
|
||||
|
||||
class pubUsersControllerTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUsers $users;
|
||||
private pubUsers $pubUserLogin;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
$this->resetGetAndPost();
|
||||
parent::setUp();
|
||||
|
||||
// Create new class
|
||||
$this->partners = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_SEL_COMPANY);
|
||||
$this->users = new pubUsers(getFirstMatchByMapId(SiteMap::PUB_LOGIN));
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
$this->logOutUnitTestUser();
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testChkLogoutStatus(): void
|
||||
{
|
||||
$this->setGet(['logout' => 1]);
|
||||
|
||||
try {
|
||||
$this->users->controller->chkLogOut();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location:'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testChkLogOut(): void
|
||||
{
|
||||
$this->setGet(['logout' => 1]);
|
||||
|
||||
try {
|
||||
$this->users->controller->chkLogOut();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location:'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testSaveProfileCfgProp(): void
|
||||
{
|
||||
$this->assertTrue(
|
||||
$this->users->controller->saveProfileCfgProp('bUseDarkMode', 1)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\App\pubUsers\pubUsers;
|
||||
use BRSystems\Core\App\pubUsers\inc\pubUsersModule;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
|
||||
class pubUsersModuleTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUsers $users;
|
||||
private pubUsersModule $usersModule;
|
||||
private array $structure = [
|
||||
'id' => 12,
|
||||
'user_name' => 'Test',
|
||||
'user_surname' => 'Test',
|
||||
'user_login' => 'Test',
|
||||
'user_email' => 'test@test.lv',
|
||||
'user_phone' => '+37123634919',
|
||||
'user_password' => '$1t$17$ty8ZIZL.M6CbyetuysC7JOGCjvppB7c.Tz/YsTQ8RoZgi8tdYV72p',
|
||||
'user_img' => '',
|
||||
'user_lang_id' => '7',
|
||||
|
||||
'user_last_ip' => '',
|
||||
'user_last_login' =>'0',
|
||||
'user_last_location_url' => '',
|
||||
'user_cfg' => '',
|
||||
'user_fchange' => '0',
|
||||
'user_comp_id' => '0',
|
||||
'user_2fa_secret_enabled' => 'RIGOKMQZLVG4VG45',
|
||||
|
||||
'user_created' => '1515671353',
|
||||
'user_modified' => '1637512886',
|
||||
'user_activated' => '0',
|
||||
'user_blocked' => '0',
|
||||
'user_deleted' => '0',
|
||||
'user_admin' => '0',
|
||||
'user_pwdtime' => '0',
|
||||
'user_newpwd' => '',
|
||||
'user_modified_by' => '-1',
|
||||
'user_created_by' => '-1',
|
||||
];
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
parent::setUp();
|
||||
|
||||
$this->reloadDbTables(['mod_users', 'mod_users_permissions']);
|
||||
|
||||
// Create new class
|
||||
$this->users = $this->initBaseClassObjectBySiteMapId();
|
||||
$this->usersModule = $this->users->controller->module;
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->reloadDbTables(['mod_users', 'mod_users_permissions']);
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function testPubUsersModule(): void
|
||||
{
|
||||
$base = $this->structure;
|
||||
|
||||
unset($base['id']);
|
||||
$base['user_login'] = 'MyTestUserLoginUnique';
|
||||
$this->assertGreaterThan(0, $newUserId = $this->usersModule->addNewUser($base));
|
||||
|
||||
$UserDataFromDb = $this->usersModule->getUserByLogin($base['user_login']);
|
||||
unset($UserDataFromDb['id']);
|
||||
$this->assertEquals($base, $UserDataFromDb);
|
||||
|
||||
$this->assertEquals($base['user_login'] , $this->usersModule->getUserLoginById($newUserId));
|
||||
|
||||
$userData = $this->usersModule->getUserByLoginData(['id' => $newUserId]);
|
||||
$this->assertEquals($userData['user_activated'], 0);
|
||||
$this->usersModule->setUserActiveById($newUserId);
|
||||
$userData = $this->usersModule->getUserByLoginData(['id' => $newUserId]);
|
||||
$this->assertEquals($userData['user_activated'], 1);
|
||||
|
||||
$permissions = $this->usersModule->pubLoadUserPermissionArray($newUserId);
|
||||
$this->assertNull($permissions);
|
||||
|
||||
$groups = $this->usersModule->pubLoadUserGroupPerArray($newUserId);
|
||||
$this->assertNull($groups);
|
||||
|
||||
// Call for coverage
|
||||
$objects = $this->usersModule->pubLoadUserObjectsPerArray($newUserId);
|
||||
|
||||
$companyData = $this->usersModule->getCompanyDataByCpId(23);
|
||||
$this->assertIsArray($companyData);
|
||||
$this->assertEquals('Mareks Keišs pašn.', $companyData['a_title']);
|
||||
|
||||
$companyData = $this->usersModule->getCompanyDataByCpId(23, ['id', 'a_title']);
|
||||
$this->assertIsArray($companyData);
|
||||
$this->assertEquals(['id' => 23, 'a_title' => 'Mareks Keišs pašn.'], $companyData);
|
||||
|
||||
$userId = $this->usersModule->getUserDataByEmail($base['user_email']);
|
||||
$this->assertEquals($newUserId, $userId);
|
||||
|
||||
$exclude = [
|
||||
1 => [
|
||||
'd1' => strtotime('first day of January 2024'),
|
||||
'd2' => strtotime('last day of March 2024'),
|
||||
],
|
||||
];
|
||||
|
||||
$data = $this->usersModule->chkDataForPaymentMissingInSelectedPeriod('mod_accounting', 'a_doc_date', $exclude);
|
||||
$this->assertEquals(['1' => ['d1' => 1704060000, 'd2' => 1711836000]], $data);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
<?php
|
||||
|
||||
namespace ElixirAudit\Tests\UnitTests\App\PubUsers;
|
||||
|
||||
use BRSystems\Core\Library\cSession\cSession;
|
||||
use BRSystems\Core\App\pubUsers\pubUsers;
|
||||
use BRSystems\Core\App\pubUsers\inc\pubUsersController;
|
||||
use Exception;
|
||||
use ElixirAudit\Tests\BasePhpUnitCase;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\SiteMap;
|
||||
use ElixirAudit\Tests\DataSetup\Constants\siteUsers;
|
||||
|
||||
class twoFactorAuthActionTest extends BasePhpUnitCase
|
||||
{
|
||||
private pubUsers $users;
|
||||
private pubUsers $pubUserLogin;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
// Init base structure
|
||||
$this->unitTestsAreRunning = true;
|
||||
$this->resetGetAndPost();
|
||||
parent::setUp();
|
||||
|
||||
// Create new class
|
||||
$this->users = $this->initBaseClassObjectBySiteMapId(SiteMap::PUB_USER_2FA, null);
|
||||
$this->loginUserBeforePassChangeRedirect();
|
||||
}
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
$this->logOutUnitTestUser();
|
||||
$this->reloadDbTables(['mod_users']);
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
public function twoFactorAuthActionLoginRequirement(): void
|
||||
{
|
||||
$this->testModuleLoginRequirement(SiteMap::PUB_USER_PASS_CHANGE);
|
||||
}
|
||||
|
||||
public function testTwoFactorAuthActionDefaultAction(): void
|
||||
{
|
||||
// Default form generation
|
||||
ob_start();
|
||||
$this->users->twoFactorAuthAction();
|
||||
$pageHTML = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$twoFactorInput = '<div class="validate"><input type="text" inputmode="numeric" pattern="[0-9]*" ' .
|
||||
'data-validator="codeOne" class="code2fa" placeholder="" autocomplete="off" maxlength="1" ' .
|
||||
'tabindex="%INDEX%" /></div>';
|
||||
|
||||
$this->assertExpected(
|
||||
[
|
||||
'<title>Zutenis | Divu faktoru autentifikācija</title>',
|
||||
'>Divu faktoru autentifikācija</p>',
|
||||
str_replace('%INDEX%', '1', $twoFactorInput),
|
||||
str_replace('%INDEX%', '2', $twoFactorInput),
|
||||
str_replace('%INDEX%', '3', $twoFactorInput),
|
||||
str_replace('%INDEX%', '4', $twoFactorInput),
|
||||
str_replace('%INDEX%', '5', $twoFactorInput),
|
||||
str_replace('%INDEX%', '6', $twoFactorInput),
|
||||
'<button id="submit" type="submit" class="submit btn btn-block',
|
||||
],
|
||||
$pageHTML
|
||||
);
|
||||
}
|
||||
|
||||
public function testTwoFactorAuthActionWithPostTestCase1(): void
|
||||
{
|
||||
$this->loginUnitTestUserForCoverage();
|
||||
|
||||
$this->setPost([
|
||||
'action' => '2fa',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->twoFactorAuthAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /gramatvedibas-sistema/sistemas-informacijas-panelis'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testTwoFactorAuthActionWithPostTestCase2(): void
|
||||
{
|
||||
$this->loginUnitTestUserForCoverage();
|
||||
|
||||
$o2FAUser = new cSession(pubUsersController::USER_2FA_SESSION_KEY);
|
||||
$vUserData = $o2FAUser->vUserData;
|
||||
$vUserData['user_uoa'] = 1;
|
||||
$o2FAUser->vUserData = $vUserData;
|
||||
|
||||
$this->setPost([
|
||||
'action' => '2fa',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->twoFactorAuthAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"loginok":1,"data":{"login":"testmareks","uid":"Z'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testTwoFactorAuthActionWithPostTestCase3(): void
|
||||
{
|
||||
$this->loginUnitTestUserForCoverage();
|
||||
|
||||
$o2FAUser = new cSession(pubUsersController::USER_2FA_SESSION_KEY);
|
||||
$vUserData = $o2FAUser->vUserData;
|
||||
$vUserData['user_flogin'] = 1;
|
||||
$o2FAUser->vUserData = $vUserData;
|
||||
|
||||
$this->setPost([
|
||||
'action' => '2fa',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->twoFactorAuthAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"jsonok":true,"continue_session":1}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testTwoFactorAuthActionWithPostTestCase4(): void
|
||||
{
|
||||
$o2FAUser = new cSession(pubUsersController::USER_2FA_SESSION_KEY);
|
||||
$vUserData = [];
|
||||
$o2FAUser->vUserData = $vUserData;
|
||||
|
||||
$this->setPost([
|
||||
'action' => '2fa',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->twoFactorAuthAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['Redirected to Location: /ienakt-gramatvedibas-sistema'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public function testTwoFactorAuthActionWithPostTestCase5(): void
|
||||
{
|
||||
$this->setPost([
|
||||
'action' => '2fa',
|
||||
'code' => '666666',
|
||||
]);
|
||||
|
||||
try {
|
||||
$this->users->twoFactorAuthAction();
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(
|
||||
['{"error":true,"data":{"code":"2 faktoru autentifik\u0101cijas koda k\u013c\u016bda!"}}'],
|
||||
$error->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private function loginUserBeforePassChangeRedirect(string $tempPassword = null): void
|
||||
{
|
||||
$this->pubUserLogin = new pubUsers(getFirstMatchByMapId(SiteMap::PUB_LOGIN));
|
||||
$userData = $this->getLoginCredentialsByType(siteUsers::loginAppSelfEmployed);
|
||||
|
||||
// Log in & catch redirect exception
|
||||
try {
|
||||
$this->pubUserLogin->controller->loginUser(
|
||||
[
|
||||
'chkTerms' => 1,
|
||||
'user_login' => $userData['user'],
|
||||
'user_password' => $tempPassword ?: $userData['password'],
|
||||
]
|
||||
);
|
||||
$this->fail('Exception Expected!');
|
||||
} catch (Exception $error) {
|
||||
$this->assertExpected(['Redirected to Location'], $error->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||