private void CloneWidgets(ContentItem original, ContentItem destination) {
            if (original == null || destination == null) return;

            // recupero i WidgetExPart del Content selezionato come Master (CloneFrom)
            var widgets = _widgetManager.GetWidgets(original.Id, original.IsPublished());
            foreach (var widget in widgets) {
                // Clono il ContentMaster e recupero la parte WidgetExPart
                var clonedContentitem = _contentManager.Clone(widget.ContentItem);

                var widgetExPart = clonedContentitem.As<WidgetExPart>();

                // assegno il nuovo contenitore se non nullo ( nel caso di HtmlWidget per esempio la GetWidget ritorna nullo...)
                if (widgetExPart != null) {
                    widgetExPart.Host = destination;
                    _contentManager.Publish(widgetExPart.ContentItem);
                }

                // se il widget ha una LocalizationPart, la gestisco
                var clonedLocalization = clonedContentitem.As<LocalizationPart>();
                if (clonedLocalization != null) {
                    clonedLocalization.Culture = destination.As<LocalizationPart>().Culture;
                    var originalLocalization = widget.ContentItem.As<LocalizationPart>();
                    if(originalLocalization.MasterContentItem == null) {
                        clonedLocalization.MasterContentItem = widget.ContentItem;
                    }
                    else {
                        clonedLocalization.MasterContentItem = originalLocalization.MasterContentItem;
                    }
                }
            }
        }
Example #2
0
        private void PerformMove(ContentItem toMove)
        {
            EnsureAuthorization(Permission.Write);
            EnsureAuthorization(toMove, toMove.IsPublished() ? Permission.Publish : Permission.Write);

            var previousParent = toMove.Parent;
            var previousUrl    = toMove.Url;

            Engine.AddActivity(new ManagementActivity {
                Operation = "Move", PerformedBy = User.Identity.Name, Path = toMove.Path, ID = toMove.ID
            });
            Engine.Persister.Move(toMove, Selection.SelectedItem);

            if (tracker.FindReferrers(previousUrl).Any())
            {
                Response.Redirect(Selection.SelectedUrl("{ManagementUrl}/Content/LinkTracker/UpdateReferences.aspx", toMove).ToUrl().AppendQuery("previousParent", previousParent != null ? previousParent.Path : null).AppendQuery("previousName", toMove.Name));
            }
            else if (toMove.IsPage && !(toMove.Parent is IActiveContent))
            {
                Response.Redirect(Selection.SelectedUrl("{ManagementUrl}/Content/LinkTracker/UpdateReferences.aspx", toMove).ToUrl().AppendQuery("previousParent", previousParent != null ? previousParent.Path : null).AppendQuery("previousName", toMove.Name));
            }
            else
            {
                Refresh(toMove);
            }
        }
Example #3
0
        private void CloneWidgets(ContentItem original, ContentItem destination)
        {
            if (original == null || destination == null)
            {
                return;
            }

            // recupero i WidgetExPart del Content selezionato come Master (CloneFrom)
            var widgets = _widgetManager.GetWidgets(original.Id, original.IsPublished());

            foreach (var widget in widgets)
            {
                // Clono il ContentMaster e recupero la parte WidgetExPart
                var clonedContentitem = _services.ContentManager.Clone(widget.ContentItem);

                var widgetExPart = clonedContentitem.As <WidgetExPart>();

                // assegno il nuovo contenitore se non nullo ( nel caso di HtmlWidget per esempio la GetWidget ritorna nullo...)
                if (widgetExPart != null)
                {
                    widgetExPart.Host = destination;
                    _services.ContentManager.Publish(widgetExPart.ContentItem);
                }
            }
        }
Example #4
0
        private void PerformMove(ContentItem toMove)
        {
            EnsureAuthorization(Permission.Write);
            EnsureAuthorization(toMove, toMove.IsPublished() ? Permission.Publish : Permission.Write);

            Engine.Persister.Move(toMove, Selection.SelectedItem);
            Refresh(toMove, ToolbarArea.Both);
        }
