Merge branch 'master' into feature/ASC.Data.Storage.Encryption

This commit is contained in:
SuhorukovAnton 2020-09-09 12:40:01 +03:00
commit ae61f59d55
18 changed files with 332 additions and 253 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

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

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

@ -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

@ -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

@ -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

@ -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.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", "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.Web.Files.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.Web.Files.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; send [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

@ -28,7 +28,7 @@ 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;

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.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_DocuSignComplete|ASC.Web.Files.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.Web.Files.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.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_DocuSignStatus|ASC.Web.Files.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.Web.Files.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.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_MailMergeEnd|ASC.Web.Files.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.Web.Files.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.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_ShareDocument|ASC.Web.Files.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.Web.Files.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.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_ShareFolder|ASC.Web.Files.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.Web.Files.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.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.TextileStyler,ASC.Notify.Textile" resource="|pattern_EditorMentions|ASC.Web.Files.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.Web.Files.Services.NotifyService.FilesPatternResource,ASC.Files.Core" />
<body styler="ASC.Notify.Textile.JabberStyler, ASC.Notify.Textile">$__AuthorName
$DocumentTitle

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

@ -1844,6 +1844,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

@ -242,14 +242,14 @@ namespace ASC.Web.Studio.Core.Notify
}
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)
{
@ -262,9 +262,7 @@ namespace ASC.Web.Studio.Core.Notify
.Replace("<", "&#60");
}
}
using var scope = ServiceProvider.CreateScope();
var tenantExtra = scope.ServiceProvider.GetService<TenantExtra>();
var webItemManagerSecurity = scope.ServiceProvider.GetService<WebItemManagerSecurity>();
var webItemManager = scope.ServiceProvider.GetService<WebItemManager>();
var configuration = scope.ServiceProvider.GetService<IConfiguration>();
var tenantLogoManager = scope.ServiceProvider.GetService<TenantLogoManager>();
@ -390,7 +388,8 @@ namespace ASC.Web.Studio.Core.Notify
.AddCoreBaseSettingsService()
.AddAdditionalWhiteLabelSettingsService()
.AddCommonLinkUtilityService()
.AddMailWhiteLabelSettingsService();
.AddMailWhiteLabelSettingsService()
.AddStudioNotifyHelperService();
}
}
}

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" : "";
}
}