/// <summary>Creates a <see cref="Panel" /> from a tag, setting its <see cref="Panel.CssClass" /> and supplying Text or inner controls, if it has any.</summary> /// <param name="tag">The tag whose content is being represented.</param> /// <param name="slide">The object from which to get the property.</param> /// <param name="resourceFile">The resource file from which to get localized resources.</param> /// <returns>The created container</returns> private Panel CreateRotatorContainer(Tag tag, ITemplateable slide, string resourceFile) { Panel container = null; try { container = new Panel(); container.CssClass = TemplateEngine.GetAttributeValue(tag, slide, null, resourceFile, "CssClass", "class"); if (tag.HasChildTags) { TemplateEngine.ProcessTags(container, tag.ChildTags, slide, null, resourceFile, this.ProcessTags, this.GetSlides); } else { var innerText = TemplateEngine.GetAttributeValue(tag, slide, (ITemplateable)null, resourceFile, "Text"); if (!string.IsNullOrEmpty(innerText)) { container.Controls.Add(new LiteralControl(innerText)); } } return(container); } catch { if (container != null) { container.Dispose(); } throw; } }
/// <summary>Creates a <see cref="Label" /> whose content is the total number of <see cref="Slide" />s for this rotator.</summary> /// <param name="tag">The tag whose content is being represented.</param> /// <param name="slide">The object from which to get the property.</param> /// <param name="resourceFile">The resource file from which to get localized resources.</param> /// <returns>The <see cref="Label" /> instance that was created</returns> private static Control CreateTotalCountControl(Tag tag, ITemplateable slide, string resourceFile) { Label totalCountLabel = null; try { totalCountLabel = new Label(); totalCountLabel.CssClass = TemplateEngine.GetAttributeValue(tag, slide, null, resourceFile, "CssClass", "class"); totalCountLabel.CssClass = Utility.AddCssClass(totalCountLabel.CssClass, "total-slide-count"); return(totalCountLabel); } catch { if (totalCountLabel != null) { totalCountLabel.Dispose(); } throw; } }
/// <summary>Creates a <see cref="Label" /> whose content is the (1-based) index of the currently displayed <see cref="Slide" /></summary> /// <param name="tag">The tag whose content is being represented.</param> /// <param name="slide">The object from which to get the property.</param> /// <param name="resourceFile">The resource file from which to get localized resources.</param> /// <returns>The <see cref="Label" /> instance that was created</returns> private static Control CreateCurrentIndexControl(Tag tag, ITemplateable slide, string resourceFile) { Label currentSlideIndexWrapper = null; try { currentSlideIndexWrapper = new Label(); currentSlideIndexWrapper.CssClass = TemplateEngine.GetAttributeValue(tag, slide, null, resourceFile, "CssClass", "class"); currentSlideIndexWrapper.CssClass = Utility.AddCssClass(currentSlideIndexWrapper.CssClass, "current-slide-index"); currentSlideIndexWrapper.Text = 1.ToString(CultureInfo.CurrentCulture); return(currentSlideIndexWrapper); } catch { if (currentSlideIndexWrapper != null) { currentSlideIndexWrapper.Dispose(); } throw; } }
/// <summary>Creates a <c>div</c> tag for the given <paramref name="tag" />. /// Then sets the tag to be the container for an auto-generated pager.</summary> /// <param name="tag">The tag whose content is being represented.</param> /// <param name="slide">The object from which to get the property.</param> /// <param name="resourceFile">The resource file from which to get localized resources.</param> /// <returns>The created pager container</returns> private Control CreatePager(Tag tag, ITemplateable slide, string resourceFile) { Panel pagerContainer = null; try { pagerContainer = this.CreateRotatorContainer(tag, slide, resourceFile); pagerContainer.CssClass = Utility.AddCssClass(pagerContainer.CssClass, "rotator-pager"); this.CycleOptions.PagerEvent = TemplateEngine.GetAttributeValue(tag, slide, (ITemplateable)null, resourceFile, "Event") ?? "click"; return(pagerContainer); } catch { if (pagerContainer != null) { pagerContainer.Dispose(); } throw; } }
private bool ProcessTag(Control container, Tag tag, ITemplateable templateItem, string resourceFile) { var currentEvent = (Event)templateItem; if (tag.TagType == TagType.Open) { switch (tag.LocalName.ToUpperInvariant()) { case "EVENTSORT": this.SortAction = (SortAction)this.LoadControl(this.ActionsControlsFolder + "SortAction.ascx"); this.SortAction.ModuleConfiguration = this.ModuleConfiguration; this.SortAction.LocalResourceFile = resourceFile; this.SortAction.SortChanged += this.SortActions_SortChanged; container.Controls.Add(this.SortAction); break; case "STATUSFILTER": this.StatusFilterAction = (StatusFilterAction)this.LoadControl(this.ActionsControlsFolder + "StatusFilterAction.ascx"); this.StatusFilterAction.ModuleConfiguration = this.ModuleConfiguration; this.StatusFilterAction.LocalResourceFile = resourceFile; this.StatusFilterAction.SortChanged += this.SortActions_SortChanged; container.Controls.Add(this.StatusFilterAction); break; case "CATEGORYFILTER": this.CategoryFilterAction = (CategoryFilterAction)this.LoadControl(this.ActionsControlsFolder + "CategoryFilterAction.ascx"); this.CategoryFilterAction.ModuleConfiguration = this.ModuleConfiguration; this.CategoryFilterAction.LocalResourceFile = resourceFile; this.CategoryFilterAction.CategoryChanged += this.CategoryFilter_SortChanged; container.Controls.Add(this.CategoryFilterAction); break; case "MULTIPLECATEGORYFILTER": this.MultipleCategoriesFilterAction = (MultipleCategoriesFilterAction)this.LoadControl(this.ActionsControlsFolder + "MultipleCategoriesFilterAction.ascx"); this.MultipleCategoriesFilterAction.ModuleConfiguration = this.ModuleConfiguration; this.MultipleCategoriesFilterAction.LocalResourceFile = resourceFile; this.MultipleCategoriesFilterAction.CategoryChanged += this.MultipleCategoriesActions_SortChanged; this.MultipleCategoriesFilterAction.DialogPosition = TemplateEngine.GetAttributeValue(tag, templateItem, this.TemplateProvider.GlobalItem, resourceFile, "DialogPosition", "my"); this.MultipleCategoriesFilterAction.ButtonPosition = TemplateEngine.GetAttributeValue(tag, templateItem, this.TemplateProvider.GlobalItem, resourceFile, "ButtonPosition", "at"); this.MultipleCategoriesFilterAction.CollisionBehavior = TemplateEngine.GetAttributeValue(tag, templateItem, this.TemplateProvider.GlobalItem, resourceFile, "CollisionBehavior", "collision"); container.Controls.Add(MultipleCategoriesFilterAction); break; case "READMORE": var linkUrl = currentEvent != null ? this.BuildLinkUrl( this.DetailsTabId, this.DetailsModuleId, "EventDetail", Dnn.Events.Utility.GetEventParameters(currentEvent)) : Globals.NavigateURL(this.DetailsTabId); TemplateEngine.AddControl(container, TemplateEngine.CreateLink(tag, templateItem, this.TemplateProvider.GlobalItem, resourceFile, linkUrl)); break; default: return(this.ProcessCommonTag(container, tag, currentEvent, resourceFile)); } } else if (tag.TagType == TagType.Close) { return(this.ProcessCommonTag(container, tag, currentEvent, resourceFile)); } return(false); }