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.
Example 1:
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
Post a Comment