public override void run_the_task()
        {
            infrastructure.logging.Log.bound_to(this).log_a_warning_event_containing(
                "Looking for template files starting in \"{0}\" and building to directory \"{1}\".",
                templates_directory,
                destination_directory);

            TemplateBuilder builder = new TemplateBuilder(Container.get_an_instance_of<IFileSystemAccess>());

            try {
                builder.build_template_files(settings_files_directory, templates_directory, destination_directory, template_extension, keep_extension,
                                             use_environment_subdirectory);
            }
            catch (Exception exception) {
                infrastructure.logging.Log.bound_to(this).log_an_error_event_containing(
                    "{0} encountered an error:{1}{2}",
                    "TemplateBuilder",
                    Environment.NewLine,
                    exception);
                throw;
            }
        }
Esempio n. 2
0
    public void Can_Clear_Tag_Relations()
    {
        var provider = ScopeProvider;

        using (ScopeProvider.CreateScope())
        {
            // create data to relate to
            // We have to create and save a template, otherwise we get an FK violation on contentType.
            var template = TemplateBuilder.CreateTextPageTemplate();
            FileService.SaveTemplate(template);

            var contentType =
                ContentTypeBuilder.CreateSimpleContentType("test", "Test", defaultTemplateId: template.Id);
            ContentTypeRepository.Save(contentType);

            var content = ContentBuilder.CreateSimpleContent(contentType);
            DocumentRepository.Save(content);

            var   repository = CreateRepository(provider);
            Tag[] tags       = { new Tag {
                                     Text = "tag1", Group = "test"
                                 }, new Tag    {
                                     Text = "tag2", Group = "test"
                                 } };
            repository.Assign(
                content.Id,
                contentType.PropertyTypes.First().Id,
                tags,
                false);

            repository.Assign(
                content.Id,
                contentType.PropertyTypes.First().Id,
                Enumerable.Empty <ITag>());

            var result = repository.GetTagsForEntity(content.Id);
            Assert.AreEqual(0, result.Count());
        }
    }
    public void Does_Not_Create_Tag_Data_For_Non_Published_Version()
    {
        var template = TemplateBuilder.CreateTextPageTemplate();

        FileService.SaveTemplate(template);

        // create content type with a tag property
        var contentType = ContentTypeBuilder.CreateSimpleContentType("umbMandatory", "Mandatory Doc Type",
                                                                     mandatoryProperties: true, defaultTemplateId: template.Id);

        CreateAndAddTagsPropertyType(contentType);
        ContentTypeService.Save(contentType);

        // create a content with tags and publish
        var content = ContentBuilder.CreateSimpleContent(contentType, "Tagged content");

        content.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags",
                           new[] { "hello", "world", "some", "tags" });
        ContentService.SaveAndPublish(content);

        // edit tags and save
        content.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags", new[] { "another", "world" },
                           true);
        ContentService.Save(content);

        // the (edit) property does contain all tags
        Assert.AreEqual(5, content.Properties["tags"].GetValue().ToString().Split(',').Distinct().Count());

        // but the database still contains the initial two tags
        var propertyTypeId = contentType.PropertyTypes.Single(x => x.Alias == "tags").Id;

        using (var scope = ScopeProvider.CreateScope())
        {
            Assert.AreEqual(4, ScopeAccessor.AmbientScope.Database.ExecuteScalar <int>(
                                "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId",
                                new { nodeId = content.Id, propTypeId = propertyTypeId }));
            scope.Complete();
        }
    }
    public void CreateTestData()
    {
        var fileService = GetRequiredService <IFileService>();
        var template    = TemplateBuilder.CreateTextPageTemplate();

        fileService.SaveTemplate(template); // else, FK violation on contentType!

        var contentService     = GetRequiredService <IContentService>();
        var contentTypeService = GetRequiredService <IContentTypeService>();

        // Create and Save ContentType "umbTextpage" -> (NodeDto.NodeIdSeed)
        var contentType =
            ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage", defaultTemplateId: template.Id);

        contentType.Key = Guid.NewGuid();
        contentTypeService.Save(contentType);

        // Create and Save Content "Homepage" based on "umbTextpage" -> (NodeDto.NodeIdSeed + 1)
        _textpage     = ContentBuilder.CreateSimpleContent(contentType);
        _textpage.Key = Guid.NewGuid();
        contentService.Save(_textpage);

        // Create and Save Content "Text Page 1" based on "umbTextpage" -> (NodeDto.NodeIdSeed + 2)
        _subpage     = ContentBuilder.CreateSimpleContent(contentType, "Text Page 1", _textpage.Id);
        _subpage.Key = Guid.NewGuid();
        contentService.Save(_subpage);

        // Create and Save Content "Text Page 1" based on "umbTextpage" -> (NodeDto.NodeIdSeed + 3)
        _otherpage     = ContentBuilder.CreateSimpleContent(contentType, "Text Page 2", _textpage.Id);
        _otherpage.Key = Guid.NewGuid();
        contentService.Save(_otherpage);

        // Create and Save Content "Text Page Deleted" based on "umbTextpage" -> (NodeDto.NodeIdSeed + 4)
        _trashed     = ContentBuilder.CreateSimpleContent(contentType, "Text Page Deleted", -20);
        _trashed.Key = Guid.NewGuid();
        ((Content)_trashed).Trashed = true;
        contentService.Save(_trashed);
    }
        public void TagsCanBeInvariant()
        {
            Template template = TemplateBuilder.CreateTextPageTemplate();

            FileService.SaveTemplate(template);

            ContentType contentType = ContentTypeBuilder.CreateSimpleContentType("umbMandatory", "Mandatory Doc Type", mandatoryProperties: true, defaultTemplateId: template.Id);

            CreateAndAddTagsPropertyType(contentType);
            ContentTypeService.Save(contentType);

            IContent content1 = ContentBuilder.CreateSimpleContent(contentType, "Tagged content 1", -1);

            content1.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags", new[] { "hello", "world", "another", "one" });
            ContentService.SaveAndPublish(content1);

            content1 = ContentService.GetById(content1.Id);

            string[] enTags = content1.Properties["tags"].GetTagsValue(PropertyEditorCollection, DataTypeService, Serializer).ToArray();
            Assert.AreEqual(4, enTags.Length);
            Assert.Contains("one", enTags);
            Assert.AreEqual(-1, enTags.IndexOf("plus"));

            IEnumerable <IGrouping <int?, ITag> > tagGroups = TagService.GetAllTags().GroupBy(x => x.LanguageId);

            foreach (ITag tag in TagService.GetAllTags())
            {
                Console.WriteLine($"{tag.Group}:{tag.Text} {tag.LanguageId}");
            }

            Assert.AreEqual(1, tagGroups.Count());
            IGrouping <int?, ITag> enTagGroup = tagGroups.FirstOrDefault(x => x.Key == null);

            Assert.IsNotNull(enTagGroup);
            Assert.AreEqual(4, enTagGroup.Count());
            Assert.IsTrue(enTagGroup.Any(x => x.Text == "one"));
            Assert.IsFalse(enTagGroup.Any(x => x.Text == "plus"));
        }
