Merge branch 'master' into feature/scope

# Conflicts:
#	web/ASC.Web.Core/Notify/NotifyConfiguration.cs
This commit is contained in:
pavelbannov 2020-09-09 18:18:34 +03:00
commit cc9e0e1374
27 changed files with 380 additions and 298 deletions

View File

@ -283,7 +283,7 @@ namespace ASC.Notify.Engine
{
if (request.Recipient is IDirectRecipient)
{
var subscriptionSource = request.NotifySource.GetSubscriptionProvider();
var subscriptionSource = request.GetSubscriptionProvider(serviceScope);
if (!request.IsNeedCheckSubscriptions || !subscriptionSource.IsUnsubscribe(request.Recipient as IDirectRecipient, request.NotifyAction, request.ObjectID))
{
var directresponses = new List<SendResponse>(1);
@ -309,7 +309,7 @@ namespace ASC.Notify.Engine
}
else
{
var recipientProvider = request.NotifySource.GetRecipientsProvider();
var recipientProvider = request.GetRecipientsProvider(serviceScope);
try
{
@ -358,9 +358,9 @@ namespace ASC.Notify.Engine
try
{
PrepareRequestFillSenders(request);
PrepareRequestFillPatterns(request);
PrepareRequestFillTags(request);
PrepareRequestFillSenders(request, serviceScope);
PrepareRequestFillPatterns(request, serviceScope);
PrepareRequestFillTags(request, serviceScope);
}
catch (Exception ex)
{
@ -421,7 +421,7 @@ namespace ASC.Notify.Engine
{
if (request == null) throw new ArgumentNullException("request");
var recipientProvider = request.NotifySource.GetRecipientsProvider();
var recipientProvider = request.GetRecipientsProvider(serviceScope);
var recipient = request.Recipient as IDirectRecipient;
var addresses = recipient.Addresses;
@ -450,7 +450,7 @@ namespace ASC.Notify.Engine
noticeMessage.Pattern = pattern;
noticeMessage.ContentType = pattern.ContentType;
noticeMessage.AddArgument(request.Arguments.ToArray());
var patternProvider = request.NotifySource.GetPatternProvider();
var patternProvider = request.GetPatternProvider(serviceScope);
var formatter = patternProvider.GetFormatter(pattern);
try
@ -500,11 +500,11 @@ namespace ASC.Notify.Engine
}
}
private void PrepareRequestFillSenders(NotifyRequest request)
private void PrepareRequestFillSenders(NotifyRequest request, IServiceScope serviceScope)
{
if (request.SenderNames == null)
{
var subscriptionProvider = request.NotifySource.GetSubscriptionProvider();
var subscriptionProvider = request.GetSubscriptionProvider(serviceScope);
var senderNames = new List<string>();
senderNames.AddRange(subscriptionProvider.GetSubscriptionMethod(request.NotifyAction, request.Recipient) ?? new string[0]);
@ -514,14 +514,14 @@ namespace ASC.Notify.Engine
}
}
private void PrepareRequestFillPatterns(NotifyRequest request)
private void PrepareRequestFillPatterns(NotifyRequest request, IServiceScope serviceScope)
{
if (request.Patterns == null)
{
request.Patterns = new IPattern[request.SenderNames.Length];
if (request.Patterns.Length == 0) return;
var apProvider = request.NotifySource.GetPatternProvider();
var apProvider = request.GetPatternProvider(serviceScope);
for (var i = 0; i < request.SenderNames.Length; i++)
{
var senderName = request.SenderNames[i];
@ -540,9 +540,9 @@ namespace ASC.Notify.Engine
}
}
private void PrepareRequestFillTags(NotifyRequest request)
private void PrepareRequestFillTags(NotifyRequest request, IServiceScope serviceScope)
{
var patternProvider = request.NotifySource.GetPatternProvider();
var patternProvider = request.GetPatternProvider(serviceScope);
foreach (var pattern in request.Patterns)
{
IPatternFormatter formatter;

View File

@ -41,7 +41,7 @@ namespace ASC.Notify.Engine
{
public class NotifyRequest
{
public INotifySource NotifySource { get; internal set; }
private INotifySource NotifySource { get; set; }
public INotifyAction NotifyAction { get; internal set; }
@ -142,6 +142,26 @@ namespace ASC.Notify.Engine
internal NoticeMessage CreateMessage(IDirectRecipient recipient)
{
return new NoticeMessage(recipient, NotifyAction, ObjectID);
}
public IActionProvider GetActionProvider(IServiceScope scope)
{
return ((INotifySource)scope.ServiceProvider.GetService(NotifySource.GetType())).GetActionProvider();
}
public IPatternProvider GetPatternProvider(IServiceScope scope)
{
return ((INotifySource)scope.ServiceProvider.GetService(NotifySource.GetType())).GetPatternProvider();
}
public IRecipientProvider GetRecipientsProvider(IServiceScope scope)
{
return ((INotifySource)scope.ServiceProvider.GetService(NotifySource.GetType())).GetRecipientsProvider();
}
public ISubscriptionProvider GetSubscriptionProvider(IServiceScope scope)
{
return ((INotifySource)scope.ServiceProvider.GetService(NotifySource.GetType())).GetSubscriptionProvider();
}
}
}

View File

@ -68,14 +68,14 @@ namespace ASC.Data.Storage.Configuration
public string Data { get; set; }
public string Type { get; set; }
public string Path { get; set; }
public ACL Acl { get; set; }
public ACL Acl { get; set; } = ACL.Read;
public string VirtualPath { get; set; }
public TimeSpan Expires { get; set; }
public bool Visible { get; set; }
public bool AppendTenantId { get; set; }
public bool Visible { get; set; } = true;
public bool AppendTenantId { get; set; } = true;
public bool Public { get; set; }
public bool DisableMigrate { get; set; }
public bool Count { get; set; }
public bool Count { get; set; } = true;
public IEnumerable<Module> Domain { get; set; }
}

View File

@ -100,7 +100,9 @@
},
"controlpanel": {
"url": ""
}
},
"support-feedback": "https://helpdesk.onlyoffice.com",
"teamlab-site": "http://www.onlyoffice.com"
},
"ConnectionStrings": {
"default": {

View File

@ -41,11 +41,11 @@
"type": "ASC.FederatedLogin.LoginProviders.BoxLoginProvider, ASC.FederatedLogin"
},
{
"key": "box",
"key": "Box",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "box",
"key": "Box",
"type": "ASC.FederatedLogin.LoginProviders.BoxLoginProvider, ASC.FederatedLogin"
}
],
@ -191,11 +191,11 @@
"type": "ASC.FederatedLogin.LoginProviders.FacebookLoginProvider, ASC.FederatedLogin"
},
{
"key": "facebook",
"key": "Facebook",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "facebook",
"key": "Facebook",
"type": "ASC.FederatedLogin.LoginProviders.FacebookLoginProvider, ASC.FederatedLogin"
}
],
@ -252,11 +252,11 @@
"type": "ASC.FederatedLogin.LoginProviders.GoogleLoginProvider, ASC.FederatedLogin"
},
{
"key": "google",
"key": "Google",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "google",
"key": "Google",
"type": "ASC.FederatedLogin.LoginProviders.GoogleLoginProvider, ASC.FederatedLogin"
}
],
@ -283,11 +283,11 @@
"type": "ASC.FederatedLogin.LoginProviders.LinkedInLoginProvider, ASC.FederatedLogin"
},
{
"key": "linkedin",
"key": "LinkedIn",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "linkedin",
"key": "LinkedIn",
"type": "ASC.FederatedLogin.LoginProviders.LinkedInLoginProvider, ASC.FederatedLogin"
}
],
@ -406,11 +406,11 @@
"type": "ASC.FederatedLogin.LoginProviders.TwitterLoginProvider, ASC.FederatedLogin"
},
{
"key": "twitter",
"key": "Twitter",
"type": "ASC.Core.Common.Configuration.Consumer, ASC.Core.Common"
},
{
"key": "twitter",
"key": "Twitter",
"type": "ASC.FederatedLogin.LoginProviders.TwitterLoginProvider, ASC.FederatedLogin"
}
],

