protected void btnSave_Click(object sender, EventArgs e) { Widget w = (from aw in cmsHelper.cmsAdminWidget where aw.Root_WidgetID == guidWidget orderby aw.WidgetOrder, aw.EditDate select aw).FirstOrDefault(); var props = new List<WidgetProps>(); foreach (RepeaterItem r in rpProps.Items) { HiddenField hdnName = (HiddenField)r.FindControl("hdnName"); TextBox txtValue = (TextBox)r.FindControl("txtValue"); DropDownList ddlValue = (DropDownList)r.FindControl("ddlValue"); CheckBox chkValue = (CheckBox)r.FindControl("chkValue"); CheckBoxList chkValues = (CheckBoxList)r.FindControl("chkValues"); var p = new WidgetProps(); p.KeyName = hdnName.Value; if (ddlValue.Visible) { // drop down list detected, save the selected item p.KeyValue = ddlValue.SelectedValue; } else if (chkValue.Visible) { //boolean detected p.KeyValue = chkValue.Checked.ToString(); } else if (chkValues.Visible) { //multiple selections are possible, since dictionary is used, insure key is unique by appending the ordinal with a | delimeter. p = null; int CheckedPosition = 0; foreach (ListItem v in chkValues.Items) { if (v.Selected) { var pp = new WidgetProps(); pp.KeyName = hdnName.Value + "|" + CheckedPosition.ToString(); pp.KeyValue = v.Value.ToString(); props.Add(pp); CheckedPosition++; } } } else { //default, free text field p.KeyValue = txtValue.Text; } if (p != null) { props.Add(p); } } w.SaveDefaultControlProperties(props); w.EditDate = SiteData.CurrentSite.Now; List<Widget> lstPageWidgets = cmsHelper.cmsAdminWidget; lstPageWidgets.RemoveAll(x => x.Root_WidgetID == guidWidget); lstPageWidgets.Add(w); cmsHelper.cmsAdminWidget = lstPageWidgets; Master.ShowSave(); }
public ActionResult ControlPropertiesEdit(WidgetProperties model) { cmsHelper.OverrideKey(model.Widget.Root_ContentID); Widget w = (from aw in cmsHelper.cmsAdminWidget where aw.Root_WidgetID == model.Widget.Root_WidgetID orderby aw.WidgetOrder, aw.EditDate select aw).FirstOrDefault(); var props = new List<WidgetProps>(); foreach (var itm in model.Properties) { var p = new WidgetProps(); p.KeyName = itm.Name; switch (itm.FieldMode) { case WidgetAttribute.FieldMode.CheckBoxList: //multiple selections are possible, since dictionary is used, insure key is unique by appending the ordinal with a | delimeter. p = null; int checkedPosition = 0; foreach (var v in itm.Options) { if (v.Selected) { var pp = new WidgetProps(); pp.KeyName = String.Format("{0}|{1}", itm.Name, checkedPosition); pp.KeyValue = v.Key.ToString(); props.Add(pp); checkedPosition++; } } break; case WidgetAttribute.FieldMode.DropDownList: case WidgetAttribute.FieldMode.TextBox: case WidgetAttribute.FieldMode.MultiLineTextBox: case WidgetAttribute.FieldMode.RichHTMLTextBox: p.KeyValue = itm.TextValue; break; case WidgetAttribute.FieldMode.CheckBox: p.KeyValue = itm.CheckBoxState.ToString(); break; default: break; } if (p != null) { props.Add(p); } } w.SaveDefaultControlProperties(props); w.EditDate = SiteData.CurrentSite.Now; List<Widget> lstPageWidgets = cmsHelper.cmsAdminWidget; lstPageWidgets.RemoveAll(x => x.Root_WidgetID == w.Root_WidgetID); lstPageWidgets.Add(w); cmsHelper.cmsAdminWidget = lstPageWidgets; SetSaved(); return RedirectToAction("ControlPropertiesEdit", new { @id = w.Root_WidgetID, @pageid = w.Root_ContentID }); }