var stStartPoint = '';
var stResults = '';
var arParents = '';
var stCurrentParent = '';
var lstNewchildStartPoints = '';
var stParentsParents = '';
var i = '';
var navElementAry = application.ohsuNav.navElementDAO.getByUniqueID(arguments.uniqueID);
var navElement = structNew();
var deleted = false;
var results = structNew();
var childList = "";
if( arrayLen(navElementAry) gt 0 )
{
childList = navElementAry[1].values.childList;
if( listFind(childList, arguments.pageID) )
{
navElement = navElementAry[1].values;
// add in the dataPageID
navElement.dataPageID = navElementAry[1].pageID;
navElement.childList = application.ohsuNav.data.deleteFromList(navElement.childList, arguments.pageID);
// update the record
results = application.ohsuNav.navElementDAO.update(navElement);
if( results.contentUpdated )
deleted = true;
}
}
var thisParent = StructNew();
var itm = 1;
var itr = 1;
var results = false;
var startPointRemoved = false;
// retrieve this record
var navElement = application.ohsuNav.navElementDAO.getByStartPoint(arguments.startPointPageID);
// retrieve parent elements that have this startPoint as a child
var parents = application.ohsuNav.navElementDAO.getParentsByStartPoint(arguments.startPointPageID);
// delete the start point
var delStartPoint = application.ohsuNav.navElementDAO.delete(navElement[1].values.uniqueID);
// update the parents of this start point so it no longer has this as a start point
for( itm=1; itm lte arrayLen(parents); itm=itm+1 )
{
thisParent = parents[itm].values;
thisParent.dataPageID = parents[itm].pageID;
thisParent.childStartPoints = application.ohsuNav.data.deleteFromList(thisParent.childStartPoints, arguments.startPointPageID);
thisParent.childList = application.ohsuNav.data.deleteFromList(thisParent.childList, arguments.startPointPageID);
// update the parent
results = application.ohsuNav.navElementDAO.update(thisParent);
}
// delete any children startPoints
for( itr; itr lte listLen(navElement[1].values.childStartPoints); itr=itr+1 )
{
application.ohsuNav.navElementController.removeStartPoint(listGetAt(navElement[1].values.childStartPoints, itr) );
}
// retrieve the current nav element
var navElement = application.ohsuNav.navElementDAO.getByUniqueID(arguments.uniqueID);
var tmp = structNew();
var results = structNew();
var success = false;
var changeList = "";
var itm = 1;
if( arrayLen(navElement) gt 0 )
{
// get the items that were deleted
changeList = arrayToList(application.ohsuNav.data.arrayDeleteArray(listToArray(navElement[1].values.childList), listToArray(arguments.childList)));
// loop through deleted list items and check if they are startPoints and/or parents
for( itm; itm lte listLen(changeList); itm = itm + 1 )
{
if( application.ohsuNav.navElementService.isStartPoint(listGetAt(changeList, itm)) )
removeStartPoint(listGetAt(changeList, itm));
else if( application.ohsuNav.navElementService.isPromotedToParent(listGetAt(changeList, itm)) )
removePromotedParent(listGetAt(changeList, itm));
}
// retrieve the nav element again, now that startpoints have been removed
navElement = application.ohsuNav.navElementDAO.getByUniqueID(arguments.uniqueID);
// do the actual updating of this item
tmp = navElement[1].values;
tmp.dataPageID = navElement[1].pageID;
tmp.childList = arguments.childList;
// update
results = application.ohsuNav.navElementDAO.update(tmp);
// TODO: Error handling on the update
// SEE the addStartPoint
if( results.contentUpdated )
success = true;
}
// essentially this is a startpoint - so remove it like a start point
removeStartPoint(arguments.pageID);
/*
TODO: Review - is a parent really any different than a standard start point
//var navElement = application.ohsuNav.navElementDAO.getPromotedParent(arguments.pageID);
//var itm = 1;
//var childElement = arrayNew(1);
// now handle special case for promoted parents
if( arrayLen(navElement) )
{
// remove the parent record
application.ohsuNav.navElementDAO.delete(arguments.uniqueID);
// loop through children elements and delete
for( itm; itm lte listLen(navElement[1].values.childStartPoints); itm=itm+1 )
{
childElement = application.ohsuNav.navElementDAO.getByStartPointID(listGetAt(navElement[1].values.childStartPoints, itm));
if( arrayLen(childElement) )
application.ohsuNav.navElementDAO.delete(childElement[1].values.uniqueID);
}
} */