Exemplo n.º 1
0
        private T InvokeAction <T>(IObjectFacade nakedObject, IActionFacade action, FormCollection parameters, out bool valid)
        {
            ArgumentsContextFacade    ac;
            IOidTranslation           oid = Facade.OidTranslator.GetOidTranslation(nakedObject);
            ActionResultContextFacade contextFacade;

            if (ActionExecutingAsContributed(action, nakedObject) && action.ParameterCount == 1)
            {
                // contributed action being invoked with a single parm that is the current target
                // no dialog - go straight through
                ac = new ArgumentsContextFacade {
                    Values = new Dictionary <string, object>(), ValidateOnly = false
                };
                contextFacade = Facade.ExecuteObjectAction(oid, action.Id, ac);
            }
            else
            {
                ac = GetParameterValues(action, new ObjectAndControlData {
                    Form = parameters
                });
                contextFacade = Facade.ExecuteObjectAction(oid, action.Id, ac);
            }

            valid = contextFacade.HasResult;

            if (valid)
            {
                return(GetResult <T>(contextFacade));
            }

            return(default(T));
        }
Exemplo n.º 2
0
        public string GetParameterId(IActionFacade actionFacade, IActionParameterFacade parameterFacade)
        {
            IActionParameterSpec parameter = parameterFacade.WrappedSpec();
            IActionSpec          action    = actionFacade.WrappedSpec();

            return(action.OnSpec.ShortName + Sep + action.Id + Sep + NameUtils.CapitalizeName(parameter.Id));
        }
Exemplo n.º 3
0
        public string GetParameterAutoCompleteId(IActionFacade action, IActionParameterFacade parameterFacade)
        {
            IActionParameterSpec parameter = parameterFacade.WrappedSpec();
            var id = GetParameterInputId(action, parameterFacade);

            return(parameter.Spec.IsParseable ? id : id + Sep + AutoCompleteName);
        }
Exemplo n.º 4
0
        public string GetFindMenuId(IObjectFacade objectFacade, IActionFacade actionFacade, string propertyName)
        {
            IActionSpec action            = actionFacade == null ? null : actionFacade.WrappedSpec();
            string      contextActionName = action == null ? "" : Sep + action.Id;

            return(GetObjectId(objectFacade) + contextActionName + Sep + NameUtils.CapitalizeName(propertyName) + Sep + IdConstants.FindMenuName);
        }
Exemplo n.º 5
0
        internal ArgumentsContextFacade GetParameterValues(IActionFacade action, ObjectAndControlData controlData)
        {
            var values = action.Parameters.Select(parm => new { Id = IdHelper.GetParameterInputId(action, parm), Parm = parm }).ToDictionary(a => a.Parm.Id, a => GetParameterValue(a.Parm, a.Id, controlData));

            return(new ArgumentsContextFacade {
                Values = values, ValidateOnly = false
            });
        }
 public UriMtHelper(IOidStrategy oidStrategy, HttpRequestMessage req, ActionTypeContextFacade actionTypeContext)
     : this(oidStrategy, req)
 {
     action     = actionTypeContext.ActionContext.Action;
     spec       = actionTypeContext.OwningSpecification;
     cachedId   = "";
     CachedType = spec.DomainTypeName(oidStrategy);
 }
Exemplo n.º 7
0
 public BoardGame(
     IConsoleWrapper consoleWrapper,
     IActionFacade action
     )
 {
     _consoleWrapper = consoleWrapper;
     _action         = action;
 }
 private static bool ContextParameterIsCollection(IActionFacade contextAction, string propertyName)
 {
     if (contextAction != null)
     {
         var parameter = contextAction.Parameters.Single(p => p.Id == propertyName);
         return(parameter.Specification.IsCollection);
     }
     return(false);
 }
Exemplo n.º 9
0
 public UriMtHelper(IOidStrategy oidStrategy, HttpRequestMessage req, ActionContextFacade actionContext)
     : this(oidStrategy ,req) {
     action = actionContext.Action;
     objectFacade = actionContext.Target;
     spec = objectFacade.Specification;
     IOidTranslation oid = oidStrategy.FrameworkFacade.OidTranslator.GetOidTranslation(objectFacade);
     cachedId = oid.InstanceId;
     CachedType = oid.DomainType;
 }
