コード例 #1
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var strUser = this.AsyncDialog("Id", d =>
            {
                var dlg          = new RoleDialog();
                dlg.Title        = "角色管理";
                dlg.IsPage       = true;
                dlg.RefreshEvent = "Role";
                if (request.IsMaster)
                {
                    dlg.Menu("新建", "Settings", "User", new UMC.Web.WebMeta().Put("Id", "News"));
                }
                return(dlg);
            });

            if (request.IsMaster == false)
            {
                this.Prompt("只有管理员才能管理账户角色");
            }

            var userId = UMC.Data.Utility.Guid(strUser) ?? Guid.Empty;

            var userEntity = UMC.Data.Database.Instance().ObjectEntity <UMC.Data.Entities.Role>();
            var user       = userEntity.Where.And().Equal(new UMC.Data.Entities.Role
            {
                Id = userId
            }).Entities.Single() ?? new UMC.Data.Entities.Role();

            var setting = this.AsyncDialog("Setting", d =>
            {
                var frm   = new UIFormDialog();
                frm.Title = "用户角色";
                frm.AddText("角色名", "Rolename", user.Rolename);
                frm.AddTextarea("角色说明", "Explain", user.Explain).Put("tip", "角色说明");

                return(frm);
            });

            if (user.Id.HasValue)
            {
                userEntity.Update(new UMC.Data.Entities.Role
                {
                    Rolename = setting["Rolename"],
                    Explain  = setting["Explain"]
                });
            }
            else
            {
                userEntity.Insert(new UMC.Data.Entities.Role
                {
                    Id       = Guid.NewGuid(),
                    Rolename = setting["Rolename"],
                    Explain  = setting["Explain"]
                });
            }


            this.Context.Send(new UMC.Web.WebMeta().Put("type", "Role"), true);
        }
コード例 #2
0
        void Design(WebRequest request, Guid itemId)
        {
            var entity = Database.Instance().ObjectEntity <Design_Item>();

            entity.Where.And().Equal(new Design_Item {
                Id = itemId
            });


            Design_Item item = entity.Single();

            if (item == null)
            {
                Design_Item max = entity
                                  .Where.Reset().And().Equal(new Design_Item()
                {
                    design_id = Guid.Empty, for_id = Guid.Empty
                })                                                                                                   //Design_id(Utility.uuidEmpty).For_id(Utility.uuidEmpty))
                                  .Entities.Max(new Design_Item {
                    Seq = 0
                });
                max.Seq = (max.Seq ?? 0) + 1;
                item    = max;
            }
            Design_Item fitem = item;
            WebMeta     meta  = this.AsyncDialog(g =>
            {
                UIFormDialog from = new UIFormDialog();
                from.Title        = ("页面分类项");

                from.AddText("标题", "ItemName", fitem.ItemName);

                from.AddNumber("顺序", "Seq", fitem.Seq);

                from.Submit("确认", request, "Design");
                return(from);
            }, "Setting");
            Design_Item newItem = new Design_Item()
            {
                ItemName = meta.Get("ItemName"), ModifiedDate = DateTime.Now, Seq = Utility.Parse(meta.Get("Seq"), 0)
            };

            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = itemId
            });
            entity.IFF(e => e.Update(newItem) == 0, e =>
            {
                newItem.design_id = Guid.Empty;
                newItem.for_id    = Guid.Empty;
                newItem.Id        = Guid.NewGuid();
                newItem.Type      = UIDesigner.StoreDesignType;
                e.Insert(newItem);
            });
            this.Context.Send("Design", true);
        }
コード例 #3
0
        void Seq(WebRequest request, WebResponse response, Design_Item item)
        {
            var entity = Database.Instance().ObjectEntity <Design_Item>();

            entity.Where.And().Equal(new Design_Item()
            {
                Id = (item.Id)
            });

            WebMeta meta = this.AsyncDialog(g =>
            {
                UIFormDialog from = new UIFormDialog();
                from.Title        = ("调整顺序");

                from.AddNumber("展示顺序", "Seq", item.Seq);
                return(from);
            }, "Setting");


            entity.Update(new Design_Item()
            {
                ModifiedDate = DateTime.Now, Seq = Utility.IntParse(meta.Get("Seq"), 0)
            });
        }
コード例 #4
0
        void Icons(WebRequest request, Guid itemId)
        {
            var entity = Database.Instance().ObjectEntity <Design_Item>();

            entity.Where.And().Equal(new Design_Item()
            {
                Id = itemId
            });
            Design_Item item = entity.Single();

            var webr = UMC.Data.WebResource.Instance();

            WebMeta meta = this.AsyncDialog(g =>
            {
                Design_Item finalItem = item;
                switch (item.Type ?? 0)
                {
                case UIDesigner.StoreDesignTypeItem:
                    break;

                case UIDesigner.StoreDesignTypeIcons:
                    Design_Item item2 = new Design_Item()
                    {
                        Id           = Guid.NewGuid(),
                        design_id    = item.design_id,
                        for_id       = item.Id,
                        ModifiedDate = DateTime.Now,
                        Type         = UIDesigner.StoreDesignTypeItem
                    };

                    Design_Item max = entity
                                      .Where.And().Equal(new Design_Item()
                    {
                        design_id = item.design_id, for_id = item.Id
                    })
                                      .Entities.Max(new Design_Item()
                    {
                        Seq = 0
                    });                                            //.Seq+1;
                    item2.Seq = (max.Seq ?? 0) + 1;

                    entity.Insert(item2);



                    finalItem = item2;
                    request.Arguments.Put("Id", finalItem.Id);
                    break;

                default:
                    this.Prompt("类型错误");
                    break;
                }


                UIFormDialog from = new UIFormDialog();
                from.Title        = ("图标");

                from.AddFile("图片", "_Image", webr.ImageResolve(finalItem.Id.Value, "1", 4))
                .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", finalItem.Id).Put("seq", "1"));
                from.AddText("标题", "ItemName", finalItem.ItemName);

                from.AddNumber("顺序", "Seq", finalItem.Seq);

                from.Submit("确认", request, "Design");
                return(from);
            }, "Setting");


            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = item.Id
            });
            entity.Update(new Design_Item()
            {
                ItemName = meta.Get("ItemName"), ModifiedDate = DateTime.Now, Seq = Utility.IntParse(meta.Get("Seq"), 0)
            });
        }
コード例 #5
0
        void Banner(WebRequest request, Guid itemId)
        {
            UMC.Data.WebResource webr = UMC.Data.WebResource.Instance();

            var entity = Database.Instance().ObjectEntity <Design_Item>();

            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = itemId
            });

            Design_Item item = entity.Single();

            WebMeta meta = this.AsyncDialog(g =>
            {
                switch (item.Type ?? 0)
                {
                case UIDesigner.StoreDesignTypeItem:
                    break;

                case UIDesigner.StoreDesignTypeBanners:

                    Design_Item item2 = new Design_Item()
                    {
                        Id           = Guid.NewGuid(),
                        design_id    = item.design_id,
                        for_id       = item.Id,
                        ModifiedDate = DateTime.Now,
                        Type         = UIDesigner.StoreDesignTypeItem
                    };

                    Design_Item max = entity
                                      .Where.And().Equal(new Design_Item()
                    {
                        design_id = item.design_id, for_id = item.Id
                    })
                                      .Entities.Max(new Design_Item()
                    {
                        Seq = 0
                    });                                                    //.Seq+1;
                    item2.Seq = (max.Seq ?? 0) + 1;

                    entity.Insert(item2);



                    item = item2;
                    request.Arguments.Put("Id", item.Id);

                    break;

                default:
                    this.Prompt("类型错误");
                    break;
                }


                var from = new UIFormDialog()
                {
                    Title = "展示图片"
                };
                var size = request.Arguments["Size"];
                if (size == "none")
                {
                    size = "默认尺寸100:55";
                }
                else
                {
                    size = String.Format("参考尺寸:{0}", size);
                }
                from.AddFile(size, "_Image", webr.ResolveUrl(String.Format("{0}{1}/1/0.jpg!100", UMC.Data.WebResource.ImageResource, item.Id)))
                .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", item.Id).Put("seq", "1"));

                from.AddNumber("展示顺序", "Seq", item.Seq);
                from.Submit("确认", request, "Design");
                return(from);
            }, "Setting");


            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = item.Id
            });
            entity.Update(new Design_Item {
                Data = UMC.Data.JSON.Serialize(meta), ModifiedDate = DateTime.Now
            });
        }
