1
0
mirror of https://github.com/ONLYOFFICE/CommunityServer.git synced 2025-04-18 13:24:01 +03:00

Update to v12.7.1

This commit is contained in:
JenkinsRobo 2024-12-23 14:50:21 +00:00
parent d59e563e8c
commit 003395ba15
58 changed files with 779 additions and 594 deletions

View File

@ -1,5 +1,41 @@
# Change log
## Version 12.7.1
### General portal changes
* Fixed the issue with receiving an instance-id for AMI.
* Made changes for requests to docbuilder using the shardkey parameter.
* Fixed the critical issue in the AutoCleanUp service (Bug 71281).
* Fixed the issue with missing the Comment tab in PDF files (Bug 70867).
* Hidden buttons for creating a PDF form in the Private room.
* Enabled SharePoint connection on UNIX systems.
* Fixed the issue with the JWT secret during update (Bug 71036).
* Fixed the issue with single-component installation updates (Bug 70862).
* Fixed the issue when the POST /api/2.0/settings/customnavigation/create method allows passing an unlimited number of characters in the "label" parameter (Bug 71805).
* Fixed passing of the logoDark parameter to the editor.
* Fixed the ability to specify an unlimited number of characters in all SMTP parameters (Bug 71859).
* Fixed the ability to set port to "999999999" in Workspace SMTP parameters (Bug 71860).
* Fixed the issue when the POST /api/2.0/settings/whitelabel/save method allows passing an unlimited number of characters to the "logoText" string in Workspace (Bug 71857).
* Fixed the issue with the unlimited length of the share link name and password (Bug 71862).
* Fixed the error from log ( ERROR ASC.Api.ApiSetup - method error: http://127.0.0.1/api/2.0/project/securityinfo.json - Server error System.Web.HttpException (0x80004005): Forbidden ).
* Fixed the error from log ( ERROR ASC.Api.ApiSetup - method error: https://127.0.0.1/api/2.0/settings/security.json - Server error ASC.Common.Security.Authorizing.AuthorizingException: "[username]" access denied "Edit Portal Settings" ) (Bug 71913).
* Added deletion of the synchronization client in case of a critical error in ImapSync (to allow reconnection).
* Fixed the issue when the bottom part of the title in the event and task viewing window is cut off (Bug 47353).
* Fixed the issue with configuring Windows feature (Bug 71923).
* Fixed duplicate Downloading text in the prerequisites installation UI.
* Fixed the issue when Google connection as a Storage is not available on Linux distributions (Bug 72205).
### Documents module
* When creating a new document, a template with the Letter page format will be taken for the en-US language. For languages without templates, a document with the A4 page format will be taken.
* Added empty file templates for creation in the following languages: fi-FI, he-IL, nb-NO, sl-SI.
* Starting documents now have titles in the corresponding language.
### Control Panel
* Fixed the issue when the /controlpanel/https page crashes with the 502 error after restarting the container. (Bug 71794).
## Version 12.7.0
### General portal changes
@ -59,6 +95,11 @@
* Fixed the issue with a timeout expected when entering an incorrect login/password for the mail/gmail mailbox. (Bug 68740).
* Fixed the issue when marking a To-do task as completed or uncompleted changes its start time (DTSTART label). (Bug 68970).
* Fixed the issue with missing logos of the social network (X) Twitter in the dark theme of the portal. (Bug 70457).
* Fixed the issue when the backup file created in the server version for Windows is not supported for importing to DocSpace (Bug 70558).
* Fixed the issue when there is no possibility to connect Google as a storage in the server version for Windows (Bug 70557).
* Fixed the issue when most of the ONLYOFFICE services do not start after updating RPM packages. (Bug 70583).
* Fixed the issue when the installation on Ubuntu 20.04 / Debian 11 fails with the error "error: metadata-generation-failed" (Bug 70596).
* Fixed the issue when the Full-text Search section content is not loaded with the error "500 (Internal Server Error)" (Bug 70556).
### Documents module

View File

@ -219,6 +219,10 @@ namespace ASC.Core.Billing
return new Dictionary<string, Dictionary<string, decimal>>();
}
public string ChangeDocspaceNonProfitTariff(string portalId, bool isActive)
{
return Request("ChangeNonProfit", portalId, new Tuple<string, string>("IsActive", isActive.ToString().ToLowerInvariant()));
}
private string CreateAuthToken(string pkey, string machinekey)
{

View File

@ -43,5 +43,7 @@ namespace ASC.Core.Billing
string GetButton(int tariffId, string partnerId);
void SaveButton(int tariffId, string partnerId, string buttonUrl);
void ChangeDocspaceNonProfitTariff(int tenantId, bool isActive);
}
}

View File

@ -48,6 +48,7 @@ namespace ASC.Core.Billing
private readonly CoreConfiguration config;
private readonly bool test;
private readonly int paymentDelay;
private readonly string dsregion;
public readonly static int ACTIVE_USERS_MIN;
public readonly static int ACTIVE_USERS_MAX;
@ -89,6 +90,7 @@ namespace ASC.Core.Billing
CacheExpiration = DEFAULT_CACHE_EXPIRATION;
test = ConfigurationManagerExtension.AppSettings["core.payment-test"] == "true";
int.TryParse(ConfigurationManagerExtension.AppSettings["core.payment-delay"], out paymentDelay);
dsregion = IsDocspace ? ConfigurationManagerExtension.AppSettings[$"core.payment-dsregion.{connectionString.Name}"] : null;
}
@ -438,6 +440,28 @@ namespace ASC.Core.Billing
ExecNonQuery(q);
}
public void ChangeDocspaceNonProfitTariff(int tenantId, bool isActive)
{
if (!IsDocspace || !BillingClient.Configured)
{
return;
}
var portalId = dsregion + tenantId;
try
{
var client = GetBillingClient();
var result = client.ChangeDocspaceNonProfitTariff(portalId, isActive);
log.Debug($"ChangeDocspaceNonProfitTariff portal {portalId} isActive: {isActive} result {result}");
}
catch (Exception error)
{
LogError(error, portalId);
}
}
private Tariff GetBillingInfo(int tenant)
{

View File

@ -314,7 +314,7 @@ namespace ASC.Core.Data
.Select("t.id", "t.alias", "t.mappeddomain", "t.version", "t.version_changed", "t.name", "t.language", "t.timezone", "t.owner_id")
.Select("t.trusteddomains", "t.trusteddomainsenabled", "t.creationdatetime", "t.status", "t.statuschanged", "t.payment_id", "t.last_modified")
.Select("NULL", "NULL", "NULL")
.Select("t.industry", "t.spam", "t.calls")
.Select("t.industry", "0", "t.calls")
.Where(where);
}

View File

@ -55,14 +55,6 @@ namespace ASC.Core
get { return tenantService.IsDocspace; }
}
public int DocspaceDefaultQuota
{
get
{
return int.TryParse(ConfigurationManagerExtension.AppSettings["docspace.default.quota"], out var quota) ? quota : -3;
}
}
public HostedSolution(ConnectionStringSettings connectionString)
: this(connectionString, null)
{
@ -225,10 +217,17 @@ namespace ASC.Core
public void SetTariff(int tenant, bool paid)
{
var quota = quotaService.GetTenantQuotas().FirstOrDefault(q => paid ? q.NonProfit : IsDocspace ? q.Id == DocspaceDefaultQuota : q.Trial);
if (quota != null)
if (IsDocspace)
{
tariffService.SetTariff(tenant, new Tariff { QuotaId = quota.Id, DueDate = DateTime.MaxValue, Quantity = 1 });
tariffService.ChangeDocspaceNonProfitTariff(tenant, paid);
}
else
{
var quota = quotaService.GetTenantQuotas().FirstOrDefault(q => paid ? q.NonProfit : q.Trial);
if (quota != null)
{
tariffService.SetTariff(tenant, new Tariff { QuotaId = quota.Id, DueDate = DateTime.MaxValue, Quantity = 1 });
}
}
}

View File

@ -1006,6 +1006,13 @@ namespace ASC.Api.Portal
throw new Exception(Resource.ErrorAccessDenied);
}
var user = CoreContext.UserManager.GetUsers(tenant.OwnerId);
if (!SetupInfo.IsSecretEmail(user.Email))
{
throw new Exception(Resource.ErrorAccessDenied);
}
CoreContext.TenantManager.RemoveTenant(tenant.TenantId);
if (!string.IsNullOrEmpty(ApiSystemHelper.ApiCacheUrl))

View File