Exemplo n.º 10
0
        public void ValidateParameter(IActionFacade action, IActionParameterFacade parm, IObjectFacade targetNakedObject, object value)
        {
            var isValid = parm.IsValid(targetNakedObject, value);

            if (!isValid.IsAllowed)
            {
                ModelState.AddModelError(IdHelper.GetParameterInputId(action, parm), isValid.Reason);
            }
        }
Exemplo n.º 11
0
        internal void SetSelectedParameters(IActionFacade action)
        {
            var refItems = action.Parameters.Where(p => !p.Specification.IsCollection && !p.Specification.IsParseable).Where(p => ValueProvider.GetValue(p.Id) != null).ToList();

            if (refItems.Any())
            {
                Dictionary <string, IObjectFacade> items = refItems.ToDictionary(p => IdHelper.GetParameterInputId(action, p), p => GetNakedObjectFromId(ValueProvider.GetValue(p.Id).AttemptedValue));
                items.ForEach(kvp => ViewData[kvp.Key] = kvp.Value);
            }
        }
 private static ActionContextFacade ActionContext(IActionFacade actionFacade, IObjectFacade target) =>
 new ActionContextFacade
 {
     MenuPath          = "",
     Target            = target,
     Action            = actionFacade,
     VisibleParameters = actionFacade.Parameters.Select(p => new ParameterContextFacade {
         Parameter = p, Action = actionFacade
     }).ToArray()
 };
Exemplo n.º 13
0
        internal void SetSelectedParameters(IObjectFacade nakedObject, IActionFacade action, IDictionary <string, string> dict)
        {
            var refItems = action.Parameters.Where(p => !p.Specification.IsCollection && !p.Specification.IsParseable).Where(p => dict.ContainsKey(p.Id)).ToList();

            if (refItems.Any())
            {
                refItems.ForEach(p => ValidateParameter(action, p, nakedObject, GetNakedObjectFromId(dict[p.Id]).GetDomainObject <object>()));
                Dictionary <string, IObjectFacade> items = refItems.ToDictionary(p => IdHelper.GetParameterInputId(action, p), p => GetNakedObjectFromId(dict[p.Id]));
                items.ForEach(kvp => ViewData[kvp.Key] = kvp.Value);
            }
        }
        public UriMtHelper(IOidStrategy oidStrategy, HttpRequestMessage req, ActionContextFacade actionContext)
            : this(oidStrategy, req)
        {
            action       = actionContext.Action;
            objectFacade = actionContext.Target;
            spec         = objectFacade.Specification;
            IOidTranslation oid = oidStrategy.FrameworkFacade.OidTranslator.GetOidTranslation(objectFacade);

            cachedId   = oid.InstanceId;
            CachedType = oid.DomainType;
        }
Exemplo n.º 15
0
        public string GetActionId(string propertyName, IActionFacade actionContextActionFacade, IObjectFacade actionObjectFacade, IObjectFacade targetObjectFacade, IActionFacade targetActionFacade)
        {
            IActionSpec         actionContextAction       = actionContextActionFacade == null ? null :  actionContextActionFacade.WrappedSpec();
            INakedObjectAdapter actionContextTarget       = actionObjectFacade == null ? null : actionObjectFacade.WrappedAdapter();
            IActionSpec         targetActionContextAction = targetActionFacade == null ? null : targetActionFacade.WrappedSpec();
            INakedObjectAdapter targetActionContextTarget = targetObjectFacade == null ? null : targetObjectFacade.WrappedAdapter();

            string contextActionName    = actionContextAction == null ? "" : actionContextAction.Id + Sep;
            string contextNakedObjectId = actionContextTarget == null || actionContextTarget == targetActionContextTarget ? "" : GetObjectId(actionObjectFacade) + Sep;
            string propertyId           = string.IsNullOrEmpty(propertyName) ? "" : NameUtils.CapitalizeName(propertyName) + Sep;

            return(contextNakedObjectId + contextActionName + propertyId + GetObjectId(targetObjectFacade) + Sep + targetActionContextAction.Id);
        }
