/// <summary> /// 增加单选择框 /// </summary> public void AddRadio(string title, string code, ListItemCollection items) { WebMeta v = new WebMeta(); v.GetDictionary()["DataSource"] = items; v["Title"] = title; v["Type"] = "RadioGroup"; v["Name"] = code; this.dataSrouce.Add(v); }
protected override void Initialization() { if (submit != null) { var send = submit.GetDictionary()["send"] as WebMeta; send.Put(UIDialog.KEY_DIALOG_ID, this.AsyncId); //submit._send != this.Config.Put("submit", submit); } this.Config.Put("DataSource", dataSrouce); }
void Redirect(string model, string cmd, WebMeta meta) { if (Verify(model, cmd) == false) { return; } this.InnerHeaders.Clear(); if (meta != null) { this.InnerHeaders["Arguments"] = meta.GetDictionary(); } this.ModelCommand(model, cmd, this.InnerHeaders); this.Send(); }
/// <summary> /// 增加字典对说明 /// </summary> /// <param name="items"></param> public WebMeta AddTextNameValue(string title, ListItemCollection items) { WebMeta v = new WebMeta(); if (String.IsNullOrEmpty(title) == false) { v["Title"] = title; } v.GetDictionary()["DataSource"] = items; v["Type"] = "TextNameValue"; this.dataSrouce.Add(v); return(v); }
public void AddCheckBox(string title, string code, ListItemCollection items, string defaultValue) { WebMeta v = new WebMeta(); v.GetDictionary()["DataSource"] = items; v["Title"] = title; if (String.IsNullOrEmpty(defaultValue) == false) { v["DefaultValue"] = defaultValue; } v["Type"] = "CheckboxGroup"; v["Name"] = code; this.dataSrouce.Add(v); }
public UIStyle Name(String key) { if (meta.ContainsKey(key)) { var obj = meta.GetDictionary()[key]; if (obj is UIStyle) { return((UIStyle)obj); } } var style = new UIStyle(); meta.Put(key, style); return(style); }
public override WebActivity GetFirstActivity() { var cmd = this.Context.Request.Command; if (this.cmds.Count > 0) { if (String.Equals("*", this.cmds[0])) { if (this.cmds.Exists(g => g == cmd)) { return(WebActivity.Empty); } } else if (this.cmds.Exists(g => g == cmd) == false) { return(WebActivity.Empty); } } else if (regex != null && regex.IsMatch(cmd) == false) { return(WebActivity.Empty); } StringBuilder sb = new StringBuilder(); WebRequest req = this.Context.Request; if (this.uri.AbsoluteUri.EndsWith("/*")) { sb.Append(this.uri.AbsoluteUri.Substring(0, this.uri.AbsoluteUri.Length - 1)); } else { sb.Append(this.uri.AbsoluteUri.TrimEnd('/')); sb.Append("/"); sb.Append(Data.Utility.GetRoot(req.Url)); sb.Append("/"); } sb.Append(Utility.Guid(AccessToken.Token.Value)); sb.Append("/"); if (req.Headers.ContainsKey(EventType.Dialog)) { WebMeta meta = req.Headers.GetMeta(EventType.Dialog); if (meta != null) { var em = meta.GetDictionary().GetEnumerator(); var isOne = true; while (em.MoveNext()) { if (isOne) { sb.Append("?"); isOne = false; } else { sb.Append("&"); } sb.Append(Uri.UnescapeDataString(em.Key.ToString())); sb.Append("="); sb.Append(Uri.UnescapeDataString(em.Value.ToString())); } } else { String dg = req.Headers.Get(EventType.Dialog); sb.Append("?"); sb.Append(Uri.UnescapeDataString(dg)); } } else { sb.Append(req.Model); sb.Append("/"); sb.Append(req.Command); sb.Append("/"); WebMeta meta = req.SendValues;// (); if (meta != null) { var em = meta.GetDictionary().GetEnumerator(); var isOne = true; while (em.MoveNext()) { if (isOne) { sb.Append("?"); isOne = false; } else { sb.Append("&"); } sb.Append(Uri.UnescapeDataString(em.Key.ToString())); sb.Append("="); sb.Append(Uri.UnescapeDataString(em.Value.ToString())); } } else { String dg = req.SendValue; if (String.IsNullOrEmpty(dg) == false) { sb.Append("?"); sb.Append(Uri.UnescapeDataString(dg));; // em.Key.ToString())); } } } var user = UMC.Security.Identity.Current; var http = new System.Net.Http.HttpClient(); if (http.DefaultRequestHeaders.UserAgent.TryParseAdd(req.UserAgent) == false) { http.DefaultRequestHeaders.UserAgent.ParseAdd(Uri.EscapeDataString(req.UserAgent)); } if (String.IsNullOrEmpty(this.appSecret) == false) { var nvs = new System.Collections.Specialized.NameValueCollection(); nvs.Add("umc-request-time", this.Context.runtime.Client.XHRTime.ToString()); nvs.Add("umc-request-user-id", Utility.Guid(user.Id.Value)); nvs.Add("umc-request-user-name", user.Name); nvs.Add("umc-request-user-alias", user.Alias); if (user.Roles != null && user.Roles.Length > 0) { nvs.Add("umc-request-user-role", String.Join(",", user.Roles)); } nvs.Add("umc-request-sign", Utility.Sign(nvs, this.appSecret)); for (var i = 0; i < nvs.Count; i++) { http.DefaultRequestHeaders.Add(nvs.GetKey(i), Uri.EscapeDataString(nvs.Get(i))); } } else { http.DefaultRequestHeaders.Add("umc-request-time", this.Context.runtime.Client.XHRTime.ToString()); } var ress = http.GetAsync(sb.ToString()).Result; int StatusCode = (int)ress.StatusCode; if (StatusCode > 300 && StatusCode < 400) { var url = ress.Headers.Location; if (url != null) { this.Context.Response.Redirect(url); } } String xhr = ress.Content.ReadAsStringAsync().Result;// http.GetStringAsync(sb.ToString()).Result; String eventPfx = "{\"ClientEvent\":"; if (xhr.StartsWith(eventPfx)) { int index = xhr.IndexOf(","); if (index > -1) { var webEvent = (WebEvent)(Utility.Parse(xhr.Substring(eventPfx.Length, index - eventPfx.Length), 0)); if ((webEvent & WebEvent.AsyncDialog) == WebEvent.AsyncDialog) { this.Context.Response.Redirect(new XHRer(xhr)); } else { var header = (JSON.Deserialize(xhr) as Hashtable)["Headers"] as Hashtable; if ((webEvent & WebEvent.Reset) == WebEvent.Reset) { if (header.ContainsKey("Reset")) { var reset = header["Reset"] as Hashtable; if (reset != null) { String Command = reset["Command"] as string; String Model = reset["Model"] as string; String Value = reset["Value"] as string; if (String.IsNullOrEmpty(Model) == false && String.IsNullOrEmpty(Command) == false) { if (String.IsNullOrEmpty(Value)) { this.Context.Response.Redirect(Model, Command); } else { this.Context.Response.Redirect(Model, Command, Value); } } } } } else if ((webEvent & WebEvent.DataEvent) == WebEvent.DataEvent) { var rtime = this.Context.runtime; if (rtime.Client.UIEvent != null) { if (header.ContainsKey("DataEvent")) { var dataEvents = new List <WebMeta>(); var dataEvent = header["DataEvent"];// as Hashtable; if (dataEvent is Hashtable) { dataEvents.Add(new WebMeta(dataEvent as Hashtable)); } else if (dataEvent is Array) { var des = dataEvent as Array; for (var i = 0; i < des.Length; i++) { var o = des.GetValue(i); if (o is Hashtable) { dataEvents.Add(new WebMeta(o as Hashtable)); } } } var value = dataEvents.Find(g => String.Equals("UI.Event", g["type"] as string) && String.Equals(g["key"] as string, "Click")); if (value != null && value.ContainsKey("value")) { var va = value.GetDictionary()["value"] as Hashtable; if (va.ContainsKey("Value") && va.ContainsKey("Text")) { dataEvents.Remove(value); value.Put("value", new ListItem(va["Text"] as string, va["Value"] as string)); if (dataEvents.Count > 0) { this.Context.Response.Headers.Set("DataEvent", dataEvents.ToArray()); } this.Context.Send(value, true); } } } } } this.Context.Response.Redirect(Data.JSON.Expression(xhr)); } } else { this.Context.Response.Redirect(Data.JSON.Expression(xhr)); } } else { this.Context.Response.Redirect(Data.JSON.Expression(xhr)); } return(WebActivity.Empty); }
public override WebActivity GetFirstActivity() { StringBuilder sb = new StringBuilder(); sb.Append(new Uri(this.uri, "/").AbsoluteUri); WebRequest req = this.Context.Request; sb.Append(Data.Utility.GetRoot(req.Url)); sb.Append("/"); sb.Append(AccessToken.Token); sb.Append("/"); if (req.Headers.ContainsKey(EventType.Dialog)) { WebMeta meta = req.Headers.GetMeta(EventType.Dialog); if (meta != null) { var em = meta.GetDictionary().GetEnumerator(); var isOne = true; while (em.MoveNext()) { if (isOne) { sb.Append("?"); isOne = false; } else { sb.Append("&"); } sb.Append(Uri.UnescapeDataString(em.Key.ToString())); sb.Append("="); sb.Append(Uri.UnescapeDataString(em.Value.ToString())); } } else { String dg = req.Headers.Get(EventType.Dialog); sb.Append("?"); sb.Append(Uri.UnescapeDataString(dg));; // em.Key.ToString())); } } else { sb.Append(req.Model); sb.Append("/"); sb.Append(req.Command); sb.Append("/"); WebMeta meta = req.SendValues;// (); if (meta != null) { var em = meta.GetDictionary().GetEnumerator(); var isOne = true; while (em.MoveNext()) { if (isOne) { sb.Append("?"); isOne = false; } else { sb.Append("&"); } sb.Append(Uri.UnescapeDataString(em.Key.ToString())); sb.Append("="); sb.Append(Uri.UnescapeDataString(em.Value.ToString())); } } else { String dg = req.SendValue; if (String.IsNullOrEmpty(dg) == false) { sb.Append("?"); sb.Append(Uri.UnescapeDataString(dg));; // em.Key.ToString())); } } } var http = new System.Net.Http.HttpClient(); http.DefaultRequestHeaders.Add("user-agent", req.UserAgent); String xhr = http.GetStringAsync(sb.ToString()).Result; String eventPfx = "{\"ClientEvent\":"; if (xhr.StartsWith(eventPfx)) { int index = xhr.IndexOf(","); if (index > -1) { var webEvent = (WebEvent)(Utility.Parse(xhr.Substring(eventPfx.Length, index - eventPfx.Length), 0)); if ((webEvent & WebEvent.AsyncDialog) == WebEvent.AsyncDialog) { this.Context.Response.Redirect(new XHRer(xhr)); } else { this.Context.Response.Redirect(Data.JSON.Expression(xhr)); } } else { this.Context.Response.Redirect(Data.JSON.Expression(xhr)); } } else { this.Context.Response.Redirect(Data.JSON.Expression(xhr)); } return(WebActivity.Empty); }
protected override void Initialization() { var context = WebContext.Current; var request = context.Request; var response = context.Response; if (String.IsNullOrEmpty(this.AsyncId) == false && request.Items.ContainsKey(this.AsyncId)) { WebMeta meta = request.SendValues; if (meta != null) { response.Redirect(this.GetData(meta.GetDictionary())); } else { var paramKey = request.Headers.GetDictionary()[EventType.Dialog] as Hashtable ?? new Hashtable(); response.Redirect(this.GetData(paramKey)); } } else { var p = GetHeader(); if (this.ValueField != null) { p["ValueField"] = this.ValueField; } if (IsPage) { WebMeta meta = request.SendValues; if (meta != null && meta.Count > 0) { response.Redirect(this.GetData(meta.GetDictionary())); } else if (request.Arguments.Count == 0) { Search(request.Model, request.Command, null, request.Model, request.Command, null); } else { var pa = new WebMeta(new Hashtable(request.Arguments.GetDictionary())); Search(request.Model, request.Command, pa, request.Model, request.Command, pa); if (this.ValueField == null) { p["send"] = this.AsyncId; } } } if (String.IsNullOrEmpty(this.AsyncId) == false) { request.Items[this.AsyncId] = "Header"; } p["title"] = this.Title; if (IsAsyncData) { this.Config.Set("Data", this.GetData(new Hashtable())); } else if (this.IsSearch) { p["search"] = this.Keyword ?? "搜索"; } if (this.IsReturnValue) { p["type"] = "dialog"; } else { p["type"] = "grid"; } if (this.AutoSearch) { p["auto"] = "true"; } this.Config.Set("Header", p); } base.Initialization(); }
public WebMeta Builder(params UIDataSource[] dataSources) { return(new UMC.Web.WebMeta(_data.GetDictionary()).Put("type", "DataSource").Put("DataSource", dataSources).Put("title", this.Title));//.Put("model"); }
public WebMeta Builder() { return(new UMC.Web.WebMeta(_data.GetDictionary()).Put("type", "Pager"));//.Put("DataSource", dataSources).Put("title", this.Title);//.Put("model"); }
/// <summary> /// 设置子key头信息 /// </summary> /// <param name="key">key</param> /// <param name="meta">头元信息</param> public void Set(string key, WebMeta meta) { _Dictionary[key] = meta.GetDictionary(); }
/// <summary> /// 复制meta /// </summary> /// <param name="meta"></param> public WebMeta(WebMeta meta) { this._Dictionary = new Hashtable(meta.GetDictionary()); }
/// <summary> /// 向发送客户端发送数据事情 /// </summary> /// <param name="data">发送的数据</param> /// <param name="endResponse"></param> public void Send(WebMeta data, bool endResponse) { WebResponse response = this.Response; if (data.ContainsKey("type") && data["type"] == "UI.Event") { if (runtime.Client.UIEvent != null) { var click = runtime.Client.UIEvent; var key = data["key"]; if (String.Equals(key, "Click") && data.GetDictionary()["value"] is ListItem) { runtime.Client.UIEvent = null; runtime.Client.Session.Storage(new Hashtable(), this); var value = data.GetDictionary()["value"] as ListItem; var objValue = click.Send(); if (objValue is Hashtable) { var val = objValue as Hashtable; var em = val.GetEnumerator(); while (em.MoveNext()) { if (String.Equals(em.Value, "Value")) { val[em.Key] = value.Value; val[String.Format("{0}_Text", em.Key)] = value.Text; //val.Put(em.Key as string, value.Value); break; } } response.Redirect(click.Model, click.Command, new WebMeta(val), false); } else if (objValue is WebMeta) { var val = objValue as WebMeta; var em = val.GetDictionary().GetEnumerator(); while (em.MoveNext()) { if (String.Equals(em.Value, "Value")) { val.Put(em.Key as string, value.Value); val[String.Format("{0}_Text", em.Key)] = value.Text; break; } } response.Redirect(click.Model, click.Command, val, false); } else { response.Redirect(click.Model, click.Command, value.Value, false); } } } } response.ClientEvent |= WebEvent.DataEvent; if (response.Headers.ContainsKey("DataEvent")) { var ts = response.Headers.GetDictionary()["DataEvent"]; if (ts is WebMeta) { response.Headers.Set("DataEvent", (WebMeta)ts, data); } else if (ts is IDictionary) { response.Headers.Set("DataEvent", new WebMeta((IDictionary)ts), data); } else if (ts is Array) { var ats = new System.Collections.ArrayList(); ats.AddRange((Array)ts); ats.Add(data); response.Headers.Set("DataEvent", (WebMeta[])ats.ToArray(typeof(WebMeta))); } else { response.Headers.Set("DataEvent", data); } } else { response.Headers.Set("DataEvent", data); } if (endResponse) { response.ClientEvent ^= response.ClientEvent & WebEvent.Normal; this.End(); } }