コード例 #6
0
        void Config(WebRequest request, Guid itemId)
        {
            UMC.Data.WebResource webr = UMC.Data.WebResource.Instance();

            var entity = Database.Instance().ObjectEntity <Design_Item>();

            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = itemId
            });

            Design_Item item = entity.Single();

            switch (item.Type ?? 0)
            {
            case UIDesigner.StoreDesignTypeItem:
            case UIDesigner.StoreDesignTypeProduct:
                item = entity.Where.Reset().And().Equal(new Design_Item()
                {
                    Id = item.for_id
                }).Entities.Single();
                break;
            }
            Design_Item finalItem = item;
            WebMeta     meta      = this.AsyncDialog(g =>
            {
                WebMeta data = UMC.Data.JSON.Deserialize <WebMeta>(finalItem.Data) ?? new UMC.Web.WebMeta();
                //WebMeta data = Utility.isNull(UMC.Data.JSON.deserialize(finalItem.Data, WebMeta.class), new UMC.Web.WebMeta());

                UIFormDialog from = new UIFormDialog();
                from.Title        = ("配置");


                from.AddText("缩进", "Padding", data.Get("Padding") ?? "0");
                from.AddNumber("展示顺序", "Seq", finalItem.Seq);


                switch (finalItem.Type)
                {
                case UIDesigner.StoreDesignTypeBanners:
                    from.Title = ("广告横幅");
                    break;

                case UIDesigner.StoreDesignTypeItems:
                    from.Title = ("分块区配置");
                    from.AddRadio("风格", "Model").Put("展示标题", "Title", data.Get("Model").Equals("Title") || data.ContainsKey("Model") == false).Put("仅显示图片 ", "Image", data.Get("Model").Equals("Image"));

                    break;

                case UIDesigner.StoreDesignTypeTitleDesc:
                    from.Title = ("图文区配置");

                    String total = data.Get("Total") ?? "1";          // data["Total"] ??"1";
                    String model = data.Get("Hide") ?? "";            // data["Hide"] ??"";
                    ;
                    from.AddCheckBox("界面", "Hide", "T").Put("不显示标题", "HideTitle", model.IndexOf("HideTitle") > -1)
                    .Put("不显描述 ", "HideDesc", model.IndexOf("HideDesc") > -1)
                    .Put("不显左角价格 ", "HideLeft", model.IndexOf("HideLeft") > -1)
                    .Put("不显右角说明 ", "HideRight", model.IndexOf("HideRight") > -1);


                    from.AddNumber("图文数量", "Total", Utility.Parse(total, 0));
                    break;

                case UIDesigner.StoreDesignTypeCaption:

                    from.Title = "标题配置";
                    from.AddText("标题", "ItemName", item.ItemName);
                    from.AddCheckBox("标题隐藏", "Show", "Y").Put("隐藏", "Hide", data["Show"] == "Hide");

                    break;

                case UIDesigner.StoreDesignTypeProducts:
                    from.Title = "商品展示配置";
                    from.AddText("标题", "ItemName", item.ItemName);
                    from.AddRadio("展示风格", "Model").Put("分块展示", "Area", data["Model"] == "Area" || data.ContainsKey("Model") == false).Put("分行展示 ", "Rows", data["Model"] == "Rows");

                    from.AddNumber("单行商品数", "Total", data["Total"] ?? "2");

                    break;

                case UIDesigner.StoreDesignTypeCustom:
                    String config = data.Get("Config");
                    if (String.IsNullOrEmpty(config) == false && config.StartsWith("UI"))
                    {
                        if (config.StartsWith("UI"))
                        {
                            this.Context.Response.Redirect("Design", config);
                        }
                        var d = config.IndexOf('.');
                        if (d > 0)
                        {
                            this.Context.Response.Redirect("Design", config.Substring(d + 1));
                        }
                    }

                    this.Prompt("参数错误");

                    break;

                default:
                    this.Prompt("参数错误");
                    break;
                }
                from.Submit("确认", request, "Design");
                return(from);
            }, "Setting");
            String show = meta.Get("Show");

            if (String.IsNullOrEmpty(show) == false)
            {
                meta.Put("Show", show.Contains("Hide") ? "Hide" : "Show");
            }
            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = item.Id
            });
            entity.Update(new Design_Item
            {
                ItemName     = meta["ItemName"],
                ModifiedDate = DateTime.Now,
                Seq          = UMC.Data.Utility.IntParse(meta["Seq"], 0),
                Data         = UMC.Data.JSON.Serialize(meta)
            });
        }
コード例 #7
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var model = request.Model;
            var proid = UMC.Data.Utility.Guid(this.AsyncDialog("Id", g => this.DialogValue(request.Url.ToString())));

            if (proid.HasValue == false)
            {
                this.Prompt("参数不正确");
            }
            var subEntity = Utility.CMS.ObjectEntity <UMC.Data.Entities.Subject>();

            var sub = subEntity.Where.And().Equal(new Subject {
                Id = proid
            }).Entities.Single();

            if (sub == null)
            {
                this.Prompt("参数不正确");
            }
            var Type = this.AsyncDialog("Type", g =>
            {
                //return this.DialogValue("auto");
                var sheet = new Web.UISheetDialog()
                {
                    Title = "更多"
                };                                                    //屏蔽
                sheet.Options.Add(new Web.UIClick("Id", proid.ToString(), "Type", "Share")
                {
                    Command = request.Command, Model = model, Text = "分享到应用"
                });
                //sheet.Options.Add(new Web.UIClick("Id", proid.ToString(), "Type", "0") { Command = request.Command, Model = model, Text = "屏蔽此作者" });
                //sheet.Options.Add(new Web.UIClick("Id", proid.ToString(), "Type", "1") { Command = request.Command, Model = model, Text = "屏蔽此项目" });
                sheet.Options.Add(new Web.UIClick("Id", proid.ToString(), "Type", "Off")
                {
                    Command = request.Command, Model = model, Text = "举报内容"
                });
                return(sheet);
            });
            var user = Security.Identity.Current;

            switch (Type)
            {
            case "Off":
                var frm = this.AsyncDialog("Settings", g =>
                {
                    var fm   = new UIFormDialog();
                    fm.Title = "举报";
                    fm.AddRadio("违规性质", "Type").Put("内容质量差").Put("旧闻重复").Put("内容不实").Put("标题夸张").Put("低俗色情")
                    .Put("其他问题").Put("侵犯名誉/商誉/隐私/肖像权");
                    fm.AddFile("证明材料", "Url", "");
                    fm.AddTextarea("举报描述", "Description", "");
                    return(fm);
                });
                var url = new Uri(frm["Url"]);

                var s = "UserResources/TipOff" + url.AbsolutePath.Substring(url.AbsolutePath.IndexOf('/', 2));    //
                Data.WebResource.Instance().Transfer(url, s);
                var t = new SubjectTipOff();
                Data.Reflection.SetProperty(t, frm.GetDictionary());
                t.user_id      = user.Id;
                t.Url          = Data.WebResource.Instance().ResolveUrl(s);
                t.sub_id       = sub.Id;
                t.CreationTime = DateTime.Now;
                Utility.CMS.ObjectEntity <SubjectTipOff>().Where.And().Equal(new SubjectTipOff {
                    user_id = user.Id, sub_id = sub.Id
                })
                .Entities.IFF(e => e.Update(t) == 0, e => e.Insert(t));
                if (sub.TipOffs.HasValue)
                {
                    subEntity.Update("{0}+{1}", new Subject {
                        TipOffs = 1
                    });
                }
                else
                {
                    subEntity.Update(new Subject {
                        TipOffs = 1
                    });
                }
                this.Prompt("举报成功,我们将尽快处理");
                break;

            case "Share":
                response.Redirect(request.Model, "Share", proid.ToString());
                break;

            default:
            case "Block":

                var ui      = this.AsyncDialog("UI", g => this.DialogValue("none"));
                var section = this.AsyncDialog("section", g => this.DialogValue("1"));
                var row     = this.AsyncDialog("row", g => this.DialogValue("1"));
                var frm2    = Utility.IntParse(this.AsyncDialog("Settings", g =>
                {
                    if (Utility.IntParse(Type, -1) > -1)
                    {
                        return(this.DialogValue(Type));
                    }
                    var fm   = new UISelectDialog();
                    fm.Title = "屏蔽";
                    fm.Options.Put("屏蔽此作者", "0").Put("屏蔽此项目", "1");
                    return(fm);
                }), 0);
                var block = new ProjectBlock {
                    user_id = user.Id, ref_id = sub.user_id, Type = frm2
                };
                switch (frm2)
                {
                case 0:
                    block.ref_id = sub.user_id;
                    break;

                case 1:
                    block.ref_id = sub.project_id;
                    break;
                }
                if (block.ref_id.HasValue)
                {
                    Utility.CMS.ObjectEntity <ProjectBlock>().Where.And().Equal(block)
                    .Entities.IFF(e => e.Count() == 0, e => e.Insert(block));
                }
                if (ui == "none")
                {
                    this.Prompt("屏蔽成功");
                }
                else
                {
                    var editer = new Web.UISection.Editer(section, row, ui);
                    editer.Delete();
                    editer.ReloadSinle();
                    editer.Builder(this.Context, ui, true);
                }
                break;
            }
        }
