Skip to main content

Umbraco Razor - Delete Pages by Category

The following script allows the User to delete a list of Event Pages by selecting a category:

The Second Example is the same as the First except the Umbraco Data type is listed in a Dropdown.

Demo


Example 1:

 @inherits umbraco.MacroEngines.DynamicNodeContext  
 @using umbraco.cms.businesslogic.web  
      @{  
           @* 1. Get the Querystring that Contains the Catecory from Part 3 *@  
           var qdeleteCat = Request["deleteCat"];  
           /* Filter*/  
           if (Request["deleteCat"] != null)  
           {  
            qdeleteCat = Request["deleteCat"];  
           }  
           else  
           {  
            qdeleteCat = "";  
           }  
           @* ------------------------------------------------------------- *@  
           @* 2. Get the Querystring that Contains the Confrim from Part 3 *@  
           var qConfirm = Request["confirmDelete"];  
           /* Filter*/  
           if (Request["confirmDelete"] != null)  
           {  
            qConfirm = Request["confirmDelete"];  
           }  
           else  
           {  
            qConfirm = "";  
           }  
           @* ------------------------------------------------------------- *@  
           @* 3.   
                a) Display a dialog for the user to enter the Catgory to be deleted.  
                b) List the Events that will be deleted.  
                c) Delete the Events after confirmation.  
           *@  
           @* a *@  
           if (qdeleteCat == "")   
           {  
                <div class="notification warning closeable" style="margin: 0 0 30px 0;">  
                <p>Please Enter the Category of the events you would like to delete:<p>  
                     <form><input type="text" id="deleteCat" name="deleteCat"></input></form>  
                     </div>  
           }  
           else{  
                     @* b *@  
                     if (qConfirm == "")  
                     {  
                          <p>Here are a list of Events that will be deleted. Confrim deletion by <a href="?deleteCat=@qdeleteCat&confirmDelete=true">Clicking Here</a></p>  
                       foreach (var thisPage in @Model.NodeById(1404).Descendants().Where("visible && NodeTypeAlias == \"AnEvent\""))  
                       {  
                            if (@thisPage.eventCategory.ToUpper().Equals(qdeleteCat.ToUpper()))  
                            {                   
                                     <p>@thisPage.Name  (<a href="@thisPage.Url" target="_blank">view</a>)</p>  
                            }  
                       }  
                     }  
                      @* c *@  
                     if (qConfirm == "true")  
                     {  
                          <p>The Folowing nodes have been DELETED:</p>  
                       foreach (var thisPage in @Model.NodeById(1404).Descendants().Where("visible && NodeTypeAlias == \"AnEvent\""))  
                       {  
                            if (@thisPage.eventCategory.ToUpper().Contains(qdeleteCat.ToUpper()))  
                            {                   
                                     <p>@thisPage.Name</p>  
                                     try{  
                                     <p> - Delete Node - </p>  
                                      Document docToDelete = new Document(@thisPage.Id);  
                                      umbraco.library.UnPublishSingleNode(docToDelete.Id);   
                                      docToDelete.delete(true);  
                                      umbraco.library.UpdateDocumentCache(docToDelete.Id);  
                                      }  
                                      catch{}    
                            }  
                       }  
                     }  
           }  
           @* ------------------------------------------------------------- *@  
      }  