Example #5
0
        public virtual IEnumerable <string> GetNodeFlags(ContentItem item)
        {
            var type = item.GetContentType();
            var tags = new List <string>();

            tags.Add(item.State.ToString());
            foreach (var possibleState in Enum.GetValues(typeof(CollectionState)).Cast <CollectionState>())
            {
                if (possibleState != CollectionState.Unknown && item.ChildState.HasFlag(possibleState))
                {
                    tags.Add(possibleState.ToString());
                }
            }

            if (!item.IsPublished())
            {
                tags.Add("NotPublished");
            }
            if (item.IsExpired())
            {
                tags.Add("Expired");
            }
            if (!item.Visible)
            {
                tags.Add("Invisible");
            }
            if (item.AlteredPermissions != Permission.None && item.AuthorizedRoles != null && item.AuthorizedRoles.Count > 0)
            {
                tags.Add("Locked");
            }

            if (Drafts.HasDraft(item))
            {
                tags.Add("HasDraft");
            }

            if (item.Created.AddDays(3) > Utility.CurrentTime())
            {
                tags.Add("Recent");
            }

            tags.Add(type.Assembly.GetName().Name);

            tags.AddRange(Utility.GetBaseTypesAndSelf(type).Where(t => t != typeof(object)).Select(t => t.Name));
            tags.AddRange(type.GetInterfaces().Where(t => t.Namespace.Contains("Definition")).Select(t => t.Name));

            var d = Definitions.GetDefinition(item);

            tags.AddRange(d.AdditionalFlags);
            if (d.RemovedFlags.Any())
            {
                tags.RemoveAll(f => d.RemovedFlags.Contains(f));
            }

            return(tags);
        }
Example #6
0
        private ContentItem LocateStartPage(ContentItem startPageConfigured)
        {
            ContentItem startPage = startPageConfigured;

            lock (_syncLock)
            {
                if (host.CurrentSite.StartPageID != host.CurrentSite.RootItemID) // only when start <> root
                {
                    if (startPage != null)
                    {
                        if (!(startPage is IStartPage))
                        {
                            logger.WarnFormat("Configured start page is no IStartPage #{0} -> {1}",
                                              host.CurrentSite.StartPageID,
                                              startPage.GetType().FullName);
                            startPage = null;
                        }

                        if (startPage != null && !startPage.IsPublished())
                        {
                            logger.ErrorFormat("Configured start page is not published #{0} -> {1}", startPage.ID,
                                               startPage.GetType().FullName);
                            startPage = null;
                        }
                    }

                    if (startPage == null)
                    {
                        // try to locate start page below root
                        var root = persister.Repository.Get(host.CurrentSite.RootItemID);
                        if (root == null)
                        {
                            // no content?
                            return(null);
                        }

                        ItemList children = root.GetChildren(new TypeFilter(typeof(IStartPage)), new PublishedFilter());
                        if (children.Count == 1)
                        {
                            startPage = children[0];
                            logger.InfoFormat("Auto updated start page to #{0} -> {1}", startPage.ID,
                                              startPage.GetType().FullName);
                            var newSite = new Site(root.ID, startPage.ID);
                            host.ReplaceSites(newSite, new List <Site>());
                        }
                    }

                    if (startPage == null)
                    {
                        return(startPageConfigured); // keep configured
                    }
                }
            }
            return(startPage);
        }