Exemplo n.º 16
0
        public static ActionResultModel Create(IFrameworkFacade facade, IActionFacade action, IObjectFacade nakedObject, int page, int pageSize, string format)
        {
            var  result         = nakedObject.GetDomainObject <IEnumerable>();
            Type genericType    = result.GetType().IsGenericType ? result.GetType().GetGenericArguments().First() : typeof(object);
            Type armGenericType = result is IQueryable ? typeof(ActionResultModelQ <>) : typeof(ActionResultModel <>);
            Type armType        = armGenericType.MakeGenericType(genericType);
            var  arm            = (ActionResultModel)Activator.CreateInstance(armType, action, result);

            arm.Page     = page;
            arm.PageSize = pageSize;
            arm.Format   = format;

            return(facade.Wrap(arm, nakedObject) as ActionResultModel);
        }
Exemplo n.º 17
0
 internal void SetContextObjectAsParameterValue(IActionFacade targetAction, IObjectFacade contextNakedObject)
 {
     if (targetAction.Parameters.Any(p => p.Specification.IsOfType(contextNakedObject.Specification)))
     {
         foreach (var parm in targetAction.Parameters)
         {
             if (parm.Specification.IsOfType(contextNakedObject.Specification))
             {
                 string name = IdHelper.GetParameterInputId(targetAction, parm);
                 AddAttemptedValue(name, contextNakedObject);
             }
         }
     }
 }
 private static IEnumerable GetResultAsEnumerable(IObjectFacade result, IActionFacade contextAction, string propertyName)
 {
     if (result != null)
     {
         if (result.Specification.IsCollection && !ContextParameterIsCollection(contextAction, propertyName))
         {
             return(result.GetDomainObject <IEnumerable>());
         }
         return(new List <object> {
             result.GetDomainObject()
         });
     }
     return(new List <object>());
 }
Exemplo n.º 19
0
        public UriMtHelper(IOidStrategy oidStrategy, HttpRequestMessage req, ActionContextFacade actionContext)
            : this(oidStrategy, req)
        {
            action       = actionContext.Action;
            objectFacade = actionContext.Target;
            spec         = objectFacade.Specification;
            if (objectFacade.Specification.IsParseable)
            {
                throw new ArgumentException($"Cannot build URI  for parseable specification : {objectFacade.Specification.FullName}");
            }
            IOidTranslation oid = oidStrategy.FrameworkFacade.OidTranslator.GetOidTranslation(objectFacade);

            cachedId   = oid.InstanceId;
            CachedType = oid.DomainType;
        }
Exemplo n.º 20
0
        private IDictionary <string, object> GetOtherValues(IActionFacade action)
        {
            var results = new Dictionary <string, object>();
            var parms   = new FormCollection(HttpContext.Request.Params);

            Decrypt(parms);

            foreach (var parm in action.Parameters)
            {
                string[] values = GetRawValues(parms, IdHelper.GetParameterInputId(action, parm));
                results[parm.Id.ToLower()] = GetValue(values, parm, parm.Specification);
            }

            return(results);
        }
        private ActionResult SelectSingleItem(IObjectFacade nakedObject, IActionFacade action, ObjectAndControlData controlData, IDictionary <string, string> selectedItem)
        {
            var property = DisplaySingleProperty(controlData, selectedItem);

            if (action == null)
            {
                SetSelectedReferences(nakedObject, selectedItem);
                return(property == null?View("ObjectEdit", nakedObject.GetDomainObject()) : View("PropertyEdit", new PropertyViewModel(nakedObject.GetDomainObject(), property)));
            }
            SetSelectedParameters(nakedObject, action, selectedItem);

            return(View(property == null ? "ActionDialog" : "PropertyEdit", new FindViewModel {
                ContextObject = nakedObject.GetDomainObject(), ContextAction = action, PropertyName = property
            }));
        }
