public virtual IActionResult ValueEditPopup(int id) { if (!_permissionService.Authorize(StandardPermissionProvider.ManageSettings)) { return(AccessDeniedView()); } //try to get a user attribute value with the specified id var userAttributeValue = _userAttributeService.GetUserAttributeValueById(id); if (userAttributeValue == null) { return(RedirectToAction("List")); } //try to get a user attribute with the specified id var userAttribute = _userAttributeService.GetUserAttributeById(userAttributeValue.UserAttributeId); if (userAttribute == null) { return(RedirectToAction("List")); } //prepare model var model = _userAttributeModelFactory.PrepareUserAttributeValueModel(null, userAttribute, userAttributeValue); return(View(model)); }
/// <summary> /// Get user attribute values /// </summary> /// <param name="attributesXml">Attributes in XML format</param> /// <returns>User attribute values</returns> public virtual IList <UserAttributeValue> ParseUserAttributeValues(string attributesXml) { var values = new List <UserAttributeValue>(); var attributes = ParseUserAttributes(attributesXml); foreach (var attribute in attributes) { if (!attribute.ShouldHaveValues()) { continue; } var valuesStr = ParseValues(attributesXml, attribute.Id); foreach (string valueStr in valuesStr) { if (!String.IsNullOrEmpty(valueStr)) { int id; if (int.TryParse(valueStr, out id)) { var value = _userAttributeService.GetUserAttributeValueById(id); if (value != null) { values.Add(value); } } } } } return(values); }
/// <summary> /// Formats attributes /// </summary> /// <param name="attributesXml">Attributes in XML format</param> /// <param name="separator">Separator</param> /// <param name="htmlEncode">A value indicating whether to encode (HTML) values</param> /// <returns>Attributes</returns> public virtual string FormatAttributes(string attributesXml, string separator = "<br />", bool htmlEncode = true) { var result = new StringBuilder(); var attributes = _userAttributeParser.ParseUserAttributes(attributesXml); for (var i = 0; i < attributes.Count; i++) { var attribute = attributes[i]; var valuesStr = _userAttributeParser.ParseValues(attributesXml, attribute.Id); for (var j = 0; j < valuesStr.Count; j++) { var valueStr = valuesStr[j]; var formattedAttribute = string.Empty; if (!attribute.ShouldHaveValues()) { //other attributes (textbox, datepicker) formattedAttribute = $"{_localizationService.GetLocalized(attribute, a => a.Name, _workContext.WorkingLanguage.Id)}: {valueStr}"; //encode (if required) if (htmlEncode) { formattedAttribute = WebUtility.HtmlEncode(formattedAttribute); } } else { if (int.TryParse(valueStr, out var attributeValueId)) { var attributeValue = _userAttributeService.GetUserAttributeValueById(attributeValueId); if (attributeValue != null) { formattedAttribute = $"{_localizationService.GetLocalized(attribute, a => a.Name, _workContext.WorkingLanguage.Id)}: {_localizationService.GetLocalized(attributeValue, a => a.Name, _workContext.WorkingLanguage.Id)}"; } //encode (if required) if (htmlEncode) { formattedAttribute = WebUtility.HtmlEncode(formattedAttribute); } } } if (string.IsNullOrEmpty(formattedAttribute)) { continue; } if (i != 0 || j != 0) { result.Append(separator); } result.Append(formattedAttribute); } } return(result.ToString()); }
/// <summary> /// Formats attributes /// </summary> /// <param name="attributesXml">Attributes in XML format</param> /// <param name="serapator">Serapator</param> /// <param name="htmlEncode">A value indicating whether to encode (HTML) values</param> /// <returns>Attributes</returns> public virtual string FormatAttributes(string attributesXml, string serapator = "<br />", bool htmlEncode = true) { var result = new StringBuilder(); var attributes = _UserAttributeParser.ParseUserAttributes(attributesXml); for (int i = 0; i < attributes.Count; i++) { var attribute = attributes[i]; var valuesStr = _UserAttributeParser.ParseValues(attributesXml, attribute.Id); for (int j = 0; j < valuesStr.Count; j++) { string valueStr = valuesStr[j]; string formattedAttribute = ""; if (!attribute.ShouldHaveValues()) { //no values if (attribute.AttributeControlType == AttributeControlType.MultilineTextbox) { //multiline textbox var attributeName = attribute.GetLocalized(a => a.Name, _workContext.WorkingLanguage.Id); //encode (if required) if (htmlEncode) { attributeName = HttpUtility.HtmlEncode(attributeName); } formattedAttribute = string.Format("{0}: {1}", attributeName, HtmlHelper.FormatText(valueStr, false, true, false, false, false, false)); //we never encode multiline textbox input } else if (attribute.AttributeControlType == AttributeControlType.FileUpload) { //file upload //not supported for User attributes } else { //other attributes (textbox, datepicker) formattedAttribute = string.Format("{0}: {1}", attribute.GetLocalized(a => a.Name, _workContext.WorkingLanguage.Id), valueStr); //encode (if required) if (htmlEncode) { formattedAttribute = HttpUtility.HtmlEncode(formattedAttribute); } } } else { int attributeValueId; if (int.TryParse(valueStr, out attributeValueId)) { var attributeValue = _UserAttributeService.GetUserAttributeValueById(attributeValueId); if (attributeValue != null) { formattedAttribute = string.Format("{0}: {1}", attribute.GetLocalized(a => a.Name, _workContext.WorkingLanguage.Id), attributeValue.GetLocalized(a => a.Name, _workContext.WorkingLanguage.Id)); } //encode (if required) if (htmlEncode) { formattedAttribute = HttpUtility.HtmlEncode(formattedAttribute); } } } if (!String.IsNullOrEmpty(formattedAttribute)) { if (i != 0 || j != 0) { result.Append(serapator); } result.Append(formattedAttribute); } } } return(result.ToString()); }