Example 2

 @inherits umbraco.MacroEngines.DynamicNodeContext  
 @using umbraco.cms.businesslogic.web  
 @using System.Xml.XPath   
      @{  
           @* 1. Get the Querystring that Contains the Catecory from Part 3 *@  
           var qdeleteCat = Request["deleteCat"];  
           /* Filter*/  
           if (Request["deleteCat"] != null)  
           {  
            qdeleteCat = Request["deleteCat"];  
           }  
           else  
           {  
            qdeleteCat = "";  
           }  
           @* ------------------------------------------------------------- *@  
           @* 2. Get the Querystring that Contains the Confrim from Part 3 *@  
           var qConfirm = Request["confirmDelete"];  
           /* Filter*/  
           if (Request["confirmDelete"] != null)  
           {  
            qConfirm = Request["confirmDelete"];  
           }  
           else  
           {  
            qConfirm = "";  
           }  
           @* ------------------------------------------------------------- *@  
           @* 3.   
                a) Display a dialog for the user to enter the Catgory to be deleted.  
                b) List the Events that will be deleted.  
                c) Delete the Events after confirmation.  
           *@  
           @* a *@  
           if (qdeleteCat == "")   
           {  
                <div class="notification warning closeable" style="margin: 0 0 30px 0;">  
                <p>Please Enter the Category of the events you would like to delete:<p>  
                     <form method="GET">  
                     @{  
                          XPathNodeIterator iterator = umbraco.library.GetPreValues(1554);  
                          iterator.MoveNext();  
                          XPathNodeIterator preValues = iterator.Current.SelectChildren("preValue", "");  
                          <select id="deleteCat" name="deleteCat">  
                          @while (preValues.MoveNext())  
                          {  
                               string preValue = preValues.Current.Value;  
                               <option value="@preValue">@preValue</option>   
                          }  
                          </select>  
                     }  
                     <input type="submit" value="Submit">  
                     </form>  
                     </div>  
           }  
           else{  
                     @* b *@  
                     if (qConfirm == "")  
                     {  
                          <p>Here are a list of Events that will be deleted. Confrim deletion by <a href="?deleteCat=@qdeleteCat&confirmDelete=true">Clicking Here</a></p>  
                       foreach (var thisPage in @Model.NodeById(1404).Descendants().Where("visible && NodeTypeAlias == \"AnEvent\""))  
                       {  
                            if (@thisPage.eventCategory.ToUpper().Equals(qdeleteCat.ToUpper()))  
                            {                   
                                     <p>@thisPage.Name  (<a href="@thisPage.Url" target="_blank">view</a>)</p>  
                            }  
                       }  
                     }  
                      @* c *@  
                     if (qConfirm == "true")  
                     {  
                          <p>The Folowing nodes have been DELETED:</p>  
                       foreach (var thisPage in @Model.NodeById(1404).Descendants().Where("visible && NodeTypeAlias == \"AnEvent\""))  
                       {  
                            if (@thisPage.eventCategory.ToUpper().Contains(qdeleteCat.ToUpper()))  
                            {                   
                                     <p>@thisPage.Name</p>  
                                     try{  
                                     <p> - Delete Node - </p>  
                                      Document docToDelete = new Document(@thisPage.Id);  
                                      umbraco.library.UnPublishSingleNode(docToDelete.Id);   
                                      docToDelete.delete(true);  
                                      umbraco.library.UpdateDocumentCache(docToDelete.Id);  
                                      }  
                                      catch{}    
                            }  
                       }  
                     }  
           }  
           @* ------------------------------------------------------------- *@  
      }  

Comments

Popular posts from this blog

Umbraco 7 - C# Razor - Passing a parameter variable from a Template to a Partial View.

Passing a parameter variable from a Template to a Partial View Example - Passing a Page Id to a Partial View.
In the example below we are passing 3 page Ids (1090. 1091, 1092) to a partial view.  The Partial View will display the details for each of these nodes on a home page.  See final output below.


1) In your Template:
@Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1090}}) @Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1091}}) @Html.Partial("HomePageLinksToLandingPages", new ViewDataDictionary{{ "pageId", 1092}})

2) The Partial View:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage @{ var thisPageId = 1090; var stringPage = @ViewData["pageId"]; thisPageId = Convert.ToInt32(stringPage); } <div class="col-md-4"> <article class="common-blog-pos…

Umbraco 7 Hide a page from Navigation or Sub Navigation with umbracoNaviHide using Razor in a template or partial view

How to Allow the user to Hide a Page from Navigation in Umbraco 7. By using a tick box:
This example shows hide the Search Results page from the main navigation in umbraco 7.


1)  In your Document Type add a property called "umbracoNaviHide", it must be called "umbracoNaviHide"

The property should be a tick box, so it should be a "True/False "



2) In your Navigation, add the highlighted code to your for each loop that writes out the navigation:

  @foreach(var p in homePage.Children().Where("visible"))
                        {
                            write out navigation

3) Now when the user ticks Hide from Nav in the backend, the page will not show in the navigation:


Umbraco Razor Sort Nodes Ascending or Descending

Descending:
@inherits umbraco.MacroEngines.DynamicNodeContext  
@using umbraco.cms.businesslogic.template;

@foreach(var item in Model.Children.OrderBy("Name descending"))
{
if(item.HasAccess())
{
@item.Name 
}
}


Ascending:
@inherits umbraco.MacroEngines.DynamicNodeContext  
@using umbraco.cms.businesslogic.template;

@foreach(var item in Model.Children.OrderBy("Name"))
{
if(item.HasAccess())
{
@item.Name 
}
}