/// <summary> /// Effectue l'affichage du controle /// </summary> /// <param name="writer"></param> protected override void Render(System.Web.UI.HtmlTextWriter writer) { nbRendered = 0; writer.Write("<ul"); if (!string.IsNullOrEmpty(CssClass)) { writer.Write(" class='"); writer.Write(CssClass); writer.Write("'"); } if (Style != null && Style.Count > 0) { writer.Write(" style='"); writer.Write(Style); writer.Write("'"); } writer.Write(">"); ECommercePage pg = Page as ECommercePage; ContexteProvider prv = ECommerceServer.Contexte; ContexteBreadCrumbItem[] cur = prv.BreadCrumbItems; if (cur.Length == 0) { if (UsePageTitleIfEmpty && pg != null && !string.IsNullOrEmpty(pg.PageName)) { if (!string.IsNullOrEmpty(Header)) { RenderHeader(writer); } if (pg != null && pg.TypePage != ECommercePageType.HomePage) { RenderHomeLink(writer, true); } RenderNonClickable(writer, pg.PageName, null); } else if (AlwaysShowHome) { if (!string.IsNullOrEmpty(Header)) { RenderHeader(writer); } if (pg != null && pg.TypePage != ECommercePageType.HomePage) { RenderHomeLink(writer, true); } } } else { if (!string.IsNullOrEmpty(Header)) { RenderHeader(writer); } if (pg != null && pg.TypePage != ECommercePageType.HomePage) { RenderHomeLink(writer, true); } for (int i = 0; i < (cur.Length - 1); i++) { RenderBreadCrumb(writer, cur[i]); } if (cur.Length > 0) { if (LastIsClickable) { RenderBreadCrumb(writer, cur[cur.Length - 1]); } else { RenderNonClickable(writer, cur[cur.Length - 1].Label, cur[cur.Length - 1].Url); } } } writer.Write("</ul>"); }
/// <summary> /// Effectue le rendu du controle /// </summary> /// <param name="writer"></param> protected override void Render(System.Web.UI.HtmlTextWriter writer) { ECommercePage pg = Page as ECommercePage; ContexteProvider prv = ECommerceServer.Contexte; writer.Write("<script type='application/ld+json'>{ \"@context\": \"http://schema.org\", \"@type\": \"BreadcrumbList\","); writer.Write("\"itemListElement\": "); List <ContexteBreadCrumbItem> cur = new List <ContexteBreadCrumbItem>(pg.GetBreadCrumb()); List <BreadCrumbItemJson> items = new List <BreadCrumbItemJson>(); if (cur.Count == 1 && string.IsNullOrEmpty(cur[0].Label)) { if (!string.IsNullOrEmpty(pg.PageName)) { var j = cur[0]; j.Url = Page.Request.RawUrl; j.Label = pg.PageName; } } else if (cur.Count == 0) { if (!string.IsNullOrEmpty(pg.PageName)) { var j = new ContexteBreadCrumbItem() { Url = Page.Request.RawUrl, Label = pg.PageName }; cur.Add(j); } } var it = new BreadCrumbItemJson() { type = "ListItem", position = items.Count + 1, item = new Item() { id = ECommerceServer.CurrentSite.UrlPrincipale, name = "Accueil", } }; items.Add(it); foreach (var c in cur) { it = new BreadCrumbItemJson() { type = "ListItem", position = items.Count + 1, item = new Item() { id = ResolveUrl(c.Url), name = c.Label } }; if (it.item.id.StartsWith("/")) { it.item.id = ECommerceServer.CurrentSite.UrlPrincipale + it.item.id.Substring(1); } items.Add(it); } string s = CPointSoftware.Equihira.Business.Common.JsonHelper.Serialize(items); writer.Write(s); writer.Write("}</script>"); }
/// <summary> /// Effectue le databinding vers l'objet de données /// </summary> public virtual void BindTo(object o) { if (o == null) { return; } if (o is MarquesDS.catalog_marquesRow) { MarquesDS.catalog_marquesRow r = o as MarquesDS.catalog_marquesRow; if (!string.IsNullOrEmpty(TextFormat)) { this.Text = string.Format(TextFormat, r.mar_libelle); } else { this.Text = r.mar_libelle; } switch (TypeLien) { case TypeMarqueLink.PagePersoOuMoteur: try { if (r.Table.Columns.Contains("mar_url_redirection") && !r.IsNull("mar_url_redirection")) { this.NavigateUrl = ResolveUrl(r["mar_url_redirection"] as string); } } catch { goto case TypeMarqueLink.MoteurDeRecherche; } break; case TypeMarqueLink.MoteurDeRecherche: this.NavigateUrl = ECommerceServer.Contexte.GetSearchPagePath(-1, Guid.Empty, r.mar_pk, null, null, true); break; case TypeMarqueLink.SiteWeb: break; } } else if (o is RechercheMarque) { RechercheMarque r = o as RechercheMarque; if (!string.IsNullOrEmpty(TextFormat)) { this.Text = string.Format(TextFormat, r.Label); } else { this.Text = r.Label; } this.NavigateUrl = ECommerceServer.Contexte.GetSearchPagePath(-1, Guid.Empty, r.Id, null, null, true); } else if (o is ArticlesDataSourceResult) { ArticlesDataSourceResult res = o as ArticlesDataSourceResult; if (res.Marque != null && res.Marque.catalog_marques.Count == 1) { MarquesDS.catalog_marquesRow r = res.Marque.catalog_marques[0]; if (!string.IsNullOrEmpty(TextFormat)) { this.Text = string.Format(TextFormat, r.mar_libelle); } else { this.Text = r.mar_libelle; } this.NavigateUrl = ECommerceServer.Contexte.GetSearchPagePath(-1, Guid.Empty, r.mar_pk, null, null, true); } else { this.Visible = false; } } if (o is VueArticlesWebDS.ecommerce_articles_webRow) { ContexteProvider prv = ECommerceServer.Contexte; } }