Esempio n. 6
0
        public void Add_TwoModels_DataCombined()
        {
            // Arrange

            _template = TemplateBuilder
                        .FromString("{Name} {EMail}")
                        .Build();

            var model = new TestModel {
                Name = "Test", EMail = "*****@*****.**"
            };
            var model2 = new TestModel {
                Name = "Foo", EMail = "*****@*****.**"
            };

            // Act

            _template.Model(model).Add();
            _template.Model(model2).Add();

            // Assert
            Assert.AreEqual("TestFoo [email protected]@test.com", _template.Get());
        }
    public virtual void CreateTestData()
    {
        // NOTE Maybe not the best way to create/save test data as we are using the services, which are being tested.
        var template = TemplateBuilder.CreateTextPageTemplate();

        FileService.SaveTemplate(template);

        // Create and Save ContentType "umbTextpage" -> 1051 (template), 1052 (content type)
        ContentType =
            ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage", defaultTemplateId: template.Id);
        ContentType.Key = new Guid("1D3A8E6E-2EA9-4CC1-B229-1AEE19821522");
        ContentTypeService.Save(ContentType);

        // Create and Save Content "Homepage" based on "umbTextpage" -> 1053
        Textpage     = ContentBuilder.CreateSimpleContent(ContentType);
        Textpage.Key = new Guid("B58B3AD4-62C2-4E27-B1BE-837BD7C533E0");
        ContentService.Save(Textpage, 0);

        // Create and Save Content "Text Page 1" based on "umbTextpage" -> 1054
        Subpage = ContentBuilder.CreateSimpleContent(ContentType, "Text Page 1", Textpage.Id);
        var contentSchedule = ContentScheduleCollection.CreateWithEntry(DateTime.Now.AddMinutes(-5), null);

        ContentService.Save(Subpage, 0, contentSchedule);

        // Create and Save Content "Text Page 1" based on "umbTextpage" -> 1055
        Subpage2 = ContentBuilder.CreateSimpleContent(ContentType, "Text Page 2", Textpage.Id);
        ContentService.Save(Subpage2, 0);


        Subpage3 = ContentBuilder.CreateSimpleContent(ContentType, "Text Page 3", Textpage.Id);
        ContentService.Save(Subpage3, 0);

        // Create and Save Content "Text Page Deleted" based on "umbTextpage" -> 1056
        Trashed         = ContentBuilder.CreateSimpleContent(ContentType, "Text Page Deleted", -20);
        Trashed.Trashed = true;
        ContentService.Save(Trashed, 0);
    }
Esempio n. 8
0
        public void AddParameters_ValidInputParameters_SetsExpectedTemplateParameters(
            ArmTemplateExpression expression,
            List <ArmTemplateParameter> inputParameters
            )
        {
            var actual = new TemplateBuilder()
                         .AddParameters(expression, inputParameters)
                         .Template["parameters"];

            Assert.IsType <JObject>(actual);
            foreach (var p in inputParameters)
            {
                if (p.Type == "object")
                {
                    Assert.Equal(p.Type, actual[p.Name]["type"].ToString());
                    foreach (var property in p.Value.GetType().GetProperties())
                    {
                        var actualValueString = actual[p.Name]["defaultValue"][property.Name].ToString();
                        Assert.Equal(property.GetValue(p.Value).ToString(), actualValueString);
                    }
                }
                else if (p.Type == "array")
                {
                    Assert.Equal(p.Type, actual[p.Name]["type"]);
                    var valueArray = (Array)p.Value;
                    foreach (var i in valueArray)
                    {
                        Assert.Contains($"{i.ToString()}", actual[p.Name]["defaultValue"].ToString());
                    }
                }
                else
                {
                    Assert.Equal(p.Type, actual[p.Name]["type"]);
                    Assert.Equal(p.Value.ToString(), actual[p.Name]["defaultValue"].ToString());
                }
            }
        }
    public void TagsCanBecomeInvariantByPropertyTypeAndBackToVariant()
    {
        var language = new LanguageBuilder()
                       .WithCultureInfo("fr-FR")
                       .Build();

        LocalizationService.Save(language); // en-US is already there

        var template = TemplateBuilder.CreateTextPageTemplate();

        FileService.SaveTemplate(template);

        var contentType = ContentTypeBuilder.CreateSimpleContentType("umbMandatory", "Mandatory Doc Type",
                                                                     mandatoryProperties: true, defaultTemplateId: template.Id);
        var propertyType = CreateAndAddTagsPropertyType(contentType, ContentVariation.Culture);

        ContentTypeService.Save(contentType);

        IContent content1 = ContentBuilder.CreateSimpleContent(contentType, "Tagged content 1");

        content1.SetCultureName("name-fr", "fr-FR");
        content1.SetCultureName("name-en", "en-US");
        content1.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags",
                            new[] { "hello", "world", "some", "tags", "plus" }, culture: "fr-FR");
        content1.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags",
                            new[] { "hello", "world", "another", "one" }, culture: "en-US");
        ContentService.SaveAndPublish(content1);

        propertyType.Variations = ContentVariation.Nothing;
        ContentTypeService.Save(contentType);

        // FIXME: This throws due to index violations
        propertyType.Variations = ContentVariation.Culture;
        ContentTypeService.Save(contentType);

        // TODO: Assert results
    }
    public void DeleteVersions_Always_DeletesSpecifiedVersions()
    {
        var template = TemplateBuilder.CreateTextPageTemplate();

        FileService.SaveTemplate(template);

        var contentType =
            ContentTypeBuilder.CreateSimpleContentType("umbTextpage", "Textpage", defaultTemplateId: template.Id);

        ContentTypeService.Save(contentType);

        var content = ContentBuilder.CreateSimpleContent(contentType);

        ContentService.SaveAndPublish(content);
        ContentService.SaveAndPublish(content);
        ContentService.SaveAndPublish(content);
        ContentService.SaveAndPublish(content);
        using (var scope = ScopeProvider.CreateScope())
        {
            var query = ScopeAccessor.AmbientScope.SqlContext.Sql();

            query.Select <ContentVersionDto>()
            .From <ContentVersionDto>();

            var sut = new DocumentVersionRepository(ScopeAccessor);
            sut.DeleteVersions(new[] { 1, 2, 3 });

            var after = ScopeAccessor.AmbientScope.Database.Fetch <ContentVersionDto>(query);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(2, after.Count);
                Assert.True(after.All(x => x.Id > 3));
            });
        }
    }
        public void TagsAreUpdatedWhenContentIsUnpublishedAndRePublished()
        {
            Template template = TemplateBuilder.CreateTextPageTemplate();

            FileService.SaveTemplate(template);

            ContentType contentType = ContentTypeBuilder.CreateSimpleContentType("umbMandatory", "Mandatory Doc Type", mandatoryProperties: true, defaultTemplateId: template.Id);

            CreateAndAddTagsPropertyType(contentType);
            ContentTypeService.Save(contentType);

            Content content1 = ContentBuilder.CreateSimpleContent(contentType, "Tagged content 1", -1);

            content1.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags", new[] { "hello", "world", "some", "tags", "bam" });
            ContentService.SaveAndPublish(content1);

            Content content2 = ContentBuilder.CreateSimpleContent(contentType, "Tagged content 2", -1);

            content2.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags", new[] { "hello", "world", "some", "tags" });
            ContentService.SaveAndPublish(content2);

            ContentService.Unpublish(content1);
            ContentService.Unpublish(content2);
        }