@ -797,6 +797,9 @@ namespace ASC.Api.Settings
DemandWhiteLabelPermission();
if (!string.IsNullOrEmpty(logoText) && logoText.Length > 30)
throw new ArgumentException("invalid logoText");
if (isDefault)
{
DemandRebrandingPermission();
@ -1842,6 +1845,21 @@ namespace ASC.Api.Settings
{
SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
if (item == null)
throw new ArgumentNullException();
if (string.IsNullOrEmpty(item.Label))
throw new ArgumentNullException("label");
if (item.Label.Length > 25)
throw new ArgumentException(@"Label exceed limitation of 25 characters.", "label");
if (string.IsNullOrEmpty(item.Url))
throw new ArgumentNullException("url");
if (item.Url.Length > 255)
throw new ArgumentException(@"Url exceed limitation of 255 characters.", "url");
var settings = CustomNavigationSettings.Load();
var exist = false;

View File

@ -69,10 +69,29 @@ namespace ASC.Api.Settings
{
CheckSmtpPermissions();
//TODO: Add validation check
if (smtpSettings == null)
throw new ArgumentNullException("smtpSettings");
throw new ArgumentNullException("smtpSettings");
if (string.IsNullOrEmpty(smtpSettings.Host) || smtpSettings.Host.Length > 255)
throw new ArgumentException("invalid host");
if (smtpSettings.Port < 1 || smtpSettings.Port > 65535)
throw new ArgumentException("expected port range 1 - 65535");
if (string.IsNullOrEmpty(smtpSettings.SenderAddress) || smtpSettings.SenderAddress.Length > 255)
throw new ArgumentException("invalid senderAddress");
if (!string.IsNullOrEmpty(smtpSettings.SenderDisplayName) && smtpSettings.SenderDisplayName.Length > 255)
throw new ArgumentException("invalid senderDisplayName");
if (smtpSettings.EnableAuth)
{
if (string.IsNullOrEmpty(smtpSettings.CredentialsUserName) || smtpSettings.CredentialsUserName.Length > 255)
throw new ArgumentException("invalid credentialsUserName");
if (string.IsNullOrEmpty(smtpSettings.CredentialsUserPassword) || smtpSettings.CredentialsUserPassword.Length > 255)
throw new ArgumentException("invalid credentialsUserPassword");
}
var settingConfig = ToSmtpSettingsConfig(smtpSettings);

View File

@ -136,7 +136,13 @@ namespace ASC.Files.AutoCleanUp
var itemList = new ItemList<string>();
var trashId = folderDao.GetFolderIDTrash(false, tenantUser.UserId);
if (Convert.ToInt32(trashId) <= 0)
{
_logger.InfoFormat("No trash folder for tenant {0}, user {1}", tenantUser.TenantId, SecurityContext.CurrentAccount.ID);
return;
}
itemList.AddRange(folderDao.GetFolders(trashId)
.Where(x => FileDateTime.GetModifiedOnWithAutoCleanUp(x.ModifiedOn, tenantUser.Setting, true) < now)
.Select(f => "folder_" + f.ID));

View File

@ -25,6 +25,7 @@ using System.Text.RegularExpressions;
using ASC.Common;
using ASC.Common.Caching;
using ASC.Core;
using ASC.Core.Tenants;
using ASC.Files.Core;
using ASC.Web.Files.Classes;
@ -169,15 +170,27 @@ namespace ASC.Files.Thirdparty.SharePoint
var file = GetFileById(id);
if (file is SharePointFileErrorEntry) return null;
var fileInfo = File.OpenBinaryDirect(clientContext, (string)id);
Stream stream;
if (WorkContext.IsMono)
{
stream = OpenBinaryDirect(clientContext, (string)id);
}
else
{
var fileInfo = File.OpenBinaryDirect(clientContext, (string)id);
stream = fileInfo.Stream;
}
clientContext.ExecuteQuery();
var tempBuffer = TempStream.Create();
using (var str = fileInfo.Stream)
using (stream)
{
if (str != null)
if (stream != null)
{
str.CopyTo(tempBuffer);
stream.CopyTo(tempBuffer);
tempBuffer.Flush();
tempBuffer.Seek(offset, SeekOrigin.Begin);
}
@ -598,5 +611,57 @@ namespace ASC.Files.Thirdparty.SharePoint
public string FolderKey { get; set; }
}
/// <summary>
/// Hack for Mono: ProtocolViolationException: Cannot send a content-body with this verb-type.
/// </summary>
private static Stream OpenBinaryDirect(ClientContext context, string serverRelativeUrl)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
if (context.HasPendingRequest)
{
throw new ClientRequestException(Resources.GetString("NoDirectHttpRequest"));
}
string requestUrl = MakeFullUrl(context, serverRelativeUrl);
WebRequestExecutor webRequestExecutor = context.WebRequestExecutorFactory.CreateWebRequestExecutor(context, requestUrl);
webRequestExecutor.RequestHeaders[HttpRequestHeader.Translate] = "f";
//context.FireExecutingWebRequestEventInternal(new WebRequestEventArgs(webRequestExecutor));
webRequestExecutor.GetRequestStream().Write(new byte[0], 0, 0);
//webRequestExecutor.RequestMethod = "GET";
webRequestExecutor.Execute();
if (webRequestExecutor.StatusCode != HttpStatusCode.OK)
{
throw new ClientRequestException(Resources.GetString("RequestUnexpectedResponseWithContentTypeAndStatus", webRequestExecutor.ResponseContentType, webRequestExecutor.StatusCode));
}
//string etag = webRequestExecutor.ResponseHeaders["ETag"];
// return new FileInformation(webRequestExecutor.GetResponseStream(), etag);
return webRequestExecutor.GetResponseStream();
}
private static string MakeFullUrl(ClientContext context, string serverRelativeUrl)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
if (serverRelativeUrl == null)
{
throw new ArgumentNullException("serverRelativeUrl");
}
if (!serverRelativeUrl.StartsWith("/"))
{
throw new ArgumentOutOfRangeException("serverRelativeUrl");
}
return new Uri(new Uri(context.Url), serverRelativeUrl).AbsoluteUri;
}
}
}

View File

@ -613,52 +613,50 @@ namespace ASC.Mail.Utils
return json;
}
public bool IsModuleAvailable(Guid moduleId)
{
var request = new RestRequest($"settings/security/{moduleId}.json", Method.GET);
var response = Execute(request);
if (response.ResponseStatus != ResponseStatus.Completed ||
(response.StatusCode != HttpStatusCode.Created &&
response.StatusCode != HttpStatusCode.OK))
{
throw new ApiHelperException("IsModuleAvailable failed.", response.StatusCode, response.Content);
}
try
{
var json = JObject.Parse(response.Content);
if (json != null)
{
return Convert.ToBoolean(json["response"]);
}
}
catch (Exception e)
{
_log.Error(e.Message, e);
}
return false;
}
public bool IsCalendarModuleAvailable()
{
var json = GetPortalSettings();
var jWebItem = json["response"].Children<JObject>()
.FirstOrDefault(
o =>
o["webItemId"] != null &&
o["webItemId"].ToString() == WebItemManager.CalendarProductID.ToString());
var isAvailable = jWebItem != null && jWebItem["enabled"] != null && Convert.ToBoolean(jWebItem["enabled"]);
return isAvailable;
return IsModuleAvailable(WebItemManager.CalendarProductID);
}
public bool IsMailModuleAvailable()
{
var json = GetPortalSettings();
var jWebItem = json["response"].Children<JObject>()
.FirstOrDefault(
o =>
o["webItemId"] != null &&
o["webItemId"].ToString() == WebItemManager.MailProductID.ToString());
var isAvailable = jWebItem != null && jWebItem["enabled"] != null && Convert.ToBoolean(jWebItem["enabled"]);
return isAvailable;
return IsModuleAvailable(WebItemManager.MailProductID);
}
public bool IsCrmModuleAvailable()
{
var json = GetPortalSettings();
var crmId = WebItemManager.CRMProductID.ToString();
var jWebItem = json["response"].Children<JObject>()
.FirstOrDefault(
o =>
o["webItemId"] != null &&
o["webItemId"].ToString() == crmId);
var isAvailable = jWebItem != null && jWebItem["enabled"] != null && Convert.ToBoolean(jWebItem["enabled"]);
return isAvailable;
return IsModuleAvailable(WebItemManager.CRMProductID);
}
}
}

View File

