예제 #1
0
        public void SetUp()
        {
            var specification = new WidgetSpecification(
                "widget name",
                Enumerable.Empty<PropertySpecification>(),
                new IComponent[]
                    {
                        new Atom("atom", Enumerable.Empty<Property>()),
                        new Placeholder("area 1"),
                        new Container("container", Enumerable.Empty<Property>(), new[] { new Placeholder("area 2") })
                    });

            var widget = new Widget(
                "widget name",
                new[]
                    {
                        new Area("area 1", new IComponent[] { new Atom("atom", Enumerable.Empty<Property>()), new Atom("atom", Enumerable.Empty<Property>()) }),
                        new Area("area 2", new IComponent[] { new Atom("atom", Enumerable.Empty<Property>()), new Atom("atom", Enumerable.Empty<Property>()), new Atom("atom", Enumerable.Empty<Property>()) })
                    });

            var buildContext = new BuildData(Enumerable.Empty<IContextItem>());

            var builder = new Builder(RenderingInstructions.BuildForPreview(), n => specification, null);

            this.instance = (WidgetInstance)widget.Build(builder, new[] { 0 }, buildContext);
        }
        public IActionResult Create(IFormCollection formCollection)
        {
            var model = ToCarouselWidgetFormModel(formCollection);
            if (ModelState.IsValid)
            {
                foreach(var item in model.Items)
                {
                    item.Image = SaveFile(item.UploadImage);
                }

                var widgetInstance = new WidgetInstance
                {
                    Name = model.Name,
                    WidgetId = 1,
                    WidgetZoneId = model.WidgetZoneId,
                    Data = JsonConvert.SerializeObject(model.Items)
                };

                _widgetInstanceRepository.Add(widgetInstance);
                _widgetInstanceRepository.SaveChange();
                return Ok();
            }
            return new BadRequestObjectResult(ModelState);
        }
예제 #3
0
        public async Task <IActionResult> Post(IFormCollection formCollection)
        {
            var model = ProductFormWidgetFormModel(formCollection);

            if (ModelState.IsValid)
            {
                var widgetInstance = new WidgetInstance
                {
                    Name         = model.Name,
                    WidgetId     = widgetid,
                    WidgetZoneId = model.WidgetZoneId,
                    PublishStart = model.PublishStart,
                    PublishEnd   = model.PublishEnd,
                    DisplayOrder = model.DisplayOrder,
                    Data         = JsonConvert.SerializeObject(model.Settings)
                };

                _widgetInstanceRepository.Add(widgetInstance);
                _widgetInstanceRepository.SaveChanges();
                return(CreatedAtAction(nameof(Get), new { id = widgetInstance.Id }, null));
            }

            return(BadRequest(ModelState));
        }
예제 #4
0
        public async Task <IActionResult> Post([FromBody] RecentlyViewedWidgetForm model)
        {
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var widgetInstance = new WidgetInstance
                {
                    Name         = model.Name,
                    WidgetId     = "RecentlyViewedWidget",
                    WidgetZoneId = model.WidgetZoneId,
                    Data         = model.ItemCount.ToString(),
                    PublishStart = model.PublishStart,
                    PublishEnd   = model.PublishEnd,
                    DisplayOrder = model.DisplayOrder,
                };

                _widgetInstanceRepository.Add(widgetInstance);
                await _widgetInstanceRepository.SaveChangesAsync();

                return(CreatedAtAction(nameof(Get), new { id = widgetInstance.Id }, null));
            }
        }
 public void AddToWidgetInstances(WidgetInstance widgetInstance)
 {
     base.AddObject("WidgetInstances", widgetInstance);
 }