Esempio n. 12
0
        private void MenuTemplatesSave_Click(object sender, EventArgs e)
        {
            string itemname = txtName.Text;

            if (cmbType.SelectedIndex == 2)              // Lapis name
            {
                itemname = ((cmbLapi.SelectedItem as ImageComboItem).Tag as Lapi).Name;
            }
            else if (cmbType.SelectedIndex == 3)              // Lapisa name
            {
                itemname = ((ELapisa)cmbLapisa.SelectedIndex).ToString();
            }

            if (itemname == "")
            {
                MessageBox.Show("Dein Item muss einen Namen haben um das Template zu speichern!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            ITemplate tpl = BuildTemplate();

            TemplateBuilder.SaveTemplate(tpl, (EItemType)cmbType.SelectedIndex);
            LoadTemplates();             // refresh
        }
Esempio n. 13
0
 public AddDataLabelForm(LabelContainer lblContainer, LabelEditMode editMode, DataLabel newPriorLabel = null)
 {
     InitializeComponent();
     labelContainer            = lblContainer;
     editingMode               = editMode;
     editedLabel               = newPriorLabel;
     dataTypeBox.SelectedIndex = 0;
     if (editMode == LabelEditMode.Edit)
     {
         Text = "Edit Data Section";
         if (editedLabel != null)
         {
             nameBox.Text              = editedLabel.Name;
             offsetBox.Text            = editedLabel.Offset.ToString("X");
             lengthBox.Text            = editedLabel.Length.ToString("X");
             dataTypeBox.SelectedIndex = (int)editedLabel.DSectionType;
             if (!String.IsNullOrEmpty(editedLabel.Comment))
             {
                 commentBox.Text = editedLabel.Comment;
             }
             dataTemplateBox.Text = TemplateBuilder.TemplateToString(editedLabel.PrintTemplate);
         }
     }
 }
    public void Can_Append_Tag_Data_To_Published_Content()
    {
        var template = TemplateBuilder.CreateTextPageTemplate();

        FileService.SaveTemplate(template);

        // Arrange
        var contentType = ContentTypeBuilder.CreateSimpleContentType("umbMandatory", "Mandatory Doc Type",
                                                                     mandatoryProperties: true, defaultTemplateId: template.Id);

        CreateAndAddTagsPropertyType(contentType);
        ContentTypeService.Save(contentType);
        var content = ContentBuilder.CreateSimpleContent(contentType, "Tagged content");

        content.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags",
                           new[] { "hello", "world", "some", "tags" });
        ContentService.SaveAndPublish(content);

        // Act
        content.AssignTags(PropertyEditorCollection, DataTypeService, Serializer, "tags", new[] { "another", "world" },
                           true);
        ContentService.SaveAndPublish(content);

        // Assert
        Assert.AreEqual(5, content.Properties["tags"].GetValue().ToString().Split(',').Distinct().Count());
        var propertyTypeId = contentType.PropertyTypes.Single(x => x.Alias == "tags").Id;

        using (var scope = ScopeProvider.CreateScope())
        {
            Assert.AreEqual(5, ScopeAccessor.AmbientScope.Database.ExecuteScalar <int>(
                                "SELECT COUNT(*) FROM cmsTagRelationship WHERE nodeId=@nodeId AND propertyTypeId=@propTypeId",
                                new { nodeId = content.Id, propTypeId = propertyTypeId }));

            scope.Complete();
        }
    }
        public override Control GetPreviewControl(Control runtimeControl)
        {
            Control previewControl = base.GetPreviewControl(runtimeControl);

            if (previewControl != null)
            {
                IDesignerHost service = (IDesignerHost)runtimeControl.Site.GetService(typeof(IDesignerHost));
                FormView      view    = previewControl as FormView;
                if ((view == null) || (service == null))
                {
                    return(previewControl);
                }
                TemplateBuilder itemTemplate = view.ItemTemplate as TemplateBuilder;
                if (((itemTemplate != null) && (itemTemplate.Text.Length == 0)) || (view.ItemTemplate == null))
                {
                    string templateText = "####&nbsp;&nbsp;####<br/>####&nbsp;&nbsp;####<br/>####&nbsp;&nbsp;####<br/>####&nbsp;&nbsp;####";
                    view.ItemTemplate             = ControlParser.ParseTemplate(service, templateText);
                    view.RowStyle.HorizontalAlign = HorizontalAlign.Center;
                }
                view.HorizontalAlign = HorizontalAlign.Center;
                view.Width           = new Unit(80.0, UnitType.Percentage);
            }
            return(previewControl);
        }
        public override Control GetPreviewControl(Control runtimeControl)
        {
            Control previewControl = base.GetPreviewControl(runtimeControl);

            if (previewControl != null)
            {
                IDesignerHost service = (IDesignerHost)runtimeControl.Site.GetService(typeof(IDesignerHost));
                DataList      list    = previewControl as DataList;
                if ((list == null) || (service == null))
                {
                    return(previewControl);
                }
                TemplateBuilder itemTemplate = list.ItemTemplate as TemplateBuilder;
                if (((itemTemplate != null) && (itemTemplate.Text.Length == 0)) || (list.ItemTemplate == null))
                {
                    string templateText = "####";
                    list.ItemTemplate = ControlParser.ParseTemplate(service, templateText);
                    list.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
                }
                list.HorizontalAlign = HorizontalAlign.Center;
                list.Width           = new Unit(80.0, UnitType.Percentage);
            }
            return(previewControl);
        }
Esempio n. 17
0
        public TemplateBuilder Extract(byte[,] invertedImage, int dpi)
        {
            TemplateBuilder template = null;

            DpiAdjuster.Adjust(this, dpi, delegate()
            {
                byte[,] image = ImageInverter.GetInverted(invertedImage);  //图片反色,黑《--》白

                //var watch = Stopwatch.StartNew();
                //watch.Start();
                BlockMap blocks = new BlockMap(new Size(image.GetLength(1), image.GetLength(0)), BlockSize); //将图片数组转换为blockmap,对图片进行分块,方便进行并行计算
                Logger.Log("BlockMap", blocks);                                                              //可能是用于调试时的log输出
                //watch.Start();
                short[, ,] histogram = Histogram.Analyze(blocks, image);
                //watch.Stop();
                //Console.WriteLine("---------------------------histogram实例化时间:{0}",watch.ElapsedMilliseconds);
                //watch.Start();
                short[, ,] smoothHistogram = Histogram.SmoothAroundCorners(blocks, histogram);
                BinaryMap mask             = Mask.ComputeMask(blocks, histogram);
                float[,] equalized         = Equalizer.Equalize(blocks, image, smoothHistogram, mask);
                //watch.Stop();
                //Console.WriteLine("----------------------------equalized实例化时间:{0}",watch.ElapsedMilliseconds);
                byte[,] orientation = Orientation.Detect(equalized, mask, blocks);

                equalizedMap        = GdiIO.GetBitmap(ShowImage.floatToByte(equalized));
                float[,] smoothed   = RidgeSmoother.Smooth(equalized, orientation, mask, blocks);
                float[,] orthogonal = OrthogonalSmoother.Smooth(smoothed, orientation, mask, blocks);

                BinaryMap binary = Binarizer.Binarize(smoothed, orthogonal, mask, blocks);
                binary.AndNot(BinarySmoother.Filter(binary.GetInverted()));
                binary.Or(BinarySmoother.Filter(binary));
                Logger.Log("BinarySmoothingResult", binary);
                CrossRemover.Remove(binary);

                BinaryMap pixelMask = mask.FillBlocks(blocks);
                BinaryMap innerMask = InnerMask.Compute(pixelMask);

                BinaryMap inverted = binary.GetInverted();
                inverted.And(pixelMask);

                SkeletonBuilder ridges  = null;
                SkeletonBuilder valleys = null;
                Parallel.Invoke(
                    () => { ridges = ProcessSkeleton("Ridges", binary); },
                    () => { valleys = ProcessSkeleton("Valleys", inverted); });

                template                = new TemplateBuilder();
                template.OriginalDpi    = dpi;
                template.OriginalWidth  = invertedImage.GetLength(1);
                template.OriginalHeight = invertedImage.GetLength(0);

                MinutiaCollector.Collect(ridges, TemplateBuilder.MinutiaType.Ending, template);
                MinutiaCollector.Collect(valleys, TemplateBuilder.MinutiaType.Bifurcation, template);
                MinutiaMask.Filter(template, innerMask);
                StandardDpiScaling.Scale(template);
                MinutiaCloudRemover.Filter(template);
                UniqueMinutiaSorter.Filter(template);
                MinutiaSorter.Shuffle(template);
                Logger.Log("FinalTemplate", template);
                //watch.Stop();
                //Console.WriteLine("---------------------------Template实例化时间:{0}",watch.ElapsedMilliseconds);
            });
            return(template);
        }
        public static string ObjectTemplate(IHtmlHelper htmlHelper)
        {
            var viewData = htmlHelper.ViewData;
            var templateInfo = viewData.TemplateInfo;
            var modelExplorer = viewData.ModelExplorer;
            var builder = new StringBuilder();

            if (modelExplorer.Model == null)
            {
                return modelExplorer.Metadata.NullDisplayText;
            }

            if (templateInfo.TemplateDepth > 1)
            {
                var text = modelExplorer.GetSimpleDisplayText();
                if (modelExplorer.Metadata.HtmlEncode)
                {
                    text = htmlHelper.Encode(text);
                }

                return text;
            }

            var serviceProvider = htmlHelper.ViewContext.HttpContext.RequestServices;
            var viewEngine = serviceProvider.GetRequiredService<ICompositeViewEngine>();

            foreach (var propertyExplorer in modelExplorer.Properties)
            {
                var propertyMetadata = propertyExplorer.Metadata;
                if (!ShouldShow(propertyExplorer, templateInfo))
                {
                    continue;
                }

                var divTag = new TagBuilder("div", htmlHelper.HtmlEncoder);

                if (!propertyMetadata.HideSurroundingHtml)
                {
                    var label = propertyMetadata.GetDisplayName();
                    if (!string.IsNullOrEmpty(label))
                    {
                        divTag.SetInnerText(label);
                        divTag.AddCssClass("display-label");
                        builder.AppendLine(divTag.ToString(TagRenderMode.Normal));

                        // Reset divTag for reuse.
                        divTag.Attributes.Clear();
                    }

                    divTag.AddCssClass("display-field");
                    builder.Append(divTag.ToString(TagRenderMode.StartTag));
                }

                var templateBuilder = new TemplateBuilder(
                    viewEngine,
                    htmlHelper.ViewContext,
                    htmlHelper.ViewData,
                    propertyExplorer,
                    htmlFieldName: propertyMetadata.PropertyName,
                    templateName: null,
                    readOnly: true,
                    additionalViewData: null);

                builder.Append(templateBuilder.Build());

                if (!propertyMetadata.HideSurroundingHtml)
                {
                    builder.AppendLine(divTag.ToString(TagRenderMode.EndTag));
                }
            }

            return builder.ToString();
        }
Esempio n. 19
0
        public static IHtmlContent CollectionTemplate(IHtmlHelper htmlHelper)
        {
            var model = htmlHelper.ViewData.Model;

            if (model == null)
            {
                return(HtmlString.Empty);
            }

            var collection = model as IEnumerable;

            if (collection == null)
            {
                // Only way we could reach here is if user passed templateName: "Collection" to a Display() overload.
                throw new InvalidOperationException(Resources.FormatTemplates_TypeMustImplementIEnumerable(
                                                        "Collection", model.GetType().FullName, typeof(IEnumerable).FullName));
            }

            var elementMetadata = htmlHelper.ViewData.ModelMetadata.ElementMetadata;

            Debug.Assert(elementMetadata != null);
            var typeInCollectionIsNullableValueType = elementMetadata.IsNullableValueType;

            var serviceProvider  = htmlHelper.ViewContext.HttpContext.RequestServices;
            var metadataProvider = serviceProvider.GetRequiredService <IModelMetadataProvider>();

            // Use typeof(string) instead of typeof(object) for IEnumerable collections. Neither type is Nullable<T>.
            if (elementMetadata.ModelType == typeof(object))
            {
                elementMetadata = metadataProvider.GetMetadataForType(typeof(string));
            }

            var oldPrefix = htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix;

            try
            {
                htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix = string.Empty;

                var fieldNameBase = oldPrefix;
                var result        = new BufferedHtmlContent();
                var viewEngine    = serviceProvider.GetRequiredService <ICompositeViewEngine>();

                var index = 0;
                foreach (var item in collection)
                {
                    var itemMetadata = elementMetadata;
                    if (item != null && !typeInCollectionIsNullableValueType)
                    {
                        itemMetadata = metadataProvider.GetMetadataForType(item.GetType());
                    }

                    var modelExplorer = new ModelExplorer(
                        metadataProvider,
                        container: htmlHelper.ViewData.ModelExplorer,
                        metadata: itemMetadata,
                        model: item);
                    var fieldName = string.Format(CultureInfo.InvariantCulture, "{0}[{1}]", fieldNameBase, index++);

                    var templateBuilder = new TemplateBuilder(
                        viewEngine,
                        htmlHelper.ViewContext,
                        htmlHelper.ViewData,
                        modelExplorer,
                        htmlFieldName: fieldName,
                        templateName: null,
                        readOnly: true,
                        additionalViewData: null);
                    result.Append(templateBuilder.Build());
                }

                return(result);
            }
            finally
            {
                htmlHelper.ViewData.TemplateInfo.HtmlFieldPrefix = oldPrefix;
            }
        }
Esempio n. 20
0
        public static IHtmlContent ObjectTemplate(IHtmlHelper htmlHelper)
        {
            var viewData      = htmlHelper.ViewData;
            var templateInfo  = viewData.TemplateInfo;
            var modelExplorer = viewData.ModelExplorer;

            if (modelExplorer.Model == null)
            {
                return(new HtmlString(modelExplorer.Metadata.NullDisplayText));
            }

            if (templateInfo.TemplateDepth > 1)
            {
                var text = modelExplorer.GetSimpleDisplayText();
                if (modelExplorer.Metadata.HtmlEncode)
                {
                    text = htmlHelper.Encode(text);
                }

                return(new HtmlString(text));
            }

            var serviceProvider = htmlHelper.ViewContext.HttpContext.RequestServices;
            var viewEngine      = serviceProvider.GetRequiredService <ICompositeViewEngine>();

            var content = new BufferedHtmlContent();

            foreach (var propertyExplorer in modelExplorer.Properties)
            {
                var propertyMetadata = propertyExplorer.Metadata;
                if (!ShouldShow(propertyExplorer, templateInfo))
                {
                    continue;
                }

                var templateBuilder = new TemplateBuilder(
                    viewEngine,
                    htmlHelper.ViewContext,
                    htmlHelper.ViewData,
                    propertyExplorer,
                    htmlFieldName: propertyMetadata.PropertyName,
                    templateName: null,
                    readOnly: true,
                    additionalViewData: null);

                var templateBuilderResult = templateBuilder.Build();
                if (!propertyMetadata.HideSurroundingHtml)
                {
                    var label = propertyMetadata.GetDisplayName();
                    if (!string.IsNullOrEmpty(label))
                    {
                        var labelTag = new TagBuilder("div");
                        labelTag.InnerHtml.SetContent(label);
                        labelTag.AddCssClass("display-label");
                        content.AppendLine(labelTag);
                    }

                    var valueDivTag = new TagBuilder("div");
                    valueDivTag.AddCssClass("display-field");
                    valueDivTag.InnerHtml.SetContent(templateBuilderResult);
                    content.AppendLine(valueDivTag);
                }
                else
                {
                    content.Append(templateBuilderResult);
                }
            }

            return(content);
        }
Esempio n. 21
0
        public void Retrieving_All_Content_In_Site()
        {
            // NOTE: Doing this the old 1 by 1 way and based on the results of the ContentServicePerformanceTest.Retrieving_All_Content_In_Site
            // the old way takes 143795ms, the new above way takes:
            // 14249ms
            //
            // ... NOPE, made some new changes, it is now....
            // 5290ms  !!!!!!
            //
            // that is a 96% savings of processing and sql calls!
            //
            // ... NOPE, made even more nice changes, it is now...
            // 4452ms !!!!!!!
            Template template = TemplateBuilder.CreateTextPageTemplate();

            FileService.SaveTemplate(template);

            ContentType contentType1 = ContentTypeBuilder.CreateTextPageContentType("test1", "test1", defaultTemplateId: template.Id);
            ContentType contentType2 = ContentTypeBuilder.CreateTextPageContentType("test2", "test2", defaultTemplateId: template.Id);
            ContentType contentType3 = ContentTypeBuilder.CreateTextPageContentType("test3", "test3", defaultTemplateId: template.Id);

            ContentTypeService.Save(new[] { contentType1, contentType2, contentType3 });
            contentType1.AllowedContentTypes = new[]
            {
                new ContentTypeSort(new Lazy <int>(() => contentType2.Id), 0, contentType2.Alias),
                new ContentTypeSort(new Lazy <int>(() => contentType3.Id), 1, contentType3.Alias)
            };
            contentType2.AllowedContentTypes = new[]
            {
                new ContentTypeSort(new Lazy <int>(() => contentType1.Id), 0, contentType1.Alias),
                new ContentTypeSort(new Lazy <int>(() => contentType3.Id), 1, contentType3.Alias)
            };
            contentType3.AllowedContentTypes = new[]
            {
                new ContentTypeSort(new Lazy <int>(() => contentType1.Id), 0, contentType1.Alias),
                new ContentTypeSort(new Lazy <int>(() => contentType2.Id), 1, contentType2.Alias)
            };
            ContentTypeService.Save(new[] { contentType1, contentType2, contentType3 });

            IEnumerable <Content> roots = ContentBuilder.CreateTextpageContent(contentType1, -1, 10);

            ContentService.Save(roots);
            foreach (Content root in roots)
            {
                IEnumerable <Content> item1 = ContentBuilder.CreateTextpageContent(contentType1, root.Id, 10);
                IEnumerable <Content> item2 = ContentBuilder.CreateTextpageContent(contentType2, root.Id, 10);
                IEnumerable <Content> item3 = ContentBuilder.CreateTextpageContent(contentType3, root.Id, 10);

                ContentService.Save(item1.Concat(item2).Concat(item3));
            }

            var total = new List <IContent>();

            using (GetTestProfilingLogger().TraceDuration <ContentServicePerformanceTest>("Getting all content in site"))
            {
                TestProfiler.Enable();
                total.AddRange(ContentService.GetRootContent());
                foreach (IContent content in total.ToArray())
                {
                    total.AddRange(ContentService.GetPagedDescendants(content.Id, 0, int.MaxValue, out long _));
                }

                TestProfiler.Disable();
                StaticApplicationLogging.Logger.LogInformation("Returned {Total} items", total.Count);
            }
        }
Esempio n. 22
0
 public TemplateBuilderTest()
 {
     builder = new TemplateBuilder <TemplateBase>();
 }
Esempio n. 23
0
        public static string CollectionTemplate(IHtmlHelper htmlHelper)
        {
            var viewData = htmlHelper.ViewData;
            var model = viewData.Model;
            if (model == null)
            {
                return string.Empty;
            }

            var collection = model as IEnumerable;
            if (collection == null)
            {
                // Only way we could reach here is if user passed templateName: "Collection" to an Editor() overload.
                throw new InvalidOperationException(Resources.FormatTemplates_TypeMustImplementIEnumerable(
                    "Collection", model.GetType().FullName, typeof(IEnumerable).FullName));
            }

            var typeInCollection = typeof(string);
            var genericEnumerableType = ClosedGenericMatcher.ExtractGenericInterface(
                collection.GetType(),
                typeof(IEnumerable<>));
            if (genericEnumerableType != null)
            {
                typeInCollection = genericEnumerableType.GenericTypeArguments[0];
            }

            var typeInCollectionIsNullableValueType = TypeHelper.IsNullableValueType(typeInCollection);
            var oldPrefix = viewData.TemplateInfo.HtmlFieldPrefix;

            try
            {
                viewData.TemplateInfo.HtmlFieldPrefix = string.Empty;

                var fieldNameBase = oldPrefix;
                var result = new StringBuilder();

                var serviceProvider = htmlHelper.ViewContext.HttpContext.RequestServices;
                var metadataProvider = serviceProvider.GetRequiredService<IModelMetadataProvider>();
                var viewEngine = serviceProvider.GetRequiredService<ICompositeViewEngine>();

                var index = 0;
                foreach (var item in collection)
                {
                    var itemType = typeInCollection;
                    if (item != null && !typeInCollectionIsNullableValueType)
                    {
                        itemType = item.GetType();
                    }

                    var modelExplorer = metadataProvider.GetModelExplorerForType(itemType, item);
                    var fieldName = string.Format(CultureInfo.InvariantCulture, "{0}[{1}]", fieldNameBase, index++);

                    var templateBuilder = new TemplateBuilder(
                        viewEngine,
                        htmlHelper.ViewContext,
                        htmlHelper.ViewData,
                        modelExplorer,
                        htmlFieldName: fieldName,
                        templateName: null,
                        readOnly: false,
                        additionalViewData: null);

                    var output = templateBuilder.Build();
                    result.Append(output);
                }

                return result.ToString();
            }
            finally
            {
                viewData.TemplateInfo.HtmlFieldPrefix = oldPrefix;
            }
        }
Esempio n. 24
0
 public void Initialize()
 {
     _template = TemplateBuilder
                 .FromString("{ID} {Name} {EMail} {CreationTime}")
                 .Build();
 }
Esempio n. 25
0
 public void SetUp()
 {
     sut = new TemplateBuilder();
 }
Esempio n. 26
0
        protected void SearchAction()
        {
            string sType = Request.QueryString["pType"];

            gvData.DataSource = null;
            gvData.DataBind();

            if (!string.IsNullOrEmpty(sType))
            {
                Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = new DataTable();
                Config oConfig = (Config)Session[Constants.SES_USER_CONFIG];

                #region Receive
                if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.RECEIVE).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "SP Receive Approval Queue List";
                    ReceiveDAL      oReceiveDAL = new ReceiveDAL();
                    TemplateBuilder tbGvData    = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Receive' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult   = oReceiveDAL.LoadUnapprovedList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtTmpList = (DataTable)oResult.Return;
                    if (dtTmpList != null)
                    {
                        if (dtTmpList.Rows.Count > 0)
                        {
                            gvData.DataSource = dtTmpList;
                            gvData.DataBind();
                            Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtTmpList;
                        }
                    }
                }
                #endregion Receive

                #region Issue
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.SP_ISSUE).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "SP Issue Approval Queue List";
                    IssueDAL        oIssueDAL = new IssueDAL();
                    TemplateBuilder tbGvData  = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Issue' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult           = oIssueDAL.LoadUnapprovedList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtTmpCurrencyList = (DataTable)oResult.Return;
                    if (dtTmpCurrencyList != null)
                    {
                        gvData.DataSource = dtTmpCurrencyList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtTmpCurrencyList;
                    }
                }
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.SP_ISSUE_UPDATE).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "SP Issue Update Approval Queue List";
                    IssueDAL        oIssueDAL = new IssueDAL();
                    TemplateBuilder tbGvData  = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Issue Update' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oIssueDAL.LoadTmpIssueUpdateDataTableList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtTmpIssueUpdateList = (DataTable)oResult.Return;
                    if (dtTmpIssueUpdateList != null)
                    {
                        gvData.DataSource = dtTmpIssueUpdateList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtTmpIssueUpdateList;
                    }
                }
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.SP_ISSUE_OLD).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "SP Old Customer Issue Approval Queue List";
                    IssueDAL        oIssueDAL = new IssueDAL();
                    TemplateBuilder tbGvData  = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Old Customer Issue' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oIssueDAL.LoadUnapprovedOldCustomerIssueList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtTmpIssueUpdateList = (DataTable)oResult.Return;
                    if (dtTmpIssueUpdateList != null)
                    {
                        gvData.DataSource = dtTmpIssueUpdateList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtTmpIssueUpdateList;
                    }
                }
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.SP_ISSUE_ONL).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "SP Online Issue Approval Queue List";
                    IssueDAL        oIssueDAL = new IssueDAL();
                    TemplateBuilder tbGvData  = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'SP Online Issue' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oIssueDAL.LoadUnapprovedOnlineIssueList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtTmpIssueUpdateList = (DataTable)oResult.Return;
                    if (dtTmpIssueUpdateList != null)
                    {
                        gvData.DataSource = dtTmpIssueUpdateList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtTmpIssueUpdateList;
                    }
                }
                #endregion Issue

                #region interst payment
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.INTEREST_PAYMENT).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "Interst Payment Approval Queue List";
                    InterestPaymentDAL oIntPayDAL = new InterestPaymentDAL();
                    TemplateBuilder    tbGvData   = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Interst Payment' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult         = oIntPayDAL.LoadUnapprovedList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtTmpIntPayList = (DataTable)oResult.Return;
                    if (dtTmpIntPayList != null)
                    {
                        gvData.DataSource = dtTmpIntPayList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtTmpIntPayList;
                    }
                }
                #endregion interst payment

                #region Encashment
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.ENCASHED).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "Encashment Approval Queue List";
                    EncashmentDAL   oEncashDAL = new EncashmentDAL();
                    TemplateBuilder tbGvData   = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Encashment' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult         = oEncashDAL.LoadUnapprovedList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtTmpIntPayList = (DataTable)oResult.Return;
                    if (dtTmpIntPayList != null)
                    {
                        gvData.DataSource = dtTmpIntPayList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtTmpIntPayList;
                    }
                }
                #endregion Encashment

                #region Stop Payment
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.STOP_PAYMENT_MARK).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "Payment Mark Approval Queue List";
                    StopPaymentDAL  oStopPayDAL = new StopPaymentDAL();
                    TemplateBuilder tbGvData    = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Payment Mark' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oStopPayDAL.LoadUnapprovedPaymentMarkList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtList  = (DataTable)oResult.Return;
                    if (dtList != null)
                    {
                        gvData.DataSource = dtList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtList;
                    }
                }

                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.STOP_PAYMENT_REMOVE_MARK).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "Payment Remove Mark Approval Queue List";
                    StopPaymentDAL  oStopPayDAL = new StopPaymentDAL();
                    TemplateBuilder tbGvData    = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Payment Remove Marks' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oStopPayDAL.LoadUnapprovedPaymentRemoveMarkList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtList  = (DataTable)oResult.Return;
                    if (dtList != null)
                    {
                        gvData.DataSource = dtList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtList;
                    }
                }
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.DUPLICATE_ISSUE).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "Duplicate Issues Approval Queue List";
                    DuplicateIssueDAL oDIDAL   = new DuplicateIssueDAL();
                    TemplateBuilder   tbGvData = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Duplicate Issues' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oDIDAL.LoadUnapprovedList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtList  = (DataTable)oResult.Return;
                    if (dtList != null)
                    {
                        gvData.DataSource = dtList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtList;
                    }
                }
                #endregion Stop Payment

                #region Lien
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.LIEN_MARK).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "Lien Mark Approval Queue List";
                    LienDAL         oLienDAL = new LienDAL();
                    TemplateBuilder tbGvData = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Lien Mark' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oLienDAL.LoadUnapprovedLienMarkList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtList  = (DataTable)oResult.Return;
                    if (dtList != null)
                    {
                        gvData.DataSource = dtList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtList;
                    }
                }

                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.LIEN_MARK_REMOVE).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "Lien Mark Remove Approval Queue List";
                    LienDAL         oLienDAL = new LienDAL();
                    TemplateBuilder tbGvData = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Lien Mark Remove' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oLienDAL.LoadUnapprovedLienRemoveMarkList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtList  = (DataTable)oResult.Return;
                    if (dtList != null)
                    {
                        gvData.DataSource = dtList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtList;
                    }
                }
                #endregion Lien

                #region Reinvestment
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.REINVESTMENT).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "Reinvestment Approval Queue List";
                    ReinvestmentDAL oRiDAL   = new ReinvestmentDAL();
                    TemplateBuilder tbGvData = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No 'Reinvestment' record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oRiDAL.LoadUnapprovedList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtList  = (DataTable)oResult.Return;
                    if (dtList != null)
                    {
                        gvData.DataSource = dtList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtList;
                    }
                }
                #endregion Reinvestment

                #region ACE Register
                else if (sType.Equals(Convert.ToString((int)Constants.PAGEINDEX_TRANS.ACE_MANAGER).PadLeft(5, '0')))
                {
                    lgText.InnerHtml = "ACE Registration Queue List";
                    IssueDAL        oIssueDAL = new IssueDAL();
                    TemplateBuilder tbGvData  = new TemplateBuilder();
                    tbGvData.AppendLiteralString("No record found");
                    gvData.EmptyDataTemplate = tbGvData;

                    Result    oResult = oIssueDAL.LoadUnapprovedACERegisterList(null, true, oConfig.DivisionID, oConfig.BankCodeID);
                    DataTable dtList  = (DataTable)oResult.Return;
                    if (dtList != null)
                    {
                        gvData.DataSource = dtList;
                        gvData.DataBind();
                        Session[Constants.SES_CONFIG_UNAPPROVE_DATA] = dtList;
                    }
                }
                #endregion ACE Register

                //Make Filter By User
                //Config oConfig = Session[Constants.SES_USER_CONFIG] as Config;
                if (!string.IsNullOrEmpty(oConfig.FilterMakerID))
                {
                    DDListUtil.Assign(ddlUserName, oConfig.FilterMakerID.Trim());
                    FilterData(oConfig.FilterMakerID.Trim());
                }
            }
        }
    public void Can_Perform_Delete_When_Assigned_To_Doc()
    {
        // Arrange
        var provider        = ScopeProvider;
        var scopeAccessor   = (IScopeAccessor)provider;
        var dataTypeService = GetRequiredService <IDataTypeService>();
        var fileService     = GetRequiredService <IFileService>();

        using (provider.CreateScope())
        {
            var templateRepository = CreateRepository(provider);
            var globalSettings     = new GlobalSettings();
            var serializer         = new JsonNetSerializer();
            var tagRepository      = new TagRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger <TagRepository>());
            var commonRepository   =
                new ContentTypeCommonRepository(scopeAccessor, templateRepository, AppCaches, ShortStringHelper);
            var languageRepository     = new LanguageRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger <LanguageRepository>());
            var contentTypeRepository  = new ContentTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger <ContentTypeRepository>(), commonRepository, languageRepository, ShortStringHelper);
            var relationTypeRepository = new RelationTypeRepository(scopeAccessor, AppCaches.Disabled, LoggerFactory.CreateLogger <RelationTypeRepository>());
            var entityRepository       = new EntityRepository(scopeAccessor, AppCaches.Disabled);
            var relationRepository     = new RelationRepository(scopeAccessor, LoggerFactory.CreateLogger <RelationRepository>(), relationTypeRepository, entityRepository);
            var propertyEditors        =
                new PropertyEditorCollection(new DataEditorCollection(() => Enumerable.Empty <IDataEditor>()));
            var dataValueReferences =
                new DataValueReferenceFactoryCollection(() => Enumerable.Empty <IDataValueReferenceFactory>());
            var contentRepo = new DocumentRepository(
                scopeAccessor,
                AppCaches.Disabled,
                LoggerFactory.CreateLogger <DocumentRepository>(),
                LoggerFactory,
                contentTypeRepository,
                templateRepository,
                tagRepository,
                languageRepository,
                relationRepository,
                relationTypeRepository,
                propertyEditors,
                dataValueReferences,
                dataTypeService,
                serializer,
                Mock.Of <IEventAggregator>());

            var template = TemplateBuilder.CreateTextPageTemplate();
            fileService.SaveTemplate(template); // else, FK violation on contentType!

            var contentType =
                ContentTypeBuilder.CreateSimpleContentType("umbTextpage2", "Textpage", defaultTemplateId: template.Id);
            contentTypeRepository.Save(contentType);

            var textpage = ContentBuilder.CreateSimpleContent(contentType);
            contentRepo.Save(textpage);

            textpage.TemplateId = template.Id;
            contentRepo.Save(textpage);

            // Act
            var templates = templateRepository.Get("textPage");
            templateRepository.Delete(templates);

            // Assert
            Assert.IsNull(templateRepository.Get("textPage"));
        }
    }
        public static IHtmlContent ObjectTemplate(IHtmlHelper htmlHelper)
        {
            var viewData = htmlHelper.ViewData;
            var templateInfo = viewData.TemplateInfo;
            var modelExplorer = viewData.ModelExplorer;

            if (templateInfo.TemplateDepth > 1)
            {
                if (modelExplorer.Model == null)
                {
                    return new HtmlString(modelExplorer.Metadata.NullDisplayText);
                }

                var text = modelExplorer.GetSimpleDisplayText();
                if (modelExplorer.Metadata.HtmlEncode)
                {
                    return new StringHtmlContent(text);
                }

                return new HtmlString(text);
            }

            var serviceProvider = htmlHelper.ViewContext.HttpContext.RequestServices;
            var viewEngine = serviceProvider.GetRequiredService<ICompositeViewEngine>();
            var viewBufferScope = serviceProvider.GetRequiredService<IViewBufferScope>();

            var content = new HtmlContentBuilder();
            foreach (var propertyExplorer in modelExplorer.Properties)
            {
                var propertyMetadata = propertyExplorer.Metadata;
                if (!ShouldShow(propertyExplorer, templateInfo))
                {
                    continue;
                }

                var templateBuilder = new TemplateBuilder(
                    viewEngine,
                    viewBufferScope,
                    htmlHelper.ViewContext,
                    htmlHelper.ViewData,
                    propertyExplorer,
                    htmlFieldName: propertyMetadata.PropertyName,
                    templateName: null,
                    readOnly: false,
                    additionalViewData: null);

                var templateBuilderResult = templateBuilder.Build();
                if (!propertyMetadata.HideSurroundingHtml)
                {
                    var label = htmlHelper.Label(propertyMetadata.PropertyName, labelText: null, htmlAttributes: null);
                    if (!string.IsNullOrEmpty(label.ToString()))
                    {
                        var labelTag = new TagBuilder("div");
                        labelTag.AddCssClass("editor-label");
                        labelTag.InnerHtml.SetContent(label);
                        content.AppendLine(labelTag);
                    }

                    var valueDivTag = new TagBuilder("div");
                    valueDivTag.AddCssClass("editor-field");

                    valueDivTag.InnerHtml.AppendHtml(templateBuilderResult);
                    valueDivTag.InnerHtml.AppendHtml(" ");
                    valueDivTag.InnerHtml.AppendHtml(htmlHelper.ValidationMessage(
                        propertyMetadata.PropertyName,
                        message: null,
                        htmlAttributes: null,
                        tag: null));

                    content.AppendLine(valueDivTag);
                }
                else
                {
                    content.AppendHtml(templateBuilderResult);
                }
            }

            return content;
        }
