Page 1 of 1

Add new sub pages only to pages where you have edit permission

Posted: Sat Oct 06, 2007 1:00 pm
by SimonSchaufi
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:
        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;
        }

Re: Add new sub pages only to pages where you have edit permission

Posted: Sun Oct 07, 2007 5:16 am
by cyberman
Thanks for that Simon.

Maybe you can add it to forge ...

Re: Add new sub pages only to pages where you have edit permission

Posted: Sun Oct 07, 2007 7:52 am
by SimonSchaufi
done already...

i added it as a feature request.

Re: Add new sub pages only to pages where you have edit permission

Posted: Mon Oct 08, 2007 7:55 am
by Pierre M.
Thank you Simon.
Pierre

Re: Add new sub pages only to pages where you have edit permission

Posted: Mon Oct 22, 2007 7:11 am
by SimonSchaufi
if the list is empty there must still be a permission check that the user is not allowed to add pages to root without having the rights.