@ -1304,9 +1304,9 @@ namespace ASC.Web.Studio.Core.Notify {
///
///We hope you enjoy using integrated ONLYOFFICE document editors. Here are some tips that might be useful:
///
///*#1. Share documents* to individuals and groups. Choose their access level - Read Only, Comment, Form Filling, Review or Full Access. Let other users apply their own filters in spreadsheets without disturbing co-authors. Restrict downloading and printing using &quot;ONLYOFFICE API&quot;:&quot;https://api.onlyoffice.com/editors/config/document/permissions&quot;.
///*#1. Share documents* to individuals and groups. Choose their access level - Read Only, Comment, Form Filling, Review or Full Access. Let other users apply their own filters in spreadsheets without disturbing co-authors. Restrict downloading and printing using &quot;ONLYOFFICE API&quot;:&quot;https://api.onlyoffice.com/docs/docs-api/usage-api/config/document/permissions/&quot;.
///
///*#2. Learn how document saving wor [rest of string was truncated]&quot;;.
///*#2. Learn how do [rest of string was truncated]&quot;;.
/// </summary>
public static string pattern_opensource_admin_docs_tips_v11 {
get {

View File

@ -240,19 +240,6 @@ Link 7 gün ərzində etibarlıdır.
*Bu brauzerdə ONLYOFFICE-a daxil olmamısınızsa, təsdiq üçün köhnə e-poçtunuzdan istifadə etməlisiniz. Əgər xatırlamırsınızsa, portal admininizlə əlaqə saxlayın.
E-poçtunuzu dəyişmək istəmirsiniz? Sadəcə bu mesaja əhəmiyyət verməyin.</value>
</data>
<data name="pattern_change_password" xml:space="preserve">
<value>h1."${__VirtualRootPath}":"${__VirtualRootPath}" portalı üçün parol dəyişikliyi sorğusu:
"${__VirtualRootPath}":"${__VirtualRootPath}" portalına daxil olmaq üçün istifadə edilən parolunuzu dəyişdirmək üçün sorğu olub.
Şifrənizi dəyişmək üçün aşağıdakı linkə daxil olun:
$GreenButton
*Qeyd*: bu link yalnız 7 gün ərzində etibarlıdır. Bu müddət ərzində parol dəyişdirmə prosesini tamamlayın.
Əgər parolunuzu dəyişmək və ya bu mesajı səhvən almaq istəmirsinizsə, zəhmət olmasa, ona məhəl qoymayın və ya əlavə məlumat üçün "${__VirtualRootPath}":"${__VirtualRootPath}" portal administratorunuzla əlaqə saxlayın.</value>
</data>
<data name="pattern_change_password_v115" xml:space="preserve">
<value>ONLYOFFICE hesabınızdakı parolu dəyişmək istəyirsiniz? Təsdiqləmək üçün aşağıdakı düyməni basın.
@ -730,22 +717,6 @@ Portalın $RegionName bölgəsinə köçürülməsi başladı. Məlumatınızın
Hər hansı bir sualınız və ya köməyə ehtiyacınız olarsa, ünvanında bizimlə əlaqə saxlamaqdan çəkinməyin "support@onlyoffice.com":"mailto:support@onlyoffice.com"
Hörmətlə,
ONLYOFFICE ™ Dəstək Qrupu
"www.onlyoffice.com":"http://onlyoffice.com/"</value>
</data>
<data name="pattern_migration_success" xml:space="preserve">
<value>h1.Portalın başqa regiona miqrasiyası başlandı
$RegionName bölgəsinə portal miqrasiyası başladı. Məlumatınızın miqdarından asılı olaraq bir müddət çəkə bilər.
* Qeyd *: Portal miqrasiya prosesi zamanı mövcud olmayacaq. Miqrasiya tamamlandıqdan sonra portalın URL-i dəyişdiriləcək və paylaşılan sənədlərdəki bütün keçidlər h1 olacaq. Portalın başqa bölgəyə miqrasiyası uğurla tamamlandı.
$RegionName bölgəsinə portal miqrasiyası uğurla tamamlandı.
Portalınız indi "$PortalUrl":"$PortalUrl" ünvanında mövcuddur
Hər hansı bir sualınız və ya köməyə ehtiyacınız olarsa, ünvanında bizimlə əlaqə saxlamaqdan çəkinməyin "support@onlyoffice.com":"mailto:support@onlyoffice.com"
Hörmətlə,
ONLYOFFICE ™ Dəstək Qrupu
"www.onlyoffice.com":"http://onlyoffice.com/"</value>
@ -781,7 +752,7 @@ Bildirişlər göndərmək üçün biz ONLYOFFICE poçt serverinin SMTP parametr
Ümid edirik ki, inteqrasiya olunmuş ONLYOFFICE sənəd redaktorlarından istifadə etməkdən zövq alacaqsınız. Faydalı ola biləcək bəzi məsləhətlər:
*#1. Sənədləri* fərdlərə və qruplara paylaşın. Onların giriş səviyyəsini seçin - Yalnız oxumaq, Şərh etmək, Forma Doldurmaq, Baxış və ya Tam Giriş. Digər istifadəçilərə həmmüəllifləri narahat etmədən öz filtrlərini elektron cədvəllərdə tətbiq etməyə icazə verin. "ONLYOFFICE API":"https://api.onlyoffice.com/editors/config/document/permissions" istifadə edərək endirmə və çapı məhdudlaşdırın.
*#1. Sənədləri* fərdlərə və qruplara paylaşın. Onların giriş səviyyəsini seçin - Yalnız oxumaq, Şərh etmək, Forma Doldurmaq, Baxış və ya Tam Giriş. Digər istifadəçilərə həmmüəllifləri narahat etmədən öz filtrlərini elektron cədvəllərdə tətbiq etməyə icazə verin. "ONLYOFFICE API":"https://api.onlyoffice.com/docs/docs-api/usage-api/config/document/permissions/" istifadə edərək endirmə və çapı məhdudlaşdırın.
*#2. Sənədin işlərdə necə saxlandığını öyrənin* və onu öz ehtiyaclarınıza uyğunlaşdırın. "Ətraflı məlumat":"https://www.onlyoffice.com/blog/2020/04/save-and-force-save-in-onlyoffice-never-lose-a-document/"
@ -1048,20 +1019,6 @@ Link 7 gün ərzində etibarlıdır.
*Bu brauzerdə ONLYOFFICE-a daxil olmamısınızsa, təsdiq üçün köhnə e-poçtunuzdan istifadə etməlisiniz.
E-poçtunuzu dəyişmək istəmirsiniz? Sadəcə bu mesaja əhəmiyyət verməyin.</value>
</data>
<data name="pattern_personal_change_password" xml:space="preserve">
<value>"${__VirtualRootPath}":"${__VirtualRootPath}" portalına daxil olmaq üçün istifadə etdiyiniz parolu dəyişmək üçün sorğu olub.
Şifrənizi dəyişmək üçün aşağıdakı linkə daxil olun:
$GreenButton
*Qeyd*: bu link yalnız 7 gün ərzində etibarlıdır. Zəhmət olmasa, həmin müddət ərzində parol dəyişmə prosesini tamamlayın.
Əgər parolunuzu dəyişmək istəmirsinizsə və ya bu e-poçt səhvən göndərilibsə, ona əhəmiyyə verməyin.
Hörmətlə,
ONLYOFFICE komandası</value>
</data>
<data name="pattern_personal_change_password_v115" xml:space="preserve">
<value>ONLYOFFICE Şəxsi hesabınızdakı parolu dəyişmək istəyirsiniz? Təsdiqləmək üçün aşağıdakı düyməni basın.
@ -1339,17 +1296,6 @@ $CompanySize
h3.Sorğu məzmunu
$Body</value>
</data>
<data name="pattern_restore_completed" xml:space="preserve">
<value>h1. Portalın bərpası başa çatıb
Portalın bərpası prosesi uğurla tamamlandı.
Portalınız yenidən əlçatandır.
Hörmətlə,
ONLYOFFICE ™ Dəstək Qrupu
"www.onlyoffice.com": "http://onlyoffice.com/"</value>
</data>
<data name="pattern_restore_completed_v115" xml:space="preserve">
<value>h1 Portalın bərpası
@ -1801,9 +1747,6 @@ Link yalnız 7 gün üçün keçərli olacaq.</value>
<data name="subject_change_email_v115" xml:space="preserve">
<value>E-poçtunuzun dəyişdirilməsini təsdiq edin</value>
</data>
<data name="subject_change_password" xml:space="preserve">
<value>${LetterLogoText}. Şifrə yardımı</value>
</data>
<data name="subject_change_password_v115" xml:space="preserve">
<value>Parolun dəyişdirilməsini təsdiq edin</value>
</data>
@ -1954,9 +1897,6 @@ Link yalnız 7 gün üçün keçərli olacaq.</value>
<data name="subject_personal_after_registration7" xml:space="preserve">
<value>Sevimli bulud yaddaşınızı ONLYOFFICE-ə qoşun</value>
</data>
<data name="subject_personal_change_password" xml:space="preserve">
<value>ONLYOFFICE Personal parol yardımı</value>
</data>
<data name="subject_personal_confirmation" xml:space="preserve">
<value>ONLYOFFICE Personal. Zəhmət olmasa e-poçt ünvanınızı aktivləşdirin</value>
</data>

View File

@ -750,7 +750,7 @@ Mehr Information im ONLYOFFICE "Help Center":"${__HelpLink}".</value>
Wir hoffen, Ihnen gefallen die integrierten ONLYOFFICE Dokumenten-Editoren. Hier sind einige nützliche Tipps:
*#1. Teilen Sie Dokumente* mit anderen oder Gruppen. Setzen Sie die Berechtigungen - Nur Lesen, Kommentieren, Formulare ausfüllen, Überprüfen oder voller Zugriff. Lassen Sie andere Benutzer ihre eigenen Filter in Tabellen ohne Freigabe für andere nutzen. Schränken Sie den Download oder das Ausdrucken mittels der "ONLYOFFICE API":"https://api.onlyoffice.com/editors/config/document/permissions" ein.
*#1. Teilen Sie Dokumente* mit anderen oder Gruppen. Setzen Sie die Berechtigungen - Nur Lesen, Kommentieren, Formulare ausfüllen, Überprüfen oder voller Zugriff. Lassen Sie andere Benutzer ihre eigenen Filter in Tabellen ohne Freigabe für andere nutzen. Schränken Sie den Download oder das Ausdrucken mittels der "ONLYOFFICE API":"https://api.onlyoffice.com/docs/docs-api/usage-api/config/document/permissions/" ein.
*#2. Lernen Sie, wie das Speichern von Dokumenten funktioniert* und passen Sie dies an die eigenen Bedürfnisse an. "Erfahren Sie mehr":"https://www.onlyoffice.com/blog/2020/04/save-and-force-save-in-onlyoffice-never-lose-a-document/"

View File

@ -739,7 +739,7 @@ Más información en el "Centro de Ayuda":"${__HelpLink}".</value>
Esperamos que usted disfrute usando los editores integrados de documentos ONLYOFFICE. Aquí hay algunos consejos que pueden ser útiles:
*#1. Comparta documentos* con individuos y grupos. Elija su nivel de acceso: Sólo lectura, Comentario, Relleno de formulario, Revisión o Acceso completo. Deje que otros usuarios apliquen sus propios filtros en las hojas de cálculo sin molestar a los coautores. Restrinja la descarga e impresión usando "ONLYOFFICE API":"https://api.onlyoffice.com/editors/config/document/permissions".
*#1. Comparta documentos* con individuos y grupos. Elija su nivel de acceso: Sólo lectura, Comentario, Relleno de formulario, Revisión o Acceso completo. Deje que otros usuarios apliquen sus propios filtros en las hojas de cálculo sin molestar a los coautores. Restrinja la descarga e impresión usando "ONLYOFFICE API":"https://api.onlyoffice.com/docs/docs-api/usage-api/config/document/permissions/".
*#2. Conozca cómo funciona el guardado de documentos* y ajústelo a sus propias necesidades. "Más información":"https://www.onlyoffice.com/blog/2020/04/save-and-force-save-in-onlyoffice-never-lose-a-document/"

View File

@ -737,7 +737,7 @@ Trouvez plus de détails dans le "Centre d'Aide":"${__HelpLink}".</value>
Nous espérons que les éditeurs des documents ONLYOFFICEvous sont utiles. Vous trouverez ci-dessous les astuces pour en profiter pleinement :
*#1. Partager les documents* avec les groupes et les utilisateurs. Définissez le niveau de collaboration - Lecture seule, Commentaires, Remplissage de formulaire, Révision ou Accès complet. Permettez aux utilisateurs d'appliquer leurs propres filtres dans les feuilles de calcul sans déranger les co-auteurs. Limitez le téléchargement et l'impression des documents en utilisant les "APIs ONLYOFFICE":"https://api.onlyoffice.com/editors/config/document/permissions".
*#1. Partager les documents* avec les groupes et les utilisateurs. Définissez le niveau de collaboration - Lecture seule, Commentaires, Remplissage de formulaire, Révision ou Accès complet. Permettez aux utilisateurs d'appliquer leurs propres filtres dans les feuilles de calcul sans déranger les co-auteurs. Limitez le téléchargement et l'impression des documents en utilisant les "APIs ONLYOFFICE":"https://api.onlyoffice.com/docs/docs-api/usage-api/config/document/permissions/".
*#2. Apprendre comment enregistrer les modifications dans le document* et les ajuster à vos besoins. "En savoir davantage":"https://www.onlyoffice.com/blog/2020/04/save-and-force-save-in-onlyoffice-never-lose-a-document/"

View File

@ -758,7 +758,7 @@ Traduzido com a versão gratuita do tradutor - www.DeepL.com/Translator</value>
Esperamos que você goste de utilizar editores integrados de documentos ONLYOFFICE. Aqui estão algumas dicas que podem ser úteis:
*#1. Compartilhar documentos* para indivíduos e grupos. Escolha seu nível de acesso - Read Only, Comment, Form Filling, Review ou Full Access. Deixe que outros usuários apliquem seus próprios filtros em planilhas sem perturbar os co-autores. Restringir download e impressão usando "ONLYOFFICE API": "https://api.onlyoffice.com/editors/config/document/permissions".
*#1. Compartilhar documentos* para indivíduos e grupos. Escolha seu nível de acesso - Read Only, Comment, Form Filling, Review ou Full Access. Deixe que outros usuários apliquem seus próprios filtros em planilhas sem perturbar os co-autores. Restringir download e impressão usando "ONLYOFFICE API": "https://api.onlyoffice.com/docs/docs-api/usage-api/config/document/permissions/".
*#2. Saiba como funciona a economia de documentos* e ajuste-a às suas próprias necessidades. "Saiba mais": "https://www.onlyoffice.com/blog/2020/04/save-and-force-save-in-onlyoffice-never-lose-a-document/".

View File

@ -759,7 +759,7 @@ More information in ONLYOFFICE "Help Center":"${__HelpLink}".</value>
We hope you enjoy using integrated ONLYOFFICE document editors. Here are some tips that might be useful:
*#1. Share documents* to individuals and groups. Choose their access level - Read Only, Comment, Form Filling, Review or Full Access. Let other users apply their own filters in spreadsheets without disturbing co-authors. Restrict downloading and printing using "ONLYOFFICE API":"https://api.onlyoffice.com/editors/config/document/permissions".
*#1. Share documents* to individuals and groups. Choose their access level - Read Only, Comment, Form Filling, Review or Full Access. Let other users apply their own filters in spreadsheets without disturbing co-authors. Restrict downloading and printing using "ONLYOFFICE API":"https://api.onlyoffice.com/docs/docs-api/usage-api/config/document/permissions/".
*#2. Learn how document saving works* and adjust it to your own needs. "Learn more":"https://www.onlyoffice.com/blog/2020/04/save-and-force-save-in-onlyoffice-never-lose-a-document/"

View File

@ -746,7 +746,7 @@ $GreenButton
Мы надеемся, что вам нравится использовать интегрированные редакторы ONLYOFFICE. Вот несколько советов, которые могут быть полезны:
*#1. Предоставляйте доступ к документам* для отдельных пользователей или групп. Выбирайте уровень доступа: только чтение, комментирование, заполнение форм, рецензирование или полный доступ. Позвольте другим пользователям применять собственные фильтры в электронных таблицах, не мешая соавторам. Ограничьте скачивание и печать с помощью "ONLYOFFICE API":"https://api.onlyoffice.com/editors/config/document/permissions".
*#1. Предоставляйте доступ к документам* для отдельных пользователей или групп. Выбирайте уровень доступа: только чтение, комментирование, заполнение форм, рецензирование или полный доступ. Позвольте другим пользователям применять собственные фильтры в электронных таблицах, не мешая соавторам. Ограничьте скачивание и печать с помощью "ONLYOFFICE API":"https://api.onlyoffice.com/docs/docs-api/usage-api/config/document/permissions/".
*#2. Узнайте, как работает сохранение документов*, и настройте его в соответствии с вашими потребностями. "Узнать больше":"https://www.onlyoffice.com/blog/2020/04/save-and-force-save-in-onlyoffice-never-lose-a-document/"

View File

@ -364,6 +364,12 @@ namespace ASC.Web.Studio.Core
private set;
}
public static string AmiTokenUrl
{
get;
private set;
}
static SetupInfo()
{
Refresh();
@ -445,6 +451,7 @@ namespace ASC.Web.Studio.Core
TfaAppSender = GetAppSettings("web.tfaapp.backup.title", "ONLYOFFICE");
AmiMetaUrl = GetAppSettings("web.ami.meta", "");
AmiTokenUrl = GetAppSettings("web.ami.token", "");
}

View File

@ -73,6 +73,13 @@ namespace ASC.Web.CRM.Classes
{
try
{
var module = WebItemManager.Instance[WebItemManager.ProjectsProductID];
if (module == null || module.IsDisabled())
{
return false;
}
var apiUrl = String.Format("{0}project/securityinfo.json", SetupInfo.WebApiBaseUrl);
var cacheKey = String.Format("{0}-{1}", ASC.Core.SecurityContext.CurrentAccount.ID, apiUrl);
@ -86,7 +93,7 @@ namespace ASC.Web.CRM.Classes
var responseApi = JObject.Parse(Encoding.UTF8.GetString(Convert.FromBase64String(apiServer.GetApiResponse(apiUrl, "GET"))))["response"];
if (responseApi.HasValues)
if (responseApi != null && responseApi.HasValues)
canCreateProject = Convert.ToBoolean(responseApi["canCreateProject"].Value<String>());
else
canCreateProject = false;

View File

@ -26,6 +26,9 @@ window.ASC.Files.CreateMenu = (function () {
jq.dropdownToggle({
switcherSelector: "#menuCreateNewButton:not(.disable)",
dropdownID: "newDocumentPanel",
beforeShowFunction: function () {
jq("#createMasterFormPointer").parent().toggleClass("display-none", ASC.Files.Folders.folderContainer == "privacy");
},
inPopup: true,
addTop: 4
});

View File

@ -66,8 +66,10 @@ window.ASC.Files.EmptyScreen = (function () {
jq("#emptyContainer_subfolder").show();
ASC.Files.UI.checkButtonBack(".empty-folder-toparent");
ASC.Files.UI.checkButtonMasterForm(".empty-folder-create-masterform", "#emptyContainer_subfolder");
} else {
jq("#emptyContainer_" + ASC.Files.Folders.folderContainer).show();
ASC.Files.UI.checkButtonMasterForm(".empty-folder-create-masterform", "#emptyContainer_" + ASC.Files.Folders.folderContainer);
}
} else {
jq("#emptyContainer_filter").show();

View File

@ -138,7 +138,7 @@
<input type="checkbox" id="cbxLinkPasswordEnabled" class="on-off-checkbox">
<label for="cbxLinkPasswordEnabled"><%= FilesUCResource.EnablePassword %></label>
<div class="password-container">
<input class="textEdit" type="password" autocomplete="new-password" placeholder="<%= FilesUCResource.Password %>" />
<input class="textEdit" maxlength="255" type="password" autocomplete="new-password" placeholder="<%= FilesUCResource.Password %>" />
<span class="img-btn random" title="<%= FilesUCResource.RandomPassword %>"></span>
<span class="img-btn show"></span>
</div>

View File

@ -734,7 +734,7 @@ namespace ASC.Web.Files
var fileExtension = FileUtility.GetInternalExtension(toExtension);
fileName = "new" + fileExtension;
var path = FileConstant.NewDocPath
+ (CoreContext.Configuration.CustomMode ? "ru-RU/" : "en-US/")
+ (CoreContext.Configuration.CustomMode ? "ru-RU/" : "default/")
+ fileName;
var storeTemplate = Global.GetStoreTemplate();
@ -1090,7 +1090,7 @@ namespace ASC.Web.Files
var templatePath = FileConstant.NewDocPath + lang + "/";
if (!storeTemplate.IsDirectory(templatePath))
templatePath = FileConstant.NewDocPath + "en-US/";
templatePath = FileConstant.NewDocPath + "default/";
templatePath += templateName;
if (string.IsNullOrEmpty(fileTitle))

View File

@ -1014,7 +1014,7 @@ namespace ASC.Web.Files.Services.DocumentService
}
}
[DataMember(Name = "logoDark ")]
[DataMember(Name = "logoDark")]
public string LogoDark
{
set { }

View File

@ -130,7 +130,7 @@ namespace ASC.Web.Files.Services.DocumentService
scriptUrl = PathProvider.GetTempUrl(stream, ".docbuilder");
}
scriptUrl = ReplaceCommunityAdress(scriptUrl);
requestKey = null;
requestKey = scriptUrl;
}
Global.Logger.DebugFormat("DocService builder requestKey {0} async {1}", requestKey, isAsync);

View File

@ -524,7 +524,7 @@ namespace ASC.Web.Files.Services.WCFService
var path = FileConstant.NewDocPath + culture + "/";
if (!storeTemplate.IsDirectory(path))
{
path = FileConstant.NewDocPath + "en-US/";
path = FileConstant.NewDocPath + "default/";
}
try
@ -1019,7 +1019,7 @@ namespace ASC.Web.Files.Services.WCFService
var path = FileConstant.NewDocPath + culture + "/";
if (!storeTemplate.IsDirectory(path))
{
path = FileConstant.NewDocPath + "en-US/";
path = FileConstant.NewDocPath + "default/";
}
var fileExt = FileUtility.GetFileExtension(file.Title);

View File

@ -486,7 +486,7 @@ namespace ASC.Web.Files.ThirdPartyApp
var path = FileConstant.NewDocPath + culture + "/";
if (!storeTemplate.IsDirectory(path))
{
path = FileConstant.NewDocPath + "en-US/";
path = FileConstant.NewDocPath + "default/";
}
var ext = FileUtility.InternalExtension[FileUtility.GetFileTypeByFileName(fileName)];
path += "new" + ext;

View File

@ -973,7 +973,7 @@ namespace ASC.Web.Files.Utils
var path = FileConstant.NewDocPath + Thread.CurrentThread.CurrentCulture + "/";
if (!storeTemplate.IsDirectory(path))
{
path = FileConstant.NewDocPath + "en-US/";
path = FileConstant.NewDocPath + "default/";
}
var fileExt = currentExt != FileUtility.MasterFormExtension
? FileUtility.GetInternalExtension(file.Title)

View File

@ -245,6 +245,15 @@ namespace ASC.Web.Files.Utils
public static bool SetAceObject(List<AceWrapper> aceWrappers, FileEntry entry, bool notify, string message, AceAdvancedSettingsWrapper advancedSettings)
{
if (entry == null) throw new ArgumentNullException(FilesCommonResource.ErrorMassage_BadRequest);
foreach (var w in aceWrappers)
{
if (w.LinkSettings == null)
continue;
if (!string.IsNullOrEmpty(w.LinkSettings.Password) && w.LinkSettings.Password.Length > 255)
throw new ArgumentException(FilesCommonResource.ErrorMassage_BadRequest, "link password");
if (string.IsNullOrEmpty(w.SubjectName) || w.SubjectName.Length > 255)
throw new ArgumentException(FilesCommonResource.ErrorMassage_BadRequest, "link title");
}
if (!CanSetAccess(entry)) throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException);
var fileSecurity = Global.GetFilesSecurity();

View File

@ -1194,6 +1194,10 @@ window.ASC.Files.UI = (function () {
}
};
var checkButtonMasterForm = function (buttonSelector, panelSelector) {
jq(panelSelector + " " + buttonSelector).toggleClass("display-none", ASC.Files.Folders.folderContainer == "privacy");
}
var removeDataFromButtonBack = function () {
jq(".to-parent-folder-dropdown").children('input[name="entry_data"]')
.attr("data-deny_download", "")
@ -1459,6 +1463,7 @@ window.ASC.Files.UI = (function () {
removeDataFromButtonBack: removeDataFromButtonBack,
checkEmptyContent: checkEmptyContent,
checkButtonBack: checkButtonBack,
checkButtonMasterForm: checkButtonMasterForm,
hideAllContent: hideAllContent,
displayHelp: displayHelp,

View File

@ -133,9 +133,9 @@ namespace ASC.Web.Projects.Core.Model.Services.NotifyService {
/// <summary>
/// Looks up a localized string similar to h1.You have been added to the project team: &quot;$ProjectTitle&quot;:&quot;${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID&quot;
///
///$__DateTime &quot;$__AuthorName&quot;:&quot;$__AuthorUrl&quot; has added you to the team of the project:[&quot;$ProjectTitle&quot;:&quot;${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID&quot;]
///$__DateTime &quot;$__AuthorName&quot;:&quot;$__AuthorUrl&quot; has added you to the team of the project: [&quot;$ProjectTitle&quot;:&quot;${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID&quot;]
///
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal. To change the notification type, please manage your &quot;subscription settings&quot;:&quot;$Recip [rest of string was truncated]&quot;;.
///^You receive this email because you are a registered user of the &quot;${__VirtualRootPath}&quot;:&quot;${__VirtualRootPath}&quot; portal. To change the notification type, please manage your &quot;subscription settings&quot;:&quot;$Reci [rest of string was truncated]&quot;;.
/// </summary>
public static string pattern_InviteToProject {
get {

View File

@ -87,10 +87,10 @@ $AdditionalData
<value>h1.Projects. Импортиране на данните от Basecamp Новите данни са успешно внесени. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на известието, моля, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_InviteToProject" xml:space="preserve">
<value>Вие сте добавени към екипа на проекта: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" $__DateTime "$__AuthorName":"$__AuthorUrl" ви добави в екипът на проекта: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"] ^ Получавате този имейл, защото сте регистриран потребител на "${__VirtualRootPath}" ":" ${__VirtualRootPath} "портал. За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>Вие сте добавени към екипа на проекта: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" $__DateTime "$__AuthorName":"$__AuthorUrl" ви добави в екипът на проекта: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"] ^ Получавате този имейл, защото сте регистриран потребител на "${__VirtualRootPath}":"${__VirtualRootPath}" портал. За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_LateMilestone" xml:space="preserve">
<value>h1.Overdue уведомяване за етап: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#sortBy=deadline&amp;sortOrder=ascending" "$EntityTitle":"${__VirtualRootPath}/продукти/projects/milestones.aspx? prjID = $ProjectID "крайъгълен камък на проекта" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID "е просрочен. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Overdue уведомяване за етап: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#sortBy=deadline&amp;sortOrder=ascending" "$EntityTitle":"${__VirtualRootPath}/продукти/projects/milestones.aspx?prjID=$ProjectID "крайъгълен камък на проекта "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" е просрочен. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_MessageDeleted" xml:space="preserve">
<value>h1.Discussion изтрит: "$EntityTitle"
@ -101,31 +101,31 @@ $__DateTime "$__AuthorName":"$__AuthorUrl" изтри дискусията "$Ent
^Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL".^</value>
</data>
<data name="pattern_MilestoneClosed" xml:space="preserve">
<value>h1.Milestone затворен: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#status=closed" $__DateTime "$__AuthorName":"$__AuthorUrl" е затворил "$EntityTitle" ":" ${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#status=closed "крайъгълен камък в" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID "проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Milestone затворен: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#status=closed" $__DateTime "$__AuthorName":"$__AuthorUrl" е затворил "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#status=closed" крайъгълен камък в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_MilestoneCreated" xml:space="preserve">
<value>h1.Milestone създаден: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нов етап: " $EntityTitle ":" ${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#sortBy=create_on&amp;sortOrder=descending "към" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx? prjID = $ProjectID "проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Milestone създаден: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нов етап: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#sortBy=create_on&amp;sortOrder=descending" към "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_MilestoneDeadline" xml:space="preserve">
<value>h1. Известие за дължината на варовика: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true" Остава по-малко от 48 часа до датата на "$EntityTitle" ":" ${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true "крайъгълен камък в" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID "проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1. Известие за дължината на варовика: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true" Остава по-малко от 48 часа до датата на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true" крайъгълен камък в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_MilestoneDeleted" xml:space="preserve">
<value>h1.Milestone изтрит: "$EntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" е изтрил етапа "$EntityTitle" в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID = $ProjectID "проект: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на портала" ${__VirtualRootPath} ":" ${__VirtualRootPath} ". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Milestone изтрит: "$EntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" е изтрил етапа "$EntityTitle" в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID "проект: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_MilestoneEdited" xml:space="preserve">
<value>h1.Milestone редактиран: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true" $__DateTime "$__AuthorName":"$__AuthorUrl" е редактирал "$EntityTitle" ":" ${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true "крайъгълен камък в" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID "проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Milestone редактиран: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true" $__DateTime "$__AuthorName":"$__AuthorUrl" е редактирал "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true" крайъгълен камък в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_MilestoneResumed" xml:space="preserve">
<value>h1.Milestone възобновено: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID" $__DateTime "$__AuthorName":"$__AuthorUrl" възобновява етапа "$EntityTitle":" ${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID "в проекта" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID ": $AdditionalData ^ You получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Milestone възобновено: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID" $__DateTime "$__AuthorName":"$__AuthorUrl" възобновява етапа "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID" в проекта "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID": $AdditionalData ^ You получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_NewCommentForMessage" xml:space="preserve">
<value>h1.Нов коментар към дискусията: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нов коментар към дискусията: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID" $AdditionalData "Прочетете повече":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID#comment_$CommentID"^ Получавате този имейл, защото сте регистриран потребител на портала" ${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_NewCommentForTask" xml:space="preserve">
<value>h1.Нов коментар към задачата: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нов коментар "Задачата на $EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID: $AdditionalData"Прочетете повече":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID#comment_$CommentID"^ Получавате този имейл, защото сте регистриран потребител на портала" ${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
<value>h1.Нов коментар към задачата: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нов коментар "Задачата на $EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID: $AdditionalData "Прочетете повече":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID#comment_$CommentID"^ Получавате този имейл, защото сте регистриран потребител на портала" ${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
</data>
<data name="pattern_NewFileForDiscussion" xml:space="preserve">
<value>h1.Нов файл за дискусия: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нов файл на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID" дискусия: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на "${__VirtualRootPath" } ":" ${__VirtualRootPath} "портал. Ако не искате да получавате известия за тази дискусия, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
<value>h1.Нов файл за дискусия: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нов файл на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID" дискусия: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на "${__VirtualRootPath}":"${__VirtualRootPath}" портал. Ако не искате да получавате известия за тази дискусия, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Messages.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
</data>
<data name="pattern_NewFileForTask" xml:space="preserve">
<value>h1.New файл за задача: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нов файл към задачата "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
@ -134,7 +134,7 @@ $__DateTime "$__AuthorName":"$__AuthorUrl" изтри дискусията "$Ent
<value>^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_ProjectDeleted" xml:space="preserve">
<value>h1.Проектът е изтрит: "$EntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" е изтрил проекта "$EntityTitle" ^ Получавате този имейл, защото сте регистриран потребител на "${__VirtualRootPath}":"$$Портал {__VirtualRootPath}. За да промените типа на известието, моля, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Проектът е изтрит: "$EntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" е изтрил проекта "$EntityTitle" ^ Получавате този имейл, защото сте регистриран потребител на Портал "${__VirtualRootPath}":"${__VirtualRootPath}. За да промените типа на известието, моля, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_push_InviteToProject" xml:space="preserve">
<value>Проекти [$ProjectTitle]. Добавени сте към екипа на проекта</value>
@ -197,16 +197,16 @@ $__DateTime "$__AuthorName":"$__AuthorUrl" изтри дискусията "$Ent
<value>Проекти [$ProjectTitle]. Задачата е възобновена: $EntityTitle</value>
</data>
<data name="pattern_ReminderAboutTask" xml:space="preserve">
<value>h1.Напомняне за задачата: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" ви напомня за задачата : "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID": $AdditionalData.get_item ("TaskDescription") ^ Получавате този имейл, защото сте регистриран потребител на Портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Напомняне за задачата: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" ви напомня за задачата : "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID": $AdditionalData.get_item("TaskDescription") ^ Получавате този имейл, защото сте регистриран потребител на Портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_ReminderAboutTaskDeadline" xml:space="preserve">
<value>h1.Напомняне за задачата: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" Днес е крайният срок за задачата: "$EntityTitle":"${ __VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID ": $AdditionalData.get_item (" TaskDescription ") ^ Получавате този имейл, защото сте регистриран потребител на" ${__VirtualRootPath} ":" ${__VirtualRootPath} "портал. За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Напомняне за задачата: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" Днес е крайният срок за задачата: "$EntityTitle":"${ __VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID": $AdditionalData.get_item("TaskDescription") ^ Получавате този имейл, защото сте регистриран потребител на "${__VirtualRootPath}":"${__VirtualRootPath}" портал. За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_RemoveFromProject" xml:space="preserve">
<value>h1.Вие сте премахнати от екипа на проекта: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" $__DateTime "$__AuthorName": екипа на проекта: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" ^ Получавате този имейл, защото сте регистриран потребител на "${__VirtualRootPath}":"${__VirtualRootPath}" портал. За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_RemoveResponsibleForTask" xml:space="preserve">
<value>h1.Task вече не ви е присвоен: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime вече не сте отговорни за задачата: "$EntityTitle ":" ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID " $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID " project: $AdditionalData.get_item ("TaskDescription") ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Task вече не ви е присвоен: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime вече не сте отговорни за задачата: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" project: $AdditionalData.get_item("TaskDescription") ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_ResponsibleForMilestone" xml:space="preserve">
<value>h1.Milestone Ви е присвоено: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true"
@ -243,37 +243,37 @@ $AdditionalData.get_item("TaskDescription")
<value>h1.Subtask затворен: "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" затвори подзадачата, добавена към "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" задача. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
</data>
<data name="pattern_SubTaskCreated" xml:space="preserve">
<value>h1.Subtask created: "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нова подзадача: " $SubEntityTitle ":" ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID "към" $EntityTitle ":" ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID &amp; ID = $EntityID "задача. Подзадачата е присвоена на "$Responsible". ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/продукти/проекти/задачи.</value>
<value>h1.Subtask created: "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е добавил нова подзадача: "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" към "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" задача. Подзадачата е присвоена на "$Responsible". ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID".^</value>
</data>
<data name="pattern_SubTaskDeleted" xml:space="preserve">
<value>h1.Subtask deleted: "$SubEntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" е изтрил подзадача: "$SubEntityTitle" на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx? prjID = $ProjectID &amp; ID = $EntityID "задача. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
<value>h1.Subtask deleted: "$SubEntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" е изтрил подзадача: "$SubEntityTitle" на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID"задача. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
</data>
<data name="pattern_SubTaskEdited" xml:space="preserve">
<value>h1.Subtask редактиран: "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е редактирал "$SubEntityTitle" : "Подпрограма ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID на" $EntityTitle ":" ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID= $EntityID "задача. Подзадачата е присвоена на "$Responsible". ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/продукти/проекти/задачи.</value>
<value>h1.Subtask редактиран: "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е редактирал Подпрограма "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" задача. Подзадачата е присвоена на "$Responsible". ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID".^</value>
</data>
<data name="pattern_SubTaskResumed" xml:space="preserve">
<value>h1.Subtask възобновено: "$SubEntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" възобнови подзадачата: "$SubEntityTitle" на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx? prjID = $ProjectID &amp; ID = $EntityID "задача. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
<value>h1.Subtask възобновено: "$SubEntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" възобнови подзадачата: "$SubEntityTitle" на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID "задача. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
</data>
<data name="pattern_TaskClosed" xml:space="preserve">
<value>h1.Task затворен: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":":" ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID "в" $ProjectTitle ": project: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
</data>
<data name="pattern_TaskCreated" xml:space="preserve">
<value>h1.Task created: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" добави нова задача: " $EntityTitle ":" ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID "към" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID "проект: $AdditionalData.get_item (" TaskDescription ") Задачата е присвоена на" $Responsible "^ Получавате този имейл, защото сте регистриран потребител на портал" ${__VirtualRootPath} ":" ${__VirtualRootPath} ". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"</value>
<value>h1.Task created: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" добави нова задача: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" към "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" проект: $AdditionalData.get_item("TaskDescription") Задачата е присвоена на "$Responsible" ^Получавате този имейл, защото сте регистриран потребител на портал "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID".^</value>
</data>
<data name="pattern_TaskDeleted" xml:space="preserve">
<value>h1.Task delete: "$EntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" е изтрил задачата "$EntityTitle" в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID = $ProjectID "проект: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на портала" ${__VirtualRootPath} ":" ${__VirtualRootPath} ". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Task delete: "$EntityTitle" $__DateTime "$__AuthorName":"$__AuthorUrl" е изтрил задачата "$EntityTitle" в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID "проект: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на портала" ${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_TaskEdited" xml:space="preserve">
<value>h1.Task редактиран: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е редактирал "$EntityTitle" : "Задача ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID в" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID " проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
<value>h1.Task редактиран: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е редактирал Задача "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" проект. ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомяването, управлявайте "настройките за абонамента":"$RecipientSubscriptionConfigURL". ^</value>
</data>
<data name="pattern_TaskMovedFromMilestone" xml:space="preserve">
<value>Преместване на задача: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е премахнало "$EntityTitle" : "Задача ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID от" $SubEntityTitle ":" ${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID# my = true "проект в проекта" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID ". Задачата "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID сега не е част от някакъв важен момент. ^ Получавате този имейл, защото сте регистриран потребител на</value>
<value>Преместване на задача: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е премахнало Задача "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" от "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true" проект в проекта "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID". Задачата "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" сега не е част от някакъв важен момент. ^ Получавате този имейл, защото сте регистриран потребител на</value>
</data>
<data name="pattern_TaskMovedToMilestone" xml:space="preserve">
<value>Преместване на задача: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е преместило "$EntityTitle" : "Задача на ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID към" $SubEntityTitle ":" ${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID# my = true "проект в проекта" $ProjectTitle ":" ${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID ". ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомлението, моля, управлявайте "настройките за абонамента":"</value>
<value>Преместване на задача: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е преместило Задача на "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" към "$SubEntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#my=true" проект в проекта "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID". ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". За да промените типа на уведомлението, моля, управлявайте "настройките за абонамента":"</value>
</data>
<data name="pattern_TaskResumed" xml:space="preserve">
<value>h1.Task е възобновено: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":":" ${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID " $ProjectTitle ": project: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
<value>h1.Task е възобновено: "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" $__DateTime "$__AuthorName":"$__AuthorUrl" е възобновил Задача "$EntityTitle":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID" в "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" project: $AdditionalData ^ Получавате този имейл, защото сте регистриран потребител на портала "${__VirtualRootPath}":"${__VirtualRootPath}". Ако не искате да получавате известия за тази задача, моля, "отпишете се":"${__VirtualRootPath}/Products/Projects/Tasks.aspx?prjID=$ProjectID&amp;ID=$EntityID". ^</value>
</data>
<data name="subject_EditedCommentForMessage" xml:space="preserve">
<value>Проекти [$ProjectTitle]. Редактиран коментар към дискусията: $EntityTitle</value>

View File

@ -114,7 +114,7 @@ Din portal adresse:"$__VirtualRootPath":"$__VirtualRootPath"
"Edit subscription settings":"$RecipientSubscriptionConfigURL"</value>
</data>
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.You have been Added to the Project Team: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" $__DateTime "$__AuthorName":"$__AuthorUrl" has added you to the team of the project:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"] ^You receive this email because you are a registered user of the "${__VirtualRootPath}":"${__VirtualRootPath}" portal. To change the notification type, please manage your "subscription settings":"$RecipientSubscriptionConfigURL".^</value>
<value>h1.You have been Added to the Project Team: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" $__DateTime "$__AuthorName":"$__AuthorUrl" has added you to the team of the project: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"] ^You receive this email because you are a registered user of the "${__VirtualRootPath}":"${__VirtualRootPath}" portal. To change the notification type, please manage your "subscription settings":"$RecipientSubscriptionConfigURL".^</value>
</data>
<data name="pattern_LateMilestone" xml:space="preserve">
<value>h1.Forfald for milepæl:"$EntityTitle":"${__VirtualRootPath}/Products/Projects/Milestones.aspx?prjID=$ProjectID#sortBy=deadline&amp;sortOrder=stigende"

View File

@ -113,7 +113,7 @@ Se han importado los nuevos datos exitosamente.
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Usted fue añadido en el equipo del proyecto: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" ha añadido a usted en el equipo del proyecto:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" ha añadido a usted en el equipo del proyecto: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Usted recibe este correo electrónico porque es un usuario registrado del portal "${__VirtualRootPath}":"${__VirtualRootPath}". Para cambiar el tipo de notificacion, por favor, gestione sus "ajustes de suscripcion":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -107,7 +107,7 @@ Novi podaci su uspješno uvezeni.
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Dodani ste u tim projekta: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" vas je dodao u tim projekta:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" vas je dodao u tim projekta: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Dobili ste ovaj email jer ste registrirani korisnik "${__VirtualRootPath}":"${__VirtualRootPath}" portala. Ukoliko želite promijeniti način obavještavanja, molim promijenite postavke u "Postavke obavijesti":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -113,7 +113,7 @@ Az új adatok importja sikeres volt.
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Hozzáadták Önt a(z): "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID" projektcsapathoz
$__DateTime "$__AuthorName":"$__AuthorUrl" hozzáadta Önt a(z):["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"] projekt csapatához
$__DateTime "$__AuthorName":"$__AuthorUrl" hozzáadta Önt a(z): ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"] projekt csapatához
^Azért kapta ezt az emailt mert Ön a(z) "${__VirtualRootPath}":"${__VirtualRootPath}" portál regisztrált felhasználója. Az értesítési beállítások módosításait a "$RecipientSubscriptionConfigURL" oldalon a "feliratkozási beállítások" menüpont alatt végezheti el.^</value>
</data>

View File

@ -105,7 +105,7 @@ Data baru telah berhasil diimpor.
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Anda Telah Ditambahkan ke Tim Proyek: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" telah menambahkan Anda ke dalam tim proyek:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" telah menambahkan Anda ke dalam tim proyek: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Anda menerima email ini karena Anda adalah pengguna yang terdaftar di portal "${__VirtualRootPath}":"${__VirtualRootPath}". Untuk mengubah jenis pemberitahuan yang diterima, silakan lakukan "pengaturan status berlangganan":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -115,7 +115,7 @@ $AdditionalData.get_item("MessagePreview")
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.あなたがプロジェクトチームに追加されました: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" has added you to the team of the project:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" has added you to the team of the project: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^あなたがポータルの登録ユーザであるため、このメールを受け取る "${__VirtualRootPath}":"${__VirtualRootPath}". 通知の種類を変更するには、を管理してください "サブスクリプションの設定":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -93,7 +93,7 @@ $AdditionalData.get_item("MessagePreview")
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.당신은 프로젝트 팀에 추가되었습니다: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" has added you to the team of the project:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" has added you to the team of the project: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^당신이 포털의 등록 된 사용자이기 때문에이 이메일을 수신"${__VirtualRootPath}":"${__VirtualRootPath}" 알림 유형을 변경하려면 구독 설정을 관리하시기 바랍니다 "subscription settings":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -113,7 +113,7 @@ Nauji duomenys sėkmingai importuoti.
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Jūs įtrauktas į komandą projekte: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime vartotojas "$__AuthorName":"$__AuthorUrl" įtraukė Jus į komandą projekte:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime vartotojas "$__AuthorName":"$__AuthorUrl" įtraukė Jus į komandą projekte: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Jūs gavote šį pranešimą, nes esate registruotas vartotojas portale "${__VirtualRootPath}":"${__VirtualRootPath}". Norėdami keisti pranešimų pobūdį, keiskite pranešimų prenumeratos nustatymus":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -115,7 +115,7 @@ Adres twojego portalu: "$__VirtualRootPath":"$__VirtualRootPath"
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Zostałeś dodany do ekipy projektu: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime: Użytkownik "$__AuthorName":"$__AuthorUrl" dodał cię do ekipy projektu:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime: Użytkownik "$__AuthorName":"$__AuthorUrl" dodał cię do ekipy projektu: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Otrzymujesz tę wiadomość, ponieważ jesteś zarejestrowanym użytkownikiem portalu "${__VirtualRootPath}":"${__VirtualRootPath}". By zmienić rodzaj powiadomienia, przejdź do "ustawień subskrypcji":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -113,7 +113,7 @@ Os novos dados foram importados com sucesso
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Você foi adicionado a Equipe do Projeto: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" o adicionou a equipe do projeto:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" o adicionou a equipe do projeto: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Você recebeu este e-mail porque é um usuário registrado do portal "${__VirtualRootPath}":"${__VirtualRootPath}". Para alterar o tipo de notificação, gerencie suas "configurações de subscrição":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -95,7 +95,7 @@ Endereço do portal: "$__VirtualRootPath":"$__VirtualRootPath"
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Foi adicionado à equipa de projeto: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" adicionou-o à equipa de projeto:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" adicionou-o à equipa de projeto: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Recebeu este email porque é um utilizador registado do portal "${__VirtualRootPath}":"${__VirtualRootPath}". Para alterar o tipo de notificação, por favor altere as suas configurações de subscrição:"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -113,7 +113,7 @@ The new data has been successfully imported.
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.You have been added to the project team: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" has added you to the team of the project:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" has added you to the team of the project: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^You receive this email because you are a registered user of the "${__VirtualRootPath}":"${__VirtualRootPath}" portal. To change the notification type, please manage your "subscription settings":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -113,7 +113,7 @@ $AdditionalData.get_item("MessagePreview")
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Вас добавили в команду проекта: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime пользователь "$__AuthorName":"$__AuthorUrl" добавил Вас в команду проекта:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime пользователь "$__AuthorName":"$__AuthorUrl" добавил Вас в команду проекта: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Вы получили это сообщение, так как зарегистрированы на портале "${__VirtualRootPath}":"${__VirtualRootPath}". Чтобы изменить тип оповещения, настройте "параметры подписки":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -113,7 +113,7 @@ Nové údaje sa naimportovali správne.
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Boli ste pridaný do projektového tímu: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" Vás pridal do projektového tímu:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" Vás pridal do projektového tímu: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^Tento email ste dostali, pretože ste registrovaným používateľom "${__VirtualRootPath}":"${__VirtualRootPath}" portálu. Na zmenu typu oznámení, zmeňte prosím svoje "nastavenia oznámení":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -113,7 +113,7 @@ Novi podatki so bili uspešno uvoženi.
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.Dodani ste bili v ekipo projekta: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" vas je dodal v ekipo projekta:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" vas je dodal v ekipo projekta: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^To e-pošto ste prejeli, ker ste registriran uporabnik portala "${__VirtualRootPath}":"${__VirtualRootPath}". Če želite spremeniti vrsto obvestil, prosim uredite svoje "Nastavitve naročnine":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -91,7 +91,7 @@ $AdditionalData.get_item("MessagePreview")
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.คุณได้ถูกเพิ่มเข้าไปในทีมโครงการ: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" ได้เพิ่มคุณเข้าทีมโครงการ:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" ได้เพิ่มคุณเข้าทีมโครงการ: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^คุณได้รับอีเมลนี้เพราะว่าคุณได้ลงทะเบียนไว้ที่ "${__VirtualRootPath}":"${__VirtualRootPath}". หากต้องการจะเปลี่ยนแปลงการแจ้งเตือน, กรุณาเข้าไปปรับที่ "การตั้งค่าลงทะเบียน":"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -115,7 +115,7 @@ $AdditionalData.get_item("MessagePreview")
<data name="pattern_InviteToProject" xml:space="preserve">
<value>h1.您已添加到項目團隊: "$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"
$__DateTime "$__AuthorName":"$__AuthorUrl" 已將您添加到項目團隊:["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
$__DateTime "$__AuthorName":"$__AuthorUrl" 已將您添加到項目團隊: ["$ProjectTitle":"${__VirtualRootPath}/Products/Projects/Projects.aspx?prjID=$ProjectID"]
^您收到此電子郵件是因為您是該帳戶的註冊用戶 "${__VirtualRootPath}":"${__VirtualRootPath}" portal. 要更改通知類型,請管理您的“訂閱設置”:"$RecipientSubscriptionConfigURL".^</value>
</data>

View File

@ -16,6 +16,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Globalization;
using System.IO;
@ -123,7 +124,7 @@ namespace ASC.Web.Studio.UserControls.FirstTime
Page.RegisterBodyScripts(
"~/js/uploader/jquery.fileupload.js",
"~/UserControls/FirstTime/js/manager.js");
if(ModeThemeSettings.GetModeThemesSettings().ModeThemeName == ModeTheme.dark)
if (ModeThemeSettings.GetModeThemesSettings().ModeThemeName == ModeTheme.dark)
{
Page.RegisterStyle("~/UserControls/FirstTime/css/dark-emailandpassword.less");
}
@ -266,36 +267,63 @@ namespace ASC.Web.Studio.UserControls.FirstTime
}
private static string _amiId;
private static string _amiToken;
private static bool IncorrectAmiId(string customAmiId)
{
customAmiId = (customAmiId ?? "").Trim();
if (string.IsNullOrEmpty(customAmiId)) return true;
if (string.IsNullOrEmpty(customAmiId))
{
return true;
}
if (string.IsNullOrEmpty(_amiId))
{
var getAmiIdUrl = SetupInfo.AmiMetaUrl + "instance-id";
var request = (HttpWebRequest)WebRequest.Create(getAmiIdUrl);
try
{
using (var response = request.GetResponse())
using (var responseStream = response.GetResponseStream())
using (var reader = new StreamReader(responseStream))
{
_amiId = reader.ReadToEnd();
}
LogManager.GetLogger("ASC.Web.FirstTime").Debug("Instance id: " + _amiId);
}
catch (Exception e)
{
LogManager.GetLogger("ASC.Web.FirstTime").Error("Request AMI id", e);
}
_amiToken = GetResponseString("PUT", SetupInfo.AmiTokenUrl, new Dictionary<string, string> { { "X-aws-ec2-metadata-token-ttl-seconds", "21600" } });
_amiId = GetResponseString("GET", SetupInfo.AmiMetaUrl, new Dictionary<string, string> { { "X-aws-ec2-metadata-token", _amiToken } });
}
return string.IsNullOrEmpty(_amiId) || _amiId != customAmiId;
}
private static string GetResponseString(string method, string requestUrl, Dictionary<string, string> headers)
{
string responseString = null;
if (string.IsNullOrEmpty(requestUrl))
{
return responseString;
}
try
{
var request = (HttpWebRequest)WebRequest.Create(requestUrl);
request.Method = method;
foreach (var header in headers)
{
request.Headers.Add(header.Key, header.Value);
}
using (var response = request.GetResponse())
using (var responseStream = response.GetResponseStream())
using (var reader = new StreamReader(responseStream))
{
responseString = reader.ReadToEnd();
}
LogManager.GetLogger("ASC.Web.FirstTime").Debug($"AMI Request {requestUrl} {responseString}");
}
catch (Exception e)
{
LogManager.GetLogger("ASC.Web.FirstTime").Error("AMI Request", e);
}
return responseString;
}
private static void SubscribeFromSite(UserInfo user)
{
try

View File

@ -39,11 +39,11 @@
<div class="host requiredField">
<span class="requiredErrorText"><%= Resource.LdapSettingsEmptyField %></span>
<div class="smtp-settings-title headerPanelSmall"><%= Resource.HostName %>:</div>
<input type="text" class="smtp-settings-field textEdit" value="${ host }" />
<input type="text" class="smtp-settings-field textEdit" maxlength="255" value="${ host }" />
</div>
<div class="port requiredField">
<div class="smtp-settings-title headerPanelSmall"><%= Resource.Port %>:</div>
<input type="text" class="smtp-settings-field textEdit" value="${ port }" />
<input type="text" class="smtp-settings-field textEdit" maxlength="5" value="${ port }" />
</div>
</div>
<div class="smtp-settings-item">
@ -53,14 +53,14 @@
<div class="smtp-settings-item host-login requiredField">
<span class="requiredErrorText"><%= Resource.LdapSettingsEmptyField %></span>
<div class="smtp-settings-title headerPanelSmall"><%= Resource.HostLogin %>:</div>
<input type="text" class="smtp-settings-field textEdit" value="${ credentialsUserName }"
<input type="text" class="smtp-settings-field textEdit" maxlength="255" value="${ credentialsUserName }"
{{if !enableAuth }} disabled="disabled" {{/if}}/>
</div>
<div class="smtp-settings-item host-password requiredField">
<span class="requiredErrorText"><%= Resource.LdapSettingsEmptyField %></span>
<div class="smtp-settings-title headerPanelSmall"><%= Resource.HostPassword %>:</div>
<input style="display:none" type="password" name="fakepasswordremembered"/>
<input autocomplete="off" type="password" class="smtp-settings-field textEdit" value="${ credentialsUserPassword }"
<input autocomplete="off" type="password" class="smtp-settings-field textEdit" maxlength="255" value="${ credentialsUserPassword }"
{{if !enableAuth }} disabled="disabled"{{else}} placeholder="**********"{{/if}} />
</div>
<div class="smtp-settings-item">
@ -69,12 +69,12 @@
</div>
<div class="smtp-settings-item display-name">
<div class="smtp-settings-title"><%= Resource.SenderName %>:</div>
<input type="text" class="smtp-settings-field textEdit" value="${ senderDisplayName }" />
<input type="text" class="smtp-settings-field textEdit" maxlength="255" value="${ senderDisplayName }" />
</div>
<div class="smtp-settings-item email-address requiredField">
<span class="requiredErrorText"><%= Resource.LdapSettingsEmptyField %></span>
<div class="smtp-settings-title headerPanelSmall"><%= Resource.SenderEmailAddress %>:</div>
<input type="text" class="smtp-settings-field textEdit" value="${ senderAddress }" />
<input type="text" class="smtp-settings-field textEdit" maxlength="255" value="${ senderAddress }" />
</div>
<div class="smtp-settings-item clearFix enable-ssl">
<input id="customSettingsEnableSsl" type="checkbox" {{if enableSSL }} checked="checked" {{/if}} />

View File

@ -3077,12 +3077,12 @@ div.fc-todo-list {
.event-editor .viewer .title.big {
color: @dark-text-color;
font-size: 15pt;
line-height: 15pt;
line-height: 18pt;
max-height: 45pt;
font-weight: bold;
padding: 0;
margin-top: .5em;
margin-bottom: 1em;
margin-top: .4em;
margin-bottom: .9em;
word-wrap: break-word;
overflow: hidden;
white-space: normal;

View File

@ -1085,6 +1085,7 @@ function UserDomGenerator() {
var input = document.createElement("input");
input.setAttribute("class", "textEdit");
input.setAttribute("type", "text");
input.setAttribute("maxlength", "255");
block.append(input);
var apply = document.createElement("span");

View File

@ -26,7 +26,7 @@
<add key="deeplink.documents.url" value="oodocuments://openfile" />
<add key="deeplink.documents.iospackageid" value="944896972" />
<add key="files.docservice.coauthor-docs" value=".pdf|.csv|.docm|.docx|.docxf|.dotm|.dotx|.potm|.potx|.ppsm|.pptm|.ppsx|.pptx|.txt|.xlsm|.xlsx|.xltm|.xltx" />
<add key="files.docservice.commented-docs" value=".docm|.docx|.docxf|.dotm|.dotx|.potm|.potx|.ppsm|.pptm|.ppsx|.pptx|.xlsm|.xlsx|.xltm|.xltx" />
<add key="files.docservice.commented-docs" value=".docm|.docx|.docxf|.dotm|.dotx|.potm|.potx|.ppsm|.pptm|.ppsx|.pptx|.xlsm|.xlsx|.xltm|.xltx|.pdf" />
<add key="files.docservice.convert-docs" value=".doc|.dot|.dps|.dpt|.epub|.et|.ett|.fb2|.fodp|.fods|.fodt|.htm|.html|.mht|.mhtml|.odp|.ods|.odt|.otp|.ots|.ott|.pot|.pps|.ppt|.rtf|.stw|.sxc|.sxi|.sxw|.wps|.wpt|.xls|.xlsb|.xlt" />
<add key="files.docservice.edited-docs" value=".pdf|.csv|.doc|.docm|.docx|.docxf|.dot|.dotm|.dotx|.dps|.dpt|.epub|.et|.ett|.fb2|.fodp|.fods|.fodt|.htm|.html|.mht|.mhtml|.odp|.ods|.odt|.otp|.ots|.ott|.pot|.potm|.potx|.pps|.ppsm|.ppsx|.ppt|.pptm|.pptx|.rtf|.stw|.sxc|.sxi|.sxw|.txt|.wps|.wpt|.xls|.xlsb|.xlsm|.xlsx|.xlt|.xltm|.xltx|.xml" />
<add key="files.docservice.encrypted-docs" value=".docm|.docx|.docxf|.dotm|.dotx|.potm|.potx|.ppsm|.pptm|.ppsx|.pptx|.xlsm|.xlsx|.xltm|.xltx|.pdf" />
@ -42,7 +42,7 @@
<add key="files.ffmpeg" value="" />
<add key="files.ffmpeg.exts" value="avi|mpeg|mpg|wmv" />
<add key="files.index.formats" value=".pptx|.xlsx|.docx" />
<add key="files.thirdparty.enable" value="box,dropboxv2,docusign,google,onedrive,nextcloud,owncloud,webdav,kdrive,yandex" />
<add key="files.thirdparty.enable" value="box,dropboxv2,docusign,google,onedrive,sharepoint,nextcloud,owncloud,webdav,kdrive,yandex" />
<add key="files.uploader.url" value="Products/Files/" />
<add key="files.viewed-images" value=".bmp|.gif|.jpeg|.jpg|.png|.ico|.tif|.tiff|.webp" />
<add key="files.viewed-media" value=".aac|.flac|.m4a|.mp3|.oga|.ogg|.wav|.f4v|.m4v|.mov|.mp4|.ogv|.webm|.avi|.mpg|.mpeg|.wmv" />