Exemplo n.º 22
0
        internal void SetDefaults(IObjectFacade nakedObject, IActionFacade action)
        {
            foreach (var parm in action.Parameters)
            {
                var value = parm.GetDefault(nakedObject);

                var isExplicit = parm.DefaultTypeIsExplicit(nakedObject);

                bool ignore = value == null || (value.GetDomainObject() is DateTime && ((DateTime)value.GetDomainObject()).Ticks == 0) || !isExplicit;
                if (!ignore)
                {
                    // deliberately not an attempted value so it only gets populated after masking
                    ViewData[IdHelper.GetParameterInputId(action, parm)] = parm.Specification.IsParseable ? value.GetDomainObject() : value;
                }
            }
        }
        public IActionFacade GetAction(IFrameworkFacade facade)
        {
            if (actionFacade == null)
            {
                var           no = GetNakedObject(facade);
                IActionFacade action;

                if (no.Specification.IsCollection)
                {
                    var elementSpec = no.ElementSpecification;

                    action = elementSpec.GetCollectionContributedActions().Where(a => a.IsVisible(no)).Single(a => a.Id == ActionId);
                }
                else
                {
                    var id = facade.OidTranslator.GetOidTranslation(no);
                    action = facade.GetObjectAction(id, ActionId).Action;
                }

                actionFacade = action.IsUsable(no).IsAllowed ? action : null;
            }
            return(actionFacade);
        }
 private static IEnumerable GetResultAsEnumerable(IObjectFacade result, IActionFacade contextAction, string propertyName) {
     if (result != null) {
         if (result.Specification.IsCollection && !ContextParameterIsCollection(contextAction, propertyName)) {
             return result.GetDomainObject<IEnumerable>();
         }
         return new List<object> {result.GetDomainObject()};
     }
     return new List<object>();
 }
        internal ArgumentsContextFacade GetParameterValues(IActionFacade action, ObjectAndControlData controlData) {
            var values = action.Parameters.Select(parm => new {Id = IdHelper.GetParameterInputId(action, parm), Parm = parm}).ToDictionary(a => a.Parm.Id, a => GetParameterValue(a.Parm, a.Id, controlData));

            return new ArgumentsContextFacade {Values = values, ValidateOnly = false};
        }
 internal static bool ActionExecutingAsContributed(IActionFacade action, IObjectFacade targetNakedObject) {
     return action.IsContributed && !action.OnType.Equals(targetNakedObject.Specification);
 }
Exemplo n.º 27
0
 public UriMtHelper(IOidStrategy oidStrategy, HttpRequestMessage req, ParameterTypeContextFacade parameterTypeContext)
     : this(oidStrategy ,req) {
     action = parameterTypeContext.Action;
     spec = parameterTypeContext.OwningSpecification;
     param = parameterTypeContext.Parameter;
     cachedId = "";
     CachedType = spec.DomainTypeName(oidStrategy);
 }
        private ActionResult ExecuteAction(ObjectAndControlData controlData, IObjectFacade nakedObject, IActionFacade action)
        {
            if (ActionExecutingAsContributed(action, nakedObject) && action.ParameterCount == 1)
            {
                // contributed action being invoked with a single parm that is the current target
                // no dialog - go straight through

                var ac = new ArgumentsContextFacade {
                    Values = new Dictionary <string, object>(), ValidateOnly = false
                };

                if (nakedObject.Specification.IsCollection && !nakedObject.Specification.IsParseable)
                {
                    var oids = nakedObject.ToEnumerable().Select(no => Facade.OidTranslator.GetOidTranslation(no)).ToArray();
                    var spec = nakedObject.ElementSpecification;

                    var ar = Facade.ExecuteListAction(oids, spec, action.Id, ac);
                    return(AppropriateView(controlData, GetResult(ar), action));
                }
                else
                {
                    var oid = Facade.OidTranslator.GetOidTranslation(nakedObject);
                    var ar  = Facade.ExecuteObjectAction(oid, action.Id, ac);

                    return(AppropriateView(controlData, GetResult(ar), action));
                }
            }

            if (!action.Parameters.Any())
            {
                var ac = new ArgumentsContextFacade {
                    Values = new Dictionary <string, object>(), ValidateOnly = false
                };
                var oid    = Facade.OidTranslator.GetOidTranslation(nakedObject);
                var result = Facade.ExecuteObjectAction(oid, action.Id, ac);

                return(AppropriateView(controlData, GetResult(result), action));
            }

            SetDefaults(nakedObject, action);
            // do after any parameters set by contributed action so this takes priority
            SetSelectedParameters(action);
            SetPagingValues(controlData, nakedObject);
            var property = DisplaySingleProperty(controlData, controlData.DataDict);

            return(View(property == null ? "ActionDialog" : "PropertyEdit", new FindViewModel {
                ContextObject = nakedObject.GetDomainObject(), ContextAction = action, PropertyName = property
            }));
        }
 internal static Tuple<bool, string> IsDuplicate(this HtmlHelper html, IEnumerable<IActionFacade> allActions, IActionFacade action) {
     return new Tuple<bool, string>(allActions.Count(a => a.Name == action.Name) > 1, MvcUi.DuplicateAction);
 }
 internal void SetContextObjectAsParameterValue(IActionFacade targetAction, IObjectFacade contextNakedObject) {
     if (targetAction.Parameters.Any(p => p.Specification.IsOfType(contextNakedObject.Specification))) {
         foreach (var parm in targetAction.Parameters) {
             if (parm.Specification.IsOfType(contextNakedObject.Specification)) {
                 string name = IdHelper.GetParameterInputId(targetAction, parm);
                 AddAttemptedValue(name, contextNakedObject);
             }
         }
     }
 }
 public ActionContext(IIdHelper idHelper, bool embeddedInObject, IObjectFacade target, IActionFacade action)
     : base(idHelper, target)
 {
     EmbeddedInObject = embeddedInObject;
     Action           = action;
 }