Example #7
0
		/// <summary>Matches an item against the current filter.</summary>
		/// <param name="item"></param>
		/// <returns></returns>
		public override bool Match(ContentItem item)
		{
			var isMatch = item.IsPage;
			if (isMatch && RequirePublished)
				isMatch &= item.IsPublished() && !item.IsExpired();
			if (isMatch && RequireVisible)
				isMatch &= item.Visible;
			if (isMatch && RequireAuthorized)
				isMatch &= new AccessFilter().Match(item);
			return isMatch;
		}
		private void Fixit(ref int updatedItems, ContentItem item)
		{
			if (item.IsExpired())
				item.State = ContentState.Unpublished;
			else if (item.IsPublished())
				item.State = ContentState.Published;
			else
				item.State = ContentState.Waiting;

			repository.SaveOrUpdate(item);
			updatedItems++;
		}
        public void NotYetPublishedIsNotPublished()
        {
            mocks.ReplayAll();

            ContentItem root = CreateOneItem <Items.SecurityPage>(1, "root", null);

            root.Published = N2.Utility.CurrentTime().AddDays(1);

            bool isPublished = root.IsPublished();

            Assert.IsFalse(isPublished);
        }
        public void UnpublishedIsNotPublished()
        {
            mocks.ReplayAll();

            ContentItem root = CreateOneItem <Items.SecurityPage>(1, "root", null);

            root.Published = null;

            bool isPublished = root.IsPublished();

            Assert.IsFalse(isPublished, "Item should not have been published.");
        }
        public void ExpiredIsNotPublished()
        {
            mocks.ReplayAll();

            ContentItem root = CreateOneItem <Items.SecurityPage>(1, "root", null);

            root.Expires = N2.Utility.CurrentTime();

            bool isPublished = root.IsPublished();

            Assert.IsFalse(isPublished, "Item should not have been published.");
        }
Example #12
0
 internal static CollectionState GetCollectionState(this ContentItem child)
 {
     if (child.IsPage)
     {
         if (child.IsPublished() && (child.AlteredPermissions & Security.Permission.Read) == Security.Permission.None)
         {
             if (child.Visible)
             {
                 return(CollectionState.ContainsVisiblePublicPages);
             }
             else
             {
                 return(CollectionState.ContainsHiddenPublicPages);
             }
         }
         else
         {
             if (child.Visible)
             {
                 return(CollectionState.ContainsVisibleSecuredPages);
             }
             else
             {
                 return(CollectionState.ContainsHiddenSecuredPages);
             }
         }
     }
     else
     {
         if (child.IsPublished() && (child.AlteredPermissions & Security.Permission.Read) == Security.Permission.None)
         {
             return(CollectionState.ContainsPublicParts);
         }
         else
         {
             return(CollectionState.ContainsSecuredParts);
         }
     }
 }
        /// <summary>
        /// Creates a IDocumentIndex instance for a specific content item id. If the content
        /// item is no more published, it returns null.
        /// </summary>
        private IDocumentIndex ExtractDocumentIndex(ContentItem contentItem)
        {
            // ignore deleted or unpublished items
            if (contentItem == null || (!contentItem.IsPublished() && !contentItem.HasDraft()))
            {
                return(null);
            }

            var documentIndex = _indexProvider.New(contentItem.Id);

            // call all handlers to add content to index
            _contentManager.Index(contentItem, documentIndex);
            return(documentIndex);
        }
 /// <summary>Find out if a principal is allowed to access an item.</summary>
 /// <param name="item">The item to check against.</param>
 /// <param name="user">The principal to check for allowance.</param>
 /// <returns>True if the item has public access or the principal is allowed to access it.</returns>
 public virtual bool IsAuthorized(ContentItem item, IPrincipal user)
 {
     if (!Enabled || !ScopeEnabled || IsAdmin(user))
     {
         // Disabled security manager or Editor means full access
         return(true);
     }
     else if (!IsEditor(user) && !item.IsPublished())
     {
         // Non-editors cannot load unpublished items
         return(false);
     }
     return(item.IsAuthorized(user));
 }
Example #15
0
		private void PerformMove(ContentItem toMove)
		{
			EnsureAuthorization(Permission.Write);
			EnsureAuthorization(toMove, toMove.IsPublished() ? Permission.Publish : Permission.Write);

			var previousParent = toMove.Parent;

			Engine.AddActivity(new ManagementActivity { Operation = "Move", PerformedBy = User.Identity.Name, Path = toMove.Path, ID = toMove.ID });
			Engine.Persister.Move(toMove, Selection.SelectedItem);

			if (toMove.IsPage && !(toMove.Parent is IActiveContent))
				Response.Redirect(Selection.SelectedUrl("{ManagementUrl}/Content/LinkTracker/UpdateReferences.aspx", toMove).ToUrl().AppendQuery("previousParent", previousParent != null ? previousParent.Path : null).AppendQuery("previousName", toMove.Name));
			else
				Refresh(toMove);
		}
