Example #1
0
        public static MvcHtmlString History(this HtmlHelper html, int count, object domainObject = null, bool clearAll = false)
        {
            if (domainObject != null && !(domainObject is FindViewModel))
            {
                string url = html.Object(html.ObjectTitle(domainObject).ToString(), IdHelper.ViewAction, domainObject).ToString();
                html.ViewContext.HttpContext.Session.AddToCache(html.Framework(), domainObject, url, ObjectCache.ObjectFlag.BreadCrumb);
            }

            List <string> urls      = html.ViewContext.HttpContext.Session.AllCachedUrls(ObjectCache.ObjectFlag.BreadCrumb).ToList();
            int           sizeCache = urls.Count();
            int           skip      = sizeCache > count ? sizeCache - count : 0;

            urls = urls.Skip(skip).ToList();

            var tag = new TagBuilder("div");

            tag.AddCssClass(IdHelper.HistoryContainerName);

            foreach (string url in urls)
            {
                tag.InnerHtml += url;
            }

            if (urls.Any())
            {
                tag.InnerHtml += html.ControllerAction(MvcUi.Clear, IdHelper.ClearHistoryAction, IdHelper.HomeName, IdHelper.ClearButtonClass, "", new RouteValueDictionary(new { clearAll }));
            }

            return(MvcHtmlString.Create(tag.ToString()));
        }
Example #2
0
        public static MvcHtmlString TabbedHistory(this HtmlHelper html, int count, object domainObject = null)
        {
            List <string> existingUrls = html.ViewContext.HttpContext.Session.AllCachedUrls(ObjectCache.ObjectFlag.BreadCrumb).ToList();
            string        newUrl       = "";

            if (domainObject != null)
            {
                newUrl = html.Tab(html.ObjectTitle(domainObject).ToString(), IdHelper.ViewAction, domainObject).ToString();
                if (!(domainObject is FindViewModel) && !existingUrls.Contains(newUrl))
                {
                    html.ViewContext.HttpContext.Session.AddOrUpdateInCache(html.Framework(), domainObject, newUrl, ObjectCache.ObjectFlag.BreadCrumb);
                }
            }

            List <string> urls = html.ViewContext.HttpContext.Session.AllCachedUrls(ObjectCache.ObjectFlag.BreadCrumb).ToList();

            int sizeCache = urls.Count();
            int skip      = sizeCache > count ? sizeCache - count : 0;

            urls = urls.Skip(skip).ToList();

            var tag = new TagBuilder("div");

            tag.AddCssClass(IdHelper.TabbedHistoryContainerName);

            UrlData[] entries  = urls.Select(u => new UrlData(u)).ToArray();
            var       newEntry = new UrlData(newUrl);

            foreach (UrlData currentEntry in entries)
            {
                if (currentEntry.Equals(newEntry))
                {
                    currentEntry.SetActive();
                }

                UrlData nextEntry = GetNextEntry(entries, currentEntry);
                currentEntry.AddCloseThis(html, nextEntry);

                if (urls.Count > 1)
                {
                    currentEntry.AddCloseOthers(html);
                }

                currentEntry.AddCloseAll(html);
                tag.InnerHtml += currentEntry.ToString();
            }
            return(MvcHtmlString.Create(tag.ToString()));
        }