Exemplo n.º 32
0
        public string GetParameterContainerId(IActionFacade actionFacade) {
            IActionSpec action =  actionFacade.WrappedSpec();

            return action.Id + Sep + IdConstants.ParamListName;
        }
Exemplo n.º 33
0
 public string GetActionId(IObjectFacade owner, IActionFacade actionFacade) {
     IActionSpec action = actionFacade.WrappedSpec();
     return GetObjectId(owner) + Sep + action.Id;
 }
Exemplo n.º 34
0
 public string GetParameterInputId(IActionFacade action, IActionParameterFacade parameterFacade) {
     IActionParameterSpec parameter =  parameterFacade.WrappedSpec();
     return GetParameterId(action, parameterFacade) + Sep + InputOrSelect(parameter.Spec);
 }
        internal void SetDefaults(IObjectFacade nakedObject, IActionFacade action) {
            foreach (var parm in action.Parameters) {
                var value = parm.GetDefault(nakedObject);

                var isExplicit = parm.DefaultTypeIsExplicit(nakedObject);

                bool ignore = value == null || (value.GetDomainObject() is DateTime && ((DateTime) value.GetDomainObject()).Ticks == 0) || !isExplicit;
                if (!ignore) {
                    // deliberately not an attempted value so it only gets populated after masking 
                    ViewData[IdHelper.GetParameterInputId(action, parm)] = parm.Specification.IsParseable ? value.GetDomainObject() : value;
                }
            }
        }
 internal void SetSelectedParameters(IActionFacade action) {
     var refItems = action.Parameters.Where(p => !p.Specification.IsCollection && !p.Specification.IsParseable).Where(p => ValueProvider.GetValue(p.Id) != null).ToList();
     if (refItems.Any()) {
         Dictionary<string, IObjectFacade> items = refItems.ToDictionary(p => IdHelper.GetParameterInputId(action, p), p => GetNakedObjectFromId(ValueProvider.GetValue(p.Id).AttemptedValue));
         items.ForEach(kvp => ViewData[kvp.Key] = kvp.Value);
     }
 }
        public void ValidateParameter(IActionFacade action, IActionParameterFacade parm, IObjectFacade targetNakedObject, object value) {
            var isValid = parm.IsValid(targetNakedObject, value);

            if (!isValid.IsAllowed) {
                ModelState.AddModelError(IdHelper.GetParameterInputId(action, parm), isValid.Reason);
            }
        }
        private IDictionary<string, object> GetOtherValues(IActionFacade action) {
            var results = new Dictionary<string, object>();
            var parms = new FormCollection(HttpContext.Request.Params);

            Decrypt(parms);

            foreach (var parm in action.Parameters) {
                string[] values = GetRawValues(parms, IdHelper.GetParameterInputId(action, parm));
                results[parm.Id.ToLower()] = GetValue(values, parm, parm.Specification);
            }

            return results;
        }
 private static object CreateDefaultLinks(IOidStrategy oidStrategy, HttpRequestMessage req, FieldFacadeAdapter parameter, IActionFacade action, IObjectFacade defaultNakedObject, string title, RestControlFlags flags) {
     if (defaultNakedObject.Specification.IsCollection) {
         return defaultNakedObject.ToEnumerable().Select(i => CreateDefaultLink(oidStrategy, req, parameter, action, i, i.TitleString, flags)).ToArray();
     }
     return CreateDefaultLink(oidStrategy, req, parameter, action, defaultNakedObject, title, flags);
 }
 private ActionContextFacade ActionContext(IActionFacade actionFacade, IObjectFacade target) {
     return new ActionContextFacade {
         MenuPath = "",
         Target = target,
         Action = actionFacade,
         VisibleParameters = actionFacade.Parameters.Select(p => new ParameterContextFacade { Parameter = p, Action = actionFacade }).ToArray()
     };
 }
 public ParameterContext(IIdHelper idhelper, bool embeddedInObject, IObjectFacade target, IActionFacade action, IActionParameterFacade parameter, bool isEdit)
     : base(idhelper, embeddedInObject, target, action)
 {
     Parameter       = parameter;
     IsParameterEdit = isEdit;
 }
