Moved from v10.5.2-saas

This commit is contained in:
pavelbannov 2020-09-11 17:12:35 +03:00
parent c2d1df3fc3
commit 15b34875d3
28 changed files with 585 additions and 493 deletions

View File

@ -56,15 +56,20 @@ namespace ASC.Data.Storage.S3
public class S3Storage : BaseStorage
{
private readonly List<string> _domains = new List<string>();
private Dictionary<string, S3CannedACL> _domainsAcl;
private S3CannedACL _moduleAcl;
private readonly Dictionary<string, S3CannedACL> _domainsAcl;
private readonly S3CannedACL _moduleAcl;
private string _accessKeyId = "";
private string _bucket = "";
private string _recycleDir = "";
private Uri _bucketRoot;
private Uri _bucketSSlRoot;
private string _region;
private string _region = string.Empty;
private string _serviceurl;
private bool _forcepathstyle;
private string _secretAccessKeyId = "";
private ServerSideEncryptionMethod _sse = ServerSideEncryptionMethod.AES256;
private bool _useHttp = true;
private bool _lowerCasing = true;
private bool _revalidateCloudFront;
private string _distributionId = string.Empty;
@ -219,7 +224,7 @@ namespace ASC.Data.Storage.S3
BucketName = _bucket,
Key = MakePath(domain, path),
ContentType = mime,
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256,
ServerSideEncryptionMethod = _sse,
InputStream = buffered,
AutoCloseStream = false,
Headers =
@ -312,7 +317,7 @@ namespace ASC.Data.Storage.S3
{
BucketName = _bucket,
Key = MakePath(domain, path),
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
ServerSideEncryptionMethod = _sse
};
using var s3 = GetClient();
@ -544,7 +549,7 @@ namespace ASC.Data.Storage.S3
DestinationBucket = _bucket,
DestinationKey = s3Object.Key.Replace(srckey, dstkey),
CannedACL = GetDomainACL(newdomain),
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
ServerSideEncryptionMethod = _sse
})
.Wait();
@ -571,7 +576,7 @@ namespace ASC.Data.Storage.S3
DestinationKey = dstKey,
CannedACL = GetDomainACL(newdomain),
MetadataDirective = S3MetadataDirective.REPLACE,
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
ServerSideEncryptionMethod = _sse
};
client.CopyObjectAsync(request).Wait();
@ -907,7 +912,7 @@ namespace ASC.Data.Storage.S3
DestinationKey = dstKey,
CannedACL = GetDomainACL(newdomain),
MetadataDirective = S3MetadataDirective.REPLACE,
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
ServerSideEncryptionMethod = _sse
};
client.CopyObjectAsync(request).Wait();
@ -935,7 +940,7 @@ namespace ASC.Data.Storage.S3
DestinationBucket = _bucket,
DestinationKey = s3Object.Key.Replace(srckey, dstkey),
CannedACL = GetDomainACL(newdomain),
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256
ServerSideEncryptionMethod = _sse
}).Wait();
QuotaUsedAdd(newdomain, s3Object.Size);
@ -975,33 +980,6 @@ namespace ASC.Data.Storage.S3
public override IDataStore Configure(string tenant, Handler handlerConfig, Module moduleConfig, IDictionary<string, string> props)
{
_tenant = tenant;
if (moduleConfig != null)
{
_modulename = moduleConfig.Name;
_dataList = new DataList(moduleConfig);
_domains.AddRange(moduleConfig.Domain.Select(x => string.Format("{0}/", x.Name)));
//Make expires
_domainsExpires = moduleConfig.Domain.Where(x => x.Expires != TimeSpan.Zero).ToDictionary(x => x.Name, y => y.Expires);
_domainsExpires.Add(string.Empty, moduleConfig.Expires);
_domainsAcl = moduleConfig.Domain.ToDictionary(x => x.Name, y => GetS3Acl(y.Acl));
_moduleAcl = GetS3Acl(moduleConfig.Acl);
}
else
{
_modulename = string.Empty;
_dataList = null;
//Make expires
_domainsExpires = new Dictionary<string, TimeSpan> { { string.Empty, TimeSpan.Zero } };
_domainsAcl = new Dictionary<string, S3CannedACL>();
_moduleAcl = S3CannedACL.PublicRead;
}
_accessKeyId = props["acesskey"];
_secretAccessKeyId = props["secretaccesskey"];
_bucket = props["bucket"];
@ -1011,7 +989,44 @@ namespace ASC.Data.Storage.S3
_recycleDir = props["recycleDir"];
}
if (props.ContainsKey("region"))
{
_region = props["region"];
}
if (props.ContainsKey("serviceurl"))
{
_serviceurl = props["serviceurl"];
}
if (props.ContainsKey("forcepathstyle"))
{
_forcepathstyle = bool.Parse(props["forcepathstyle"]);
}
if (props.ContainsKey("usehttp"))
{
_useHttp = bool.Parse(props["usehttp"]);
}
if (props.ContainsKey("sse"))
{
switch (props["sse"].ToLower())
{
case "none":
_sse = ServerSideEncryptionMethod.None;
break;
case "aes256":
_sse = ServerSideEncryptionMethod.AES256;
break;
case "awskms":
_sse = ServerSideEncryptionMethod.AWSKMS;
break;
default:
_sse = ServerSideEncryptionMethod.None;
break;
}
}
_bucketRoot = props.ContainsKey("cname") && Uri.IsWellFormedUriString(props["cname"], UriKind.Absolute)
? new Uri(props["cname"], UriKind.Absolute)
@ -1088,7 +1103,7 @@ namespace ASC.Data.Storage.S3
DestinationKey = GetRecyclePath(key),
CannedACL = GetDomainACL(domain),
MetadataDirective = S3MetadataDirective.REPLACE,
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256,
ServerSideEncryptionMethod = _sse,
StorageClass = S3StorageClass.Glacier
};
@ -1103,7 +1118,21 @@ namespace ASC.Data.Storage.S3
private IAmazonS3 GetClient()
{
var cfg = new AmazonS3Config { UseHttp = true, MaxErrorRetry = 3, RegionEndpoint = RegionEndpoint.GetBySystemName(_region) };
var cfg = new AmazonS3Config { MaxErrorRetry = 3 };
if (!string.IsNullOrEmpty(_serviceurl))
{
cfg.ServiceURL = _serviceurl;
cfg.ForcePathStyle = _forcepathstyle;
}
else
{
cfg.RegionEndpoint = RegionEndpoint.GetBySystemName(_region);
}
cfg.UseHttp = _useHttp;
return new AmazonS3Client(_accessKeyId, _secretAccessKeyId, cfg);
}

