public override void ProcessActivity(UMC.Web.WebRequest request, UMC.Web.WebResponse response)
        {
            var key = this.AsyncDialog("Key", g => this.DialogValue("Promotion"));



            var UserId = Utility.Parse(this.AsyncDialog("Icon", g =>
            {
                var form = request.SendValues ?? new UMC.Web.WebMeta();
                if (form.ContainsKey("limit") == false)
                {
                    this.Context.Send(new UISectionBuilder(request.Model, request.Command, new WebMeta(request.Arguments.GetDictionary()))
                                      .CloseEvent("UI.Event")
                                      .Builder(), true);
                }
                var uTitle  = new UITitle("选择图标");
                var ui      = UISection.Create(new UIHeader().Search("搜索"), uTitle);
                var Keyword = (form["Keyword"] as string ?? String.Empty);
                //var icons = new List<UIEventText>();

                //Array es = System.Enum.GetValues(typeof(UIIcon));
                UI.UIIcon icon = new UI.UIIcon();
                for (int i = 0; i < iconNames.Length; i++)
                {
                    var v    = iconNames[i];
                    var name = v.ToString().Substring(3);
                    if (String.IsNullOrEmpty(Keyword) == false)
                    {
                        if (name.IndexOf(Keyword, StringComparison.CurrentCultureIgnoreCase) == -1)
                        {
                            continue;
                        }
                    }
                    icon.Add(new UIEventText(name).Icon(ICONS[i][0], 0x111).Click(new UIClick(new WebMeta(request.Arguments).Put(g, i)).Send(request.Model, request.Command)));
                    if (icon.Count == 4)
                    {
                        ui.Add(icon);
                        icon = new UI.UIIcon();
                    }
                }


                if (icon.Count > 0)
                {
                    ui.Add(icon);
                }
                if (ui.Length == 0)
                {
                    ui.Add("Desc", new UMC.Web.WebMeta().Put("desc", "未搜索到图标").Put("icon", "\uEA05")
                           , new UMC.Web.WebMeta().Put("desc", "{icon}\n{desc}"), new UIStyle().Align(1).Color(0xaaa).Padding(20, 20).BgColor(0xfff).Size(12).Name("icon", new UIStyle().Font("wdk").Size(60)));//.Name
                }
                response.Redirect(ui);
                return(this.DialogValue("none"));
            }), 0);

            var item = new ListItem(iconNames[UserId], ICONS[UserId]);

            this.Context.Send(new UMC.Web.WebMeta().UIEvent(key, item), true);
        }
        public override void ProcessActivity(UMC.Web.WebRequest request, UMC.Web.WebResponse response)
        {
            var media_id = this.AsyncDialog("Key", g =>
            {
                this.Prompt("请输入Key");
                return(new UMC.Web.UITextDialog());
            });


            var    root  = Utility.GetRoot(request.Url);
            string path2 = UMC.Data.Utility.MapPath(String.Format("App_Data\\Static\\TEMP\\{0}\\", root));

            var file = String.Format("{0}{1}.csv", path2, media_id);

            if (System.IO.File.Exists(file) == false)
            {
                this.Prompt("不存在此日志");
            }
            else
            {
                var form = request.SendValues ?? new UMC.Web.WebMeta();
                if (form.ContainsKey("limit") == false)
                {
                    this.Context.Send(new UISectionBuilder(request.Model, request.Command, new WebMeta().Put("Key", media_id))
                                      .Builder(), true);
                }
            }


            var ui = UISection.Create(new UITitle("执行日志"));

            using (System.IO.StreamReader reader = new System.IO.StreamReader(file))
            {
                bool IsEnd = false;
                CSV.EachRow(reader, rows =>
                {
                    var ro = new List <String>(rows);
                    ro.RemoveAt(0);
                    var cell = UMC.Web.UI.UICMS.Create("CMSText", new WebMeta().Put("text", String.Join(" ", ro.ToArray())));
                    cell.Style.Size(12);
                    ui.Add(cell);
                    if (rows.Length > 0)
                    {
                        if (String.Equals(rows[0], "END", StringComparison.CurrentCultureIgnoreCase))
                        {
                            IsEnd = true;
                        }
                    }
                });
                if (IsEnd == false)
                {
                    ui.Add(UMC.Web.UI.UICMS.Create("UIRefreshing", new WebMeta().Put("time", 10)));
                }
            }
            response.Redirect(ui);
        }
        public override void ProcessActivity(UMC.Web.WebRequest request, UMC.Web.WebResponse response)
        {
            if (request.IsMaster == false)
            {
                this.Prompt("只有管理员才能配置");
            }

            var configKey = this.AsyncDialog("Key", g =>
            {
                var form = request.SendValues ?? new UMC.Web.WebMeta();
                if (form.ContainsKey("limit") == false)
                {
                    this.Context.Send(new UISectionBuilder(request.Model, request.Command, new WebMeta(request.Arguments.GetDictionary()))
                                      .RefreshEvent("ProviderConfiguration")
                                      .Builder(), true);
                }
                var key = this.AsyncDialog("Type", "FILES");

                var ui = UISection.Create(new UITitle("配置文件"));
                if (key == "FILES")
                {
                    var files = System.IO.Directory.GetFiles(Data.Reflection.ConfigPath(""), "*.xml");
                    foreach (var f in files)
                    {
                        var name = f.Substring(f.LastIndexOf(System.IO.Path.DirectorySeparatorChar) + 1);
                        name     = name.Substring(0, name.IndexOf('.'));
                        var d    = "";

                        ui.Title.Right(new UIEventText("新建").Click(new UIClick("Key", "NEW").Send(request.Model, request.Command)));

                        switch (name.ToLower())
                        {
                        case "assembly":
                            d = "处理类配置";
                            break;

                        case "database":
                            d = "数据库配置";
                            break;

                        case "umc":
                            d = "云模块配置";
                            break;

                        case "parser":
                            d = "转码配置";
                            break;

                        case "payment":
                            d = "支付配置";
                            break;
                        }
                        ui.AddCell(name, d, UIClick.Query(new WebMeta("Type", name)));
                    }
                }
                else
                {
                    var keys = key.Split('$');
                    var cfg  = UMC.Configuration.ProviderConfiguration.GetProvider(Reflection.ConfigPath(keys[0] + ".xml"));//, "*.xml");

                    //ui.AddCell("")
                    if (keys.Length == 1)
                    {
                        ui.Title.Right(new UIEventText("新建").Click(new UIClick("Key", keys[0] + "$NEW").Send(request.Model, request.Command)));
                        ui.AddCell('\uf112', "上一层", keys[0], UIClick.Query(new WebMeta("Type", "FILES")));
                        var ui2 = ui.NewSection();
                        for (var i = 0; i < cfg.Count; i++)
                        {
                            var p = cfg[i];
                            ui2.AddCell(p.Name, "", UIClick.Query(new WebMeta("Type", String.Format("{0}${1}", keys[0], p.Name))));
                        }
                    }
                    else
                    {
                        var p = cfg[keys[1]];
                        ui.Title.Right(new UIEventText("新建").Click(new UIClick("Key", keys[0] + "$" + p.Name + "$NEW").Send(request.Model, request.Command)));
                        ui.AddCell('\uf112', "上一层", p.Name, UIClick.Query(new WebMeta("Type", keys[0])));
                        ui.AddCell("类型类型", p.Type);
                        var ui2 = ui.NewSection();
                        for (var i = 0; i < p.Attributes.Count; i++)
                        {
                            ui2.AddCell(p.Attributes.GetKey(i), new UIClick(g, String.Format("{0}${1}${2}", keys[0], p.Name, p.Attributes.GetKey(i))).Send(request.Model, request.Command));
                        }
                    }
                }

                response.Redirect(ui);
                return(this.DialogValue("none"));
            });

            switch (configKey)
            {
            case "NEW":
                var fName = this.AsyncDialog("Setting", g =>
                {
                    var fm   = new UIFormDialog();
                    fm.Title = "新建文件配置";
                    fm.AddText("新建文件名", "Name", String.Empty);
                    fm.Submit("确认", request, "ProviderConfiguration");
                    return(fm);
                });
                var pf = Reflection.ConfigPath(fName["Name"] + ".xml");
                if (System.IO.File.Exists(pf) == false)
                {
                    new UMC.Configuration.ProviderConfiguration().WriteTo(pf);
                    this.Context.Send("ProviderConfiguration", true);
                }
                else
                {
                    this.Prompt("此文件已经存在");
                }
                break;

            default:
                var ckeys = configKey.Split('$');
                var cfg   = UMC.Configuration.ProviderConfiguration.GetProvider(Reflection.ConfigPath(ckeys[0] + ".xml"));

                if (ckeys.Length == 3)
                {
                    var pro = cfg[ckeys[1]];
                    var ps  = this.AsyncDialog("Setting", g =>
                    {
                        var fm   = new UIFormDialog();
                        fm.Title = ckeys[1] + "配置";

                        if (ckeys[2] == "NEW")
                        {
                            fm.AddText("新建属性名", "Name", String.Empty);
                            fm.AddText("新建属性值", "Value", String.Empty);
                        }
                        else
                        {
                            fm.AddTextValue().Add("属性名", ckeys[2]);
                            fm.AddText("属性值", "Value", pro[ckeys[2]]);
                        }
                        fm.Submit("确认", request, "ProviderConfiguration");
                        return(fm);
                    });
                    var value = ps["Value"];
                    if (value == "none")
                    {
                        pro.Attributes.Remove(ckeys[2]);
                    }
                    else
                    {
                        pro.Attributes[ps["Name"] ?? ckeys[2]] = ps["Value"];
                    }
                    cfg.WriteTo(Reflection.ConfigPath(ckeys[0] + ".xml"));
                    this.Context.Send("ProviderConfiguration", true);
                }
                else if (ckeys.Length == 2)
                {
                    var pro = cfg[ckeys[1]] ?? Provider.Create("", "");
                    var ps  = this.AsyncDialog("Setting", g =>
                    {
                        var fm   = new UIFormDialog();
                        fm.Title = ckeys[0] + "节点";

                        if (ckeys[1] == "NEW")
                        {
                            fm.AddText("节点名", "Name", String.Empty);
                            fm.AddText("类型值", "Value", String.Empty);
                        }
                        else
                        {
                            fm.AddText("节点名", "Name", pro.Name);
                            fm.AddText("类型值", "Value", pro.Type);
                        }
                        fm.Submit("确认", request, "ProviderConfiguration");
                        return(fm);
                    });

                    var pro2 = Provider.Create(ps["Name"], ps["Value"]);
                    pro2.Attributes.Add(pro.Attributes);
                    cfg.Providers[pro2.Name] = pro2;
                    cfg.WriteTo(Reflection.ConfigPath(ckeys[0] + ".xml"));
                    this.Context.Send("ProviderConfiguration", true);
                }
                break;
            }
        }
Beispiel #4
0
        /// <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();
            }
        }