Exemplo n.º 42
0
        public string GetActionDialogId(IObjectFacade owner, IActionFacade actionFacade) {
            IActionSpec action = actionFacade.WrappedSpec();

            return GetObjectId(owner) + Sep + action.Id + Sep + IdConstants.DialogName;
        }
        private static LinkRepresentation CreateDefaultLink(IOidStrategy oidStrategy, HttpRequestMessage req, FieldFacadeAdapter parameter, IActionFacade action,  IObjectFacade defaultNakedObject, string title, RestControlFlags flags) {
            var helper = new UriMtHelper(oidStrategy, req, defaultNakedObject);
            var relType = new DefaultRelType(action.Id, parameter.Id, helper);

            return LinkRepresentation.Create(oidStrategy, relType, flags, new OptionalProperty(JsonPropertyNames.Title, title));
        }
Exemplo n.º 44
0
 public string GetFindMenuId(IObjectFacade objectFacade, IActionFacade actionFacade, string propertyName) {
     IActionSpec action = actionFacade == null ? null : actionFacade.WrappedSpec();
     string contextActionName = action == null ? "" : Sep + action.Id;
     return GetObjectId(objectFacade) + contextActionName + Sep + NameUtils.CapitalizeName(propertyName) + Sep + IdConstants.FindMenuName;
 }
 public static MvcHtmlString CollectionList(this HtmlHelper html, IEnumerable collection, IActionFacade action)
 {
     return(html.Collection(collection, action));
 }
 internal void SetSelectedParameters(IObjectFacade nakedObject, IActionFacade action, IDictionary<string, string> dict) {
     var refItems = action.Parameters.Where(p => !p.Specification.IsCollection && !p.Specification.IsParseable).Where(p => dict.ContainsKey(p.Id)).ToList();
     if (refItems.Any()) {
         refItems.ForEach(p => ValidateParameter(action, p, nakedObject, GetNakedObjectFromId(dict[p.Id]).GetDomainObject<object>()));
         Dictionary<string, IObjectFacade> items = refItems.ToDictionary(p => IdHelper.GetParameterInputId(action, p), p => GetNakedObjectFromId(dict[p.Id]));
         items.ForEach(kvp => ViewData[kvp.Key] = kvp.Value);
     }
 }