View File

@ -77,7 +77,7 @@ namespace ASC.FederatedLogin.LoginProviders
get { return (new[] { 4194304 }).Sum().ToString(); }
}
private const string VKProfileUrl = "https://api.vk.com/method/users.get?v=5.80";
private const string VKProfileUrl = "https://api.vk.com/method/users.get?v=5.103";
public VKLoginProvider()

View File

@ -25,7 +25,7 @@
"ConnectionStrings": {
"default": {
"name": "default",
"connectionString": "Server=localhost;Database=onlyoffice;User ID=dev;Password=dev;Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none",
"connectionString": "Server=localhost;Database=teamlab_translate;User ID=dev;Password=dev;Pooling=true;Character Set=utf8;AutoEnlist=false;SSL Mode=none",
"providerName": "MySql.Data.MySqlClient"
}
},

View File

@ -36,6 +36,7 @@ using ASC.Common;
using ASC.Common.Logging;
using ASC.Common.Utils;
using ASC.Core;
using ASC.Core.Billing;
using ASC.Core.Common.Settings;
using ASC.Core.Tenants;
using ASC.Core.Users;
@ -290,6 +291,27 @@ namespace ASC.ApiSystem.Controllers
});
}
var trialQuota = Configuration["trial-quota"];
if (!string.IsNullOrEmpty(trialQuota))
{
if (int.TryParse(trialQuota, out var trialQuotaId))
{
var dueDate = DateTime.MaxValue;
if (int.TryParse(Configuration["trial-due"], out var dueTrial))
{
dueDate = DateTime.UtcNow.AddDays(dueTrial);
}
var tariff = new Tariff
{
QuotaId = trialQuotaId,
DueDate = dueDate
};
HostedSolution.SetTariff(t.TenantId, tariff);
}
}
var isFirst = true;
string sendCongratulationsAddress = null;

View File

