public static string Serialize(DocumentServiceParams docServiceParams) { using (var ms = new MemoryStream()) { var serializer = new DataContractJsonSerializer(typeof(DocumentServiceParams)); serializer.WriteObject(ms, docServiceParams); ms.Seek(0, SeekOrigin.Begin); return(Encoding.UTF8.GetString(ms.GetBuffer(), 0, (int)ms.Length)); } }
public static File GetParams(object fileId, int version, string shareLinkKey, bool itsNew, bool editPossible, bool tryEdit, out DocumentServiceParams docServiceParams) { File file; var lastVersion = true; var rightToEdit = true; var checkLink = false; using (var fileDao = Global.DaoFactory.GetFileDao()) { var fileShare = FileShareLink.Check(shareLinkKey, fileDao, out file); switch (fileShare) { case FileShare.ReadWrite: checkLink = true; break; case FileShare.Read: editPossible = false; rightToEdit = false; checkLink = true; break; } if (file == null) { var curFile = fileDao.GetFile(fileId); if (0 < version && version < curFile.Version) { file = fileDao.GetFile(fileId, version); lastVersion = false; } else { file = curFile; } } } if (!string.IsNullOrEmpty(file.Error)) { throw new Exception(file.Error); } return GetParams(file, lastVersion, checkLink, itsNew, editPossible, rightToEdit, tryEdit, out docServiceParams); }
private void PageLoad() { var editPossible = !RequestEmbedded; var isExtenral = false; File file; var fileUri = string.Empty; try { if (string.IsNullOrEmpty(RequestFileUrl)) { _fileNew = (Request["new"] ?? "") == "true"; var app = ThirdPartySelector.GetAppByFileId(RequestFileId); if (app == null) { var ver = string.IsNullOrEmpty(Request[FilesLinkUtility.Version]) ? -1 : Convert.ToInt32(Request[FilesLinkUtility.Version]); file = DocumentServiceHelper.GetParams(RequestFileId, ver, RequestShareLinkKey, _fileNew, editPossible, !RequestView, out _docParams); _fileNew = _fileNew && file.Version == 1 && file.ConvertedType != null && file.CreateOn == file.ModifiedOn; } else { isExtenral = true; bool editable; _thirdPartyApp = true; file = app.GetFile(RequestFileId, out editable); file = DocumentServiceHelper.GetParams(file, true, true, true, editable, editable, editable, out _docParams); _docParams.FileUri = app.GetFileStreamUrl(file); _docParams.FolderUrl = string.Empty; } } else { isExtenral = true; fileUri = RequestFileUrl; var fileTitle = Request[FilesLinkUtility.FileTitle]; if (string.IsNullOrEmpty(fileTitle)) fileTitle = Path.GetFileName(HttpUtility.UrlDecode(fileUri)) ?? ""; if (CoreContext.Configuration.Standalone) { try { var webRequest = WebRequest.Create(RequestFileUrl); using (var response = webRequest.GetResponse()) using (var responseStream = new ResponseStream(response)) { var externalFileKey = DocumentServiceConnector.GenerateRevisionId(RequestFileUrl); fileUri = DocumentServiceConnector.GetExternalUri(responseStream, MimeMapping.GetMimeMapping(fileTitle), externalFileKey); } } catch (Exception error) { Global.Logger.Error("Cannot receive external url for \"" + RequestFileUrl + "\"", error); } } file = new File { ID = RequestFileUrl, Title = Global.ReplaceInvalidCharsAndTruncate(fileTitle) }; file = DocumentServiceHelper.GetParams(file, true, true, true, false, false, false, out _docParams); _docParams.CanEdit = editPossible && !CoreContext.Configuration.Standalone; _editByUrl = true; _docParams.FileUri = fileUri; } } catch (Exception ex) { _errorMessage = ex.Message; return; } if (_docParams.ModeWrite && FileConverter.MustConvert(file)) { try { file = FileConverter.ExecDuplicate(file, RequestShareLinkKey); } catch (Exception e) { _docParams = null; _errorMessage = e.Message; return; } var comment = "#message/" + HttpUtility.UrlEncode(FilesCommonResource.CopyForEdit); Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(file.ID) + comment); return; } Title = file.Title; if (string.IsNullOrEmpty(_docParams.FolderUrl)) { _docParams.FolderUrl = Request[FilesLinkUtility.FolderUrl] ?? ""; } if (MobileDetector.IsRequestMatchesMobile(true)) { _docParams.FolderUrl = string.Empty; } if (RequestEmbedded) { _docParams.Type = DocumentServiceParams.EditorType.Embedded; var shareLinkParam = "&" + FilesLinkUtility.DocShareKey + "=" + RequestShareLinkKey; _docParams.ViewerUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.FilesBaseAbsolutePath + FilesLinkUtility.EditorPage + "?" + FilesLinkUtility.Action + "=view" + shareLinkParam); _docParams.DownloadUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.FileHandlerPath + "?" + FilesLinkUtility.Action + "=download" + shareLinkParam); _docParams.EmbeddedUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.FilesBaseAbsolutePath + FilesLinkUtility.EditorPage + "?" + FilesLinkUtility.Action + "=embedded" + shareLinkParam); } else { _docParams.Type = IsMobile ? DocumentServiceParams.EditorType.Mobile : DocumentServiceParams.EditorType.Desktop; if (FileSharing.CanSetAccess(file)) { _docParams.SharingSettingsUrl = CommonLinkUtility.GetFullAbsolutePath(Share.Location + "?" + FilesLinkUtility.FileId + "=" + file.ID); } } if (!isExtenral) { _docKeyForTrack = DocumentServiceHelper.GetDocKey(file.ID, -1, DateTime.MinValue); FileMarker.RemoveMarkAsNew(file); } if (_docParams.ModeWrite) { _tabId = FileTracker.Add(file.ID, _fileNew); _fixedVersion = FileTracker.FixedVersion(file.ID); _docParams.FileChoiceUrl = CommonLinkUtility.GetFullAbsolutePath(FileChoice.Location) + "?" + FileChoice.DocumentTypeParam + "=" + FilterType.SpreadsheetsOnly; } else { _docParams.LinkToEdit = _editByUrl ? CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebEditorExternalUrl(fileUri, file.Title)) : CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebEditorUrl(file.ID)); if (FileConverter.MustConvert(_docParams.File)) _editByUrl = true; } }
public static string Serialize(DocumentServiceParams documentServiceParams) { using (var ms = new MemoryStream()) { var serializer = new DataContractJsonSerializer(typeof(DocumentServiceParams)); serializer.WriteObject(ms, documentServiceParams); ms.Seek(0, SeekOrigin.Begin); return Encoding.UTF8.GetString(ms.GetBuffer(), 0, (int)ms.Length); } }
public static File GetParams(File file, bool lastVersion, bool checkLink, bool itsNew, bool editPossible, bool rightToEdit, bool tryEdit, out DocumentServiceParams docServiceParams) { if (!TenantExtra.GetTenantQuota().DocsEdition) { throw new Exception(FilesCommonResource.ErrorMassage_PayTariffDocsEdition); } if (!checkLink && CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsVisitor()) { rightToEdit = false; } if (file == null) { throw new Exception(FilesCommonResource.ErrorMassage_FileNotFound); } if (file.RootFolderType == FolderType.TRASH) { throw new Exception(FilesCommonResource.ErrorMassage_ViewTrashItem); } if (!checkLink) { rightToEdit = rightToEdit && Global.GetFilesSecurity().CanEdit(file); if (editPossible && !rightToEdit) { editPossible = false; } if (!editPossible && !Global.GetFilesSecurity().CanRead(file)) { throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException_ReadFile); } } rightToEdit = rightToEdit && ((file.FileStatus & FileStatus.IsEditing) != FileStatus.IsEditing || FileUtility.CanCoAuhtoring(file.Title)); if (editPossible && !rightToEdit) { editPossible = false; } rightToEdit = rightToEdit && !(FileLocker.SingleEditing && FileLocker.GetLockedBy(file.ID).Contains(SecurityContext.CurrentAccount.ID) && !SecurityContext.CurrentAccount.ID.Equals(ASC.Core.Configuration.Constants.Guest.ID)); if (editPossible && !rightToEdit) { editPossible = false; } rightToEdit = rightToEdit && FileUtility.CanWebEdit(file.Title); if (editPossible && !rightToEdit) { editPossible = false; } if (!editPossible && !FileUtility.CanWebView(file.Title)) { throw new Exception(FilesCommonResource.ErrorMassage_NotSupportedFormat); } var versionForKey = file.Version; if (!FileLocker.LockVersion(file.ID)) { versionForKey++; } //CreateNewDoc if (itsNew && file.Version == 1 && file.ConvertedType != null && file.CreateOn == file.ModifiedOn) { versionForKey = 1; } var docKey = GetDocKey(file.ID, versionForKey, file.CreateOn); var modeWrite = editPossible && tryEdit; docServiceParams = new DocumentServiceParams { File = file, Key = docKey, CanEdit = rightToEdit && lastVersion, ModeWrite = modeWrite, }; return(file); }
public static File GetParams(object fileId, int version, string shareLinkKey, bool itsNew, bool editPossible, bool tryEdit, out DocumentServiceParams docServiceParams) { File file; var lastVersion = true; var rightToEdit = true; var checkLink = false; using (var fileDao = Global.DaoFactory.GetFileDao()) { var editLink = FileShareLink.Check(shareLinkKey, fileDao, out file); switch (editLink) { case FileShare.ReadWrite: checkLink = true; break; case FileShare.Read: editPossible = false; rightToEdit = false; checkLink = true; break; } if (file == null) { var curFile = fileDao.GetFile(fileId); if (0 < version && version < curFile.Version) { file = fileDao.GetFile(fileId, version); lastVersion = false; } else { file = curFile; } } } return(GetParams(file, lastVersion, checkLink, itsNew, editPossible, rightToEdit, tryEdit, out docServiceParams)); }
private void PageLoad() { var editPossible = !RequestEmbedded && !IsMobile; var isExtenral = false; File file; var fileUri = string.Empty; if (!ItsTry) { try { if (string.IsNullOrEmpty(RequestFileUrl)) { _fileNew = (Request["new"] ?? "") == "true"; var app = ThirdPartySelector.GetAppByFileId(RequestFileId); if (app == null) { var ver = string.IsNullOrEmpty(Request[FilesLinkUtility.Version]) ? -1 : Convert.ToInt32(Request[FilesLinkUtility.Version]); file = DocumentServiceHelper.GetParams(RequestFileId, ver, RequestShareLinkKey, _fileNew, editPossible, !RequestView, out _docParams); _fileNew = _fileNew && file.Version == 1 && file.ConvertedType != null && file.CreateOn == file.ModifiedOn; } else { isExtenral = true; bool editable; ThirdPartyApp = true; file = app.GetFile(RequestFileId, out editable); file = DocumentServiceHelper.GetParams(file, true, true, true, editable, editable, editable, out _docParams); _docParams.FileUri = app.GetFileStreamUrl(file); _docParams.FolderUrl = string.Empty; } } else { isExtenral = true; fileUri = RequestFileUrl; var fileTitle = Request[FilesLinkUtility.FileTitle]; if (string.IsNullOrEmpty(fileTitle)) fileTitle = Path.GetFileName(HttpUtility.UrlDecode(fileUri)) ?? ""; if (CoreContext.Configuration.Standalone) { try { var webRequest = WebRequest.Create(RequestFileUrl); using (var response = webRequest.GetResponse()) using (var responseStream = new ResponseStream(response)) { var externalFileKey = DocumentServiceConnector.GenerateRevisionId(RequestFileUrl); fileUri = DocumentServiceConnector.GetExternalUri(responseStream, MimeMapping.GetMimeMapping(fileTitle), externalFileKey); } } catch (Exception error) { Global.Logger.Error("Cannot receive external url for \"" + RequestFileUrl + "\"", error); } } file = new File { ID = RequestFileUrl, Title = Global.ReplaceInvalidCharsAndTruncate(fileTitle) }; file = DocumentServiceHelper.GetParams(file, true, true, true, false, false, false, out _docParams); _docParams.CanEdit = editPossible && !CoreContext.Configuration.Standalone; _editByUrl = true; _docParams.FileUri = fileUri; } } catch (Exception ex) { _errorMessage = ex.Message; return; } } else { FileType tryType; try { tryType = (FileType)Enum.Parse(typeof(FileType), Request[FilesLinkUtility.TryParam]); } catch { tryType = FileType.Document; } var path = "demo"; if (!IsMobile) { path = FileConstant.NewDocPath + CultureInfo.CurrentUICulture.TwoLetterISOLanguageName + "/"; if (!Global.GetStoreTemplate().IsDirectory(path)) path = FileConstant.NewDocPath + "default/"; path += "new"; } path += FileUtility.InternalExtension[tryType]; var store = Global.GetStoreTemplate(); fileUri = store.GetUri("", path).ToString(); var fileTitle = "Demo" + FileUtility.InternalExtension[tryType]; file = new File { ID = Guid.NewGuid(), Title = Global.ReplaceInvalidCharsAndTruncate(fileTitle) }; file = DocumentServiceHelper.GetParams(file, true, true, true, editPossible, editPossible, true, out _docParams); _docParams.FileUri = CommonLinkUtility.GetFullAbsolutePath(fileUri); _editByUrl = true; _docParams.Lang = CultureInfo.CurrentUICulture.Name; } if (_docParams.ModeWrite && FileConverter.MustConvert(file)) { try { file = FileConverter.ExecDuplicate(file, RequestShareLinkKey); } catch (Exception e) { _docParams = null; _errorMessage = e.Message; return; } var comment = "#message/" + HttpUtility.UrlEncode(FilesCommonResource.CopyForEdit); Response.Redirect(FilesLinkUtility.GetFileWebEditorUrl(file.ID) + comment); return; } Title = HeaderStringHelper.GetPageTitle(file.Title); _newScheme = FileUtility.ExtsNewService.Contains(FileUtility.GetFileExtension(file.Title)); if (_newScheme) { DocServiceApiUrl = FilesLinkUtility.DocServiceApiUrlNew; } if (string.IsNullOrEmpty(_docParams.FolderUrl)) { _docParams.FolderUrl = Request[FilesLinkUtility.FolderUrl] ?? ""; } if (MobileDetector.IsRequestMatchesMobile(true)) { _docParams.FolderUrl = string.Empty; } if (RequestEmbedded) { _docParams.Type = DocumentServiceParams.EditorType.Embedded; var shareLinkParam = "&" + FilesLinkUtility.DocShareKey + "=" + RequestShareLinkKey; _docParams.ViewerUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.FilesBaseAbsolutePath + FilesLinkUtility.EditorPage + "?" + FilesLinkUtility.Action + "=view" + shareLinkParam); _docParams.DownloadUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.FileHandlerPath + "?" + FilesLinkUtility.Action + "=download" + shareLinkParam); _docParams.EmbeddedUrl = CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.FilesBaseAbsolutePath + FilesLinkUtility.EditorPage + "?" + FilesLinkUtility.Action + "=embedded" + shareLinkParam); } else { _docParams.Type = IsMobile ? DocumentServiceParams.EditorType.Mobile : DocumentServiceParams.EditorType.Desktop; if (FileSharing.CanSetAccess(file)) { _docParams.SharingSettingsUrl = CommonLinkUtility.GetFullAbsolutePath(Share.Location + "?" + FilesLinkUtility.FileId + "=" + file.ID); } } if (!isExtenral) { _docKeyForTrack = DocumentServiceHelper.GetDocKey(file.ID, -1, DateTime.MinValue); if (!ItsTry) FileMarker.RemoveMarkAsNew(file); } if (_docParams.ModeWrite) { _tabId = FileTracker.Add(file.ID, _fileNew); _fixedVersion = FileTracker.FixedVersion(file.ID); if (ItsTry) { AppendAuthControl(); } } else { _docParams.LinkToEdit = _editByUrl ? CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebEditorExternalUrl(fileUri, file.Title)) : FileConverter.MustConvert(_docParams.File) || _newScheme ? CommonLinkUtility.GetFullAbsolutePath(FilesLinkUtility.GetFileWebEditorUrl(file.ID)) : string.Empty; } if (CoreContext.Configuration.Personal && IsMobile) { _docParams.CanEdit = false; } }
private void PageLoad() { var editPossible = !RequestEmbedded && !IsMobile; var isExtenral = false; File file; var fileUri = string.Empty; if (!ItsTry) { try { if (string.IsNullOrEmpty(RequestFileUrl)) { _fileNew = !string.IsNullOrEmpty(Request[UrlConstant.New]) && Request[UrlConstant.New] == "true"; var ver = string.IsNullOrEmpty(Request[CommonLinkUtility.Version]) ? -1 : Convert.ToInt32(Request[CommonLinkUtility.Version]); file = DocumentServiceHelper.GetParams(RequestFileId, ver, RequestShareLinkKey, _fileNew, editPossible, !RequestView, out _docParams); _fileNew = file.Version == 1 && file.ConvertedType != null && _fileNew && file.CreateOn == file.ModifiedOn; } else { isExtenral = true; fileUri = RequestFileUrl; var fileTitle = Request[CommonLinkUtility.FileTitle]; if (string.IsNullOrEmpty(fileTitle)) fileTitle = Path.GetFileName(HttpUtility.UrlDecode(fileUri)) ?? ""; if (CoreContext.Configuration.Standalone) { try { var webRequest = WebRequest.Create(RequestFileUrl); using (var response = webRequest.GetResponse()) using (var responseStream = new ResponseStream(response)) { fileUri = DocumentServiceConnector.GetExternalUri(responseStream, MimeMapping.GetMimeMapping(fileTitle), "new"); } } catch (Exception error) { Global.Logger.Error("Cannot receive external url for \"" + RequestFileUrl + "\"", error); } } file = new File { ID = fileUri.GetHashCode(), Title = Global.ReplaceInvalidCharsAndTruncate(fileTitle) }; file = DocumentServiceHelper.GetParams(file, true, true, true, false, false, false, out _docParams); _docParams.CanEdit = editPossible && !CoreContext.Configuration.Standalone; _editByUrl = true; _docParams.FileUri = fileUri; } } catch (Exception ex) { _errorMessage = ex.Message; return; } } else { FileType tryType; try { tryType = (FileType)Enum.Parse(typeof(FileType), Request[CommonLinkUtility.TryParam]); } catch { tryType = FileType.Document; } var fileTitle = "Demo"; fileTitle += FileUtility.InternalExtension[tryType]; var relativeUri = string.Format(CommonLinkUtility.FileHandlerPath + UrlConstant.ParamsDemo, tryType); fileUri = new Uri(Request.Url, relativeUri).ToString(); file = new File { ID = Guid.NewGuid(), Title = Global.ReplaceInvalidCharsAndTruncate(fileTitle) }; file = DocumentServiceHelper.GetParams(file, true, true, true, editPossible, editPossible, true, out _docParams); _docParams.FileUri = fileUri; _editByUrl = true; } if (_docParams.ModeWrite && FileConverter.MustConvert(file)) { try { file = FileConverter.ExecDuplicate(file, RequestShareLinkKey); } catch (Exception e) { _docParams = null; _errorMessage = e.Message; return; } var comment = "#message/" + HttpUtility.UrlEncode(FilesCommonResource.CopyForEdit); Response.Redirect(CommonLinkUtility.GetFileWebEditorUrl(file.ID) + comment); return; } Title = HeaderStringHelper.GetPageTitle(file.Title); if (string.IsNullOrEmpty(_docParams.FolderUrl)) { _docParams.FolderUrl = Request[CommonLinkUtility.FolderUrl] ?? ""; } if (MobileDetector.IsRequestMatchesMobile(Context.Request.UserAgent, true)) { _docParams.FolderUrl = string.Empty; } if (RequestEmbedded) { _docParams.Type = DocumentServiceParams.EditorType.Embedded; var shareLinkParam = "&" + CommonLinkUtility.DocShareKey + "=" + RequestShareLinkKey; _docParams.ViewerUrl = CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.FilesBaseAbsolutePath + CommonLinkUtility.EditorPage + "?" + CommonLinkUtility.Action + "=view" + shareLinkParam); _docParams.DownloadUrl = CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.FileHandlerPath + "?" + CommonLinkUtility.Action + "=download" + shareLinkParam); _docParams.EmbeddedUrl = CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.FilesBaseAbsolutePath + CommonLinkUtility.EditorPage + "?" + CommonLinkUtility.Action + "=embedded" + shareLinkParam); } else { _docParams.Type = IsMobile ? DocumentServiceParams.EditorType.Mobile : DocumentServiceParams.EditorType.Desktop; if (FileSharing.CanSetAccess(file)) { _docParams.SharingSettingsUrl = CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.FilesBaseAbsolutePath + "share.aspx" + "?" + CommonLinkUtility.FileId + "=" + file.ID + "&" + CommonLinkUtility.FileTitle + "=" + HttpUtility.UrlEncode(file.Title)); } } if (!isExtenral) { _docKeyForTrack = DocumentServiceHelper.GetDocKey(file.ID, -1, DateTime.MinValue); if (!ItsTry) FileMarker.RemoveMarkAsNew(file); } if (_docParams.ModeWrite) { _tabId = FileLocker.Add(file.ID, _fileNew); _lockVersion = FileLocker.LockVersion(file.ID); if (ItsTry) { AppendAuthControl(); } } else { _docParams.LinkToEdit = _editByUrl ? CommonLinkUtility.GetFullAbsolutePath(string.Format(CommonLinkUtility.FileWebEditorExternalUrlString, HttpUtility.UrlEncode(fileUri), file.Title)) : FileConverter.MustConvert(_docParams.File) ? CommonLinkUtility.GetFullAbsolutePath(CommonLinkUtility.GetFileWebEditorUrl(file.ID)) : string.Empty; } if (CoreContext.Configuration.YourDocsDemo && IsMobile) { _docParams.CanEdit = false; } }
public static File GetParams(File file, bool lastVersion, bool checkLink, bool itsNew, bool editPossible, bool rightToEdit, bool tryEdit, out DocumentServiceParams docServiceParams) { if (!TenantExtra.GetTenantQuota().DocsEdition) throw new Exception(FilesCommonResource.ErrorMassage_PayTariffDocsEdition); if (!checkLink && CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsVisitor()) { rightToEdit = false; } if (file == null) throw new FileNotFoundException(FilesCommonResource.ErrorMassage_FileNotFound); if (!string.IsNullOrEmpty(file.Error)) throw new Exception(file.Error); if (!checkLink) { rightToEdit = rightToEdit && Global.GetFilesSecurity().CanEdit(file); if (editPossible && !rightToEdit) { editPossible = false; } if (!editPossible && !Global.GetFilesSecurity().CanRead(file)) throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException_ReadFile); } if (file.RootFolderType == FolderType.TRASH) throw new Exception(FilesCommonResource.ErrorMassage_ViewTrashItem); rightToEdit = rightToEdit && !EntryManager.FileLockedForMe(file.ID); if (editPossible && !rightToEdit) { editPossible = false; } rightToEdit = rightToEdit && (!FileTracker.IsEditing(file.ID) || FileUtility.CanCoAuhtoring(file.Title) && !FileTracker.IsEditingAlone(file.ID)); if (editPossible && !rightToEdit) { editPossible = false; } rightToEdit = rightToEdit && FileUtility.CanWebEdit(file.Title); if (editPossible && !rightToEdit) { editPossible = false; } if (!editPossible && !FileUtility.CanWebView(file.Title)) throw new Exception(FilesCommonResource.ErrorMassage_NotSupportedFormat); var versionForKey = file.Version; if (!FileTracker.FixedVersion(file.ID)) versionForKey++; //CreateNewDoc if (itsNew && file.Version == 1 && file.ConvertedType != null && file.CreateOn == file.ModifiedOn) { versionForKey = 1; } var docKey = GetDocKey(file.ID, versionForKey, file.ProviderEntry ? file.ModifiedOn : file.CreateOn); var modeWrite = editPossible && tryEdit; docServiceParams = new DocumentServiceParams { File = file, Key = docKey, CanEdit = rightToEdit && lastVersion, ModeWrite = modeWrite, }; return file; }
public static File GetParams(File file, bool lastVersion, bool checkLink, bool itsNew, bool editPossible, bool rightToEdit, bool tryEdit, out DocumentServiceParams docServiceParams) { if (!TenantExtra.GetTenantQuota().DocsEdition) { throw new Exception(FilesCommonResource.ErrorMassage_PayTariffDocsEdition); } if (!checkLink && CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsVisitor()) { rightToEdit = false; } if (file == null) { throw new FileNotFoundException(FilesCommonResource.ErrorMassage_FileNotFound); } if (!string.IsNullOrEmpty(file.Error)) { throw new Exception(file.Error); } if (!checkLink) { rightToEdit = rightToEdit && Global.GetFilesSecurity().CanEdit(file); if (editPossible && !rightToEdit) { editPossible = false; } if (!editPossible && !Global.GetFilesSecurity().CanRead(file)) { throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException_ReadFile); } } if (file.RootFolderType == FolderType.TRASH) { throw new Exception(FilesCommonResource.ErrorMassage_ViewTrashItem); } if (file.ContentLength > SetupInfo.AvailableFileSize) { throw new Exception(string.Format(FilesCommonResource.ErrorMassage_FileSizeEdit, FileSizeComment.FilesSizeToString(SetupInfo.AvailableFileSize))); } rightToEdit = rightToEdit && !EntryManager.FileLockedForMe(file.ID); if (editPossible && !rightToEdit) { editPossible = false; } rightToEdit = rightToEdit && (!FileTracker.IsEditing(file.ID) || FileUtility.CanCoAuhtoring(file.Title) && !FileTracker.IsEditingAlone(file.ID)); if (editPossible && !rightToEdit) { editPossible = false; } rightToEdit = rightToEdit && FileUtility.CanWebEdit(file.Title); if (editPossible && !rightToEdit) { editPossible = false; } if (!editPossible && !FileUtility.CanWebView(file.Title)) { throw new Exception(FilesCommonResource.ErrorMassage_NotSupportedFormat); } var versionForKey = file.Version; //CreateNewDoc if ((itsNew || FileTracker.FixedVersion(file.ID)) && file.Version == 1 && file.CreateOn == file.ModifiedOn) { versionForKey = 0; } var docKey = GetDocKey(file.ID, versionForKey, file.ProviderEntry ? file.ModifiedOn : file.CreateOn); var modeWrite = editPossible && tryEdit; docServiceParams = new DocumentServiceParams { File = file, Key = docKey, CanEdit = rightToEdit && lastVersion, ModeWrite = modeWrite, }; return(file); }