コード例 #8
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var user   = UMC.Security.Identity.Current;
            var ids    = new List <Guid>();
            var itemId = Utility.Guid(this.AsyncDialog("Id", g => this.DialogValue(Guid.NewGuid().ToString())), true);//, true).Value;

            var config = this.AsyncDialog("Config", g =>
            {
                return(this.DialogValue("none"));
            });

            var pids        = new List <Guid>();
            var items       = new List <Design_Item>();
            var itemsEntity = Database.Instance().ObjectEntity <Design_Item>()
                              .Where.And().Equal(new Design_Item {
                Id = itemId
            });

            var size = this.AsyncDialog("Size", g =>
            {
                return(this.DialogValue("none"));
            });
            var webr = UMC.Data.WebResource.Instance();
            var ts   = this.AsyncDialog("Setting", g =>
            {
                var fm = new UIFormDialog()
                {
                    Title = "界面配置"
                };

                var item     = itemsEntity.Entities.Single();
                WebMeta meta = new UMC.Web.WebMeta();
                if (item != null)
                {
                    meta = UMC.Data.JSON.Deserialize <WebMeta>(item.Data) ?? meta;
                    if (String.Equals(config, "none"))
                    {
                        if (meta.ContainsKey("Config"))
                        {
                            config = meta["Config"];
                        }
                    }
                }

                if (String.Equals(config, "none"))
                {
                    this.Prompt("您配置错误");
                }
                else if (config == "UISEO")
                {
                    fm.Title = "SEO优化";
                    fm.AddTextarea("标题", "Title", meta["Title"]);
                    fm.AddTextarea("关键词", "Keywords", meta["Keywords"]);
                    fm.AddTextarea("描述", "Description", meta["Description"]);
                    return(fm);
                }
                request.Arguments["Config"] = config;

                var keyIndex = config.IndexOf('.');
                if (keyIndex > -1)
                {
                    config = config.Substring(keyIndex + 1);
                }
                if (String.Equals(size, "none"))
                {
                    size = "注意图片尺寸";
                }
                else
                {
                    size = String.Format("图片尺寸:{0}", size);
                }
                var pictureEntity = Database.Instance().ObjectEntity <Design_Config>();
                pictureEntity.Order.Asc(new Design_Config {
                    Sequence = 0
                });

                var pices = pictureEntity.Where.And().Equal(new Design_Config {
                    GroupBy = config
                }).Entities.Query();
                if (new List <Design_Config>(pices).Exists(dr => dr.Value == "Image" && dr.Name == "none") == false)
                {
                    fm.AddFile(size, "_Image", webr.ResolveUrl(String.Format("{0}{1}/1/0.jpg!100", UMC.Data.WebResource.ImageResource, itemId)))
                    //.Put("Model", "Settings").Put("Command", "Jpeg").Put("SendValue", new WebADNuke.Web.WebMeta().Put("Id", itemId));
                    .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", itemId).Put("seq", "1", "type", "jpg"));
                }
                UMC.Data.Utility.Each(pices, dr =>
                {
                    if (dr.Value == "Image" && dr.Name == "none")
                    {
                    }
                    else
                    {
                        fm.AddText(dr.Name, dr.Value, meta[dr.Value]);
                    }
                });
                if (item == null)
                {
                    item = itemsEntity.Reset().And().Equal(new Design_Item
                    {
                        design_id = UMC.Data.Utility.Guid(config, true)
                    }).Entities.Max(new Design_Item {
                        Seq = 0
                    });
                    item.Seq = (item.Seq ?? 0) + 1;
                }

                fm.AddNumber("展示顺序", "Seq", item.Seq ?? 0);

                return(fm);
            });
            var seq = UMC.Data.Utility.IntParse(ts["Seq"], 0);

            ts.Remove("Seq");
            ts.Remove("Image");
            ts["Config"] = config;
            var ite = new Design_Item {
                Type = UIDesigner.StoreDesignTypeCustom, ModifiedDate = DateTime.Now, Data = UMC.Data.JSON.Serialize(ts), Id = itemId, Seq = seq
            };

            itemsEntity.Entities.IFF(e => e.Update(ite) == 0, e =>
            {
                ite.design_id = UMC.Data.Utility.Guid(config, true);
                e.Insert(ite);
            });
            this.Context.Send(new UMC.Web.WebMeta().Put("type", "Design"), true);
        }
コード例 #9
0
        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;
            }
        }
コード例 #10
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            String group = request.Command;

            var entity = Database.Instance().ObjectEntity <Design_Config>();

            entity.Order.Asc(new Design_Config()
            {
                Sequence = 0
            });


            Guid?vid = UMC.Data.Utility.Guid(this.AsyncDialog("Id", s =>
            {
                entity.Where.And().Equal(new Design_Config()
                {
                    GroupBy = (group)
                });

                UIGridDialog rdoDig = UIGridDialog.Create(new UIGridDialog.Header("id", 0)
                                                          .PutField("text", "标题").PutField("value", "代码")
                                                          , entity.Query());
                rdoDig.Menu("新建配置", request.Model, request.Command, "News");
                rdoDig.RefreshEvent = "Settings";
                rdoDig.IsPage       = (true);// = true;
                rdoDig.Title        = ("数据配置");


                return(rdoDig);
            }));// ??Guid.Empty;

            WebMeta configs = this.AsyncDialog(s =>
            {
                UIFormDialog fm = new UIFormDialog();
                if (vid == null)
                {
                    fm.Title = ("新增配置值");
                }
                else
                {
                    fm.Title = ("修改配置值");
                }
                entity.Where.And().Equal(new Design_Config()
                {
                    Id = (vid)
                });

                Design_Config con = null;
                if (vid != null)
                {
                    con = entity.Single();
                }
                if (con == null)
                {
                    entity.Where.Reset().And().Equal(new Design_Config()
                    {
                        GroupBy = (group)
                    });
                    con = entity.Max(new Design_Config()
                    {
                        Sequence = (0)
                    });
                }

                fm.AddText("配置名称", "Name", con.Name);
                fm.AddText("配置标题", "Value", con.Value);
                fm.AddNumber("显示顺序", "Sequence", con.Sequence);
                return(fm);
            }, "Config");
            Design_Config cv = new Design_Config();

            UMC.Data.Reflection.SetProperty(cv, configs.GetDictionary());
            if (vid == null)
            {
                cv.GroupBy = group;
                cv.Id      = Guid.NewGuid();///.randomUUID();
                entity.Insert(cv);
            }
            else
            {
                cv.Id = vid;
                entity.Where.Reset().And().Equal(new Design_Config()
                {
                    Id = (vid)
                });

                if (cv.Sequence == -1)
                {
                    entity.Delete();
                }
                else
                {
                    entity.Update(cv);
                }
            }
            this.Context.Send("Settings", true);
        }
