verifyPackage( 'pigeonholes' ); $gBitSystem->verifyPermission( 'p_pigeonholes_create' ); use Bitweaver\Pigeonholes\Pigeonholes; use Bitweaver\KernelTools; include_once PIGEONHOLES_PKG_INCLUDE_PATH.'lookup_pigeonholes_inc.php'; // include edit structure file only when structure_id is known if( !empty( $_REQUEST["structure_id"] ) && ( empty( $_REQUEST['action'] ) || $_REQUEST['action'] != 'remove' ) ) { $verifyStructurePermission = 'p_pigeonholes_create'; $noAjaxContent = true; include_once LIBERTY_PKG_INCLUDE_PATH.'structure_edit_inc.php'; // get all the nodes in this structure foreach( $rootTree as $node ) { $pigeonStructure[$node['structure_id']] = str_repeat( '-', $node['level'] ).' '.$node['title']; } $gBitSmarty->assign( 'pigeonStructure', $pigeonStructure ); } global $gStructure; // store the form if we need to if( !empty( $_REQUEST['pigeonhole_store'] ) ) { if(( empty( $_REQUEST['pigeonhole']['title'] ))) { $gBitSystem->fatalError( KernelTools::tra( "You must specify a title." )); } // we need to get the root structure id $_REQUEST['pigeonhole']['root_structure_id'] = !empty( $rootStructure->mStructureId ) ? $rootStructure->mStructureId : null; // store the pigeonhole $pigeonStore = new Pigeonholes( null, !empty( $_REQUEST['pigeonhole_content_id'] ) ? $_REQUEST['pigeonhole_content_id'] : null ); $pigeonStore->load(); if( $pigeonStore->store( $_REQUEST['pigeonhole'] )) { header( "Location: ".$_SERVER['SCRIPT_NAME'].'?structure_id='.$pigeonStore->mStructureId.( !empty( $_REQUEST['action'] ) ? '&action='.$_REQUEST['action'] : '' )."&success=".urlencode( KernelTools::tra( "The category was successfully stored" ) ) ); } else { $feedback['error'] = $gContent->mErrors; } } if( !empty( $_REQUEST['action'] ) || isset( $_REQUEST["confirm"] ) ) { // if we need to edit, show the information if( $_REQUEST['action'] == 'edit' ) { $pigeonInfo = $gContent->mInfo; $gContent->loadPreferences(); } if( $_REQUEST['action'] == 'edit' || $_REQUEST['action'] == 'create' ) { $gBitSmarty->assign( 'pigeonInfo', !empty( $pigeonInfo ) ? $pigeonInfo : null ); } if( $_REQUEST["action"] == 'remove' || isset( $_REQUEST["confirm"] ) ) { if( isset( $_REQUEST["confirm"] ) ) { if( $gContent->expunge() ) { KernelTools::bit_redirect( $_SERVER['SCRIPT_NAME'].'?structure_id='.$gContent->mInfo["parent_id"] ); } else { $feedback['error'] = $gContent->mErrors; } } $gBitSystem->setBrowserTitle( 'Confirm removal of '.$gContent->mInfo['title'] ); $formHash['remove'] = true; $formHash['structure_id'] = $_REQUEST['structure_id']; $formHash['action'] = 'remove'; $msgHash = [ 'label' => 'Remove Pigeonhole', 'confirm_item' => $gContent->mInfo['title'].'
'.KernelTools::tra( 'and any subcategories' ), 'warning' => 'This will remove the pigeonhole but will not modify or remove the content itself.', ]; $gBitSystem->confirmDialog( $formHash, $msgHash ); } if( $_REQUEST['action'] == 'dismember' && !empty( $_REQUEST['pigeonhole_content_id'] ) && !empty( $_REQUEST['parent_id'] ) ) { if( $gContent->expungePigeonholeMember( [ 'parent_id' => $_REQUEST['parent_id'], 'member_id' => $_REQUEST['pigeonhole_content_id'] ] ) ) { $feedback['success'] = KernelTools::tra( 'The item was successfully removed' ); } else { $feedback['error'] = KernelTools::tra( 'The item could not be removed' ); } // Have we been asked to return somewhere else? if (!empty($_REQUEST['return_uri'])) { KernelTools::bit_redirect($_REQUEST['return_uri']); } // used to avoid displaying edit form unset( $_REQUEST['action'] ); } } if( !empty( $_REQUEST['success'] ) ) { $feedback['success'] = $_REQUEST['success']; } // get all available perms only when the admin is visiting here. if ( $gBitSystem->isFeatureActive( 'pigeonholes_permissions' ) ) { $tmpPerms = $gBitUser->isAdmin() ? $gBitUser->getRolePermissions() : $gBitUser->mPerms; $perms[''] = KernelTools::tra( 'None' ); foreach( $tmpPerms as $perm => $info ) { $perms[$info['package']][$perm] = $perm; } $gBitSmarty->assign( 'perms', $perms ); } $listHash = [ 'root_structure_id' => !empty( $gContent->mInfo['root_structure_id'] ) ? $gContent->mInfo['root_structure_id'] : null, 'force_extras' => true, 'max_records' => -1, ]; $pigeonList = $gContent->getList( $listHash ); $gBitSmarty->assign( 'pigeonList', $pigeonList ); $gBitSmarty->assign( 'feedback', !empty( $feedback ) ? $feedback : null ); // Get list of available styles if ( $gBitSystem->isFeatureActive( 'pigeonholes_themes' ) ) { $styles = $gBitThemes->getStyles( null, true ); $gBitSmarty->assign( 'styles', $styles ); } // Display the template if ( !empty( $gStructure ) ) { $gBitSystem->display( 'bitpackage:pigeonholes/edit_pigeonholes.tpl', !empty( $gStructure->mInfo['title'] ) ? KernelTools::tra( 'Edit Pigeonhole' ).': '.$gStructure->mInfo["title"] : KernelTools::tra( 'Create Pigeonhole' ) , [ 'display_mode' => 'edit' ]); } else { $gBitSystem->display( 'bitpackage:pigeonholes/edit_pigeonholes.tpl', KernelTools::tra( 'Create Pigeonhole' ) , [ 'display_mode' => 'edit' ]); }