Merge branch 'release/v1.0.0' of github.com:ONLYOFFICE/DocSpace into release/v1.0.0
This commit is contained in:
commit
fb56f0dcb2
@ -123,7 +123,7 @@ public class WorkContext
|
||||
INotifySender emailSender = _notifyServiceSender;
|
||||
INotifySender telegramSender = _telegramSender;
|
||||
INotifySender pushSender = _pushSender;
|
||||
|
||||
|
||||
|
||||
var postman = _configuration["core:notify:postman"];
|
||||
|
||||
@ -161,6 +161,11 @@ public class WorkContext
|
||||
}
|
||||
}
|
||||
|
||||
public void RegisterSendMethod(Func<DateTime, Task> method, string cron)
|
||||
{
|
||||
NotifyEngine.RegisterSendMethod(method, cron);
|
||||
}
|
||||
|
||||
public void RegisterSendMethod(Action<DateTime> method, string cron)
|
||||
{
|
||||
NotifyEngine.RegisterSendMethod(method, cron);
|
||||
|
@ -100,6 +100,25 @@ public class NotifyEngine : INotifyEngine, IDisposable
|
||||
_methodsEvent.Set();
|
||||
}
|
||||
|
||||
internal void RegisterSendMethod(Func<DateTime, Task> method, string cron)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(method);
|
||||
ArgumentNullOrEmptyException.ThrowIfNullOrEmpty(cron);
|
||||
|
||||
var w = new SendMethodWrapper(method, cron, _logger);
|
||||
lock (_sendMethods)
|
||||
{
|
||||
if (!_notifyScheduler.IsAlive)
|
||||
{
|
||||
_notifyScheduler.Start();
|
||||
}
|
||||
|
||||
_sendMethods.Remove(w);
|
||||
_sendMethods.Add(w);
|
||||
}
|
||||
_methodsEvent.Set();
|
||||
}
|
||||
|
||||
internal void UnregisterSendMethod(Action<DateTime> method)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(method);
|
||||
@ -124,7 +143,7 @@ public class NotifyEngine : INotifyEngine, IDisposable
|
||||
copy = _sendMethods.ToList();
|
||||
}
|
||||
|
||||
foreach(var w in copy)
|
||||
foreach (var w in copy)
|
||||
{
|
||||
if (!w.ScheduleDate.HasValue)
|
||||
{
|
||||
@ -590,6 +609,7 @@ public class NotifyEngine : INotifyEngine, IDisposable
|
||||
private readonly SemaphoreSlim _semaphore;
|
||||
private readonly CronExpression _cronExpression;
|
||||
private readonly Action<DateTime> _method;
|
||||
private readonly Func<DateTime, Task> _asyncMethod;
|
||||
private readonly ILogger _logger;
|
||||
|
||||
public DateTime? ScheduleDate { get; private set; }
|
||||
@ -608,6 +628,11 @@ public class NotifyEngine : INotifyEngine, IDisposable
|
||||
UpdateScheduleDate(DateTime.UtcNow);
|
||||
}
|
||||
|
||||
public SendMethodWrapper(Func<DateTime, Task> method, string cron, ILogger log) : this((Action<DateTime>)null, cron, log)
|
||||
{
|
||||
_asyncMethod = method;
|
||||
}
|
||||
|
||||
public void UpdateScheduleDate(DateTime d)
|
||||
{
|
||||
try
|
||||
@ -626,11 +651,18 @@ public class NotifyEngine : INotifyEngine, IDisposable
|
||||
public async Task InvokeSendMethod(DateTime d)
|
||||
{
|
||||
await _semaphore.WaitAsync();
|
||||
await Task.Run(() =>
|
||||
await Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
_method(d);
|
||||
if (_method != null)
|
||||
{
|
||||
_method(d);
|
||||
}
|
||||
else if (_asyncMethod != null)
|
||||
{
|
||||
await _asyncMethod(d);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@ -642,7 +674,7 @@ public class NotifyEngine : INotifyEngine, IDisposable
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return obj is SendMethodWrapper w && _method.Equals(w._method);
|
||||
return obj is SendMethodWrapper w && ((_method != null && _method.Equals(w._method)) || (_asyncMethod != null && _asyncMethod.Equals(w._asyncMethod)));
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
|
@ -446,6 +446,8 @@ class FilesActionStore {
|
||||
const folderIds = roomsForDelete.map((f) => f.id);
|
||||
if (isArchiveFolder) addActiveItems(null, folderIds);
|
||||
|
||||
const operationId = uniqueid("operation_");
|
||||
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
@ -455,8 +457,6 @@ class FilesActionStore {
|
||||
operationId,
|
||||
});
|
||||
|
||||
const operationId = uniqueid("operation_");
|
||||
|
||||
try {
|
||||
await removeFiles(folderIds, [], true, true).then(async (res) => {
|
||||
if (res[0]?.error) return Promise.reject(res[0].error);
|
||||
|
@ -376,10 +376,16 @@ class FilesStore {
|
||||
const folder = JSON.parse(opt?.data);
|
||||
if (!folder || !folder.id) return;
|
||||
|
||||
this.getFolderInfo(folder.id);
|
||||
api.files
|
||||
.getFolderInfo(folder.id)
|
||||
.then(() => this.setFolder(folderInfo))
|
||||
.catch(() => {
|
||||
// console.log("Folder deleted")
|
||||
});
|
||||
|
||||
console.log("[WS] update folder", folder.id, folder.title);
|
||||
|
||||
if (this.selection) {
|
||||
if (this.selection?.length) {
|
||||
const foundIndex = this.selection?.findIndex((x) => x.id === folder.id);
|
||||
if (foundIndex > -1) {
|
||||
runInAction(() => {
|
||||
|
@ -2976,7 +2976,14 @@ public class FileStorageService<T> //: IFileStorageService
|
||||
message = message.Substring(0, maxMessageLength) + "...";
|
||||
}
|
||||
|
||||
_ = _notifyClient.SendEditorMentions(file, fileLink, recipients, message);
|
||||
try
|
||||
{
|
||||
await _notifyClient.SendEditorMentions(file, fileLink, recipients, message);
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
_logger.ErrorWithException(ex);
|
||||
}
|
||||
|
||||
return showSharingSettings ? await GetSharedInfoShortFileAsync(fileId) : null;
|
||||
}
|
||||
|
@ -786,7 +786,8 @@ public class StudioNotifyService
|
||||
notifyAction = Actions.SaasAdminActivationV1;
|
||||
}
|
||||
|
||||
var confirmationUrl = _commonLinkUtility.GetConfirmationEmailUrl(u.Email, ConfirmType.EmailActivation);
|
||||
var userId = _authContext.CurrentAccount.ID;
|
||||
var confirmationUrl = _commonLinkUtility.GetConfirmationEmailUrl(u.Email, ConfirmType.EmailActivation, null, userId);
|
||||
confirmationUrl += "&first=true";
|
||||
|
||||
static string greenButtonText() => WebstudioNotifyPatternResource.ButtonConfirmEmail;
|
||||
|
@ -123,16 +123,16 @@ public class StudioNotifyServiceSender
|
||||
scope.ServiceProvider.GetService<StudioPeriodicNotify>().SendPersonalLetters(EMailSenderName, scheduleDate);
|
||||
}
|
||||
|
||||
public void SendMsgWhatsNew(DateTime scheduleDate)
|
||||
public async Task SendMsgWhatsNew(DateTime scheduleDate)
|
||||
{
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
scope.ServiceProvider.GetRequiredService<StudioWhatsNewNotify>().SendMsgWhatsNew(scheduleDate, WhatsNewType.DailyFeed);
|
||||
await scope.ServiceProvider.GetRequiredService<StudioWhatsNewNotify>().SendMsgWhatsNew(scheduleDate, WhatsNewType.DailyFeed);
|
||||
}
|
||||
|
||||
public void SendRoomsActivity(DateTime scheduleDate)
|
||||
public async Task SendRoomsActivity(DateTime scheduleDate)
|
||||
{
|
||||
using var scope = _serviceProvider.CreateScope();
|
||||
scope.ServiceProvider.GetRequiredService<StudioWhatsNewNotify>().SendMsgWhatsNew(scheduleDate, WhatsNewType.RoomsActivity);
|
||||
await scope.ServiceProvider.GetRequiredService<StudioWhatsNewNotify>().SendMsgWhatsNew(scheduleDate, WhatsNewType.RoomsActivity);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@ public class StudioWhatsNewNotify
|
||||
private readonly WorkContext _workContext;
|
||||
private readonly DisplayUserSettingsHelper _displayUserSettingsHelper;
|
||||
|
||||
public readonly static List<MessageAction?> DailyActions = new List<MessageAction?>()
|
||||
public static readonly List<MessageAction?> DailyActions = new List<MessageAction?>()
|
||||
{
|
||||
MessageAction.FileCreated,
|
||||
MessageAction.FileUpdatedRevisionComment,
|
||||
@ -57,7 +57,7 @@ public class StudioWhatsNewNotify
|
||||
MessageAction.UserUpdated
|
||||
};
|
||||
|
||||
public readonly static List<MessageAction?> RoomsActivityActions = new List<MessageAction?>()
|
||||
public static readonly List<MessageAction?> RoomsActivityActions = new List<MessageAction?>()
|
||||
{
|
||||
MessageAction.FileUploaded,
|
||||
MessageAction.UserFileUpdated,
|
||||
@ -101,7 +101,7 @@ public class StudioWhatsNewNotify
|
||||
|
||||
}
|
||||
|
||||
public void SendMsgWhatsNew(DateTime scheduleDate, WhatsNewType whatsNewType)
|
||||
public async Task SendMsgWhatsNew(DateTime scheduleDate, WhatsNewType whatsNewType)
|
||||
{
|
||||
var products = _webItemManager.GetItemsAll<IProduct>();
|
||||
|
||||
@ -117,7 +117,7 @@ public class StudioWhatsNewNotify
|
||||
|
||||
foreach (var tenantid in tenants)
|
||||
{
|
||||
SendMsgWhatsNew(tenantid, scheduleDate, whatsNewType, products);
|
||||
await SendMsgWhatsNew(tenantid, scheduleDate, whatsNewType, products);
|
||||
}
|
||||
}
|
||||
|
||||
@ -134,7 +134,7 @@ public class StudioWhatsNewNotify
|
||||
}
|
||||
}
|
||||
|
||||
private void SendMsgWhatsNew(int tenantid, DateTime scheduleDate, WhatsNewType whatsNewType, List<IProduct> products)
|
||||
private async Task SendMsgWhatsNew(int tenantid, DateTime scheduleDate, WhatsNewType whatsNewType, List<IProduct> products)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -153,11 +153,15 @@ public class StudioWhatsNewNotify
|
||||
_log.InformationStartSendWhatsNewIn(tenant.GetTenantDomain(_coreSettings), tenantid);
|
||||
foreach (var user in _userManager.GetUsers())
|
||||
{
|
||||
_log.Debug($"SendMsgWhatsNew start checking subscription: {user.Email}");//temp
|
||||
|
||||
if (!CheckSubscription(user, whatsNewType))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
_log.Debug($"SendMsgWhatsNew checking subscription complete: {user.Email}");//temp
|
||||
|
||||
_securityContext.AuthenticateMeWithoutCookie(_authManager.GetAccountByID(tenant.Id, user.Id));
|
||||
|
||||
var culture = string.IsNullOrEmpty(user.CultureName) ? tenant.GetCulture() : user.GetCulture();
|
||||
@ -169,9 +173,11 @@ public class StudioWhatsNewNotify
|
||||
|
||||
foreach (var p in products)
|
||||
{
|
||||
auditEvents.AddRange(p.GetAuditEventsAsync(scheduleDate, user.Id, tenant, whatsNewType).Result);
|
||||
auditEvents.AddRange(await p.GetAuditEventsAsync(scheduleDate, user.Id, tenant, whatsNewType));
|
||||
}
|
||||
|
||||
_log.Debug($"SendMsgWhatsNew auditEvents count : {auditEvents.Count}");//temp
|
||||
|
||||
var userActivities = new List<string>();
|
||||
|
||||
foreach (var e in auditEvents)
|
||||
@ -182,6 +188,8 @@ public class StudioWhatsNewNotify
|
||||
}
|
||||
}
|
||||
|
||||
_log.Debug($"SendMsgWhatsNew userActivities count : {userActivities.Count}");//temp
|
||||
|
||||
if (userActivities.Any())
|
||||
{
|
||||
_log.InformationSendWhatsNewTo(user.Email);
|
||||
|
@ -65,11 +65,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing m [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_enterprise_whitelabel_user_welcome_custom_mode_v1 {
|
||||
get {
|
||||
|
@ -122,7 +122,7 @@
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
|
@ -880,11 +880,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing m [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_enterprise_guest_welcome_v1 {
|
||||
get {
|
||||
@ -914,11 +914,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing m [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_enterprise_user_welcome_v1 {
|
||||
get {
|
||||
@ -993,11 +993,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing m [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_enterprise_whitelabel_guest_welcome_v1 {
|
||||
get {
|
||||
@ -1027,11 +1027,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing m [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_enterprise_whitelabel_user_welcome_v1 {
|
||||
get {
|
||||
@ -1314,11 +1314,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing m [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_opensource_guest_welcome_v1 {
|
||||
get {
|
||||
@ -1363,11 +1363,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing m [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_opensource_user_welcome_v1 {
|
||||
get {
|
||||
@ -2019,11 +2019,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing mo [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_saas_guest_welcome_v1 {
|
||||
get {
|
||||
@ -2148,11 +2148,11 @@ namespace ASC.Web.Core.PublicResources {
|
||||
///
|
||||
///Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
///
|
||||
///*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
///
|
||||
///*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
///
|
||||
///*# Collaborate on documents* with two co-editing [rest of string was truncated]";.
|
||||
///*# Collaborate on documents* with two co-editing m [rest of string was truncated]";.
|
||||
/// </summary>
|
||||
public static string pattern_saas_user_welcome_v1 {
|
||||
get {
|
||||
|
@ -349,7 +349,7 @@ You will get more tips on how to use your web-office. You can cancel the subscri
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
@ -381,7 +381,7 @@ You will get more tips on how to use your web-office. You can cancel the subscri
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
@ -537,7 +537,7 @@ You will get more tips on how to use your web-office. You can cancel the subscri
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
@ -916,7 +916,7 @@ ONLYOFFICE Team
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
@ -1528,7 +1528,7 @@ ONLYOFFICE Team
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
@ -1549,7 +1549,7 @@ ONLYOFFICE Team
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
@ -1570,7 +1570,7 @@ ONLYOFFICE Team
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
@ -1619,7 +1619,7 @@ ONLYOFFICE Team
|
||||
|
||||
Welcome to ONLYOFFICE DocSpace! Your user profile has been successfully added to "${__VirtualRootPath}":"${__VirtualRootPath}". Now you can:
|
||||
|
||||
*#* Work with other users in the room you are invited to: *collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
*# Work with other users in the room you are invited to*: collaboration rooms for real-time co-authoring or custom rooms with flexible settings for any purpose*.
|
||||
|
||||
*# Work with files of different formats*: text documents, spreadsheets, presentations, digital forms, PDFs, e-books, multimedia.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user