Exemplo n.º 47
0
 public static IActionSpec WrappedSpec(this IActionFacade actionFacade)
 {
     return(actionFacade == null ? null : ((ActionFacade)actionFacade).WrappedSpec);
 }
        public IActionFacade GetAction(IFrameworkFacade facade) {
            if (actionFacade == null) {
                var no = GetNakedObject(facade);
                IActionFacade action;

                if (no.Specification.IsCollection) {
                    var elementSpec = no.ElementSpecification;

                    action = elementSpec.GetCollectionContributedActions().Where(a => a.IsVisible(no)).Single(a => a.Id == ActionId);
                }
                else {
                    var id = facade.OidTranslator.GetOidTranslation(no);
                    action = facade.GetObjectAction(id, ActionId).Action;
                }

                actionFacade = action.IsUsable(no).IsAllowed ? action : null;
            }
            return actionFacade;
        }
        private ActionResult ExecuteAction(ObjectAndControlData controlData, IObjectFacade nakedObject, IActionFacade action) {
            if (ActionExecutingAsContributed(action, nakedObject) && action.ParameterCount == 1) {
                // contributed action being invoked with a single parm that is the current target
                // no dialog - go straight through 

                var ac = new ArgumentsContextFacade {Values = new Dictionary<string, object>(), ValidateOnly = false};

                if (nakedObject.Specification.IsCollection && !nakedObject.Specification.IsParseable) {
                    var oids = nakedObject.ToEnumerable().Select(no => Facade.OidTranslator.GetOidTranslation(no)).ToArray();
                    var spec = nakedObject.ElementSpecification;

                    var ar = Facade.ExecuteListAction(oids, spec, action.Id, ac);
                    return AppropriateView(controlData, GetResult(ar), action);
                }
                else {
                    var oid = Facade.OidTranslator.GetOidTranslation(nakedObject);
                    var ar = Facade.ExecuteObjectAction(oid, action.Id, ac);

                    return AppropriateView(controlData, GetResult(ar), action);
                }
            }

            if (!action.Parameters.Any()) {
                var ac = new ArgumentsContextFacade {Values = new Dictionary<string, object>(), ValidateOnly = false};
                var oid = Facade.OidTranslator.GetOidTranslation(nakedObject);
                var result = Facade.ExecuteObjectAction(oid, action.Id, ac);

                return AppropriateView(controlData, GetResult(result), action);
            }

            SetDefaults(nakedObject, action);
            // do after any parameters set by contributed action so this takes priority
            SetSelectedParameters(action);
            SetPagingValues(controlData, nakedObject);
            var property = DisplaySingleProperty(controlData, controlData.DataDict);

            return View(property == null ? "ActionDialog" : "PropertyEdit", new FindViewModel {ContextObject = nakedObject.GetDomainObject(), ContextAction = action, PropertyName = property});
        }
        private ActionResult SelectSingleItem(IObjectFacade nakedObject, IActionFacade action, ObjectAndControlData controlData, IDictionary<string, string> selectedItem) {
            var property = DisplaySingleProperty(controlData, selectedItem);

            if (action == null) {
                SetSelectedReferences(nakedObject, selectedItem);
                return property == null ? View("ObjectEdit", nakedObject.GetDomainObject()) : View("PropertyEdit", new PropertyViewModel(nakedObject.GetDomainObject(), property));
            }
            SetSelectedParameters(nakedObject, action, selectedItem);

            return View(property == null ? "ActionDialog" : "PropertyEdit", new FindViewModel {ContextObject = nakedObject.GetDomainObject(), ContextAction = action, PropertyName = property});
        }
Exemplo n.º 51
0
        public string GetSubMenuId(IObjectFacade owner, IActionFacade actionFacade) {
            IActionSpec action =  actionFacade.WrappedSpec();

            return EnsureEndsWithColon(GetObjectId(owner) + Sep + action.Id.Split('.').Last());
        }
 private static bool ContextParameterIsCollection(IActionFacade contextAction, string propertyName) {
     if (contextAction != null) {
         var parameter = contextAction.Parameters.Single(p => p.Id == propertyName);
         return parameter.Specification.IsCollection;
     }
     return false;
 }
Exemplo n.º 53
0
 public string GetParameterId(IActionFacade actionFacade, IActionParameterFacade parameterFacade) {
     IActionParameterSpec parameter = parameterFacade.WrappedSpec();
     IActionSpec action =  actionFacade.WrappedSpec();
     return action.OnSpec.ShortName + Sep + action.Id + Sep + NameUtils.CapitalizeName(parameter.Id);
 }
        internal ActionResult AppropriateView(ObjectAndControlData controlData, IObjectFacade nakedObject, IActionFacade action = null, string propertyName = null) {
            if (nakedObject == null) {
                // no object to go to 
                // if action on object go to that object. 
                // if action on collection go to collection 
                // if action on service go to last object 

                nakedObject = controlData.GetNakedObject(Facade);

                if (nakedObject.Specification.IsService) {
                    object lastObject = Session.LastObject(Facade, ObjectCache.ObjectFlag.BreadCrumb);
                    if (lastObject == null) {
                        return RedirectHome();
                    }

                    nakedObject = Facade.GetObject(lastObject);                  
                }

                if (nakedObject.IsCollectionMemento) {
                    // if we have returned null and existing object is collection memento need to make 
                    // sure action remains action from original collectionMemento.
                    action = nakedObject.MementoAction;
                }

            }

            if (nakedObject.Specification.IsCollection && !nakedObject.Specification.IsParseable) {
                int collectionSize = nakedObject.Count();
                if (collectionSize == 1) {
                    // remove any paging data - to catch case where custom page has embedded standalone collection as paging data will confuse rendering 
                    ViewData.Remove(IdConstants.PagingData);
                    // is this safe TODO !!
                    return View("ObjectView", nakedObject.ToEnumerable().First().GetDomainObject());
                }

                nakedObject = Page(nakedObject, collectionSize, controlData);
                // todo is there a better way to do this ?
                action = action ?? nakedObject.MementoAction;
                int page, pageSize;
                CurrentlyPaging(controlData, collectionSize, out page, out pageSize);
                var format = ViewData["NofCollectionFormat"] as string;
                return View("StandaloneTable", ActionResultModel.Create(Facade, action, nakedObject, page, pageSize, format));
            }
            // remove any paging data - to catch case where custom page has embedded standalone collection as paging data will confuse rendering   
            ViewData.Remove(IdConstants.PagingData);

            if (controlData.DataDict.Values.Contains("max")) {
                // maximizing an inline object - do not update history
                ViewData.Add("updateHistory", false);
            }

            return propertyName == null ? View(nakedObject.IsNotPersistent ? "ObjectView" : "ViewNameSetAfterTransaction", nakedObject.GetDomainObject()) :
                View(nakedObject.IsNotPersistent ? "PropertyView" : "ViewNameSetAfterTransaction", new PropertyViewModel(nakedObject.GetDomainObject(), propertyName));
        }
