private static void CreateFiles(ICommandContext commandContext, DirectoryUploadInfo uploadInfo, IEnumerable <HttpPostedFile> files, EntityReference publishingState, out List <string> @select, out List <Tuple <string, string> > errors) { @select = new List <string>(); errors = new List <Tuple <string, string> >(); var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(); var annotationDataAdapter = new AnnotationDataAdapter(dataAdapterDependencies); var website = HttpContext.Current.GetWebsite(); var location = website.Settings.Get <string>("WebFiles/StorageLocation"); StorageLocation storageLocation; if (!Enum.TryParse(location, true, out storageLocation)) { storageLocation = StorageLocation.CrmDocument; } var maxFileSizeErrorMessage = website.Settings.Get <string>("WebFiles/MaxFileSizeErrorMessage"); var annotationSettings = new AnnotationSettings(dataAdapterDependencies.GetServiceContext(), storageLocation: storageLocation, maxFileSizeErrorMessage: maxFileSizeErrorMessage); foreach (var file in files) { var serviceContext = commandContext.CreateServiceContext(); try { var webFile = new Entity("adx_webfile"); var fileName = Path.GetFileName(file.FileName); webFile.Attributes["adx_name"] = fileName; webFile.Attributes["adx_partialurl"] = GetPartialUrlFromFileName(fileName); webFile.Attributes["adx_websiteid"] = website.Entity.ToEntityReference(); webFile.Attributes["adx_publishingstateid"] = publishingState; webFile.Attributes["adx_hiddenfromsitemap"] = true; webFile.Attributes[uploadInfo.WebFileForeignKeyAttribute] = uploadInfo.EntityReference; serviceContext.AddObject(webFile); serviceContext.SaveChanges(); annotationDataAdapter.CreateAnnotation(new Annotation { Regarding = webFile.ToEntityReference(), FileAttachment = AnnotationDataAdapter.CreateFileAttachment(new HttpPostedFileWrapper(file), annotationSettings.StorageLocation) }, annotationSettings); @select.Add(new DirectoryContentHash(webFile.ToEntityReference()).ToString()); } catch (Exception e) { ADXTrace.Instance.TraceError(TraceCategory.Application, string.Format(@"Exception uploading file: {0}", e.ToString())); errors.Add(new Tuple <string, string>(file.FileName, e.Message)); } } }
protected override void ProcessRequest(HttpContext context, ICmsEntityServiceProvider serviceProvider, Guid portalScopeId, IPortalContext portal, OrganizationServiceContext serviceContext, Entity entity, CmsEntityMetadata entityMetadata, ICrmEntitySecurityProvider security) { if (!IsRequestMethod(context.Request, "POST")) { throw new CmsEntityServiceException(HttpStatusCode.MethodNotAllowed, "Request method {0} not allowed for this resource.".FormatWith(context.Request.HttpMethod)); } var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(requestContext: context.Request.RequestContext, portalName: PortalName); var annotationDataAdapter = new AnnotationDataAdapter(dataAdapterDependencies); var website = context.GetWebsite(); var location = website.Settings.Get <string>("WebFiles/StorageLocation"); StorageLocation storageLocation; if (!Enum.TryParse(location, true, out storageLocation)) { storageLocation = StorageLocation.CrmDocument; } var maxFileSizeErrorMessage = website.Settings.Get <string>("WebFiles/MaxFileSizeErrorMessage"); var annotationSettings = new AnnotationSettings(dataAdapterDependencies.GetServiceContext(), storageLocation: storageLocation, maxFileSizeErrorMessage: maxFileSizeErrorMessage); var files = context.Request.Files; var postedFiles = new List <HttpPostedFile>(); for (var i = 0; i < files.Count; i++) { postedFiles.Add(files[i]); } foreach (var file in postedFiles) { annotationDataAdapter.CreateAnnotation(new Annotation { Regarding = entity.ToEntityReference(), FileAttachment = AnnotationDataAdapter.CreateFileAttachment(new HttpPostedFileWrapper(file), annotationSettings.StorageLocation) }, annotationSettings); } context.Response.ContentType = "text/plain"; context.Response.Write("OK"); }
public void LoadDefaultAnnotationSettings() { defaultScanAnnotationSettings = new AnnotationSettings(); defaultScanAnnotationSettings.ShowXValues = Properties.Settings.Default.ShowScanMzLabels; defaultScanAnnotationSettings.ShowYValues = Properties.Settings.Default.ShowScanIntensityLabels; defaultScanAnnotationSettings.ShowMatchedAnnotations = Properties.Settings.Default.ShowScanMatchedAnnotations; defaultScanAnnotationSettings.ShowUnmatchedAnnotations = Properties.Settings.Default.ShowScanUnmatchedAnnotations; defaultScanAnnotationSettings.MatchTolerance = Properties.Settings.Default.MzMatchTolerance; defaultScanAnnotationSettings.MatchToleranceOverride = Properties.Settings.Default.ScanMatchToleranceOverride; defaultScanAnnotationSettings.MatchToleranceUnit = (MatchToleranceUnits) Properties.Settings.Default.MzMatchToleranceUnit; // ms-product-label -> (label alias, known color) defaultScanAnnotationSettings.LabelToAliasAndColorMap["y"] = new Pair<string, Color>( "y", Color.Blue ); defaultScanAnnotationSettings.LabelToAliasAndColorMap["b"] = new Pair<string, Color>( "b", Color.Red ); defaultScanAnnotationSettings.LabelToAliasAndColorMap["y-NH3"] = new Pair<string, Color>( "y^", Color.Green ); defaultScanAnnotationSettings.LabelToAliasAndColorMap["y-H2O"] = new Pair<string, Color>( "y*", Color.Cyan ); defaultScanAnnotationSettings.LabelToAliasAndColorMap["b-NH3"] = new Pair<string, Color>( "b^", Color.Orange ); defaultScanAnnotationSettings.LabelToAliasAndColorMap["b-H2O"] = new Pair<string, Color>( "b*", Color.Violet ); defaultChromatogramAnnotationSettings = new AnnotationSettings(); defaultChromatogramAnnotationSettings.ShowXValues = Properties.Settings.Default.ShowChromatogramTimeLabels; defaultChromatogramAnnotationSettings.ShowYValues = Properties.Settings.Default.ShowChromatogramIntensityLabels; defaultChromatogramAnnotationSettings.ShowMatchedAnnotations = Properties.Settings.Default.ShowChromatogramMatchedAnnotations; defaultChromatogramAnnotationSettings.ShowUnmatchedAnnotations = Properties.Settings.Default.ShowChromatogramUnmatchedAnnotations; defaultChromatogramAnnotationSettings.MatchTolerance = Properties.Settings.Default.TimeMatchTolerance; defaultChromatogramAnnotationSettings.MatchToleranceOverride = Properties.Settings.Default.ChromatogramMatchToleranceOverride; defaultChromatogramAnnotationSettings.MatchToleranceUnit = (MatchToleranceUnits) Properties.Settings.Default.TimeMatchToleranceUnit; }
/// <summary> /// Creates the HTML to render a listing of notes associated to a given target entity record /// </summary> protected virtual IHtmlString BuildNotesControl(Guid entityId) { var portalContext = PortalCrmConfigurationManager.CreatePortalContext(Metadata.FormView.ContextName); var target = new EntityReference(Metadata.TargetEntityName, entityId); var html = new HtmlHelper(new ViewContext(), new ViewPage()); var settings = IsTimeline ? Metadata.TimelineSettings : Metadata.NotesSettings; var createEnabled = false; var editEnabled = false; var deleteEnabled = false; string addNoteButtonLabel = null; string loadMoreButtonLabel = null; string toolbarButtonLabel = null; string editNoteButtonLabel = null; string deleteNoteButtonLabel = null; string listTitle = null; List <Order> listOrders = null; string notePrivacyLabel = null; string accessDeniedMessage = null; string errorMessage = null; string loadingMessage = null; string emptyMessage = null; string createModalCssClass = null; string createModalTitle = null; string createModalTitleCssClass = null; var createModalSize = BootstrapExtensions.BootstrapModalSize.Default; string createModalPrimaryButtonText = null; string createModalDismissButtonSrText = null; string createModalCloseButtonText = null; string createModalPrimaryButtonCssClass = null; string createModalCloseButtonCssClass = null; string createModalNoteFieldLabel = null; var createModalDisplayPrivacyOptionField = false; string createModalPrivacyOptionFieldLabel = null; var createModalPrivacyOptionFieldDefaultValue = false; var createModalDisplayAttachFile = true; string createModalAttachFileLabel = null; string createModalAttachFileAccept = null; int? createModalNoteFieldColumns = 20; int? createModalNoteFieldRows = 9; string createModalLeftColumnCssClass = null; string createModalRightColumnCssClass = null; string editModalCssClass = null; string editModalTitle = null; string editModalTitleCssClass = null; var editModalSize = BootstrapExtensions.BootstrapModalSize.Default; string editModalPrimaryButtonText = null; string editModalDismissButtonSrText = null; string editModalCloseButtonText = null; string editModalPrimaryButtonCssClass = null; string editModalCloseButtonCssClass = null; string editModalNoteFieldLabel = null; var editModalDisplayPrivacyOptionField = false; string editModalPrivacyOptionFieldLabel = null; var editModalPrivacyOptionFieldDefaultValue = false; var editModalDisplayAttachFile = true; string editModalAttachFileLabel = null; string editModalAttachFileAccept = null; int? editModalNoteFieldColumns = 20; int? editModalNoteFieldRows = 9; string editModalLeftColumnCssClass = null; string editModalRightColumnCssClass = null; var deleteModalSize = BootstrapExtensions.BootstrapModalSize.Default; string deleteModalCssClass = null; string deleteModalTitle = null; string deleteModalTitleCssClass = null; string deleteModalConfirmation = null; string deleteModalPrimaryButtonText = null; string deleteModalDismissButtonSrText = null; string deleteModalCloseButtonText = null; string deleteModalPrimaryButtonCssClass = null; string deleteModalCloseButtonCssClass = null; AnnotationSettings attachmentSettings = null; if (settings != null) { accessDeniedMessage = Localization.GetLocalizedString(settings.AccessDeniedMessage, Metadata.LanguageCode); errorMessage = Localization.GetLocalizedString(settings.ErrorMessage, Metadata.LanguageCode); loadingMessage = Localization.GetLocalizedString(settings.LoadingMessage, Metadata.LanguageCode); emptyMessage = Localization.GetLocalizedString(settings.EmptyMessage, Metadata.LanguageCode); notePrivacyLabel = Localization.GetLocalizedString(settings.NotePrivacyLabel, Metadata.LanguageCode); addNoteButtonLabel = Localization.GetLocalizedString(settings.AddNoteButtonLabel, Metadata.LanguageCode); loadMoreButtonLabel = IsTimeline ? Localization.GetLocalizedString(((JsonConfiguration.TimelineMetadata)settings).LoadMoreButtonLabel, Metadata.LanguageCode) : null; editNoteButtonLabel = Localization.GetLocalizedString(settings.EditNoteButtonLabel, Metadata.LanguageCode); deleteNoteButtonLabel = Localization.GetLocalizedString(settings.DeleteNoteButtonLabel, Metadata.LanguageCode); listTitle = Localization.GetLocalizedString(settings.ListTitle, Metadata.LanguageCode); if (settings.ListOrders != null && settings.ListOrders.Any()) { listOrders = settings.ListOrders; } var createModal = settings.CreateDialog; createModalCssClass = createModal == null ? null : createModal.CssClass; if (createModal != null && createModal.Size != null) { createModalSize = createModal.Size.GetValueOrDefault(BootstrapExtensions.BootstrapModalSize.Default); } createModalTitle = createModal == null ? null : Localization.GetLocalizedString(createModal.Title, Metadata.LanguageCode); createModalTitleCssClass = createModal == null ? null : createModal.TitleCssClass; createModalPrimaryButtonText = createModal == null ? null : Localization.GetLocalizedString(createModal.PrimaryButtonText, Metadata.LanguageCode); createModalDismissButtonSrText = createModal == null ? null : Localization.GetLocalizedString(createModal.DismissButtonSrText, Metadata.LanguageCode); createModalCloseButtonText = createModal == null ? null : Localization.GetLocalizedString(createModal.CloseButtonText, Metadata.LanguageCode); createModalPrimaryButtonCssClass = createModal == null ? null : createModal.PrimaryButtonCssClass; createModalCloseButtonCssClass = createModal == null ? null : createModal.CloseButtonCssClass; createModalNoteFieldLabel = createModal == null ? null : Localization.GetLocalizedString(createModal.NoteFieldLabel, Metadata.LanguageCode); createModalDisplayPrivacyOptionField = createModal != null && createModal.DisplayPrivacyOptionField.GetValueOrDefault(false); createModalPrivacyOptionFieldLabel = createModal == null ? null : Localization.GetLocalizedString(createModal.PrivacyOptionFieldLabel, Metadata.LanguageCode); createModalPrivacyOptionFieldDefaultValue = createModal != null && createModal.PrivacyOptionFieldDefaultValue.GetValueOrDefault(false); createModalDisplayAttachFile = createModal == null || createModal.DisplayAttachFile.GetValueOrDefault(true); createModalAttachFileLabel = createModal == null ? null : Localization.GetLocalizedString(createModal.AttachFileLabel, Metadata.LanguageCode); createModalAttachFileAccept = createModal == null ? null : Localization.GetLocalizedString(createModal.AttachFileAccept, Metadata.LanguageCode); createModalNoteFieldColumns = createModal == null ? 20 : createModal.NoteFieldColumns.GetValueOrDefault(20); createModalNoteFieldRows = createModal == null ? 9 : createModal.NoteFieldRows.GetValueOrDefault(9); createModalLeftColumnCssClass = createModal == null ? null : createModal.LeftColumnCSSClass; createModalRightColumnCssClass = createModal == null ? null : createModal.RightColumnCSSClass; var editModal = settings.EditDialog; editModalCssClass = editModal == null ? null : editModal.CssClass; if (editModal != null && editModal.Size != null) { editModalSize = editModal.Size.GetValueOrDefault(BootstrapExtensions.BootstrapModalSize.Default); } editModalTitle = editModal == null ? null : Localization.GetLocalizedString(editModal.Title, Metadata.LanguageCode); editModalTitleCssClass = editModal == null ? null : editModal.TitleCssClass; editModalPrimaryButtonText = editModal == null ? null : Localization.GetLocalizedString(editModal.PrimaryButtonText, Metadata.LanguageCode); editModalDismissButtonSrText = editModal == null ? null : Localization.GetLocalizedString(editModal.DismissButtonSrText, Metadata.LanguageCode); editModalCloseButtonText = editModal == null ? null : Localization.GetLocalizedString(editModal.CloseButtonText, Metadata.LanguageCode); editModalPrimaryButtonCssClass = editModal == null ? null : editModal.PrimaryButtonCssClass; editModalCloseButtonCssClass = editModal == null ? null : editModal.CloseButtonCssClass; editModalNoteFieldLabel = editModal == null ? null : Localization.GetLocalizedString(editModal.NoteFieldLabel, Metadata.LanguageCode); editModalDisplayPrivacyOptionField = editModal != null && editModal.DisplayPrivacyOptionField.GetValueOrDefault(false); editModalPrivacyOptionFieldLabel = editModal == null ? null : Localization.GetLocalizedString(editModal.PrivacyOptionFieldLabel, Metadata.LanguageCode); editModalPrivacyOptionFieldDefaultValue = editModal != null && editModal.PrivacyOptionFieldDefaultValue.GetValueOrDefault(false); editModalDisplayAttachFile = editModal == null || editModal.DisplayAttachFile.GetValueOrDefault(true); editModalAttachFileLabel = editModal == null ? null : Localization.GetLocalizedString(editModal.AttachFileLabel, Metadata.LanguageCode); editModalAttachFileAccept = editModal == null ? null : Localization.GetLocalizedString(editModal.AttachFileAccept, Metadata.LanguageCode); editModalNoteFieldColumns = editModal == null ? 20 : editModal.NoteFieldColumns.GetValueOrDefault(20); editModalNoteFieldRows = editModal == null ? 9 : editModal.NoteFieldRows.GetValueOrDefault(9); editModalLeftColumnCssClass = editModal == null ? null : editModal.LeftColumnCSSClass; editModalRightColumnCssClass = editModal == null ? null : editModal.RightColumnCSSClass; var deleteModal = settings.DeleteDialog; if (deleteModal != null && deleteModal.Size != null) { deleteModalSize = deleteModal.Size.GetValueOrDefault(BootstrapExtensions.BootstrapModalSize.Default); } deleteModalCssClass = deleteModal == null ? null : deleteModal.CssClass; deleteModalTitle = deleteModal == null ? null : Localization.GetLocalizedString(deleteModal.Title, Metadata.LanguageCode); deleteModalTitleCssClass = deleteModal == null ? null : deleteModal.TitleCssClass; deleteModalConfirmation = deleteModal == null ? null : Localization.GetLocalizedString(deleteModal.Confirmation, Metadata.LanguageCode); deleteModalPrimaryButtonText = deleteModal == null ? null : Localization.GetLocalizedString(deleteModal.PrimaryButtonText, Metadata.LanguageCode); deleteModalDismissButtonSrText = deleteModal == null ? null : Localization.GetLocalizedString(deleteModal.DismissButtonSrText, Metadata.LanguageCode); deleteModalCloseButtonText = deleteModal == null ? null : Localization.GetLocalizedString(deleteModal.CloseButtonText, Metadata.LanguageCode); deleteModalPrimaryButtonCssClass = deleteModal == null ? null : deleteModal.PrimaryButtonCssClass; deleteModalCloseButtonCssClass = deleteModal == null ? null : deleteModal.CloseButtonCssClass; createEnabled = settings.CreateEnabled.GetValueOrDefault(false); editEnabled = settings.EditEnabled.GetValueOrDefault(false); deleteEnabled = settings.DeleteEnabled.GetValueOrDefault(false); attachmentSettings = new AnnotationSettings(portalContext.ServiceContext, true, settings.AttachFileLocation.GetValueOrDefault(StorageLocation.CrmDocument), settings.AttachFileAccept, settings.AttachFileRestrictAccept.GetValueOrDefault(false), Localization.GetLocalizedString(settings.AttachFileRestrictErrorMessage, Metadata.LanguageCode), settings.AttachFileMaximumSize.HasValue ? Convert.ToUInt64(settings.AttachFileMaximumSize.Value) << 10 : (ulong?)null, Localization.GetLocalizedString(settings.AttachFileMaximumSizeErrorMessage, Metadata.LanguageCode), IsTimeline ? ((JsonConfiguration.TimelineMetadata)settings).AttachFileAcceptExtensions : string.Empty, isPortalComment: IsTimeline); } var canAddNotes = TryAssertAddNote(entityId); if (createEnabled) { createEnabled = canAddNotes; } if (deleteEnabled) { deleteEnabled = Metadata.FormView.EnableEntityPermissions; } if (editEnabled) { editEnabled = Metadata.FormView.EnableEntityPermissions; } string getServiceUrl = null; string addServiceUrl = null; string updateServiceUrl = null; string deleteServiceUrl = null; string getAttachmentsServiceUrl = null; bool isTimeline; bool useScrollingPagination; string entityLogicalName = null; string textAttributeName = null; if (IsTimeline) { getServiceUrl = BuildControllerActionUrl("GetActivities", "EntityActivity", new { area = "Portal", __portalScopeId__ = portalContext.Website.Id }); addServiceUrl = BuildControllerActionUrl("AddPortalComment", "EntityActivity", new { area = "Portal", __portalScopeId__ = portalContext.Website.Id }); updateServiceUrl = null; deleteServiceUrl = null; getAttachmentsServiceUrl = BuildControllerActionUrl("GetAttachments", "EntityActivity", new { area = "Portal", __portalScopeId__ = portalContext.Website.Id }); useScrollingPagination = true; isTimeline = true; entityLogicalName = "adx_portalcomment"; textAttributeName = "description"; } else { getServiceUrl = BuildControllerActionUrl("GetNotes", "EntityNotes", new { area = "Portal", __portalScopeId__ = portalContext.Website.Id }); addServiceUrl = BuildControllerActionUrl("AddNote", "EntityNotes", new { area = "Portal", __portalScopeId__ = portalContext.Website.Id }); updateServiceUrl = BuildControllerActionUrl("UpdateNote", "EntityNotes", new { area = "Portal", __portalScopeId__ = portalContext.Website.Id }); deleteServiceUrl = BuildControllerActionUrl("DeleteNote", "EntityNotes", new { area = "Portal", __portalScopeId__ = portalContext.Website.Id }); getAttachmentsServiceUrl = null; useScrollingPagination = false; isTimeline = false; entityLogicalName = "annotation"; textAttributeName = "notetext"; } var entityMetadata = portalContext.ServiceContext.GetEntityMetadata(entityLogicalName, EntityFilters.All); var textAttribute = (MemoAttributeMetadata)entityMetadata.Attributes.Where((att) => { return(att.LogicalName == textAttributeName); }).First(); var notesHtml = html.Notes(target, getServiceUrl, createEnabled, editEnabled, deleteEnabled, addServiceUrl, updateServiceUrl, deleteServiceUrl, getAttachmentsServiceUrl, Metadata.NotesPageSize ?? 0, listOrders, listTitle, loadingMessage, errorMessage, accessDeniedMessage, emptyMessage, addNoteButtonLabel, loadMoreButtonLabel, toolbarButtonLabel, editNoteButtonLabel, deleteNoteButtonLabel, notePrivacyLabel, createModalSize, createModalCssClass, createModalTitle, createModalDismissButtonSrText, createModalPrimaryButtonText, createModalCloseButtonText, createModalTitleCssClass, createModalPrimaryButtonCssClass, createModalCloseButtonCssClass, createModalNoteFieldLabel, createModalDisplayAttachFile, createModalAttachFileLabel, createModalAttachFileAccept, createModalDisplayPrivacyOptionField, createModalPrivacyOptionFieldLabel, createModalPrivacyOptionFieldDefaultValue, createModalNoteFieldColumns, createModalNoteFieldRows, createModalLeftColumnCssClass, createModalRightColumnCssClass, null, editModalSize, editModalCssClass, editModalTitle, editModalDismissButtonSrText, editModalPrimaryButtonText, editModalCloseButtonText, editModalTitleCssClass, editModalPrimaryButtonCssClass, editModalCloseButtonCssClass, editModalNoteFieldLabel, editModalDisplayAttachFile, editModalAttachFileLabel, editModalAttachFileAccept, editModalDisplayPrivacyOptionField, editModalPrivacyOptionFieldLabel, editModalPrivacyOptionFieldDefaultValue, editModalNoteFieldColumns, editModalNoteFieldRows, editModalLeftColumnCssClass, editModalRightColumnCssClass, null, deleteModalSize, deleteModalCssClass, deleteModalTitle, deleteModalConfirmation, deleteModalDismissButtonSrText, deleteModalPrimaryButtonText, deleteModalCloseButtonText, deleteModalTitleCssClass, deleteModalPrimaryButtonCssClass, deleteModalCloseButtonCssClass, isTimeline: isTimeline, useScrollingPagination: useScrollingPagination, attachmentSettings: attachmentSettings, textMaxLength: textAttribute.MaxLength); return(notesHtml); }