Exemplo n.º 1
0
        private SCItem CreateItem(SCItem parentItem, string itemName)
        {
            var itemId = Guid.NewGuid();

            // Check on Guid existence (super super super rare event that the Guid already exists)
            while (_destMasterRepository.ItemExists(itemId))
            {
                itemId = Guid.NewGuid();
            }

            if (_appSettings.enableOnlyAnalysisByDefault && parentItem == null)
            {
                parentItem = CreateDummyItem();
            }

            return(new SCItem()
            {
                ID = itemId,
                Name = itemName,
                MasterID = Guid.Empty,
                ParentID = parentItem.ID,
                Created = DateTime.Now,
                Updated = DateTime.Now,
                TemplateID = _itemMetadataTemplate.destTemplateId,
                Fields = CreateFields(itemId, parentItem)
            });
        }
        public MetadataProvider(AppSettings appSettings, IDestMasterRepository destMasterRepository)
        {
            _appSettings          = appSettings;
            _destMasterRepository = destMasterRepository;

            _metadataFiles = GetMetadataFileList();

            foreach (string filePath in _metadataFiles)
            {
                var metadataTemplate = GetItemMetadataByFilePath(filePath);
                if (destMasterRepository.ItemExists(metadataTemplate.destTemplateId))
                {
                    _metadataTemplates.Add(metadataTemplate);
                }
            }
        }
Exemplo n.º 3
0
        private void ConvertSubmitMode(SCItem form, SCItem buttonItem)
        {
            buttonItem = CheckItemNotNullForAnalysis(buttonItem);

            var submitMode = form.Fields.FirstOrDefault(field => field.FieldId == new Guid(FormConstants.FormSubmitModeFieldId));

            if (submitMode != null && submitMode.Value == FormConstants.FormSubmitModeField_RedirectModeValue)
            {
                var successPage = form.Fields.FirstOrDefault(field => field.FieldId == new Guid(FormConstants.FormSuccessPageFieldId));
                if (successPage != null && !string.IsNullOrEmpty(successPage.Value))
                {
                    var successPageLink = XmlHelper.GetXmlElementNode(successPage.Value, "link");
                    if (successPageLink != null)
                    {
                        var successPageId = successPageLink.Attributes["id"]?.Value;
                        if (successPageId != null)
                        {
                            if (!_appSettings.enableReferencedItemCheck || _destMasterRepository.ItemExists(new Guid(successPageId)))
                            {
                                // Redirect To Page Action
                                var redirectToPageValues = new Dictionary <Guid, string>();
                                redirectToPageValues.Add(new Guid(SubmitActionConstants.SubmitActionFieldId),
                                                         SubmitActionConstants.SubmitActionField_RedirectToPageActionValue);
                                redirectToPageValues.Add(new Guid(SubmitActionConstants.ParametersFieldId),
                                                         string.Format("{{\"referenceId\":\"{0}\"}}", successPageId));
                                redirectToPageValues.Add(new Guid(BaseTemplateConstants.SortOrderFieldId), "5000");
                                ConvertFieldsToSubmitActionItem("Redirect to Page", redirectToPageValues, buttonItem);
                            }
                        }
                    }
                }
            }
            else if (submitMode == null || submitMode.Value == FormConstants.FormSubmitModeField_ShowMessageValue)             // Show Message Mode
            {
                // Create success page
                var    successPageItemName = "Success Page";
                var    pageMetadata        = _metadataProvider.GetItemMetadataByTemplateName("Page");
                SCItem successPageItem     = _destMasterRepository.GetSitecoreChildrenItems(pageMetadata.destTemplateId, form.ID).FirstOrDefault(item => string.Equals(item.Name, successPageItemName, StringComparison.InvariantCultureIgnoreCase));
                Guid   successPageId;
                if (successPageItem == null)
                {
                    successPageId   = WriteNewItem(pageMetadata.destTemplateId, form, successPageItemName);
                    successPageItem = _destMasterRepository.GetSitecoreItem(successPageId);
                }
                else
                {
                    successPageId = successPageItem.ID;
                }

                // Create Text item with message stored in Success Message field
                var textMetadata       = _metadataProvider.GetItemMetadataByTemplateName("Text");
                var successMessageItem = _destMasterRepository.GetSitecoreChildrenItems(textMetadata.destTemplateId, successPageId)
                                         .FirstOrDefault(item => string.Equals(item.Name, "Success Message", StringComparison.InvariantCultureIgnoreCase));
                if (successMessageItem != null)
                {
                    _destMasterRepository.DeleteSitecoreItem(successMessageItem);
                }
                ConvertTextField(form, successPageId);

                // Configure Navigation field in Submit button to go to next page
                if (buttonItem.Fields.Any())
                {
                    buttonItem.Fields.First(field => field.FieldId == new Guid(ButtonConstants.ButtonNavigationFieldId)).Value = "1";
                }
                UpdateItem(buttonItem);
            }
        }