Exemplo n.º 55
0
 public string GetParameterAutoCompleteId(IActionFacade action, IActionParameterFacade parameterFacade) {
     IActionParameterSpec parameter = parameterFacade.WrappedSpec();
     var id = GetParameterInputId(action, parameterFacade);
     return parameter.Spec.IsParseable ? id : id + Sep + AutoCompleteName;
 }
        internal static MvcHtmlString CollectionListInternal(this HtmlHelper html, IEnumerable collection, IActionFacade action = null)
        {
            var nakedObject = html.Facade().GetObject(collection);

            return(html.GetStandaloneList(nakedObject, null));
        }
Exemplo n.º 57
0
 public string GetConcurrencyActionInputId(IObjectFacade owner, IActionFacade action, IAssociationFacade assocFacade) {
     IAssociationSpec assoc =  assocFacade.WrappedSpec();
     return GetActionId(owner, action) + Sep + assoc.Id + Sep + ConcurrencyName;
 }
        public static MvcHtmlString Collection(this HtmlHelper html, IEnumerable collection, IActionFacade action, string defaultTo = IdConstants.ListDisplayFormat)
        {
            bool   renderEagerly = CommonHtmlHelper.RenderEagerly(action);
            string displayType   = DefaultFormat(html, renderEagerly ? IdConstants.TableDisplayFormat : defaultTo);

            return(displayType == IdConstants.TableDisplayFormat ? CollectionTableInternal(html, collection, action) : CollectionListInternal(html, collection, action));
        }
Exemplo n.º 59
0
        public string GetActionId(string propertyName, IActionFacade actionContextActionFacade, IObjectFacade actionObjectFacade, IObjectFacade targetObjectFacade, IActionFacade targetActionFacade) {
            IActionSpec actionContextAction = actionContextActionFacade == null ? null :  actionContextActionFacade.WrappedSpec();
            INakedObjectAdapter actionContextTarget = actionObjectFacade == null ? null : actionObjectFacade.WrappedAdapter();
            IActionSpec targetActionContextAction = targetActionFacade == null ? null : targetActionFacade.WrappedSpec();
            INakedObjectAdapter targetActionContextTarget = targetObjectFacade == null ? null : targetObjectFacade.WrappedAdapter();

            string contextActionName = actionContextAction == null ? "" : actionContextAction.Id + Sep;
            string contextNakedObjectId = actionContextTarget == null || actionContextTarget == targetActionContextTarget ? "" : GetObjectId(actionObjectFacade) + Sep;
            string propertyId = string.IsNullOrEmpty(propertyName) ? "" : NameUtils.CapitalizeName(propertyName) + Sep;
            return contextNakedObjectId + contextActionName + propertyId + GetObjectId(targetObjectFacade) + Sep + targetActionContextAction.Id;
        }
 public static MvcHtmlString CollectionTable(this HtmlHelper html, IEnumerable collection, IActionFacade action)
 {
     return(html.Collection(collection, action, IdConstants.TableDisplayFormat));
 }