Add new sub pages only to pages where you have edit permission
Posted: Sat Oct 06, 2007 1:00 pm
The changes i made change the dropdown field in the addpages.php. If a user has limited access (no permission to edit all pages but can edit some pages) he will not be able to add new pages to the root for example which would cause trouble. With this new function he will only be able to add new pages UNDER the pages where he has the permission to edit them (or if he is an additional editor). This is optional and can be deleted if you want.
please replace this function in class.contentoperations.inc.php:
please replace this function in class.contentoperations.inc.php:
function CreateHierarchyDropdown($current = '', $parent = '', $name = 'parent_id')
{
$userid = get_userid(); //added
$result = '';
$allcontent =& ContentOperations::GetAllContent();
if ($allcontent !== FALSE && count($allcontent) > 0)
{
$result .= '';
if(check_permission($userid, 'Modify Any Page')){ //added
$result .= 'None';
} //added
$curhierarchy = '';
foreach ($allcontent as $one)
{
if ($one->Id() == $current)
{
#Grab hierarchy just in case we need to check children
#(which will always be after)
$curhierarchy = $one->Hierarchy();
#Then jump out. We don't want ourselves in the list.
continue;
}
#If it's a child of the current, we don't want to show it as it
#could cause a deadlock.
if ($curhierarchy != '' && strstr($one->Hierarchy() . '.', $curhierarchy
. '.') == $one->Hierarchy() . '.')
{
continue;
}
if( in_array($userid, $one->GetAdditionalEditors()) || $userid == $one->Owner()
|| check_permission($userid, 'Modify Any Page')){ //added
#Don't include content types that do not want children either...
if ($one->WantsChildren() == true)
{
$result .= 'Id().'"';
#Select current parent if it exists
if ($one->Id() == $parent)
{
$result .= ' selected="selected"';
}
$result .= '>'.$one->Hierarchy().'. -
'.$one->Name().'';
}
} //added
}
$result .= '';
}
return $result;
}