Example #16
0
        private void PerformMove(ContentItem toMove)
        {
            EnsureAuthorization(Permission.Write);
            EnsureAuthorization(toMove, toMove.IsPublished() ? Permission.Publish : Permission.Write);

            var previousParent = toMove.Parent;

            Engine.Persister.Move(toMove, Selection.SelectedItem);

            if (toMove.IsPage)
            {
                Response.Redirect(Selection.SelectedUrl("{ManagementUrl}/Content/LinkTracker/UpdateReferences.aspx", toMove).ToUrl().AppendQuery("previousParent", previousParent != null ? previousParent.Path : null).AppendQuery("previousName", toMove.Name));
            }
            else
            {
                Refresh(toMove);
            }
        }
        private void Fixit(ref int updatedItems, ContentItem item)
        {
            if (item.IsExpired())
            {
                item.State = ContentState.Unpublished;
            }
            else if (item.IsPublished())
            {
                item.State = ContentState.Published;
            }
            else
            {
                item.State = ContentState.Waiting;
            }

            repository.SaveOrUpdate(item);
            updatedItems++;
        }
Example #18
0
        /// <summary>Matches an item against the current filter.</summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public override bool Match(ContentItem item)
        {
            var isMatch = item.IsPage;

            if (isMatch && RequirePublished)
            {
                isMatch &= item.IsPublished() && !item.IsExpired();
            }
            if (isMatch && RequireVisible)
            {
                isMatch &= item.Visible;
            }
            if (isMatch && RequireAuthorized)
            {
                isMatch &= new AccessFilter().Match(item);
            }
            return(isMatch);
        }
        /// <summary>
        /// Creates a IDocumentIndex instance for a specific content item id. If the content
        /// item is no more published, it returns null.
        /// </summary>
        private IDocumentIndex ExtractDocumentIndex(ContentItem contentItem)
        {
            // ignore deleted or unpublished items
            if (contentItem == null || !contentItem.IsPublished())
            {
                return(null);
            }

            // skip items from types which are not indexed
            var settings = GetTypeIndexingSettings(contentItem);

            if (!settings.Included)
            {
                return(null);
            }

            var documentIndex = _indexProvider.New(contentItem.Id);

            // call all handlers to add content to index
            _contentManager.Index(contentItem, documentIndex);
            return(documentIndex);
        }
Example #20
0
        private string GetClassName(ContentItem item)
        {
            StringBuilder className = new StringBuilder();

            if (!item.IsPublished())
            {
                className.Append("unpublished ");
            }
            else if (item.Published > DateTime.Now.AddDays(-1))
            {
                className.Append("day ");
            }
            else if (item.Published > DateTime.Now.AddDays(-7))
            {
                className.Append("week ");
            }
            else if (item.Published > DateTime.Now.AddMonths(-1))
            {
                className.Append("month ");
            }

            if (item.IsExpired())
            {
                className.Append("expired ");
            }

            if (!item.Visible)
            {
                className.Append("invisible ");
            }

            if (item.AlteredPermissions != Permission.None && item.AuthorizedRoles != null && item.AuthorizedRoles.Count > 0)
            {
                className.Append("locked ");
            }

            return(className.ToString());
        }
Example #21
0
        private void ApplyStateFlags(TreeNode node, ContentItem item)
        {
            StringBuilder className = new StringBuilder();

            if (!item.IsPublished())
            {
                className.Append("unpublished ");
            }
            else if (item.Published > N2.Utility.CurrentTime().AddDays(-1))
            {
                className.Append("day ");
            }
            else if (item.Published > N2.Utility.CurrentTime().AddDays(-7))
            {
                className.Append("week ");
            }
            else if (item.Published > N2.Utility.CurrentTime().AddMonths(-1))
            {
                className.Append("month ");
            }

            if (item.IsExpired())
            {
                className.Append("expired ");
            }

            if (!item.Visible)
            {
                className.Append("notvisible ");
            }

            if (item.AlteredPermissions != Permission.None && item.AuthorizedRoles != null && item.AuthorizedRoles.Count > 0)
            {
                className.Append("locked ");
            }

            node.CssClass = className.ToString();
        }