Esempio n. 29
0
        /// <summary>
        /// Process
        /// </summary>
        /// <param name="context">Context</param>
        /// <param name="output">Output</param>
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }

            //clear the output
            output.SuppressOutput();

            //container for additional attributes
            Dictionary <string, object> htmlAttributes = new Dictionary <string, object>();

            //disabled attribute
            bool.TryParse(IsDisabled, out bool disabled);
            if (disabled)
            {
                htmlAttributes.Add("disabled", "disabled");
            }

            //required asterisk
            bool.TryParse(IsRequired, out bool required);
            if (required)
            {
                output.PreElement.SetHtmlContent("<div class='input-group input-group-required'>");
                output.PostElement.SetHtmlContent("<div class=\"input-group-btn\"><span class=\"required\">*</span></div></div>");
            }

            //contextualize IHtmlHelper
            IViewContextAware viewContextAware = _htmlHelper as IViewContextAware;

            viewContextAware?.Contextualize(ViewContext);

            //add form-control class
            bool.TryParse(RenderFormControlClass, out bool renderFormControlClass);
            if (string.IsNullOrEmpty(RenderFormControlClass) && For.Metadata.ModelType.Name.Equals("String") || renderFormControlClass)
            {
                htmlAttributes.Add("class", "form-control");
            }

            //generate editor

            //we have to invoke strong typed "EditorFor" method of HtmlHelper<TModel>
            //but we cannot do it because we don't have access to Expression<Func<TModel, TValue>>
            //more info at https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.ViewFeatures/ViewFeatures/HtmlHelperOfT.cs

            //so we manually invoke implementation of "GenerateEditor" method of HtmlHelper
            //more info at https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.ViewFeatures/ViewFeatures/HtmlHelper.cs

            //little workaround here. we need to access private properties of HtmlHelper
            //just ensure that they are not renamed by asp.net core team in future versions
            IViewEngine      viewEngine      = CommonHelper.GetPrivateFieldValue(_htmlHelper, "_viewEngine") as IViewEngine;
            IViewBufferScope bufferScope     = CommonHelper.GetPrivateFieldValue(_htmlHelper, "_bufferScope") as IViewBufferScope;
            TemplateBuilder  templateBuilder = new TemplateBuilder(
                viewEngine,
                bufferScope,
                _htmlHelper.ViewContext,
                _htmlHelper.ViewData,
                For.ModelExplorer,
                For.Name,
                Template,
                readOnly: false,
                additionalViewData: new { htmlAttributes, postfix = this.Postfix });

            Microsoft.AspNetCore.Html.IHtmlContent htmlOutput = templateBuilder.Build();
            output.Content.SetHtmlContent(htmlOutput.RenderHtmlContent());
        }
