public static JSONObject HandleChange(JSONArray request) { var provider = new LinqIt.UmbracoCustomFieldTypes.UmbracoTreeModuleProvider(HttpContext.Current.Request.QueryString["itemId"]); var placeholderData = provider.GetPlaceholderData(); var layout = provider.GetLayout().Rows.SelectMany(r => r.Cells).ToArray(); var result = layout.ToDictionary(cell => cell.Key, cell => new GridPlaceholderData(cell.Key, cell.ColumnSpan)); var response = new JSONObject(); var messages = new JSONArray(); response.AddValue("messages", messages); foreach (JSONObject replacement in request.Values) { var from = (string) replacement["from"]; var id = (string) replacement["id"]; var to = (string) replacement["to"]; var message = new JSONObject(); message.AddValue("ph", from); message.AddValue("id", id); if (string.IsNullOrEmpty(to)) { message.AddValue("type", "alert"); message.AddValue("text", _removedMessage); } else { var oldItem = placeholderData[from].Items.Where(i => i.Id == id).FirstOrDefault(); var newItem = provider.GetItem(id); newItem.ColumnSpan = oldItem.ColumnSpan; var cell = result[to]; if (cell.Items.Where(i => i.Id == newItem.Id).Any()) { message.AddValue("type", "alert"); message.AddValue("text", _duplicateMessage); } else { if (cell.Span < newItem.ColumnSpan) { newItem.ColumnSpan = provider.GetItemColumnOptions(id).Where(o => o <= cell.Span).Max(); message.AddValue("type", "info"); message.AddValue("text", string.Format(_resizedMessage, newItem.ColumnSpan)); } else { message.AddValue("type", "ok"); } cell.AddItem(newItem); } } messages.AddValue(message); } response.AddValue("hiddenId", HttpContext.Current.Request.QueryString["hiddenId"]); var values = new JSONArray(); values.AddRange(result.Values.Select(v => v.ToJSON()).ToArray()); response.AddValue("value", values.ToString()); return response; }
public override string ToString() { var result = new JSONObject(); if (!string.IsNullOrEmpty(Query)) result.AddValue("q", Query); if (!string.IsNullOrEmpty(TemplateName)) result.AddValue("t", TemplateName); if (From.HasValue) result.AddValue("df", From.Value); if (To.HasValue) result.AddValue("dt", To.Value); if (CategorizationIds != null && CategorizationIds.Any()) { var cids = new JSONArray(); cids.AddRange(CategorizationIds.Select(id => id.IntValue)); result.AddValue("cids", cids); } return result.ToString(); }