Example #3
0
        /// <summary>
        /// Return to view the last object in the history. If the history is empty return to the home page.
        /// </summary>
        public static MvcHtmlString CancelButton(this HtmlHelper html, object domainObject)
        {
            var fvm = domainObject as FindViewModel;

            if (fvm != null)
            {
                // if dialog return to target - unless it's a service
                object target = fvm.ContextObject;
                domainObject = html.Framework().NakedObjectManager.CreateAdapter(target, null, null).Spec is IObjectSpec ? target : null;
            }

            // if target is transient  cancel back to history
            if (domainObject != null && html.Framework().NakedObjectManager.CreateAdapter(domainObject, null, null).ResolveState.IsTransient())
            {
                domainObject = null;
            }

            string nextUrl = domainObject == null ? "" : html.Tab(html.ObjectTitle(domainObject).ToString(), IdHelper.ViewAction, domainObject).ToString();

            UrlData nextEntry;

            if (string.IsNullOrEmpty(nextUrl))
            {
                List <string> existingUrls    = html.ViewContext.HttpContext.Session.AllCachedUrls(ObjectCache.ObjectFlag.BreadCrumb).ToList();
                var           existingEntries = existingUrls.Select(u => new UrlData(u)).ToArray();
                nextEntry = GetLastEntry(existingEntries);
            }
            else
            {
                nextEntry = new UrlData(nextUrl);
            }

            var cancelForm = new UrlData("");

            cancelForm.AddCancel(html, nextEntry);

            return(MvcHtmlString.Create(cancelForm.ToString()));
        }
        /// <summary>
        ///     Display name of object
        /// </summary>
        public static MvcHtmlString ObjectTitle(this HtmlHelper html, object model)
        {
            INakedObject nakedObject = html.Framework().NakedObjectManager.CreateAdapter(model, null, null);

            return(html.ObjectTitle(nakedObject));
        }
        private static MvcHtmlString GetStandalone(HtmlHelper html, IObjectFacade collectionNakedObject, Func<IAssociationFacade, bool> filter, Func<IAssociationFacade, int> order, TagBuilder tag, bool withTitle) {
            Func<IObjectFacade, string> linkFunc = item => html.Object(html.ObjectTitle(item).ToString(), IdConstants.ViewAction, item.Object).ToString();

            string menu = collectionNakedObject.Specification.IsQueryable ? html.MenuOnTransient(collectionNakedObject.GetDomainObject()).ToString() : "";
            string id = collectionNakedObject.Oid == null ? "" : Encode(html.Facade().OidTranslator.GetOidTranslation(collectionNakedObject));

            // can only be standalone and hence page if we have an id 
            tag.InnerHtml += html.CollectionTable(collectionNakedObject, linkFunc, filter, order, !String.IsNullOrEmpty(id), collectionNakedObject.Specification.IsQueryable, withTitle);

            return html.WrapInForm(IdConstants.EditObjectAction,
                html.Facade().GetObjectTypeShortName(collectionNakedObject.GetDomainObject()),
                menu + tag,
                IdConstants.ActionName,
                new RouteValueDictionary(new { id }));
        }
        /// <summary>
        ///     Display name of object
        /// </summary>
        public static MvcHtmlString ObjectTitle(this HtmlHelper html, object model)
        {
            var nakedObject = html.Facade().GetObject(model);

            return(html.ObjectTitle(nakedObject));
        }
Example #7
0
        private static MvcHtmlString GetStandalone(HtmlHelper html, INakedObject collectionNakedObject, Func<INakedObjectAssociation, bool> filter, Func<INakedObjectAssociation, int> order, TagBuilder tag, bool withTitle) {
            Func<INakedObject, string> linkFunc = item => html.Object(html.ObjectTitle(item).ToString(), IdHelper.ViewAction, item.Object).ToString();

            string menu = collectionNakedObject.Specification.IsQueryable ? html.MenuOnTransient(collectionNakedObject.Object).ToString() : "";
            string id = collectionNakedObject.Oid == null ? "" : FrameworkHelper.GetObjectId(collectionNakedObject);

            // can only be standalone and hence page if we have an id 
            tag.InnerHtml += html.CollectionTable(collectionNakedObject, linkFunc, filter, order, !string.IsNullOrEmpty(id), collectionNakedObject.Specification.IsQueryable, withTitle);

            return html.WrapInForm(IdHelper.EditObjectAction,
                                   FrameworkHelper.GetObjectTypeName(collectionNakedObject.Object),
                                   menu + tag,
                                   IdHelper.ActionName,
                                   new RouteValueDictionary(new {id}));
        }