Esempio n. 30
0
 public void Initialize()
 {
     // Arrange
     _tpl = TemplateBuilder.FromString("{" + VariableName + "}")
            .Build();
 }
 /// <summary>
 /// Builds the error page.
 /// </summary>
 /// <param name="exceptionText">The exception text.</param>
 /// <returns></returns>
 public static string Build(string?exceptionText = null) =>
 TemplateBuilder.FromCurrentAssembly("Diagnostics.Templates.Http500MinimalErrorPage.html")
 .Build()
 .Set("ExceptionText", exceptionText)
 .Get();
Esempio n. 32
0
        public void UnpublishedNameChanges()
        {
            var urlSegmentProvider = new DefaultUrlSegmentProvider(ShortStringHelper);

            Template template = TemplateBuilder.CreateTextPageTemplate();

            FileService.SaveTemplate(template);

            ContentType contentType = ContentTypeBuilder.CreateTextPageContentType(defaultTemplateId: template.Id);

            ContentTypeService.Save(contentType);

            Content content = ContentBuilder.CreateTextpageContent(contentType, "hello", Constants.System.Root);

            ContentService.SaveAndPublish(content);
            IContent cachedContent = ContentService.GetById(content.Id);
            var      segment       = urlSegmentProvider.GetUrlSegment(cachedContent);

            // Does a new node work?

            Assert.AreEqual("hello", segment);

            content.Name  = "goodbye";
            cachedContent = ContentService.GetById(content.Id);
            segment       = urlSegmentProvider.GetUrlSegment(cachedContent);

            // We didn't save anything, so all should still be the same

            Assert.AreEqual("hello", segment);

            ContentService.Save(content);
            cachedContent = ContentService.GetById(content.Id);
            segment       = urlSegmentProvider.GetUrlSegment(cachedContent);

            // At this point we have saved the new name, but not published. The url should still be the previous name

            Assert.AreEqual("hello", segment);

            PublishedSnapshotService.Rebuild();

            cachedContent = ContentService.GetById(content.Id);
            segment       = urlSegmentProvider.GetUrlSegment(cachedContent);

            // After a rebuild, the unpublished name should still not be the url.
            // This was previously incorrect, per #11074

            Assert.AreEqual("hello", segment);

            ContentService.SaveAndPublish(content);
            cachedContent = ContentService.GetById(content.Id);
            segment       = urlSegmentProvider.GetUrlSegment(cachedContent);

            // The page has now been published, so we should see the new url segment
            Assert.AreEqual("goodbye", segment);

            PublishedSnapshotService.Rebuild();
            cachedContent = ContentService.GetById(content.Id);
            segment       = urlSegmentProvider.GetUrlSegment(cachedContent);

            // Just double checking that things remain after a rebuild
            Assert.AreEqual("goodbye", segment);
        }