Example #22
0
 /// <summary>Check whether an item is published, i.e. it's published and isn't expired.</summary>
 /// <param name="item">The item to check.</param>
 /// <returns>A boolean indicating whether the item is published.</returns>
 public virtual bool IsPublished(ContentItem item)
 {
     return(item.IsPublished());
 }
Example #23
0
 /// <summary>Check whether an item is published, i.e. it's published and isn't expired.</summary>
 /// <param name="item">The item to check.</param>
 /// <returns>A boolean indicating whether the item is published.</returns>
 public virtual bool IsPublished(ContentItem item)
 {
     return item.IsPublished();
 }
Example #24
0
		public virtual IEnumerable<string> GetNodeFlags(ContentItem item)
		{
			var type = item.GetContentType();
			var tags = new List<string>();

			tags.Add(item.State.ToString());
			foreach (var possibleState in Enum.GetValues(typeof(CollectionState)).Cast<CollectionState>())
				if (possibleState != CollectionState.Unknown && item.ChildState.HasFlag(possibleState))
					tags.Add(possibleState.ToString());

			if (!item.IsPublished())
				tags.Add("NotPublished");
			if (item.IsExpired())
				tags.Add("Expired");
			if (!item.Visible)
				tags.Add("Invisible");
			if (item.AlteredPermissions != Permission.None && item.AuthorizedRoles != null && item.AuthorizedRoles.Count > 0)
				tags.Add("Locked");

			if (Drafts.HasDraft(item))
				tags.Add("HasDraft");

			if (item.Created.AddDays(3) > Utility.CurrentTime())
				tags.Add("Recent");

			tags.Add(type.Assembly.GetName().Name);

			tags.AddRange(Utility.GetBaseTypesAndSelf(type).Where(t => t != typeof(object)).Select(t => t.Name));
			tags.AddRange(type.GetInterfaces().Where(t => t.Namespace.Contains("Definition")).Select(t => t.Name));

			var d = Definitions.GetDefinition(item);
			tags.AddRange(d.AdditionalFlags);
			if (d.RemovedFlags.Any())
				tags.RemoveAll(f => d.RemovedFlags.Contains(f));

			return tags;
		}
Example #25
0
		private void ApplyStateFlags(TreeNode node, ContentItem item)
		{
			StringBuilder className = new StringBuilder();

			if (!item.IsPublished())
				className.Append("unpublished ");
			else if (item.Published > N2.Utility.CurrentTime().AddDays(-1))
				className.Append("day ");
			else if (item.Published > N2.Utility.CurrentTime().AddDays(-7))
				className.Append("week ");
			else if (item.Published > N2.Utility.CurrentTime().AddMonths(-1))
				className.Append("month ");

			if (item.IsExpired())
			{
				className.Append("expired ");
			}

			if (!item.Visible)
			{
				className.Append("notvisible ");
			}

			if (item.AlteredPermissions != Permission.None && item.AuthorizedRoles != null && item.AuthorizedRoles.Count > 0)
			{
				className.Append("locked ");
			}

			node.CssClass = className.ToString();
		}
Example #26
0
        private void PerformMove(ContentItem toMove)
        {
            EnsureAuthorization(Permission.Write);
            EnsureAuthorization(toMove, toMove.IsPublished() ? Permission.Publish : Permission.Write);

            Engine.Persister.Move(toMove, Selection.SelectedItem);

            Response.Redirect(Selection.SelectedUrl("{ManagementUrl}/Content/LinkTracker/UpdateReferences.aspx", toMove));
        }
Example #27
0
 private bool IsPubliclyAvailableOrEmpty(ContentItem item)
 {
     return((item == null) || (item.IsPublished() && (item.AlteredPermissions & Security.Permission.Read) == Security.Permission.None));
 }