예제 #6
0
        public IResult Render(WidgetInstance widget)
        {
            var result = new CompositeResult(widget.Components.Select(c => c.Render(this)));

            return this.Annotate(widget, result);
        }
 public static WidgetInstance CreateWidgetInstance(int id, int orderNo, bool expanded, bool maximized, bool resized, int width, int height, string title, string state, int versionNo, global::System.DateTime createdDate, byte[] lastUpdate)
 {
     WidgetInstance widgetInstance = new WidgetInstance();
     widgetInstance.Id = id;
     widgetInstance.OrderNo = orderNo;
     widgetInstance.Expanded = expanded;
     widgetInstance.Maximized = maximized;
     widgetInstance.Resized = resized;
     widgetInstance.Width = width;
     widgetInstance.Height = height;
     widgetInstance.Title = title;
     widgetInstance.State = state;
     widgetInstance.VersionNo = versionNo;
     widgetInstance.CreatedDate = createdDate;
     widgetInstance.LastUpdate = lastUpdate;
     return widgetInstance;
 }
예제 #8
0
 internal static string ToXml(this WidgetInstance widget)
 {
     return(XmlSerializerUtility.SerializeToXml(widget.ToXmlElement()));
 }
예제 #9
0
 public IResult Render(WidgetInstance widget)
 {
     throw new NotImplementedException();
 }
예제 #10
0
        public ActionResult Generic(int id, string website)
        {
            var contentUrl = "";
            //Guid gid = new Guid(id);
            WidgetInstance _widget = null;

            try
            {
                _widget = dataContext.Widgets.Find(id);
            }
            catch
            {
                System.Threading.Thread.CurrentThread.Join(100);
                _widget = dataContext.Widgets.Find(id);
            }

            if (_widget == null)
            {
                return(HttpNotFound());
            }

            ViewBag.WidgetInstance = _widget;

            var descroptor = _widget.WidgetDescriptor;

            contentUrl = descroptor.ResolveUri(descroptor.ContentUrl, Consts.WIDGET_PKG_PATH);

            //if (Request.IsAjaxRequest())
            // {
            //1.Load values from default
            if (!string.IsNullOrEmpty(descroptor.Defaults))
            {
                Dictionary <string, PropertyDescriptor> preferenceStore = new Dictionary <string, PropertyDescriptor>();
                var properties = descroptor.Properties;
                foreach (var pro in properties)
                {
                    preferenceStore.Add((string)pro["name"], new PropertyDescriptor
                    {
                        Name       = (string)pro["name"],
                        IsReadonly = (bool)pro["readonly"],
                        Value      = pro["value"]
                    });
                }

                var _pros = _widget.ReadUserPreferences();
                foreach (var p in _pros)
                {
                    var key = (string)p["name"];
                    if (preferenceStore.ContainsKey(key))
                    {
                        preferenceStore[key].IsReadonly = (bool)p["readonly"];
                        preferenceStore[key].Value      = p["value"];
                    }
                }
                ViewBag.PropertyDescriptors = preferenceStore;
            }
            //}

            if (string.IsNullOrEmpty(contentUrl)) //View only
            {
                return(PartialView());
            }

            if (descroptor.ContentType == "application/x-ms-aspnet")
            {
                return(PartialView(contentUrl));
            }
            else
            {
                //W3C Widget and Google gadget
                ViewBag.ContentUrl = contentUrl;
                return(PartialView());
            }
        }
 public void Update(WidgetInstance wi)
 {
     RemoveWidgetInstanceCacheEntries(wi.Id);
     _database.Update<WidgetInstance>(wi);
 }
예제 #12
0
        public IResult Render(WidgetInstance widget)
        {
            var result = new CompositeResult(widget.Components.Select(c => c.Render(this)));

            return(this.Annotate(widget, result));
        }
예제 #13
0
 private void ClearHtmlCache(WidgetInstance widget)
 {
     var key = "widget" + widget.ID.ToString() + "_caching_html";
     if (HttpContext.Cache[key] != null)
         HttpContext.Cache.Remove(key);
 }
예제 #14
0
 public void Update(WidgetInstance wi)
 {
     RemoveWidgetInstanceCacheEntries(wi.Id);
     _database.Update <WidgetInstance>(wi);
 }
예제 #15
0
 public void Delete(WidgetInstance wi)
 {
     RemoveWidgetInstanceCacheEntries(wi.Id);
     RemoveWidgetZoneCacheEntries(wi.WidgetZone.ID);
     _database.Delete <WidgetInstance>(wi);
 }