コード例 #11
0
        protected virtual void Scanning(Uri url)
        {
            var domain = new Uri(url, Data.WebResource.Instance().WebDomain()).AbsoluteUri;

            if (domain.Contains(url.Host))
            {
                var paths = new List <String>();

                paths.AddRange(url.LocalPath.Trim('/').Split('/'));
                if (paths.Count == 0)
                {
                    return;
                }
                switch (paths[0])
                {
                case "download":
                case "app":
                    if (String.IsNullOrEmpty(url.Query))
                    {
                        this.OpenUrl(url);
                    }
                    var query = url.Query.Substring(1);
                    var user  = UMC.Security.Identity.Current;
                    if (user.IsAuthenticated == false)
                    {
                        this.Context.Response.Redirect("Account", "Login");
                    }
                    var dever = Data.Utility.Guid(query);
                    if (dever.HasValue)
                    {
                        var webr = Data.WebResource.Instance();
                        this.AsyncDialog("Device", g =>
                        {
                            webr.Push(dever.Value, new WebMeta().Put("msg", "扫码成功").Put("src", webr.ImageResolve(user.Id.Value, "1", 4)));
                            var fm   = new UIFormDialog();
                            fm.Title = "扫码登录";
                            var desc = new UI.UIDesc(new UMC.Web.WebMeta().Put("desc", "正在进行扫码登录").Put("icon", "\uF108"));
                            desc.Desc("{icon}\n{desc}");
                            desc.Style.Align(1)
                            .Color(0xaaa).Padding(40, 20).BgColor(0xfff).Name("icon", new UIStyle().Font("wdk").Size(160));
                            fm.Add(desc);

                            fm.Submit("确认登录", this.Context.Request, "PC.Login");
                            return(fm);
                        });

                        UMC.Security.AccessToken.Login(user, dever.Value, "PC");
                        webr.Push(dever.Value, new WebMeta().Put("msg", "OK").Put("type", "SignIn").Put("root", Data.Utility.GetRoot(this.Context.Request.Url)));
                        this.Context.Send("PC.Login", true);
                    }
                    else
                    {
                        this.OpenUrl(url);
                    }
                    break;

                case "Click":
                case "Pager":
                    var p = paths[0];
                    paths.RemoveAt(0);
                    var data = new UMC.Web.WebMeta();
                    if (String.IsNullOrEmpty(url.Query) == false)
                    {
                        var query2 = System.Web.HttpUtility.ParseQueryString(url.Query.Substring(1));
                        for (var i = 0; i < query2.Count; i++)
                        {
                            var qV = query2.Get(i);
                            var qK = query2.GetKey(i);
                            if (String.IsNullOrEmpty(qK) == false)
                            {
                                if (String.IsNullOrEmpty(qV) == false)
                                {
                                    data.Put(qK, qV);
                                }
                                else
                                {
                                    data.Put("Id", qK);
                                }
                            }
                        }
                    }

                    var model = "Corp";
                    var cmd   = "Scanning";
                    if (paths.Count > 1)
                    {
                        model = paths[0];
                        cmd   = paths[1];
                        paths.RemoveRange(0, 2);
                    }
                    var SValue = String.Empty;
                    if (paths.Count == 1)
                    {
                        SValue = paths[0];
                        data.Put("Id", paths[0]);
                    }
                    else
                    {
                        while (paths.Count > 0)
                        {
                            if (paths.Count > 1)
                            {
                                data.Put(paths[0], paths[1]);
                            }
                            paths.RemoveRange(0, 2);
                        }
                    }
                    if (p == "Click")
                    {
                        if (data.Count > 0)
                        {
                            if (String.IsNullOrEmpty(SValue) || data.Count > 1)
                            {
                                this.Context.Response.Redirect(model, cmd, data, true);
                            }
                            else
                            {
                                this.Context.Response.Redirect(model, cmd, SValue, true);
                            }
                        }
                        else
                        {
                            this.Context.Response.Redirect(model, cmd, true);
                        }
                    }
                    else
                    {
                        if (data.Count > 0)
                        {
                            this.Context.Send("Pager", new UMC.Web.WebMeta().Put("model", model, "cmd", cmd).Put("search", data), true);
                        }
                        else
                        {
                            this.Context.Send("Pager", new UMC.Web.WebMeta().Put("model", model, "cmd", cmd), true);
                        }
                    }
                    break;
                }
            }
        }
コード例 #12
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var projectId = UMC.Data.Utility.Guid(this.AsyncDialog("Project", g =>
            {
                this.Prompt("请输入项目");
                return(new Web.UITextDialog()
                {
                    Title = "项目"
                });
            })).Value;

            var user    = Security.Identity.Current;
            var project = Utility.CMS.ObjectEntity <UMC.Data.Entities.Project>()
                          .Where.And().Equal(new Project {
                Id = projectId
            }).Entities.Single();

            if (project == null)
            {
                this.Prompt("没有此项目");
            }
            if (project.user_id != user.Id)
            {
                this.Prompt("只有项目创立人才能配置此权限");
            }

            var setting = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>()
                          .Where.And().Equal(new ProjectSetting {
                project_id = projectId, Type = 11
            }).Entities.Single() ?? new ProjectSetting();
            ProjectUserSetting projectSettings = new ProjectUserSetting();

            if (setting.user_setting_id.HasValue)
            {
                projectSettings = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>()
                                  .Where.And().Equal(new ProjectUserSetting {
                    Id = setting.user_setting_id, Type = 11
                }).Entities.Single() ?? new ProjectUserSetting();

                if (projectSettings.user_id == user.Id)
                {
                }
                else
                {
                    this.AsyncDialog("Confirm", g => new UIConfirmDialog("此项目钉钉配置来源于引用,你确认移除从新配置吗"));
                    projectSettings = new ProjectUserSetting();
                    //Utility.CMS.ObjectEntity<UMC.Data.Entities.ProjectSetting>()
                    //   .Where.And().Equal(new ProjectSetting { project_id = projectId, Type = 11 }).Entities
                    // .Delete();
                }
            }
            var type = this.AsyncDialog("Type", "No");

            switch (type)
            {
            case "Dingtalk":
                var strt = UMC.Security.AccessToken.Current.Data["DingTalk-Setting"] as string;    //, Utility.Guid(projectId)).Commit();
                if (String.IsNullOrEmpty(strt))
                {
                    this.Prompt("当前非钉钉环境");
                }

                var userSetting = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>()
                                  .Where.And().Equal(new ProjectUserSetting {
                    Id = Utility.Guid(strt, true)
                }).Entities.Single();

                if (userSetting == null)
                {
                    this.Prompt("钉钉环境配置 错误,请从新登录");
                }
                var setting2 = new ProjectSetting()
                {
                    user_setting_id = userSetting.Id, project_id = project.Id, Type = 11
                }; Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>()
                .Where.And().Equal(new ProjectSetting {
                    project_id = projectId, Type = 11
                }).Entities
                .IFF(e => e.Update(setting2) == 0, e => e.Insert(setting2));
                this.Prompt("设置成功", false);
                this.Context.Send("Subject.Settings", true);

                break;
            }

            var settins = this.AsyncDialog("Setting", g =>
            {
                var form   = new UIFormDialog();
                form.Title = "配置钉钉应用";
                form.AddText("企业Id", "CorpId", projectSettings.CorpId);
                form.AddText("应用Id", "AgentId", projectSettings.AgentId);
                form.AddText("AppKey", "AppId", projectSettings.AppId);
                form.AddText("AppSecret", "AppSecret", projectSettings.AppSecret);

                form.Submit("确认", request, "Subject.Settings");

                var strt = UMC.Security.AccessToken.Current.Data["DingTalk-Setting"] as string;//, Utility.Guid(projectId)).Commit();
                if (String.IsNullOrEmpty(strt) == false)
                {
                    form.AddUI("引用当前环境钉钉配置", "").Command(request.Model, "Dingtalk", new WebMeta().Put("Project", project.Id.ToString()).Put("Type", "Dingtalk"));
                }
                return(form);
            });
            var AppId     = settins["AppId"];
            var AppSecret = settins["AppSecret"];

            System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();
            var text = httpClient.GetStringAsync(String.Format("https://oapi.dingtalk.com/gettoken?appkey={0}&appsecret={1}", AppId, AppSecret))
                       .Result;

            var acc          = Data.JSON.Deserialize(text) as Hashtable;
            var access_token = acc["access_token"] as string;
            var expires_in   = acc["expires_in"] as string;

            if (String.IsNullOrEmpty(access_token))
            {
                this.Prompt("钉钉应用配置不正确");
            }
            else
            {
                var pseting = new ProjectUserSetting()
                {
                    CorpId      = settins["CorpId"],
                    AgentId     = settins["AgentId"],
                    user_id     = user.Id,
                    Id          = projectSettings.Id ?? Guid.NewGuid(),
                    AppId       = AppId,
                    AccessToken = access_token,
                    Type        = 11,
                    AppSecret   = AppSecret,
                    ExpiresTime = Utility.TimeSpan() + (Utility.IntParse(expires_in, 0) / 5)
                };
                Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>()
                .Where.And().Equal(new ProjectUserSetting {
                    Id = pseting.Id
                }).Entities.IFF(e => e.Update(pseting) == 0, e => e.Insert(pseting));

                var setting2 = new ProjectSetting()
                {
                    user_setting_id = pseting.Id, project_id = project.Id, Type = 11
                }; Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>()
                .Where.And().Equal(new ProjectSetting {
                    project_id = projectId, Type = 11
                }).Entities
                .IFF(e => e.Update(setting2) == 0, e => e.Insert(setting2));
            }

            this.Context.Send("Subject.Settings", true);
        }