Example #28
0
		protected virtual void WriteDefaultAttributes(ElementWriter itemElement, ContentItem item)
		{
			if (itemElement == null)
				throw new ArgumentNullException("itemElement");
			if (item == null)
				throw new ArgumentNullException("item");

			itemElement.WriteAttribute("id", item.ID);
			itemElement.WriteAttribute("name", item.ID.ToString() == item.Name ? "" : item.Name, true);
			if (item.Parent != null)
			{
				if (item.Parent.ID != 0)
					itemElement.WriteAttribute("parent", item.Parent.ID.ToString());
				else
				{
					itemElement.WriteAttribute("parent", item.Parent.VersionOf.ID.ToString());
					if (item.Parent.GetVersionKey() != null)
						itemElement.WriteAttribute("parentVersionKey", item.Parent.GetVersionKey());
				}
			}
			itemElement.WriteAttribute("title", item.Title, true);
			itemElement.WriteAttribute("zoneName", item.ZoneName, true);
			itemElement.WriteAttribute("templateKey", item.TemplateKey, true);
			if (item.TranslationKey.HasValue)
				itemElement.WriteAttribute("translationKey", item.TranslationKey.Value);

            itemElement.WriteAttribute("state", Enum.GetName(typeof(ContentState), item.State)); // use textual state to avoid future import trouble
			itemElement.WriteAttribute("created", item.Created);
			itemElement.WriteAttribute("updated", item.Updated);
			itemElement.WriteAttribute("published", item.Published);
			itemElement.WriteAttribute("expires", item.Expires); // TODO expired items could be excluded
			itemElement.WriteAttribute("sortOrder", item.SortOrder);
		    
            if (item.IsPage && item.IsPublished())
                itemElement.WriteAttribute("url", (parser != null) ? (string) parser.BuildUrl(item) : item.Url); // generated
			
            itemElement.WriteAttribute("visible", item.Visible);
			itemElement.WriteAttribute("savedBy", item.SavedBy);
			itemElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(item.GetContentType()));
			itemElement.WriteAttribute("discriminator", definitions.GetDefinition(item).Discriminator);
			itemElement.WriteAttribute("ancestralTrail", item.AncestralTrail); // generated
            if (item.AlteredPermissions != 0)
			    itemElement.WriteAttribute("alteredPermissions", (int)item.AlteredPermissions);
			itemElement.WriteAttribute("childState", (int)item.ChildState);
		    if (item.VersionOf.HasValue && item.VersionOf.ID != null)
		    {
		        itemElement.WriteAttribute("versionIndex", item.VersionIndex); // write only if versioned
		        itemElement.WriteAttribute("versionOf", item.VersionOf.ID.Value);
		    }
		}
Example #29
0
        private void PerformMove(ContentItem toMove)
        {
            EnsureAuthorization(Permission.Write);
            EnsureAuthorization(toMove, toMove.IsPublished() ? Permission.Publish : Permission.Write);

            Engine.Persister.Move(toMove, Selection.SelectedItem);
            Refresh(toMove, ToolbarArea.Both);
        }
