private static NavigationConfig LoadConfig(Component component) { NavigationConfig res = new NavigationConfig { NavType = NavigationType.Simple }; if (component.Metadata != null) { ItemFields meta = new ItemFields(component.Metadata, component.MetadataSchema); Keyword type = meta.GetKeywordValue("navigationType"); switch (type.Key.ToLower()) { case "localizable": res.NavType = NavigationType.Localizable; break; } string navTextFields = meta.GetSingleFieldValue("navigationTextFieldPaths"); if (!String.IsNullOrEmpty(navTextFields)) { res.NavTextFieldPaths = navTextFields.Split(',').Select(s => s.Trim()).ToList(); } res.ExternalUrlTemplate = meta.GetSingleFieldValue("externalLinkTemplate"); } return(res); }
private static NavigationConfig GetNavigationConfiguration(Component navConfigComponent) { NavigationConfig result = new NavigationConfig { NavType = NavigationType.Simple }; if (navConfigComponent.Metadata == null) { return(result); } ItemFields navConfigComponentMetadataFields = new ItemFields(navConfigComponent.Metadata, navConfigComponent.MetadataSchema); Keyword type = navConfigComponentMetadataFields.GetKeywordValue("navigationType"); switch (type.Key.ToLower()) { case "localizable": result.NavType = NavigationType.Localizable; break; } string navTextFields = navConfigComponentMetadataFields.GetSingleFieldValue("navigationTextFieldPaths"); if (!string.IsNullOrEmpty(navTextFields)) { result.NavTextFieldPaths = navTextFields.Split(',').Select(s => s.Trim()).ToList(); } result.ExternalUrlTemplate = navConfigComponentMetadataFields.GetSingleFieldValue("externalLinkTemplate"); return(result); }
private void ExtractDataAttributes(ItemFields fields, StringBuilder dataAttributesBuilder) { if (fields == null) { return; } foreach (string fieldname in _dataFieldNames.Where(fn => fields.Contains(fn))) { string dataAttribute = string.Format(" data-{0}=\"{1}\"", fieldname, System.Net.WebUtility.HtmlEncode(fields.GetSingleFieldValue(fieldname))); dataAttributesBuilder.Append(dataAttribute); } // Flatten embedded fields foreach (EmbeddedSchemaField embeddedSchemaField in fields.OfType<EmbeddedSchemaField>()) { ExtractDataAttributes(embeddedSchemaField.Value, dataAttributesBuilder); } }
private void ProcessFields(ItemFields fields, XmlElement link) { if (fields!=null) { foreach (var fieldname in _metaFieldNames) { if (fields.Contains(fieldname)) { link.SetAttribute("data-" + fieldname, fields.GetSingleFieldValue(fieldname)); } } foreach (var field in fields) { if (field is EmbeddedSchemaField) { ProcessFields(((EmbeddedSchemaField)field).Value, link); } } } }
protected string GetUrl(Page page) { string url; if (page.PageTemplate.Title.Equals(_config.ExternalUrlTemplate, StringComparison.InvariantCultureIgnoreCase) && page.Metadata != null) { // The Page is a "Redirect Page"; obtain the URL from its metadata. ItemFields meta = new ItemFields(page.Metadata, page.MetadataSchema); ItemFields link = meta.GetEmbeddedField("redirect"); url = link.GetExternalLink("externalLink"); if (string.IsNullOrEmpty(url)) { url = link.GetSingleFieldValue("internalLink"); } } else { url = GetExtensionlessUrl(page.PublishLocationUrl); } return(url); }
private void ProcessFields(ItemFields fields, XmlElement link) { if (fields != null) { foreach (string fieldname in _metaFieldNames) { if (fields.Contains(fieldname)) { link.SetAttribute("data-" + fieldname, fields.GetSingleFieldValue(fieldname)); } } foreach (ItemField field in fields) { if (field is EmbeddedSchemaField) { ProcessFields(((EmbeddedSchemaField)field).Value, link); } } } }
protected Dictionary <string, string> ExtractKeyValuePairs(Component component) { Dictionary <string, string> keyValuePairs = new Dictionary <string, string>(); if (component.Content == null) { return(keyValuePairs); } ItemFields configComponentFields = new ItemFields(component.Content, component.Schema); ItemFields[] settingsFieldValues = configComponentFields.GetEmbeddedFields("settings").ToArray(); if (settingsFieldValues.Any()) { //either schema is a generic multival embedded name/value foreach (ItemFields setting in settingsFieldValues) { string key = setting.GetTextValue("name"); if (!string.IsNullOrEmpty(key) && !keyValuePairs.ContainsKey(key)) { keyValuePairs.Add(key, setting.GetTextValue("value")); } else { Logger.Warning(string.Format("Empty or duplicate key found ('{0}') in Component '{1}' ({2})", key, component.Title, component.Id)); } } } else { //... or its a custom schema with individual fields foreach (ItemField field in configComponentFields) { string key = field.Name; keyValuePairs.Add(key, configComponentFields.GetSingleFieldValue(key)); } } return(keyValuePairs); }
protected Dictionary <string, string> ReadComponentData(Component comp) { Dictionary <string, string> settings = new Dictionary <string, string>(); if (comp.Content != null) { ItemFields fields = new ItemFields(comp.Content, comp.Schema); IEnumerable <ItemFields> configFields = fields.GetEmbeddedFields("settings"); if (configFields.Any()) { //either schema is a generic multival embedded name/value foreach (ItemFields setting in configFields) { string key = setting.GetTextValue("name"); if (!String.IsNullOrEmpty(key) && !settings.ContainsKey(key)) { settings.Add(key, setting.GetTextValue("value")); } else { Logger.Warning(String.Format("Duplicate key found: '{0}' when processing component {1}", key, comp.Id)); } } } else { //... or its a custom schema with individual fields foreach (ItemField field in fields) { //TODO - do we need to be smarter about date/number type fields? string key = field.Name; settings.Add(key, fields.GetSingleFieldValue(key)); } } } return(settings); }
private static NavigationConfig LoadConfig(Component component) { NavigationConfig res = new NavigationConfig {NavType = NavigationType.Simple}; if (component.Metadata != null) { ItemFields meta = new ItemFields(component.Metadata, component.MetadataSchema); Keyword type = meta.GetKeywordValue("navigationType"); switch (type.Key.ToLower()) { case "localizable": res.NavType = NavigationType.Localizable; break; } string navTextFields = meta.GetSingleFieldValue("navigationTextFieldPaths"); if (!String.IsNullOrEmpty(navTextFields)) { res.NavTextFieldPaths = navTextFields.Split(',').Select(s => s.Trim()).ToList(); } res.ExternalUrlTemplate = meta.GetSingleFieldValue("externalLinkTemplate"); } return res; }
private string ProcessFields(ItemFields fields) { StringBuilder attributesBuilder = new StringBuilder(); if (fields != null) { Logger.Debug(String.Join(", ", _metaFieldNames)); foreach (string fieldname in _metaFieldNames) { Logger.Debug("Processing field: " + fieldname); if (fields.Contains(fieldname)) { string attribute = String.Format(" data-{0}=\"{1}\"", fieldname, System.Net.WebUtility.HtmlEncode(fields.GetSingleFieldValue(fieldname))); Logger.Debug("Attribute:" + attribute); // TODO: XML encode the value attributesBuilder.Append(attribute); } } foreach (ItemField field in fields) { if (field is EmbeddedSchemaField) { attributesBuilder.Append(ProcessFields(((EmbeddedSchemaField)field).Value)); } } } Logger.Debug("attributes:" + attributesBuilder); return(attributesBuilder.ToString()); }
private string ProcessFields(ItemFields fields) { StringBuilder attributesBuilder = new StringBuilder(); if (fields!=null) { Logger.Debug(String.Join(", ", _metaFieldNames)); foreach (string fieldname in _metaFieldNames) { Logger.Debug("Processing field: " + fieldname); if (fields.Contains(fieldname)) { string attribute = String.Format(" data-{0}=\"{1}\"", fieldname, System.Net.WebUtility.HtmlEncode(fields.GetSingleFieldValue(fieldname))); Logger.Debug("Attribute:" + attribute); // TODO: XML encode the value attributesBuilder.Append(attribute); } } foreach (ItemField field in fields) { if (field is EmbeddedSchemaField) { attributesBuilder.Append(ProcessFields(((EmbeddedSchemaField)field).Value)); } } } Logger.Debug("attributes:" + attributesBuilder); return attributesBuilder.ToString(); }
private static NavigationConfig GetNavigationConfiguration(Component navConfigComponent) { NavigationConfig result = new NavigationConfig { NavType = NavigationType.Simple }; if (navConfigComponent.Metadata == null) { return result; } ItemFields navConfigComponentMetadataFields = new ItemFields(navConfigComponent.Metadata, navConfigComponent.MetadataSchema); Keyword type = navConfigComponentMetadataFields.GetKeywordValue("navigationType"); switch (type.Key.ToLower()) { case "localizable": result.NavType = NavigationType.Localizable; break; } string navTextFields = navConfigComponentMetadataFields.GetSingleFieldValue("navigationTextFieldPaths"); if (!string.IsNullOrEmpty(navTextFields)) { result.NavTextFieldPaths = navTextFields.Split(',').Select(s => s.Trim()).ToList(); } result.ExternalUrlTemplate = navConfigComponentMetadataFields.GetSingleFieldValue("externalLinkTemplate"); return result; }
private void ExtractDataAttributes(ItemFields fields, StringBuilder dataAttributesBuilder) { if (fields == null) { return; } foreach (string fieldname in _dataFieldNames.Where(fn => fields.Contains(fn))) { string dataAttribute = string.Format(" data-{0}=\"{1}\"", fieldname, System.Net.WebUtility.HtmlEncode(fields.GetSingleFieldValue(fieldname))); dataAttributesBuilder.Append(dataAttribute); } // Flatten embedded fields foreach (EmbeddedSchemaField embeddedSchemaField in fields.OfType <EmbeddedSchemaField>()) { ExtractDataAttributes(embeddedSchemaField.Value, dataAttributesBuilder); } }
protected Dictionary<string, string> ReadComponentData(Component comp) { Dictionary<string, string> settings = new Dictionary<string, string>(); if (comp.Content!=null) { ItemFields fields = new ItemFields(comp.Content, comp.Schema); IEnumerable<ItemFields> configFields = fields.GetEmbeddedFields("settings"); if (configFields.Any()) { //either schema is a generic multival embedded name/value foreach (ItemFields setting in configFields) { string key = setting.GetTextValue("name"); if (!String.IsNullOrEmpty(key) && !settings.ContainsKey(key)) { settings.Add(key, setting.GetTextValue("value")); } else { Logger.Warning(String.Format("Duplicate key found: '{0}' when processing component {1}", key, comp.Id)); } } } else { //... or its a custom schema with individual fields foreach (ItemField field in fields) { //TODO - do we need to be smarter about date/number type fields? string key = field.Name; settings.Add(key, fields.GetSingleFieldValue(key)); } } } return settings; }
protected Dictionary<string, string> ExtractKeyValuePairs(Component component) { Dictionary<string, string> keyValuePairs = new Dictionary<string, string>(); if (component.Content == null) { return keyValuePairs; } ItemFields configComponentFields = new ItemFields(component.Content, component.Schema); ItemFields[] settingsFieldValues = configComponentFields.GetEmbeddedFields("settings").ToArray(); if (settingsFieldValues.Any()) { //either schema is a generic multival embedded name/value foreach (ItemFields setting in settingsFieldValues) { string key = setting.GetTextValue("name"); if (!string.IsNullOrEmpty(key) && !keyValuePairs.ContainsKey(key)) { keyValuePairs.Add(key, setting.GetTextValue("value")); } else { Logger.Warning(string.Format("Empty or duplicate key found ('{0}') in Component '{1}' ({2})", key, component.Title, component.Id)); } } } else { //... or its a custom schema with individual fields foreach (ItemField field in configComponentFields) { string key = field.Name; keyValuePairs.Add(key, configComponentFields.GetSingleFieldValue(key)); } } return keyValuePairs; }