View File

@ -70,6 +70,29 @@
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Update="Services\NotifyService\FilesPatternResource.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>FilesPatternResource.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Services\NotifyService\FilesPatternResource.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>FilesPatternResource.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Remove="Services\NotifyService\patterns.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Services\NotifyService\patterns.xml" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\FilesCommonResource.de.resx">
<DependentUpon>FilesCommonResource.resx</DependentUpon>

View File

@ -36,7 +36,8 @@ using ASC.Web.Core;
using ASC.Web.Core.PublicResources;
using ASC.Web.Files.Classes;
using ASC.Web.Files.Core.Search;
using ASC.Web.Studio.Core.Notify;
namespace ASC.Web.Files.Configuration
{
public class ProductEntryPoint : Product
@ -60,14 +61,16 @@ namespace ASC.Web.Files.Configuration
// FilesSpaceUsageStatManager filesSpaceUsageStatManager,
CoreBaseSettings coreBaseSettings,
AuthContext authContext,
UserManager userManager
UserManager userManager,
IServiceProvider serviceProvider
// SubscriptionManager subscriptionManager
)
{
// FilesSpaceUsageStatManager = filesSpaceUsageStatManager;
CoreBaseSettings = coreBaseSettings;
AuthContext = authContext;
UserManager = userManager;
UserManager = userManager;
ServiceProvider = serviceProvider;
//SubscriptionManager = subscriptionManager;
}
@ -99,8 +102,12 @@ namespace ASC.Web.Files.Configuration
AdminOpportunities = adminOpportunities,
UserOpportunities = userOpportunities,
CanNotBeDisabled = true,
};
};
if (ServiceProvider != null)
{
NotifyConfiguration.Configure(ServiceProvider);
}
//SearchHandlerManager.Registry(new SearchHandler());
}
@ -175,6 +182,7 @@ namespace ASC.Web.Files.Configuration
{
if (services.TryAddScoped<ProductEntryPoint>())
{
services.TryAddScoped<IWebItem, ProductEntryPoint>();
return services
.AddFilesSpaceUsageStatManagerService()
.AddCoreBaseSettingsService()

View File

@ -32,7 +32,7 @@ using ASC.Core;
using ASC.Files.Core.Resources;
using ASC.Notify.Model;
using ASC.Web.Core.Subscriptions;
using ASC.Web.Files.Services.NotifyService;
using ASC.Files.Core.Services.NotifyService;
namespace ASC.Web.Files.Classes
{

View File

@ -354,9 +354,14 @@ namespace ASC.Files.Core.Data
private FileShareRecord ToFileShareRecord(SecurityTreeRecord r)
{
var result = ToFileShareRecord(r.DbFilesSecurity);
result.EntryId = r.DbFolderTree?.FolderId;
result.Level = r.DbFolderTree?.Level ?? -1;
var result = ToFileShareRecord(r.DbFilesSecurity);
if (r.DbFolderTree != null)
{
result.EntryId = r.DbFolderTree.FolderId;
}
result.Level = r.DbFolderTree?.Level ?? -1;
return result;
}
}

View File

@ -193,14 +193,16 @@ namespace ASC.Files.Core.Data
Query(FilesDbContext.Tag)
.Join(FilesDbContext.TagLink, r => r.Id, l => l.TagId, (tag, link) => new TagLinkData { Tag = tag, Link = link })
.Where(r => r.Link.TenantId == r.Tag.TenantId)
.Where(r => r.Tag.Flag == TagType.New && r.Link.CreateOn <= TenantUtil.DateTimeNow().AddMonths(-1));
.Where(r => r.Tag.Flag == TagType.New && r.Link.CreateOn <= TenantUtil.DateTimeNow().AddMonths(-1))
.ToList();
foreach (var row in mustBeDeleted)
{
var linksToRemove = Query(FilesDbContext.TagLink)
.Where(r => r.TagId == row.Link.TagId)
.Where(r => r.EntryId == row.Link.EntryId)
.Where(r => r.EntryType == row.Link.EntryType);
.Where(r => r.EntryType == row.Link.EntryType)
.ToList();
FilesDbContext.TagLink.RemoveRange(linksToRemove);
}

View File

@ -60,7 +60,7 @@ using ASC.Web.Files.Classes;
using ASC.Web.Files.Core.Search;
using ASC.Web.Files.Helpers;
using ASC.Web.Files.Services.DocumentService;
using ASC.Web.Files.Services.NotifyService;
using ASC.Files.Core.Services.NotifyService;
using ASC.Web.Files.Services.WCFService.FileOperations;
using ASC.Web.Files.ThirdPartyApp;
using ASC.Web.Files.Utils;

View File

@ -417,7 +417,7 @@ namespace ASC.Web.Files.Classes
id = my ? folderDao.GetFolderIDUser(true) : folderDao.GetFolderIDCommon(true);
//Copy start document
if (AdditionalWhiteLabelSettings.Instance(SettingsManager).StartDocsEnabled)
if (SettingsManager.LoadForDefaultTenant<AdditionalWhiteLabelSettings>().StartDocsEnabled)
{
try
{

View File

@ -39,7 +39,7 @@ using ASC.Files.Core.Resources;
using ASC.Web.Core.Files;
using ASC.Web.Files.Classes;
using ASC.Web.Files.Helpers;
using ASC.Web.Files.Services.NotifyService;
using ASC.Files.Core.Services.NotifyService;
using ASC.Web.Studio.Utility;
using Microsoft.AspNetCore.Builder;

View File

@ -593,13 +593,14 @@ namespace ASC.Web.Files.Services.DocumentService
set { }
get
{
if (CoreBaseSettings.Standalone) return null;
if (!AdditionalWhiteLabelSettings.Instance(SettingsManager).FeedbackAndSupportEnabled) return null;
if (CoreBaseSettings.Standalone) return null;
var settings = SettingsManager.LoadForDefaultTenant<AdditionalWhiteLabelSettings>();
if (!settings.FeedbackAndSupportEnabled) return null;
return new FeedbackConfig
{
Url = BaseCommonLinkUtility.GetRegionalUrl(
AdditionalWhiteLabelSettings.Instance(SettingsManager).FeedbackAndSupportUrl,
settings.FeedbackAndSupportUrl,
CultureInfo.CurrentCulture.TwoLetterISOLanguageName),
};
}

View File

@ -52,7 +52,7 @@ using ASC.Web.Files.Classes;
using ASC.Web.Files.Core;
using ASC.Web.Files.Core.Entries;
using ASC.Web.Files.Helpers;
using ASC.Web.Files.Services.NotifyService;
using ASC.Files.Core.Services.NotifyService;
using ASC.Web.Files.ThirdPartyApp;
using ASC.Web.Files.Utils;

View File

@ -1,215 +1,215 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ASC.Web.Files.Services.NotifyService {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class FilesPatternResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal FilesPatternResource() {
}
/// <summary>
/// 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 {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ASC.Web.Files.Services.NotifyService.FilesPatternResource", typeof(FilesPatternResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// 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 {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ASC.Files.Core.Services.NotifyService {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
public class FilesPatternResource {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal FilesPatternResource() {
}
/// <summary>
/// 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 {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ASC.Files.Core.Services.NotifyService.FilesPatternResource", typeof(FilesPatternResource).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// 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 {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to h1. All signers completed $Message
///
///This is a mail message to notify you that all signers completed &quot;$DocumentTitle&quot;:&quot;$DocumentURL&quot;.
///
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal.^.
/// </summary>
public static string pattern_DocuSignComplete {
get {
return ResourceManager.GetString("pattern_DocuSignComplete", resourceCulture);
}
}
/// <summary>
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal.^.
/// </summary>
public static string pattern_DocuSignComplete {
get {
return ResourceManager.GetString("pattern_DocuSignComplete", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to h1. $Message: $DocumentTitle
///
///Watch your DocuSign account for more information.
///
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal.^.
/// </summary>
public static string pattern_DocuSignStatus {
get {
return ResourceManager.GetString("pattern_DocuSignStatus", resourceCulture);
}
}
/// <summary>
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal.^.
/// </summary>
public static string pattern_DocuSignStatus {
get {
return ResourceManager.GetString("pattern_DocuSignStatus", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to h1. &quot;$DocumentTitle&quot;:&quot;$DocumentURL&quot;
///
///This is a mail message to notify you that you have mentioned by &quot;$__AuthorName&quot;:&quot;$__AuthorUrl&quot;.
///
///$Message
///
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal.^.
/// </summary>
public static string pattern_EditorMentions {
get {
return ResourceManager.GetString("pattern_EditorMentions", resourceCulture);
}
}
/// <summary>
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal.^.
/// </summary>
public static string pattern_EditorMentions {
get {
return ResourceManager.GetString("pattern_EditorMentions", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to h1. Mailing completed
///
///This is a mail message to notify you that you have requested the mailing of $MailsCount messages and the process is now complete. $Message
///
///The successfully sent mail messages can be found in your &quot;Sent&quot;:&quot;$__VirtualRootPath/addons/mail/#sent&quot; folder of the Mail module.
///
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal.^.
/// </summary>
public static string pattern_MailMergeEnd {
get {
return ResourceManager.GetString("pattern_MailMergeEnd", resourceCulture);
}
}
/// <summary>
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal.^.
/// </summary>
public static string pattern_MailMergeEnd {
get {
return ResourceManager.GetString("pattern_MailMergeEnd", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to h1. Access granted to document: &quot;$DocumentTitle&quot;:&quot;$DocumentURL&quot;
///
///$__DateTime &quot;$__AuthorName&quot;:&quot;$__AuthorUrl&quot; granted you the access to the &quot;$DocumentTitle&quot;:&quot;$DocumentURL&quot; document with the following access rights: &quot;$AccessRights&quot;.
///
///$Message.
/// </summary>
public static string pattern_ShareDocument {
get {
return ResourceManager.GetString("pattern_ShareDocument", resourceCulture);
}
}
/// <summary>
///$Message.
/// </summary>
public static string pattern_ShareDocument {
get {
return ResourceManager.GetString("pattern_ShareDocument", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to h1. Access granted to folder: &quot;$DocumentTitle&quot;:&quot;$__VirtualRootPath/products/files/#$FolderID&quot;
///
///$__DateTime &quot;$__AuthorName&quot;:&quot;$__AuthorUrl&quot; granted you the access to the &quot;$DocumentTitle&quot;:&quot;$__VirtualRootPath/products/files/#$FolderID&quot; folder with the following access rights: &quot;$AccessRights&quot;.
///
///$Message.
/// </summary>
public static string pattern_ShareFolder {
get {
return ResourceManager.GetString("pattern_ShareFolder", resourceCulture);
}
}
/// <summary>
///$Message.
/// </summary>
public static string pattern_ShareFolder {
get {
return ResourceManager.GetString("pattern_ShareFolder", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to &lt;patterns&gt;
/// &lt;formatter type=&quot;ASC.Notify.Patterns.NVelocityPatternFormatter, ASC.Common&quot; /&gt;
/// &lt;formatter type=&quot;ASC.Notify.Patterns.NVelocityPatternFormatter, ASC.Core.Common&quot; /&gt;
///
/// &lt;pattern id=&quot;DocuSignComplete&quot; sender=&quot;email.sender&quot;&gt;
/// &lt;subject resource=&quot;|subject_DocuSignComplete|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files&quot; /&gt;
/// &lt;body styler=&quot;ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile&quot; resource=&quot;|pattern_DocuSignComplete|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files&quot; /&gt;
/// &lt;subject resource=&quot;|subject_DocuSignComplete|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core&quot; /&gt;
/// &lt;body styler=&quot;ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile&quot; resource=&quot;|pattern_DocuSignComplete|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core&quot; /&gt;
/// &lt;/pattern&gt;
/// &lt;pattern id=&quot;DocuSignComplete&quot; se [rest of string was truncated]&quot;;.
/// </summary>
public static string patterns {
get {
return ResourceManager.GetString("patterns", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. All signers completed $DocumentTitle.
/// </summary>
public static string subject_DocuSignComplete {
get {
return ResourceManager.GetString("subject_DocuSignComplete", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Sign status changed.
/// </summary>
public static string subject_DocuSignStatus {
get {
return ResourceManager.GetString("subject_DocuSignStatus", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Mentioned in document.
/// </summary>
public static string subject_EditorMentions {
get {
return ResourceManager.GetString("subject_EditorMentions", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Mailing is complete..
/// </summary>
public static string subject_MailMergeEnd {
get {
return ResourceManager.GetString("subject_MailMergeEnd", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Access granted to document: $DocumentTitle.
/// </summary>
public static string subject_ShareDocument {
get {
return ResourceManager.GetString("subject_ShareDocument", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Access granted to folder: $DocumentTitle.
/// </summary>
public static string subject_ShareFolder {
get {
return ResourceManager.GetString("subject_ShareFolder", resourceCulture);
}
}
}
}
/// &lt;pattern id=&quot;DocuSignComplete&quot; [rest of string was truncated]&quot;;.
/// </summary>
public static string patterns {
get {
return ResourceManager.GetString("patterns", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. All signers completed $DocumentTitle.
/// </summary>
public static string subject_DocuSignComplete {
get {
return ResourceManager.GetString("subject_DocuSignComplete", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Sign status changed.
/// </summary>
public static string subject_DocuSignStatus {
get {
return ResourceManager.GetString("subject_DocuSignStatus", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Mentioned in document.
/// </summary>
public static string subject_EditorMentions {
get {
return ResourceManager.GetString("subject_EditorMentions", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Mailing is complete..
/// </summary>
public static string subject_MailMergeEnd {
get {
return ResourceManager.GetString("subject_MailMergeEnd", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Access granted to document: $DocumentTitle.
/// </summary>
public static string subject_ShareDocument {
get {
return ResourceManager.GetString("subject_ShareDocument", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Documents. Access granted to folder: $DocumentTitle.
/// </summary>
public static string subject_ShareFolder {
get {
return ResourceManager.GetString("subject_ShareFolder", resourceCulture);
}
}
}
}

View File

@ -41,7 +41,7 @@ using ASC.Web.Files.Classes;
using Microsoft.Extensions.DependencyInjection;
namespace ASC.Web.Files.Services.NotifyService
namespace ASC.Files.Core.Services.NotifyService
{
public class NotifyClient
{

View File

@ -26,7 +26,7 @@
using ASC.Notify.Model;
namespace ASC.Web.Files.Services.NotifyService
namespace ASC.Files.Core.Services.NotifyService
{
public static class NotifyConstants
{

View File

@ -28,14 +28,14 @@ using System;
using ASC.Common;
using ASC.Core;
using ASC.Core.Notify;
using ASC.Core.Notify;
using ASC.Notify.Model;
using ASC.Notify.Patterns;
using ASC.Notify.Recipients;
using NotifySourceBase = ASC.Core.Notify.NotifySource;
namespace ASC.Web.Files.Services.NotifyService
namespace ASC.Files.Core.Services.NotifyService
{
public class NotifySource : NotifySourceBase
{

View File

@ -1,30 +1,30 @@
<patterns>
<formatter type="ASC.Notify.Patterns.NVelocityPatternFormatter, ASC.Common" />
<formatter type="ASC.Notify.Patterns.NVelocityPatternFormatter, ASC.Core.Common" />
<pattern id="DocuSignComplete" sender="email.sender">
<subject resource="|subject_DocuSignComplete|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_DocuSignComplete|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_DocuSignComplete|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_DocuSignComplete|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
</pattern>
<pattern id="DocuSignComplete" sender="messanger.sender">
<subject resource="|subject_DocuSignComplete|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_DocuSignComplete|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.JabberStyler, ASC.Notify.Textile">$DocumentURL</body>
</pattern>
<pattern id="DocuSignStatus" sender="email.sender">
<subject resource="|subject_DocuSignStatus|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_DocuSignStatus|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_DocuSignStatus|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_DocuSignStatus|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
</pattern>
<pattern id="DocuSignStatus" sender="messanger.sender">
<subject resource="|subject_DocuSignStatus|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_DocuSignStatus|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.JabberStyler, ASC.Notify.Textile">$Message: $DocumentTitle</body>
</pattern>
<pattern id="MailMergeEnd" sender="email.sender">
<subject resource="|subject_MailMergeEnd|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_MailMergeEnd|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_MailMergeEnd|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_MailMergeEnd|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
</pattern>
<pattern id="MailMergeEnd" sender="messanger.sender">
<subject resource="|subject_MailMergeEnd|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_MailMergeEnd|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.JabberStyler, ASC.Notify.Textile">$__AuthorName
$Message
@ -32,11 +32,11 @@ $Message
</pattern>
<pattern id="ShareDocument" sender="email.sender">
<subject resource="|subject_ShareDocument|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_ShareDocument|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_ShareDocument|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_ShareDocument|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
</pattern>
<pattern id="ShareDocument" sender="messanger.sender">
<subject resource="|subject_ShareDocument|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_ShareDocument|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.JabberStyler, ASC.Notify.Textile">$__AuthorName
$AccessRights
@ -48,11 +48,11 @@ $DocumentURL
</pattern>
<pattern id="ShareFolder" sender="email.sender">
<subject resource="|subject_ShareFolder|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_ShareFolder|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_ShareFolder|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_ShareFolder|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
</pattern>
<pattern id="ShareFolder" sender="messanger.sender">
<subject resource="|subject_ShareFolder|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_ShareFolder|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.JabberStyler, ASC.Notify.Textile">$__AuthorName
$AccessRights
@ -64,11 +64,11 @@ $__VirtualRootPath/products/files/#$FolderID
</pattern>
<pattern id="EditorMentions" sender="email.sender">
<subject resource="|subject_EditorMentions|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_EditorMentions|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_EditorMentions|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_EditorMentions|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
</pattern>
<pattern id="EditorMentions" sender="messanger.sender">
<subject resource="|subject_EditorMentions|ASC.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Web.Files" />
<subject resource="|subject_EditorMentions|ASC.Files.Core.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.JabberStyler, ASC.Notify.Textile">$__AuthorName
$DocumentTitle

View File

@ -41,7 +41,7 @@ using ASC.Web.Core.Files;
using ASC.Web.Core.Users;
using ASC.Web.Files.Classes;
using ASC.Web.Files.Services.DocumentService;
using ASC.Web.Files.Services.NotifyService;
using ASC.Files.Core.Services.NotifyService;
using ASC.Web.Files.Services.WCFService;
using Microsoft.Extensions.Options;

View File

@ -7,6 +7,7 @@ using ASC.Api.Documents;
using ASC.Common;
using ASC.Web.Files;
using ASC.Web.Files.HttpHandlers;
using ASC.Web.Studio.Core.Notify;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
@ -42,7 +43,8 @@ namespace ASC.Files
.AddFileHandlerService()
.AddChunkedUploaderHandlerService()
.AddThirdPartyAppHandlerService()
.AddDocuSignHandlerService();
.AddDocuSignHandlerService()
.AddNotifyConfiguration();
base.ConfigureServices(services);
}

View File

@ -1821,6 +1821,28 @@ namespace ASC.Api.Settings
return changed;
}
[Read("payment")]
public object PaymentSettings()
{
var settings = SettingsManager.LoadForDefaultTenant<AdditionalWhiteLabelSettings>();
var currentQuota = TenantExtra.GetTenantQuota();
var currentTariff = TenantExtra.GetCurrentTariff();
return
new
{
settings.SalesEmail,
settings.FeedbackAndSupportUrl,
settings.BuyUrl,
CoreBaseSettings.Standalone,
currentLicense = new
{
currentQuota.Trial,
currentTariff.DueDate.Date
}
};
}
private readonly int maxCount = 10;
private readonly int expirationMinutes = 2;
private void CheckCache(string basekey)

View File

@ -48,8 +48,6 @@ using ASC.Web.Core.Users;
using ASC.Web.Core.WhiteLabel;
using ASC.Web.Studio.Utility;
using Autofac.Core;
using Google.Protobuf;
using Microsoft.Extensions.Configuration;
@ -240,14 +238,14 @@ namespace ASC.Web.Studio.Core.Notify
#endregion
}
private static void BeforeTransferRequest(NotifyEngine sender, NotifyRequest request, IServiceScope serviceScope)
private static void BeforeTransferRequest(NotifyEngine sender, NotifyRequest request, IServiceScope scope)
{
var aid = Guid.Empty;
var aname = string.Empty;
var tenant = serviceScope.ServiceProvider.GetService<TenantManager>().GetCurrentTenant();
var authContext = serviceScope.ServiceProvider.GetService<AuthContext>();
var userManager = serviceScope.ServiceProvider.GetService<UserManager>();
var displayUserSettingsHelper = serviceScope.ServiceProvider.GetService<DisplayUserSettingsHelper>();
var tenant = scope.ServiceProvider.GetService<TenantManager>().GetCurrentTenant();
var authContext = scope.ServiceProvider.GetService<AuthContext>();
var userManager = scope.ServiceProvider.GetService<UserManager>();
var displayUserSettingsHelper = scope.ServiceProvider.GetService<DisplayUserSettingsHelper>();
if (authContext.IsAuthenticated)
{
@ -260,9 +258,8 @@ namespace ASC.Web.Studio.Core.Notify
.Replace("<", "&#60");
}
}
using var scope = ServiceProvider.CreateScope();
var scopeClass = scope.ServiceProvider.GetService<NotifyConfigurationScope>();
var (_, webItemSecurity, _, options, tenantExtra, _, webItemManager, configuration, tenantLogoManager, additionalWhiteLabelSettingsHelper, tenantUtil, coreBaseSettings, commonLinkUtility, settingsManager, studioNotifyHelper) = scopeClass;
var (_, _, _, options, tenantExtra, _, webItemManager, configuration, tenantLogoManager, additionalWhiteLabelSettingsHelper, tenantUtil, coreBaseSettings, commonLinkUtility, settingsManager, studioNotifyHelper) = scopeClass;
var log = options.CurrentValue;
commonLinkUtility.GetLocationByRequest(out var product, out var module);
@ -418,13 +415,13 @@ namespace ASC.Web.Studio.Core.Notify
out TenantExtra tenantExtra,
out WebItemManagerSecurity webItemManagerSecurity,
out WebItemManager webItemManager,
out IConfiguration configuration,
out IConfiguration configuration,
out TenantLogoManager tenantLogoManager,
out AdditionalWhiteLabelSettingsHelper additionalWhiteLabelSettingsHelper,
out TenantUtil tenantUtil,
out TenantUtil tenantUtil,
out CoreBaseSettings coreBaseSettings,
out CommonLinkUtility commonLinkUtility,
out SettingsManager settingsManager,
out SettingsManager settingsManager,
out StudioNotifyHelper studioNotifyHelper)
{
tenantManager = TenantManager;
@ -441,7 +438,7 @@ namespace ASC.Web.Studio.Core.Notify
coreBaseSettings = CoreBaseSettings;
commonLinkUtility = CommonLinkUtility;
settingsManager = SettingsManager;
studioNotifyHelper = StudioNotifyHelper;
studioNotifyHelper = StudioNotifyHelper;
}
}
@ -449,25 +446,30 @@ namespace ASC.Web.Studio.Core.Notify
{
public static DIHelper AddNotifyConfiguration(this DIHelper services)
{
services.TryAddScoped<NotifyConfigurationScope>();
if (services.TryAddScoped<NotifyConfigurationScope>())
{
return services
.AddJabberStylerService()
.AddTextileStylerService()
.AddPushStylerService()
.AddTenantManagerService()
.AddAuthContextService()
.AddUserManagerService()
.AddDisplayUserSettingsService()
.AddTenantExtraService()
.AddWebItemManagerSecurity()
.AddWebItemManager()
.AddTenantLogoManagerService()
.AddTenantUtilService()
.AddCoreBaseSettingsService()
.AddAdditionalWhiteLabelSettingsService()
.AddCommonLinkUtilityService()
.AddMailWhiteLabelSettingsService();
return services
.AddJabberStylerService()
.AddTextileStylerService()
.AddPushStylerService()
.AddTenantManagerService()
.AddAuthContextService()
.AddUserManagerService()
.AddDisplayUserSettingsService()
.AddTenantExtraService()
.AddWebItemManagerSecurity()
.AddWebItemManager()
.AddTenantLogoManagerService()
.AddTenantUtilService()
.AddCoreBaseSettingsService()
.AddAdditionalWhiteLabelSettingsService()
.AddCommonLinkUtilityService()
.AddMailWhiteLabelSettingsService()
.AddStudioNotifyHelperService();
}
return services;
}
}
}

View File

@ -144,7 +144,7 @@ namespace ASC.Web.Studio.Core.Notify
if (string.IsNullOrEmpty(site)) throw new ArgumentNullException("site");
message = (message ?? "").Trim();
var salesEmail = AdditionalWhiteLabelSettings.Instance(SettingsManager).SalesEmail ?? SetupInfo.SalesEmail;
var salesEmail = SettingsManager.LoadForDefaultTenant<AdditionalWhiteLabelSettings>().SalesEmail ?? SetupInfo.SalesEmail;
var recipient = (IRecipient)(new DirectRecipient(AuthContext.CurrentAccount.ID.ToString(), string.Empty, new[] { salesEmail }, false));

View File

@ -488,7 +488,7 @@ namespace ASC.Web.Studio.Utility
public string GetHelpLink(SettingsManager settingsManager, AdditionalWhiteLabelSettingsHelper additionalWhiteLabelSettingsHelper, bool inCurrentCulture = true)
{
if (!AdditionalWhiteLabelSettings.Instance(settingsManager).HelpCenterEnabled)
if (!settingsManager.LoadForDefaultTenant<AdditionalWhiteLabelSettings>().HelpCenterEnabled)
return string.Empty;
var url = additionalWhiteLabelSettingsHelper.DefaultHelpCenterUrl;

View File

@ -123,11 +123,6 @@ namespace ASC.Web.Core.WhiteLabel
}
}
public static AdditionalWhiteLabelSettings Instance(SettingsManager settingsManager)
{
return settingsManager.LoadForDefaultTenant<AdditionalWhiteLabelSettings>();
}
public ISettings GetDefault(IServiceProvider serviceProvider)
{
return GetDefault(serviceProvider.GetService<IConfiguration>());
@ -147,7 +142,7 @@ namespace ASC.Web.Core.WhiteLabel
{
get
{
var url = Configuration["web.help-center"];
var url = Configuration["web:help-center"];
return string.IsNullOrEmpty(url) ? null : url;
}
}
@ -156,7 +151,7 @@ namespace ASC.Web.Core.WhiteLabel
{
get
{
var url = Configuration["web.support-feedback"];
var url = Configuration["web:support-feedback"];
return string.IsNullOrEmpty(url) ? null : url;
}
}
@ -165,7 +160,7 @@ namespace ASC.Web.Core.WhiteLabel
{
get
{
var url = Configuration["web.user-forum"];
var url = Configuration["web:user-forum"];
return string.IsNullOrEmpty(url) ? null : url;
}
}
@ -183,7 +178,7 @@ namespace ASC.Web.Core.WhiteLabel
{
get
{
var email = Configuration["web.payment.email"];
var email = Configuration["web:payment:email"];
return !string.IsNullOrEmpty(email) ? email : "sales@onlyoffice.com";
}
}
@ -192,7 +187,7 @@ namespace ASC.Web.Core.WhiteLabel
{
get
{
var site = Configuration["web.teamlab-site"];
var site = Configuration["web:teamlab-site"];
return !string.IsNullOrEmpty(site) ? site + "/post.ashx?type=buyenterprise" : "";
}
}