Example #30
0
        protected virtual void WriteDefaultAttributes(ElementWriter itemElement, ContentItem item)
        {
            if (itemElement == null)
            {
                throw new ArgumentNullException("itemElement");
            }
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            itemElement.WriteAttribute("id", item.ID);
            itemElement.WriteAttribute("name", item.ID.ToString() == item.Name ? "" : item.Name, true);
            if (item.Parent != null)
            {
                if (item.Parent.ID != 0)
                {
                    itemElement.WriteAttribute("parent", item.Parent.ID.ToString());
                }
                else
                {
                    itemElement.WriteAttribute("parent", item.Parent.VersionOf.ID.ToString());
                    if (item.Parent.GetVersionKey() != null)
                    {
                        itemElement.WriteAttribute("parentVersionKey", item.Parent.GetVersionKey());
                    }
                }
            }
            itemElement.WriteAttribute("title", item.Title, true);
            itemElement.WriteAttribute("zoneName", item.ZoneName, true);
            itemElement.WriteAttribute("templateKey", item.TemplateKey, true);
            if (item.TranslationKey.HasValue)
            {
                itemElement.WriteAttribute("translationKey", item.TranslationKey.Value);
            }

            itemElement.WriteAttribute("state", Enum.GetName(typeof(ContentState), item.State)); // use textual state to avoid future import trouble
            itemElement.WriteAttribute("created", item.Created);
            itemElement.WriteAttribute("updated", item.Updated);
            itemElement.WriteAttribute("published", item.Published);
            itemElement.WriteAttribute("expires", item.Expires);             // TODO expired items could be excluded
            itemElement.WriteAttribute("sortOrder", item.SortOrder);

            if (item.IsPage && item.IsPublished())
            {
                itemElement.WriteAttribute("url", (parser != null) ? (string)parser.BuildUrl(item) : item.Url);  // generated
            }
            itemElement.WriteAttribute("visible", item.Visible);
            itemElement.WriteAttribute("savedBy", item.SavedBy);
            itemElement.WriteAttribute("typeName", SerializationUtility.GetTypeAndAssemblyName(item.GetContentType()));
            itemElement.WriteAttribute("discriminator", definitions.GetDefinition(item).Discriminator);
            itemElement.WriteAttribute("ancestralTrail", item.AncestralTrail);             // generated
            if (item.AlteredPermissions != 0)
            {
                itemElement.WriteAttribute("alteredPermissions", (int)item.AlteredPermissions);
            }
            itemElement.WriteAttribute("childState", (int)item.ChildState);
            if (item.VersionOf.HasValue && item.VersionOf.ID != null)
            {
                itemElement.WriteAttribute("versionIndex", item.VersionIndex);         // write only if versioned
                itemElement.WriteAttribute("versionOf", item.VersionOf.ID.Value);
            }
        }
Example #31
0
 /// <summary>Tells whether the item is published, i.e. now is between it's published and expires dates.</summary>
 /// <param name="item">The item to check.</param>
 /// <returns>True if the item is published</returns>
 public static bool IsPublished(ContentItem item)
 {
     return(item.IsPublished() && !item.IsExpired());
 }
Example #32
0
		/// <summary>Find out if a principal is allowed to access an item.</summary>
		/// <param name="item">The item to check against.</param>
		/// <param name="user">The principal to check for allowance.</param>
		/// <returns>True if the item has public access or the principal is allowed to access it.</returns>
		public virtual bool IsAuthorized(ContentItem item, IPrincipal user)
		{
			if (!Enabled || !ScopeEnabled || IsAdmin(user))
			{
				// Disabled security manager or Editor means full access
				return true;
			}
			else if (!IsEditor(user) && !item.IsPublished())
			{
				// Non-editors cannot load unpublished items
				return false;
			}
			return item.IsAuthorized(user);
		}
Example #33
0
		private bool IsPubliclyAvailableOrEmpty(ContentItem item)
		{
		    return (item == null) || (item.IsPublished() && (item.AlteredPermissions & Security.Permission.Read) == Security.Permission.None);
		}
Example #34
0
		private string GetClassName(ContentItem item)
		{
			StringBuilder className = new StringBuilder();

			if (!item.IsPublished())
				className.Append("unpublished ");
			else if (item.Published > DateTime.Now.AddDays(-1))
				className.Append("day ");
			else if (item.Published > DateTime.Now.AddDays(-7))
				className.Append("week ");
			else if (item.Published > DateTime.Now.AddMonths(-1))
				className.Append("month ");

			if (item.IsExpired())
				className.Append("expired ");

			if (!item.Visible)
				className.Append("invisible ");

			if (item.AlteredPermissions != Permission.None && item.AuthorizedRoles != null && item.AuthorizedRoles.Count > 0)
				className.Append("locked ");

			return className.ToString();
		}
Example #35
0
		/// <summary>Tells whether the item is published, i.e. now is between it's published and expires dates.</summary>
		/// <param name="item">The item to check.</param>
		/// <returns>True if the item is published</returns>
		public static bool IsPublished(ContentItem item)
		{
			return item.IsPublished() && !item.IsExpired();
		}