@ -53,6 +53,8 @@ namespace ASC.Data.Backup.Tasks
{
public class BackupPortalTask : PortalTaskBase
{
private const int MaxLength = 250;
private const int BatchLimit = 5000;
public string BackupFilePath { get; private set; }
public int Limit { get; private set; }
@ -327,8 +329,6 @@ namespace ASC.Data.Backup.Tasks
var path = Path.Combine(dir, t);
using (var fs = File.OpenWrite(path))
{
var offset = 0;
do
@ -351,12 +351,11 @@ namespace ASC.Data.Backup.Tasks
if (resultCount == 0) break;
SaveToFile(fs, t, columns, result);
SaveToFile(path, t, columns, result);
if (resultCount < Limit) break;
} while (true);
}
SetStepCompleted();
@ -386,14 +385,13 @@ namespace ASC.Data.Backup.Tasks
return ExecuteList(command);
}
private void SaveToFile(Stream fs, string t, IReadOnlyCollection<string> columns, List<object[]> data)
private void SaveToFile(string path, string t, IReadOnlyCollection<string> columns, List<object[]> data)
{
Logger.DebugFormat("save to file {0}", t);
List<object[]> portion;
while ((portion = data.Take(BatchLimit).ToList()).Any())
{
var creates = new StringBuilder();
using (var sw = new StringWriter(creates))
using (var sw = new StreamWriter(path, true))
using (var writer = new JsonTextWriter(sw))
{
writer.QuoteChar = '\'';
@ -437,10 +435,6 @@ namespace ASC.Data.Backup.Tasks
}
sw.WriteLine();
}
var fileData = creates.ToString();
var bytes = Encoding.UTF8.GetBytes(fileData);
fs.Write(bytes, 0, bytes.Length);
}
data = data.Skip(BatchLimit).ToList();
}
@ -507,6 +501,12 @@ namespace ASC.Data.Backup.Tasks
{
Directory.CreateDirectory(dirName);
}
if (!WorkContext.IsMono && filePath.Length > MaxLength)
{
filePath = @"\\?\" + filePath;
}
using (var fileStream = storage.GetReadStream(file.Domain, file.Path))
using (var tmpFile = File.OpenWrite(filePath))
{
@ -521,8 +521,13 @@ namespace ASC.Data.Backup.Tasks
Logger.DebugFormat("archive dir start {0}", subDir);
foreach (var enumerateFile in Directory.EnumerateFiles(subDir, "*", SearchOption.AllDirectories))
{
writer.WriteEntry(enumerateFile.Substring(subDir.Length), enumerateFile);
File.Delete(enumerateFile);
var f = enumerateFile;
if (!WorkContext.IsMono && enumerateFile.Length > MaxLength)
{
f = @"\\?\" + f;
}
writer.WriteEntry(enumerateFile.Substring(subDir.Length), f);
File.Delete(f);
SetStepCompleted();
}
Logger.DebugFormat("archive dir end {0}", subDir);

View File

@ -35,6 +35,7 @@ using ASC.Core.Common.Settings;
using Autofac;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
@ -87,6 +88,7 @@ namespace ASC.ElasticSearch.Core
private FactoryIndexer FactoryIndexer { get; }
private ICacheNotify<ReIndexAction> CacheNotify { get; }
private IServiceProvider ServiceProvider { get; }
public IConfiguration Configuration { get; }
public SearchSettingsHelper(
TenantManager tenantManager,
@ -94,7 +96,8 @@ namespace ASC.ElasticSearch.Core
CoreBaseSettings coreBaseSettings,
FactoryIndexer factoryIndexer,
ICacheNotify<ReIndexAction> cacheNotify,
IServiceProvider serviceProvider)
IServiceProvider serviceProvider,
IConfiguration configuration)
{
TenantManager = tenantManager;
SettingsManager = settingsManager;
@ -102,6 +105,7 @@ namespace ASC.ElasticSearch.Core
FactoryIndexer = factoryIndexer;
CacheNotify = cacheNotify;
ServiceProvider = serviceProvider;
Configuration = configuration;
}
public List<SearchSettingsItem> GetAllItems()
@ -148,13 +152,15 @@ namespace ASC.ElasticSearch.Core
public bool CanSearchByContent<T>(int tenantId) where T : class, ISearchItem
{
if (!SearchByContentEnabled) return false;
if (typeof(ISearchItemDocument).IsAssignableFrom(typeof(T)))
{
return false;
}
if (Convert.ToBoolean(Configuration["core:search-by-content"] ?? "false")) return true;
if (!SearchByContentEnabled) return false;
var settings = SettingsManager.LoadForTenant<SearchSettings>(tenantId);
return settings.IsEnabled(ServiceProvider.GetService<T>().IndexName);

View File

@ -303,6 +303,37 @@
"linkedInRedirectUrl" : ""
}
}
},
{
"type": "ASC.FederatedLogin.LoginProviders.MailRuLoginProvider, ASC.FederatedLogin",
"services": [
{
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"type": "ASC.FederatedLogin.LoginProviders.MailRuLoginProvider, ASC.FederatedLogin"
},
{
"key": "Mailru",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "Mailru",
"type": "ASC.FederatedLogin.LoginProviders.MailRuLoginProvider, ASC.FederatedLogin"
}
],
"instanceScope": "perlifetimescope",
"parameters": {
"name": "Mailru",
"order": "4",
"props": {
"mailRuClientId": "",
"mailRuClientSecret": ""
},
"additional": {
"mailRuRedirectUrl" : ""
}
}
},
{
"type": "ASC.FederatedLogin.LoginProviders.OneDriveLoginProvider, ASC.FederatedLogin",
@ -459,6 +490,37 @@
"yahooRedirectUrl" : ""
}
}
},
{
"type": "ASC.FederatedLogin.LoginProviders.VKLoginProvider, ASC.FederatedLogin",
"services": [
{
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"type": "ASC.FederatedLogin.LoginProviders.VKLoginProvider, ASC.FederatedLogin"
},
{
"key": "Vk",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "Vk",
"type": "ASC.FederatedLogin.LoginProviders.VKLoginProvider, ASC.FederatedLogin"
}
],
"instanceScope": "perlifetimescope",
"parameters": {
"name": "Vk",
"order": "14",
"props": {
"vkClientId": "",
"vkClientSecret": ""
},
"additional": {
"vkRedirectUrl" : ""
}
}
},
{
"type": "ASC.FederatedLogin.LoginProviders.WordpressLoginProvider, ASC.FederatedLogin",
@ -490,6 +552,37 @@
"wpRedirectUrl" : ""
}
}
},
{
"type": "ASC.FederatedLogin.LoginProviders.YandexLoginProvider, ASC.FederatedLogin",
"services": [
{
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"type": "ASC.FederatedLogin.LoginProviders.YandexLoginProvider, ASC.FederatedLogin"
},
{
"key": "Yandex",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "Yandex",
"type": "ASC.FederatedLogin.LoginProviders.YandexLoginProvider, ASC.FederatedLogin"
}
],
"instanceScope": "perlifetimescope",
"parameters": {
"name": "Yandex",
"order": "15",
"props": {
"yandexClientId": "",
"yandexClientSecret": ""
},
"additional": {
"yandexRedirectUrl" : ""
}
}
},
{
"type": "ASC.Core.Common.Configuration.DataStoreConsumer, ASC.Core.Common",

View File

@ -272,6 +272,8 @@ namespace ASC.Web.Studio.UserControls.FirstTime
{
try
{
StudioNotifyService.SendRegData(user);
var url = Configuration["web:install-url"];
if (string.IsNullOrEmpty(url)) return;

View File

@ -154,5 +154,7 @@ namespace ASC.Web.Studio.Core.Notify
public static readonly INotifyAction PersonalCustomModePasswordChange = new NotifyAction("personal_custom_mode_change_password");
public static readonly INotifyAction PersonalCustomModeEmailChange = new NotifyAction("personal_custom_mode_change_email");
public static readonly INotifyAction PersonalCustomModeProfileDelete = new NotifyAction("personal_custom_mode_profile_delete");
public static readonly INotifyAction SaasCustomModeRegData = new NotifyAction("saas_custom_mode_reg_data");
}
}

View File

@ -141,7 +141,7 @@ namespace ASC.Web.Studio.Core.Notify
csize = (csize ?? "").Trim();
if (string.IsNullOrEmpty(csize)) throw new ArgumentNullException("csize");
site = (site ?? "").Trim();
if (string.IsNullOrEmpty(site)) throw new ArgumentNullException("site");
if (string.IsNullOrEmpty(site) && !CoreBaseSettings.CustomMode) throw new ArgumentNullException("site");
message = (message ?? "").Trim();
var salesEmail = SettingsManager.LoadForDefaultTenant<AdditionalWhiteLabelSettings>().SalesEmail ?? SetupInfo.SalesEmail;
@ -879,6 +879,41 @@ namespace ASC.Web.Studio.Core.Notify
return confirmUrl + $"&firstname={HttpUtility.UrlEncode(user.FirstName)}&lastname={HttpUtility.UrlEncode(user.LastName)}";
}
public void SendRegData(UserInfo u)
{
try
{
if (!TenantExtra.Saas || !CoreBaseSettings.CustomMode) return;
var settings = SettingsManager.LoadForDefaultTenant<AdditionalWhiteLabelSettings>();
var salesEmail = settings.SalesEmail ?? SetupInfo.SalesEmail;
if (string.IsNullOrEmpty(salesEmail)) return;
var recipient = new DirectRecipient(salesEmail, null, new[] { salesEmail }, false);
client.SendNoticeToAsync(
Actions.SaasCustomModeRegData,
null,
new IRecipient[] { recipient },
new[] { EMailSenderName },
null,
new TagValue(Tags.UserName, u.FirstName.HtmlEncode()),
new TagValue(Tags.UserLastName, u.FirstName.HtmlEncode()),
new TagValue(Tags.UserEmail, u.Email.HtmlEncode()),
new TagValue(Tags.Phone, u.MobilePhone != null ? u.MobilePhone.HtmlEncode() : "-"),
new TagValue(Tags.Date, u.CreateDate.ToShortDateString() + " " + u.CreateDate.ToShortTimeString()),
new TagValue(CommonTags.Footer, null),
TagValues.WithoutUnsubscribe());
}
catch (Exception error)
{
Log.Error(error);
}
}
#endregion
}

