function sportal_admin_state_change()
{
    checkSession('get');
    if (!empty($_REQUEST['block_id'])) {
        $id = (int) $_REQUEST['block_id'];
    } elseif (!empty($_REQUEST['category_id'])) {
        $id = (int) $_REQUEST['category_id'];
    } elseif (!empty($_REQUEST['article_id'])) {
        $id = (int) $_REQUEST['article_id'];
    } else {
        fatal_lang_error('error_sp_id_empty', false);
    }
    changeState($_REQUEST['type'], $id);
    if ($_REQUEST['type'] == 'block') {
        $sides = array(1 => 'left', 2 => 'top', 3 => 'bottom', 4 => 'right');
        $list = !empty($_GET['redirect']) && isset($sides[$_GET['redirect']]) ? $sides[$_GET['redirect']] : 'list';
        redirectexit('action=admin;area=portalblocks;sa=' . $list);
    } elseif ($_REQUEST['type'] == 'category') {
        redirectexit('action=admin;area=portalarticles;sa=categories');
    } elseif ($_REQUEST['type'] == 'article') {
        redirectexit('action=admin;area=portalarticles;sa=articles');
    } else {
        redirectexit('action=admin;area=portalconfig');
    }
}
 case 'go2menu':
 case 'go2menuitem':
 case 'resethits':
 case 'menulink':
 case 'save':
 case 'apply':
     save($option, $task);
     break;
 case 'remove':
     trash($cid, $option);
     break;
 case 'publish':
     changeState($cid, 1, $option);
     break;
 case 'unpublish':
     changeState($cid, 0, $option);
     break;
 case 'accesspublic':
     changeAccess(intval($cid[0]), 0, $option);
     break;
 case 'accessregistered':
     changeAccess(intval($cid[0]), 1, $option);
     break;
 case 'accessspecial':
     changeAccess(intval($cid[0]), 2, $option);
     break;
 case 'saveorder':
     saveOrder($cid);
     break;
 default:
     view($option);