예제 #16
0
 public IResult Render(WidgetInstance component)
 {
     return(component.RenderingInstructions.AnnotateComponentPaths
         ? new AnnotatedResult(this.inner.Render(component), component.Path)
         : this.inner.Render(component));
 }
예제 #17
0
 public void NewWidgetAdded(WidgetInstance newWidget)
 {
     this.WidgetTabHost.AddNewWidget(newWidget);
 }
예제 #18
0
 /// <summary>
 /// Copies the widget by first loading back state data and then resetting id.
 /// </summary>
 /// <param name="widget"></param>
 public static void CopyWidget(WidgetInstance widget)
 {
     // Reset the id so it's not marked as persistant and load back state.
     widget.LoadState(); 
     widget.ToNewCopy();
 }
 public void Delete(WidgetInstance wi)
 {
     RemoveWidgetInstanceCacheEntries(wi.Id);
     RemoveWidgetZoneCacheEntries(wi.WidgetZone.ID);
     _database.Delete<WidgetInstance>(wi);
 }
        protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
        {
            List<Widget> defaultWidgets = null;

            if (System.Web.Security.Roles.Enabled && !string.IsNullOrEmpty(UserName))
            {
               defaultWidgets = DatabaseHelper.GetList<Widget, string, Dropthings.DataAccess.Enumerations.WidgetTypeEnum, bool>(DatabaseHelper.SubsystemEnum.Widget, UserName, Dropthings.DataAccess.Enumerations.WidgetTypeEnum.PersonalPage, true,
                LinqQueries.CompiledQuery_GetDefaultWidgetsByRole).Distinct().ToList(); ;
            }
            else
            {
                defaultWidgets = DatabaseHelper.GetList<Widget, bool>(DatabaseHelper.SubsystemEnum.Widget,
                    true, LinqQueries.CompiledQuery_GetWidgetByIsDefault);
            }

            var widgetsPerColumn = (int)Math.Ceiling((float)defaultWidgets.Count / 3.0);

            var row = 0;
            var col = 0;

            DatabaseHelper.InsertList<WidgetInstance, Widget>(DatabaseHelper.SubsystemEnum.WidgetInstance,
                defaultWidgets, (widget) =>
                    {
                        var newWidget = new WidgetInstance();

                        var widgetZone = DatabaseHelper.GetSingle<WidgetZone, int, int>(DatabaseHelper.SubsystemEnum.WidgetInstance,
                            this.PageId, col, LinqQueries.CompiledQuery_GetWidgetZoneByPageId_ColumnNo);

                        newWidget.WidgetZoneId = widgetZone.ID;
                        newWidget.OrderNo = row;
                        newWidget.CreatedDate = DateTime.Now;
                        newWidget.Expanded = true;
                        newWidget.Title = widget.Name;
                        newWidget.VersionNo = 1;
                        newWidget.WidgetId = widget.ID;
                        newWidget.State = widget.DefaultState;

                        row++;
                        if (row >= widgetsPerColumn)
                        {
                            row = 0;
                            col++;
                        }

                        return newWidget;
                    });

            return ActivityExecutionStatus.Closed;
        }
예제 #21
0
 /// <summary>
 /// Initialize the WidgetHelper instance by specified WidgetInstance object.
 /// </summary>
 /// <param name="widget"></param>
 public WidgetHelper(WidgetInstance widget)
 {
     this.instance = widget;
 }
    private IWidgetHost CreateWidgetContainerFromWidgetInstance(EventBrokerService eventBroker, WidgetInstance instance)
    {
        var widget = LoadControl(this.WidgetContainerPath) as Control;

        widget.ID = "WidgetContainer" + instance.Id.ToString();

        var widgetHost = widget as IWidgetHost;

        widgetHost.WidgetInstance = instance;
        widgetHost.IsLocked       = this.IsLocked;
        widgetHost.EventBroker    = eventBroker;

        widgetHost.Deleted += new Action <WidgetInstance, IWidgetHost>(Widget_Deleted);

        return(widgetHost);
    }
예제 #23
0
 private void ClearCache(WidgetInstance widget)
 {
     var key = "page" + widget.PageID.ToString() + "_widgets";
     if (HttpContext.Cache[key] != null)
         HttpContext.Cache.Remove(key);
 }