Esempio n. 33
0
 /// <summary>
 /// 初始化按钮包装器渲染器
 /// </summary>
 /// <param name="config">配置</param>
 public ButtonWrapperRender(IConfig config) : base(config)
 {
     _config          = config;
     _templateBuilder = new TemplateBuilder();
 }
Esempio n. 34
0
 /// <summary>
 /// 初始化菜单生成器
 /// </summary>
 public MenuBuilder() : base("mat-menu")
 {
     _templateBuilder = new TemplateBuilder();
     _templateBuilder.AddAttribute("matMenuContent", "", false);
     SetContent(_templateBuilder);
 }
        public static IHtmlContent CollectionTemplate(IHtmlHelper htmlHelper)
        {
            var viewData = htmlHelper.ViewData;
            var model = viewData.Model;
            if (model == null)
            {
                return HtmlString.Empty;
            }

            var collection = model as IEnumerable;
            if (collection == null)
            {
                // Only way we could reach here is if user passed templateName: "Collection" to an Editor() overload.
                throw new InvalidOperationException(Resources.FormatTemplates_TypeMustImplementIEnumerable(
                    "Collection", model.GetType().FullName, typeof(IEnumerable).FullName));
            }

            var elementMetadata = htmlHelper.ViewData.ModelMetadata.ElementMetadata;
            Debug.Assert(elementMetadata != null);
            var typeInCollectionIsNullableValueType = elementMetadata.IsNullableValueType;

            var serviceProvider = htmlHelper.ViewContext.HttpContext.RequestServices;
            var metadataProvider = serviceProvider.GetRequiredService<IModelMetadataProvider>();

            // Use typeof(string) instead of typeof(object) for IEnumerable collections. Neither type is Nullable<T>.
            if (elementMetadata.ModelType == typeof(object))
            {
                elementMetadata = metadataProvider.GetMetadataForType(typeof(string));
            }

            var oldPrefix = viewData.TemplateInfo.HtmlFieldPrefix;
            try
            {
                viewData.TemplateInfo.HtmlFieldPrefix = string.Empty;

                var fieldNameBase = oldPrefix;
                var result = new HtmlContentBuilder();
                var viewEngine = serviceProvider.GetRequiredService<ICompositeViewEngine>();
                var viewBufferScope = serviceProvider.GetRequiredService<IViewBufferScope>();

                var index = 0;
                foreach (var item in collection)
                {
                    var itemMetadata = elementMetadata;
                    if (item != null && !typeInCollectionIsNullableValueType)
                    {
                        itemMetadata = metadataProvider.GetMetadataForType(item.GetType());
                    }

                    var modelExplorer = new ModelExplorer(
                        metadataProvider,
                        container: htmlHelper.ViewData.ModelExplorer,
                        metadata: itemMetadata,
                        model: item);
                    var fieldName = string.Format(CultureInfo.InvariantCulture, "{0}[{1}]", fieldNameBase, index++);

                    var templateBuilder = new TemplateBuilder(
                        viewEngine,
                        viewBufferScope,
                        htmlHelper.ViewContext,
                        htmlHelper.ViewData,
                        modelExplorer,
                        htmlFieldName: fieldName,
                        templateName: null,
                        readOnly: false,
                        additionalViewData: null);
                    result.AppendHtml(templateBuilder.Build());
                }

                return result;
            }
            finally
            {
                viewData.TemplateInfo.HtmlFieldPrefix = oldPrefix;
            }
        }
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (output == null)
            {
                throw new ArgumentNullException(nameof(output));
            }
            if (output.TagName == "cms-display")
            {
                output.TagName = null;
            }

            ModelExplorer fieldEditor = null;
            ModelExplorer expression  = null;
            var           viewData    = ViewContext.ViewData;

            DisableEditing = DisableEditing || !ViewContext.HttpContext.IsInCmsMode();
            if (For != null)
            {
                if (!DisableEditing)
                {
                    var memExpression = For.Body as MemberExpression;
                    if (memExpression != null)
                    {
                        var target = Expression.Lambda(memExpression.Expression).Compile().DynamicInvoke();
                        if (target != null)
                        {
                            viewData = new ViewDataDictionary(_modelMetadataProvider, new ModelStateDictionary())
                            {
                                Model = target
                            };
                            fieldEditor = DisableEditing ? null : ExpressionMetadataProvider.FromStringExpression("FieldEditors", viewData, _modelMetadataProvider);
                            if (fieldEditor?.Model != null)
                            {
                                viewData = new ViewDataDictionary(_modelMetadataProvider, new ModelStateDictionary())
                                {
                                    Model = fieldEditor.Model
                                };
                                expression = ExpressionMetadataProvider.FromStringExpression(memExpression.Member.Name, viewData, _modelMetadataProvider);
                            }
                            if (expression?.Model != null)
                            {
                                expression = ExpressionMetadataProvider.FromStringExpression(memExpression.Member.Name, viewData, _modelMetadataProvider);
                            }
                        }
                    }
                }
                if (expression?.Model != null)
                {
                    AsHtml = true;
                }
                else
                {
                    expression = ExpressionMetadataProvider.FromLambdaExpression <object, object>(For,
                                                                                                  new ViewDataDictionary <object>(ViewContext.ViewData), _modelMetadataProvider);
                    viewData = ViewContext.ViewData;
                }
            }
            else
            {
                fieldEditor = DisableEditing ? null : ExpressionMetadataProvider.FromStringExpression("FieldEditors", viewData, _modelMetadataProvider);
                if (fieldEditor != null && fieldEditor.Model != null)
                {
                    viewData = new ViewDataDictionary(_modelMetadataProvider, new ModelStateDictionary())
                    {
                        Model = fieldEditor.Model
                    };
                    expression = ExpressionMetadataProvider.FromStringExpression(ForPropertyName, viewData, _modelMetadataProvider);
                }
                if (expression?.Model != null)
                {
                    AsHtml = true;
                }
                else
                {
                    expression = ExpressionMetadataProvider.FromStringExpression(ForPropertyName, ViewContext.ViewData, _modelMetadataProvider);
                    viewData   = ViewContext.ViewData;
                }
            }
            IHtmlContent content = null;

            if (expression != null && expression.Model != null)
            {
                content = new TemplateBuilder(
                    _viewEngine,
                    _viewBufferScope,
                    this.ViewContext,
                    viewData,
                    expression,
                    null,                  //ForPropertyName ?? ExpressionHelper.GetExpressionText((LambdaExpression)For),
                    null, true, null).Build();
                if (content is ViewBuffer) //displaytemplate
                {
                    AsHtml = true;
                }
            }
            if (content == null && output.TagName != null)
            {
                var childContent = await output.GetChildContentAsync();

                if (string.IsNullOrEmpty(childContent?.GetContent()))
                {
                    output.TagName = null;
                    output.SuppressOutput();
                }

                return;
            }
            output.TagMode = TagMode.StartTagAndEndTag;
            if (content == null)
            {
                return;
            }
            if (AsHtml)
            {
                output.PreContent.SetHtmlContent(content);
            }
            else
            {
                using (var writer = new System.IO.StringWriter())
                {
                    content.WriteTo(writer, HtmlEncoder.Default);
                    output.PreContent.SetContent(writer.ToString());
                }
            }
        }