コード例 #13
0
        protected UIClick Click(UIClick ui)
        {
            String type = this.AsyncDialog("Click", g =>
            {
                UIRadioDialog di = new UIRadioDialog();
                di.Title         = ("关联功能");
                ListItemCollection listItemCollection = di.Options;//new ListItemCollection();
                listItemCollection.Add("连接扫一扫", "Scanning");
                listItemCollection.Add("连接指令", "Setting");
                listItemCollection.Add("连接拨号", "Tel");
                listItemCollection.Add("连接网址", "Url");

                return(di);
            });

            switch (type)
            {
            case "Scanning":
                return(UIClick.Scanning());

            case "Tel":
                return(UIClick.Tel(this.AsyncDialog("Tel", g =>
                {
                    UITextDialog di = new UITextDialog();
                    di.Title = ("拨号号码");
                    return di;
                })));

            case "Url":
                return(UIClick.Url(new Uri(this.AsyncDialog("Url", g =>
                {
                    UITextDialog di = new UITextDialog();
                    di.Title = ("网址地址");
                    return di;
                }))));


            default:
            case "Setting":

                var     c        = UMC.Data.JSON.Deserialize(UMC.Data.JSON.Serialize(ui)) as Hashtable;
                WebMeta settings = this.AsyncDialog(g =>
                {
                    UIFormDialog di = new UIFormDialog();
                    di.Title        = ("功能指令");
                    di.AddText("模块代码", "Model", (String)c["model"]);
                    di.AddText("指令代码", "Command", (String)c["cmd"]);
                    di.AddPrompt("此块内容为专业内容,请由工程师设置");

                    if (c.ContainsKey("send"))
                    {
                        Object send = c["send"];
                        if (send is String)
                        {
                            di.AddText("参数", "Send", (String)send).PlaceHolder("如果没参数,则用none");
                        }
                        else
                        {
                            di.AddText("参数", "Send", UMC.Data.JSON.Serialize(send)).PlaceHolder("如果没参数,则用none");
                        }
                    }
                    else
                    {
                        di.AddText("参数", "Send").PlaceHolder("如果没参数,则用none").NotRequired();
                    }

                    return(di);
                }, "Send");
                UIClick click   = new UIClick();
                String  Model   = settings.Get("Model");
                String  Command = settings.Get("Command");
                String  Send    = settings.Get("Send");
                click.Send(Model, Command);

                if ("none".Equals(Send, StringComparison.CurrentCultureIgnoreCase) == false)
                {
                    if (String.IsNullOrEmpty(Send) == false)
                    {
                        if (Send.StartsWith("{"))
                        {
                            click.Send(UMC.Data.JSON.Deserialize <WebMeta>(Send));
                        }
                        else
                        {
                            click.Send(Send);
                        }
                    }
                }
                return(click);
            }
        }
コード例 #14
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            if (request.IsMaster == false)
            {
                this.Prompt("需要管理员权限");
            }

            var svalue = this.AsyncDialog("Key", d =>
            {
                return(this.DialogValue("New"));
            });

            switch (svalue)
            {
            case "RESETAPPSECRET":
                this.Prompt("AppSecret", "AppSecret:" + Data.WebResource.Instance().AppSecret(true));
                break;

            case "APPSECRET":
                this.Prompt("AppSecret", "AppSecret:" + Data.WebResource.Instance().AppSecret());
                break;
            }
            var file     = Reflection.ConfigPath("UMC.xml");
            var cfg      = Configuration.ProviderConfiguration.GetProvider(file) ?? new Configuration.ProviderConfiguration();
            var n        = cfg[svalue] ?? Data.Provider.Create(String.Empty, String.Empty);
            var Settings = this.AsyncDialog("Settings", g =>
            {
                var fm = new UIFormDialog()
                {
                    Title = "配置云模块"
                };

                if (String.IsNullOrEmpty(n.Name))
                {
                    fm.AddText("云模块名", "name", n.Name);
                }
                else
                {
                    fm.AddTextValue().Put("云模块名", n.Name);
                }
                fm.AddText("指令通配符", "type", n.Type);
                fm.AddText("描述", "desc", n["desc"]);
                fm.AddText("服务网址", "src", n["src"]);
                fm.AddText("AppSecret", "secret", n["secret"]).NotRequired();
                if (String.IsNullOrEmpty(n.Name) == false)
                {
                    fm.AddCheckBox("", "Status", "NO").Put("移除", "DEL");
                }
                fm.Submit("确认", request, "Config");
                return(fm);
            });
            var status = Settings["Status"] ?? "";

            if (status.Contains("DEL"))
            {
                cfg.Providers.Remove(svalue);
            }
            else
            {
                var src = new Uri(Settings["src"]);
                var p   = Data.Provider.Create(Settings["name"] ?? svalue, Settings["type"]);
                p.Attributes.Add("src", src.AbsoluteUri);
                p.Attributes.Add("desc", Settings["desc"]);
                if (String.IsNullOrEmpty(Settings["secret"]) == false)
                {
                    p.Attributes.Add("secret", Settings["secret"]);
                }
                cfg.Providers[p.Name] = p;//.Add(p.Name, p);
            }
            UMC.Configuration.ProviderConfiguration.Cache.Clear();

            cfg.WriteTo(file);
            var data2 = new System.Data.DataTable();

            data2.Columns.Add("model");
            data2.Columns.Add("cmd");
            data2.Columns.Add("text");
            data2.Columns.Add("src");


            for (var i = 0; i < cfg.Count; i++)
            {
                var p   = cfg[i];
                var cmd = p.Type;// p["regex"]; // p.Type;

                if (String.IsNullOrEmpty(p.Type))
                {
                    cmd = "*";
                }

                data2.Rows.Add(p.Name, cmd, p["desc"], p["src"]);
            }

            this.Context.Send("Config", new WebMeta().Put("data", data2), false);

            this.Prompt("配置成功");
        }
コード例 #15
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var projectId = UMC.Data.Utility.Guid(this.AsyncDialog("Project", g =>
            {
                this.Prompt("请输入项目");
                return(new Web.UITextDialog()
                {
                    Title = "项目"
                });
            })).Value;

            var user    = Security.Identity.Current;
            var project = Utility.CMS.ObjectEntity <UMC.Data.Entities.Project>()
                          .Where.And().Equal(new Project {
                Id = projectId
            }).Entities.Single();

            if (project == null)
            {
                this.Prompt("没有此项目");
            }
            if (project.user_id != user.Id)
            {
                this.Prompt("只有项目创立人才能配置此权限");
            }

            var setting = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>()
                          .Where.And().Equal(new ProjectSetting {
                project_id = projectId, Type = 12
            }).Entities.Single() ?? new ProjectSetting();
            ProjectUserSetting projectSettings = new ProjectUserSetting();

            if (setting.user_setting_id.HasValue)
            {
                projectSettings = Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>()
                                  .Where.And().Equal(new ProjectUserSetting {
                    Id = setting.user_setting_id, Type = 12, user_id = user.Id
                }).Entities.Single() ?? new ProjectUserSetting();

                //if (projectSettings.user_id != user.Id)
                //{
                //    this.Prompt("只能配置自己的项目");
                //}
            }

            var settins = this.AsyncDialog("Setting", g =>
            {
                var form   = new UIFormDialog();
                form.Title = "配置钉钉群机器人";
                form.AddText("Webhook", "AccessToken", projectSettings.AccessToken);
                form.AddText("加签Secret", "AppSecret", projectSettings.AppSecret);

                form.Submit("确认", request, "Subject.Settings");


                return(form);
            });
            var access_token = settins["AccessToken"];
            var AppSecret    = settins["AppSecret"];


            if (String.IsNullOrEmpty(access_token))
            {
                this.Prompt("钉钉应用配置不正确");
            }
            else
            {
                var pseting = new ProjectUserSetting()
                {
                    user_id     = user.Id,
                    Id          = projectSettings.Id ?? Guid.NewGuid(),
                    AccessToken = access_token,
                    Type        = 12,
                    AppSecret   = AppSecret,
                    ExpiresTime = 0// Utility.TimeSpan() + (Utility.IntParse(expires_in, 0) / 5)
                };
                Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectUserSetting>()
                .Where.And().Equal(new ProjectUserSetting {
                    Id = pseting.Id
                }).Entities.IFF(e => e.Update(pseting) == 0, e => e.Insert(pseting));

                var setting2 = new ProjectSetting()
                {
                    user_setting_id = pseting.Id, project_id = project.Id, Type = 12
                }; Utility.CMS.ObjectEntity <UMC.Data.Entities.ProjectSetting>()
                .Where.And().Equal(new ProjectSetting {
                    project_id = projectId, Type = 12
                }).Entities
                .IFF(e => e.Update(setting2) == 0, e => e.Insert(setting2));
            }

            this.Context.Send("Subject.Settings", true);
        }
コード例 #16
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            WebMeta user = this.AsyncDialog(d =>
            {
                WebMeta sendValue = request.SendValues ?? request.Arguments;
                if (sendValue.Count > 0)
                {
                    return(this.DialogValue(sendValue));
                }
                UIFormDialog dialog = new UIFormDialog()
                {
                    Title = "账户登录"
                };
                dialog.AddText("账户", "Username", "");
                dialog.AddPassword("账户密码", "Password", "");
                dialog.Submit("确认登录", request, "Cashier");
                return(dialog);
            }, "Login");
            String username = user.Get("Username");
            String Password = user.Get("Password");

            if (String.IsNullOrEmpty(username) || String.IsNullOrEmpty(Password))
            {
                this.Prompt("请输入用户名和密码");
            }


            int        maxTimes    = 5;
            Membership userManager = Membership.Instance();
            int        times       = userManager.Password(username, Password, maxTimes);

            switch (times)
            {
            case 0:
                String client = "POSClient";
                if (request.IsApp)
                {
                    client = "Mobile";
                }
                Identity iden = userManager.Identity(username);
                System.Security.Principal.IPrincipal principal = iden;

                if (principal.IsInRole(UMC.Security.Membership.UserRole) == false)
                {
                    this.Prompt("您不是门店内部人员,不能从此登录。");
                }
                AccessToken.Login(iden, AccessToken.Token.Value, client, true);
                this.Context.OnReset();

                this.Prompt("登录成功", false);

                WebMeta print = new UMC.Web.WebMeta();
                print["Alias"] = iden.Alias;
                print["Src"]   = Data.WebResource.Instance().ImageResolve(iden.Id.Value, "1", 5);
                print["type"]  = "Cashier";
                this.Context.Send(print, true);
                //this.Context.Send("Cashier", true);
                break;

            case -4:
                this.Prompt("您的账户已经禁用");
                break;

            case -3:
                this.Prompt("无此子账户");
                break;

            case -2:
                this.Prompt("您的用户已经锁定,请您联系管理员解锁");
                break;

            case -1:
                this.Prompt("您的用户不存在,请确定用户名", false);
                break;

            default:
                this.Prompt(String.Format("您的用户和密码不正确,您还有{0}次机会", maxTimes - times), false);


                break;
            }
        }
