예제 #1
0
/**
* companyList
*
* @ingroup pages
*
* - requires prj or task or tsk_*
*/
function companyList()
{
    global $PH;
    global $auth;
    $presets = array('all_companies' => array('name' => __('all'), 'filters' => array('company_category' => array('id' => 'company_category', 'visible' => true, 'active' => true, 'min' => CCATEGORY_UNDEFINED, 'max' => CCATEGORY_PARTNER)), 'list_settings' => array('tasks' => array('hide_columns' => array(''), 'style' => 'tree'))), 'clients' => array('name' => __('clients'), 'filters' => array('company_category' => array('id' => 'company_category', 'visible' => true, 'active' => true, 'min' => CCATEGORY_CLIENT, 'max' => CCATEGORY_CLIENT)), 'list_settings' => array('tasks' => array('hide_columns' => array(''), 'style' => 'tree'))), 'pros_clients' => array('name' => __('prospective clients'), 'filters' => array('company_category' => array('id' => 'company_category', 'visible' => true, 'active' => true, 'min' => CCATEGORY_PROSCLIENT, 'max' => CCATEGORY_PROSCLIENT)), 'list_settings' => array('tasks' => array('hide_columns' => array(''), 'style' => 'tree'))), 'supplier' => array('name' => __('supplier'), 'filters' => array('company_category' => array('id' => 'company_category', 'visible' => true, 'active' => true, 'min' => CCATEGORY_SUPPLIER, 'max' => CCATEGORY_SUPPLIER)), 'list_settings' => array('tasks' => array('hide_columns' => array(''), 'style' => 'tree'))), 'partner' => array('name' => __('partner'), 'filters' => array('company_category' => array('id' => 'company_category', 'visible' => true, 'active' => true, 'min' => CCATEGORY_PARTNER, 'max' => CCATEGORY_PARTNER)), 'list_settings' => array('tasks' => array('hide_columns' => array(''), 'style' => 'tree'))));
    ## set preset location ##
    $preset_location = 'companyList';
    $preset_id = 'all_companies';
    # default value
    if ($tmp_preset_id = get('preset')) {
        if (isset($presets[$tmp_preset_id])) {
            $preset_id = $tmp_preset_id;
        }
        ### set cookie
        setcookie('STREBER_companyList_preset', $preset_id, time() + 60 * 60 * 24 * 30, '', '', 0);
    } else {
        if ($tmp_preset_id = get('STREBER_companyList_preset')) {
            if (isset($presets[$tmp_preset_id])) {
                $preset_id = $tmp_preset_id;
            }
        }
    }
    ### create from handle ###
    $PH->defineFromHandle(array('preset_id' => $preset_id));
    $page = new Page();
    $page->cur_tab = 'companies';
    $page->title = __("Companies");
    if (!($auth->cur_user->user_rights & RIGHT_VIEWALL)) {
        $page->title_minor = sprintf(__("related projects of %s"), $page->title_minor = $auth->cur_user->name);
    } else {
        $page->title_minor = __("admin view");
    }
    $page->type = __("List");
    $page->options = build_companyList_options();
    ### page functions ###
    if ($auth->cur_user->user_rights & RIGHT_COMPANY_CREATE) {
        ### page functions ###
        $page->add_function(new PageFunctionGroup(array('name' => __('new'))));
        $page->add_function(new PageFunction(array('target' => 'companyNew', 'name' => __('Company'), 'params' => array('company_category' => CCATEGORY_UNDEFINED))));
    }
    ### render title ###
    echo new PageHeader();
    echo new PageContentOpen();
    $list = new ListBlock_companies();
    $list->filters[] = new ListFilter_companies();
    $preset = $presets[$preset_id];
    foreach ($preset['filters'] as $f_name => $f_settings) {
        switch ($f_name) {
            case 'company_category':
                $list->filters[] = new ListFilter_company_category_min(array('value' => $f_settings['min']));
                $list->filters[] = new ListFilter_company_category_max(array('value' => $f_settings['max']));
                break;
            default:
                trigger_error("Unknown filter setting {$f_name}", E_USER_WARNING);
                break;
        }
    }
    $filter_empty_folders = isset($preset['filter_empty_folders']) && $preset['filter_empty_folders'] ? true : NULL;
    ### may user create companies? ###
    if ($auth->cur_user->user_rights & RIGHT_COMPANY_CREATE) {
        $list->no_items_html = $PH->getLink('companyNew', '', array('person' => $auth->cur_user->id));
    } else {
        $list->no_items_html = __("no companies");
    }
    $order_str = get("sort_" . $PH->cur_page->id . "_" . $list->id);
    $order_str = str_replace(",", ", ", $order_str);
    $list->query_options['order_str'] = $order_str;
    $list->title = $page->title;
    $page->print_presets(array('target' => $preset_location, 'project_id' => '', 'preset_id' => $preset_id, 'presets' => $presets, 'person_id' => ''));
    $list->print_automatic();
    ### Link to start cvs export ###
    $format = get('format');
    if ($format == FORMAT_HTML || $format == '') {
        echo $PH->getCSVLink();
    }
    echo new PageContentClose();
    echo new PageHtmlEnd();
}