Merge branch 'hotfix/v1.0.1' of https://github.com/ONLYOFFICE/DocSpace into hotfix/v1.0.1
This commit is contained in:
commit
dfccf6526e
25
.github/workflows/4testing-multi-build.yml
vendored
25
.github/workflows/4testing-multi-build.yml
vendored
@ -2,7 +2,14 @@ name: 4testing multiarch-build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["hotfix/v1.0.1"]
|
||||
branches:
|
||||
- 'hotfix/v**'
|
||||
- 'release/v**'
|
||||
env:
|
||||
DOCKER_PATH: "/build/install/docker"
|
||||
REPO: "onlyoffice"
|
||||
DOCKER_IMAGE_PREFIX: "4testing-docspace"
|
||||
DOCKERFILE: "Dockerfile.app"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@ -25,21 +32,11 @@ jobs:
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
- name: Build 4testing
|
||||
run: |
|
||||
export BUILD_NUMBER="$(date "+%Y%m%d%H")"
|
||||
cd ./build/install/docker
|
||||
REPO="onlyoffice" \
|
||||
DOCKER_IMAGE_PREFIX="4testing-docspace" \
|
||||
DOCKER_TAG=v1.0.1 \
|
||||
DOCKERFILE="Dockerfile.app" \
|
||||
cd .${DOCKER_PATH}
|
||||
export DOCKER_TAG=$(echo "${GITHUB_REF_NAME}" | sed '/^release\b\|^hotfix\b/s/release.*\/\|hotfix.*\///')
|
||||
|
||||
docker buildx bake -f build.yml \
|
||||
--set *.args.GIT_BRANCH=$GITHUB_REF_NAME \
|
||||
--set *.platform=linux/amd64 \
|
||||
--push
|
||||
REPO="onlyoffice" \
|
||||
DOCKER_IMAGE_PREFIX="4testing-docspace" \
|
||||
DOCKER_TAG=v1.0.1-$BUILD_NUMBER \
|
||||
DOCKERFILE="Dockerfile.app" \
|
||||
docker buildx bake -f build.yml \
|
||||
--set *.args.GIT_BRANCH=$GITHUB_REF_NAME \
|
||||
--push
|
||||
shell: bash
|
||||
|
3
.github/workflows/build-ffvideo.yml
vendored
3
.github/workflows/build-ffvideo.yml
vendored
@ -3,7 +3,8 @@ name: ffvideo build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- release/v1.0.0
|
||||
- 'hotfix/v**'
|
||||
- 'release/v**'
|
||||
paths:
|
||||
- 'build/install/docker/**.ffvideo'
|
||||
|
||||
|
@ -31,12 +31,12 @@
|
||||
# terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
#
|
||||
|
||||
PARAMETERS="";
|
||||
PARAMETERS="$PARAMETERS -it COMMUNITY";
|
||||
DOCKER="";
|
||||
LOCAL_SCRIPTS="false"
|
||||
HELP="false";
|
||||
product="docspace"
|
||||
GIT_BRANCH="develop"
|
||||
GIT_BRANCH="master"
|
||||
FILE_NAME="$(basename "$0")"
|
||||
|
||||
while [ "$1" != "" ]; do
|
||||
case $1 in
|
||||
@ -56,10 +56,23 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
"-?" | -h | --help )
|
||||
HELP="true";
|
||||
docker )
|
||||
DOCKER="true";
|
||||
PARAMETERS="$PARAMETERS -ht install-Docker.sh";
|
||||
shift && continue
|
||||
;;
|
||||
|
||||
package )
|
||||
DOCKER="false";
|
||||
shift && continue
|
||||
;;
|
||||
|
||||
"-?" | -h | --help )
|
||||
if [ -z "$DOCKER" ]; then
|
||||
echo "Run 'bash $FILE_NAME docker' to install docker version of application or 'bash $FILE_NAME package' to install deb/rpm version."
|
||||
echo "Run 'bash $FILE_NAME docker -h' or 'bash $FILE_NAME package -h' to get more details."
|
||||
exit 0;
|
||||
fi
|
||||
PARAMETERS="$PARAMETERS -ht $FILE_NAME";
|
||||
;;
|
||||
esac
|
||||
PARAMETERS="$PARAMETERS ${1}";
|
||||
@ -123,11 +136,10 @@ if ! command_exists curl ; then
|
||||
install_curl;
|
||||
fi
|
||||
|
||||
if [ "$HELP" == "false" ]; then
|
||||
if [ -z "$DOCKER" ]; then
|
||||
read_installation_method;
|
||||
fi
|
||||
|
||||
#DOWNLOAD_URL_PREFIX="http://download.onlyoffice.com/install-appserver/"
|
||||
DOWNLOAD_URL_PREFIX="https://raw.githubusercontent.com/ONLYOFFICE/${product}/${GIT_BRANCH}/build/install/OneClickInstall"
|
||||
|
||||
if [ "$DOCKER" == "true" ]; then
|
||||
|
@ -5,7 +5,8 @@ set -e
|
||||
package_sysname="onlyoffice";
|
||||
DS_COMMON_NAME="onlyoffice";
|
||||
product="docspace"
|
||||
GIT_BRANCH="develop"
|
||||
GIT_BRANCH="master"
|
||||
INSTALLATION_TYPE="ENTERPRISE"
|
||||
RES_APP_INSTALLED="is already installed";
|
||||
RES_APP_CHECK_PORTS="uses ports"
|
||||
RES_CHECK_PORTS="please, make sure that the ports are free.";
|
||||
@ -21,6 +22,27 @@ while [ "$1" != "" ]; do
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-je | --jwtenabled )
|
||||
if [ "$2" != "" ]; then
|
||||
DS_JWT_ENABLED=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-jh | --jwtheader )
|
||||
if [ "$2" != "" ]; then
|
||||
DS_JWT_HEADER=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-js | --jwtsecret )
|
||||
if [ "$2" != "" ]; then
|
||||
DS_JWT_SECRET=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-gb | --gitbranch )
|
||||
if [ "$2" != "" ]; then
|
||||
@ -44,12 +66,23 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-it | --installation_type )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALLATION_TYPE=$(echo "$2" | awk '{print toupper($0)}');
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-? | -h | --help )
|
||||
echo " Usage $0 [PARAMETER] [[PARAMETER], ...]"
|
||||
echo " Parameters:"
|
||||
echo " -it, --installation_type installation type (COMMUNITY|ENTERPRISE|DEVELOPER)"
|
||||
echo " -it, --installation_type installation type (community|enterprise)"
|
||||
echo " -u, --update use to update existing components (true|false)"
|
||||
echo " -ls, --local_scripts use 'true' to run local scripts (true|false)"
|
||||
echo " -je, --jwtenabled specifies the enabling the JWT validation (true|false)"
|
||||
echo " -jh, --jwtheader defines the http header that will be used to send the JWT"
|
||||
echo " -js, --jwtsecret defines the secret key to validate the JWT in the request"
|
||||
echo " -ls, --local_scripts use 'true' to run local scripts (true|false)"
|
||||
echo " -skiphc, --skiphardwarecheck use to skip hardware check (true|false)"
|
||||
echo " -?, -h, --help this help"
|
||||
echo
|
||||
exit 0
|
||||
@ -86,7 +119,6 @@ fi
|
||||
# add onlyoffice repo
|
||||
mkdir -p -m 700 $HOME/.gnupg
|
||||
echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] http://download.onlyoffice.com/repo/debian squeeze main" | tee /etc/apt/sources.list.d/onlyoffice.list
|
||||
echo "deb [signed-by=/usr/share/keyrings/onlyoffice.gpg] http://static.teamlab.info.s3.amazonaws.com/repo/4testing/debian stable main" | sudo tee /etc/apt/sources.list.d/onlyoffice4testing.list
|
||||
curl -fsSL https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/onlyoffice.gpg --import
|
||||
chmod 644 /usr/share/keyrings/onlyoffice.gpg
|
||||
|
||||
|
@ -11,6 +11,29 @@ cat<<EOF
|
||||
EOF
|
||||
apt-get -y update
|
||||
|
||||
if [ "$UPDATE" = "true" ] && [ "$DOCUMENT_SERVER_INSTALLED" = "true" ]; then
|
||||
ds_pkg_installed_name=$(dpkg -l | grep ${package_sysname}-documentserver | tail -n1 | awk '{print $2}');
|
||||
|
||||
if [ "$INSTALLATION_TYPE" = "COMMUNITY" ]; then
|
||||
ds_pkg_name="${package_sysname}-documentserver";
|
||||
elif [ "$INSTALLATION_TYPE" = "ENTERPRISE" ]; then
|
||||
ds_pkg_name="${package_sysname}-documentserver-ee";
|
||||
fi
|
||||
|
||||
if [ -n $ds_pkg_name ]; then
|
||||
if ! dpkg -l ${ds_pkg_name} &> /dev/null; then
|
||||
|
||||
debconf-get-selections | grep ^${ds_pkg_installed_name} | sed s/${ds_pkg_installed_name}/${ds_pkg_name}/g | debconf-set-selections
|
||||
|
||||
apt-get remove -yq ${ds_pkg_installed_name}
|
||||
|
||||
apt-get install -yq ${ds_pkg_name}
|
||||
else
|
||||
apt-get install -y --only-upgrade ${ds_pkg_name};
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$DOCUMENT_SERVER_INSTALLED" = "false" ]; then
|
||||
DS_PORT=${DS_PORT:-8083};
|
||||
|
||||
@ -20,8 +43,8 @@ if [ "$DOCUMENT_SERVER_INSTALLED" = "false" ]; then
|
||||
DS_DB_PWD=$DS_COMMON_NAME;
|
||||
|
||||
DS_JWT_ENABLED=${DS_JWT_ENABLED:-true};
|
||||
DS_JWT_SECRET="$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)";
|
||||
DS_JWT_HEADER="AuthorizationJwt";
|
||||
DS_JWT_SECRET=${DS_JWT_SECRET:-$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)};
|
||||
DS_JWT_HEADER=${DS_JWT_HEADER:-AuthorizationJwt};
|
||||
|
||||
if ! su - postgres -s /bin/bash -c "psql -lqt" | cut -d \| -f 1 | grep -q ${DS_DB_NAME}; then
|
||||
su - postgres -s /bin/bash -c "psql -c \"CREATE USER ${DS_DB_USER} WITH password '${DS_DB_PWD}';\""
|
||||
@ -36,9 +59,11 @@ if [ "$DOCUMENT_SERVER_INSTALLED" = "false" ]; then
|
||||
echo ${package_sysname}-documentserver $DS_COMMON_NAME/jwt-secret select ${DS_JWT_SECRET} | sudo debconf-set-selections
|
||||
echo ${package_sysname}-documentserver $DS_COMMON_NAME/jwt-header select ${DS_JWT_HEADER} | sudo debconf-set-selections
|
||||
|
||||
apt-get install -yq ${package_sysname}-documentserver
|
||||
elif [ "$UPDATE" = "true" ] && [ "$DOCUMENT_SERVER_INSTALLED" = "true" ]; then
|
||||
apt-get install -y --only-upgrade ${package_sysname}-documentserver
|
||||
if [ "$INSTALLATION_TYPE" = "COMMUNITY" ]; then
|
||||
apt-get install -yq ${package_sysname}-documentserver
|
||||
else
|
||||
apt-get install -yq ${package_sysname}-documentserver-ee
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$PRODUCT_INSTALLED" = "false" ]; then
|
||||
|
@ -36,7 +36,10 @@ PRODUCT="docspace"
|
||||
BASE_DIR="/app/$PACKAGE_SYSNAME";
|
||||
STATUS=""
|
||||
DOCKER_TAG=""
|
||||
GIT_BRANCH="develop"
|
||||
GIT_BRANCH="master"
|
||||
INSTALLATION_TYPE="ENTERPRISE"
|
||||
IMAGE_NAME="${PACKAGE_SYSNAME}/${PRODUCT}-api"
|
||||
CONTAINER_NAME="${PACKAGE_SYSNAME}-api"
|
||||
|
||||
NETWORK=${PACKAGE_SYSNAME}
|
||||
|
||||
@ -70,7 +73,8 @@ DATABASE_MIGRATION="true"
|
||||
ELK_VERSION=""
|
||||
ELK_HOST=""
|
||||
|
||||
DOCUMENT_SERVER_IMAGE_NAME="onlyoffice/4testing-documentserver-ee:latest"
|
||||
DOCUMENT_SERVER_IMAGE_NAME=""
|
||||
DOCUMENT_SERVER_VERSION=""
|
||||
DOCUMENT_SERVER_JWT_SECRET=""
|
||||
DOCUMENT_SERVER_JWT_HEADER=""
|
||||
DOCUMENT_SERVER_HOST=""
|
||||
@ -84,7 +88,6 @@ HELP_TARGET="install-Docker.sh";
|
||||
SKIP_HARDWARE_CHECK="false";
|
||||
|
||||
EXTERNAL_PORT="80"
|
||||
SERVICE_PORT="5050"
|
||||
|
||||
while [ "$1" != "" ]; do
|
||||
case $1 in
|
||||
@ -124,7 +127,7 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-idocs | --installdocumentserver )
|
||||
-idocs | --installdocs )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALL_DOCUMENT_SERVER=$2
|
||||
shift
|
||||
@ -138,14 +141,14 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-irb | --installrabbitmq )
|
||||
-irbt | --installrabbitmq )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALL_RABBITMQ=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-ird | --installredis )
|
||||
-irds | --installredis )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALL_REDIS=$2
|
||||
shift
|
||||
@ -194,7 +197,7 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-esh | --elasticsearchhost )
|
||||
-esh | --elastichost )
|
||||
if [ "$2" != "" ]; then
|
||||
ELK_HOST=$2
|
||||
shift
|
||||
@ -208,13 +211,6 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-ip | --internalport )
|
||||
if [ "$2" != "" ]; then
|
||||
SERVICE_PORT=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-ep | --externalport )
|
||||
if [ "$2" != "" ]; then
|
||||
EXTERNAL_PORT=$2
|
||||
@ -246,6 +242,7 @@ while [ "$1" != "" ]; do
|
||||
-s | --status )
|
||||
if [ "$2" != "" ]; then
|
||||
STATUS=$2
|
||||
IMAGE_NAME="${PACKAGE_SYSNAME}/${STATUS}${PRODUCT}-api"
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
@ -256,7 +253,7 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-tag | --dockertag )
|
||||
-dsv | --docspaceversion )
|
||||
if [ "$2" != "" ]; then
|
||||
DOCKER_TAG=$2
|
||||
shift
|
||||
@ -271,13 +268,20 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-di | --documentserverimage )
|
||||
-docsi | --docsimage )
|
||||
if [ "$2" != "" ]; then
|
||||
DOCUMENT_SERVER_IMAGE_NAME=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-docsv | --docsversion )
|
||||
if [ "$2" != "" ]; then
|
||||
DOCUMENT_SERVER_VERSION=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-dbm | --databasemigration )
|
||||
if [ "$2" != "" ]; then
|
||||
DATABASE_MIGRATION=$2
|
||||
@ -285,6 +289,27 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-jh | --jwtheader )
|
||||
if [ "$2" != "" ]; then
|
||||
DOCUMENT_SERVER_JWT_HEADER=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-js | --jwtsecret )
|
||||
if [ "$2" != "" ]; then
|
||||
DOCUMENT_SERVER_JWT_SECRET=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-it | --installation_type )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALLATION_TYPE=$(echo "$2" | awk '{print toupper($0)}');
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-? | -h | --help )
|
||||
echo " Usage: bash $HELP_TARGET [PARAMETER] [[PARAMETER], ...]"
|
||||
echo
|
||||
@ -292,43 +317,47 @@ while [ "$1" != "" ]; do
|
||||
echo " -hub, --hub dockerhub name"
|
||||
echo " -un, --username dockerhub username"
|
||||
echo " -p, --password dockerhub password"
|
||||
echo " -it, --installation_type installation type (community|enterprise)"
|
||||
echo " -skiphc, --skiphardwarecheck skip hardware check (true|false)"
|
||||
echo " -u, --update use to update existing components (true|false)"
|
||||
echo " -ids, --installdocspace install or update $PRODUCT (true|false)"
|
||||
echo " -tag, --dockertag select the version to install $PRODUCT (latest|develop|version number)"
|
||||
echo " -idocs, --installdocumentserver install or update document server (true|false)"
|
||||
echo " -di, --documentserverimage document server image name"
|
||||
echo " -imysql, --installmysql install or update mysql (true|false)"
|
||||
echo " -irb, --installrabbitmq install or update rabbitmq (true|false)"
|
||||
echo " -ird, --installredis install or update redis (true|false)"
|
||||
echo " -dsv, --docspaceversion select the $PRODUCT version"
|
||||
echo " -dsh, --docspacehost $PRODUCT host"
|
||||
echo " -env, --environment $PRODUCT environment"
|
||||
echo " -mk, --machinekey setting for core.machinekey"
|
||||
echo " -ep, --externalport external $PRODUCT port (default value 80)"
|
||||
echo " -idocs, --installdocs install or update document server (true|false)"
|
||||
echo " -docsi, --docsimage document server image name"
|
||||
echo " -docsv, --docsversion document server version"
|
||||
echo " -jh, --jwtheader defines the http header that will be used to send the JWT"
|
||||
echo " -js, --jwtsecret defines the secret key to validate the JWT in the request"
|
||||
echo " -irbt, --installrabbitmq install or update rabbitmq (true|false)"
|
||||
echo " -irds, --installredis install or update redis (true|false)"
|
||||
echo " -esh, --elastichost elasticsearch host"
|
||||
echo " -imysql, --installmysql install or update mysql (true|false)"
|
||||
echo " -mysqlrp, --mysqlrootpassword mysql server root password"
|
||||
echo " -mysqld, --mysqldatabase $PRODUCT database name"
|
||||
echo " -mysqlu, --mysqluser $PRODUCT database user"
|
||||
echo " -mysqlp, --mysqlpassword $PRODUCT database password"
|
||||
echo " -mysqlh, --mysqlhost mysql server host"
|
||||
echo " -dsh, --docspdcehost $PRODUCT host"
|
||||
echo " -esh, --elasticsearchhost elasticsearch host"
|
||||
echo " -env, --environment $PRODUCT environment"
|
||||
echo " -skiphc, --skiphardwarecheck skip hardware check (true|false)"
|
||||
echo " -ip, --internalport internal $PRODUCT port (default value 5050)"
|
||||
echo " -ep, --externalport external $PRODUCT port (default value 80)"
|
||||
echo " -mk, --machinekey setting for core.machinekey"
|
||||
echo " -ls, --local_scripts run the installation from local scripts"
|
||||
echo " -dbm, --databasemigration database migration (true|false)"
|
||||
echo " -?, -h, --help this help"
|
||||
echo
|
||||
echo " Install all the components without document server:"
|
||||
echo " bash $HELP_TARGET -idocs false"
|
||||
echo
|
||||
echo " Install Document Server only. Skip the installation of MYSQL and $PRODUCT:"
|
||||
echo " bash $HELP_TARGET -ids false -idocs true -imysql false -irb false -ird false"
|
||||
echo " Install Document Server only. Skip the installation of mysql, $PRODUCT, rabbitmq, redis:"
|
||||
echo " bash $HELP_TARGET -ids false -idocs true -imysql false -irbt false -irds false"
|
||||
echo
|
||||
echo " Update all installed components. Stop the containers that need to be updated, remove them and run the latest versions of the corresponding components. The portal data should be picked up automatically:"
|
||||
echo " Update all installed components. Stop the containers that need to be updated, remove them and run the latest versions of the corresponding components."
|
||||
echo " The portal data should be picked up automatically:"
|
||||
echo " bash $HELP_TARGET -u true"
|
||||
echo
|
||||
echo " Update Document Server only to version 7.2.1.34 and skip the update for all other components:"
|
||||
echo " bash $HELP_TARGET -u true -di onlyoffice/documentserver-ee:7.2.1.34 -ids false"
|
||||
echo " bash $HELP_TARGET -u true -docsi ${PACKAGE_SYSNAME}/documentserver-ee -docsv 7.2.1.34 -idocs true -ids false -irbt false -irds false"
|
||||
echo
|
||||
echo " Update $PRODUCT only to version 1.2.0 and skip the update for all other components:"
|
||||
echo " bash $HELP_TARGET -u true -tag rc-v1.2.0 -idocs false"
|
||||
echo " bash $HELP_TARGET -u true -dsv v1.2.0 -idocs false -irbt false -irds false"
|
||||
echo
|
||||
exit 0
|
||||
;;
|
||||
@ -542,8 +571,20 @@ install_docker_compose () {
|
||||
fi
|
||||
}
|
||||
|
||||
install_jq () {
|
||||
curl -s -o jq http://stedolan.github.io/jq/download/linux64/jq
|
||||
chmod +x jq
|
||||
cp jq /usr/bin
|
||||
rm jq
|
||||
|
||||
if ! command_exists jq; then
|
||||
echo "command jq not found"
|
||||
exit 1;
|
||||
fi
|
||||
}
|
||||
|
||||
check_ports () {
|
||||
RESERVED_PORTS=(443 2181 2888 3306 3888 8081 8099 9092 9200 9300 9800 9899 9999 33060);
|
||||
RESERVED_PORTS=(3306 8092);
|
||||
ARRAY_PORTS=();
|
||||
USED_PORTS="";
|
||||
|
||||
@ -558,11 +599,6 @@ check_ports () {
|
||||
echo "External port $EXTERNAL_PORT is reserved. Select another port"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if [ "$RESERVED_PORT" -eq "$SERVICE_PORT" ] ; then
|
||||
echo "Internal port $SERVICE_PORT is reserved. Select another port"
|
||||
exit 1;
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "Invalid external port $EXTERNAL_PORT"
|
||||
@ -704,7 +740,6 @@ create_network () {
|
||||
get_container_env_parameter () {
|
||||
local CONTAINER_NAME=$1;
|
||||
local PARAMETER_NAME=$2;
|
||||
VALUE="";
|
||||
|
||||
if [[ -z ${CONTAINER_NAME} ]]; then
|
||||
echo "Empty container name"
|
||||
@ -722,11 +757,86 @@ get_container_env_parameter () {
|
||||
if [[ -n ${CONTAINER_EXIST} ]]; then
|
||||
VALUE=$(docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' ${CONTAINER_NAME} | grep "${PARAMETER_NAME}=" | sed 's/^.*=//');
|
||||
fi
|
||||
|
||||
if [ -z $VALUE ] && [ -f $BASE_DIR/.env ]; then
|
||||
VALUE=$(sed -n "/.*${PARAMETER_NAME}=/s///p" $BASE_DIR/.env)
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$VALUE"
|
||||
}
|
||||
|
||||
get_available_version () {
|
||||
if [[ -z "$1" ]]; then
|
||||
echo "image name is empty";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
if ! command_exists curl ; then
|
||||
install_curl;
|
||||
fi
|
||||
|
||||
if ! command_exists jq ; then
|
||||
install_jq
|
||||
fi
|
||||
|
||||
CREDENTIALS="";
|
||||
AUTH_HEADER="";
|
||||
TAGS_RESP="";
|
||||
|
||||
if [[ -n ${HUB} ]]; then
|
||||
DOCKER_CONFIG="$HOME/.docker/config.json";
|
||||
|
||||
if [[ -f "$DOCKER_CONFIG" ]]; then
|
||||
CREDENTIALS=$(jq -r '.auths."'$HUB'".auth' < "$DOCKER_CONFIG");
|
||||
if [ "$CREDENTIALS" == "null" ]; then
|
||||
CREDENTIALS="";
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z ${CREDENTIALS} && -n ${USERNAME} && -n ${PASSWORD} ]]; then
|
||||
CREDENTIALS=$(echo -n "$USERNAME:$PASSWORD" | base64);
|
||||
fi
|
||||
|
||||
if [[ -n ${CREDENTIALS} ]]; then
|
||||
AUTH_HEADER="Authorization: Basic $CREDENTIALS";
|
||||
fi
|
||||
|
||||
REPO=$(echo $1 | sed "s/$HUB\///g");
|
||||
TAGS_RESP=$(curl -s -H "$AUTH_HEADER" -X GET https://$HUB/v2/$REPO/tags/list);
|
||||
TAGS_RESP=$(echo $TAGS_RESP | jq -r '.tags')
|
||||
else
|
||||
if [[ -n ${USERNAME} && -n ${PASSWORD} ]]; then
|
||||
CREDENTIALS="{\"username\":\"$USERNAME\",\"password\":\"$PASSWORD\"}";
|
||||
fi
|
||||
|
||||
if [[ -n ${CREDENTIALS} ]]; then
|
||||
LOGIN_RESP=$(curl -s -H "Content-Type: application/json" -X POST -d "$CREDENTIALS" https://hub.docker.com/v2/users/login/);
|
||||
TOKEN=$(echo $LOGIN_RESP | jq -r '.token');
|
||||
AUTH_HEADER="Authorization: JWT $TOKEN";
|
||||
sleep 1;
|
||||
fi
|
||||
|
||||
TAGS_RESP=$(curl -s -H "$AUTH_HEADER" -X GET https://hub.docker.com/v2/repositories/$1/tags/);
|
||||
TAGS_RESP=$(echo $TAGS_RESP | jq -r '.results[].name')
|
||||
fi
|
||||
|
||||
VERSION_REGEX_1="[0-9]+\.[0-9]+\.[0-9]+"
|
||||
VERSION_REGEX_2="[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
|
||||
TAG_LIST=""
|
||||
|
||||
for item in $TAGS_RESP
|
||||
do
|
||||
if [[ $item =~ $VERSION_REGEX_1 ]] || [[ $item =~ $VERSION_REGEX_2 ]]; then
|
||||
TAG_LIST="$item,$TAG_LIST"
|
||||
fi
|
||||
done
|
||||
|
||||
LATEST_TAG=$(echo $TAG_LIST | tr ',' '\n' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | awk '/./{line=$0} END{print line}');
|
||||
|
||||
echo "$LATEST_TAG" | sed "s/\"//g"
|
||||
}
|
||||
|
||||
set_jwt_secret () {
|
||||
CURRENT_JWT_SECRET="";
|
||||
|
||||
@ -739,43 +849,99 @@ set_jwt_secret () {
|
||||
fi
|
||||
|
||||
if [[ -z ${JWT_SECRET} ]]; then
|
||||
CURRENT_JWT_SECRET=$(get_container_env_parameter "${PACKAGE_SYSNAME}-api" "DOCUMENT_SERVER_JWT_SECRET");
|
||||
CURRENT_JWT_SECRET=$(get_container_env_parameter "${CONTAINER_NAME}" "DOCUMENT_SERVER_JWT_SECRET");
|
||||
|
||||
if [[ -n ${CURRENT_JWT_SECRET} ]]; then
|
||||
DOCUMENT_SERVER_JWT_SECRET="$CURRENT_JWT_SECRET";
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z ${JWT_SECRET} ]] && [[ "$UPDATE" != "true" ]]; then
|
||||
if [[ -z ${JWT_SECRET} ]]; then
|
||||
DOCUMENT_SERVER_JWT_SECRET=$(get_random_str 32);
|
||||
fi
|
||||
}
|
||||
|
||||
set_core_machinekey () {
|
||||
CURRENT_CORE_MACHINEKEY="";
|
||||
set_jwt_header () {
|
||||
CURRENT_JWT_HEADER="";
|
||||
|
||||
if [[ -z ${CORE_MACHINEKEY} ]]; then
|
||||
if file_exists ${BASE_DIR}/.private/machinekey; then
|
||||
CURRENT_CORE_MACHINEKEY=$(cat ${BASE_DIR}/.private/machinekey);
|
||||
if [[ -z ${JWT_HEADER} ]]; then
|
||||
CURRENT_JWT_HEADER=$(get_container_env_parameter "${PACKAGE_SYSNAME}-document-server" "JWT_HEADER");
|
||||
|
||||
if [[ -n ${CURRENT_CORE_MACHINEKEY} ]]; then
|
||||
APP_CORE_MACHINEKEY="$CURRENT_CORE_MACHINEKEY";
|
||||
fi
|
||||
if [[ -n ${CURRENT_JWT_HEADER} ]]; then
|
||||
DOCUMENT_SERVER_JWT_HEADER="$CURRENT_JWT_HEADER";
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z ${JWT_HEADER} ]]; then
|
||||
CURRENT_JWT_HEADER=$(get_container_env_parameter "${CONTAINER_NAME}" "DOCUMENT_SERVER_JWT_HEADER");
|
||||
|
||||
if [[ -n ${CURRENT_JWT_HEADER} ]]; then
|
||||
DOCUMENT_SERVER_JWT_HEADER="$CURRENT_JWT_HEADER";
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z ${CORE_MACHINEKEY} ]]; then
|
||||
CURRENT_CORE_MACHINEKEY=$(get_container_env_parameter "${PACKAGE_SYSNAME}-api" "$APP_CORE_MACHINEKEY");
|
||||
if [[ -z ${JWT_HEADER} ]]; then
|
||||
DOCUMENT_SERVER_JWT_HEADER="AuthorizationJwt"
|
||||
fi
|
||||
}
|
||||
|
||||
set_core_machinekey () {
|
||||
if [[ -z ${APP_CORE_MACHINEKEY} ]]; then
|
||||
CURRENT_CORE_MACHINEKEY=$(get_container_env_parameter "${CONTAINER_NAME}" "APP_CORE_MACHINEKEY");
|
||||
|
||||
if [[ -n ${CURRENT_CORE_MACHINEKEY} ]]; then
|
||||
APP_CORE_MACHINEKEY="$CURRENT_CORE_MACHINEKEY";
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z ${CORE_MACHINEKEY} ]] && [[ "$UPDATE" != "true" ]]; then
|
||||
if [[ -z ${APP_CORE_MACHINEKEY} ]] && [[ "$UPDATE" != "true" ]]; then
|
||||
APP_CORE_MACHINEKEY=$(get_random_str 12);
|
||||
mkdir -p ${BASE_DIR}/.private/
|
||||
echo $APP_CORE_MACHINEKEY > ${BASE_DIR}/.private/machinekey
|
||||
fi
|
||||
}
|
||||
|
||||
set_mysql_params () {
|
||||
if [[ -z ${MYSQL_PASSWORD} ]]; then
|
||||
MYSQL_PASSWORD=$(get_container_env_parameter "${CONTAINER_NAME}" "MYSQL_PASSWORD");
|
||||
|
||||
if [[ -z ${MYSQL_PASSWORD} ]]; then
|
||||
MYSQL_PASSWORD=$(get_random_str 20);
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z ${MYSQL_ROOT_PASSWORD} ]]; then
|
||||
MYSQL_ROOT_PASSWORD=$(get_container_env_parameter "${CONTAINER_NAME}" "MYSQL_ROOT_PASSWORD");
|
||||
|
||||
if [[ -z ${MYSQL_ROOT_PASSWORD} ]]; then
|
||||
MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD:-$(get_random_str 20)};
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z ${MYSQL_DATABASE} ]]; then
|
||||
MYSQL_DATABASE=$(get_container_env_parameter "${CONTAINER_NAME}" "MYSQL_DATABASE");
|
||||
fi
|
||||
|
||||
if [[ -z ${MYSQL_USER} ]]; then
|
||||
MYSQL_USER=$(get_container_env_parameter "${CONTAINER_NAME}" "MYSQL_USER");
|
||||
fi
|
||||
|
||||
if [[ -z ${MYSQL_HOST} ]]; then
|
||||
MYSQL_HOST=$(get_container_env_parameter "${CONTAINER_NAME}" "MYSQL_HOST");
|
||||
fi
|
||||
}
|
||||
|
||||
set_docspace_params() {
|
||||
ENV_EXTENSION=$(get_container_env_parameter "${CONTAINER_NAME}" "ENV_EXTENSION");
|
||||
DOCUMENT_SERVER_HOST=$(get_container_env_parameter "${CONTAINER_NAME}" "DOCUMENT_SERVER_HOST");
|
||||
ELK_HOST=$(get_container_env_parameter "${CONTAINER_NAME}" "ELK_HOST");
|
||||
APP_CORE_BASE_DOMAIN=$(get_container_env_parameter "${CONTAINER_NAME}" "APP_CORE_BASE_DOMAIN");
|
||||
[ -f ${BASE_DIR}/${PRODUCT}.yml ] && EXTERNAL_PORT=$(grep -oP '(?<=- ).*?(?=:8092)' ${BASE_DIR}/${PRODUCT}.yml)
|
||||
}
|
||||
|
||||
set_installation_type_data () {
|
||||
if [ "$INSTALLATION_TYPE" == "COMMUNITY" ]; then
|
||||
DOCUMENT_SERVER_IMAGE_NAME=${DOCUMENT_SERVER_IMAGE_NAME:-"${PACKAGE_SYSNAME}/${STATUS}documentserver"}
|
||||
elif [ "$INSTALLATION_TYPE" == "ENTERPRISE" ]; then
|
||||
DOCUMENT_SERVER_IMAGE_NAME=${DOCUMENT_SERVER_IMAGE_NAME:-"${PACKAGE_SYSNAME}/${STATUS}documentserver-ee"}
|
||||
fi
|
||||
}
|
||||
|
||||
@ -784,9 +950,14 @@ download_files () {
|
||||
install_service svn subversion
|
||||
fi
|
||||
|
||||
svn export --force https://github.com/ONLYOFFICE/${PRODUCT}/branches/${GIT_BRANCH}/build/install/docker/ ${BASE_DIR}
|
||||
svn export --force https://github.com/${PACKAGE_SYSNAME}/${PRODUCT}/branches/${GIT_BRANCH}/build/install/docker/ ${BASE_DIR}
|
||||
|
||||
reconfigure STATUS ${STATUS}
|
||||
|
||||
reconfigure MYSQL_DATABASE ${MYSQL_DATABASE}
|
||||
reconfigure MYSQL_USER ${MYSQL_USER}
|
||||
reconfigure MYSQL_PASSWORD ${MYSQL_PASSWORD}
|
||||
reconfigure MYSQL_ROOT_PASSWORD ${MYSQL_ROOT_PASSWORD}
|
||||
}
|
||||
|
||||
reconfigure () {
|
||||
@ -803,20 +974,7 @@ install_mysql_server () {
|
||||
install_docker_compose
|
||||
fi
|
||||
|
||||
if [[ -z ${MYSQL_PASSWORD} ]] && [[ -z ${MYSQL_ROOT_PASSWORD} ]]; then
|
||||
MYSQL_PASSWORD=$(get_random_str 20 | sed -e 's/;/%/g' -e 's/=/%/g' -e 's/!/%/g');
|
||||
MYSQL_ROOT_PASSWORD=$(get_random_str 20 | sed -e 's/;/%/g' -e 's/=/%/g' -e 's/!/%/g');
|
||||
elif [[ -z ${MYSQL_PASSWORD} ]] || [[ -z ${MYSQL_ROOT_PASSWORD} ]]; then
|
||||
MYSQL_PASSWORD=${MYSQL_PASSWORD:-"$MYSQL_ROOT_PASSWORD"}
|
||||
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-"$MYSQL_PASSWORD"}
|
||||
fi
|
||||
|
||||
reconfigure MYSQL_VERSION ${MYSQL_VERSION}
|
||||
reconfigure MYSQL_DATABASE ${MYSQL_DATABASE}
|
||||
reconfigure MYSQL_USER ${MYSQL_USER}
|
||||
reconfigure MYSQL_PASSWORD ${MYSQL_PASSWORD}
|
||||
reconfigure MYSQL_ROOT_PASSWORD ${MYSQL_ROOT_PASSWORD}
|
||||
reconfigure MYSQL_HOST ${MYSQL_HOST}
|
||||
reconfigure DATABASE_MIGRATION ${DATABASE_MIGRATION}
|
||||
|
||||
docker-compose -f $BASE_DIR/db.yml up -d
|
||||
@ -827,10 +985,9 @@ install_document_server () {
|
||||
install_docker_compose
|
||||
fi
|
||||
|
||||
reconfigure DOCUMENT_SERVER_IMAGE_NAME ${DOCUMENT_SERVER_IMAGE_NAME}
|
||||
reconfigure DOCUMENT_SERVER_IMAGE_NAME "${DOCUMENT_SERVER_IMAGE_NAME}:${DOCUMENT_SERVER_VERSION:-$(get_available_version "$DOCUMENT_SERVER_IMAGE_NAME")}"
|
||||
reconfigure DOCUMENT_SERVER_JWT_HEADER ${DOCUMENT_SERVER_JWT_HEADER}
|
||||
reconfigure DOCUMENT_SERVER_JWT_SECRET ${DOCUMENT_SERVER_JWT_SECRET}
|
||||
reconfigure DOCUMENT_SERVER_HOST ${DOCUMENT_SERVER_HOST}
|
||||
|
||||
docker-compose -f $BASE_DIR/ds.yml up -d
|
||||
}
|
||||
@ -855,17 +1012,26 @@ install_product () {
|
||||
if ! command_exists docker-compose; then
|
||||
install_docker_compose
|
||||
fi
|
||||
|
||||
DOCKER_TAG="${DOCKER_TAG:-$(get_available_version ${IMAGE_NAME})}"
|
||||
[ "${UPDATE}" = "true" ] && LOCAL_CONTAINER_TAG="$(docker inspect --format='{{index .Config.Image}}' ${CONTAINER_NAME} | awk -F':' '{print $2}')"
|
||||
|
||||
if [ "${UPDATE}" = "true" ] && [ "${LOCAL_CONTAINER_TAG}" != "${DOCKER_TAG}" ]; then
|
||||
docker-compose -f $BASE_DIR/build.yml pull
|
||||
docker-compose -f $BASE_DIR/migration-runner.yml -f $BASE_DIR/notify.yml -f $BASE_DIR/healthchecks.yml down
|
||||
docker-compose -f $BASE_DIR/${PRODUCT}.yml down --volumes
|
||||
fi
|
||||
|
||||
reconfigure ENV_EXTENSION ${ENV_EXTENSION}
|
||||
reconfigure ELK_HOST ${ELK_HOST}
|
||||
reconfigure ELK_VERSION ${ELK_VERSION}
|
||||
reconfigure SERVICE_PORT ${SERVICE_PORT}
|
||||
reconfigure DOCUMENT_SERVER_HOST ${DOCUMENT_SERVER_HOST}
|
||||
reconfigure MYSQL_HOST ${MYSQL_HOST}
|
||||
reconfigure APP_CORE_MACHINEKEY ${APP_CORE_MACHINEKEY}
|
||||
reconfigure APP_CORE_BASE_DOMAIN ${APP_CORE_BASE_DOMAIN}
|
||||
reconfigure DOCKER_TAG ${DOCKER_TAG}
|
||||
|
||||
if [[ -n $EXTERNAL_PORT ]]; then
|
||||
sed -i "s/8092:8092/${EXTERNAL_PORT}:8092/g" $BASE_DIR/${PRODUCT}.yml
|
||||
fi
|
||||
[[ -n $EXTERNAL_PORT ]] && sed -i "s/8092:8092/${EXTERNAL_PORT}:8092/g" $BASE_DIR/${PRODUCT}.yml
|
||||
|
||||
docker-compose -f $BASE_DIR/migration-runner.yml up -d
|
||||
docker-compose -f $BASE_DIR/${PRODUCT}.yml up -d
|
||||
@ -873,93 +1039,15 @@ install_product () {
|
||||
docker-compose -f $BASE_DIR/healthchecks.yml up -d
|
||||
}
|
||||
|
||||
get_local_image_RepoDigests() {
|
||||
local CONTAINER_IMAGE=$1;
|
||||
LOCAL_IMAGE_RepoDigest=$(docker inspect --format='{{index .RepoDigests 0}}' $CONTAINER_IMAGE)
|
||||
if [ -z ${LOCAL_IMAGE_RepoDigest} ]; then
|
||||
echo "Local docker image not found, check the name of docker image $CONTAINER_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
echo $LOCAL_IMAGE_RepoDigest
|
||||
}
|
||||
|
||||
check_pull_image() {
|
||||
local CONTAINER_IMAGE=$1;
|
||||
CHECK_STATUS_IMAGE="$(docker pull $CONTAINER_IMAGE | grep Status | awk '{print $2" "$3" "$4" "$5" "$6}')"
|
||||
if [ "${CHECK_STATUS_IMAGE}" == "Image is up to date" ]; then
|
||||
echo "No updates required"
|
||||
fi
|
||||
}
|
||||
|
||||
check_image_RepoDigest() {
|
||||
local OLD_LOCAL_IMAGE_RepoDigest=$1
|
||||
local NEW_LOCAL_IMAGE_RepoDigest=$2
|
||||
if [ "${OLD_LOCAL_IMAGE_RepoDigest}" == "${NEW_LOCAL_IMAGE_RepoDigest}" ]; then
|
||||
CHECK_RepoDigest="false";
|
||||
else
|
||||
CHECK_RepoDigest="true";
|
||||
fi
|
||||
}
|
||||
|
||||
docker_image_update() {
|
||||
docker-compose -f $BASE_DIR/notify.yml -f $BASE_DIR/${PRODUCT}.yml down --volumes
|
||||
docker-compose -f $BASE_DIR/build.yml pull
|
||||
}
|
||||
|
||||
update_product () {
|
||||
if ! command_exists docker-compose; then
|
||||
install_docker_compose
|
||||
fi
|
||||
|
||||
IMAGE_NAME="onlyoffice-api"
|
||||
CONTAINER_IMAGE=$(docker inspect --format='{{.Config.Image}}' $IMAGE_NAME)
|
||||
|
||||
OLD_LOCAL_IMAGE_RepoDigest=$(get_local_image_RepoDigests "${CONTAINER_IMAGE}")
|
||||
check_pull_image "${CONTAINER_IMAGE}"
|
||||
NEW_LOCAL_IMAGE_RepoDigest=$(get_local_image_RepoDigests "${CONTAINER_IMAGE}")
|
||||
check_image_RepoDigest ${OLD_LOCAL_IMAGE_RepoDigest} ${NEW_LOCAL_IMAGE_RepoDigest}
|
||||
|
||||
if [ ${CHECK_RepoDigest} == "true" ]; then
|
||||
docker_image_update
|
||||
fi
|
||||
}
|
||||
|
||||
save_parameter() {
|
||||
local VARIABLE_NAME=$1
|
||||
local VARIABLE_VALUE=$2
|
||||
|
||||
if [[ -z ${VARIABLE_VALUE} ]]; then
|
||||
sed -n "/.*${VARIABLE_NAME}=/s///p" $BASE_DIR/.env
|
||||
else
|
||||
echo $VARIABLE_VALUE
|
||||
fi
|
||||
}
|
||||
|
||||
save_parameters_from_configs() {
|
||||
MYSQL_DATABASE=$(save_parameter MYSQL_DATABASE $MYSQL_DATABASE)
|
||||
MYSQL_USER=$(save_parameter MYSQL_USER $MYSQL_USER)
|
||||
MYSQL_PASSWORD=$(save_parameter MYSQL_PASSWORD $MYSQL_PASSWORD)
|
||||
MYSQL_ROOT_PASSWORD=$(save_parameter MYSQL_ROOT_PASSWORD $MYSQL_ROOT_PASSWORD)
|
||||
MYSQL_HOST=$(save_parameter MYSQL_HOST $MYSQL_HOST)
|
||||
DOCUMENT_SERVER_JWT_SECRET=$(save_parameter DOCUMENT_SERVER_JWT_SECRET $DOCUMENT_SERVER_JWT_SECRET)
|
||||
DOCUMENT_SERVER_JWT_HEADER=$(save_parameter DOCUMENT_SERVER_JWT_HEADER $DOCUMENT_SERVER_JWT_HEADER)
|
||||
DOCUMENT_SERVER_HOST=$(save_parameter DOCUMENT_SERVER_HOST $DOCUMENT_SERVER_HOST)
|
||||
ELK_HOST=$(save_parameter ELK_HOST $ELK_HOST)
|
||||
SERVICE_PORT=$(save_parameter SERVICE_PORT $SERVICE_PORT)
|
||||
APP_CORE_MACHINEKEY=$(save_parameter APP_CORE_MACHINEKEY $APP_CORE_MACHINEKEY)
|
||||
APP_CORE_BASE_DOMAIN=$(save_parameter APP_CORE_BASE_DOMAIN $APP_CORE_BASE_DOMAIN)
|
||||
if [ ${EXTERNAL_PORT} = "8092" ]; then
|
||||
EXTERNAL_PORT=$(grep -oP '(?<=- ).*?(?=:8092)' /app/onlyoffice/${PRODUCT}.yml)
|
||||
fi
|
||||
}
|
||||
|
||||
start_installation () {
|
||||
root_checking
|
||||
|
||||
get_os_info
|
||||
set_installation_type_data
|
||||
|
||||
get_os_info
|
||||
check_os_info
|
||||
|
||||
check_kernel
|
||||
|
||||
if [ "$UPDATE" != "true" ]; then
|
||||
check_ports
|
||||
fi
|
||||
@ -977,21 +1065,18 @@ start_installation () {
|
||||
|
||||
docker_login
|
||||
|
||||
if [ "$UPDATE" = "true" ]; then
|
||||
save_parameters_from_configs
|
||||
fi
|
||||
|
||||
download_files
|
||||
set_docspace_params
|
||||
|
||||
set_jwt_secret
|
||||
set_jwt_header
|
||||
|
||||
set_core_machinekey
|
||||
|
||||
create_network
|
||||
|
||||
if [ "$UPDATE" = "true" ]; then
|
||||
update_product
|
||||
fi
|
||||
set_mysql_params
|
||||
|
||||
download_files
|
||||
|
||||
if [ "$INSTALL_MYSQL_SERVER" == "true" ]; then
|
||||
install_mysql_server
|
||||
@ -1014,8 +1099,8 @@ start_installation () {
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Thank you for installing ONLYOFFICE ${PRODUCT^^}."
|
||||
echo "In case you have any questions contact us via http://support.onlyoffice.com or visit our forum at http://dev.onlyoffice.org"
|
||||
echo "Thank you for installing ${PACKAGE_SYSNAME^^} ${PRODUCT^^}."
|
||||
echo "In case you have any questions contact us via http://support.${PACKAGE_SYSNAME}.com or visit our forum at http://dev.${PACKAGE_SYSNAME}.org"
|
||||
echo ""
|
||||
|
||||
exit 0;
|
||||
|
@ -5,8 +5,8 @@ set -e
|
||||
package_manager="yum"
|
||||
package_sysname="onlyoffice";
|
||||
product="docspace"
|
||||
GIT_BRANCH="develop"
|
||||
package_services="";
|
||||
GIT_BRANCH="master"
|
||||
INSTALLATION_TYPE="ENTERPRISE"
|
||||
RES_APP_INSTALLED="is already installed";
|
||||
RES_APP_CHECK_PORTS="uses ports"
|
||||
RES_CHECK_PORTS="please, make sure that the ports are free.";
|
||||
@ -31,6 +31,27 @@ while [ "$1" != "" ]; do
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-je | --jwtenabled )
|
||||
if [ "$2" != "" ]; then
|
||||
JWT_ENABLED=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-jh | --jwtheader )
|
||||
if [ "$2" != "" ]; then
|
||||
JWT_HEADER=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-js | --jwtsecret )
|
||||
if [ "$2" != "" ]; then
|
||||
JWT_SECRET=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-gb | --gitbranch )
|
||||
if [ "$2" != "" ]; then
|
||||
@ -54,11 +75,23 @@ while [ "$1" != "" ]; do
|
||||
fi
|
||||
;;
|
||||
|
||||
-it | --installation_type )
|
||||
if [ "$2" != "" ]; then
|
||||
INSTALLATION_TYPE=$(echo "$2" | awk '{print toupper($0)}');
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-? | -h | --help )
|
||||
echo " Usage $0 [PARAMETER] [[PARAMETER], ...]"
|
||||
echo " Parameters:"
|
||||
echo " -it, --installation_type installation type (community|enterprise)"
|
||||
echo " -u, --update use to update existing components (true|false)"
|
||||
echo " -je, --jwtenabled specifies the enabling the JWT validation (true|false)"
|
||||
echo " -jh, --jwtheader defines the http header that will be used to send the JWT"
|
||||
echo " -js, --jwtsecret defines the secret key to validate the JWT in the request"
|
||||
echo " -ls, --local_scripts use 'true' to run local scripts (true|false)"
|
||||
echo " -skiphc, --skiphardwarecheck use to skip hardware check (true|false)"
|
||||
echo " -?, -h, --help this help"
|
||||
echo
|
||||
exit 0
|
||||
@ -89,16 +122,6 @@ enabled=1
|
||||
gpgkey=https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE
|
||||
END
|
||||
|
||||
cat > /etc/yum.repos.d/onlyoffice4testing.repo <<END
|
||||
[onlyoffice4testing]
|
||||
name=onlyoffice4testing repo
|
||||
baseurl=http://static.teamlab.info.s3.amazonaws.com/repo/4testing/centos/main/noarch/
|
||||
gpgcheck=1
|
||||
enabled=1
|
||||
gpgkey=https://download.onlyoffice.com/GPG-KEY-ONLYOFFICE
|
||||
END
|
||||
|
||||
#DOWNLOAD_URL_PREFIX="https://download.onlyoffice.com/install-appserver/install-RedHat"
|
||||
DOWNLOAD_URL_PREFIX="https://raw.githubusercontent.com/ONLYOFFICE/${product}/${GIT_BRANCH}/build/install/OneClickInstall/install-RedHat"
|
||||
|
||||
if [ "$LOCAL_SCRIPTS" = "true" ]; then
|
||||
|
@ -10,11 +10,11 @@ cat<<EOF
|
||||
|
||||
EOF
|
||||
|
||||
if rpm -qa | grep ${package_sysname}-${product}; then
|
||||
echo "${package_sysname}-${product} $RES_APP_INSTALLED"
|
||||
if rpm -qa | grep ${product}; then
|
||||
echo "${product} $RES_APP_INSTALLED"
|
||||
PRODUCT_INSTALLED="true";
|
||||
elif [ "${UPDATE}" != "true" ] && netstat -lnp | awk '{print $4}' | grep -qE ":80$|:8081$|:8083$|:5001$|:5002$|:8080$|:80$"; then
|
||||
echo "${package_sysname}-${product} $RES_APP_CHECK_PORTS: 80, 8081, 8083, 5001, 5002, 9200, 2181, 9092";
|
||||
echo "${product} $RES_APP_CHECK_PORTS: 80, 8081, 8083, 5001, 5002, 9200, 2181, 9092";
|
||||
echo "$RES_CHECK_PORTS"
|
||||
exit
|
||||
else
|
||||
|
@ -18,6 +18,28 @@ for SVC in $package_services; do
|
||||
systemctl enable $SVC
|
||||
done
|
||||
|
||||
if [ "$UPDATE" = "true" ] && [ "$DOCUMENT_SERVER_INSTALLED" = "true" ]; then
|
||||
ds_pkg_installed_name=$(rpm -qa --qf '%{NAME}\n' | grep ${package_sysname}-documentserver);
|
||||
|
||||
if [ "$INSTALLATION_TYPE" = "COMMUNITY" ]; then
|
||||
ds_pkg_name="${package_sysname}-documentserver";
|
||||
fi
|
||||
|
||||
if [ "$INSTALLATION_TYPE" = "ENTERPRISE" ]; then
|
||||
ds_pkg_name="${package_sysname}-documentserver-ee";
|
||||
fi
|
||||
|
||||
if [ -n $ds_pkg_name ]; then
|
||||
if ! rpm -qi ${ds_pkg_name} &> /dev/null; then
|
||||
${package_manager} -y remove ${ds_pkg_installed_name}
|
||||
|
||||
DOCUMENT_SERVER_INSTALLED="false"
|
||||
else
|
||||
${package_manager} -y update ${ds_pkg_name}
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
MYSQL_SERVER_HOST=${MYSQL_SERVER_HOST:-"localhost"}
|
||||
MYSQL_SERVER_DB_NAME=${MYSQL_SERVER_DB_NAME:-"${package_sysname}"}
|
||||
MYSQL_SERVER_USER=${MYSQL_SERVER_USER:-"root"}
|
||||
@ -65,16 +87,20 @@ if [ "$DOCUMENT_SERVER_INSTALLED" = "false" ]; then
|
||||
DS_DB_USER=$DS_COMMON_NAME;
|
||||
DS_DB_PWD=$DS_COMMON_NAME;
|
||||
|
||||
declare -x JWT_ENABLED=true;
|
||||
declare -x JWT_SECRET="$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)";
|
||||
declare -x JWT_HEADER="AuthorizationJwt";
|
||||
declare -x JWT_ENABLED=${JWT_ENABLED:-true};
|
||||
declare -x JWT_SECRET=${JWT_SECRET:-$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)};
|
||||
declare -x JWT_HEADER=${JWT_HEADER:-AuthorizationJwt};
|
||||
|
||||
if ! su - postgres -s /bin/bash -c "psql -lqt" | cut -d \| -f 1 | grep -q ${DS_DB_NAME}; then
|
||||
su - postgres -s /bin/bash -c "psql -c \"CREATE USER ${DS_DB_USER} WITH password '${DS_DB_PWD}';\""
|
||||
su - postgres -s /bin/bash -c "psql -c \"CREATE DATABASE ${DS_DB_NAME} OWNER ${DS_DB_USER};\""
|
||||
fi
|
||||
|
||||
${package_manager} -y install ${package_sysname}-documentserver
|
||||
|
||||
if [ "$INSTALLATION_TYPE" = "COMMUNITY" ]; then
|
||||
${package_manager} -y install ${package_sysname}-documentserver
|
||||
else
|
||||
${package_manager} -y install ${package_sysname}-documentserver-ee
|
||||
fi
|
||||
|
||||
expect << EOF
|
||||
|
||||
@ -97,6 +123,11 @@ expect << EOF
|
||||
expect -re "Password"
|
||||
send "\025$DS_DB_PWD\r"
|
||||
|
||||
if { "${INSTALLATION_TYPE}" == "ENTERPRISE" } {
|
||||
expect "Configuring redis access..."
|
||||
send "\025$DS_REDIS_HOST\r"
|
||||
}
|
||||
|
||||
expect "Configuring AMQP access... "
|
||||
expect -re "Host"
|
||||
send "\025$DS_RABBITMQ_HOST\r"
|
||||
@ -110,9 +141,6 @@ expect << EOF
|
||||
expect eof
|
||||
|
||||
EOF
|
||||
DOCUMENT_SERVER_INSTALLED="true";
|
||||
elif [ "$UPDATE" = "true" ] && [ "$DOCUMENT_SERVER_INSTALLED" = "true" ]; then
|
||||
${package_manager} -y update ${package_sysname}-documentserver
|
||||
fi
|
||||
|
||||
{ ${package_manager} check-update ${product}; PRODUCT_CHECK_UPDATE=$?; } || true
|
||||
@ -124,21 +152,15 @@ if [ "$PRODUCT_INSTALLED" = "false" ]; then
|
||||
-mysqlu ${MYSQL_SERVER_USER} \
|
||||
-mysqlp ${MYSQL_ROOT_PASS}
|
||||
elif [[ $PRODUCT_CHECK_UPDATE -eq $UPDATE_AVAILABLE_CODE ]]; then
|
||||
ENVIRONMENT="$(cat /lib/systemd/system/${product}-api.service | grep -oP 'ENVIRONMENT=\K.*')"
|
||||
USER_CONNECTIONSTRING=$(json -f /etc/onlyoffice/${product}/appsettings.$ENVIRONMENT.json ConnectionStrings.default.connectionString)
|
||||
MYSQL_SERVER_HOST=$(echo $USER_CONNECTIONSTRING | grep -oP 'Server=\K.*' | grep -o '^[^;]*')
|
||||
MYSQL_SERVER_DB_NAME=$(echo $USER_CONNECTIONSTRING | grep -oP 'Database=\K.*' | grep -o '^[^;]*')
|
||||
MYSQL_SERVER_USER=$(echo $USER_CONNECTIONSTRING | grep -oP 'User ID=\K.*' | grep -o '^[^;]*')
|
||||
MYSQL_SERVER_PORT=$(echo $USER_CONNECTIONSTRING | grep -oP 'Port=\K.*' | grep -o '^[^;]*')
|
||||
MYSQL_ROOT_PASS=$(echo $USER_CONNECTIONSTRING | grep -oP 'Password=\K.*' | grep -o '^[^;]*')
|
||||
|
||||
ENVIRONMENT=$(grep -oP 'ENVIRONMENT=\K.*' /lib/systemd/system/${product}-api.service)
|
||||
CONNECTION_STRING=$(json -f /etc/${package_sysname}/${product}/appsettings.$ENVIRONMENT.json ConnectionStrings.default.connectionString)
|
||||
${package_manager} -y update ${product}
|
||||
${product}-configuration \
|
||||
-e ${ENVIRONMENT} \
|
||||
-mysqlh ${MYSQL_SERVER_HOST} \
|
||||
-mysqld ${MYSQL_SERVER_DB_NAME} \
|
||||
-mysqlu ${MYSQL_SERVER_USER} \
|
||||
-mysqlp ${MYSQL_ROOT_PASS}
|
||||
-e $ENVIRONMENT \
|
||||
-mysqlh $(grep -oP 'Server=\K[^;]*' <<< "$CONNECTION_STRING") \
|
||||
-mysqld $(grep -oP 'Database=\K[^;]*' <<< "$CONNECTION_STRING") \
|
||||
-mysqlu $(grep -oP 'User ID=\K[^;]*' <<< "$CONNECTION_STRING") \
|
||||
-mysqlp $(grep -oP 'Password=\K[^;]*' <<< "$CONNECTION_STRING")
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
@ -50,6 +50,7 @@ yum localinstall -y --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusi
|
||||
MONOREV=$REV
|
||||
if [ "$REV" = "9" ]; then
|
||||
MONOREV="8"
|
||||
TESTING_REPO="--enablerepo=crb"
|
||||
elif [ "$REV" = "8" ]; then
|
||||
POWERTOOLS_REPO="--enablerepo=powertools"
|
||||
fi
|
||||
@ -117,7 +118,7 @@ ${package_manager} -y install epel-release \
|
||||
redis --enablerepo=remi \
|
||||
SDL2 $POWERTOOLS_REPO \
|
||||
expect \
|
||||
ffmpeg
|
||||
ffmpeg $TESTING_REPO
|
||||
|
||||
py3_version=$(python3 -c 'import sys; print(sys.version_info.minor)')
|
||||
if [[ $py3_version -lt 6 ]]; then
|
||||
|
@ -8,6 +8,7 @@ PACKAGE_SYSNAME="onlyoffice"
|
||||
|
||||
APP_DIR="/etc/${PACKAGE_SYSNAME}/${PRODUCT}"
|
||||
PRODUCT_DIR="/var/www/${PRODUCT}"
|
||||
LOG_DIR="/var/log/${PACKAGE_SYSNAME}/${PRODUCT}"
|
||||
USER_CONF="$APP_DIR/appsettings.$ENVIRONMENT.json"
|
||||
|
||||
NGINX_DIR="/etc/nginx"
|
||||
@ -22,9 +23,6 @@ DB_PWD=""
|
||||
APP_HOST="localhost"
|
||||
APP_PORT="80"
|
||||
|
||||
DOCUMENT_SERVER_HOST="localhost";
|
||||
DOCUMENT_SERVER_PORT="8083";
|
||||
|
||||
ELK_SHEME="http"
|
||||
ELK_HOST="localhost"
|
||||
ELK_PORT="9200"
|
||||
@ -170,6 +168,13 @@ while [ "$1" != "" ]; do
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-mk | --machinekey )
|
||||
if [ "$2" != "" ]; then
|
||||
CORE_MACHINEKEY=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
|
||||
-? | -h | --help )
|
||||
echo " Usage: bash ${PRODUCT}-configuration [PARAMETER] [[PARAMETER], ...]"
|
||||
@ -191,6 +196,7 @@ while [ "$1" != "" ]; do
|
||||
echo " -mysqld, --mysqldatabase ${PRODUCT} database name"
|
||||
echo " -mysqlu, --mysqluser ${PRODUCT} database user"
|
||||
echo " -mysqlp, --mysqlpassword ${PRODUCT} database password"
|
||||
echo " -mk, --machinekey setting for core.machinekey"
|
||||
echo " -e, --environment environment (default 'production')"
|
||||
echo " -?, -h, --help this help"
|
||||
echo
|
||||
@ -206,11 +212,17 @@ while [ "$1" != "" ]; do
|
||||
done
|
||||
|
||||
set_core_machinekey () {
|
||||
if [ -f $APP_DIR/.private/machinekey ]; then
|
||||
CORE_MACHINEKEY=$(cat $APP_DIR/.private/machinekey)
|
||||
if [[ -f $APP_DIR/.private/machinekey ]] || [[ -n $CORE_MACHINEKEY ]]; then
|
||||
CORE_MACHINEKEY=${CORE_MACHINEKEY:-$(cat $APP_DIR/.private/machinekey)};
|
||||
else
|
||||
CORE_MACHINEKEY=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12);
|
||||
echo $CORE_MACHINEKEY >> $APP_DIR/.private/machinekey
|
||||
if [ "$DIST" = "RedHat" ]; then
|
||||
echo $CORE_MACHINEKEY > $APP_DIR/.private/machinekey
|
||||
chmod o-rwx $APP_DIR/.private/machinekey
|
||||
elif [ "$DIST" = "Debian" ]; then
|
||||
db_set ${PRODUCT}/machinekey $CORE_MACHINEKEY || true
|
||||
echo ${PRODUCT} ${PRODUCT}/machinekey select $CORE_MACHINEKEY | debconf-set-selections || true
|
||||
fi
|
||||
fi
|
||||
|
||||
$JSON_USERCONF "this.core={'base-domain': \"$APP_HOST\", 'machinekey': \"$CORE_MACHINEKEY\" }" >/dev/null 2>&1
|
||||
@ -227,7 +239,9 @@ install_json() {
|
||||
}
|
||||
|
||||
restart_services() {
|
||||
sed -e "s/ENVIRONMENT=.*/ENVIRONMENT=$ENVIRONMENT/" -e "s/environment=.*/environment=$ENVIRONMENT/" -i /lib/systemd/system/${PRODUCT}*.service >/dev/null 2>&1
|
||||
chown -R ${PACKAGE_SYSNAME}:${PACKAGE_SYSNAME} $APP_DIR $PRODUCT_DIR $LOG_DIR
|
||||
|
||||
sed "s_\(ENVIRONMENT=\).*_\1${ENVIRONMENT}_i" -i /lib/systemd/system/${PRODUCT}*.service >/dev/null 2>&1
|
||||
systemctl daemon-reload
|
||||
|
||||
echo -n "Updating database... "
|
||||
@ -247,10 +261,10 @@ restart_services() {
|
||||
}
|
||||
|
||||
input_db_params(){
|
||||
local user_connectionString=$(json -f $USER_CONF ConnectionStrings.default.connectionString)
|
||||
local def_DB_HOST=$(echo $user_connectionString | grep -oP 'Server=\K.*' | grep -o '^[^;]*')
|
||||
local def_DB_NAME=$(echo $user_connectionString | grep -oP 'Database=\K.*' | grep -o '^[^;]*')
|
||||
local def_DB_USER=$(echo $user_connectionString | grep -oP 'User ID=\K.*' | grep -o '^[^;]*')
|
||||
local CONNECTION_STRING=$(json -f $USER_CONF ConnectionStrings.default.connectionString)
|
||||
local def_DB_HOST=$(grep -oP 'Server=\K[^;]*' <<< "$CONNECTION_STRING")
|
||||
local def_DB_NAME=$(grep -oP 'Database=\K[^;]*' <<< "$CONNECTION_STRING")
|
||||
local def_DB_USER=$(grep -oP 'User ID=\K[^;]*' <<< "$CONNECTION_STRING")
|
||||
|
||||
if [ -z $def_DB_HOST ] && [ -z $DB_HOST ]; then
|
||||
read -e -p "Database host: " -i "$DB_HOST" DB_HOST;
|
||||
@ -293,8 +307,8 @@ establish_mysql_conn(){
|
||||
fi
|
||||
|
||||
#Save db settings in .json
|
||||
CONNECTION_STRING="Server=$DB_HOST;Port=$DB_PORT;Database=$DB_NAME;User ID=$DB_USER;Password=$DB_PWD;Pooling=true;Character Set=utf8;AutoEnlist=false; \
|
||||
SSL Mode=none;AllowPublicKeyRetrieval=true;Connection Timeout=30;Maximum Pool Size=300"
|
||||
CONNECTION_STRING="Server=$DB_HOST;Port=$DB_PORT;Database=$DB_NAME;User ID=$DB_USER;Password=$DB_PWD;Pooling=true; \
|
||||
Character Set=utf8; AutoEnlist=false; SSL Mode=none;AllowPublicKeyRetrieval=true;Connection Timeout=30;Maximum Pool Size=300"
|
||||
|
||||
$JSON_USERCONF "this.ConnectionStrings={'default': {'connectionString': \"$CONNECTION_STRING\"}}" >/dev/null 2>&1
|
||||
$JSON $APP_DIR/apisystem.$ENVIRONMENT.json -e "this.ConnectionStrings={'default': {'connectionString': \"$CONNECTION_STRING\"}}" >/dev/null 2>&1
|
||||
@ -418,20 +432,15 @@ setup_nginx(){
|
||||
|
||||
# Remove default nginx website
|
||||
rm -f $NGINX_CONF/default.conf >/dev/null 2>&1 || rm -f $NGINX_DIR/sites-enabled/default >/dev/null 2>&1
|
||||
sed -i "s/listen.*;/listen $APP_PORT;/" $NGINX_CONF/${PACKAGE_SYSNAME}.conf
|
||||
sed -i "s_\(listen\).*;_\1 $APP_PORT;_" $NGINX_CONF/${PACKAGE_SYSNAME}.conf
|
||||
|
||||
NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-$(grep processor /proc/cpuinfo | wc -l)};
|
||||
NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)};
|
||||
|
||||
sed "s!\(^worker_processes\).*;!\1 ${NGINX_WORKER_PROCESSES};!" -i ${NGINX_ROOT_DIR}/nginx.conf
|
||||
sed "s!\(worker_connections\).*;!\1 ${NGINX_WORKER_CONNECTIONS};!" -i ${NGINX_ROOT_DIR}/nginx.conf
|
||||
sed "s!\(^worker_processes\).*;!\1 ${NGINX_WORKER_PROCESSES:-$(grep processor /proc/cpuinfo | wc -l)};!" -i ${NGINX_DIR}/nginx.conf
|
||||
sed "s!\(worker_connections\).*;!\1 ${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)};!" -i ${NGINX_DIR}/nginx.conf
|
||||
|
||||
if [ "$DIST" = "RedHat" ]; then
|
||||
# Remove default nginx settings
|
||||
DELETION_LINE=$(sed -n '/server {/=' /etc/nginx/nginx.conf | head -n 1)
|
||||
if [ -n "$DELETION_LINE" ]; then
|
||||
sed "$DELETION_LINE,\$d" -i /etc/nginx/nginx.conf
|
||||
echo "}" >> /etc/nginx/nginx.conf
|
||||
if grep -q "server {" ${NGINX_DIR}/nginx.conf ; then
|
||||
sed -e '$a}' -e '/server {/,$d' -i ${NGINX_DIR}/nginx.conf
|
||||
fi
|
||||
|
||||
shopt -s nocasematch
|
||||
@ -498,21 +507,17 @@ setup_nginx(){
|
||||
}
|
||||
|
||||
setup_docs() {
|
||||
echo -n "Configuring Docs... "
|
||||
local DS_CONF="/etc/${PACKAGE_SYSNAME}/documentserver/local.json"
|
||||
local JSON_DSCONF="$JSON $DS_CONF -e"
|
||||
|
||||
#Changing the Docs port in nginx conf
|
||||
sed 's/\(listen .*:\)\([0-9]\{2,5\}\b\)\( default_server\)\?\(;\)/\1'${DOCUMENT_SERVER_PORT}'\3\4/' -i $NGINX_CONF/ds.conf
|
||||
sed "0,/proxy_pass .*;/{s/proxy_pass .*;/proxy_pass http:\/\/${DOCUMENT_SERVER_HOST}:${DOCUMENT_SERVER_PORT};/}" -i $NGINX_CONF/${PACKAGE_SYSNAME}.conf
|
||||
|
||||
#Enable JWT validation for Docs
|
||||
$JSON_DSCONF "this.services.CoAuthoring.token.enable.browser='true'" >/dev/null 2>&1
|
||||
$JSON_DSCONF "this.services.CoAuthoring.token.enable.request.inbox='true'" >/dev/null 2>&1
|
||||
$JSON_DSCONF "this.services.CoAuthoring.token.enable.request.outbox='true'" >/dev/null 2>&1
|
||||
echo -n "Configuring docs... "
|
||||
local DS_CONF_DIR="/etc/${PACKAGE_SYSNAME}/documentserver"
|
||||
local DOCUMENT_SERVER_HOST=${DOCUMENT_SERVER_HOST:-localhost}
|
||||
local DOCUMENT_SERVER_PORT=${DOCUMENT_SERVER_PORT:-$(grep -oP '(?<=:)\d+(?=\s)' ${DS_CONF_DIR}/nginx/ds.conf)}
|
||||
|
||||
local DOCUMENT_SERVER_JWT_SECRET=$(json -f ${DS_CONF} services.CoAuthoring.secret.inbox.string)
|
||||
local DOCUMENT_SERVER_JWT_HEADER=$(json -f ${DS_CONF} services.CoAuthoring.token.inbox.header)
|
||||
#Changing the Docs port in nginx conf
|
||||
sed 's/\(listen .*:\)\([0-9]\{2,5\}\b\)\( default_server\)\?\(;\)/\1'${DOCUMENT_SERVER_PORT}'\3\4/' -i ${DS_CONF_DIR}/nginx/ds.conf
|
||||
sed "0,/proxy_pass .*;/{s/proxy_pass .*;/proxy_pass http:\/\/${DOCUMENT_SERVER_HOST}:${DOCUMENT_SERVER_PORT};/}" -i $NGINX_CONF/${PACKAGE_SYSNAME}.conf
|
||||
|
||||
local DOCUMENT_SERVER_JWT_SECRET=$(json -f ${DS_CONF_DIR}/local.json services.CoAuthoring.secret.inbox.string)
|
||||
local DOCUMENT_SERVER_JWT_HEADER=$(json -f ${DS_CONF_DIR}/local.json services.CoAuthoring.token.inbox.header)
|
||||
|
||||
#Save Docs address and JWT in .json
|
||||
$JSON_USERCONF "this.files={'docservice': {\
|
||||
@ -627,11 +632,10 @@ product_configuration(){
|
||||
#Creating environment configuration files
|
||||
enviromentFiles=("appsettings.$ENVIRONMENT.json" "apisystem.$ENVIRONMENT.json" "elastic.$ENVIRONMENT.json" "rabbitmq.$ENVIRONMENT.json")
|
||||
|
||||
for i in "${!enviromentFiles[@]}";
|
||||
do
|
||||
for i in "${!enviromentFiles[@]}"; do
|
||||
if [ ! -e "$APP_DIR/${enviromentFiles[$i]}" ]; then
|
||||
echo "{}" >> "$APP_DIR/${enviromentFiles[$i]}"
|
||||
chown ${PACKAGE_SYSNAME}:${PACKAGE_SYSNAME} "$APP_DIR/${enviromentFiles[$i]}"
|
||||
echo "{}" > "$APP_DIR/${enviromentFiles[$i]}"
|
||||
chmod o-rwx "$APP_DIR/${enviromentFiles[$i]}"
|
||||
fi
|
||||
done
|
||||
|
||||
@ -661,14 +665,14 @@ if $PACKAGE_MANAGER mysql-client >/dev/null 2>&1 || $PACKAGE_MANAGER mysql-commu
|
||||
establish_mysql_conn || exit $?
|
||||
fi
|
||||
|
||||
if $PACKAGE_MANAGER nginx >/dev/null 2>&1; then
|
||||
setup_nginx
|
||||
fi
|
||||
|
||||
if $PACKAGE_MANAGER ${PACKAGE_SYSNAME}-documentserver >/dev/null 2>&1 || $PACKAGE_MANAGER ${PACKAGE_SYSNAME}-documentserver-de >/dev/null 2>&1 || $PACKAGE_MANAGER ${PACKAGE_SYSNAME}-documentserver-ee >/dev/null 2>&1; then
|
||||
setup_docs
|
||||
fi
|
||||
|
||||
if $PACKAGE_MANAGER nginx >/dev/null 2>&1; then
|
||||
setup_nginx
|
||||
fi
|
||||
|
||||
if $PACKAGE_MANAGER elasticsearch >/dev/null 2>&1; then
|
||||
setup_elasticsearch
|
||||
fi
|
||||
|
@ -5,7 +5,7 @@ SRC_PATH="/AppServer"
|
||||
BUILD_PATH="/publish"
|
||||
SELF_CONTAINED="false"
|
||||
ARGS=""
|
||||
|
||||
PUBLISH_CNF="Release"
|
||||
|
||||
while [ "$1" != "" ]; do
|
||||
case $1 in
|
||||
@ -34,6 +34,12 @@ while [ "$1" != "" ]; do
|
||||
ARGS=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
-pc | --publish-configuration )
|
||||
if [ "$2" != "" ]; then
|
||||
PUBLISH_CNF=$2
|
||||
shift
|
||||
fi
|
||||
;;
|
||||
-? | -h | --help )
|
||||
echo " Usage: bash publish-backend.sh [PARAMETER] [[PARAMETER], ...]"
|
||||
@ -42,6 +48,7 @@ while [ "$1" != "" ]; do
|
||||
echo " -bp, --buildpath path where generated output is placed (by default=/publish)"
|
||||
echo " -sc, --self-contained publish the .NET runtime with your application (by default=false)"
|
||||
echo " -ar, --arguments additional arguments publish the .NET runtime with your application"
|
||||
echo " -pc, --publish-configuration dotnet publish configuration Ex. Release/Debug"
|
||||
echo " -?, -h, --help this help"
|
||||
echo " Examples"
|
||||
echo " bash publish-backend.sh -sp /app/AppServer"
|
||||
@ -66,7 +73,7 @@ for i in ${!servers_products_name_backend[@]}; do
|
||||
echo "== Publish ${servers_products_name_backend[$i]}.csproj project =="
|
||||
SERVICE_DIR="$(dirname "$(find ${SRC_PATH} -type f -name "${servers_products_name_backend[$i]}".csproj)")"
|
||||
cd ${SERVICE_DIR}
|
||||
dotnet publish -c Release --self-contained ${SELF_CONTAINED} ${ARGS} -o ${BUILD_PATH}/products/${servers_products_name_backend[$i]}/server/
|
||||
dotnet publish -c ${PUBLISH_CNF} --self-contained ${SELF_CONTAINED} ${ARGS} -o ${BUILD_PATH}/products/${servers_products_name_backend[$i]}/server/
|
||||
done
|
||||
|
||||
# Array of names backend services
|
||||
@ -87,7 +94,7 @@ for i in ${!services_name_backend[@]}; do
|
||||
echo "== Publish ${services_name_backend[$i]}.csproj project =="
|
||||
SERVICE_DIR="$(dirname "$(find ${SRC_PATH} -type f -name "${services_name_backend[$i]}".csproj)")"
|
||||
cd ${SERVICE_DIR}
|
||||
dotnet publish -c Release --self-contained ${SELF_CONTAINED} ${ARGS} -o ${BUILD_PATH}/services/${services_name_backend[$i]}/service/
|
||||
dotnet publish -c ${PUBLISH_CNF} --self-contained ${SELF_CONTAINED} ${ARGS} -o ${BUILD_PATH}/services/${services_name_backend[$i]}/service/
|
||||
done
|
||||
|
||||
# Array of names backend services in directory common (Nodejs)
|
||||
|
@ -38,174 +38,125 @@ Description: {{product}}
|
||||
Package: {{product}}-common
|
||||
Architecture: any
|
||||
Depends: adduser, logrotate, ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: default-mysql-client
|
||||
Description: {{product}}-common
|
||||
{{product}}-common
|
||||
|
||||
Package: {{product}}-backup
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-backup
|
||||
{{product}}-backup
|
||||
|
||||
Package: {{product}}-files
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: elasticsearch (= 7.10.0)
|
||||
Description: {{product}}-files
|
||||
{{product}}-files
|
||||
|
||||
Package: {{product}}-files-services
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
ffmpeg,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: ffmpeg, elasticsearch (= 7.10.0)
|
||||
Description: {{product}}-files-services
|
||||
{{product}}-files-services
|
||||
|
||||
Package: {{product}}-notify
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: ffmpeg, elasticsearch (= 7.10.0)
|
||||
Description: {{product}}-notify
|
||||
{{product}}-notify
|
||||
|
||||
Package: {{product}}-people-server
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-people-server
|
||||
{{product}}-people-server
|
||||
|
||||
Package: {{product}}-socket
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
nodejs (>=16),
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), nodejs (>= 16), ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: redis-server
|
||||
Description: {{product}}-socket
|
||||
{{product}}-socket
|
||||
|
||||
Package: {{product}}-studio-notify
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-studio-notify
|
||||
{{product}}-studio-notify
|
||||
|
||||
Package: {{product}}-api
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Recommends: rabbitmq-server, apache-activemq, redis-server
|
||||
Description: {{product}}-api
|
||||
{{product}}-api
|
||||
|
||||
Package: {{product}}-api-system
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-api-system
|
||||
{{product}}-api-system
|
||||
|
||||
Package: {{product}}-studio
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-studio
|
||||
{{product}}-studio
|
||||
|
||||
Package: {{product}}-proxy
|
||||
Architecture: any
|
||||
Depends: nginx, ${misc:Depends}, ${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), nginx-extras (>= 1.9.5), ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-proxy
|
||||
{{product}}-proxy
|
||||
|
||||
Package: {{product}}-ssoauth
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
nodejs (>=16),
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), nodejs (>= 16), ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-ssoauth
|
||||
{{product}}-ssoauth
|
||||
|
||||
Package: {{product}}-backup-background
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-backup-background
|
||||
{{product}}-backup-background
|
||||
|
||||
Package: {{product}}-clear-events
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-clear-events
|
||||
{{product}}-clear-events
|
||||
|
||||
Package: {{product}}-migration-runner
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-migration-runner
|
||||
{{product}}-migration-runner
|
||||
|
||||
Package: {{product}}-radicale
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
python3-pip,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), python3-pip, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-radicale
|
||||
{{product}}-radicale
|
||||
|
||||
Package: {{product}}-doceditor
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
nodejs (>=16),
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), nodejs (>= 16), ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-doceditor
|
||||
{{product}}-doceditor
|
||||
|
||||
Package: {{product}}-login
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
nodejs (>=16),
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), nodejs (>= 16), ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-login
|
||||
{{product}}-login
|
||||
|
||||
Package: {{product}}-healthchecks
|
||||
Architecture: any
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}),
|
||||
dotnet-sdk-7.0,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends}
|
||||
Depends: {{product}}-common (= {{package_header_tag_version}}), dotnet-sdk-7.0, ${misc:Depends}, ${shlibs:Depends}
|
||||
Description: {{product}}-healthchecks
|
||||
{{product}}-healthchecks
|
||||
|
@ -1,4 +1,4 @@
|
||||
#!/bin/sh -e
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
@ -6,50 +6,67 @@ set -e
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
db_get {{product}}/environment || true
|
||||
ENVIRONMENT="$RET"
|
||||
db_get {{product}}/host || true
|
||||
APP_HOST="$RET"
|
||||
db_get {{product}}/port || true
|
||||
APP_PORT="$RET"
|
||||
|
||||
db_get {{product}}/db-host || true
|
||||
DB_HOST="$RET"
|
||||
db_get {{product}}/db-name || true
|
||||
DB_NAME="$RET"
|
||||
db_get {{product}}/db-user || true
|
||||
DB_USER="$RET"
|
||||
db_get {{product}}/db-pwd || true
|
||||
DB_PWD="$RET"
|
||||
db_get {{product}}/environment || true
|
||||
ENVIRONMENT="$RET"
|
||||
db_get {{product}}/host || true
|
||||
APP_HOST="$RET"
|
||||
db_get {{product}}/port || true
|
||||
APP_PORT="$RET"
|
||||
db_get {{product}}/machinekey || true
|
||||
CORE_MACHINEKEY="$RET"
|
||||
|
||||
db_get {{product}}/redis-host || true
|
||||
REDIS_HOST="$RET"
|
||||
db_get {{product}}/redis-port || true
|
||||
REDIS_PORT="$RET"
|
||||
args+=(-e "$ENVIRONMENT" -ash "$APP_HOST" -asp "$APP_PORT" );
|
||||
[ -n "$CORE_MACHINEKEY" ] && args+=(-mk "$CORE_MACHINEKEY" );
|
||||
|
||||
db_get {{product}}/rabbitmq-host || true
|
||||
RABBITMQ_HOST="$RET"
|
||||
db_get {{product}}/rabbitmq-user || true
|
||||
RABBITMQ_USER="$RET"
|
||||
db_get {{product}}/rabbitmq-port || true
|
||||
RABBITMQ_PORT="$RET"
|
||||
db_get {{product}}/rabbitmq-password || true
|
||||
RABBITMQ_PASSWORD="$RET"
|
||||
db_get {{product}}/db-host || true
|
||||
DB_HOST="$RET"
|
||||
db_get {{product}}/db-name || true
|
||||
DB_NAME="$RET"
|
||||
db_get {{product}}/db-user || true
|
||||
DB_USER="$RET"
|
||||
db_get {{product}}/db-pwd || true
|
||||
DB_PWD="$RET"
|
||||
|
||||
db_get {{product}}/elasticsearch-sheme || true
|
||||
ELK_SHEME="$RET"
|
||||
db_get {{product}}/elasticsearch-host || true
|
||||
ELK_HOST="$RET"
|
||||
db_get {{product}}/elasticsearch-port || true
|
||||
ELK_PORT="$RET"
|
||||
args+=(-mysqlh "$DB_HOST" -mysqld "$DB_NAME" -mysqlu "$DB_USER" );
|
||||
[ -n "$DB_PWD" ] && args+=(-mysqlp "$DB_PWD" );
|
||||
|
||||
db_get onlyoffice/db-host || true
|
||||
DOCUMENT_SERVER_HOST="$RET"
|
||||
db_get onlyoffice/ds-port || true
|
||||
DOCUMENT_SERVER_PORT="$RET"
|
||||
db_get {{product}}/redis-host || true
|
||||
REDIS_HOST="$RET"
|
||||
db_get {{product}}/redis-port || true
|
||||
REDIS_PORT="$RET"
|
||||
|
||||
bash /usr/bin/{{product}}-configuration -e $ENVIRONMENT -mysqlh $DB_HOST -mysqld $DB_NAME -mysqlu $DB_USER -mysqlp $DB_PWD -ash $APP_HOST -asp $APP_PORT -dsh $DOCUMENT_SERVER_HOST \
|
||||
-dsp $DOCUMENT_SERVER_PORT -rdh $REDIS_HOST -rdp $REDIS_PORT -rbh $RABBITMQ_HOST -rbp $RABBITMQ_PORT -rbu $RABBITMQ_USER -rbpw $RABBITMQ_PASSWORD -ess $ELK_SHEME -esh $ELK_HOST -esp $ELK_PORT
|
||||
args+=(-rdh "$REDIS_HOST" -rdp "$REDIS_PORT" );
|
||||
|
||||
db_get {{product}}/rabbitmq-host || true
|
||||
RABBITMQ_HOST="$RET"
|
||||
db_get {{product}}/rabbitmq-user || true
|
||||
RABBITMQ_USER="$RET"
|
||||
db_get {{product}}/rabbitmq-port || true
|
||||
RABBITMQ_PORT="$RET"
|
||||
db_get {{product}}/rabbitmq-password || true
|
||||
RABBITMQ_PASSWORD="$RET"
|
||||
|
||||
args+=(-rbh "$RABBITMQ_HOST" -rbp "$RABBITMQ_PORT" -rbu "$RABBITMQ_USER" -rbpw "$RABBITMQ_PASSWORD" );
|
||||
|
||||
db_get {{product}}/elasticsearch-sheme || true
|
||||
ELK_SHEME="$RET"
|
||||
db_get {{product}}/elasticsearch-host || true
|
||||
ELK_HOST="$RET"
|
||||
db_get {{product}}/elasticsearch-port || true
|
||||
ELK_PORT="$RET"
|
||||
|
||||
args+=(-ess "$ELK_SHEME" -esh "$ELK_HOST" -esp "$ELK_PORT" );
|
||||
|
||||
db_get onlyoffice/db-host || true
|
||||
DOCUMENT_SERVER_HOST="$RET"
|
||||
db_get onlyoffice/ds-port || true
|
||||
DOCUMENT_SERVER_PORT="$RET"
|
||||
|
||||
args+=(-dsh "$DOCUMENT_SERVER_HOST" -dsp "$DOCUMENT_SERVER_PORT" );
|
||||
|
||||
bash /usr/bin/{{product}}-configuration "${args[@]}"
|
||||
|
||||
exit 0
|
||||
;;
|
||||
|
||||
abort-upgrade|abort-remove|abort-deconfigure)
|
||||
|
45
build/install/deb/debian/postrm
Normal file
45
build/install/deb/debian/postrm
Normal file
@ -0,0 +1,45 @@
|
||||
#!/bin/sh
|
||||
# postrm script for {{package_sysname}}
|
||||
#
|
||||
# see: dh_installdeb(1)
|
||||
|
||||
set -e
|
||||
|
||||
# summary of how this script can be called:
|
||||
# * <postrm> `remove'
|
||||
# * <postrm> `purge'
|
||||
# * <old-postrm> `upgrade' <new-version>
|
||||
# * <new-postrm> `failed-upgrade' <old-version>
|
||||
# * <new-postrm> `abort-install'
|
||||
# * <new-postrm> `abort-install' <old-version>
|
||||
# * <new-postrm> `abort-upgrade' <old-version>
|
||||
# * <disappearer's-postrm> `disappear' <overwriter>
|
||||
# <overwriter-version>
|
||||
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||
# the debian-policy package
|
||||
|
||||
if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then
|
||||
. /usr/share/debconf/confmodule
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
purge)
|
||||
rm -rf /var/www/{{product}}
|
||||
rm -rf /etc/onlyoffice/{{product}}
|
||||
;;
|
||||
|
||||
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "postrm called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# dh_installdeb will replace this with shell code automatically
|
||||
# generated by other debhelper scripts.
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
@ -13,11 +13,10 @@ if ! cat /etc/group | grep -q "nginx:"; then
|
||||
fi
|
||||
|
||||
if ! cat /etc/passwd | grep -q "nginx:"; then
|
||||
adduser --quiet -g nginx --no-create-home --home /nonexistent --system nginx
|
||||
adduser --quiet --group --no-create-home --home /nonexistent --system nginx
|
||||
usermod -aG nginx nginx
|
||||
fi
|
||||
|
||||
usermod -aG onlyoffice,nginx onlyoffice
|
||||
chown -R onlyoffice:onlyoffice /var/log/onlyoffice/{{product}} /var/www/{{product}} /etc/onlyoffice/{{product}}
|
||||
|
||||
#DEBHELPER#
|
||||
|
@ -6,6 +6,9 @@ set -e
|
||||
|
||||
DIR="/var/www/{{product}}"
|
||||
|
||||
[ -f /usr/lib/python3.$(python3 -c 'import sys; print(sys.version_info.minor)')/EXTERNALLY-MANAGED ] && \
|
||||
rm /usr/lib/python3.$(python3 -c 'import sys; print(sys.version_info.minor)')/EXTERNALLY-MANAGED
|
||||
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install --upgrade requests
|
||||
python3 -m pip install --upgrade setuptools
|
||||
|
@ -77,3 +77,7 @@ Template: {{product}}/rabbitmq-password
|
||||
Type: string
|
||||
Default: guest
|
||||
Description: RabbitMQ password:
|
||||
|
||||
Template: {{product}}/machinekey
|
||||
Type: string
|
||||
Description: Enter your own machinekey:
|
||||
|
@ -49,8 +49,8 @@ override_dh_auto_build:
|
||||
cp ${CURRENT_PATH}/debian/source/lintian-overrides ${CURRENT_PATH}/debian/$$i.lintian-overrides; \
|
||||
done
|
||||
|
||||
override_dh_fixperms:
|
||||
dh_fixperms
|
||||
execute_after_dh_fixperms:
|
||||
chmod o-rwx debian/${PRODUCT}-common/etc/onlyoffice/${PRODUCT}/*
|
||||
|
||||
override_dh_auto_install:
|
||||
dh_systemd_enable --no-enable
|
||||
|
@ -41,3 +41,6 @@ invalid-standards-version
|
||||
|
||||
# Temporary ignoring of translation errors
|
||||
untranslatable-debconf-templates
|
||||
|
||||
# We use this to protect sensitive information (ie passwords) in the config file
|
||||
non-standard-file-perm
|
||||
|
@ -34,6 +34,8 @@
|
||||
# app service environment #
|
||||
ENV_EXTENSION=none
|
||||
APP_CORE_BASE_DOMAIN=localhost
|
||||
APP_KNOWN_PROXIES=""
|
||||
APP_KNOWN_NETWORKS=""
|
||||
APP_CORE_MACHINEKEY=your_core_machinekey
|
||||
|
||||
DOCUMENT_SERVER_JWT_SECRET=your_jwt_secret
|
||||
@ -90,3 +92,5 @@
|
||||
SERVICE_HELTHCHECKS=${HELTHCHECKS_HOST}:${SERVICE_PORT}
|
||||
|
||||
NETWORK_NAME=${PRODUCT}
|
||||
|
||||
COMPOSE_IGNORE_ORPHANS=True
|
||||
|
@ -14,6 +14,7 @@ ARG BUILD_PATH
|
||||
ARG BUILD_ARGS="build"
|
||||
ARG DEPLOY_ARGS="deploy"
|
||||
ARG DEBUG_INFO="true"
|
||||
ARG PUBLISH_CNF="Release"
|
||||
|
||||
LABEL onlyoffice.appserver.release-date="${RELEASE_DATE}" \
|
||||
maintainer="Ascensio System SIA <support@onlyoffice.com>"
|
||||
@ -51,7 +52,7 @@ RUN cd ${SRC_PATH} && \
|
||||
cd ${SRC_PATH}/build/install/common/ && \
|
||||
bash build-frontend.sh -sp "${SRC_PATH}" -ba "${BUILD_ARGS}" -da "${DEPLOY_ARGS}" -di "${DEBUG_INFO}" && \
|
||||
bash build-backend.sh -sp "${SRC_PATH}" && \
|
||||
bash publish-backend.sh -sp "${SRC_PATH}" -bp "${BUILD_PATH}" && \
|
||||
bash publish-backend.sh -pc "${PUBLISH_CNF}" -sp "${SRC_PATH}" -bp "${BUILD_PATH}" && \
|
||||
cp -rf ${SRC_PATH}/products/ASC.Files/Server/DocStore ${BUILD_PATH}/products/ASC.Files/server/ && \
|
||||
rm -rf ${SRC_PATH}/common/* && \
|
||||
rm -rf ${SRC_PATH}/web/ASC.Web.Core/* && \
|
||||
@ -84,7 +85,7 @@ RUN mkdir -p /var/log/onlyoffice && \
|
||||
vim \
|
||||
python3-pip \
|
||||
libgdiplus && \
|
||||
pip3 install --upgrade jsonpath-ng multipledispatch && \
|
||||
pip3 install --upgrade jsonpath-ng multipledispatch netaddr netifaces && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onlyoffice/config/
|
||||
@ -113,7 +114,7 @@ RUN mkdir -p /var/log/onlyoffice && \
|
||||
curl \
|
||||
vim \
|
||||
python3-pip && \
|
||||
pip3 install --upgrade jsonpath-ng multipledispatch && \
|
||||
pip3 install --upgrade jsonpath-ng multipledispatch netaddr netifaces && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onlyoffice/config/
|
||||
|
@ -14,6 +14,7 @@ ARG BUILD_PATH
|
||||
ARG BUILD_ARGS="build"
|
||||
ARG DEPLOY_ARGS="deploy"
|
||||
ARG DEBUG_INFO="true"
|
||||
ARG PUBLISH_CNF="Debug"
|
||||
|
||||
LABEL onlyoffice.docspace.release-date="${RELEASE_DATE}" \
|
||||
maintainer="Ascensio System SIA <support@onlyoffice.com>"
|
||||
@ -49,7 +50,7 @@ RUN cd ${SRC_PATH} && \
|
||||
sed -e 's/#//' -i /etc/nginx/conf.d/onlyoffice.conf && \
|
||||
cd ${SRC_PATH}/build/install/common/ && \
|
||||
bash build-backend.sh -sp "${SRC_PATH}" && \
|
||||
bash publish-backend.sh -sp "${SRC_PATH}" -bp "${BUILD_PATH}" && \
|
||||
bash publish-backend.sh -pc "${PUBLISH_CNF}" -sp "${SRC_PATH}" -bp "${BUILD_PATH}" && \
|
||||
cp -rf ${SRC_PATH}/products/ASC.Files/Server/DocStore ${BUILD_PATH}/products/ASC.Files/server/ && \
|
||||
rm -rf ${SRC_PATH}/common/* && \
|
||||
rm -rf ${SRC_PATH}/web/ASC.Web.Core/* && \
|
||||
@ -82,7 +83,7 @@ RUN mkdir -p /var/log/onlyoffice && \
|
||||
vim \
|
||||
python3-pip \
|
||||
libgdiplus && \
|
||||
pip3 install --upgrade jsonpath-ng multipledispatch && \
|
||||
pip3 install --upgrade jsonpath-ng multipledispatch netaddr netifaces && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onlyoffice/config/
|
||||
@ -111,7 +112,7 @@ RUN mkdir -p /var/log/onlyoffice && \
|
||||
curl \
|
||||
vim \
|
||||
python3-pip && \
|
||||
pip3 install --upgrade jsonpath-ng multipledispatch && \
|
||||
pip3 install --upgrade jsonpath-ng multipledispatch netaddr netifaces && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=base --chown=onlyoffice:onlyoffice /app/onlyoffice/config/* /app/onlyoffice/config/
|
||||
|
@ -1,7 +1,8 @@
|
||||
import json, sys, os
|
||||
import json, sys, os, netifaces
|
||||
from jsonpath_ng import jsonpath, parse
|
||||
from os import environ
|
||||
from multipledispatch import dispatch
|
||||
from netaddr import *
|
||||
|
||||
filePath = None
|
||||
saveFilePath = None
|
||||
@ -26,6 +27,8 @@ APP_CORE_BASE_DOMAIN = os.environ["APP_CORE_BASE_DOMAIN"] if environ.get("APP_CO
|
||||
APP_CORE_MACHINEKEY = os.environ["APP_CORE_MACHINEKEY"] if environ.get("APP_CORE_MACHINEKEY") else "your_core_machinekey"
|
||||
APP_URL_PORTAL = os.environ["APP_URL_PORTAL"] if environ.get("APP_URL_PORTAL") else "http://" + ROUTER_HOST + ":8092"
|
||||
APP_STORAGE_ROOT = os.environ["APP_STORAGE_ROOT"] if environ.get("APP_STORAGE_ROOT") else BASE_DIR + "/data/"
|
||||
APP_KNOWN_PROXIES = os.environ["APP_KNOWN_PROXIES"]
|
||||
APP_KNOWN_NETWORKS = os.environ["APP_KNOWN_NETWORKS"]
|
||||
|
||||
DOCUMENT_SERVER_JWT_SECRET = os.environ["DOCUMENT_SERVER_JWT_SECRET"] if environ.get("DOCUMENT_SERVER_JWT_SECRET") else "your_jwt_secret"
|
||||
DOCUMENT_SERVER_JWT_HEADER = os.environ["DOCUMENT_SERVER_JWT_HEADER"] if environ.get("DOCUMENT_SERVER_JWT_HEADER") else "AuthorizationJwt"
|
||||
@ -134,7 +137,7 @@ saveFilePath = filePath
|
||||
filePath = "/app/onlyoffice/config/appsettings.json"
|
||||
jsonData = openJsonFile(filePath)
|
||||
#jsonUpdateValue = parseJsonValue(jsonValue)
|
||||
updateJsonData(jsonData, "$.ConnectionStrings.default.connectionString", "Server="+ MYSQL_HOST +";Port=3306;Database="+ MYSQL_DATABASE +";User ID="+ MYSQL_USER +";Password="+ MYSQL_PASSWORD +";Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none;ConnectionReset=false",)
|
||||
updateJsonData(jsonData,"$.ConnectionStrings.default.connectionString", "Server="+ MYSQL_HOST +";Port=3306;Database="+ MYSQL_DATABASE +";User ID="+ MYSQL_USER +";Password="+ MYSQL_PASSWORD +";Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none;ConnectionReset=false",)
|
||||
updateJsonData(jsonData,"$.core.base-domain", APP_CORE_BASE_DOMAIN)
|
||||
updateJsonData(jsonData,"$.core.machinekey", APP_CORE_MACHINEKEY)
|
||||
updateJsonData(jsonData,"$.core.products.subfolder", "server")
|
||||
@ -144,6 +147,23 @@ updateJsonData(jsonData,"$.files.docservice.url.public", DOCUMENT_SERVER_URL_PUB
|
||||
updateJsonData(jsonData,"$.files.docservice.url.internal", DOCUMENT_SERVER_URL_INTERNAL)
|
||||
updateJsonData(jsonData,"$.files.docservice.secret.value", DOCUMENT_SERVER_JWT_SECRET)
|
||||
updateJsonData(jsonData,"$.files.docservice.secret.header", DOCUMENT_SERVER_JWT_HEADER)
|
||||
|
||||
ip_address = netifaces.ifaddresses('eth0').get(netifaces.AF_INET)[0].get('addr')
|
||||
netmask = netifaces.ifaddresses('eth0').get(netifaces.AF_INET)[0].get('netmask')
|
||||
ip_address_netmask = '%s/%s' % (ip_address, netmask)
|
||||
interface_cidr = IPNetwork(ip_address_netmask)
|
||||
knownNetwork = [str(interface_cidr)]
|
||||
knownProxies = ["127.0.0.1"]
|
||||
|
||||
if APP_KNOWN_NETWORKS:
|
||||
knownNetwork= knownNetwork + [x.strip() for x in APP_KNOWN_NETWORKS.split(',')]
|
||||
|
||||
if APP_KNOWN_PROXIES:
|
||||
knownNetwork= knownNetwork + [x.strip() for x in APP_KNOWN_PROXIES.split(',')]
|
||||
|
||||
updateJsonData(jsonData,"$.core.hosting.forwardedHeadersOptions.knownNetworks", knownNetwork)
|
||||
updateJsonData(jsonData,"$.core.hosting.forwardedHeadersOptions.knownProxies", knownProxies)
|
||||
|
||||
writeJsonFile(filePath, jsonData)
|
||||
|
||||
filePath = "/app/onlyoffice/config/apisystem.json"
|
||||
|
@ -12,6 +12,8 @@ x-service: &x-service-base
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
DATABASE_MIGRATION: ${DATABASE_MIGRATION}
|
||||
APP_DOTNET_ENV: ${APP_DOTNET_ENV}
|
||||
APP_KNOWN_NETWORKS: ${APP_KNOWN_NETWORKS}
|
||||
APP_KNOWN_PROXIES: ${APP_KNOWN_PROXIES}
|
||||
APP_CORE_BASE_DOMAIN: ${APP_CORE_BASE_DOMAIN}
|
||||
APP_CORE_MACHINEKEY: ${APP_CORE_MACHINEKEY}
|
||||
APP_URL_PORTAL: ${APP_URL_PORTAL}
|
||||
|
@ -20,6 +20,8 @@ x-service: &x-service-base
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
DATABASE_MIGRATION: ${DATABASE_MIGRATION}
|
||||
APP_DOTNET_ENV: ${APP_DOTNET_ENV}
|
||||
APP_KNOWN_NETWORKS: ${APP_KNOWN_NETWORKS}
|
||||
APP_KNOWN_PROXIES: ${APP_KNOWN_PROXIES}
|
||||
APP_CORE_BASE_DOMAIN: ${APP_CORE_BASE_DOMAIN}
|
||||
APP_CORE_MACHINEKEY: ${APP_CORE_MACHINEKEY}
|
||||
DOCUMENT_SERVER_JWT_SECRET: ${DOCUMENT_SERVER_JWT_SECRET}
|
||||
|
@ -21,6 +21,8 @@ x-service:
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
DATABASE_MIGRATION: ${DATABASE_MIGRATION}
|
||||
APP_DOTNET_ENV: ${APP_DOTNET_ENV}
|
||||
APP_KNOWN_NETWORKS: ${APP_KNOWN_NETWORKS}
|
||||
APP_KNOWN_PROXIES: ${APP_KNOWN_PROXIES}
|
||||
APP_CORE_BASE_DOMAIN: ${APP_CORE_BASE_DOMAIN}
|
||||
APP_CORE_MACHINEKEY: ${APP_CORE_MACHINEKEY}
|
||||
DOCUMENT_SERVER_JWT_SECRET: ${DOCUMENT_SERVER_JWT_SECRET}
|
||||
|
@ -42,3 +42,6 @@ addFilter(r'E: non-executable-script')
|
||||
|
||||
# docspace-configuration.sh has a permission of 744, so that users do not have the opportunity to run the script
|
||||
addFilter(r'non-standard-executable-perm')
|
||||
|
||||
# We use this to protect sensitive information (ie passwords) in the config file
|
||||
addFilter(r'non-readable')
|
||||
|
@ -30,12 +30,14 @@
|
||||
|
||||
%files common
|
||||
%defattr(-, onlyoffice, onlyoffice, -)
|
||||
%config %{_sysconfdir}/onlyoffice/%{product}/
|
||||
%config %attr(640, onlyoffice, onlyoffice) %{_sysconfdir}/onlyoffice/%{product}/*
|
||||
%exclude %{_sysconfdir}/onlyoffice/%{product}/nginx
|
||||
%{_docdir}/%{name}-%{version}-%{release}/
|
||||
%config %{_sysconfdir}/logrotate.d/%{product}-common
|
||||
%{_var}/log/onlyoffice/%{product}/
|
||||
%dir %{_sysconfdir}/onlyoffice/
|
||||
%dir %{_sysconfdir}/onlyoffice/%{product}/
|
||||
%dir %{_sysconfdir}/onlyoffice/%{product}/.private/
|
||||
%dir %{_var}/log/onlyoffice/
|
||||
|
||||
%files files-services
|
||||
|
@ -6,7 +6,6 @@ mkdir -p "%{buildroot}%{_sysconfdir}/logrotate.d"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/nginx/conf.d/"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/nginx/includes/"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/.private/"
|
||||
mkdir -p "%{buildroot}%{_sysconfdir}/onlyoffice/%{product}/data/"
|
||||
mkdir -p "%{buildroot}%{_var}/log/onlyoffice/%{product}/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/Tools/radicale/plugins/"
|
||||
mkdir -p "%{buildroot}%{buildpath}/products/ASC.Files/client/"
|
||||
|
@ -18,7 +18,8 @@ Common
|
||||
Summary: Files-services
|
||||
Group: Applications/Internet
|
||||
Requires: %name-common = %version-%release
|
||||
Requires: dotnet-sdk-7.0, ffmpeg
|
||||
Requires: dotnet-sdk-7.0
|
||||
Requires: ffmpeg
|
||||
AutoReqProv: no
|
||||
%description files-services
|
||||
Files-services
|
||||
|
@ -9,7 +9,7 @@
|
||||
<ROW Property="AI_FINDEXE_TITLE" Value="Select the installation package for [|ProductName]" ValueLocId="AI.Property.FindExeTitle"/>
|
||||
<ROW Property="AI_PACKAGING_TOOL" Value="Advanced Installer 20.0 build e4706cc2" ValueLocId="-"/>
|
||||
<ROW Property="AI_PREDEF_LCONDS_PROPS" Value="AI_DETECTED_INTERNET_CONNECTION;AI_DETECTED_ADMIN_USER"/>
|
||||
<ROW Property="AI_PREREQ_REPAIR_ENABLED" MultiBuildValue="ExeBuild:1"/>
|
||||
<ROW Property="AI_PREREQ_REPAIR_ENABLED" MultiBuildValue="DefaultBuild:1#ExeBuild:1"/>
|
||||
<ROW Property="AI_PRODUCTNAME_ARP" Value="[|ProductName]"/>
|
||||
<ROW Property="AI_UNINSTALLER" Value="msiexec.exe"/>
|
||||
<ROW Property="ALLUSERS" Value="1"/>
|
||||
@ -38,8 +38,8 @@
|
||||
<ROW Property="DB_PORT" Value="3306"/>
|
||||
<ROW Property="DB_PWD" Value="root"/>
|
||||
<ROW Property="DB_USER" Value="root"/>
|
||||
<ROW Property="DOCUMENT_SERVER_HOST" Value="localhost" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="DOCUMENT_SERVER_PORT" Value="8083" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="DOCUMENT_SERVER_HOST" Value="localhost"/>
|
||||
<ROW Property="DOCUMENT_SERVER_PORT" Value="8083"/>
|
||||
<ROW Property="ELASTICSEARCH_HOST" Value="localhost" ValueLocId="-"/>
|
||||
<ROW Property="ELASTICSEARCH_MSG" Value="Unable to connect to remote Elasticsearch server at "/>
|
||||
<ROW Property="ELASTICSEARCH_PORT" Value="9200" ValueLocId="-"/>
|
||||
@ -47,8 +47,8 @@
|
||||
<ROW Property="ENVIRONMENT" Value="PRODUCT.ENVIRONMENT.SUB"/>
|
||||
<ROW Property="Editor_Port" Value="5013"/>
|
||||
<ROW Property="INSTALL_ROOT_FOLDER_NAME" Value="[|Manufacturer]"/>
|
||||
<ROW Property="JWT_ENABLED" Value="true" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="JWT_HEADER" Value="Authorization" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="JWT_ENABLED" Value="true"/>
|
||||
<ROW Property="JWT_HEADER" Value="Authorization"/>
|
||||
<ROW Property="Login_Port" Value="5011"/>
|
||||
<ROW Property="MSIFASTINSTALL" MultiBuildValue="DefaultBuild:3#ExeBuild:3"/>
|
||||
<ROW Property="MYSQLODBCDRIVER" Value="MySQL ODBC 8.0 Unicode Driver"/>
|
||||
@ -58,11 +58,11 @@
|
||||
<ROW Property="NEED_REINDEX_ELASTICSEARCH" Value="FALSE" ValueLocId="-"/>
|
||||
<ROW Property="PACKAGE_NAME" Value="ONLYOFFICE_DocSpace_Community_Win-install.v[|ProductVersion]" MultiBuildValue="ExeBuild:ONLYOFFICE_DocSpace_Enterprise_Win-install.v[|ProductVersion]"/>
|
||||
<ROW Property="PRODUCT_NAME" Value="ONLYOFFICE DocSpace"/>
|
||||
<ROW Property="PS_DB_HOST" Value="localhost" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="PS_DB_NAME" Value="onlyoffice" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="PS_DB_PORT" Value="5432" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="PS_DB_PWD" Value="onlyoffice" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="PS_DB_USER" Value="onlyoffice" MultiBuildValue="DefaultBuild:"/>
|
||||
<ROW Property="PS_DB_HOST" Value="localhost"/>
|
||||
<ROW Property="PS_DB_NAME" Value="onlyoffice"/>
|
||||
<ROW Property="PS_DB_PORT" Value="5432"/>
|
||||
<ROW Property="PS_DB_PWD" Value="onlyoffice"/>
|
||||
<ROW Property="PS_DB_USER" Value="onlyoffice"/>
|
||||
<ROW Property="ProductCode" Value="1033:{3FABEB4A-D27F-4BA6-A40E-16BE47540727} " Type="16"/>
|
||||
<ROW Property="ProductLanguage" Value="1033"/>
|
||||
<ROW Property="ProductName" Value="[|PRODUCT_NAME]"/>
|
||||
@ -207,6 +207,7 @@
|
||||
<ROW Component="Data" ComponentId="{C46222BF-779D-4F78-9A6B-EA249CCB9761}" Directory_="Data_Dir" Attributes="0"/>
|
||||
<ROW Component="DocEditor.exe" ComponentId="{FBE9155F-9ACD-4A1A-9198-891ED73BA90C}" Directory_="tools_Dir" Attributes="0" KeyPath="DocEditor.exe"/>
|
||||
<ROW Component="DocumentServer" ComponentId="{9F6BB24B-F2F9-4FE5-8431-A46F38A301AD}" Directory_="APPDIR" Attributes="260" KeyPath="DocumentServer" Options="2"/>
|
||||
<ROW Component="DocumentServer.EE" ComponentId="{DFF09176-439E-4FC8-BDEB-39DDBD835A0F}" Directory_="APPDIR" Attributes="260" KeyPath="DocumentServer.EE" Options="2"/>
|
||||
<ROW Component="Login.exe" ComponentId="{FBE9155F-9ACD-4A1A-9198-891ED73BA202}" Directory_="tools_Dir" Attributes="0" KeyPath="Login.exe"/>
|
||||
<ROW Component="Logs" ComponentId="{6C28AF1C-0190-4DE3-A753-430496711F3C}" Directory_="Logs_Dir" Attributes="0"/>
|
||||
<ROW Component="ProdInfo" ComponentId="{5FB28D19-6A7D-4078-901F-58C2DF0DE176}" Directory_="APPDIR" Attributes="260" KeyPath="Version"/>
|
||||
@ -260,7 +261,8 @@
|
||||
<ROW Feature="ClearEvents" Feature_Parent="DotnetServices" Title=".NET ClearEvents Service" Description="Feature contains .NET ClearEvents service" Display="29" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Feature="DataBackup" Feature_Parent="DotnetServices" Title=".NET DataBackup Service" Description="Feature contains .NET DataBackup service" Display="27" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Feature="DocEditor" Feature_Parent="NodeJSServices" Title="Node.js DocEditor Service" Description="Feature contains Node.js DocEditor service" Display="3" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Feature="DocumentServer" Title="DocumentServer" Description="DocumentServer" Display="5" Level="1" Attributes="0" Builds="ExeBuild"/>
|
||||
<ROW Feature="DocumentServer" Title="DocumentServer" Description="DocumentServer" Display="5" Level="1" Attributes="0" Builds="DefaultBuild"/>
|
||||
<ROW Feature="DocumentServer.EE" Title="DocumentServer-EE" Description="DocumentServer-EE" Display="35" Level="1" Attributes="0" Builds="ExeBuild"/>
|
||||
<ROW Feature="DotnetServices" Feature_Parent="MainFeature" Title=".NET services" Description="Feature contains all .NET services" Display="3" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Feature="File" Feature_Parent="DotnetServices" Title=".NET File Service" Description="Feature contains .NET File service" Display="23" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
<ROW Feature="Files" Feature_Parent="DotnetServices" Title=".NET Files Service" Description="Feature contains .NET Files service" Display="21" Level="1" Directory_="APPDIR" Attributes="0"/>
|
||||
@ -410,7 +412,7 @@
|
||||
<ROW JsonProperty="enabled" Parent="migration" Name="enabled" Condition="1" Order="0" Flags="57" Value="[DATABASE_MIGRATION]"/>
|
||||
<ROW JsonProperty="environment" Parent="app" Name="environment" Condition="1" Order="2" Flags="57" Value="[ENVIRONMENT]"/>
|
||||
<ROW JsonProperty="environment_1" Parent="app_1" Name="environment" Condition="1" Order="2" Flags="57" Value="[ENVIRONMENT]"/>
|
||||
<ROW JsonProperty="files" Parent="Root_1" Name="files" Condition="(&DocumentServer = 3) AND NOT (!DocumentServer = 3)" Order="3" Flags="60"/>
|
||||
<ROW JsonProperty="files" Parent="Root_1" Name="files" Condition="1" Order="3" Flags="60"/>
|
||||
<ROW JsonProperty="folder" Parent="products" Name="folder" Condition="1" Order="0" Flags="57" Value="[APPDIR_FORWARD_SLASH]products"/>
|
||||
<ROW JsonProperty="folder_1" Parent="products_1" Name="folder" Condition="1" Order="0" Flags="57" Value="[APPDIR_FORWARD_SLASH]products"/>
|
||||
<ROW JsonProperty="header" Parent="secret" Name="header" Condition="1" Order="1" Flags="57" Value="[DOCUMENT_SERVER_JWT_HEADER]"/>
|
||||
@ -507,6 +509,7 @@
|
||||
<ROW Feature_="WebStudio" Level="4" Condition="WEB_STUDIO_SERVICE = 0"/>
|
||||
<ROW Feature_="Proxy" Level="4" Condition="PROXY_SERVICE = 0"/>
|
||||
<ROW Feature_="WebHealthChecksUI" Level="4" Condition="WEB_HEALTHCHECKS_UI_SERVICE = 0"/>
|
||||
<ROW Feature_="DocumentServer.EE" Level="4" Condition="DOCUMENT_SERVER_INSTALL_NONE = 1"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiControlComponent">
|
||||
<ROW Dialog_="AdminBrowseDlg" Control="OK" Type="PushButton" X="304" Y="243" Width="56" Height="17" Attributes="3" Text="[ButtonText_OK]" Order="300" TextLocId="-" MsiKey="AdminBrowseDlg#OK"/>
|
||||
@ -1004,12 +1007,12 @@
|
||||
<ROW Action="SET_APPDIR" Type="307" Source="APPDIR" Target="[ProgramFilesFolder][Manufacturer]\[ProductName]" MultiBuildTarget="DefaultBuild:[ProgramFilesFolder][INSTALL_ROOT_FOLDER_NAME]\DocSpace#ExeBuild:[ProgramFilesFolder][INSTALL_ROOT_FOLDER_NAME]\DocSpace"/>
|
||||
<ROW Action="SET_SHORTCUTDIR" Type="307" Source="SHORTCUTDIR" Target="[ProgramMenuFolder][ProductName]" MultiBuildTarget="DefaultBuild:[ProgramMenuFolder][INSTALL_ROOT_FOLDER_NAME]\DocSpace#ExeBuild:[ProgramMenuFolder][INSTALL_ROOT_FOLDER_NAME]\DocSpace"/>
|
||||
<ROW Action="SET_TARGETDIR_TO_APPDIR" Type="51" Source="TARGETDIR" Target="[APPDIR]"/>
|
||||
<ROW Action="SetDocumentServerJWTSecretProp" Type="262" Source="utils.vbs" Target="SetDocumentServerJWTSecretProp"/>
|
||||
<ROW Action="SetDocumentServerJWTSecretProp" Type="6" Source="utils.vbs" Target="SetDocumentServerJWTSecretProp"/>
|
||||
<ROW Action="SetMACHINEKEY" Type="51" Source="MACHINE_KEY" Target="[ComputerName]"/>
|
||||
<ROW Action="Set_APPDIR_FORWARD_SLASH" Type="38" Target="Script Text" TargetUnformatted="Session.Property("APPDIR_FORWARD_SLASH") = Replace(Session.Property("APPDIR"), "\", "/") " AdditionalSeq="AI_DATA_SETTER_6"/>
|
||||
<ROW Action="Set_DS_JWT_ENABLED" Type="307" Source="DOCUMENT_SERVER_JWT_ENABLED" Target="[JWT_ENABLED]"/>
|
||||
<ROW Action="Set_DS_JWT_HEADER" Type="307" Source="DOCUMENT_SERVER_JWT_HEADER" Target="[JWT_HEADER]"/>
|
||||
<ROW Action="Set_DS_JWT_SECRET" Type="307" Source="DOCUMENT_SERVER_JWT_SECRET" Target="[JWT_SECRET]"/>
|
||||
<ROW Action="Set_DS_JWT_ENABLED" Type="51" Source="DOCUMENT_SERVER_JWT_ENABLED" Target="[JWT_ENABLED]"/>
|
||||
<ROW Action="Set_DS_JWT_HEADER" Type="51" Source="DOCUMENT_SERVER_JWT_HEADER" Target="[JWT_HEADER]"/>
|
||||
<ROW Action="Set_DS_JWT_SECRET" Type="51" Source="DOCUMENT_SERVER_JWT_SECRET" Target="[JWT_SECRET]"/>
|
||||
<ROW Action="StartElasticSearchService" Type="3073" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_13"/>
|
||||
<ROW Action="StartMigrationRunner" Type="3074" Source="viewer.exe" Target="/EnforcedRunAsAdmin /RunAsAdmin /HideWindow /dir "[APPDIR]services\ASC.Migration.Runner\service" "[APPDIR]services\ASC.Migration.Runner\service\ASC.Migration.Runner.exe"" Options="1"/>
|
||||
<ROW Action="StartMySQLService" Type="1" Source="aicustact.dll" Target="StartWinService" Options="1" AdditionalSeq="AI_DATA_SETTER_11"/>
|
||||
@ -1120,6 +1123,7 @@
|
||||
<ROW Feature_="NodeJSServices" Component_="tools"/>
|
||||
<ROW Feature_="MainFeature" Component_="AppPath"/>
|
||||
<ROW Feature_="MainFeature" Component_="icon.ico"/>
|
||||
<ROW Feature_="DocumentServer.EE" Component_="DocumentServer.EE"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.MsiIconsComponent">
|
||||
<ROW Name="icon.exe" SourcePath="Resources\icon.ico" Index="0"/>
|
||||
@ -1180,10 +1184,6 @@
|
||||
<ROW Action="AI_ConfigureChainer" Condition="((UILevel = 2) OR (UILevel = 3)) AND (NOT UPGRADINGPRODUCTCODE)" Sequence="6598"/>
|
||||
<ROW Action="AI_LaunchChainer" Condition="AI_PREREQ_CHAINER AND (NOT UPGRADINGPRODUCTCODE)" Sequence="6599"/>
|
||||
<ROW Action="AI_VerifyPrereq" Sequence="1101"/>
|
||||
<ROW Action="SetDocumentServerJWTSecretProp" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" AND (&DocumentServer = 3) AND NOT (!DocumentServer = 3) )" Sequence="1601"/>
|
||||
<ROW Action="Set_DS_JWT_HEADER" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" AND (&DocumentServer = 3) AND NOT (!DocumentServer = 3) )" Sequence="1603"/>
|
||||
<ROW Action="Set_DS_JWT_ENABLED" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" AND (&DocumentServer = 3) AND NOT (!DocumentServer = 3) )" Sequence="1602"/>
|
||||
<ROW Action="Set_DS_JWT_SECRET" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" AND (&DocumentServer = 3) AND NOT (!DocumentServer = 3) )" Sequence="1604"/>
|
||||
<ROW Action="AI_XmlInstall" Condition="(REMOVE <> "ALL")" Sequence="5102"/>
|
||||
<ROW Action="AI_DATA_SETTER_14" Condition="(REMOVE <> "ALL")" Sequence="5101"/>
|
||||
<ROW Action="AI_XmlUninstall" Condition="(REMOVE)" Sequence="3102"/>
|
||||
@ -1218,10 +1218,10 @@
|
||||
<ROW Action="AI_InstallPrerequisite" Sequence="1299"/>
|
||||
<ROW Action="AI_InstallPostPrerequisite" Sequence="1301"/>
|
||||
<ROW Action="AI_CleanPrereq" Sequence="1302"/>
|
||||
<ROW Action="SetDocumentServerJWTSecretProp" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" AND (&DocumentServer = 3) AND NOT (!DocumentServer = 3) )" Sequence="1103"/>
|
||||
<ROW Action="Set_DS_JWT_ENABLED" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" AND (&DocumentServer = 3) AND NOT (!DocumentServer = 3) )" Sequence="1104"/>
|
||||
<ROW Action="Set_DS_JWT_HEADER" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" AND (&DocumentServer = 3) AND NOT (!DocumentServer = 3) )" Sequence="1105"/>
|
||||
<ROW Action="Set_DS_JWT_SECRET" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" AND (&DocumentServer = 3) AND NOT (!DocumentServer = 3) )" Sequence="1106"/>
|
||||
<ROW Action="SetDocumentServerJWTSecretProp" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" )" Sequence="1103"/>
|
||||
<ROW Action="Set_DS_JWT_ENABLED" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" )" Sequence="1104"/>
|
||||
<ROW Action="Set_DS_JWT_HEADER" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" )" Sequence="1105"/>
|
||||
<ROW Action="Set_DS_JWT_SECRET" Condition="( ( NOT Installed ) OR ( Installed AND REMOVE <> "ALL" AND AI_INSTALL_MODE <> "Remove" ) ) AND ( JWT_ENABLED = "true" )" Sequence="1106"/>
|
||||
<ROW Action="PostgreSQLConfigure" Condition="( NOT Installed )" Sequence="1102"/>
|
||||
<ROW Action="AI_PRESERVE_INSTALL_TYPE" Sequence="199"/>
|
||||
</COMPONENT>
|
||||
@ -1311,6 +1311,7 @@
|
||||
<ROW Registry="DisplayName" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="DisplayName" Value="[AI_PRODUCTNAME_ARP]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="DisplayVersion" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="DisplayVersion" Value="[ProductVersion]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="DocumentServer" Root="-1" Key="Software\Caphyon\Advanced Installer\Prereqs\[ProductCode]\[ProductVersion]" Name="DocumentServer" Value="1" Component_="DocumentServer"/>
|
||||
<ROW Registry="DocumentServer.EE" Root="-1" Key="Software\Caphyon\Advanced Installer\Prereqs\[ProductCode]\[ProductVersion]" Name="DocumentServer.EE" Value="1" Component_="DocumentServer.EE"/>
|
||||
<ROW Registry="EstimatedSize" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="EstimatedSize" Value="#[AI_ARP_SIZE]" Component_="AI_CustomARPName" VirtualValue="#"/>
|
||||
<ROW Registry="HelpLink" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="HelpLink" Value="[ARPHELPLINK]" Component_="AI_CustomARPName"/>
|
||||
<ROW Registry="HelpTelephone" Root="-1" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\[ProductName] [ProductVersion]" Name="HelpTelephone" Value="[ARPHELPTELEPHONE]" Component_="AI_CustomARPName"/>
|
||||
@ -1436,20 +1437,22 @@
|
||||
<ROW PrereqKey="F3520F64DA5998338D97129FAD2" DisplayName=".NET Runtime 7.0.3 x64" VersionMin="7.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/c69813b7-2ece-4c2e-8c45-e33006985e18/61cc8fe4693a662b2da55ad932a46446/dotnet-runtime-7.0.3-win-x64.exe" Location="1" ExactSize="28223424" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" MD5="c9d6796b57a1630d4f004302262c241e" TargetName=".NET 7.0"/>
|
||||
<ROW PrereqKey="CA62D813A4E74FA2AAE86A7D7B7B1493" DisplayName="Visual C++ Redistributable for Visual Studio 2013 Update 5 x64" VersionMin="12.0" SetupFileUrl="http://download.microsoft.com/download/C/C/2/CC2DF5F8-4454-44B4-802D-5EA68D086676/vcredist_x64.exe" Location="1" ExactSize="7201056" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="xym" MD5="b364dd867258dfc79342e00d57c81bb5" TargetName="Visual C++ Redistributable for Visual Studio 2013?vcredist_2013u5_x64.exe"/>
|
||||
<ROW PrereqKey="D564007E3BBE4F85950A09B470A7CA65" DisplayName="Visual C++ Redistributable for Visual Studio 2013 Update 5 x86" VersionMin="12.0" SetupFileUrl="http://download.microsoft.com/download/C/C/2/CC2DF5F8-4454-44B4-802D-5EA68D086676/vcredist_x86.exe" Location="1" ExactSize="6510272" Operator="0" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" MD5="6a3a1760342ea699d5e6df1f2a1c7707" TargetName="Visual C++ Redistributable for Visual Studio 2013?vcredist_2013u5_x86.exe"/>
|
||||
<ROW PrereqKey="DocumentServer" DisplayName="DocumentServer" SetupFileUrl="onlyoffice-documentserver.latest.exe" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" BasicUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" NoUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" Options="mxf=i" TargetName="onlyoffice-documentserver.latest.exe" Feature="DocumentServer" RepairComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG"/>
|
||||
<ROW PrereqKey="DocumentServer" DisplayName="DocumentServer" SetupFileUrl="onlyoffice-documentserver.exe" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" BasicUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" NoUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" Options="fi=" TargetName="onlyoffice-documentserver.exe" Builds="DefaultBuild" Feature="DocumentServer" RepairComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG"/>
|
||||
<ROW PrereqKey="DocumentServer.EE" DisplayName="DocumentServer-EE" SetupFileUrl="onlyoffice-documentserver-ee.exe" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" BasicUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" NoUiComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG" Options="fi=" TargetName="onlyoffice-documentserver-ee.exe" Builds="ExeBuild" Feature="DocumentServer.EE" RepairComLine="/VERYSILENT /norestart /DIR="[APPDIR]..\DocumentServer" /DS_PORT="[DOCUMENT_SERVER_PORT]" /JWT_ENABLED="[DOCUMENT_SERVER_JWT_ENABLED]" /JWT_SECRET="[DOCUMENT_SERVER_JWT_SECRET]" /JWT_HEADER="[DOCUMENT_SERVER_JWT_HEADER]" /DB_HOST="[PS_DB_HOST]" /DB_USER="[PS_DB_USER]" /DB_PWD="[PS_DB_PWD]" /DB_NAME="[PS_DB_NAME]" /LOG"/>
|
||||
<ROW PrereqKey="EA5B60A5CAD4115A8386D017CC889B9" DisplayName="ASP.NET Core Runtime 7.0.3 x64" VersionMin="7.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/d37efccc-2ba1-4fc9-a1ef-a8e1e77fb681/b9a20fc29ff05f18d81620ec88ade699/aspnetcore-runtime-7.0.3-win-x64.exe" Location="1" ExactSize="9562088" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="xym" MD5="a87c53a62579d43c6e20683ad686c991" TargetName="ASP.NET Core 7.0"/>
|
||||
<ROW PrereqKey="C5949268848C59079D60551E525B7" DisplayName=".NET Runtime 7.0.3 x86" VersionMin="7.0" SetupFileUrl="https://download.visualstudio.microsoft.com/download/pr/9dd2da29-ca47-40fb-81a0-96fe26ea8ea2/e8f7e09a6d4848b8c4a13282d964b9e1/dotnet-runtime-7.0.3-win-x86.exe" Location="1" ExactSize="25849872" WinNTVersions="Windows Vista x86, Windows Server 2008 x86, Windows 7 RTM x86, Windows 8 x86, Windows 10 version 1507 x86, Windows 10 version 1511 x86" WinNT64Versions="Windows Vista x64, Windows Server 2008 x64, Windows 7 RTM x64, Windows Server 2008 R2 x64, Windows 8 x64, Windows Server 2012 x64, Windows 10 version 1507 x64, Windows 10 version 1511 x64" Operator="1" ComLine="/q /norestart" BasicUiComLine="/q /norestart" NoUiComLine="/q /norestart" Options="ym" MD5="5252b28e402d52361910ddffe7dc7c2b" TargetName=".NET 7.0"/>
|
||||
<ROW PrereqKey="Erlangv20.3x64" DisplayName="Erlang v20.3 x64" VersionMin="20.3" SetupFileUrl="http://download.onlyoffice.com/install/windows/enterprise/otp_win64_20.3.exe" Location="1" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/S" BasicUiComLine="/S" NoUiComLine="/S" Options="yx" TargetName="Erlang v20.3 x64"/>
|
||||
<ROW PrereqKey="MySQLInstallerRunn" DisplayName="MySQL Installer Community 8.0.21 x86 Runner" SetupFileUrl="MySQL Installer Runner.exe" Location="0" ExactSize="0" Operator="1" ComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.21"" BasicUiComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.21"" NoUiComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.21"" Options="y" TargetName="MySQL Installer Runner \MySQL Installer Runner.exe" ParentPrereq="RequiredApplication_2"/>
|
||||
<ROW PrereqKey="PostgreSQL_ODBC" DisplayName="PostgreSQL ODBC Driver x64" SetupFileUrl="psqlodbc_x64.msi" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="myx" TargetName="psqlodbc_x64.msi" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="PostgresSQL" DisplayName="PostgresSQL v9.5.4 x64" VersionMin="9.5.4" SetupFileUrl="postgresql-9.5.4-1-windows-x64.exe" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" BasicUiComLine="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" NoUiComLine="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" Options="xy" TargetName="postgresql-9.5.4-1-windows-x64.exe" Builds="ExeBuild"/>
|
||||
<ROW PrereqKey="RequiredApplication" DisplayName="MySQL Connector/ODBC 8.0.21 x86" VersionMin="8.0.21" SetupFileUrl="https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.21-win32.msi" Location="1" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="MySQL Connector ODBC 8.0.21 x86"/>
|
||||
<ROW PrereqKey="FFmpegx64" DisplayName="FFmpeg x64" VersionMin="6.0.0" SetupFileUrl="https://github.com/icedterminal/ffmpeg-installer/releases/download/6.0.0.20230306/FFmpeg_Essentials.msi" Location="1" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="yx" TargetName="FFmpeg x64"/>
|
||||
<ROW PrereqKey="MySQLInstallerRunn" DisplayName="MySQL Installer Community 8.0.32 x86 Runner" SetupFileUrl="MySQL Installer Runner.exe" Location="0" ExactSize="0" Operator="1" ComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.32"" BasicUiComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.32"" NoUiComLine="/VERYSILENT /DB_PWD="root" /MYSQL_VERSION="8.0.32"" Options="y" TargetName="MySQL Installer Runner \MySQL Installer Runner.exe" ParentPrereq="RequiredApplication_2"/>
|
||||
<ROW PrereqKey="PostgreSQL_ODBC" DisplayName="PostgreSQL ODBC Driver x64" SetupFileUrl="psqlodbc_x64.msi" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="myx" TargetName="psqlodbc_x64.msi"/>
|
||||
<ROW PrereqKey="PostgresSQL" DisplayName="PostgresSQL v12.9 x64" VersionMin="12.9" SetupFileUrl="postgresql-12.9-1-windows-x64.exe" Location="0" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" BasicUiComLine="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" NoUiComLine="--unattendedmodeui none --install_runtimes 0 --mode unattended --superaccount "postgres" --superpassword "postgres"" Options="xy" TargetName="postgresql-12.9-1-windows-x64.exe"/>
|
||||
<ROW PrereqKey="RequiredApplication" DisplayName="MySQL Connector/ODBC 8.0.32 x86" VersionMin="8.0.32" SetupFileUrl="https://cdn.mysql.com/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.32-win32.msi" Location="1" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="ym" TargetName="MySQL Connector ODBC 8.0.32 x86"/>
|
||||
<ROW PrereqKey="RequiredApplication_1" DisplayName="Node.js 18.12.1" VersionMin="18.12.1" SetupFileUrl="https://nodejs.org/dist/v18.12.1/node-v18.12.1-x64.msi" Location="1" ExactSize="0" Operator="0" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="my" TargetName="Node.js v18.12.1 x64"/>
|
||||
<ROW PrereqKey="RequiredApplication_2" DisplayName="MySQL Installer Community 8.0.21 x86" VersionMin="1.4.34" SetupFileUrl="https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.21.0.msi" Location="1" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="y" TargetName="MySQL Installer Community 8.0.21 x86"/>
|
||||
<ROW PrereqKey="RequiredApplication_2" DisplayName="MySQL Installer Community 8.0.32 x86" VersionMin="8.0.32" SetupFileUrl="https://cdn.mysql.com/Downloads/MySQLInstaller/mysql-installer-community-8.0.32.0.msi" Location="1" ExactSize="0" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="y" TargetName="MySQL Installer Community 8.0.32 x86"/>
|
||||
<ROW PrereqKey="RequiredApplication_4" DisplayName="Elasticsearch v7.16.3 x64" VersionMin="7.16.3" SetupFileUrl="https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.16.3.msi" Location="1" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/quiet" BasicUiComLine="/quiet" NoUiComLine="/quiet" Options="y" TargetName="Elasticsearch v7.16.3 x64"/>
|
||||
<ROW PrereqKey="RequiredApplication_5" DisplayName="RabbitMQ v3.7.4 x64" VersionMin="3.7.4" SetupFileUrl="https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.4/rabbitmq-server-3.7.4.exe" Location="1" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/S" BasicUiComLine="/S" NoUiComLine="/S" Options="yx" TargetName="RabbitMQ v3.7.4 x64"/>
|
||||
<ROW PrereqKey="RequiredApplication_6" DisplayName="Redis 5.0.10 x64" VersionMin="5.0" SetupFileUrl="http://download.onlyoffice.com/install/windows/redist/Redis-x64-5.0.10.msi" Location="1" ExactSize="0" WinNTVersions="Windows 9x/ME/NT/2000/XP/Vista/Windows 7/Windows 8 x86/Windows 8.1 x86/Windows 10 x86" Operator="1" ComLine="/quiet ADD_INSTALLFOLDER_TO_PATH=1" BasicUiComLine="/quiet ADD_INSTALLFOLDER_TO_PATH=1" NoUiComLine="/quiet ADD_INSTALLFOLDER_TO_PATH=1" Options="yx" TargetName="Redis 5.0.10 x64"/>
|
||||
<ATTRIBUTE name="PrereqsOrder" value="B96F93FA27E74B02866727AAE83982D0 F3520F64DA5998338D97129FAD2 C5949268848C59079D60551E525B7 EA5B60A5CAD4115A8386D017CC889B9 FC441DA8855740179A0DFCF9560D3DEE D564007E3BBE4F85950A09B470A7CA65 CA62D813A4E74FA2AAE86A7D7B7B1493 A918597FE054CCCB65ABDBA0AD8F63C C4FE6FD5B7C4D07B3A313E754A9A6A8 B365F790B0C4E08A90D54675D858A21 B450414DF7494F99141402B8725A7C RequiredApplication RequiredApplication_2 MySQLInstallerRunn RequiredApplication_1 RequiredApplication_4 Erlangv20.3x64 RequiredApplication_5 RequiredApplication_6 PostgreSQL_ODBC PostgresSQL DocumentServer"/>
|
||||
<ATTRIBUTE name="PrereqsOrder" value="B96F93FA27E74B02866727AAE83982D0 F3520F64DA5998338D97129FAD2 C5949268848C59079D60551E525B7 EA5B60A5CAD4115A8386D017CC889B9 FC441DA8855740179A0DFCF9560D3DEE D564007E3BBE4F85950A09B470A7CA65 CA62D813A4E74FA2AAE86A7D7B7B1493 A918597FE054CCCB65ABDBA0AD8F63C C4FE6FD5B7C4D07B3A313E754A9A6A8 B365F790B0C4E08A90D54675D858A21 B450414DF7494F99141402B8725A7C RequiredApplication RequiredApplication_2 MySQLInstallerRunn RequiredApplication_1 RequiredApplication_4 Erlangv20.3x64 RequiredApplication_5 RequiredApplication_6 FFmpegx64 PostgreSQL_ODBC PostgresSQL DocumentServer DocumentServer.EE"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.PreReqSearchComponent">
|
||||
<ROW SearchKey="A918597FE054CCCB65ABDBA0AD8F63CSyst" Prereq="A918597FE054CCCB65ABDBA0AD8F63C" SearchType="0" SearchString="[SystemFolder]vcruntime140.dll" VerMin="14.26.28720" Order="2" Property="PreReqSearch_1_A918597FE054CCCB65AB"/>
|
||||
@ -1466,11 +1469,13 @@
|
||||
<ROW SearchKey="D564007E3BBE4F85950A09B470A7CA65Ver" Prereq="D564007E3BBE4F85950A09B470A7CA65" SearchType="2" SearchString="HKLM\SOFTWARE\Microsoft\DevDiv\VC\Servicing\12.0\RuntimeMinimum\Version" VerMin="12.0.40649" Order="1" Property="PreReqSearch_D564007E3BBE4F85950A09"/>
|
||||
<ROW SearchKey="EA5B60A5CAD4115A8386D017CC889B9ASP.N" Prereq="EA5B60A5CAD4115A8386D017CC889B9" SearchType="1" SearchString="HKLM\SOFTWARE\Microsoft\ASP.NET Core\Shared Framework\v7.0" VerMin="7.0.0" Order="1" Property="PreReqSearch_EA5B60A5CAD4115A8386D0"/>
|
||||
<ROW SearchKey="C5949268848C59079D60551E525B7Micr" Prereq="C5949268848C59079D60551E525B7" SearchType="12" SearchString="HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\sharedfx\Microsoft.NETCore.App" VerMin="7.0.0" Order="1" Property="PreReqSearch_C5949268848C59079D6055"/>
|
||||
<ROW SearchKey="FFmpeg" Prereq="FFmpegx64" SearchType="4" SearchString="{384A74EC-865A-4907-8561-9DE765EE6E14}" Order="1" Property="PreReqSearch_3"/>
|
||||
<ROW SearchKey="ONLYOFFICEDocumentServer_is1" Prereq="DocumentServer" SearchType="5" SearchString="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ONLYOFFICE DocumentServer_is1" Order="1" Property="PreReqSearch_1_1" Platform="1"/>
|
||||
<ROW SearchKey="RabbitMQ_1" Prereq="RequiredApplication_5" SearchType="5" SearchString="HKLM\SOFTWARE\Ericsson\Erlang\ErlSrv\1.1\RabbitMQ" Order="2" Property="PreReqSearch_9"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll" Prereq="RequiredApplication" SearchType="4" SearchString="{FF073FBB-32E2-4052-B6B2-830C5ED4A809}" VerMin="8.0.21" Order="1" Property="PreReqSearch"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll" Prereq="RequiredApplication" SearchType="4" SearchString="{FF073FBB-32E2-4052-B6B2-830C5ED4A809}" VerMin="8.0.32" Order="1" Property="PreReqSearch"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_1" Prereq="RequiredApplication_1" SearchType="4" SearchString="{47C07A3A-42EF-4213-A85D-8F5A59077C28}" VerMin="14.17.4" Order="1" Property="PreReqSearch_1"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_2" Prereq="RequiredApplication_2" SearchType="4" SearchString="{18B94B70-06F1-4AC0-B308-37280DB868C2}" VerMin="1.4.34" Order="1" Property="PreReqSearch_2"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_2" Prereq="RequiredApplication_2" SearchType="4" SearchString="{18B94B70-06F1-4AC0-B308-37280DB868C2}" VerMin="8.0.32" Order="1" Property="PreReqSearch_2"/>
|
||||
<ROW SearchKey="SystemFolderfile.dll_3" Prereq="DocumentServer.EE" SearchType="0" SearchString="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ONLYOFFICE DocumentServer_is1" Order="1" Property="PreReqSearch_8" Platform="1"/>
|
||||
<ROW SearchKey="UpgradeCode" Prereq="PostgreSQL_ODBC" SearchType="4" SearchString="{BBD29DF5-89F6-4B8B-BDC9-C3EA3A4AFDBB}" VerMin="09.05" Order="1" Property="PreReqSearch_14"/>
|
||||
<ROW SearchKey="UpgradeCode_1" Prereq="RequiredApplication_4" SearchType="4" SearchString="{DAAA2CBA-A1ED-4F29-AFBF-5478617B00F6}" VerMin="7.13.1" Order="2" Property="PreReqSearch_7"/>
|
||||
<ROW SearchKey="UpgradeCode_3" Prereq="RequiredApplication_6" SearchType="4" SearchString="{05410198-7212-4FC4-B7C8-AFEFC3DA0FBC}" VerMin="5.0.10" Order="2" Property="PreReqSearch_12"/>
|
||||
@ -1478,7 +1483,7 @@
|
||||
<ROW SearchKey="Version_1" Prereq="MySQLInstallerRunn" SearchType="2" SearchString="HKLM\SOFTWARE\MySQL AB\MySQL Server 8.0\Version" Order="2" Property="PreReqSearch_5"/>
|
||||
<ROW SearchKey="Version_2" Prereq="MySQLInstallerRunn" SearchType="2" SearchString="HKLM\SOFTWARE\MySQL AB\MySQL Server 5.5\Version" VerMin="5.5" Order="0" Property="PreReqSearch_6"/>
|
||||
<ROW SearchKey="__1" Prereq="Erlangv20.3x64" SearchType="5" SearchString="HKLM\SOFTWARE\Wow6432Node\Ericsson\Erlang\9.3" Order="2" Property="PreReqSearch_11"/>
|
||||
<ROW SearchKey="postgresqlx649.5" Prereq="PostgresSQL" SearchType="5" SearchString="HKLM\SOFTWARE\PostgreSQL\Installations\postgresql-x64-9.5" Order="1" Property="PreReqSearch_2_1"/>
|
||||
<ROW SearchKey="postgresqlx649.5" Prereq="PostgresSQL" SearchType="5" SearchString="HKLM\SOFTWARE\PostgreSQL\Installations\postgresql-x64-12" Order="1" Property="PreReqSearch_2_1"/>
|
||||
</COMPONENT>
|
||||
<COMPONENT cid="caphyon.advinst.msicomp.SqlScriptComponent">
|
||||
<ATTRIBUTE name="ImpersonateUser" value="true"/>
|
||||
|
@ -9,7 +9,7 @@ set SRC_PATH=%~s2
|
||||
pushd %~1
|
||||
|
||||
call dotnet build ASC.Web.slnf
|
||||
call dotnet build ASC.Migrations.sln -o %SRC_PATH%\services\ASC.Migration.Runner\service
|
||||
call dotnet build ASC.Migrations.sln --property:OutputPath=%SRC_PATH%\services\ASC.Migration.Runner\service
|
||||
|
||||
echo "== Build ASC.Socket.IO =="
|
||||
pushd common\ASC.Socket.IO
|
||||
|
@ -36,14 +36,20 @@ function DownloadComponents {
|
||||
}
|
||||
}
|
||||
|
||||
switch ( $env:DOCUMENT_SERVER_VERSION )
|
||||
switch ( $env:DOCUMENT_SERVER_VERSION_EE )
|
||||
{
|
||||
latest { $DOCUMENT_SERVER_LINK = "https://download.onlyoffice.com/install/documentserver/windows/onlyoffice-documentserver-ee.exe" }
|
||||
custom { $DOCUMENT_SERVER_LINK = $env:DOCUMENT_SERVER_CUSTOM_LINK.Replace(",", "") }
|
||||
latest { $DOCUMENT_SERVER_EE_LINK = "https://download.onlyoffice.com/install/documentserver/windows/onlyoffice-documentserver-ee.exe" }
|
||||
custom { $DOCUMENT_SERVER_EE_LINK = $env:DOCUMENT_SERVER_EE_CUSTOM_LINK.Replace(",", "") }
|
||||
}
|
||||
|
||||
switch ( $env:DOCUMENT_SERVER_VERSION_CE )
|
||||
{
|
||||
latest { $DOCUMENT_SERVER_CE_LINK = "https://download.onlyoffice.com/install/documentserver/windows/onlyoffice-documentserver.exe" }
|
||||
custom { $DOCUMENT_SERVER_CE_LINK = $env:DOCUMENT_SERVER_CE_CUSTOM_LINK.Replace(",", "") }
|
||||
}
|
||||
|
||||
$nginx_version = '1.21.1'
|
||||
$psql_version = '9.5.4'
|
||||
$psql_version = '12.9'
|
||||
|
||||
$path_prereq = "${pwd}\build\install\win\"
|
||||
|
||||
@ -60,12 +66,20 @@ $prerequisites = @(
|
||||
link = "https://github.com/winsw/winsw/releases/download/v2.11.0/WinSW.NET4.exe";
|
||||
}
|
||||
|
||||
@{
|
||||
@{
|
||||
# Downloading onlyoffice-documentserver-ee for DocSpace Enterprise
|
||||
download_allways = $true;
|
||||
name = "onlyoffice-documentserver.latest.exe";
|
||||
link = $DOCUMENT_SERVER_LINK
|
||||
name = "onlyoffice-documentserver-ee.exe";
|
||||
link = $DOCUMENT_SERVER_EE_LINK
|
||||
}
|
||||
|
||||
@{
|
||||
# Downloading onlyoffice-documentserver for DocSpace Community
|
||||
download_allways = $true;
|
||||
name = "onlyoffice-documentserver.exe";
|
||||
link = $DOCUMENT_SERVER_CE_LINK
|
||||
}
|
||||
|
||||
@{
|
||||
download_allways = $false;
|
||||
name = "psqlodbc_x64.msi";
|
||||
|
4
build/run.backend.translations.tests.bat
Normal file
4
build/run.backend.translations.tests.bat
Normal file
@ -0,0 +1,4 @@
|
||||
PUSHD %~dp0..
|
||||
set dir=%~dp0..
|
||||
echo %dir%
|
||||
dotnet test common\Tests\Backend.Translations.Tests\Backend.Translations.Tests.csproj -l:html --environment "BASE_DIR=%dir%" --results-directory "%dir%/TestsResults"
|
@ -24,10 +24,6 @@
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
using System.Linq;
|
||||
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
|
||||
using JsonConverter = System.Text.Json.Serialization.JsonConverter;
|
||||
|
||||
namespace ASC.Api.Core;
|
||||
@ -142,9 +138,7 @@ public abstract class BaseStartup
|
||||
}
|
||||
};
|
||||
|
||||
services.AddControllers()
|
||||
.AddXmlSerializerFormatters()
|
||||
.AddJsonOptions(jsonOptions);
|
||||
services.AddControllers().AddJsonOptions(jsonOptions);
|
||||
|
||||
services.AddSingleton(jsonOptions);
|
||||
|
||||
@ -207,11 +201,6 @@ public abstract class BaseStartup
|
||||
config.Filters.Add(new CustomResponseFilterAttribute());
|
||||
config.Filters.Add(new CustomExceptionFilterAttribute());
|
||||
config.Filters.Add(new TypeFilterAttribute(typeof(WebhooksGlobalFilterAttribute)));
|
||||
config.Filters.Add(new TypeFilterAttribute(typeof(FormatFilter)));
|
||||
|
||||
|
||||
config.OutputFormatters.RemoveType<XmlSerializerOutputFormatter>();
|
||||
config.OutputFormatters.Add(new XmlOutputFormatter());
|
||||
});
|
||||
|
||||
var authBuilder = services.AddAuthentication(options =>
|
||||
|
@ -62,7 +62,6 @@ public class CustomEndpointDataSource : EndpointDataSource
|
||||
{
|
||||
var order = constraintRouteAttr != null ? r.Order : r.Order + 2;
|
||||
endpoints.Add(new RouteEndpoint(r.RequestDelegate, RoutePatternFactory.Parse(r.RoutePattern.RawText, defaults, policies), order + 1, r.Metadata, r.DisplayName));
|
||||
endpoints.Add(new RouteEndpoint(r.RequestDelegate, RoutePatternFactory.Parse(r.RoutePattern.RawText + ".{format}", defaults, policies), order, r.Metadata, r.DisplayName));
|
||||
}
|
||||
|
||||
}).ToList();
|
||||
@ -76,13 +75,6 @@ public class CustomEndpointDataSource : EndpointDataSource
|
||||
|
||||
public static class EndpointExtension
|
||||
{
|
||||
private static readonly IReadOnlyList<string> _methodList = new List<string>
|
||||
{
|
||||
"POST",
|
||||
"PUT",
|
||||
"DELETE"
|
||||
};
|
||||
|
||||
public static async Task<IEndpointRouteBuilder> MapCustomAsync(this IEndpointRouteBuilder endpoints, bool webhooksEnabled = false, IServiceProvider serviceProvider = null)
|
||||
{
|
||||
endpoints.MapControllers();
|
||||
@ -109,7 +101,7 @@ public static class EndpointExtension
|
||||
var httpMethodMetadata = r.Metadata.OfType<HttpMethodMetadata>().FirstOrDefault();
|
||||
var disabled = r.Metadata.OfType<WebhookDisableAttribute>().FirstOrDefault();
|
||||
|
||||
if (disabled == null)
|
||||
if (disabled == null && httpMethodMetadata != null)
|
||||
{
|
||||
foreach (var httpMethod in httpMethodMetadata.HttpMethods)
|
||||
{
|
||||
@ -118,7 +110,7 @@ public static class EndpointExtension
|
||||
}
|
||||
return result;
|
||||
})
|
||||
.Where(r => _methodList.Contains(r.Method))
|
||||
.Where(r => DbWorker.MethodList.Contains(r.Method))
|
||||
.DistinctBy(r => $"{r.Method}|{r.Route}")
|
||||
.ToList();
|
||||
|
||||
|
@ -51,7 +51,9 @@ public class WebhooksGlobalFilterAttribute : ResultFilterAttribute, IDisposable
|
||||
|
||||
public override async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
|
||||
{
|
||||
if (!await Skip(context.HttpContext))
|
||||
var skip = await Skip(context.HttpContext);
|
||||
|
||||
if (!skip)
|
||||
{
|
||||
_bodyStream = context.HttpContext.Response.Body;
|
||||
context.HttpContext.Response.Body = _stream;
|
||||
@ -59,7 +61,7 @@ public class WebhooksGlobalFilterAttribute : ResultFilterAttribute, IDisposable
|
||||
|
||||
await base.OnResultExecutionAsync(context, next);
|
||||
|
||||
if (context.Cancel || await Skip(context.HttpContext))
|
||||
if (context.Cancel || skip)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -113,6 +115,11 @@ public class WebhooksGlobalFilterAttribute : ResultFilterAttribute, IDisposable
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!DbWorker.MethodList.Contains(method))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var webhook = await _dbWorker.GetWebhookAsync(method, routePattern);
|
||||
if (webhook == null || _settingsManager.Load<WebHooksSettings>().Ids.Contains(webhook.Id))
|
||||
{
|
||||
|
@ -36,4 +36,5 @@ public class DefaultRouteAttribute : RouteAttribute
|
||||
}
|
||||
|
||||
public DefaultRouteAttribute() : base(BaseUrl) { }
|
||||
public DefaultRouteAttribute(string template) : base($"{BaseUrl}{template}") { }
|
||||
}
|
@ -30,16 +30,16 @@ public class IPGeolocationInfo
|
||||
{
|
||||
public string Key { get; set; }
|
||||
public string City { get; set; }
|
||||
public double TimezoneOffset { get; set; }
|
||||
public float TimezoneOffset { get; set; }
|
||||
public string TimezoneName { get; set; }
|
||||
public string IPStart { get; set; }
|
||||
public string IPEnd { get; set; }
|
||||
public IPAddress IPStart { get; set; }
|
||||
public IPAddress IPEnd { get; set; }
|
||||
public string Continent { get; set; }
|
||||
|
||||
|
||||
public static readonly IPGeolocationInfo Default = new IPGeolocationInfo
|
||||
{
|
||||
Key = string.Empty,
|
||||
IPStart = string.Empty,
|
||||
IPEnd = string.Empty,
|
||||
City = string.Empty,
|
||||
TimezoneName = string.Empty,
|
||||
};
|
||||
|
@ -77,7 +77,16 @@ public class BaseCommonLinkUtility
|
||||
}
|
||||
else if (_serverRoot == null)
|
||||
{
|
||||
_serverRoot = new UriBuilder(Uri.UriSchemeHttp, LocalHost);
|
||||
var serverRoot = coreBaseSettings.ServerRoot;
|
||||
|
||||
if (string.IsNullOrEmpty(serverRoot))
|
||||
{
|
||||
_serverRoot = new UriBuilder(Uri.UriSchemeHttp, LocalHost);
|
||||
}
|
||||
else
|
||||
{
|
||||
ServerUri = serverRoot;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception error)
|
||||
|
@ -169,8 +169,6 @@ public class TariffService : ITariffService
|
||||
|
||||
if (_billingClient.Configured && withRequestToPaymentSystem)
|
||||
{
|
||||
var paymentFound = false;
|
||||
|
||||
try
|
||||
{
|
||||
var currentPayments = _billingClient.GetCurrentPayments(GetPortalId(tenantId));
|
||||
@ -225,8 +223,6 @@ public class TariffService : ITariffService
|
||||
}
|
||||
|
||||
UpdateCache(tariff.Id);
|
||||
|
||||
paymentFound = true;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
@ -236,7 +232,7 @@ public class TariffService : ITariffService
|
||||
}
|
||||
}
|
||||
|
||||
if (!paymentFound)
|
||||
if (tariff.Id == 0)
|
||||
{
|
||||
var freeTariff = tariff.Quotas.FirstOrDefault(tariffRow =>
|
||||
{
|
||||
|
@ -188,6 +188,7 @@ public class CachedUserService : IUserService, ICachedService
|
||||
List<List<Guid>> includeGroups,
|
||||
List<Guid> excludeGroups,
|
||||
EmployeeActivationStatus? activationStatus,
|
||||
AccountLoginType? accountLoginType,
|
||||
string text,
|
||||
string sortBy,
|
||||
bool sortOrderAsc,
|
||||
@ -196,7 +197,7 @@ public class CachedUserService : IUserService, ICachedService
|
||||
out int total,
|
||||
out int count)
|
||||
{
|
||||
return Service.GetUsers(tenant, isDocSpaceAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, text, sortBy, sortOrderAsc, limit, offset, out total, out count);
|
||||
return Service.GetUsers(tenant, isDocSpaceAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, accountLoginType, text, sortBy, sortOrderAsc, limit, offset, out total, out count);
|
||||
}
|
||||
|
||||
public UserInfo GetUser(int tenant, Guid id)
|
||||
|
@ -34,6 +34,7 @@ public class CoreBaseSettings
|
||||
private bool? _personal;
|
||||
private bool? _customMode;
|
||||
private bool? _disableDocSpace;
|
||||
private string _serverRoot;
|
||||
|
||||
private IConfiguration Configuration { get; }
|
||||
|
||||
@ -55,6 +56,19 @@ public class CoreBaseSettings
|
||||
}
|
||||
}
|
||||
|
||||
public string ServerRoot
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_serverRoot == null)
|
||||
{
|
||||
_serverRoot = Configuration["core:server-root"] ?? string.Empty;
|
||||
}
|
||||
|
||||
return _serverRoot;
|
||||
}
|
||||
}
|
||||
|
||||
public bool Standalone => _standalone ?? (bool)(_standalone = Configuration["core:base-domain"] == "localhost");
|
||||
|
||||
public bool Personal =>
|
||||
|
@ -326,6 +326,17 @@ public class TenantManager
|
||||
return result;
|
||||
}
|
||||
|
||||
public Dictionary<string, decimal> GetProductPriceInfo(string productId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(productId))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var prices = TariffService.GetProductPriceInfo(new[] { productId });
|
||||
return prices.ContainsKey(productId) ? prices[productId] : null;
|
||||
}
|
||||
|
||||
public TenantQuota SaveTenantQuota(TenantQuota quota)
|
||||
{
|
||||
quota = QuotaService.SaveTenantQuota(quota);
|
||||
|
@ -187,6 +187,7 @@ public class UserManager
|
||||
List<List<Guid>> includeGroups,
|
||||
List<Guid> excludeGroups,
|
||||
EmployeeActivationStatus? activationStatus,
|
||||
AccountLoginType? accountLoginType,
|
||||
string text,
|
||||
string sortBy,
|
||||
bool sortOrderAsc,
|
||||
@ -195,7 +196,7 @@ public class UserManager
|
||||
out int total,
|
||||
out int count)
|
||||
{
|
||||
return _userService.GetUsers(Tenant.Id, isDocSpaceAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, text, sortBy, sortOrderAsc, limit, offset, out total, out count);
|
||||
return _userService.GetUsers(Tenant.Id, isDocSpaceAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, accountLoginType, text, sortBy, sortOrderAsc, limit, offset, out total, out count);
|
||||
}
|
||||
|
||||
public string[] GetUserNames(EmployeeStatus status)
|
||||
|
34
common/ASC.Core.Common/Core/AccountLoginType.cs
Normal file
34
common/ASC.Core.Common/Core/AccountLoginType.cs
Normal file
@ -0,0 +1,34 @@
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.Core;
|
||||
|
||||
public enum AccountLoginType
|
||||
{
|
||||
SSO,
|
||||
LDAP,
|
||||
Standart
|
||||
}
|
@ -35,6 +35,7 @@ public interface IUserService
|
||||
List<List<Guid>> includeGroups,
|
||||
List<Guid> excludeGroups,
|
||||
EmployeeActivationStatus? activationStatus,
|
||||
AccountLoginType? accountLoginType,
|
||||
string text,
|
||||
string sortBy,
|
||||
bool sortOrderAsc,
|
||||
|
@ -1,130 +1,150 @@
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.Web.Api.Core;
|
||||
|
||||
[Scope]
|
||||
public class RegionHelper
|
||||
{
|
||||
private readonly TenantManager _tenantManager;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
private readonly GeolocationHelper _geolocationHelper;
|
||||
private readonly UserManager _userManager;
|
||||
|
||||
public RegionHelper(
|
||||
TenantManager tenantManager,
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
GeolocationHelper geolocationHelper,
|
||||
UserManager userManager)
|
||||
{
|
||||
_tenantManager = tenantManager;
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
_geolocationHelper = geolocationHelper;
|
||||
_userManager = userManager;
|
||||
}
|
||||
|
||||
public RegionInfo GetCurrentRegionInfo()
|
||||
{
|
||||
var priceInfo = _tenantManager.GetProductPriceInfo();
|
||||
var defaultRegion = GetDefaultRegionInfo();
|
||||
|
||||
var countryCode = _httpContextAccessor.HttpContext.Request.Query["country"];
|
||||
|
||||
var currentRegion = GetRegionInfo(countryCode) ?? FindRegionInfo();
|
||||
|
||||
if (currentRegion != null && !currentRegion.Name.Equals(defaultRegion.Name))
|
||||
{
|
||||
if (priceInfo.Values.Any(value => value.ContainsKey(currentRegion.ISOCurrencySymbol)))
|
||||
{
|
||||
return currentRegion;
|
||||
}
|
||||
}
|
||||
|
||||
return defaultRegion;
|
||||
}
|
||||
public RegionInfo GetDefaultRegionInfo()
|
||||
{
|
||||
return GetRegionInfo("US");
|
||||
}
|
||||
|
||||
public string GetCurrencyFromRequest()
|
||||
{
|
||||
var regionInfo = GetDefaultRegionInfo();
|
||||
var geoinfo = _geolocationHelper.GetIPGeolocationFromHttpContext();
|
||||
|
||||
if (!string.IsNullOrEmpty(geoinfo.Key))
|
||||
{
|
||||
try
|
||||
{
|
||||
regionInfo = new RegionInfo(geoinfo.Key);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
return regionInfo.ISOCurrencySymbol;
|
||||
}
|
||||
|
||||
private RegionInfo FindRegionInfo()
|
||||
{
|
||||
RegionInfo regionInfo = null;
|
||||
|
||||
var tenant = _tenantManager.GetCurrentTenant();
|
||||
var geoinfo = _geolocationHelper.GetIPGeolocationFromHttpContext();
|
||||
|
||||
if (geoinfo != null)
|
||||
{
|
||||
regionInfo = GetRegionInfo(geoinfo.Key);
|
||||
}
|
||||
|
||||
if (regionInfo == null)
|
||||
{
|
||||
var owner = _userManager.GetUsers(tenant.OwnerId);
|
||||
var culture = string.IsNullOrEmpty(owner.CultureName) ? tenant.GetCulture() : owner.GetCulture();
|
||||
regionInfo = GetRegionInfo(culture.Name);
|
||||
}
|
||||
|
||||
return regionInfo;
|
||||
}
|
||||
|
||||
private RegionInfo GetRegionInfo(string isoTwoLetterCountryCode)
|
||||
{
|
||||
RegionInfo regionInfo = null;
|
||||
|
||||
if (!string.IsNullOrEmpty(isoTwoLetterCountryCode))
|
||||
{
|
||||
try
|
||||
{
|
||||
regionInfo = new RegionInfo(isoTwoLetterCountryCode);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
return regionInfo;
|
||||
}
|
||||
}
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.Core;
|
||||
|
||||
[Scope]
|
||||
public class RegionHelper
|
||||
{
|
||||
private readonly TenantManager _tenantManager;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
private readonly GeolocationHelper _geolocationHelper;
|
||||
private readonly UserManager _userManager;
|
||||
|
||||
public RegionHelper(
|
||||
TenantManager tenantManager,
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
GeolocationHelper geolocationHelper,
|
||||
UserManager userManager)
|
||||
{
|
||||
_tenantManager = tenantManager;
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
_geolocationHelper = geolocationHelper;
|
||||
_userManager = userManager;
|
||||
}
|
||||
|
||||
public RegionInfo GetCurrentRegionInfo(IDictionary<string, Dictionary<string, decimal>> priceInfo = null)
|
||||
{
|
||||
var defaultRegion = GetDefaultRegionInfo();
|
||||
var geoinfo = _geolocationHelper.GetIPGeolocationFromHttpContext();
|
||||
|
||||
var countryCode = _httpContextAccessor.HttpContext?.Request.Query["country"];
|
||||
|
||||
var currentRegion = GetRegionInfo(countryCode);
|
||||
|
||||
if (currentRegion == null)
|
||||
{
|
||||
if (geoinfo != null)
|
||||
{
|
||||
currentRegion = GetRegionInfo(geoinfo.Key);
|
||||
}
|
||||
|
||||
if (currentRegion == null)
|
||||
{
|
||||
var tenant = _tenantManager.GetCurrentTenant(false);
|
||||
if (tenant != null)
|
||||
{
|
||||
var owner = _userManager.GetUsers(tenant.OwnerId);
|
||||
var culture = string.IsNullOrEmpty(owner.CultureName) ? tenant.GetCulture() : owner.GetCulture();
|
||||
currentRegion = GetRegionInfo(culture.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (currentRegion != null && !currentRegion.Name.Equals(defaultRegion.Name))
|
||||
{
|
||||
priceInfo ??= _tenantManager.GetProductPriceInfo();
|
||||
|
||||
if (priceInfo.Values.Any(value => value.ContainsKey(currentRegion.ISOCurrencySymbol)))
|
||||
{
|
||||
return currentRegion;
|
||||
}
|
||||
|
||||
if (geoinfo != null && !string.IsNullOrEmpty(geoinfo.Continent) && geoinfo.Continent == "EU")
|
||||
{
|
||||
return GetRegionInfo("ES");
|
||||
}
|
||||
}
|
||||
|
||||
return defaultRegion;
|
||||
}
|
||||
|
||||
public RegionInfo GetDefaultRegionInfo()
|
||||
{
|
||||
return GetRegionInfo("US");
|
||||
}
|
||||
|
||||
public string GetCurrencyFromRequest()
|
||||
{
|
||||
var defaultRegion = GetDefaultRegionInfo();
|
||||
var geoinfo = _geolocationHelper.GetIPGeolocationFromHttpContext();
|
||||
|
||||
if (!string.IsNullOrEmpty(geoinfo.Key))
|
||||
{
|
||||
try
|
||||
{
|
||||
var currentRegion = new RegionInfo(geoinfo.Key);
|
||||
|
||||
if (currentRegion != null && !currentRegion.Name.Equals(defaultRegion.Name))
|
||||
{
|
||||
var priceInfo = _tenantManager.GetProductPriceInfo();
|
||||
|
||||
if (priceInfo.Values.Any(value => value.ContainsKey(currentRegion.ISOCurrencySymbol)))
|
||||
{
|
||||
return currentRegion.ISOCurrencySymbol;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(geoinfo.Continent) && geoinfo.Continent == "EU")
|
||||
{
|
||||
return "EUR";
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
return defaultRegion.ISOCurrencySymbol;
|
||||
}
|
||||
|
||||
private RegionInfo GetRegionInfo(string isoTwoLetterCountryCode)
|
||||
{
|
||||
RegionInfo regionInfo = null;
|
||||
|
||||
if (!string.IsNullOrEmpty(isoTwoLetterCountryCode))
|
||||
{
|
||||
try
|
||||
{
|
||||
regionInfo = new RegionInfo(isoTwoLetterCountryCode);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
return regionInfo;
|
||||
}
|
||||
}
|
@ -26,7 +26,7 @@
|
||||
|
||||
namespace ASC.Core.Data;
|
||||
|
||||
[Scope]
|
||||
[Scope(Additional = typeof(DbQuotaServiceExtensions))]
|
||||
class DbQuotaService : IQuotaService
|
||||
{
|
||||
private readonly IDbContextFactory<CoreDbContext> _dbContextFactory;
|
||||
@ -41,19 +41,14 @@ class DbQuotaService : IQuotaService
|
||||
{
|
||||
using var coreDbContext = _dbContextFactory.CreateDbContext();
|
||||
|
||||
return coreDbContext.Quotas
|
||||
.ProjectTo<TenantQuota>(_mapper.ConfigurationProvider)
|
||||
.ToList();
|
||||
return _mapper.Map<List<DbQuota>, List<TenantQuota>>(coreDbContext.Quotas.ToList());
|
||||
}
|
||||
|
||||
public TenantQuota GetTenantQuota(int id)
|
||||
{
|
||||
using var coreDbContext = _dbContextFactory.CreateDbContext();
|
||||
|
||||
return coreDbContext.Quotas
|
||||
.Where(r => r.Tenant == id)
|
||||
.ProjectTo<TenantQuota>(_mapper.ConfigurationProvider)
|
||||
.SingleOrDefault();
|
||||
return _mapper.Map<DbQuota, TenantQuota>(coreDbContext.Quotas.SingleOrDefault(r => r.Tenant == id));
|
||||
}
|
||||
|
||||
public TenantQuota SaveTenantQuota(TenantQuota quota)
|
||||
@ -135,4 +130,12 @@ class DbQuotaService : IQuotaService
|
||||
|
||||
return q.ProjectTo<TenantQuotaRow>(_mapper.ConfigurationProvider).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public static class DbQuotaServiceExtensions
|
||||
{
|
||||
public static void Register(DIHelper services)
|
||||
{
|
||||
services.TryAdd<TenantQuotaPriceResolver>();
|
||||
}
|
||||
}
|
||||
|
@ -24,10 +24,6 @@
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
using ASC.Core.Common.EF;
|
||||
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace ASC.Core.Data;
|
||||
|
||||
[Scope]
|
||||
@ -212,16 +208,16 @@ public class EFUserService : IUserService
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public IQueryable<UserInfo> GetUsers(int tenant, bool isDocSpaceAdmin, EmployeeStatus? employeeStatus, List<List<Guid>> includeGroups, List<Guid> excludeGroups, EmployeeActivationStatus? activationStatus, string text, string sortBy, bool sortOrderAsc, long limit, long offset, out int total, out int count)
|
||||
public IQueryable<UserInfo> GetUsers(int tenant, bool isDocSpaceAdmin, EmployeeStatus? employeeStatus, List<List<Guid>> includeGroups, List<Guid> excludeGroups, EmployeeActivationStatus? activationStatus, AccountLoginType? accountLoginType, string text, string sortBy, bool sortOrderAsc, long limit, long offset, out int total, out int count)
|
||||
{
|
||||
var userDbContext = _dbContextFactory.CreateDbContext();
|
||||
var totalQuery = GetUserQuery(userDbContext, tenant);
|
||||
totalQuery = GetUserQueryForFilter(userDbContext, totalQuery, isDocSpaceAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, text);
|
||||
totalQuery = GetUserQueryForFilter(userDbContext, totalQuery, isDocSpaceAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, accountLoginType, text);
|
||||
total = totalQuery.Count();
|
||||
|
||||
var q = GetUserQuery(userDbContext, tenant);
|
||||
|
||||
q = GetUserQueryForFilter(userDbContext, q, isDocSpaceAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, text);
|
||||
q = GetUserQueryForFilter(userDbContext, q, isDocSpaceAdmin, employeeStatus, includeGroups, excludeGroups, activationStatus, accountLoginType, text);
|
||||
|
||||
var orderedQuery = q.OrderBy(r => r.ActivationStatus == EmployeeActivationStatus.Pending);
|
||||
q = orderedQuery;
|
||||
@ -632,6 +628,7 @@ public class EFUserService : IUserService
|
||||
List<List<Guid>> includeGroups,
|
||||
List<Guid> excludeGroups,
|
||||
EmployeeActivationStatus? activationStatus,
|
||||
AccountLoginType? accountLoginType,
|
||||
string text)
|
||||
{
|
||||
q = q.Where(r => !r.Removed);
|
||||
@ -701,6 +698,19 @@ public class EFUserService : IUserService
|
||||
u.Email.Contains(text));
|
||||
}
|
||||
|
||||
switch (accountLoginType)
|
||||
{
|
||||
case AccountLoginType.LDAP:
|
||||
q = q.Where(r => r.Sid != null);
|
||||
break;
|
||||
case AccountLoginType.SSO:
|
||||
q = q.Where(r => r.SsoNameId != null);
|
||||
break;
|
||||
case AccountLoginType.Standart:
|
||||
q = q.Where(r => r.SsoNameId == null && r.Sid == null);
|
||||
break;
|
||||
}
|
||||
|
||||
return q;
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ namespace ASC.Core.Common.EF.Context;
|
||||
public class CustomDbContext : DbContext
|
||||
{
|
||||
public DbSet<MobileAppInstall> MobileAppInstall { get; set; }
|
||||
public DbSet<DbipLocation> DbipLocation { get; set; }
|
||||
public DbSet<DbIPLookup> DbIPLookup { get; set; }
|
||||
public DbSet<Regions> Regions { get; set; }
|
||||
|
||||
public CustomDbContext(DbContextOptions<CustomDbContext> options) : base(options) { }
|
||||
@ -39,7 +39,7 @@ public class CustomDbContext : DbContext
|
||||
ModelBuilderWrapper
|
||||
.From(modelBuilder, Database)
|
||||
.AddMobileAppInstall()
|
||||
.AddDbipLocation()
|
||||
.AddDbIPLookup()
|
||||
.AddRegions();
|
||||
}
|
||||
}
|
||||
|
155
common/ASC.Core.Common/EF/Model/DbIPLookup.cs
Normal file
155
common/ASC.Core.Common/EF/Model/DbIPLookup.cs
Normal file
@ -0,0 +1,155 @@
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.Core.Common.EF.Model;
|
||||
|
||||
public class DbIPLookup
|
||||
{
|
||||
public string AddrType { get; set; } //ipv4, ipv6
|
||||
public byte[] IPStart { get; set; }
|
||||
public byte[] IPEnd { get; set; }
|
||||
public string Continent { get; set; }
|
||||
public string Country { get; set; }
|
||||
public string StateProvCode { get; set; }
|
||||
public string StateProv { get; set; }
|
||||
public string District { get; set; }
|
||||
public string City { get; set; }
|
||||
public string ZipCode { get; set; }
|
||||
public float Latitude { get; set; }
|
||||
public float Longitude { get; set; }
|
||||
public int? GeonameId { get; set; }
|
||||
public float TimezoneOffset { get; set; }
|
||||
public string TimezoneName { get; set; }
|
||||
public string WeatherCode { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public static class DbIPLookupExtension
|
||||
{
|
||||
public static ModelBuilderWrapper AddDbIPLookup(this ModelBuilderWrapper modelBuilder)
|
||||
{
|
||||
modelBuilder
|
||||
.Add(MySqlAddDbIPLookup, Provider.MySql)
|
||||
.Add(PgSqlAddDbIPLookup, Provider.PostgreSql);
|
||||
|
||||
return modelBuilder;
|
||||
}
|
||||
|
||||
public static void MySqlAddDbIPLookup(this ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<DbIPLookup>(entity =>
|
||||
{
|
||||
entity.ToTable("dbip_lookup")
|
||||
.HasCharSet("utf8mb4");
|
||||
|
||||
entity.HasKey(nameof(DbIPLookup.AddrType), nameof(DbIPLookup.IPStart));
|
||||
|
||||
entity.Property(e => e.AddrType)
|
||||
.IsRequired()
|
||||
.HasColumnName("addr_type")
|
||||
.HasColumnType("enum('ipv4','ipv6')");
|
||||
|
||||
entity.Property(e => e.IPStart)
|
||||
.IsRequired()
|
||||
.HasColumnName("ip_start")
|
||||
.HasColumnType("varbinary(16)");
|
||||
|
||||
entity.Property(e => e.IPEnd)
|
||||
.IsRequired()
|
||||
.HasColumnName("ip_end")
|
||||
.HasColumnType("varbinary(16)");
|
||||
|
||||
entity.Property(e => e.Continent)
|
||||
.IsRequired()
|
||||
.HasColumnName("continent")
|
||||
.HasColumnType("char(2)");
|
||||
|
||||
entity.Property(e => e.Country)
|
||||
.IsRequired()
|
||||
.HasColumnName("country")
|
||||
.HasColumnType("char(2)");
|
||||
|
||||
entity.Property(e => e.StateProvCode)
|
||||
.HasColumnName("stateprov_code")
|
||||
.HasColumnType("varchar(15)");
|
||||
|
||||
entity.Property(e => e.StateProv)
|
||||
.IsRequired()
|
||||
.HasColumnName("stateprov")
|
||||
.HasColumnType("varchar(80)");
|
||||
|
||||
entity.Property(e => e.District)
|
||||
.IsRequired()
|
||||
.HasColumnName("district")
|
||||
.HasColumnType("varchar(80)");
|
||||
|
||||
|
||||
entity.Property(e => e.City)
|
||||
.IsRequired()
|
||||
.HasColumnName("city")
|
||||
.HasColumnType("varchar(80)");
|
||||
|
||||
entity.Property(e => e.ZipCode)
|
||||
.HasColumnName("zipcode")
|
||||
.HasColumnType("varchar(20)");
|
||||
|
||||
entity.Property(e => e.Latitude)
|
||||
.IsRequired()
|
||||
.HasColumnName("latitude")
|
||||
.HasColumnType("float");
|
||||
|
||||
entity.Property(e => e.Longitude)
|
||||
.IsRequired()
|
||||
.HasColumnName("longitude")
|
||||
.HasColumnType("float");
|
||||
|
||||
entity.Property(e => e.GeonameId)
|
||||
.IsRequired(false)
|
||||
.HasColumnName("geoname_id")
|
||||
.HasColumnType("int(10)");
|
||||
|
||||
entity.Property(e => e.TimezoneOffset)
|
||||
.IsRequired()
|
||||
.HasColumnType("float")
|
||||
.HasColumnName("timezone_offset");
|
||||
|
||||
entity.Property(e => e.TimezoneName)
|
||||
.IsRequired()
|
||||
.HasColumnName("timezone_name")
|
||||
.HasColumnType("varchar(64)");
|
||||
|
||||
entity.Property(e => e.WeatherCode)
|
||||
.IsRequired()
|
||||
.HasColumnName("weather_code")
|
||||
.HasColumnType("varchar(10)");
|
||||
});
|
||||
|
||||
}
|
||||
public static void PgSqlAddDbIPLookup(this ModelBuilder modelBuilder)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -1,225 +0,0 @@
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.Core.Common.EF.Model;
|
||||
|
||||
public class DbipLocation
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string AddrType { get; set; }
|
||||
public string IPStart { get; set; }
|
||||
public string IPEnd { get; set; }
|
||||
public string Country { get; set; }
|
||||
public string StateProv { get; set; }
|
||||
public string District { get; set; }
|
||||
public string City { get; set; }
|
||||
public string ZipCode { get; set; }
|
||||
public long? Latitude { get; set; }
|
||||
public long? Longitude { get; set; }
|
||||
public int? GeonameId { get; set; }
|
||||
public double? TimezoneOffset { get; set; }
|
||||
public string TimezoneName { get; set; }
|
||||
public int Processed { get; set; }
|
||||
}
|
||||
|
||||
public static class DbipLocationExtension
|
||||
{
|
||||
public static ModelBuilderWrapper AddDbipLocation(this ModelBuilderWrapper modelBuilder)
|
||||
{
|
||||
modelBuilder
|
||||
.Add(MySqlAddDbipLocation, Provider.MySql)
|
||||
.Add(PgSqlAddDbipLocation, Provider.PostgreSql);
|
||||
|
||||
return modelBuilder;
|
||||
}
|
||||
|
||||
public static void MySqlAddDbipLocation(this ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<DbipLocation>(entity =>
|
||||
{
|
||||
entity.ToTable("dbip_location")
|
||||
.HasCharSet("utf8");
|
||||
|
||||
entity.HasIndex(e => e.IPStart)
|
||||
.HasDatabaseName("ip_start");
|
||||
|
||||
entity.Property(e => e.Id).HasColumnName("id");
|
||||
|
||||
entity.Property(e => e.AddrType)
|
||||
.IsRequired()
|
||||
.HasColumnName("addr_type")
|
||||
.HasColumnType("enum('ipv4','ipv6')")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.City)
|
||||
.IsRequired()
|
||||
.HasColumnName("city")
|
||||
.HasColumnType("varchar(255)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.Country)
|
||||
.IsRequired()
|
||||
.HasColumnName("country")
|
||||
.HasColumnType("varchar(2)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.District)
|
||||
.HasColumnName("district")
|
||||
.HasColumnType("varchar(255)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.GeonameId)
|
||||
.HasColumnName("geoname_id")
|
||||
.IsRequired(false)
|
||||
.HasDefaultValueSql("NULL");
|
||||
|
||||
entity.Property(e => e.IPEnd)
|
||||
.IsRequired()
|
||||
.HasColumnName("ip_end")
|
||||
.HasColumnType("varchar(39)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.IPStart)
|
||||
.IsRequired()
|
||||
.HasColumnName("ip_start")
|
||||
.HasColumnType("varchar(39)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.Latitude)
|
||||
.HasColumnName("latitude")
|
||||
.HasColumnType("float")
|
||||
.IsRequired(false)
|
||||
.HasDefaultValueSql("NULL");
|
||||
|
||||
entity.Property(e => e.Longitude)
|
||||
.HasColumnName("longitude")
|
||||
.HasColumnType("float")
|
||||
.IsRequired(false)
|
||||
.HasDefaultValueSql("NULL");
|
||||
|
||||
entity.Property(e => e.Processed)
|
||||
.HasColumnName("processed")
|
||||
.HasDefaultValueSql("'1'");
|
||||
|
||||
entity.Property(e => e.StateProv)
|
||||
.IsRequired()
|
||||
.HasColumnName("stateprov")
|
||||
.HasColumnType("varchar(255)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.TimezoneName)
|
||||
.HasColumnName("timezone_name")
|
||||
.HasColumnType("varchar(255)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.TimezoneOffset)
|
||||
.HasColumnType("int")
|
||||
.HasColumnName("timezone_offset")
|
||||
.IsRequired(false)
|
||||
.HasDefaultValueSql("NULL");
|
||||
|
||||
entity.Property(e => e.ZipCode)
|
||||
.HasColumnName("zipcode")
|
||||
.HasColumnType("varchar(255)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
});
|
||||
|
||||
}
|
||||
public static void PgSqlAddDbipLocation(this ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.HasPostgresEnum("onlyoffice", "enum_dbip_location", new[] { "ipv4", "ipv6" });
|
||||
modelBuilder.Entity<DbipLocation>(entity =>
|
||||
{
|
||||
entity.ToTable("dbip_location", "onlyoffice");
|
||||
|
||||
entity.HasIndex(e => e.IPStart)
|
||||
.HasDatabaseName("ip_start");
|
||||
|
||||
entity.Property(e => e.Id).HasColumnName("id");
|
||||
|
||||
entity.Property(e => e.City)
|
||||
.IsRequired()
|
||||
.HasColumnName("city")
|
||||
.HasMaxLength(255);
|
||||
|
||||
entity.Property(e => e.Country)
|
||||
.IsRequired()
|
||||
.HasColumnName("country")
|
||||
.HasMaxLength(2);
|
||||
|
||||
entity.Property(e => e.District)
|
||||
.HasColumnName("district")
|
||||
.HasMaxLength(255)
|
||||
.HasDefaultValueSql("NULL");
|
||||
|
||||
entity.Property(e => e.GeonameId).HasColumnName("geoname_id");
|
||||
|
||||
entity.Property(e => e.IPEnd)
|
||||
.IsRequired()
|
||||
.HasColumnName("ip_end")
|
||||
.HasMaxLength(39);
|
||||
|
||||
entity.Property(e => e.IPStart)
|
||||
.IsRequired()
|
||||
.HasColumnName("ip_start")
|
||||
.HasMaxLength(39);
|
||||
|
||||
entity.Property(e => e.Latitude).HasColumnName("latitude");
|
||||
|
||||
entity.Property(e => e.Longitude).HasColumnName("longitude");
|
||||
|
||||
entity.Property(e => e.Processed)
|
||||
.HasColumnName("processed")
|
||||
.HasDefaultValueSql("1");
|
||||
|
||||
entity.Property(e => e.StateProv)
|
||||
.IsRequired()
|
||||
.HasColumnName("stateprov")
|
||||
.HasMaxLength(255);
|
||||
|
||||
entity.Property(e => e.TimezoneName)
|
||||
.HasColumnName("timezone_name")
|
||||
.HasMaxLength(255)
|
||||
.HasDefaultValueSql("NULL");
|
||||
|
||||
entity.Property(e => e.TimezoneOffset).HasColumnName("timezone_offset");
|
||||
|
||||
entity.Property(e => e.ZipCode)
|
||||
.HasColumnName("zipcode")
|
||||
.HasMaxLength(255)
|
||||
.HasDefaultValueSql("NULL");
|
||||
});
|
||||
}
|
||||
}
|
@ -138,6 +138,26 @@ public static class FilesConvertsExtension
|
||||
new FilesConverts { Input = ".dotx", Output = ".html" },
|
||||
new FilesConverts { Input = ".dotx", Output = ".ott" },
|
||||
|
||||
new FilesConverts { Input = ".dps", Output = ".odp" },
|
||||
new FilesConverts { Input = ".dps", Output = ".otp" },
|
||||
new FilesConverts { Input = ".dps", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".dps", Output = ".potm" },
|
||||
new FilesConverts { Input = ".dps", Output = ".potx" },
|
||||
new FilesConverts { Input = ".dps", Output = ".ppsm" },
|
||||
new FilesConverts { Input = ".dps", Output = ".ppsx" },
|
||||
new FilesConverts { Input = ".dps", Output = ".pptm" },
|
||||
new FilesConverts { Input = ".dps", Output = ".pptx" },
|
||||
|
||||
new FilesConverts { Input = ".dpt", Output = ".odp" },
|
||||
new FilesConverts { Input = ".dpt", Output = ".otp" },
|
||||
new FilesConverts { Input = ".dpt", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".dpt", Output = ".potm" },
|
||||
new FilesConverts { Input = ".dpt", Output = ".potx" },
|
||||
new FilesConverts { Input = ".dpt", Output = ".ppsm" },
|
||||
new FilesConverts { Input = ".dpt", Output = ".ppsx" },
|
||||
new FilesConverts { Input = ".dpt", Output = ".pptm" },
|
||||
new FilesConverts { Input = ".dpt", Output = ".pptx" },
|
||||
|
||||
new FilesConverts { Input = ".epub", Output = ".docx" },
|
||||
new FilesConverts { Input = ".epub", Output = ".odt" },
|
||||
new FilesConverts { Input = ".epub", Output = ".pdf" },
|
||||
@ -150,6 +170,24 @@ public static class FilesConvertsExtension
|
||||
new FilesConverts { Input = ".epub", Output = ".html" },
|
||||
new FilesConverts { Input = ".epub", Output = ".ott" },
|
||||
|
||||
new FilesConverts { Input = ".et", Output = ".csv" },
|
||||
new FilesConverts { Input = ".et", Output = ".ods" },
|
||||
new FilesConverts { Input = ".et", Output = ".ots" },
|
||||
new FilesConverts { Input = ".et", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".et", Output = ".xlsm" },
|
||||
new FilesConverts { Input = ".et", Output = ".xlsx" },
|
||||
new FilesConverts { Input = ".et", Output = ".xltm" },
|
||||
new FilesConverts { Input = ".et", Output = ".xltx" },
|
||||
|
||||
new FilesConverts { Input = ".ett", Output = ".csv" },
|
||||
new FilesConverts { Input = ".ett", Output = ".ods" },
|
||||
new FilesConverts { Input = ".ett", Output = ".ots" },
|
||||
new FilesConverts { Input = ".ett", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".ett", Output = ".xlsm" },
|
||||
new FilesConverts { Input = ".ett", Output = ".xlsx" },
|
||||
new FilesConverts { Input = ".ett", Output = ".xltm" },
|
||||
new FilesConverts { Input = ".ett", Output = ".xltx" },
|
||||
|
||||
new FilesConverts { Input = ".fb2", Output = ".docx" },
|
||||
new FilesConverts { Input = ".fb2", Output = ".odt" },
|
||||
new FilesConverts { Input = ".fb2", Output = ".pdf" },
|
||||
@ -192,6 +230,19 @@ public static class FilesConvertsExtension
|
||||
new FilesConverts { Input = ".fodt", Output = ".html" },
|
||||
new FilesConverts { Input = ".fodt", Output = ".ott" },
|
||||
|
||||
new FilesConverts { Input = ".htm", Output = ".docm" },
|
||||
new FilesConverts { Input = ".htm", Output = ".docx" },
|
||||
new FilesConverts { Input = ".htm", Output = ".dotm" },
|
||||
new FilesConverts { Input = ".htm", Output = ".dotx" },
|
||||
new FilesConverts { Input = ".htm", Output = ".epub" },
|
||||
new FilesConverts { Input = ".htm", Output = ".fb2" },
|
||||
new FilesConverts { Input = ".htm", Output = ".html" },
|
||||
new FilesConverts { Input = ".htm", Output = ".odt" },
|
||||
new FilesConverts { Input = ".htm", Output = ".ott" },
|
||||
new FilesConverts { Input = ".htm", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".htm", Output = ".rtf" },
|
||||
new FilesConverts { Input = ".htm", Output = ".txt" },
|
||||
|
||||
new FilesConverts { Input = ".html", Output = ".docx" },
|
||||
new FilesConverts { Input = ".html", Output = ".odt" },
|
||||
new FilesConverts { Input = ".html", Output = ".pdf" },
|
||||
@ -214,8 +265,22 @@ public static class FilesConvertsExtension
|
||||
new FilesConverts { Input = ".mht", Output = ".dotx" },
|
||||
new FilesConverts { Input = ".mht", Output = ".epub" },
|
||||
new FilesConverts { Input = ".mht", Output = ".fb2" },
|
||||
new FilesConverts { Input = ".mht", Output = ".html" },
|
||||
new FilesConverts { Input = ".mht", Output = ".ott" },
|
||||
|
||||
new FilesConverts { Input = ".mhtml", Output = ".docm" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".docx" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".dotm" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".dotx" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".epub" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".fb2" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".html" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".odt" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".ott" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".rtf" },
|
||||
new FilesConverts { Input = ".mhtml", Output = ".txt" },
|
||||
|
||||
new FilesConverts { Input = ".odp", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".odp", Output = ".pptx" },
|
||||
new FilesConverts { Input = ".odp", Output = ".otp" },
|
||||
@ -397,6 +462,51 @@ public static class FilesConvertsExtension
|
||||
new FilesConverts { Input = ".rtf", Output = ".html" },
|
||||
new FilesConverts { Input = ".rtf", Output = ".ott" },
|
||||
|
||||
new FilesConverts { Input = ".stw", Output = ".docm" },
|
||||
new FilesConverts { Input = ".stw", Output = ".docx" },
|
||||
new FilesConverts { Input = ".stw", Output = ".dotm" },
|
||||
new FilesConverts { Input = ".stw", Output = ".dotx" },
|
||||
new FilesConverts { Input = ".stw", Output = ".epub" },
|
||||
new FilesConverts { Input = ".stw", Output = ".fb2" },
|
||||
new FilesConverts { Input = ".stw", Output = ".html" },
|
||||
new FilesConverts { Input = ".stw", Output = ".odt" },
|
||||
new FilesConverts { Input = ".stw", Output = ".ott" },
|
||||
new FilesConverts { Input = ".stw", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".stw", Output = ".rtf" },
|
||||
new FilesConverts { Input = ".stw", Output = ".txt" },
|
||||
|
||||
new FilesConverts { Input = ".sxc", Output = ".csv" },
|
||||
new FilesConverts { Input = ".sxc", Output = ".ods" },
|
||||
new FilesConverts { Input = ".sxc", Output = ".ots" },
|
||||
new FilesConverts { Input = ".sxc", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".sxc", Output = ".xlsm" },
|
||||
new FilesConverts { Input = ".sxc", Output = ".xlsx" },
|
||||
new FilesConverts { Input = ".sxc", Output = ".xltm" },
|
||||
new FilesConverts { Input = ".sxc", Output = ".xltx" },
|
||||
|
||||
new FilesConverts { Input = ".sxi", Output = ".odp" },
|
||||
new FilesConverts { Input = ".sxi", Output = ".otp" },
|
||||
new FilesConverts { Input = ".sxi", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".sxi", Output = ".potm" },
|
||||
new FilesConverts { Input = ".sxi", Output = ".potx" },
|
||||
new FilesConverts { Input = ".sxi", Output = ".ppsm" },
|
||||
new FilesConverts { Input = ".sxi", Output = ".ppsx" },
|
||||
new FilesConverts { Input = ".sxi", Output = ".pptm" },
|
||||
new FilesConverts { Input = ".sxi", Output = ".pptx" },
|
||||
|
||||
new FilesConverts { Input = ".sxw", Output = ".docm" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".docx" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".dotm" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".dotx" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".epub" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".fb2" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".html" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".odt" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".ott" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".rtf" },
|
||||
new FilesConverts { Input = ".sxw", Output = ".txt" },
|
||||
|
||||
new FilesConverts { Input = ".txt", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".txt", Output = ".docx" },
|
||||
new FilesConverts { Input = ".txt", Output = ".odt" },
|
||||
@ -409,6 +519,32 @@ public static class FilesConvertsExtension
|
||||
new FilesConverts { Input = ".txt", Output = ".html" },
|
||||
new FilesConverts { Input = ".txt", Output = ".ott" },
|
||||
|
||||
new FilesConverts { Input = ".wps", Output = ".docm" },
|
||||
new FilesConverts { Input = ".wps", Output = ".docx" },
|
||||
new FilesConverts { Input = ".wps", Output = ".dotm" },
|
||||
new FilesConverts { Input = ".wps", Output = ".dotx" },
|
||||
new FilesConverts { Input = ".wps", Output = ".epub" },
|
||||
new FilesConverts { Input = ".wps", Output = ".fb2" },
|
||||
new FilesConverts { Input = ".wps", Output = ".html" },
|
||||
new FilesConverts { Input = ".wps", Output = ".odt" },
|
||||
new FilesConverts { Input = ".wps", Output = ".ott" },
|
||||
new FilesConverts { Input = ".wps", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".wps", Output = ".rtf" },
|
||||
new FilesConverts { Input = ".wps", Output = ".txt" },
|
||||
|
||||
new FilesConverts { Input = ".wpt", Output = ".docm" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".docx" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".dotm" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".dotx" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".epub" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".fb2" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".html" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".odt" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".ott" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".rtf" },
|
||||
new FilesConverts { Input = ".wpt", Output = ".txt" },
|
||||
|
||||
new FilesConverts { Input = ".xls", Output = ".csv" },
|
||||
new FilesConverts { Input = ".xls", Output = ".ods" },
|
||||
new FilesConverts { Input = ".xls", Output = ".pdf" },
|
||||
@ -418,6 +554,15 @@ public static class FilesConvertsExtension
|
||||
new FilesConverts { Input = ".xls", Output = ".xltm" },
|
||||
new FilesConverts { Input = ".xls", Output = ".xltx" },
|
||||
|
||||
new FilesConverts { Input = ".xlsb", Output = ".csv" },
|
||||
new FilesConverts { Input = ".xlsb", Output = ".ods" },
|
||||
new FilesConverts { Input = ".xlsb", Output = ".ots" },
|
||||
new FilesConverts { Input = ".xlsb", Output = ".pdf" },
|
||||
new FilesConverts { Input = ".xlsb", Output = ".xlsm" },
|
||||
new FilesConverts { Input = ".xlsb", Output = ".xlsx" },
|
||||
new FilesConverts { Input = ".xlsb", Output = ".xltm" },
|
||||
new FilesConverts { Input = ".xlsb", Output = ".xltx" },
|
||||
|
||||
new FilesConverts { Input = ".xlsm", Output = ".csv" },
|
||||
new FilesConverts { Input = ".xlsm", Output = ".xltm" },
|
||||
new FilesConverts { Input = ".xlsm", Output = ".xltx" },
|
||||
@ -492,23 +637,23 @@ public static class FilesConvertsExtension
|
||||
{
|
||||
modelBuilder.Entity<FilesConverts>(entity =>
|
||||
{
|
||||
entity.HasKey(e => new { e.Input, e.Output })
|
||||
.HasName("PRIMARY");
|
||||
entity.HasKey(e => new { e.Input, e.Output })
|
||||
.HasName("PRIMARY");
|
||||
|
||||
entity.ToTable("files_converts")
|
||||
.HasCharSet("utf8");
|
||||
entity.ToTable("files_converts")
|
||||
.HasCharSet("utf8");
|
||||
|
||||
entity.Property(e => e.Input)
|
||||
.HasColumnName("input")
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
entity.Property(e => e.Input)
|
||||
.HasColumnName("input")
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
|
||||
entity.Property(e => e.Output)
|
||||
.HasColumnName("output")
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
entity.Property(e => e.Output)
|
||||
.HasColumnName("output")
|
||||
.HasColumnType("varchar(50)")
|
||||
.HasCharSet("utf8")
|
||||
.UseCollation("utf8_general_ci");
|
||||
});
|
||||
}
|
||||
public static void PgSqlAddFilesConverts(this ModelBuilder modelBuilder)
|
||||
|
@ -26,45 +26,70 @@
|
||||
|
||||
namespace ASC.Geolocation;
|
||||
|
||||
// hack for EF Core
|
||||
public static class EntityFrameworkHelper
|
||||
{
|
||||
public static int Compare(this byte[] b1, byte[] b2)
|
||||
{
|
||||
throw new Exception("This method can only be used in EF LINQ Context");
|
||||
}
|
||||
}
|
||||
|
||||
[Scope]
|
||||
public class GeolocationHelper
|
||||
{
|
||||
private readonly CreatorDbContext _creatorDbContext;
|
||||
private readonly IDbContextFactory<CustomDbContext> _dbContextFactory;
|
||||
private readonly ILogger<GeolocationHelper> _logger;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
private readonly ICache _cache;
|
||||
|
||||
public GeolocationHelper(
|
||||
CreatorDbContext creatorDbContext,
|
||||
IDbContextFactory<CustomDbContext> dbContextFactory,
|
||||
ILogger<GeolocationHelper> logger,
|
||||
IHttpContextAccessor httpContextAccessor)
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
ICache cache)
|
||||
{
|
||||
_creatorDbContext = creatorDbContext;
|
||||
_dbContextFactory = dbContextFactory;
|
||||
_logger = logger;
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
_cache = cache;
|
||||
}
|
||||
|
||||
public IPGeolocationInfo GetIPGeolocation(string ip)
|
||||
public IPGeolocationInfo GetIPGeolocation(IPAddress address)
|
||||
{
|
||||
try
|
||||
{
|
||||
using var dbContext = _creatorDbContext.CreateDbContext<CustomDbContext>(nameConnectionString: "teamlabsite");
|
||||
var ipformatted = FormatIP(ip);
|
||||
var q = dbContext.DbipLocation
|
||||
.Where(r => r.IPStart.CompareTo(ipformatted) <= 0)
|
||||
.Where(r => ipformatted.CompareTo(r.IPEnd) <= 0)
|
||||
|
||||
var cacheKey = $"ip_geolocation_info_${address}";
|
||||
var fromCache = _cache.Get<IPGeolocationInfo>(cacheKey);
|
||||
|
||||
if (fromCache != null) return fromCache;
|
||||
|
||||
using var dbContext = _dbContextFactory.CreateDbContext();
|
||||
|
||||
var addrType = address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork ? "ipv4" : "ipv6";
|
||||
|
||||
var result = dbContext.DbIPLookup
|
||||
.Where(r => r.AddrType == addrType && r.IPStart.Compare(address.GetAddressBytes()) <= 0)
|
||||
.OrderByDescending(r => r.IPStart)
|
||||
.Select(r => new IPGeolocationInfo
|
||||
{
|
||||
City = r.City,
|
||||
IPEnd = r.IPEnd,
|
||||
IPStart = r.IPStart,
|
||||
IPEnd = new IPAddress(r.IPEnd),
|
||||
IPStart = new IPAddress(r.IPStart),
|
||||
Key = r.Country,
|
||||
TimezoneOffset = r.TimezoneOffset ?? 0,
|
||||
TimezoneName = r.TimezoneName
|
||||
TimezoneOffset = r.TimezoneOffset,
|
||||
TimezoneName = r.TimezoneName,
|
||||
Continent = r.Continent
|
||||
})
|
||||
.FirstOrDefault();
|
||||
|
||||
return q ?? IPGeolocationInfo.Default;
|
||||
if (result != null)
|
||||
{
|
||||
_cache.Insert(cacheKey, result, TimeSpan.FromSeconds(15));
|
||||
}
|
||||
|
||||
return result ?? IPGeolocationInfo.Default;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
@ -80,48 +105,14 @@ public class GeolocationHelper
|
||||
{
|
||||
var ip = _httpContextAccessor.HttpContext.Connection.RemoteIpAddress;
|
||||
|
||||
if (ip != IPAddress.Loopback)
|
||||
if (!ip.Equals(IPAddress.Loopback))
|
||||
{
|
||||
_logger.DebugRemoteIpAddress(ip.ToString());
|
||||
|
||||
return GetIPGeolocation(ip.ToString());
|
||||
return GetIPGeolocation(ip);
|
||||
}
|
||||
}
|
||||
|
||||
return IPGeolocationInfo.Default;
|
||||
}
|
||||
|
||||
private static string FormatIP(string ip)
|
||||
{
|
||||
ip = (ip ?? "").Trim();
|
||||
if (ip.Contains('.'))
|
||||
{
|
||||
//ip v4
|
||||
if (ip.Length == 15)
|
||||
{
|
||||
return ip;
|
||||
}
|
||||
|
||||
return string.Join(".", ip.Split(':')[0].Split('.').Select(s => ("00" + s).Substring(s.Length - 1)).ToArray());
|
||||
}
|
||||
else if (ip.Contains(':'))
|
||||
{
|
||||
//ip v6
|
||||
if (ip.Length == 39)
|
||||
{
|
||||
return ip;
|
||||
}
|
||||
var index = ip.IndexOf("::");
|
||||
if (0 <= index)
|
||||
{
|
||||
ip = ip.Insert(index + 2, new string(':', 8 - ip.Split(':').Length));
|
||||
}
|
||||
|
||||
return string.Join(":", ip.Split(':').Select(s => ("0000" + s).Substring(s.Length)).ToArray());
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException("Unknown ip " + ip);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -93,21 +93,24 @@ public class RegisterInstanceWorkerService<T> : BackgroundService where T : IHos
|
||||
}
|
||||
}
|
||||
public override async Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var scope = _serviceProvider.CreateAsyncScope();
|
||||
|
||||
var registerInstanceService = scope.ServiceProvider.GetService<IRegisterInstanceManager<T>>();
|
||||
|
||||
await registerInstanceService.UnRegister(InstanceId);
|
||||
{
|
||||
if (!_isSingletoneMode)
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var scope = _serviceProvider.CreateAsyncScope();
|
||||
|
||||
_logger.InformationUnRegister(InstanceId, DateTimeOffset.Now);
|
||||
}
|
||||
catch
|
||||
{
|
||||
_logger.ErrorUnableToUnRegister(InstanceId, DateTimeOffset.Now);
|
||||
}
|
||||
var registerInstanceService = scope.ServiceProvider.GetService<IRegisterInstanceManager<T>>();
|
||||
|
||||
await registerInstanceService.UnRegister(InstanceId);
|
||||
|
||||
_logger.InformationUnRegister(InstanceId, DateTimeOffset.Now);
|
||||
}
|
||||
catch
|
||||
{
|
||||
_logger.ErrorUnableToUnRegister(InstanceId, DateTimeOffset.Now);
|
||||
}
|
||||
}
|
||||
|
||||
await base.StopAsync(cancellationToken);
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
namespace ASC.Core.Common.Log;
|
||||
internal static partial class GeolocationHelperLogger
|
||||
{
|
||||
[LoggerMessage(Level = LogLevel.Error, Message = "This is remote ip address {remoteIp}")]
|
||||
[LoggerMessage(Level = LogLevel.Debug, Message = "This is remote ip address {remoteIp}")]
|
||||
public static partial void DebugRemoteIpAddress(this ILogger<GeolocationHelper> logger, string remoteIp);
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Error, Message = "GetIPGeolocation")]
|
||||
|
@ -64,275 +64,6 @@ public enum MessageAction
|
||||
|
||||
#endregion
|
||||
|
||||
#region Projects
|
||||
|
||||
ProjectCreated = 2000,
|
||||
ProjectCreatedFromTemplate = 2001,
|
||||
ProjectUpdated = 2002,
|
||||
ProjectUpdatedStatus = 2003,
|
||||
ProjectFollowed = 2004,
|
||||
ProjectUnfollowed = 2005,
|
||||
ProjectDeleted = 2006,
|
||||
|
||||
ProjectDeletedMember = 2007,
|
||||
ProjectUpdatedTeam = 2008,
|
||||
ProjectUpdatedMemberRights = 2009,
|
||||
|
||||
ProjectLinkedCompany = 2010,
|
||||
ProjectUnlinkedCompany = 2011,
|
||||
ProjectLinkedPerson = 2012,
|
||||
ProjectUnlinkedPerson = 2013,
|
||||
ProjectLinkedContacts = 2014,
|
||||
|
||||
MilestoneCreated = 2015,
|
||||
MilestoneUpdated = 2016,
|
||||
MilestoneUpdatedStatus = 2017,
|
||||
MilestoneDeleted = 2018,
|
||||
|
||||
TaskCreated = 2019,
|
||||
TaskCreatedFromDiscussion = 2020,
|
||||
TaskUpdated = 2021,
|
||||
TaskUpdatedStatus = 2022,
|
||||
TaskMovedToMilestone = 2023,
|
||||
TaskUnlinkedMilestone = 2024,
|
||||
TaskUpdatedFollowing = 2025,
|
||||
TaskAttachedFiles = 2026,
|
||||
TaskDetachedFile = 2027,
|
||||
TasksLinked = 2028,
|
||||
TasksUnlinked = 2029,
|
||||
TaskDeleted = 2030,
|
||||
|
||||
TaskCommentCreated = 2031,
|
||||
TaskCommentUpdated = 2032,
|
||||
TaskCommentDeleted = 2033,
|
||||
|
||||
SubtaskCreated = 2034,
|
||||
SubtaskUpdated = 2035,
|
||||
SubtaskUpdatedStatus = 2036,
|
||||
SubtaskDeleted = 2037,
|
||||
SubtaskMoved = 2058,
|
||||
|
||||
DiscussionCreated = 2038,
|
||||
DiscussionUpdated = 2039,
|
||||
DiscussionUpdatedFollowing = 2040,
|
||||
DiscussionAttachedFiles = 2041,
|
||||
DiscussionDetachedFile = 2042,
|
||||
DiscussionDeleted = 2043,
|
||||
|
||||
DiscussionCommentCreated = 2044,
|
||||
DiscussionCommentUpdated = 2045,
|
||||
DiscussionCommentDeleted = 2046,
|
||||
|
||||
TaskTimeCreated = 2047,
|
||||
TaskTimeUpdated = 2048,
|
||||
TaskTimesUpdatedStatus = 2049,
|
||||
TaskTimesDeleted = 2050,
|
||||
|
||||
ReportTemplateCreated = 2051,
|
||||
ReportTemplateUpdated = 2052,
|
||||
ReportTemplateDeleted = 2053,
|
||||
|
||||
ProjectTemplateCreated = 2054,
|
||||
ProjectTemplateUpdated = 2055,
|
||||
ProjectTemplateDeleted = 2056,
|
||||
|
||||
ProjectsImportedFromBasecamp = 2057,
|
||||
|
||||
#endregion
|
||||
|
||||
#region CRM
|
||||
|
||||
CompanyCreated = 3000,
|
||||
CompanyCreatedWithWebForm = 3157,
|
||||
CompanyUpdated = 3001,
|
||||
CompanyUpdatedPrincipalInfo = 3002,
|
||||
CompanyUpdatedPhoto = 3003,
|
||||
CompanyUpdatedTemperatureLevel = 3004,
|
||||
CompanyUpdatedPersonsTemperatureLevel = 3005,
|
||||
CompanyCreatedTag = 3006,
|
||||
CompanyCreatedPersonsTag = 3007,
|
||||
CompanyDeletedTag = 3008,
|
||||
CompanyCreatedHistoryEvent = 3009,
|
||||
CompanyDeletedHistoryEvent = 3010,
|
||||
CompanyLinkedPerson = 3011,
|
||||
CompanyUnlinkedPerson = 3012,
|
||||
CompanyLinkedProject = 3013,
|
||||
CompanyUnlinkedProject = 3014,
|
||||
CompanyAttachedFiles = 3015,
|
||||
CompanyDetachedFile = 3159,
|
||||
CompaniesMerged = 3016,
|
||||
CompanyDeleted = 3017,
|
||||
|
||||
PersonCreated = 3018,
|
||||
PersonCreatedWithWebForm = 3158,
|
||||
PersonsCreated = 3019,
|
||||
PersonUpdated = 3020,
|
||||
PersonUpdatedPrincipalInfo = 3021,
|
||||
PersonUpdatedPhoto = 3022,
|
||||
PersonUpdatedTemperatureLevel = 3023,
|
||||
PersonUpdatedCompanyTemperatureLevel = 3024,
|
||||
PersonCreatedTag = 3025,
|
||||
PersonCreatedCompanyTag = 3026,
|
||||
PersonDeletedTag = 3027,
|
||||
PersonCreatedHistoryEvent = 3028,
|
||||
PersonDeletedHistoryEvent = 3029,
|
||||
PersonLinkedProject = 3030,
|
||||
PersonUnlinkedProject = 3031,
|
||||
PersonAttachedFiles = 3032,
|
||||
PersonDetachedFile = 3160,
|
||||
PersonsMerged = 3033,
|
||||
PersonDeleted = 3034,
|
||||
|
||||
ContactsDeleted = 3035,
|
||||
|
||||
CrmTaskCreated = 3036,
|
||||
ContactsCreatedCrmTasks = 3037,
|
||||
CrmTaskUpdated = 3038,
|
||||
CrmTaskOpened = 3039,
|
||||
CrmTaskClosed = 3040,
|
||||
CrmTaskDeleted = 3041,
|
||||
|
||||
OpportunityCreated = 3042,
|
||||
OpportunityUpdated = 3043,
|
||||
OpportunityUpdatedStage = 3044,
|
||||
OpportunityCreatedTag = 3045,
|
||||
OpportunityDeletedTag = 3046,
|
||||
OpportunityCreatedHistoryEvent = 3047,
|
||||
OpportunityDeletedHistoryEvent = 3048,
|
||||
OpportunityLinkedCompany = 3049,
|
||||
OpportunityUnlinkedCompany = 3050,
|
||||
OpportunityLinkedPerson = 3051,
|
||||
OpportunityUnlinkedPerson = 3052,
|
||||
OpportunityAttachedFiles = 3053,
|
||||
OpportunityDetachedFile = 3161,
|
||||
OpportunityOpenedAccess = 3054,
|
||||
OpportunityRestrictedAccess = 3055,
|
||||
OpportunityDeleted = 3056,
|
||||
OpportunitiesDeleted = 3057,
|
||||
|
||||
InvoiceCreated = 3058,
|
||||
InvoiceUpdated = 3059,
|
||||
InvoicesUpdatedStatus = 3060,
|
||||
InvoiceDeleted = 3061,
|
||||
InvoicesDeleted = 3062,
|
||||
|
||||
CaseCreated = 3063,
|
||||
CaseUpdated = 3064,
|
||||
CaseOpened = 3065,
|
||||
CaseClosed = 3066,
|
||||
CaseCreatedTag = 3067,
|
||||
CaseDeletedTag = 3068,
|
||||
CaseCreatedHistoryEvent = 3069,
|
||||
CaseDeletedHistoryEvent = 3070,
|
||||
CaseLinkedCompany = 3071,
|
||||
CaseUnlinkedCompany = 3072,
|
||||
CaseLinkedPerson = 3073,
|
||||
CaseUnlinkedPerson = 3074,
|
||||
CaseAttachedFiles = 3075,
|
||||
CaseDetachedFile = 3162,
|
||||
CaseOpenedAccess = 3076,
|
||||
CaseRestrictedAccess = 3077,
|
||||
CaseDeleted = 3078,
|
||||
CasesDeleted = 3079,
|
||||
|
||||
CrmSmtpSettingsUpdated = 3080,
|
||||
CrmTestMailSent = 3081,
|
||||
CrmDefaultCurrencyUpdated = 3082,
|
||||
CrmAllDataExported = 3083,
|
||||
|
||||
ContactTemperatureLevelCreated = 3084,
|
||||
ContactTemperatureLevelUpdated = 3085,
|
||||
ContactTemperatureLevelUpdatedColor = 3086,
|
||||
ContactTemperatureLevelsUpdatedOrder = 3087,
|
||||
ContactTemperatureLevelDeleted = 3088,
|
||||
ContactTemperatureLevelSettingsUpdated = 3089,
|
||||
|
||||
ContactTypeCreated = 3090,
|
||||
ContactTypeUpdated = 3091,
|
||||
ContactTypesUpdatedOrder = 3092,
|
||||
ContactTypeDeleted = 3093,
|
||||
|
||||
InvoiceItemCreated = 3094,
|
||||
InvoiceItemUpdated = 3095,
|
||||
InvoiceItemDeleted = 3096,
|
||||
InvoiceItemsDeleted = 3097,
|
||||
|
||||
InvoiceTaxCreated = 3098,
|
||||
InvoiceTaxUpdated = 3099,
|
||||
InvoiceTaxDeleted = 3100,
|
||||
|
||||
CurrencyRateUpdated = 3163,
|
||||
InvoiceDefaultTermsUpdated = 3164,
|
||||
InvoiceDownloaded = 3165,
|
||||
CrmSmtpMailSent = 3166,
|
||||
|
||||
OrganizationProfileUpdatedCompanyName = 3101,
|
||||
OrganizationProfileUpdatedInvoiceLogo = 3102,
|
||||
OrganizationProfileUpdatedAddress = 3103,
|
||||
|
||||
InvoiceNumberFormatUpdated = 3104,
|
||||
|
||||
ContactUserFieldCreated = 3105,
|
||||
ContactUserFieldUpdated = 3106,
|
||||
ContactUserFieldsUpdatedOrder = 3107,
|
||||
ContactUserFieldDeleted = 3108,
|
||||
CompanyUserFieldCreated = 3109,
|
||||
CompanyUserFieldUpdated = 3110,
|
||||
CompanyUserFieldsUpdatedOrder = 3111,
|
||||
CompanyUserFieldDeleted = 3112,
|
||||
PersonUserFieldCreated = 3113,
|
||||
PersonUserFieldUpdated = 3114,
|
||||
PersonUserFieldsUpdatedOrder = 3115,
|
||||
PersonUserFieldDeleted = 3116,
|
||||
OpportunityUserFieldCreated = 3117,
|
||||
OpportunityUserFieldUpdated = 3118,
|
||||
OpportunityUserFieldsUpdatedOrder = 3119,
|
||||
OpportunityUserFieldDeleted = 3120,
|
||||
CaseUserFieldCreated = 3121,
|
||||
CaseUserFieldUpdated = 3122,
|
||||
CaseUserFieldsUpdatedOrder = 3123,
|
||||
CaseUserFieldDeleted = 3124,
|
||||
|
||||
HistoryEventCategoryCreated = 3125,
|
||||
HistoryEventCategoryUpdated = 3126,
|
||||
HistoryEventCategoryUpdatedIcon = 3127,
|
||||
HistoryEventCategoriesUpdatedOrder = 3128,
|
||||
HistoryEventCategoryDeleted = 3129,
|
||||
|
||||
CrmTaskCategoryCreated = 3130,
|
||||
CrmTaskCategoryUpdated = 3131,
|
||||
CrmTaskCategoryUpdatedIcon = 3132,
|
||||
CrmTaskCategoriesUpdatedOrder = 3133,
|
||||
CrmTaskCategoryDeleted = 3134,
|
||||
|
||||
OpportunityStageCreated = 3135,
|
||||
OpportunityStageUpdated = 3136,
|
||||
OpportunityStageUpdatedColor = 3137,
|
||||
OpportunityStagesUpdatedOrder = 3138,
|
||||
OpportunityStageDeleted = 3139,
|
||||
|
||||
ContactsCreatedTag = 3140,
|
||||
ContactsDeletedTag = 3141,
|
||||
OpportunitiesCreatedTag = 3142,
|
||||
OpportunitiesDeletedTag = 3143,
|
||||
CasesCreatedTag = 3144,
|
||||
CasesDeletedTag = 3145,
|
||||
ContactsTagSettingsUpdated = 3146,
|
||||
|
||||
WebsiteContactFormUpdatedKey = 3147,
|
||||
|
||||
ContactsImportedFromCSV = 3148,
|
||||
CrmTasksImportedFromCSV = 3149,
|
||||
OpportunitiesImportedFromCSV = 3150,
|
||||
CasesImportedFromCSV = 3151,
|
||||
|
||||
ContactsExportedToCsv = 3152,
|
||||
CrmTasksExportedToCsv = 3153,
|
||||
OpportunitiesExportedToCsv = 3154,
|
||||
CasesExportedToCsv = 3155,
|
||||
|
||||
#endregion
|
||||
|
||||
#region People
|
||||
|
||||
UserCreated = 4000,
|
||||
@ -571,27 +302,4 @@ public enum MessageAction
|
||||
ContactSalesMailSent = 7004,
|
||||
|
||||
#endregion
|
||||
|
||||
#region Partners
|
||||
|
||||
AcceptRequest = 8000,
|
||||
RejectRequest = 8001,
|
||||
BlockPartner = 8002,
|
||||
UnblockPartner = 8003,
|
||||
DeletePartner = 8004,
|
||||
ChangePartner = 8005,
|
||||
ConfirmPortal = 8006,
|
||||
MarkInvoicePaid = 8007,
|
||||
MarkInvoiceUnpaid = 8008,
|
||||
AddHostedPartner = 8009,
|
||||
RemoveHostedPartner = 8010,
|
||||
MarkPartnerAuthorized = 8011,
|
||||
MarkPartnerNotAuthorized = 8012,
|
||||
ChangePartnerLevel = 8013,
|
||||
ChangeHostedPartnerQuotas = 8014,
|
||||
ChangeHostedPartner = 8015,
|
||||
BillLumpSumInvoice = 8016,
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
@ -129,37 +129,18 @@ public class AWSSender : SmtpSender, IDisposable
|
||||
}
|
||||
_semaphore.Release();
|
||||
}
|
||||
|
||||
var dest = new Destination
|
||||
{
|
||||
ToAddresses = m.Reciever.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries).Select(a => MailAddressUtils.Create(a).Address).ToList(),
|
||||
};
|
||||
|
||||
var subject = new Content(MimeHeaderUtils.EncodeMime(m.Subject)) { Charset = Encoding.UTF8.WebName, };
|
||||
|
||||
Body body;
|
||||
if (m.ContentType == Pattern.HtmlContentType)
|
||||
{
|
||||
body = new Body(new Content(HtmlUtil.GetText(m.Content)) { Charset = Encoding.UTF8.WebName })
|
||||
{
|
||||
Html = new Content(GetHtmlView(m.Content)) { Charset = Encoding.UTF8.WebName }
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
body = new Body(new Content(m.Content) { Charset = Encoding.UTF8.WebName });
|
||||
}
|
||||
|
||||
var from = MailAddressUtils.Create(m.Sender).ToEncodedString();
|
||||
var request = new SendEmailRequest { Source = from, Destination = dest, Message = new Message(subject, body) };
|
||||
if (!string.IsNullOrEmpty(m.ReplyTo))
|
||||
{
|
||||
request.ReplyToAddresses.Add(MailAddressUtils.Create(m.ReplyTo).Address);
|
||||
}
|
||||
|
||||
var message = BuildMailMessage(m);
|
||||
|
||||
using var ms = new MemoryStream();
|
||||
message.WriteTo(ms);
|
||||
|
||||
var request = new SendRawEmailRequest(new RawMessage(ms));
|
||||
|
||||
ThrottleIfNeeded();
|
||||
|
||||
var response = await _amazonEmailServiceClient.SendEmailAsync(request);
|
||||
|
||||
var response = await _amazonEmailServiceClient.SendRawEmailAsync(request);
|
||||
|
||||
_lastSend = DateTime.UtcNow;
|
||||
|
||||
return response != null ? NoticeSendResult.OK : NoticeSendResult.TryOnceAgain;
|
||||
|
@ -195,7 +195,7 @@ public class SmtpSender : INotifySender
|
||||
: null;
|
||||
}
|
||||
}
|
||||
private MimeMessage BuildMailMessage(NotifyMessage m)
|
||||
protected MimeMessage BuildMailMessage(NotifyMessage m)
|
||||
{
|
||||
var mimeMessage = new MimeMessage
|
||||
{
|
||||
|
@ -42,6 +42,7 @@ public class TenantQuota : IMapFrom<DbQuota>
|
||||
public int Tenant { get; set; }
|
||||
public string Name { get; set; }
|
||||
public decimal Price { get; set; }
|
||||
public string PriceCurrencySymbol { get; set; }
|
||||
public string ProductId { get; set; }
|
||||
public bool Visible { get; set; }
|
||||
|
||||
@ -373,7 +374,8 @@ public class TenantQuota : IMapFrom<DbQuota>
|
||||
|
||||
public void Mapping(Profile profile)
|
||||
{
|
||||
profile.CreateMap<DbQuota, TenantQuota>();
|
||||
profile.CreateMap<DbQuota, TenantQuota>()
|
||||
.ForMember(dest => dest.Price, o => o.MapFrom<TenantQuotaPriceResolver>());
|
||||
}
|
||||
|
||||
public TenantQuotaFeature<T> GetFeature<T>(string name)
|
||||
|
58
common/ASC.Core.Common/Tenants/TenantQuotaPriceResolver.cs
Normal file
58
common/ASC.Core.Common/Tenants/TenantQuotaPriceResolver.cs
Normal file
@ -0,0 +1,58 @@
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.Core.Tenants;
|
||||
|
||||
[Scope]
|
||||
internal class TenantQuotaPriceResolver : IValueResolver<DbQuota, TenantQuota, decimal>
|
||||
{
|
||||
private readonly TenantManager _tenantManager;
|
||||
private readonly RegionHelper _regionHelper;
|
||||
|
||||
public TenantQuotaPriceResolver(TenantManager tenantManager, RegionHelper regionHelper)
|
||||
{
|
||||
_tenantManager = tenantManager;
|
||||
_regionHelper = regionHelper;
|
||||
}
|
||||
|
||||
public decimal Resolve(DbQuota source, TenantQuota destination, decimal destMember, ResolutionContext context)
|
||||
{
|
||||
var priceInfo = _tenantManager.GetProductPriceInfo(source.ProductId);
|
||||
|
||||
if (priceInfo != null)
|
||||
{
|
||||
var currentRegion = _regionHelper.GetCurrentRegionInfo(new Dictionary<string, Dictionary<string, decimal>>() { { source.ProductId, priceInfo } });
|
||||
destination.PriceCurrencySymbol = currentRegion.CurrencySymbol;
|
||||
|
||||
if (priceInfo.ContainsKey(currentRegion.ISOCurrencySymbol))
|
||||
{
|
||||
return priceInfo[currentRegion.ISOCurrencySymbol];
|
||||
}
|
||||
}
|
||||
|
||||
return source.Price;
|
||||
}
|
||||
}
|
@ -22,7 +22,7 @@ namespace ASC.Data.Backup.Core {
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class BackupResource {
|
||||
internal class BackupResource {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
@ -36,7 +36,7 @@ namespace ASC.Data.Backup.Core {
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Resources.ResourceManager ResourceManager {
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ASC.Data.Backup.Core.BackupResource", typeof(BackupResource).Assembly);
|
||||
@ -51,7 +51,7 @@ namespace ASC.Data.Backup.Core {
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Globalization.CultureInfo Culture {
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
@ -63,7 +63,7 @@ namespace ASC.Data.Backup.Core {
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The backup file is invalid. Please, use a file created in ONLYOFFICE v11.5 or later..
|
||||
/// </summary>
|
||||
public static string BackupNotFound {
|
||||
internal static string BackupNotFound {
|
||||
get {
|
||||
return ResourceManager.GetString("BackupNotFound", resourceCulture);
|
||||
}
|
||||
@ -72,7 +72,7 @@ namespace ASC.Data.Backup.Core {
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Set Password.
|
||||
/// </summary>
|
||||
public static string ButtonSetPassword {
|
||||
internal static string ButtonSetPassword {
|
||||
get {
|
||||
return ResourceManager.GetString("ButtonSetPassword", resourceCulture);
|
||||
}
|
||||
|
@ -61,4 +61,7 @@
|
||||
<data name="BackupNotFound" xml:space="preserve">
|
||||
<value>Yedək faylı etibarsızdır. ONLYOFFICE v11.5 və ya daha yeni versiyada yaradılmış fayldan istifadə edin.</value>
|
||||
</data>
|
||||
<data name="ButtonSetPassword" xml:space="preserve">
|
||||
<value>Parol təyin edin</value>
|
||||
</data>
|
||||
</root>
|
@ -61,4 +61,7 @@
|
||||
<data name="BackupNotFound" xml:space="preserve">
|
||||
<value>Το αρχείο αντιγράφων ασφαλείας είναι μη έγκυρο. Παρακαλώ, χρησιμοποιείστε ένα αρχείο που έχει δημιουργηθεί σε ONLYOFFICE v11.5 ή επόμενο.</value>
|
||||
</data>
|
||||
<data name="ButtonSetPassword" xml:space="preserve">
|
||||
<value>Ορισμός Συνθηματικού</value>
|
||||
</data>
|
||||
</root>
|
@ -61,4 +61,7 @@
|
||||
<data name="BackupNotFound" xml:space="preserve">
|
||||
<value>Le fichier de sauvegarde n'est pas valide. Veuillez utiliser un fichier créé dans ONLYOFFICE v11.5 ou plus récent.</value>
|
||||
</data>
|
||||
<data name="ButtonSetPassword" xml:space="preserve">
|
||||
<value>Définir un mot de passe</value>
|
||||
</data>
|
||||
</root>
|
@ -61,4 +61,7 @@
|
||||
<data name="BackupNotFound" xml:space="preserve">
|
||||
<value>Yedekleme dosyası geçersiz. Lütfen ONLYOFFICE v11.5 veya sonraki sürümlerde oluşturulmuş bir dosya kullanın.</value>
|
||||
</data>
|
||||
<data name="ButtonSetPassword" xml:space="preserve">
|
||||
<value>Parola Belirle</value>
|
||||
</data>
|
||||
</root>
|
@ -196,7 +196,14 @@ public class NotifyHelper
|
||||
{
|
||||
args.Add(new TagValue(CommonTags.VirtualRootPath, url));
|
||||
args.Add(new TagValue(CommonTags.ProfileUrl, url + _commonLinkUtility.GetMyStaff()));
|
||||
args.Add(new TagValue(CommonTags.LetterLogo, _tenantLogoManager.GetLogoDark(false)));
|
||||
|
||||
var attachment = _tenantLogoManager.GetMailLogoAsAttacment().Result;
|
||||
|
||||
if (attachment != null)
|
||||
{
|
||||
args.Add(new TagValue(CommonTags.LetterLogo, "cid:" + attachment.ContentId));
|
||||
args.Add(new TagValue(CommonTags.EmbeddedAttachments, new[] { attachment }));
|
||||
}
|
||||
}
|
||||
|
||||
return args;
|
||||
|
@ -178,7 +178,7 @@ public class RestoreProgressItem : BaseBackupProgressItem
|
||||
restoredTenant = _tenantManager.GetTenant(columnMapper.GetTenantMapping());
|
||||
restoredTenant.SetStatus(TenantStatus.Active);
|
||||
restoredTenant.Alias = tenant.Alias;
|
||||
restoredTenant.PaymentId = string.IsNullOrEmpty(restoredTenant.PaymentId) ? _configuration["core:payment-region"] + TenantId : restoredTenant.PaymentId;
|
||||
restoredTenant.PaymentId = string.IsNullOrEmpty(restoredTenant.PaymentId) ? _configuration["core:payment:region"] + TenantId : restoredTenant.PaymentId;
|
||||
|
||||
if (string.IsNullOrEmpty(restoredTenant.MappedDomain) && !string.IsNullOrEmpty(tenant.MappedDomain))
|
||||
{
|
||||
|
@ -43,6 +43,7 @@ public class TenantsModuleSpecifics : ModuleSpecificsBase
|
||||
{
|
||||
DateColumns = new Dictionary<string, bool> {{"creationdatetime", false}, {"statuschanged", false}, {"version_changed", false}}
|
||||
},
|
||||
new TableInfo("tenants_tariffrow", "tenant") {InsertMethod = InsertMethod.Replace},
|
||||
new TableInfo("tenants_quotarow", "tenant") {InsertMethod = InsertMethod.Replace},
|
||||
new TableInfo("core_user", "tenant", "id", IdType.Guid)
|
||||
{
|
||||
@ -58,6 +59,7 @@ public class TenantsModuleSpecifics : ModuleSpecificsBase
|
||||
new RelationInfo("tenants_tenants", "id", "tenants_quota", "tenant"),
|
||||
new RelationInfo("tenants_tenants", "id", "tenants_tariff", "tenant"),
|
||||
new RelationInfo("tenants_tenants", "id", "tenants_tariff", "tariff"),
|
||||
new RelationInfo("tenants_tariff", "id", "tenants_tariffrow", "tariff_id"),
|
||||
new RelationInfo("core_user", "id", "tenants_tenants", "owner_id", null, null, RelationImportance.Low)
|
||||
};
|
||||
|
||||
|
@ -68,8 +68,13 @@ public class DefaultRabbitMQPersistentConnection
|
||||
return;
|
||||
}
|
||||
|
||||
_disposed = true;
|
||||
|
||||
_disposed = true;
|
||||
|
||||
DisposeConnection();
|
||||
}
|
||||
|
||||
private void DisposeConnection()
|
||||
{
|
||||
try
|
||||
{
|
||||
_connection.ConnectionShutdown -= OnConnectionShutdown;
|
||||
@ -80,8 +85,8 @@ public class DefaultRabbitMQPersistentConnection
|
||||
catch (IOException ex)
|
||||
{
|
||||
_logger.CriticalDefaultRabbitMQPersistentConnection(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool TryConnect()
|
||||
{
|
||||
@ -98,7 +103,12 @@ public class DefaultRabbitMQPersistentConnection
|
||||
);
|
||||
|
||||
policy.Execute(() =>
|
||||
{
|
||||
{
|
||||
if (_connection != null)
|
||||
{
|
||||
DisposeConnection();
|
||||
}
|
||||
|
||||
_connection = _connectionFactory
|
||||
.CreateConnection();
|
||||
});
|
||||
|
204
common/ASC.Migration/Resources/MigrationResource.az.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.az.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Təqvim</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Təqvim</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>İstifadəçilər</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>İstifadəçi Faylları</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Açılır...</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>İnsanlar</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Poçt</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Poçt</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Poçt Əlaqələri</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Sənədlər</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Qruplar</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Google Drive Faylları</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Məlumatların emalı...</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Məlumatlar bazasının təhlili</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Məlumatların email tamamlandı</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Əlaqələr</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Müvəqqəti məlumatların təmizlənməsi</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>İstifadəçi kontaktları köçürülür {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>İstifadəçi faylları köçürülür {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Köçürülmə ləğv edildi</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Köçürülmə tamamlandı</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>İstifadəçini daxill etmək alınmadı: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Qrup köçürməsi {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Köçürülmə üçün hazırlıq</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Məlumat emalı başlayır...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Açılma tamamlandı...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>İstifadəçi təqviminin köçürülməsi {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>İstifadəçi köçürülməsi {0} ({1}/{2})</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.bg.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.bg.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Изчистване на временните данни</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Обработка на данни...</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Обработката на данните е завършена</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Разбор на база данни</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Контакти на пощата</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Google Drive файлове</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Групова миграция {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Мигриране на потребителски контакти {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Мигриране на потребителски файлове {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Миграцията е отменена</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Миграцията е завършена</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Календар</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Групи</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Поща</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Потребители</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Контакти</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Потребителски файлове</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Документи</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Календар</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Поща</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Хора</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Подготовка за миграция</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Обработката на данните започва...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Разархивиране...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Разархивирането завърши...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Мигриране на потребителски календар {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Мигриране на потребители {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Неуспешно импортиране на потребител: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.cs.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.cs.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Vymazání dočasných dat</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Zpracování dat ...</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Zpracování dat dokončeno</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Rozbor databáze</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Emailové kontakty</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Soubory na Disku Google</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Migrace skupiny {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Migrace kontaktů uživatelů {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Migrace uživatelských souborů {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Migrace zrušena</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Migrace dokončena</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Kalendář</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Skupiny</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Mail</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Uživatelé</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Kontakty</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Soubory uživatele</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Lidé</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Dokumenty</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Kalendář</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Mail</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Příprava na migraci</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Spuštění zpracování dat ...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Rozbalení ...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Rozbalování dokončeno...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Migrace uživatelského kalendáře {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Migrace uživatelů {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Nepodařilo se importovat uživatele: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.el-GR.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.el-GR.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Ημερολόγιο</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Ημερολόγιο</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Εκκαθάριση προσωρινών δεδομένων</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Επαφές</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Η επεξεργασία δεδομένων ολοκληρώθηκε</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Επεξεργασία δεδομένων...</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Ανάλυση βάσης δεδομένων</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Έγγραφα</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Η εισαγωγή χρήστη απέτυχε: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Αρχεία του Google Drive</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Μετακίνηση ομάδων {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Ομάδες</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Αλληλογραφία</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Αλληλογραφία</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Επαφές αλληλογραφίας</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Μετακίνηση επαφών χρηστών {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Μετακίνηση αρχείων χρηστών {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Η μετακίνηση ακυρώθηκε</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Η μετακίνηση ολοκληρώθηκε</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Άνθρωποι</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Προετοιμασία για μετακίνηση</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Έναρξη επεξεργασίας δεδομένων...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Η αποσυμπίεση ολοκληρώθηκε...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Αποσυμπίεση...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Μετακίνηση ημερολογίου χρήστη {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Μετακίνηση χρήστη {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Αρχεία χρηστών</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Χρήστες</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.ko-KR.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.ko-KR.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>캘린더</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>캘린더</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>임시 데이터 삭제 중</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>연락처</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>데이터 처리가 완료되었습니다</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>데이터 처리 중...</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>데이터베이스 파싱 중</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>문서</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>사용자 가져오기에 실패했습니다: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Google 드라이브의 파일</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>그룹 마이그레이션 {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>그룹</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>메일</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>메일</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>메일의 연락처</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>사용자 연락처 마이그레이션 중 {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>사용자 파일 마이그레이션 중 {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>마이그레이션이 취소되었습니다</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>마이그레이션이 완료되었습니다</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>사람</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>마이그레이션 준비 중</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>데이터 처리 시작 중...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>압축 해제가 완료되었습니다...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>압축 해제 중...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>사용자 캘린더 마이그레이션 {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>사용자 마이그레이션 {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>사용자의 파일</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>사용자</value>
|
||||
</data>
|
||||
</root>
|
201
common/ASC.Migration/Resources/MigrationResource.nl.resx
Normal file
201
common/ASC.Migration/Resources/MigrationResource.nl.resx
Normal file
@ -0,0 +1,201 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Agenda</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Agenda</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Tijdelijke gegevens wissen</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Contacten</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Gegevensverwerking voltooid</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Verwerking van gegevens...</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Database parsing</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Documenten</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Google Drive`s Bestanden</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Groepsmigratie {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Groepen</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Mail</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Mail</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Mail`s Contactpersonen</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Migreren van gebruikerscontacten {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Migratie van gebruikersbestanden {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Migratie geannuleerd</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Migratie voltooid</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Personen</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Voorbereiding van de migratie</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Gegevensverwerking starten...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Uitpakken...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Uitpakken voltooid...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Gebruikerskalender migratie {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Gebruikersmigratie {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Gebruikersbestanden</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Gebruikers</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.pl.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.pl.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Czyszczenie danych tymczasowych</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Przetwarzanie danych...</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Zakończono przetwarzanie danych</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Analizowanie bazy danych</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Kontakty z poczty</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Pliki Google Drive</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Migracja grupy {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Migrowanie kontaktów użytkownika {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Migrowanie plików użytkownika {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Migracja została anulowana</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Migracja została zakończona</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Kalendarz</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Grupy</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>E-mail</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Użytkownicy</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Kontakty</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Pliki użytkownika</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Kalendarz</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Dokumenty</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>E-mail</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Ludzie</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Przygotowanie do migracji</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Rozpoczynamy przetwarzanie danych...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Rozpakowywanie...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Rozpakowywanie zakończone...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Migracja kalendarza użytkownika {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Migracja użytkownika {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Nie udało się zaimportować użytkownika: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.pt.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.pt.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Calendário</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Calendário</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>A eliminar os dados temporários</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Contactos</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Processamento dos dados completado</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>A processar os dados...</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Análise da base de dados</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Documentos</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Falha ao importar utilizador: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Ficheiros do Google Drive</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Migração do grupo {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Grupos</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Correio-electrónico</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Correio-electrónico</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Contactos do Email</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>A migrar os contactos do utilizador {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>A migrar os ficheiros do utilizador {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Migração cancelada</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Migração completada</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Pessoas</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>A preparar a migração</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>A iniciar o processamento de dados...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Descompactação completa...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>A Descompactar...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Migração do calendário do utilizador {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Migração do Utilizador {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Ficheiros dos Utilizadores</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Utilizadores</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.ru.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.ru.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Календарь</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Календарь</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Удаление временных данных</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Контакты</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Группы</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Пользователи</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Люди</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Файлы пользователя</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Документы</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Файлы Google Drive</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Миграция группы {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Почта</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Почта</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Контакты почты</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Миграция отменена</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Миграция завершена</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Подготовка к миграции</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Разархивирование...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Миграция календаря пользователя {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Миграция пользователя {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Разархивирование завершено...</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Запуск обработки данных...</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Миграция файлов пользователя {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Миграция контактов пользователя {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Не удалось импортировать пользователя: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Обработка данных...</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Обработка данных завершена</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Парсинг базы данных</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.sk.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.sk.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Kalendár</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Kalendár</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Kontakty</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Vymazanie dočasných údajov</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Spracovanie údajov dokončené</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Spracovanie údajov...</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Spracovanie databázy</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Dokumenty</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Nepodarilo sa importovať používateľa: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Súbory na disku Google</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Presun skupín {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Skupiny</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>E-mail</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>E-mail</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Kontakty poštovej schránky</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Presun kontaktov používateľov {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Presun používateľských súborov {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Presun zrušený</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Presun dokončený</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Ľudia</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Príprava na presun</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Spustenie spracovania údajov...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Rozbaľovanie dokončené...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Rozbaľovanie...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Presun kalendára používateľa {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Presun používateľov {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Súbory používateľa</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Používatelia</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.sl.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.sl.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Koledar</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Koledar</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Kontakti</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Skupine</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Pošta</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Pošta</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Ljudje</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Uporabniki</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Dokumenti</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Razpakiranje...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Razpakiranje zaključeno...</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Začetek procesiranja podatkov...</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Priprava na migracijo</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Migracija preklicana</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Migracija zaključena</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Migracija uporabnikovih kontaktov {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Migracija uporabnikovih datotek {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Poštni kontakti</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Migracija skupine {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Google Drive datoteke</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Uvoz uporabnika ni uspel: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Razčlenjevanje baze podatkov</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Procesiranje podatkov...</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Procesiranje podatkov zaključeno</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Brisanje začasnih podatkov</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Migracija uporabnikovega koledarja {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Migracija uporabnika {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Uporabnikove datoteke</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.tr.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.tr.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Takvim</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Takvim</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Geçici verileri temizleme</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Kişiler</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Belgeler</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Gruplar</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Posta</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Posta</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>İnsanlar</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Kullanıcılar</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Posta’nın Kişileri</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Veritabanı ayrıştırma</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Google Drive Dosyaları</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Kullanıcı içe aktarılamadı: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Grup taşıma {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Kullanıcı kişileri taşınıyor {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Kullanıcı dosyaları taşınıyor {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Taşıma iptal edildi</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Taşıma tamamlandı</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Veri işleme tamamlandı</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Veri işleniyor...</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Geçiş için hazırlanıyor</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Veri işleme başlatılıyor...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Sıkıştırılmış dosya açma tamamlandı...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Sıkıştırılmış dosyalar açılıyor...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Kullanıcı takvimi taşıma {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Kullanıcı taşıma {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Kullanıcı Dosyaları</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.uk-UA.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.uk-UA.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Документи</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Люди</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Пошта</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Пошта</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Групи</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Календар</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Календар</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Контакти</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Користувачі</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Очищення тимчасових даних</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Обробку даних виконано</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Обробка даних...</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Аналізування бази даних</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Не вдалося імпортувати користувача: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Файли Google Drive</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Перенесення групи {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Контакти пошти</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Перенесення контактів користувача {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Перенесення файлів користувача {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Перенесення скасовано</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Перенесення виконано</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Підготовка до перенесення</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Початок обробки даних...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Розпакування виконано...</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Розпакування...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Перенесення календаря користувача {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Перенесення користувача {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Файли користувача</value>
|
||||
</data>
|
||||
</root>
|
204
common/ASC.Migration/Resources/MigrationResource.vi.resx
Normal file
204
common/ASC.Migration/Resources/MigrationResource.vi.resx
Normal file
@ -0,0 +1,204 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="OnlyofficeModuleNameCalendar" xml:space="preserve">
|
||||
<value>Lịch</value>
|
||||
</data>
|
||||
<data name="ModuleNameCalendar" xml:space="preserve">
|
||||
<value>Lịch</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNamePeople" xml:space="preserve">
|
||||
<value>Con người</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameMail" xml:space="preserve">
|
||||
<value>Thư</value>
|
||||
</data>
|
||||
<data name="ModuleNameMail" xml:space="preserve">
|
||||
<value>Thư</value>
|
||||
</data>
|
||||
<data name="ModuleNameGroups" xml:space="preserve">
|
||||
<value>Nhóm</value>
|
||||
</data>
|
||||
<data name="ModuleNameUsers" xml:space="preserve">
|
||||
<value>Người dùng</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameContacts" xml:space="preserve">
|
||||
<value>Thông tin liên hệ</value>
|
||||
</data>
|
||||
<data name="DataProcessing" xml:space="preserve">
|
||||
<value>Đang xử lý dữ liệu...</value>
|
||||
</data>
|
||||
<data name="OnlyofficeModuleNameDocuments" xml:space="preserve">
|
||||
<value>Tài liệu</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameDocuments" xml:space="preserve">
|
||||
<value>Tập tin Google Drive</value>
|
||||
</data>
|
||||
<data name="DumpParse" xml:space="preserve">
|
||||
<value>Đang phân tích cơ sở dữ liệu</value>
|
||||
</data>
|
||||
<data name="DataProcessingCompleted" xml:space="preserve">
|
||||
<value>Đã hoàn thành xử lý dữ liệu</value>
|
||||
</data>
|
||||
<data name="ClearingTemporaryData" xml:space="preserve">
|
||||
<value>Đang xóa dữ liệu tạm thời</value>
|
||||
</data>
|
||||
<data name="UserSkipped" xml:space="preserve">
|
||||
<value>Không thể nhập người dùng: {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GroupMigration" xml:space="preserve">
|
||||
<value>Di chuyển nhóm {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="GoogleModuleNameContacts" xml:space="preserve">
|
||||
<value>Thông tin liên hệ của Mail</value>
|
||||
</data>
|
||||
<data name="NextcloudModuleNameDocuments" xml:space="preserve">
|
||||
<value>Tập tin của người dùng</value>
|
||||
</data>
|
||||
<data name="Unzipping" xml:space="preserve">
|
||||
<value>Đang giải nén...</value>
|
||||
</data>
|
||||
<data name="UnzippingFinished" xml:space="preserve">
|
||||
<value>Đang bắt đầu xử lý dữ liệu...</value>
|
||||
</data>
|
||||
<data name="PreparingForMigration" xml:space="preserve">
|
||||
<value>Chuẩn bị cho di chuyển</value>
|
||||
</data>
|
||||
<data name="StartOfDataProcessing" xml:space="preserve">
|
||||
<value>Đang bắt đầu xử lý dữ liệu...</value>
|
||||
</data>
|
||||
<data name="UserCalendarMigration" xml:space="preserve">
|
||||
<value>Di chuyển lịch người dùng {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="UserMigration" xml:space="preserve">
|
||||
<value>Di chuyển người dùng {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigrationCanceled" xml:space="preserve">
|
||||
<value>Đã hủy di chuyển</value>
|
||||
</data>
|
||||
<data name="MigrationCompleted" xml:space="preserve">
|
||||
<value>Đã hoàn thành di chuyển</value>
|
||||
</data>
|
||||
<data name="MigratingUserContacts" xml:space="preserve">
|
||||
<value>Di chuyển thông tin liên hệ người dùng {0} ({1}/{2})</value>
|
||||
</data>
|
||||
<data name="MigratingUserFiles" xml:space="preserve">
|
||||
<value>Di chuyển tập tin người dùng {0} ({1}/{2})</value>
|
||||
</data>
|
||||
</root>
|
@ -59,137 +59,142 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Texniki dəstək lazımdır?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Satışla bağlı Suallar</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Demo Sifariş Et</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Sualınızı göndərin</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Bizə e-məktub yazın</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Sorğu göndərin</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Texniki dəstək lazımdır?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Satışla bağlı Suallar</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Demo Sifariş Et</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Sualınızı göndərin</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Bizə e-məktub yazın</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Sorğu göndərin</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Texniki dəstək lazımdır?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Satışla bağlı Suallar</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Demo Sifariçedin</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">İcmadan soruşun</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Bizə e-məktub yazın</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Bizə sorğu göndərin</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Texniki dəstək lazımdır?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Satışla bağlı Suallar</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Demo Sifariçedin</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">İcmadan soruşun</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Bizə e-məktub yazın</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Bizə sorğu göndərin</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="TextForFooterUnsubsribeDocSpace" xml:space="preserve">
|
||||
<value>Bu e-poçt avtomatik olaraq yaradılır və ona cavab vermək lazım deyil. <br />Siz <a href="{0}" target="_blank"> DocSpace</a>-nin qeydiyyatdan keçmiş istifadəçisi olduğunuz üçün bu e-poçtu alırsınız.
|
||||
<br /> Bu DocSpace e-poçtların artıq sizə göndərilməsini istəmirsinizsə, aşağıdakı linkə klikləyin: <a href="{1}" target="_blank">Abunəlikdən çıxın</a>
|
||||
<br /></value>
|
||||
</data>
|
||||
</root>
|
@ -59,103 +59,142 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Нуждаете се от техническа помощ?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Търговски въпроси</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Демо за поръчка</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Изпрати своя въпрос</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Пишете ни</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Изпращане на заявка</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Нуждаете се от техническа помощ?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Търговски въпроси</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Демо за поръчка</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Изпрати своя въпрос</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Пишете ни</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Изпращане на заявка</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Нуждаете се от техническа помощ?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Търговски въпроси</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Демо за поръчка</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Изпрати своя въпрос</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Пишете ни</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Изпращане на заявка</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Нуждаете се от техническа помощ?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Търговски въпроси</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Демо за поръчка</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Изпрати своя въпрос</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Пишете ни</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Изпращане на заявка</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%"/>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%"/>
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="TextForFooterUnsubsribeDocSpace" xml:space="preserve">
|
||||
<value>Този имейл се генерира автоматично и не е необходимо да му отговаряте.<br />Получихте този имейл, защото сте регистриран потребител на <a href="{0}" target="_blank"> DocSpace</a>.
|
||||
<br /> Кликнете тук, за да се отпишете от имейлите с известия на DocSpace : <a href="{1}" target="_blank">Отписване</a>
|
||||
<br /></value>
|
||||
</data>
|
||||
</root>
|
@ -59,73 +59,137 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Potřebujete technickou pomoc?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Prodejní otázky</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Objednat demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Pošlete nám Vaše dotazy</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Napište nám email</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Poslat žádost</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Potřebujete technickou pomoc?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Prodejní otázky</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Objednat demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Pošlete nám Vaše dotazy</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Napište nám email</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Poslat žádost</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
@ -59,33 +59,137 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Haluatko teknistä tukea?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Ostoon liittyvät kysymykset</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Tilaa koejakso</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Lähetä kysymyksesi</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Lähetä meille sähköpostia</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Lähetä pyyntö</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Haluatko teknistä tukea?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Ostoon liittyvät kysymykset</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Tilaa koejakso</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Lähetä kysymyksesi</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Lähetä meille sähköpostia</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Lähetä pyyntö</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
@ -59,137 +59,142 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Besoin d'aide technique ?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Questions sur les ventes</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Commandez une démo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Envoyez votre question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Écrivez-nous</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Envoyez une demande</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Besoin d'aide technique ?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Questions sur les ventes</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Commandez une démo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Envoyez votre question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Écrivez-nous</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Envoyez une demande</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Besoin d'assistance technique?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Questions de vente</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Demander un démo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Demandez à la communauté</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Écrivez nous</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Envoyez une demande</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Besoin d'assistance technique?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Questions de vente</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Demander un démo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Demandez à la communauté</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Écrivez nous</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Envoyez une demande</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="TextForFooterUnsubsribeDocSpace" xml:space="preserve">
|
||||
<value>Cet e-mail est généré automatiquement et vous n'avez pas besoin d'y répondre. <br />Vous recevez cet e-mail parce que vous êtes un utilisateur enregistré de<a href="{0}" target="_blank"> DocSpace</a>.
|
||||
<br /> Cliquez ici pour vous désabonner des notifications : <a href="{1}" target="_blank">Se désabonner</a>
|
||||
<br /></value>
|
||||
</data>
|
||||
</root>
|
@ -59,137 +59,142 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Serve assistenza tecnica?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Domande su Vendite</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Ordina Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Send your question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Invia una richiesta</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Serve assistenza tecnica?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Domande su Vendite</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Ordina Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Send your question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Invia una richiesta</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Serve assistenza?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Domande sulla vendita</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Ordina una Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Chiedi alla Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Scrivici</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Serve assistenza?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Domande sulla vendita</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Ordina una Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Chiedi alla Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Scrivici</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="TextForFooterUnsubsribeDocSpace" xml:space="preserve">
|
||||
<value>Questa email viene generata automaticamente e non è necessario che tu risponda.<br />Hai ricevuto questa email perché sei un utente registrato di<a href="{0}" target="_blank"> DocSpace</a>.
|
||||
<br /> Fai clic qui per annullare l'iscrizione alle email di notifica di DocSpace: <a href="{1}" target="_blank">Annulla iscrizione</a>
|
||||
<br /></value>
|
||||
</data>
|
||||
</root>
|
@ -58,10 +58,143 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="TextForFooterWithUnsubscribeLink" xml:space="preserve">
|
||||
<value>このメールは送信専用メールアドレスから配信されています。 このままご返信いただいてもお答えできませんのでご了承ください。
|
||||
<br />本メールは、<a href="{0}" style="color: #7b7b7b;" target="_blank">{0}</a> に登録いただいているみなさまにお送りしております。
|
||||
<br />「ご案内メール」の受信を希望しない場合は、こちらを押してください。<a href="{1}" style="color: #7b7b7b;" target="_blank">受信解除</a>
|
||||
<data name="TextForFooterUnsubsribeDocSpace" xml:space="preserve">
|
||||
<value>このメールは自動的に生成されるので、回答する必要はありません。<br /><a href="{0}" target="_blank">DocSpace</a>の登録ユーザーであるため、このメールを受け取りました。
|
||||
<br />DocSpaceの通知メールの配信を停止するには、ここをクリックしてください: <a href="{1}" target="_blank">購読中止</a>
|
||||
<br /></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Send your question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,254 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Send your question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
@ -59,103 +59,137 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Нужна помощь?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Вопросы по покупке</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Заказ демонстрации</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Задайте вопрос</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Напишите нам</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Отправьте запрос</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Нужна помощь?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Вопросы по покупке</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Заказ демонстрации</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Задайте вопрос</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Напишите нам</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Отправьте запрос</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Нужна помощь?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Вопросы по покупке</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Заказ демонстрации</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Задайте вопрос</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Напишите нам</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Отправьте запрос</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Нужна помощь?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Вопросы по покупке</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Заказ демонстрации</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Задайте вопрос</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Напишите нам</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Отправьте запрос</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
@ -59,73 +59,137 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Technische hulp nodig?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Verkoopvragen</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Orderdemo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Verstuur uw vraag</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Stuur een verzoek</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Technische hulp nodig?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Verkoopvragen</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Orderdemo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Verstuur uw vraag</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Stuur een verzoek</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
@ -59,73 +59,137 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Potřebujete technickou pomoc?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Prodejní otázky</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Objednat demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Send your question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Poslat žádost</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Potřebujete technickou pomoc?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Prodejní otázky</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Objednat demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Send your question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Poslat žádost</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
@ -59,137 +59,142 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Precisa de ajuda técnica?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Perguntas sobre vendas</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Demonstração de pedido</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Envie sua pergunta</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Envie-nos um e-mail</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Envie uma solicitação</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;"> </td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Precisa de ajuda técnica?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Perguntas sobre vendas</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Demonstração de pedido</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Envie sua pergunta</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Envie-nos um e-mail</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Envie uma solicitação</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="TextForFooterUnsubsribeDocSpace" xml:space="preserve">
|
||||
<value>Este e-mail é gerado automaticamente e você não precisa respondê-lo.<br />Você recebeu este e-mail porque é um usuário registrado do <a href="{0}" target="_blank"> DocSpace</a>.
|
||||
<br /> Clique aqui para cancelar a assinatura dos e-mails de notificação do DocSpace: <a href="{1}" target="_blank">Unsubscribe</a>
|
||||
<br /></value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,254 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Send your question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,259 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="TextForFooterUnsubsribeDocSpace" xml:space="preserve">
|
||||
<value>Acest mesaj de e-mail este generat automat, vă rugăm să nu răspundeţi la acesta scrisiare.<br />Ați primit acest e-mail pentru că sunteți un utilizator înregistrat al spațiului <a href="{0}" target="_blank"> DocSpace</a>.
|
||||
<br /> Faceți clic aici pentru a dezactiva notificările DocSpace prin e-mail: <a href="{1}" target="_blank">Unsubscribe</a>
|
||||
<br /></value>
|
||||
</data>
|
||||
<data name="SocialNetworksFooterV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 155px;">
|
||||
<a href="https://www.facebook.com/pages/OnlyOffice/833032526736775" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-fb-40.png" alt="Facebook" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://twitter.com/ONLY_OFFICE" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-tw-40.png" alt="Twitter" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.onlyoffice.com/blog" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-blog-40.png" alt="ONLYOFFICE" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://www.youtube.com/user/onlyofficeTV" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-youtube-40.png" alt="YouTube" style="width: 40px; height: 40x;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 5px 0 5px;">
|
||||
<a href="https://vk.com/onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-vk-40.png" alt="VK" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
<td style="width: 40px; vertical-align: top; margin: 0; padding: 22px 155px 0 5px;">
|
||||
<a href="https://www.instagram.com/the_onlyoffice" style="width: 40px; height: 40px; display: block; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%IMAGEPATH%/social-inst-40.png" alt="Instagram" style="width: 40px; height: 40px;" />
|
||||
</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="HtmlMaster" xml:space="preserve">
|
||||
<value><body style="margin: 0; padding: 0; text-align: center; width: 100%; font-family: Arial, sans-serif; font-size: 14px; color: #333;">
|
||||
<div style="background-color: #fff; width: 600px; margin: 0 auto; text-align: left;">
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; background: #fff; text-align: center; width: 600px; margin: 0; padding: 0; border: 0 none; border-collapse: collapse; empty-cells: show; border-spacing: 0;">
|
||||
<tbody>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 0; background-color: #fff; height: 65px; padding: 20px 0 0 30px;">
|
||||
<div style="text-align: left; height: 65px; width: 570px; margin: 0; padding: 0;">
|
||||
<a href="%SITEURL%" style="text-decoration: none; display: inline-block; width: 386px; height: 44px; margin: 0; padding: 0;" target="_blank">
|
||||
<img src="%LOGO%" style="border: 0px none; width: 386px; height: 44px; margin: 0; padding: 0;" alt="%LOGOTEXT%" />
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="3" style="margin: 0; padding: 15px 30px 15px; background-color: #f6f6f6; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px;">
|
||||
<div style="font-family: Arial; font-size: 14px; color: #333; margin: 0; padding: 0; width: 540px; height: auto; overflow: hidden; word-wrap: break-word; vertical-align: top; text-align: left; border: 0 none;">
|
||||
%CONTENT%
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
%FOOTER%
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table cellspacing="0" cellpadding="0" style="font-family: Arial; font-size: 14px; color: #333; text-align: center; vertical-align: top; width: 600px; margin: 0; padding: 0; border-collapse: collapse; border: 0; border-spacing: 0; ">
|
||||
<tbody>
|
||||
%FOOTERSOCIAL%
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td colspan="6" style="width: 600px; vertical-align: top; margin: 0; padding: 20px 30px 15px;">
|
||||
<p style="color: #7b7b7b; font-family: Arial, Tahoma; font-size: 12px; margin: 0; padding: 0; text-align: center; width: 540px;">
|
||||
%TEXTFOOTER%
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</body></value>
|
||||
</data>
|
||||
<data name="FooterCommonV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="%SUPPORTURL%" target="_blank" style="color: #333;">Send your question</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:%SALESEMAIL%" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="%DEMOURL%" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
<data name="FooterOpensourceV10" xml:space="preserve">
|
||||
<value><tr border="0" cellspacing="0" cellpadding="0"><td colspan="3" style="height: 10px; line-height: 10px; background: #fff; padding: 0; margin: 0;">&nbsp;</td></tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/tech-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 180px; height: 108px; background: #f6f6f6;">
|
||||
<img src="%IMAGEPATH%/mailus-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 34px 0 0 0; width: 210px; height: 108px; background: #f6f6f6; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px;">
|
||||
<img src="%IMAGEPATH%/demo-100.png" style="width: 100px; height: 100px;margin: 0 auto;" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Need tech help?</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 180px; height: 16px; background: #f6f6f6;">Sales Questions</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0; width: 210px; height: 16px; background: #f6f6f6;">Order Demo</td>
|
||||
</tr>
|
||||
<tr border="0" cellspacing="0" cellpadding="0">
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px;">
|
||||
<a href="http://dev.onlyoffice.org/" target="_blank" style="color: #333;">Ask the Community</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 180px; background: #f6f6f6;">
|
||||
<a href="mailto:sales@onlyoffice.com" style="color: #333;">Email us</a>
|
||||
</td>
|
||||
<td style="vertical-align: top; margin: 0; padding: 0 0 30px; width: 210px; background: #f6f6f6;-moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px;">
|
||||
<a href="http://www.onlyoffice.com/demo-order.aspx" target="_blank" style="color: #333;">Send a request</a>
|
||||
</td>
|
||||
</tr></value>
|
||||
</data>
|
||||
</root>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user