예제 #24
0
 public IResult Render(WidgetInstance widget)
 {
     throw new NotImplementedException();
 }
예제 #25
0
 public IResult Render(WidgetInstance component)
 {
     return component.RenderingInstructions.AnnotateComponentPaths
         ? new AnnotatedResult(this.inner.Render(component), component.Path)
         : this.inner.Render(component);
 }
예제 #26
0
    public void AddNewWidget(WidgetInstance wi)
    {
        var widgetZoneControl = this.FindControl(GetWidgetZoneControlId(wi.WidgetZone.ID)) as WidgetInstanceZone;

        widgetZoneControl.AddNewWidget(_EventBroker, wi);
    }
        /*
         * == given specifications ==
         * Widget specification 1
         * ├─ Atom A
         * ├─ Placeholder
         * └─ Container A
         *    └─ Placeholder
         *
         * Widget specification 2
         * ├─ Placeholder
         * └─ Widget (widget specification 1)
         *    ├─ Area
         *    │  └─ Placeholder
         *    └─ Area
         *       └─ Atom B
         *
         * == and widget template ==
         * Widget (widget specification 2)
         * ├─ Area
         * │  └─ Atom C
         * └─ Area
         *    └─ Atom D
         *
         * == should build to ==
         * WidgetInstance (widget specification 2)      0
         * ├─ PlaceholderInstance                       0.0
         * │  └─ AtomInstance C                         0.0.0
         * └─ WidgetInstance (widget specification 1)   1
         *    ├─ AtomInstance A                         1.0
         *    ├─ PlaceholderInstance                    1.1
         *    │  └─ PlaceholderInstance                 1.1.0
         *    │    └─ AtomInstance D                    1.1.0.0
         *    └─ ContainerInstance A                    1.2
         *       └─ PlaceholderInstance                 1.2.0
         *          └─ AtomInstance B                   1.2.0.0
         */
        public void SetUp()
        {
            var specification1 = new WidgetSpecification(
                "widget 1",
                Enumerable.Empty <PropertySpecification>(),
                new IComponent[]
            {
                new Atom("atom a", Enumerable.Empty <Property>()),
                new Placeholder("area 1"),
                new Container(
                    "container a",
                    Enumerable.Empty <Property>(),
                    new[]
                {
                    new Placeholder("area 2")
                })
            });

            var specification2 = new WidgetSpecification(
                "widget 2",
                Enumerable.Empty <PropertySpecification>(),
                new IComponent[]
            {
                new Placeholder("area 1"),
                new Widget(
                    "widget 1",
                    new[]
                {
                    new Area(
                        "area 1",
                        new[]
                    {
                        new Placeholder("area 2")
                    }),
                    new Area(
                        "area 2",
                        new[]
                    {
                        new Atom("atom b", Enumerable.Empty <Property>())
                    })
                })
            });

            var widget = new Widget(
                "widget 2",
                new[]
            {
                new Area(
                    "area 1",
                    new IComponent[]
                {
                    new Atom("atom c", Enumerable.Empty <Property>())
                }),
                new Area(
                    "area 2",
                    new IComponent[]
                {
                    new Atom("atom d", Enumerable.Empty <Property>()),
                })
            });

            var buildContext = new BuildData(Enumerable.Empty <IContextItem>());

            var builder = new Builder(RenderingInstructions.BuildForPreview(), n => n == "widget 1" ? specification1 : specification2, null);

            this.instance = (WidgetInstance)widget.Build(builder, new[] { 0 }, buildContext);
        }
        public WidgetInstance Insert(WidgetInstance wi)
        {
            var zone = wi.WidgetZone;
            var widget = wi.Widget;

            wi.WidgetZone = null;
            wi.Widget = null;
            
            var widgetInstance = _database.Insert<WidgetZone, Widget, WidgetInstance>(
                zone, widget,
                (z, me) => me.WidgetZone = z,
                (w, me) => me.Widget = w,
                wi);

            wi.WidgetZone = zone;
            wi.Widget = widget;

            RemoveWidgetZoneCacheEntries(widgetInstance.WidgetZone.ID);
            return widgetInstance;
        }