コード例 #17
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var type = this.AsyncDialog("type", g =>
            {
                return(this.DialogValue("SQLite"));

                var fm = new UISheetDialog()
                {
                    Title = "安装数据库"
                };

                //fm.Options.Add(new UIClick("Oracle") { Text = "Oracle数据库" }.Send(request.Model, request.Command));
                //fm.Options.Add(new UIClick("MySql") { Text = "MySql数据库" }.Send(request.Model, request.Command));
                //fm.Options.Add(new UIClick("MSSQL") { Text = "SQL Server数据库" }.Send(request.Model, request.Command));
                fm.Options.Add(new UIClick("SQLite")
                {
                    Text = "SQLite文件数据库"
                }.Send(request.Model, request.Command));
                return(fm);
            });
            var Settings = this.AsyncDialog("Settings", g =>
            {
                var fm = new UIFormDialog()
                {
                    Title = "选择数据库"
                };

                fm.AddText("服务地址", "Server");
                fm.AddText("用户名", "User");
                fm.AddText("密码", "Password");
                fm.AddText("数据库名", "Database");
                switch (type)
                {
                case "SQLite":
                    return(this.DialogValue(new WebMeta().Put("File", "UMC")));

                case "Oracle":
                    fm.AddText("端口", "Port", "1521");
                    fm.AddText("表前缀", "Prefix").Put("tip", "分表设置");
                    fm.Title = "Oracle连接配置";
                    break;

                case "MySql":
                    fm.AddText("端口", "Port", "3306");
                    fm.AddText("表前缀", "Prefix").Put("tip", "分表设置");
                    fm.Title = "MySql连接配置";
                    break;

                case "MSSQL":
                    fm.AddText("端口", "Port", "1433");
                    fm.AddText("表前缀", "Prefix").Put("tip", "分表设置");
                    fm.AddText("拆表符", "Delimiter", "_");
                    fm.Title = "SQL Server连接配置";
                    break;

                default:
                    this.Prompt("数据类型错误");
                    break;
                }
                fm.Submit("确认安装", request, "Initializer");
                return(fm);
            });

            UMC.Data.Provider provder = null;


            switch (type)
            {
            case "SQLite":
                provder = UMC.Data.Provider.Create("Database", typeof(UMC.Data.Sql.SQLiteDbProvider).FullName);

                var file = Settings["File"];
                if (file.IndexOf('.') == -1)
                {
                    file = file + ".sqlite";
                }
                var path = UMC.Data.Utility.MapPath(String.Format("~App_Data/{0}", file));

                if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(path)))
                {
                    System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(path));
                }
                if (System.IO.File.Exists(path))
                {
                    int i = 1;
                    var m = String.Format("{0}.{1}.bak", path, i);
                    while (System.IO.File.Exists(m))
                    {
                        i++;
                        String.Format("{0}.{1}.bak", path, i);
                    }
                    System.IO.File.Move(path, m);
                }
                provder.Attributes["db"] = file;
                break;

            case "Oracle":
                provder = UMC.Data.Provider.Create("Database", typeof(UMC.Data.Sql.OracleDbProvider).FullName);
                provder.Attributes["conString"] = Oracle(Settings);
                break;

            case "MySql":
                provder = UMC.Data.Provider.Create("Database", typeof(UMC.Data.Sql.MySqlDbProvider).FullName);
                provder.Attributes["conString"] = MySQL(Settings);
                break;

            case "MSSQL":
                provder = UMC.Data.Provider.Create("Database", typeof(UMC.Data.Sql.SqlDbProvider).FullName);
                provder.Attributes["conString"] = MSSQL(Settings);
                break;

            default:
                this.Prompt("数据类型错误");
                break;
            }
            if (String.IsNullOrEmpty(Settings["Prefix"]) == false)
            {
                provder.Attributes["delimiter"] = Settings["Delimiter"] ?? "_";
                provder.Attributes["prefix"]    = Settings["Prefix"];
            }
            DbProvider provider = Reflection.CreateObject(provder) as DbProvider;

            DbFactory factory = new DbFactory(provider);

            try
            {
                factory.Open();
                factory.Close();
            }
            catch (Exception ex)
            {
                this.Prompt(ex.Message);
            }

            var Key = Utility.Guid(Guid.NewGuid());
            var log = new UMC.Data.CSV.Log(Utility.GetRoot(request.Url), Key, "开始安装");

            Data.Reflection.Start(() =>
            {
                var Initializers = Data.Sql.Initializer.Initializers();
                try
                {
                    var now      = DateTime.Now;
                    var Names    = new Hashtable();
                    var database = Reflection.Configuration("database") ?? new UMC.Configuration.ProviderConfiguration();
                    var count    = false;
                    foreach (var initer in Initializers)
                    {
                        var dataPro  = database[initer.ProviderName] ?? UMC.Data.Provider.Create(initer.ProviderName, provder.Type);
                        var setupKey = dataPro["setup"] ?? "";
                        if (setupKey.Contains(initer.Name) == false)
                        {
                            count = true;
                            initer.Setup(new Hashtable(), log, provider);
                            initer.Menu(new Hashtable(), new DbFactory(provider));
                            var de = UMC.Data.Provider.Create(initer.ProviderName, provder.Type);
                            de.Attributes.Add(provder.Attributes);
                            de.Attributes["setup"] = String.Format("{0}{1},", setupKey, initer.Name);
                            database.Providers[initer.ProviderName] = de;
                        }
                        else
                        {
                            initer.Check(log, Reflection.CreateObject(dataPro) as DbProvider);
                        }
                    }

                    UMC.Configuration.ProviderConfiguration.Cache.Clear();
                    if (count == false)
                    {
                        log.End("对应组件已经安装");
                    }
                    else
                    {
                        var file = Reflection.AppDataPath("UMC\\database.xml");
                        if (System.IO.File.Exists(file))
                        {
                            int i = 1;
                            var m = Reflection.AppDataPath(String.Format("UMC\\database.xml.{0}.bak", i));
                            while (System.IO.File.Exists(m))
                            {
                                i++;
                                m = Reflection.AppDataPath(String.Format("UMC\\database.xml.{0}.bak", i));
                            }
                            System.IO.File.Move(file, m);
                        }
                        database.WriteTo(file);
                        log.End("安装完成", "默认账户:admin 密码:admin", "请刷新界面");
                        log.Info(String.Format("用时{0}", DateTime.Now - now));
                    }
                }
                catch (Exception ex)
                {
                    log.End("安装失败");
                    log.Info(ex.Message);
                }
                finally
                {
                    log.Close();
                }
            });

            this.Context.Send("Initializer", false);

            response.Redirect("System", "Log", Key);
        }
コード例 #18
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var  user    = UMC.Security.Identity.Current;// ();
            Guid groupId = UMC.Data.Utility.Guid(this.AsyncDialog("id", d =>
            {
                this.Prompt("请传入参数");
                return(this.DialogValue(user.Id.ToString()));
            }), true).Value;

            String Seq = this.AsyncDialog("seq", g =>
            {
                if (request.SendValues != null)
                {
                    return(this.DialogValue(request.SendValues.Get("Seq") ?? "0"));
                }
                else
                {
                    return(this.DialogValue("0"));
                }
            });

            UMC.Data.WebResource webr = UMC.Data.WebResource.Instance();
            String media_id           = this.AsyncDialog("media_id", g =>
            {
                if (request.IsApp)
                {
                    UIDialog f = UIDialog.CreateDialog("File");

                    f.Config.Put("Submit", new UIClick(new WebMeta(request.Arguments.GetDictionary()).Put(g, "Value"))
                                 .Send(request.Model, request.Command));
                    ;
                    return(f);
                }
                else
                {
                    UIFormDialog from = new UIFormDialog();
                    from.Title        = ("图片上传");

                    from.AddFile("选择图片", "media_id", webr.ImageResolve(groupId, Seq, 4));

                    from.Submit("确认上传", request, "image");
                    return(from);
                }
            });


            String type = this.AsyncDialog("type", g => this.DialogValue("jpg"));
            int    seq  = UMC.Data.Utility.Parse(Seq, 1);

            if (media_id.StartsWith("http://") || media_id.StartsWith("https://"))
            {
                Uri url = new Uri(media_id);

                if (url.AbsolutePath.ToLower().EndsWith(type.ToLower()))
                {
                    webr.Transfer(url, groupId, seq, type);
                }
                else
                {
                    webr.Transfer(new Uri(String.Format("{0}?x-oss-process=image/format,{1}", media_id, type)), groupId, seq, type);
                }
            }
            else
            {
                /*
                 * 微信上传
                 * */
            }


            this.Context.Send(new WebMeta().Put("type", "image").Put("id", groupId), true);
        }