View File

@ -159,7 +159,9 @@ namespace ASC.Web.Studio.Core.Notify
Actions.PersonalCustomModeConfirmation,
Actions.PersonalCustomModePasswordChange,
Actions.PersonalCustomModeEmailChange,
Actions.PersonalCustomModeProfileDelete
Actions.PersonalCustomModeProfileDelete,
Actions.SaasCustomModeRegData
);
}

View File

@ -94,7 +94,7 @@ namespace ASC.Web.Studio.Core.Notify
{
using var scope = ServiceProvider.CreateScope();
var scopeClass = scope.ServiceProvider.GetService<StudioPeriodicNotifyScope>();
var (tenantManager, userManager, studioNotifyHelper, paymentManager, tenantExtra, authContext, commonLinkUtility, apiSystemHelper, setupInfo, dbContextManager, couponManager, _, _, _, _, _, _) = scopeClass;
var (tenantManager, userManager, studioNotifyHelper, paymentManager, tenantExtra, authContext, commonLinkUtility, apiSystemHelper, setupInfo, dbContextManager, couponManager, _, _, coreBaseSettings, _, _, _) = scopeClass;
tenantManager.SetCurrentTenant(tenant.TenantId);
var client = WorkContext.NotifyContext.NotifyService.RegisterClient(studioNotifyHelper.NotifySource, scope);
@ -224,8 +224,12 @@ namespace ASC.Web.Studio.Core.Notify
tableItemImg1 = studioNotifyHelper.GetNotificationImageUrl("tips-documents-formatting-100.png");
tableItemText1 = () => WebstudioNotifyPatternResource.pattern_saas_admin_user_docs_tips_v10_item_formatting_hdr;
tableItemComment1 = () => WebstudioNotifyPatternResource.pattern_saas_admin_user_docs_tips_v10_item_formatting;
if (!coreBaseSettings.CustomMode)
{
tableItemLearnMoreUrl1 = studioNotifyHelper.Helplink + "/onlyoffice-editors/index.aspx";
tableItemLearnMoreText1 = () => WebstudioNotifyPatternResource.LinkLearnMore;
}
tableItemImg2 = studioNotifyHelper.GetNotificationImageUrl("tips-documents-share-100.png");
tableItemText2 = () => WebstudioNotifyPatternResource.pattern_saas_admin_user_docs_tips_v10_item_share_hdr;
@ -705,8 +709,12 @@ namespace ASC.Web.Studio.Core.Notify
tableItemImg1 = studioNotifyHelper.GetNotificationImageUrl("tips-documents-formatting-100.png");
tableItemText1 = () => WebstudioNotifyPatternResource.pattern_saas_admin_user_docs_tips_v10_item_formatting_hdr;
tableItemComment1 = () => WebstudioNotifyPatternResource.pattern_saas_admin_user_docs_tips_v10_item_formatting;
if (!coreBaseSettings.CustomMode)
{
tableItemLearnMoreUrl1 = studioNotifyHelper.Helplink + "/onlyoffice-editors/index.aspx";
tableItemLearnMoreText1 = () => WebstudioNotifyPatternResource.LinkLearnMore;
}
tableItemImg2 = studioNotifyHelper.GetNotificationImageUrl("tips-documents-share-100.png");
tableItemText2 = () => WebstudioNotifyPatternResource.pattern_saas_admin_user_docs_tips_v10_item_share_hdr;

View File

@ -200,6 +200,22 @@ namespace ASC.Web.Core.PublicResources {
}
}
/// <summary>
/// Looks up a localized string similar to h3.New portal has been registered
///
///# Portal url: &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot;
///# First name: $UserName
///# Last name: $UserLastName
///# Email: $UserEmail
///# Phone: $Phone
///# Creation date: $Date.
/// </summary>
public static string pattern_saas_custom_mode_reg_data {
get {
return ResourceManager.GetString("pattern_saas_custom_mode_reg_data", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Do the same as a user|Link Dropbox, Box and other accounts in the &apos;Common Documents&apos; section|Set up access rights to the documents and folders in the &apos;Common Documents&apos; section.
/// </summary>

View File

@ -58,4 +58,14 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="pattern_saas_custom_mode_reg_data" xml:space="preserve">
<value>h3.Neues Portal wurde registriert
# Portal URL: "${__VirtualRootPath}":"${__VirtualRootPath}"
# Vorname: $UserName
# Nachname: $UserLastName
# E-Mail: $UserEmail
# Telefon: $Phone
# Datum der Erstellung: $Date</value>
</data>
</root>

View File

@ -200,6 +200,16 @@ La eliminación de datos personales permitió liberar:
# Chat - $TalkSpace
^Ha recibido este mensaje de email porque Usted es un usuario registrado del portal "${__VirtualRootPath}":"${__VirtualRootPath}".^</value>
</data>
<data name="pattern_saas_custom_mode_reg_data" xml:space="preserve">
<value>h3.Se ha registrado un nuevo portal
# URL del portal: "${__VirtualRootPath}":"${__VirtualRootPath}"
# Nombre: $UserName
# Apellido: $UserLastName
# Correo electrónico: $UserEmail
# Teléfono: $Phone
# Fecha de creación: $Date</value>
</data>
<data name="ProductAdminOpportunitiesCustomMode" xml:space="preserve">
<value>Hacer lo mismo que el usuario|Enlazar Dropbox, Box y otras cuentas en la sección 'Documentos comunes'|Dar derechos de acceso a los documentos y carpetas en la sección 'Documentos comunes'</value>

View File

@ -58,6 +58,16 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="pattern_saas_custom_mode_reg_data" xml:space="preserve">
<value>h3.Nouveau portail a été enregistré
# URL du portail : "${__VirtualRootPath}":"${__VirtualRootPath}"
# Nom : $UserName
# Prénom : $UserLastName
# Mail : $UserEmail
# Téléphone : $Phone
# Date de création : $Date</value>
</data>
<data name="ProductAdminOpportunitiesCustomMode" xml:space="preserve">
<value>Faire la même chose qu'un utilisateur|Lier Dropbox, Box et d'autres comptes dans la section 'Documents communs'|Définir les droits d'accès aux documents et aux dossiers dans la section 'Documents communs'</value>
</data>

View File

@ -202,6 +202,16 @@ La procedura di rimozione dei dati dall'utente "$FromUserName":"$FromUserLink"
# Talk - $TalkSpace
^ Ricevi questa email perché sei un utente registrato del portale "${__VirtualRootPath}":"$ {__VirtualRootPath}".^</value>
</data>
<data name="pattern_saas_custom_mode_reg_data" xml:space="preserve">
<value>h3.Il nuovo portale è stato registrato
# URL del portale: "${__VirtualRootPath}":"$ {__VirtualRootPath}"
# Nome: $UserName
# Cognome: $UserLastName
# Email: $UserEmail
# Telefono: $Phone
# Data di creazione: $Date</value>
</data>
<data name="ProductAdminOpportunitiesCustomMode" xml:space="preserve">
<value>Fare lo stesso che un utente|Collegare Dropbox, Box e altri account nella section 'Documenti comuni'|Impostare i diritti di accesso ai documenti e alle cartelle nella sezione 'Documenti comuni'</value>

View File

@ -200,6 +200,16 @@ The deletion of personal data allowed to free:
# Talk - $TalkSpace
^You receive this email because you are a registered user of the "${__VirtualRootPath}":"${__VirtualRootPath}" portal.^</value>
</data>
<data name="pattern_saas_custom_mode_reg_data" xml:space="preserve">
<value>h3.New portal has been registered
# Portal url: "${__VirtualRootPath}":"${__VirtualRootPath}"
# First name: $UserName
# Last name: $UserLastName
# Email: $UserEmail
# Phone: $Phone
# Creation date: $Date</value>
</data>
<data name="ProductAdminOpportunitiesCustomMode" xml:space="preserve">
<value>Do the same as a user|Link Dropbox, Box and other accounts in the 'Common Documents' section|Set up access rights to the documents and folders in the 'Common Documents' section</value>

View File

@ -193,6 +193,16 @@ $GreenButton
# Чат - $TalkSpace
^Вы получили это сообщение, так как зарегистрированы на портале "${__VirtualRootPath}":"${__VirtualRootPath}".^</value>
</data>
<data name="pattern_saas_custom_mode_reg_data" xml:space="preserve">
<value>h3.Зарегистрирован новый портал
# URL-адрес портала: "${__VirtualRootPath}":"${__VirtualRootPath}"
# Имя: $UserName
# Фамилия: $UserLastName
# Email: $UserEmail
# Телефон: $Phone
# Дата создания: $Date</value>
</data>
<data name="ProductAdminOpportunitiesCustomMode" xml:space="preserve">
<value>Делать то же самое, что и пользователь|Настраивать права доступа к документам и папкам в разделе 'Общие документы'</value>

View File

@ -1968,6 +1968,15 @@ namespace ASC.Web.Core.PublicResources {
}
}
/// <summary>
/// Looks up a localized string similar to Trial.
/// </summary>
public static string Trial {
get {
return ResourceManager.GetString("Trial", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to US West (Oregon) Region.
/// </summary>

View File

@ -1,64 +1,5 @@
<?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">
@ -325,6 +266,21 @@
<data name="ConsumersLinkedInSecret" xml:space="preserve">
<value>Linkedin-Schlüssel</value>
</data>
<data name="ConsumersMailru" xml:space="preserve">
<value>Mail.ru</value>
</data>
<data name="ConsumersMailruClientId" xml:space="preserve">
<value>ID</value>
</data>
<data name="ConsumersMailruClientSecret" xml:space="preserve">
<value>Geheimer Schlüssel</value>
</data>
<data name="ConsumersMailruDescription" xml:space="preserve">
<value>Aktivieren Sie die Anwendung, um sich in das Portal mit einem Mail.ru Account einloggen zu können.</value>
</data>
<data name="ConsumersMailruInstruction" xml:space="preserve">
<value>Mit der Mail.ru Anwendung können Sie auf Ihrer Profil-Seite die Option aktivieren, um sich mit einem Mail.ru Account einzuloggen.</value>
</data>
<data name="ConsumersRackspace" xml:space="preserve">
<value>Rackspace Cloud Storage</value>
</data>
@ -385,12 +341,12 @@
<data name="ConsumersSelectelauthUser" xml:space="preserve">
<value>Auth Benutzer</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Wenn Sie den Selectel Cloud Storage-Service Ihrem Portal hinzufügen, können Sie mit ihm Backups Ihres Portals erstellen, um sicherzustellen, dass keine Daten verloren gehen. Verwenden Sie es auch zum Speichern von Daten und statischen Inhalten aus Ihrem Portal.</value>
</data>
<data name="ConsumersSelectelDescription" xml:space="preserve">
<value>Stellen Sie eine Verbindung mit dem Selectel Cloud Storage Service, um Daten Ihres Portals zu sichern und zu speichern.</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Wenn Sie den Selectel Cloud Storage-Service Ihrem Portal hinzufügen, können Sie mit ihm Backups Ihres Portals erstellen, um sicherzustellen, dass keine Daten verloren gehen. Verwenden Sie es auch zum Speichern von Daten und statischen Inhalten aus Ihrem Portal.</value>
</data>
<data name="ConsumersSelectelprivate_container" xml:space="preserve">
<value>Der private Container</value>
</data>
@ -475,6 +431,21 @@
<data name="Consumersusername" xml:space="preserve">
<value>Rackspace-Benutzername</value>
</data>
<data name="ConsumersVk" xml:space="preserve">
<value>VK</value>
</data>
<data name="ConsumersVkClientId" xml:space="preserve">
<value>Anwendungs-ID</value>
</data>
<data name="ConsumersVkClientSecret" xml:space="preserve">
<value>Sicherheits-Schlüssel</value>
</data>
<data name="ConsumersVkDescription" xml:space="preserve">
<value>Aktivieren Sie die Anwendung, um sich in das Portal mit einem VK Account einloggen zu können.</value>
</data>
<data name="ConsumersVkInstruction" xml:space="preserve">
<value>Mit der VK Anwendung können Sie auf Ihrer Profil-Seite die Option aktivieren, um sich mit einem VK Account einzuloggen.</value>
</data>
<data name="ConsumersWordpress" xml:space="preserve">
<value>WordPress</value>
</data>
@ -505,6 +476,21 @@
<data name="ConsumersYahooInstruction" xml:space="preserve">
<value>Durch Hinzufügen der Yahoo-Dienstanwendung können Sie neue Benutzer des ONLYOFFICE-Portals aus der Kontaktliste hinzufügen.</value>
</data>
<data name="ConsumersYandex" xml:space="preserve">
<value>Yandex</value>
</data>
<data name="ConsumersYandexClientId" xml:space="preserve">
<value>ID</value>
</data>
<data name="ConsumersYandexClientSecret" xml:space="preserve">
<value>Passwort</value>
</data>
<data name="ConsumersYandexDescription" xml:space="preserve">
<value>Aktivieren Sie die Anwendung, um sich in das Portal mit einem Yandex Account einloggen zu können.</value>
</data>
<data name="ConsumersYandexInstruction" xml:space="preserve">
<value>Mit der Yandex Anwendung können Sie auf Ihrer Profil-Seite die Option aktivieren, um sich mit einem Yandex Account einzuloggen.</value>
</data>
<data name="CouldNotRecoverPasswordForLdapUser" xml:space="preserve">
<value>Kennwortwiederherstellung für LDAP Benutzer ist verboten</value>
</data>
@ -712,6 +698,9 @@
<data name="TfaTooMuchError" xml:space="preserve">
<value>Sie haben zu viele Kurzmitteilungen gesendet. Bitte versuchen Sie es später erneut.</value>
</data>
<data name="Trial" xml:space="preserve">
<value>Test</value>
</data>
<data name="UsServerRegion" xml:space="preserve">
<value>Region US West (Oregon) </value>
</data>

View File

@ -1,64 +1,5 @@
<?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">
@ -315,6 +256,21 @@
<data name="ConsumersLinkedInSecret" xml:space="preserve">
<value>Clave de Linkedin</value>
</data>
<data name="ConsumersMailru" xml:space="preserve">
<value>Mail.ru</value>
</data>
<data name="ConsumersMailruClientId" xml:space="preserve">
<value>Id.</value>
</data>
<data name="ConsumersMailruClientSecret" xml:space="preserve">
<value>Clave secreta</value>
</data>
<data name="ConsumersMailruDescription" xml:space="preserve">
<value>Habilite la aplicación para acceder al portal utilizando una cuenta de Mail.ru.</value>
</data>
<data name="ConsumersMailruInstruction" xml:space="preserve">
<value>Cuando añada la aplicación Mail.ru, podrá habilitar el inicio de sesión en el portal mediante la cuenta Mail.ru en su página de perfil.</value>
</data>
<data name="ConsumersRackspace" xml:space="preserve">
<value>Rackspace Cloud Storage</value>
</data>
@ -354,12 +310,12 @@
<data name="ConsumersSelectelauthUser" xml:space="preserve">
<value>Nombre de usuario para autorización</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Cuando Usted agrega el servicio Selectel Cloud Storage a su portal, puede usarlo para crear copias de seguridad de su portal asegurándose de que no se perderá ningún dato. También úselo para almacenar datos y contenido estático de su portal.</value>
</data>
<data name="ConsumersSelectelDescription" xml:space="preserve">
<value>Conecte el servicio Selectel Cloud Storage para crear copia de seguridad y almacenar datos de su portal.</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Cuando Usted agrega el servicio Selectel Cloud Storage a su portal, puede usarlo para crear copias de seguridad de su portal asegurándose de que no se perderá ningún dato. También úselo para almacenar datos y contenido estático de su portal.</value>
</data>
<data name="ConsumersSelectelprivate_container" xml:space="preserve">
<value>Contenedor privado</value>
</data>
@ -438,6 +394,21 @@
<data name="Consumersusername" xml:space="preserve">
<value>Nombre de usuario de Rackspace</value>
</data>
<data name="ConsumersVk" xml:space="preserve">
<value>VK</value>
</data>
<data name="ConsumersVkClientId" xml:space="preserve">
<value>Id. de aplicación</value>
</data>
<data name="ConsumersVkClientSecret" xml:space="preserve">
<value>Clave segura</value>
</data>
<data name="ConsumersVkDescription" xml:space="preserve">
<value>Habilite la aplicación para acceder al portal con una cuenta de VK.</value>
</data>
<data name="ConsumersVkInstruction" xml:space="preserve">
<value>Cuando añada la aplicación VK, podrá habilitar el inicio de sesión en el portal utilizando la cuenta VK en su página de perfil.</value>
</data>
<data name="ConsumersWordpress" xml:space="preserve">
<value>WordPress</value>
</data>
@ -468,6 +439,21 @@
<data name="ConsumersYahooInstruction" xml:space="preserve">
<value>Al añadir la aplicación del servicio Yahoo podrá añadir usuarios al portal ONLYOFFICE de la lista de contactos.</value>
</data>
<data name="ConsumersYandex" xml:space="preserve">
<value>Yandex</value>
</data>
<data name="ConsumersYandexClientId" xml:space="preserve">
<value>Id.</value>
</data>
<data name="ConsumersYandexClientSecret" xml:space="preserve">
<value>Contraseña</value>
</data>
<data name="ConsumersYandexDescription" xml:space="preserve">
<value>Habilite la aplicación para iniciar sesión en el portal con una cuenta de Yandex.</value>
</data>
<data name="ConsumersYandexInstruction" xml:space="preserve">
<value>Cuando añada la aplicación Yandex, podrá habilitar el inicio de sesión en el portal utilizando la cuenta Yandex en su página de perfil.</value>
</data>
<data name="CouldNotRecoverPasswordForLdapUser" xml:space="preserve">
<value>Operación de recuperación de contraseña está prohibida para un usuario LDAP</value>
</data>
@ -675,6 +661,9 @@
<data name="TfaTooMuchError" xml:space="preserve">
<value>Usted ha enviado demasiados mensajes de texto. Por favor, intente de nuevo más tarde.</value>
</data>
<data name="Trial" xml:space="preserve">
<value>Periodo de prueba</value>
</data>
<data name="UsServerRegion" xml:space="preserve">
<value>Región EE.UU. Oeste (Oregón)</value>
</data>

View File

@ -1,64 +1,5 @@
<?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">
@ -321,6 +262,21 @@
<data name="ConsumersLinkedInSecret" xml:space="preserve">
<value>Clé de LinkedIn</value>
</data>
<data name="ConsumersMailru" xml:space="preserve">
<value>Mail.ru</value>
</data>
<data name="ConsumersMailruClientId" xml:space="preserve">
<value>Identifiant</value>
</data>
<data name="ConsumersMailruClientSecret" xml:space="preserve">
<value>Clé secrète</value>
</data>
<data name="ConsumersMailruDescription" xml:space="preserve">
<value>Activer l'application pour se connecter au portail via le compte Mail.ru</value>
</data>
<data name="ConsumersMailruInstruction" xml:space="preserve">
<value>Lorsque vous connectez l'application Mail.ru, vous pouvez activer la connexion au portail via votre compte Mail.ru sur la page de votre profil.</value>
</data>
<data name="ConsumersRackspace" xml:space="preserve">
<value>Rackspace Cloud Storage</value>
</data>
@ -381,12 +337,12 @@
<data name="ConsumersSelectelauthUser" xml:space="preserve">
<value>Authentification d'utilisateur</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Quand vous ajoutez le service Selectel à votre portail, vous pourrez l'utiliser pour créer des copies de sauvegarde de votre portail en vous assurant qu'aucune donnée ne sera jamais perdue. Utilisez-le aussi pour stocker les données et le contenu statique de votre portail.</value>
</data>
<data name="ConsumersSelectelDescription" xml:space="preserve">
<value>Connecter le service Selectel Cloud Storage pour créer des copies de sauvegarde et stocker des données de votre portail.</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Quand vous ajoutez le service Selectel à votre portail, vous pourrez l'utiliser pour créer des copies de sauvegarde de votre portail en vous assurant qu'aucune donnée ne sera jamais perdue. Utilisez-le aussi pour stocker les données et le contenu statique de votre portail.</value>
</data>
<data name="ConsumersSelectelprivate_container" xml:space="preserve">
<value>Conteneur Privé</value>
</data>
@ -471,6 +427,21 @@
<data name="Consumersusername" xml:space="preserve">
<value>Rackspace nom d'utilisateur</value>
</data>
<data name="ConsumersVk" xml:space="preserve">
<value>VK</value>
</data>
<data name="ConsumersVkClientId" xml:space="preserve">
<value>Identifiant de l'application</value>
</data>
<data name="ConsumersVkClientSecret" xml:space="preserve">
<value>Clé de sécurité</value>
</data>
<data name="ConsumersVkDescription" xml:space="preserve">
<value>Activer l'application pour se connecter au portail via le compte VK.</value>
</data>
<data name="ConsumersVkInstruction" xml:space="preserve">
<value>Lorsque vous ajoutez l'application VK, vous serez en mesure de vous connecter au portail via votre compte VK sur la page du profil.</value>
</data>
<data name="ConsumersWordpress" xml:space="preserve">
<value>WordPress</value>
</data>
@ -501,6 +472,21 @@
<data name="ConsumersYahooInstruction" xml:space="preserve">
<value>En ajoutant l'application de service Yahoo, vous pourrez ajouter les nouveaux utilisateurs du portail ONLYOFFICE à partir de la liste de contacts.</value>
</data>
<data name="ConsumersYandex" xml:space="preserve">
<value>Yandex</value>
</data>
<data name="ConsumersYandexClientId" xml:space="preserve">
<value>Identifiant</value>
</data>
<data name="ConsumersYandexClientSecret" xml:space="preserve">
<value> Mot de passe</value>
</data>
<data name="ConsumersYandexDescription" xml:space="preserve">
<value>Activer l'application pour vous connecter au portail via le compte Yandex.</value>
</data>
<data name="ConsumersYandexInstruction" xml:space="preserve">
<value>Lorsque vous connectez l'application Yandex, vous pouvez activer la connexion au portail via votre compte Yandex sur la page de votre profil.</value>
</data>
<data name="CouldNotRecoverPasswordForLdapUser" xml:space="preserve">
<value>La fonction de récupération du mot de passe est interdite à l'utilisateur LDAP</value>
</data>
@ -710,6 +696,9 @@
<data name="TfaTooMuchError" xml:space="preserve">
<value>Vous avez envoyé trop de messages texte. Veuillez réessayer plus tard.</value>
</data>
<data name="Trial" xml:space="preserve">
<value>Essai</value>
</data>
<data name="UsServerRegion" xml:space="preserve">
<value>Région US West (Oregon)</value>
</data>

View File

@ -1,64 +1,5 @@
<?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">
@ -396,12 +337,12 @@
<data name="ConsumersSelectelauthUser" xml:space="preserve">
<value>Auth User</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Quando aggiungi il servizio Selectel Cloud Storage al tuo portale, puoi utilizzarlo per creare copie di backup del tuo portale assicurandoti così che nessun dato sia perso. Usalo anche per memorizzare dati e contenuti statici dal tuo portale.</value>
</data>
<data name="ConsumersSelectelDescription" xml:space="preserve">
<value>Connetti Selectel Cloud Storage al backup e archivia i dati del tuo portale.</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Quando aggiungi il servizio Selectel Cloud Storage al tuo portale, puoi utilizzarlo per creare copie di backup del tuo portale assicurandoti così che nessun dato sia perso. Usalo anche per memorizzare dati e contenuti statici dal tuo portale.</value>
</data>
<data name="ConsumersSelectelprivate_container" xml:space="preserve">
<value>Contenitore privato</value>
</data>
@ -754,6 +695,9 @@
<data name="TfaTooMuchError" xml:space="preserve">
<value>Hai inviato troppi SMS. Prova più tardi.</value>
</data>
<data name="Trial" xml:space="preserve">
<value>Prova</value>
</data>
<data name="UsServerRegion" xml:space="preserve">
<value>Regione Ovest degli Stati Uniti (Oregon)</value>
</data>

View File

@ -1,64 +1,5 @@
<?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">
@ -396,12 +337,12 @@
<data name="ConsumersSelectelauthUser" xml:space="preserve">
<value>Auth User</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>When you add Selectel Cloud Storage service to your portal, you can use it to create backups of your portal making sure no data will be ever lost. Use it also to store data and static content from your portal.</value>
</data>
<data name="ConsumersSelectelDescription" xml:space="preserve">
<value>Connect Selectel Cloud Storage service to backup and store data from your portal.</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>When you add Selectel Cloud Storage service to your portal, you can use it to create backups of your portal making sure no data will be ever lost. Use it also to store data and static content from your portal.</value>
</data>
<data name="ConsumersSelectelprivate_container" xml:space="preserve">
<value>Private container</value>
</data>
@ -753,6 +694,9 @@
<data name="TfaTooMuchError" xml:space="preserve">
<value>You have sent too many text messages. Please try again later.</value>
</data>
<data name="Trial" xml:space="preserve">
<value>Trial</value>
</data>
<data name="UsServerRegion" xml:space="preserve">
<value>US West (Oregon) Region</value>
</data>

View File

@ -1,64 +1,5 @@
<?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">
@ -396,12 +337,12 @@
<data name="ConsumersSelectelauthUser" xml:space="preserve">
<value>Имя пользователя для авторизации</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Добавив сервис Selectel, вы сможете использовать его для создания резервных копий портала, чтобы предотвратить потерю данных. Также используйте его для хранения данных и статического содержимого портала.</value>
</data>
<data name="ConsumersSelectelDescription" xml:space="preserve">
<value>Подключите сервис Selectel Облачное хранилище для резервного копирования и хранения данных портала.</value>
</data>
<data name="ConsumersSelectelInstruction" xml:space="preserve">
<value>Добавив сервис Selectel, вы сможете использовать его для создания резервных копий портала, чтобы предотвратить потерю данных. Также используйте его для хранения данных и статического содержимого портала.</value>
</data>
<data name="ConsumersSelectelprivate_container" xml:space="preserve">
<value>Приватный контейнер</value>
</data>
@ -753,6 +694,9 @@
<data name="TfaTooMuchError" xml:space="preserve">
<value>Вы отправили слишком много текстовых сообщений. Повторите попытку позже.</value>
</data>
<data name="Trial" xml:space="preserve">
<value>Триал</value>
</data>
<data name="UsServerRegion" xml:space="preserve">
<value>Запад США (Орегон)</value>
</data>

View File

@ -659,4 +659,8 @@ $activity.Key
<subject resource="|subject_personal_custom_mode_profile_delete|ASC.Web.Core.PublicResources.CustomModeResource,ASC.Web.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_personal_custom_mode_profile_delete|ASC.Web.Core.PublicResources.CustomModeResource,ASC.Web.Core" />
</pattern>
<pattern id="saas_custom_mode_reg_data">
<subject resource="|subject_saas_custom_mode_reg_data|ASC.Web.Studio.PublicResources.CustomModeResource,ASC.Web.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_saas_custom_mode_reg_data|ASC.Web.Core.PublicResources.CustomModeResource,ASC.Web.Core" />
</pattern>
</patterns>

View File

@ -392,7 +392,7 @@ namespace ASC.Web.Studio.Utility
name = GetProductNameFromUrl(url);
if (string.IsNullOrEmpty(name))
{
return GetAddonNameFromUrl(name);
return GetAddonNameFromUrl(url);
}
}