Example #1
0
        public UIStyle Name(String key)
        {
            if (meta.ContainsKey(key))
            {
                var obj = meta.GetDictionary()[key];
                if (obj is UIStyle)
                {
                    return((UIStyle)obj);
                }
            }

            var style = new UIStyle();

            meta.Put(key, style);
            return(style);
        }
        public override 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);
        }
Example #3
0
        /// <summary>
        /// 向发送客户端发送数据事情
        /// </summary>
        /// <param name="data">发送的数据</param>
        /// <param name="endResponse"></param>
        public void Send(WebMeta data, bool endResponse)
        {
            WebResponse response = this.Response;

            if (data.ContainsKey("type") && data["type"] == "UI.Event")
            {
                if (runtime.Client.UIEvent != null)
                {
                    var click = runtime.Client.UIEvent;
                    var key   = data["key"];
                    if (String.Equals(key, "Click") && data.GetDictionary()["value"] is ListItem)
                    {
                        runtime.Client.UIEvent = null;
                        runtime.Client.Session.Storage(new Hashtable(), this);
                        var value    = data.GetDictionary()["value"] as ListItem;
                        var objValue = click.Send();
                        if (objValue is Hashtable)
                        {
                            var val = objValue as Hashtable;
                            var em  = val.GetEnumerator();

                            while (em.MoveNext())
                            {
                                if (String.Equals(em.Value, "Value"))
                                {
                                    val[em.Key] = value.Value;
                                    val[String.Format("{0}_Text", em.Key)] = value.Text;
                                    //val.Put(em.Key as string, value.Value);
                                    break;
                                }
                            }
                            response.Redirect(click.Model, click.Command, new WebMeta(val), false);
                        }
                        else if (objValue is WebMeta)
                        {
                            var val = objValue as WebMeta;
                            var em  = val.GetDictionary().GetEnumerator();

                            while (em.MoveNext())
                            {
                                if (String.Equals(em.Value, "Value"))
                                {
                                    val.Put(em.Key as string, value.Value);
                                    val[String.Format("{0}_Text", em.Key)] = value.Text;
                                    break;
                                }
                            }

                            response.Redirect(click.Model, click.Command, val, false);
                        }
                        else
                        {
                            response.Redirect(click.Model, click.Command, value.Value, false);
                        }
                    }
                }
            }
            response.ClientEvent |= WebEvent.DataEvent;
            if (response.Headers.ContainsKey("DataEvent"))
            {
                var ts = response.Headers.GetDictionary()["DataEvent"];
                if (ts is WebMeta)
                {
                    response.Headers.Set("DataEvent", (WebMeta)ts, data);
                }
                else if (ts is IDictionary)
                {
                    response.Headers.Set("DataEvent", new WebMeta((IDictionary)ts), data);
                }
                else if (ts is Array)
                {
                    var ats = new System.Collections.ArrayList();
                    ats.AddRange((Array)ts);
                    ats.Add(data);

                    response.Headers.Set("DataEvent", (WebMeta[])ats.ToArray(typeof(WebMeta)));
                }
                else
                {
                    response.Headers.Set("DataEvent", data);
                }
            }
            else
            {
                response.Headers.Set("DataEvent", data);
            }
            if (endResponse)
            {
                response.ClientEvent ^= response.ClientEvent & WebEvent.Normal;
                this.End();
            }
        }