コード例 #19
0
        void Items(WebRequest request, Guid itemId)
        {
            UMC.Data.WebResource webr = UMC.Data.WebResource.Instance();

            var entity = Database.Instance().ObjectEntity <Design_Item>();

            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = itemId
            });

            Design_Item item = entity.Single();


            WebMeta meta = this.AsyncDialog(g =>
            {
                Design_Item finalItem = item;
                switch (item.Type)
                {
                case UIDesigner.StoreDesignTypeItem:
                    break;

                case UIDesigner.StoreDesignTypeItems:
                    int count = entity.Where.Reset()
                                .And().Equal(new Design_Item()
                    {
                        for_id = itemId
                    })
                                .Entities.Count();
                    if (count > 3)
                    {
                        this.Prompt("分列栏,只能添加4列");
                    }

                    Design_Item item2 = new Design_Item()
                    {
                        Id           = Guid.NewGuid(),
                        design_id    = item.design_id,
                        for_id       = item.Id,
                        ModifiedDate = DateTime.Now,
                        Type         = UIDesigner.StoreDesignTypeItem
                    };

                    Design_Item max = entity
                                      .Where.And().Equal(new Design_Item()
                    {
                        design_id = item.design_id, for_id = item.Id
                    })
                                      .Entities.Max(new Design_Item()
                    {
                        Seq = 0
                    });                                            //.Seq+1;
                    item2.Seq = (max.Seq ?? 0) + 1;

                    entity.Insert(item2);



                    finalItem = item2;
                    request.Arguments.Put("Id", finalItem.Id);

                    break;

                default:
                    this.Prompt("类型错误");
                    break;
                }

                WebMeta data = UMC.Data.JSON.Deserialize <WebMeta>(finalItem.Data) ?? new UMC.Web.WebMeta();

                UIFormDialog from = new UIFormDialog();
                from.Title        = ("图标");
                from.AddFile("图片", "_Image", webr.ImageResolve(finalItem.Id.Value, "1", 4))
                .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", finalItem.Id).Put("seq", "1"));
                from.AddText("标题", "title", finalItem.ItemName);
                from.AddText("描述", "desc", finalItem.ItemDesc);
                from.Add("Color", "startColor", "标题开始色", data.Get("startColor"));
                from.Add("Color", "endColor", "标题结束色", data.Get("endColor"));
                from.AddNumber("顺序", "Seq", finalItem.Seq);
                // from.submit("确认", request.model(), request.cmd(), new UMC.Web.WebMeta().put("Id", finalItem.Id).put("Type", "Edit"));

                from.Submit("确认", request, "Design");
                return(from);
            }, "Setting");

            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = item.Id
            });
            entity.Update(new Design_Item()
            {
                ItemName     = meta.Get("title"),
                ItemDesc     = meta.Get("desc"),
                Data         = UMC.Data.JSON.Serialize(meta),
                ModifiedDate = DateTime.Now,
                Seq          = Utility.IntParse(meta.Get("Seq"), 0)
            });

            //entity.Where.reset().And().Equal(new Design_Item().Id(item.Id));
            //entity.update(new Design_Item().ItemName(meta.get("title"))
            //        .ItemDesc(meta.get("desc"))
            //        .Data(UMC.Data.JSON.serialize(meta))
            //        .ModifiedDate(new Date()).Seq(Utility.parse(meta.get("Seq"), 0)));
        }
コード例 #20
0
        void TitleDesc(WebRequest request, Guid itemId)
        {
            UMC.Data.WebResource webr = UMC.Data.WebResource.Instance();

            var entity = Database.Instance().ObjectEntity <Design_Item>();

            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = itemId
            });

            Design_Item item = entity.Single();


            WebMeta meta = this.AsyncDialog(g =>
            {
                WebMeta config = new UMC.Web.WebMeta();
                switch (item.Type ?? 0)
                {
                case UIDesigner.StoreDesignTypeItem:
                    Design_Item parent = entity.Where.Reset().And().Equal(new Design_Item()
                    {
                        Id = item.for_id
                    }).Entities.Single();


                    config = UMC.Data.JSON.Deserialize <WebMeta>(parent.Data) ?? new UMC.Web.WebMeta();

                    break;

                case UIDesigner.StoreDesignTypeTitleDesc:
                    config = UMC.Data.JSON.Deserialize <WebMeta>(item.Data) ?? new UMC.Web.WebMeta();

                    Design_Item item2 = new Design_Item()
                    {
                        Id           = Guid.NewGuid(),
                        design_id    = item.design_id,
                        for_id       = item.Id,
                        ModifiedDate = DateTime.Now,
                        Type         = UIDesigner.StoreDesignTypeItem
                    };

                    Design_Item max = entity
                                      .Where.And().Equal(new Design_Item()
                    {
                        design_id = item.design_id, for_id = item.Id
                    })
                                      .Entities.Max(new Design_Item()
                    {
                        Seq = 0
                    });                                            //.Seq+1;
                    item2.Seq = (max.Seq ?? 0) + 1;

                    entity.Insert(item2);



                    item = item2;
                    request.Arguments.Put("Id", item.Id);
                    break;

                default:
                    this.Prompt("类型错误");
                    break;
                }

                //config = UMC.Data.JSON.Deserialize<WebMeta>(item.Data) ?? new UMC.Web.WebMeta();


                WebMeta data = UMC.Data.JSON.Deserialize <WebMeta>(item.Data) ?? new UMC.Web.WebMeta();
                ;// Utility.isNull(UMC.Data.JSON.deserialize(finalItem.Data, WebMeta.class), new UMC.Web.WebMeta());

                UIFormDialog from = new UIFormDialog();
                from.Title        = ("图文项");


                String total = data.Get("Total") ?? "1";

                from.AddFile(String.Format("{0}比例图片", total == "1" ? "100:55" : "1:1"), "_Image",
                             webr.ImageResolve(item.Id.Value, "1", 4))
                .Command("Design", "Picture", new UMC.Web.WebMeta().Put("id", item.Id).Put("seq", "1"));
                String hide = config.Get("Hide") ?? "";
                if (hide.IndexOf("HideTitle") == -1)
                {
                    from.AddText("图文标题", "title", item.ItemName);
                }
                if (hide.IndexOf("HideDesc") == -1)
                {
                    from.AddText("图文描述", "desc", item.ItemDesc);
                }
                if (hide.IndexOf("HideLeft") == -1)
                {
                    from.AddText("左角价格", "left", data.Get("left"));
                }
                if (hide.IndexOf("HideRight") == -1)
                {
                    from.AddText("右角说明", "right", data.Get("right"));
                }
                from.AddNumber("顺序", "Seq", item.Seq);

                from.Submit("确认", request, "Design");
                return(from);
            }, "Setting");

            entity.Where.Reset().And().Equal(new Design_Item()
            {
                Id = item.Id
            });
            entity.Update(new Design_Item()
            {
                ItemName     = meta.Get("title"),
                ItemDesc     = meta.Get("desc"),
                Data         = UMC.Data.JSON.Serialize(meta),
                ModifiedDate = DateTime.Now,
                Seq          = Utility.IntParse(meta.Get("Seq"), 0)
            });


            //entity.Where.reset().And().Equal(new Design_Item().Id(item.Id));
            //entity.update(new Design_Item().ItemName(meta.get("title"))
            //        .ItemDesc(meta.get("desc"))
            //        .Data(UMC.Data.JSON.serialize(meta))
            //        .ModifiedDate(new Date()).Seq(Utility.parse(meta.get("Seq"), 0)));
        }
