London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!

Loading...
Area: Optimizely CMS
ARCHIVED This content is retired and no longer maintained. See the latest version here.

The following example shows how to create the dashboard view.

C#
using EPiServer.Framework.Localization;
using EPiServer.Shell.ViewComposition;
using EPiServer.Shell.ViewComposition.Containers;
using EPiServer.Shell.Web;
using EPiServer.Web.Routing;

namespace EPiServer.Shell.UI.Models
{
    [CompositeView]
    public class DashboardViewModel : ICompositeView, IRoutable
    {
        private string _routeSegment;
        private IContainer _rootContainer;
        private readonly LocalizationService _localizationService;

        /// <summary>
        /// Initializes a new instance of the <see cref="DashboardViewModel"/> class.
        /// </summary>
        /// <param name="localizationService">The localization service used for getting localized resources.</param>
        public DashboardViewModel(LocalizationService localizationService)
        {
            _localizationService = localizationService;
        }

        /// <summary>
        /// Gets the root <see cref="IContainer"/> that contains the different panels for the view.
        /// </summary>
        /// <value>The container.</value>
        public IContainer RootContainer
        {
            get
            {
                if (_rootContainer == null)
                {
                    _rootContainer = new BorderContainer();

                    TabContainer tabContainer = new TabContainer
                        {
                            ContainersPlugInArea = ShellPlugInArea.DashboardRoot,
                            PlugInArea = ShellPlugInArea.DashboardRoot,
                            ContainerType = ContainerType.User
                        };

                    var defaultTab = new ComponentContainer
                        {
                            PlugInArea = ShellPlugInArea.DashboardDefaultTab
                        };
                    defaultTab.Settings["numberOfColumns"] = 2;
                    defaultTab.Settings["title"] = LocalizationService.Current.GetString("/episerver/shell/ui/resources/tabcontainer/newtabname");
                    defaultTab.Settings["closable"] = true;
                    tabContainer.Components.Add(defaultTab);

                    ((BorderContainer)_rootContainer).Add(tabContainer, new BorderSettingsDictionary(BorderContainerRegion.Center));

                    _rootContainer.Settings.Add("id", Name + "_rootContainer");
                    _rootContainer.Settings.Add("persist", "true");//Persist window size on client
                }
                return _rootContainer;
            }
        }

        /// <summary>
        /// Gets the name of the view. Used or finding views.
        /// </summary>
        /// <value>The name.</value>
        public string Name
        {
            get { return "/episerver/dashboard"; }
        }


        /// <summary>
        /// Creates a new instance of the view.
        /// </summary>
        /// <returns>A new instance of the view.</returns>
        public ICompositeView CreateView()
        {
            return new DashboardViewModel(_localizationService);
        }


        /// <summary>
        /// Gets a localized title for this view
        /// </summary>
        public string Title
        {
            get { return _localizationService.GetString("/episerver/shell/ui/resources/dashboardview/title"); }
        }

        public string RouteSegment
        {
            get { return _routeSegment ?? (_routeSegment = "dashboard"); }
            set { _routeSegment = value; }
        }

        public string DefaultContext
        {
            get { return null; }
        }
    }
}

Last updated: Sep 21, 2015