예제 #1
0
        public void RegisterResource(string resourceName, string resourcePath, ResourceRegistrationType resourceRegistrationType)
        {
            if (string.IsNullOrEmpty(resourceName))
                throw new mobSocialException("Can't register a resource with empty name");

            var resource =
                _resourceRegistrations[resourceRegistrationType].FirstOrDefault(x => x.ResourceName == resourceName);

            if (resource == null)
            {
                resource = new Resource()
                {
                    ResourceName = resourceName,
                    ResourcePath = resourcePath,
                    RegistrationType = resourceRegistrationType,
                    PlacementType =
                        resourceRegistrationType == ResourceRegistrationType.Script
                            ? ResourcePlacementType.BeforeEndBodyTag
                            : ResourcePlacementType.HeadTag,
                    Enqueued = false,
                    Rendered = false
                };
                _resourceRegistrations[resourceRegistrationType].Add(resource);
            }
            else
            {
                resource.ResourcePath = resourcePath;
            }
        }
예제 #2
0
        private string _RenderSingleResource(Resource resource, string renderFormat)
        {
            if (resource.Rendered)
                return string.Empty;

            var renderBuilder = new StringBuilder();
            if (resource.DependsOn != null)
            {
                //first render the dependent ones
                foreach (var r in resource.DependsOn)
                {
                    renderBuilder.Append(_RenderSingleResource(r, renderFormat));
                }
            }

            if (!string.IsNullOrEmpty(resource.ResourcePath))
            {
                var resourcePath = WebHelper.GetUrlFromPath(resource.ResourcePath);
                renderBuilder.Append(Environment.NewLine + string.Format(renderFormat, resourcePath));
            }
            //mark current resource as rendered
            resource.Rendered = true;

            return renderBuilder.ToString();
        }