コード例 #21
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var config = this.AsyncDialog("Key", g => this.DialogValue("none"));

            switch (config)
            {
            case "Version":
            case "Builder":
            case "json":
            case "Android":
            case "IOS":
                break;

            default:
                if (request.IsMaster == false)
                {
                    this.Prompt("只有管理员才能设置App");
                }
                break;
            }
            var file = Reflection.ConfigPath("App.json");

            if (System.IO.File.Exists(file) == false)
            {
                using (System.IO.Stream stream = new System.Net.Http.HttpClient().GetStreamAsync("http://oss.365lu.cn/UserResources/demo.json").Result)
                {
                    UMC.Data.Utility.Copy(stream, file);
                }
            }
            var appConfig = Data.JSON.Deserialize(Utility.Reader(file)) as Hashtable;

            switch (config)
            {
            case "Version":
            {
                int vindex = request.UserAgent.IndexOf("android");
                if (vindex > 0)
                {
                    var v    = request.UserAgent.Substring(request.UserAgent.IndexOf("V", vindex) + 1);
                    var cfgs = UMC.Configuration.ProviderConfiguration.GetProvider(Reflection.ConfigPath("Version.xml"));
                    if (cfgs == null)
                    {
                        this.Prompt("提示", "当前已经是最新版本");
                    }

                    var provider = cfgs[config];
                    if (provider != null)
                    {
                        if (Data.Utility.IntParse(provider["versionCode"], 0) > UMC.Data.Utility.IntParse(v, 0))
                        {
                            this.AsyncDialog("Confirm", g =>
                                {
                                    return(new UMC.Web.UIConfirmDialog("您有新版本,点击确认安装")
                                    {
                                        Title = "新版本安装"
                                    });
                                });
                            var meta = new UMC.Web.WebMeta();
                            meta.Put("name", provider.Name);
                            meta.Put("text", provider["text"]);
                            meta.Put("title", provider["title"]);
                            meta.Put("src", provider["src"]).Put("type", "Download");
                            this.Context.Send(meta, true);
                        }
                        else
                        {
                            this.Prompt("提示", "当前已经是最新版本");
                        }
                    }
                    else
                    {
                        this.Prompt("提示", "当前已经是最新版本");
                    }
                }
                else
                {
                    this.Prompt("苹果版本自动更新");
                }
            }
            break;

            case "Builder":
                if (String.IsNullOrEmpty(appConfig["AppName"] as string))
                {
                    this.Prompt("应用名称不能为空");
                }
                if (String.IsNullOrEmpty(appConfig["IconSrc"] as string))
                {
                    this.Prompt("请上传图标");
                }
                if (String.IsNullOrEmpty(appConfig["BgSrc"] as string))
                {
                    this.Prompt("请上传启动图");
                }
                var dataKey = new Hashtable();
                dataKey["root"]      = Utility.GetRoot(request.Url);
                dataKey["host"]      = new Uri(request.Url, "/").AbsoluteUri.Trim('/');
                appConfig["DataKey"] = dataKey;
                response.Redirect(appConfig);
                break;

            case "json":
                appConfig["IsMaster"] = request.IsMaster;
                response.Redirect(appConfig);
                break;

            case "Reset":
            {
                var ResetName = this.AsyncDialog("Reset", g =>
                    {
                        var k = new UISelectDialog()
                        {
                            Title = "选择参考的默认的界面架构"
                        };
                        k.Options.Add("DOME架构", "demo");
                        return(k);
                    });
                String stream = new System.Net.Http.HttpClient().GetStringAsync(String.Format("http://oss.365lu.cn/UserResources/{0}.json", ResetName)).Result;

                var appConfig2 = Data.JSON.Deserialize(stream) as Hashtable;
                appConfig2["BgSrc"]   = appConfig["BgSrc"];
                appConfig2["IconSrc"] = appConfig["IconSrc"];
                appConfig2["AppName"] = appConfig["AppName"];
                appConfig2["Android"] = appConfig["Android"];
                appConfig2["IOS"]     = appConfig["IOS"];
                appConfig             = appConfig2;
            }
            break;

            case "News":
            {
                var key = this.AsyncDialog("Sheet", g =>
                    {
                        var k = new UIFormDialog()
                        {
                            Title = "新增Bar"
                        };
                        k.AddText("标题", "text", String.Empty);
                        k.AddOption("图标", "icon").Command("System", "Icon");
                        k.AddCheckBox("", "max", "no").Put("显示大按钮", "true");
                        k.AddRadio("Bar加载类型", "Type")
                        .Put("默认主页", "Home").Put("电商购物篮", "Cart").Put("电商品类页", "Category").Put("Tabs", "Tab配置页").Put("点击项", "Click")
                        .Put("基本页", "Pager");
                        k.Submit("确认提交", request, "AppConfig");
                        return(k);
                    });
                var footbar = new ArrayList(appConfig["footBar"] as Array);
                var data    = new WebMeta().Put("key", key["Type"]).Put("text", key["text"]).Put("icon", key["icon"]);
                if ((key["max"] ?? "").Contains("true"))
                {
                    data.Put("max", true);
                }
                footbar.Add(data);
                appConfig["footBar"] = footbar;
            }
            break;

            case "Android":
            case "IOS":
                appConfig[config] = this.AsyncDialog("Value", g =>
                {
                    var k = new UITextDialog()
                    {
                        Title = config + "下载地址", DefaultValue = appConfig[config] as string
                    };
                    return(k);
                });
                break;

            case "BgSrc":
            case "IconSrc":
            {
                var AppName = this.AsyncDialog("Value", g =>
                    {
                        var k = new UITextDialog()
                        {
                            Title = "值"
                        };
                        return(k);
                    });
                var Key  = String.Format("UserResources/{0}/{1}/{2}", Utility.GetRoot(request.Url), config, AppName.Substring(AppName.LastIndexOf('/') + 1));
                var webR = UMC.Data.WebResource.Instance();
                webR.Transfer(new Uri(AppName), Key);
                appConfig[config] = new Uri(request.Url, webR.WebDomain() + Key).AbsoluteUri;
            }
            break;

            case "AppName":
            {
                var AppName = this.AsyncDialog("AppName", g =>
                    {
                        var k = new UITextDialog()
                        {
                            Title        = "应用名称",
                            DefaultValue = appConfig["AppName"] as string
                        };
                        return(k);
                    });
                appConfig["AppName"] = AppName;
            }
            break;

            case "Del":
            {
                var footbar = new ArrayList(appConfig["footBar"] as Array);

                var index = Utility.IntParse(this.AsyncDialog("Index", "0"), -1);
                footbar.RemoveAt(index);
                appConfig["footBar"] = footbar;
            }
            break;

            default:
            {
                var footbar = new ArrayList(appConfig["footBar"] as Array);
                var index   = Utility.IntParse(this.AsyncDialog("Index", "0"), -1);

                var hash     = footbar[index] as Hashtable;
                var settings = this.AsyncDialog("Settings", g =>
                    {
                        var fm   = new UIFormDialog();
                        fm.Title = "图标";
                        fm.AddText("标题", "text", hash["text"] as string);
                        fm.AddOption("图标", "icon", hash["icon"] as string, hash["icon"] as string).Command("System", "Icon");
                        switch (config)
                        {
                        case "Setting":
                            switch (hash["key"] as string ?? "Click")
                            {
                            case "Home":
                            case "Category":
                                break;

                            case "Cart":
                                fm.AddCheckBox("", "max", "no").Put("显示大按钮", "true", hash.ContainsKey("max"));
                                break;

                            case "Click":
                                fm.AddCheckBox("", "max", "no").Put("显示大按钮", "true", hash.ContainsKey("max"));
                                var click = (hash["click"] as Hashtable) ?? new Hashtable();
                                fm.AddText("事件模块", "model", click["model"] as string);
                                fm.AddText("事件指令", "cmd", click["cmd"] as string);
                                fm.AddText("事件参数", "send", click["send"] as string).NotRequired();
                                break;

                            case "Tabs":
                                fm.AddText("数据源模块", "model", hash["model"] as string);
                                fm.AddText("数据源指令", "cmd", hash["cmd"] as string);
                                break;

                            case "Pager":
                                fm.AddText("加载模块", "model", hash["model"] as string);
                                fm.AddText("加载指令", "cmd", hash["cmd"] as string);
                                break;

                            default:
                                this.Prompt("固定页面,不支持设置");;
                                break;
                            }
                            break;
                        }
                        return(fm);
                    });

                hash["text"] = settings["text"];
                hash["icon"] = settings["icon"];
                if ((settings["max"] ?? "").Contains("true"))
                {
                    hash["max"] = true;
                }
                else
                {
                    hash.Remove("max");
                }
                switch (hash["key"] as string)
                {
                case "Click":
                    var click = new WebMeta().Put("model", settings["model"])
                                .Put("cmd", settings["cmd"]);
                    if (String.IsNullOrEmpty(settings["model"]) == false)
                    {
                        click.Put("send", settings["send"]);
                    }
                    hash["click"] = click;
                    break;

                case "Cart":
                    break;

                case "Tabs":
                    hash["model"] = settings["model"];
                    hash["cmd"]   = settings["cmd"];
                    break;

                case "Pager":
                    hash["model"] = settings["model"];
                    hash["cmd"]   = settings["cmd"];
                    break;
                }
            }
            break;
            }

            Utility.Writer(file, Data.JSON.Serialize(appConfig), false);
            this.Context.Send("AppConfig", new WebMeta().Put("Config", appConfig), true);
        }