public function body() { $form = $this->init_module(Libs_QuickForm::module_name(), null, 'RBpicker_test'); $form->addElement('multiselect', 'test', 'Test', array(1 => 0, 4 => 1, 7 => 2, 8 => 3)); $form->addElement('submit', 'submit', 'Submit'); $form->display(); if ($form->validate()) { print_r($form->exportValues()); } $rb1 = $this->init_module(Utils_RecordBrowser_RecordPicker::module_name()); $this->display_module($rb1, array('contact', 'test', array('Tests_LeightboxCommon', 'TEST'), array('company_name' => 1), array('country' => true))); print $rb1->create_open_link('Click here!'); Libs_LeightboxCommon::display('leightbox1', '<h1>Leightbox</h1>' . 'ble ble ble', 'Test header'); print '<hr><a ' . Libs_LeightboxCommon::get_open_href('leightbox1') . '>leightbox container</a> </div>'; //------------------------------ print out src print '<hr><b>Install</b><br>'; $this->pack_module(Utils_CatFile::module_name(), 'modules/Tests/Leightbox/LeightboxInstall.php'); print '<hr><b>Main</b><br>'; $this->pack_module(Utils_CatFile::module_name(), 'modules/Tests/Leightbox/Leightbox_0.php'); print '<hr><b>Common</b><br>'; $this->pack_module(Utils_CatFile::module_name(), 'modules/Tests/Leightbox/LeightboxCommon_0.php'); }
public static function QFfield_select(&$form, $field, $label, $mode, $default, $desc, $rb_obj) { if (self::QFfield_static_display($form, $field, $label, $mode, $default, $desc, $rb_obj)) { return; } $record = $rb_obj->record; $comp = array(); $param = explode(';', $desc['param']); $crits_callback = isset($param[1]) ? $param[1] : null; $multi_adv_params_callback = isset($param[2]) ? explode('::', $param[2]) : null; $multi_adv_params = array(); if (is_callable($multi_adv_params_callback)) { $multi_adv_params = call_user_func($multi_adv_params_callback, $record); } // check multi_adv_params structure and fill empty values if (!is_array($multi_adv_params)) { $multi_adv_params = array(); } if (!isset($multi_adv_params['order'])) { $multi_adv_params['order'] = array(); } if (!isset($multi_adv_params['cols'])) { $multi_adv_params['cols'] = array(); } if (!isset($multi_adv_params['format_callback'])) { $multi_adv_params['format_callback'] = array(); } $reference = explode('::', $param[0]); $tab = $reference[0]; $columns = isset($reference[1]) ? $reference[1] : null; if (!isset($columns)) { trigger_error("Columns not set for field: {$field}"); } if ($tab == '__COMMON__') { $order = isset($reference[2]) ? $reference[2] : 'value'; $data = Utils_CommonDataCommon::get_translated_tree($columns, $order == 'key'); if (!is_array($data)) { $data = array(); } $comp = $comp + $data; $rec_count = 0; $label = Utils_RecordBrowserCommon::get_field_tooltip($label, 'commondata', $columns); } else { if (isset($crits_callback)) { $crit_callback = explode('::', $crits_callback); if (is_callable($crit_callback)) { $crits = call_user_func($crit_callback, false, $record); $adv_crits = call_user_func($crit_callback, true, $record); } else { $crits = $adv_crits = array(); } if ($adv_crits === $crits) { $adv_crits = null; } if ($adv_crits !== null) { $crits = $adv_crits; } } else { $crits = array(); } if ($tab == '__RECORDSETS__') { $tabs = DB::GetCol('SELECT tab FROM recordbrowser_table_properties'); } else { $tabs = explode(',', $tab); } $single_tab = count($tabs) == 1; if (!$single_tab && empty($crits)) { foreach ($tabs as $tab) { $crits[$tab] = array(); } } // get related records with proper columns $col_id = array(); if ($single_tab) { $columns = array_filter(explode('|', $columns)); foreach ($columns as $c) { $col_id[] = self::get_field_id($c); } } $rec_count = 0; foreach ($tabs as $t) { if (!empty($crits) && !$single_tab && !isset($crits[$t])) { continue; } $rec_count += Utils_RecordBrowserCommon::get_records_count($t, $single_tab ? $crits : $crits[$t], null); } if ($rec_count <= Utils_RecordBrowserCommon::$options_limit) { $records = array(); foreach ($tabs as $t) { if (!empty($crits) && !$single_tab && !isset($crits[$t])) { continue; } $access = self::get_access($t, 'selection', null, true); if ($access === false) { continue; } if ($access !== true && is_array($access)) { if ($single_tab) { $crits = self::merge_crits($crits, $access); } elseif (isset($crits[$t]) && is_array($crits[$t]) && $crits[$t]) { $crits[$t] = self::merge_crits($crits[$t], $access); } else { $crits[$t] = $access; } } $records_tmp = Utils_RecordBrowserCommon::get_records($t, $single_tab ? $crits : $crits[$t], array(), !empty($multi_adv_params['order']) ? $multi_adv_params['order'] : array()); foreach ($records_tmp as $key => $rec) { if (!self::get_access($t, 'view', $rec)) { continue; } $records[($single_tab ? '' : $t . '/') . $key] = $rec; } } } else { $records = array(); } // set current record field value to array if (isset($record[$field])) { if (!is_array($record[$field])) { if ($record[$field] != '') { $record[$field] = array($record[$field] => $record[$field]); } else { $record[$field] = array(); } } } if ($default) { if (!is_array($default)) { $record[$field][$default] = $default; } else { foreach ($default as $v) { $record[$field][$v] = $v; } } } $ext_rec = array(); $columns_qty = count($col_id); if (isset($record[$field])) { $ext_rec = array_flip($record[$field]); foreach ($ext_rec as $k => $v) { $kk = explode('/', $k, 2); if (count($kk) == 1) { if ($single_tab && is_numeric($kk[0])) { $t = $tab; $record_id = $kk[0]; } else { continue; } } else { $t = $kk[0]; $record_id = $kk[1]; if (!self::check_table_name($t, false, false) || !is_numeric($record_id)) { continue; } } $c = Utils_RecordBrowserCommon::get_record($t, $record_id); if (!empty($multi_adv_params['format_callback'])) { $n = call_user_func($multi_adv_params['format_callback'], $c); } else { if ($columns_qty == 0) { $n = self::create_default_linked_label($t, $record_id, true); } elseif ($columns_qty == 1) { $n = self::get_val($t, $col_id[0], $c, true); } else { $n = array(); foreach ($col_id as $cid) { $n[] = self::get_val($t, $cid, $c, true); } $n = implode(' ', $n); } } $comp[($single_tab ? '' : $t . '/') . $record_id] = $n; } } // if (!empty($multi_adv_params['order'])) // natcasesort($comp); foreach ($records as $k => $v) { if (!empty($multi_adv_params['format_callback'])) { $n = call_user_func($multi_adv_params['format_callback'], $v); } else { if ($single_tab && is_numeric($k)) { $t = $tab; $record_id = $k; } else { $kk = explode('/', $k, 2); $t = $kk[0]; $record_id = $kk[1]; } if ($columns_qty == 0) { $n = self::create_default_linked_label($t, $record_id, true); } elseif ($columns_qty == 1) { $n = self::get_val($t, $col_id[0], $v, true); } else { $n = array(); foreach ($col_id as $cid) { $n[] = self::get_val($t, $cid, $v, true); } $n = implode(' ', $n); } } $comp[$k] = $n; unset($ext_rec[$v['id']]); unset($ext_rec[$k]); } if (empty($multi_adv_params['order'])) { natcasesort($comp); } if ($single_tab) { $label = Utils_RecordBrowserCommon::get_field_tooltip($label, $desc['type'], reset($tabs), $crits); } } if ($rec_count > Utils_RecordBrowserCommon::$options_limit) { $f_callback = $multi_adv_params['format_callback']; if (empty($f_callback)) { $f_callback = array('Utils_RecordBrowserCommon', 'autoselect_label'); } if ($desc['type'] == 'multiselect') { $el = $form->addElement('automulti', $field, $label, array('Utils_RecordBrowserCommon', 'automulti_suggestbox'), array($rb_obj->tab, $crits, $f_callback, $desc['param']), $f_callback); if ($single_tab) { ${'rp_' . $field} = $rb_obj->init_module(Utils_RecordBrowser_RecordPicker::module_name(), array()); $filters_defaults = isset($multi_adv_params['filters_defaults']) ? $multi_adv_params['filters_defaults'] : array(); $rb_obj->display_module(${'rp_' . $field}, array($tab, $field, $multi_adv_params['format_callback'], $crits, array(), array(), array(), $filters_defaults)); $el->set_search_button('<a ' . ${'rp_' . $field}->create_open_href() . ' ' . Utils_TooltipCommon::open_tag_attrs(__('Advanced Selection')) . ' href="javascript:void(0);"><img border="0" src="' . Base_ThemeCommon::get_template_file('Utils_RecordBrowser', 'icon_zoom.png') . '"></a>'); } } else { $form->addElement('autoselect', $field, $label, $comp, array(array('Utils_RecordBrowserCommon', 'automulti_suggestbox'), array($rb_obj->tab, $crits, $f_callback, $desc['param'])), $f_callback); } } else { if ($desc['type'] === 'select') { $comp = array('' => '---') + $comp; } $form->addElement($desc['type'], $field, $label, $comp, array('id' => $field)); } if ($mode !== 'add') { $form->setDefaults(array($field => $default)); } }
public function show_data($crits = array(), $cols = array(), $order = array(), $admin = false, $special = false, $pdf = false, $limit = null) { $this->help('RecordBrowser', 'main'); if (Utils_RecordBrowserCommon::$admin_access) { $admin = true; } if (isset($_SESSION['client']['recordbrowser']['admin_access'])) { Utils_RecordBrowserCommon::$admin_access = true; } if (self::$clone_result !== null && $this->jump_to_new_record) { if (is_numeric(self::$clone_result)) { $this->navigate('view_entry', 'view', self::$clone_result); } $clone_result = self::$clone_result; self::$clone_result = null; if ($clone_result != 'canceled') { return; } } if ($this->check_for_jump()) { return; } Utils_RecordBrowserCommon::$cols_order = $this->col_order; if ($this->get_access('browse') === false) { print __('You are not authorised to browse this data.'); return; } $this->init(); $this->action = 'Browse'; if (!Base_AclCommon::i_am_admin() && $admin) { print __('You don\'t have permission to access this data.'); } if ($this->data_gb !== null) { $gb = $this->data_gb; } else { $gb = $this->init_module(Utils_GenericBrowser::module_name(), null, $this->tab); } if (!$pdf) { $gb->set_expandable(true); } if ($pdf) { $gb->set_resizable_columns(false); } else { $gb->set_fixed_columns_class($this->fixed_columns_class); } if ($special) { $gb_per_page = Base_User_SettingsCommon::get(Utils_GenericBrowser::module_name(), 'per_page'); $gb->set_per_page(Base_User_SettingsCommon::get(Utils_RecordBrowser_RecordPicker::module_name(), 'per_page')); } if (!$this->disabled['search']) { $gb->is_adv_search_on(); $is_searching = $gb->get_module_variable('search', ''); if (!empty($is_searching)) { if ($this->get_module_variable('browse_mode') != 'all') { $this->set_module_variable('browse_mode', 'all'); // $gb->set_module_variable('quickjump_to',null); location(array()); return; } } } if ($special) { $table_columns = array(array('name' => __('Select'), 'width' => '40px')); } else { $table_columns = array(); if (!$pdf && !$admin && $this->favorites) { $fav = array('name' => ' ', 'width' => '24px', 'attrs' => 'class="Utils_RecordBrowser__favs"'); if (!isset($this->force_order)) { $fav['order'] = ':Fav'; } $table_columns[] = $fav; } if (!$pdf && !$admin && $this->watchdog) { $table_columns[] = array('name' => '', 'width' => '24px', 'attrs' => 'class="Utils_RecordBrowser__watchdog"'); } } if (!$this->disabled['quickjump']) { $quickjump = DB::GetOne('SELECT quickjump FROM recordbrowser_table_properties WHERE tab=%s', array($this->tab)); } else { $quickjump = ''; } $hash = array(); $query_cols = array(); foreach ($this->table_rows as $field => $args) { $hash[$args['id']] = $field; if ($field === 'id') { continue; } if (!$args['visible'] && (!isset($cols[$args['id']]) || $cols[$args['id']] === false)) { continue; } if (isset($cols[$args['id']]) && $cols[$args['id']] === false) { continue; } $query_cols[] = $args['id']; $arr = array('name' => $args['name']); if (!$pdf && !isset($this->force_order) && $this->browse_mode != 'recent' && $args['type'] !== 'multiselect' && ($args['type'] !== 'calculated' || $args['param'] != '') && $args['type'] !== 'hidden') { $arr['order'] = $field; } if ($args['type'] == 'checkbox' || ($args['type'] == 'date' || $args['type'] == 'timestamp' || $args['type'] == 'time') && !$this->add_in_table || $args['type'] == 'commondata') { $arr['wrapmode'] = 'nowrap'; $arr['width'] = 50; } else { $arr['width'] = 100; } $arr['name'] = _V($arr['name']); // ****** Translate field name for table header if (isset($this->more_table_properties[$args['id']])) { foreach (array('name', 'wrapmode', 'width', 'display', 'order') as $v) { if (isset($this->more_table_properties[$args['id']][$v])) { if (is_numeric($this->more_table_properties[$args['id']][$v]) && $v == 'width') { $this->more_table_properties[$args['id']][$v] = $this->more_table_properties[$args['id']][$v] * 10; } $arr[$v] = $this->more_table_properties[$args['id']][$v]; } } } if (is_array($args['param'])) { $str = explode(';', $args['param']['array_id']); } else { $str = explode(';', $args['param']); } $ref = explode('::', $str[0]); $each = array(); if (!$pdf && $quickjump !== '' && $args['name'] === $quickjump) { $each[] = 'quickjump'; } if (!$pdf && !$this->disabled['search']) { $each[] = 'search'; } foreach ($each as $e) { if ($args['type'] == 'text' || $args['type'] == 'currency' || $args['type'] == 'autonumber' || $args['type'] == 'calculated' && preg_match('/^[a-z]+(\\([0-9]+\\))?$/i', $args['param']) !== 0) { $arr[$e] = $args['id']; } if ($args['type'] == 'long text' && $gb->is_adv_search_on()) { $arr[$e] = $args['id']; } if (isset($args['ref_field']) && $args['ref_field']) { $arr[$e] = $args['id']; } if ($args['commondata'] && (!is_array($args['param']) || strpos($args['param']['array_id'], ':') === false)) { $arr[$e] = $args['id']; } } if (isset($arr['quickjump'])) { $arr['quickjump'] = '"~' . $arr['quickjump']; } if ($pdf) { $arr['attrs'] = 'style="border:1px solid black;font-weight:bold;text-align:center;color:white;background-color:gray"'; if (!isset($arr['width'])) { $arr['width'] = 100; } if ($arr['width'] == 1) { $arr['width'] = 100; } } $table_columns[] = $arr; } if ($pdf) { $max = 0; $width_sum = 0; foreach ($table_columns as $k => $v) { if ($v['width'] > $max) { $max = $v['width']; } } foreach ($table_columns as $k => $v) { $table_columns[$k]['width'] = intval($table_columns[$k]['width']); if ($table_columns[$k]['width'] < $max / 2) { $table_columns[$k]['width'] = $max / 2; } $width_sum += $table_columns[$k]['width']; } $fraction = 0; foreach ($table_columns as $k => $v) { $table_columns[$k]['width'] = floor(100 * $v['width'] / $width_sum); $fraction += 100 * $v['width'] / $width_sum - $table_columns[$k]['width']; if ($fraction > 1) { $table_columns[$k]['width'] += 1; $fraction -= 1; } $table_columns[$k]['width'] = $table_columns[$k]['width'] . '%'; } } if (empty($table_columns)) { print 'Invalid view, no fields to display'; return; } $gb->set_table_columns($table_columns); if (!$pdf) { $clean_order = array(); foreach ($order as $k => $v) { if ($k[0] == ':') { $clean_order[$k] = $v; continue; } if (!in_array($k, $query_cols)) { continue; } if (isset($this->more_table_properties[$k]) && isset($this->more_table_properties[$k]['name'])) { $key = $this->more_table_properties[$k]['name']; } else { $key = isset($hash[$k]) ? $hash[$k] : $k; $key = _V($this->table_rows[$key]['name']); } $clean_order[$key] = $v; } if ($this->browse_mode != 'recent') { $gb->set_default_order($clean_order, $this->changed_view); } } $search = $gb->get_search_query(true); $search_res = array(); if ($this->search_calculated_callback) { $search_res = call_user_func($this->search_calculated_callback, $search); } if ($gb->is_adv_search_on()) { foreach ($search as $k => $v) { $f_id = str_replace(array('"', '~'), '', $k); $args = $this->table_rows[$hash[$f_id]]; if ($args['commondata']) { $k = $k . '[]'; } elseif (isset($args['ref_field']) && $args['ref_field']) { $k = $k . '[' . Utils_RecordBrowserCommon::get_field_id($args['ref_field']) . ']'; } if ($k[0] == '"') { $search_res = Utils_RecordBrowserCommon::merge_crits($search_res, array('~' . $k => $v)); continue; } if (is_array($v)) { $v = $v[0]; } $v = explode(' ', $v); foreach ($v as $w) { if ($w === '') { continue; } if (!$args['commondata']) { $w = "%{$w}%"; } $search_res = Utils_RecordBrowserCommon::merge_crits($search_res, array('~' . $k => $w)); } } } else { $val = reset($search); $isearch = $gb->get_module_variable('search'); if (empty($isearch)) { $val = null; } $val2 = explode(' ', $val[0]); $leftovers = array(); foreach ($val2 as $vv) { if ($vv === '') { continue; } $search_part = new Utils_RecordBrowser_Crits(); foreach ($search as $k => $v) { if ($v != $val) { $leftovers[$k] = $v; continue; } if ($k[0] == '"') { $search_part = Utils_RecordBrowserCommon::merge_crits($search_part, array('~' . $k => $vv), true); continue; } $args = $this->table_rows[$hash[trim($k, '(|')]]; if ($args['commondata']) { $k = $k . '[]'; } elseif (isset($args['ref_field']) && $args['ref_field']) { $k = $k . '[' . Utils_RecordBrowserCommon::get_field_id($args['ref_field']) . ']'; } if (!$args['commondata']) { $w = "%{$vv}%"; } else { $w = $vv; } $search_part = Utils_RecordBrowserCommon::merge_crits($search_part, array('~' . $k => $w), true); } $search_res = Utils_RecordBrowserCommon::merge_crits($search_res, $search_part); } if ($leftovers) { $search_res = Utils_RecordBrowserCommon::merge_crits($search_res, $leftovers); } } if (!$pdf) { $order = $gb->get_order(); } $crits = Utils_RecordBrowserCommon::merge_crits($crits, $search_res); if ($this->browse_mode == 'favorites') { $crits = Utils_RecordBrowserCommon::merge_crits($crits, array(':Fav' => true)); } if ($this->browse_mode == 'watchdog') { $crits = Utils_RecordBrowserCommon::merge_crits($crits, array(':Sub' => true)); } if ($this->browse_mode == 'recent') { $crits = Utils_RecordBrowserCommon::merge_crits($crits, array(':Recent' => true)); $order = array(':Visited_on' => 'DESC'); } if ($admin && !$pdf) { $order = array(':Edited_on' => 'DESC'); $form = $this->init_module(Libs_QuickForm::module_name(), null, $this->tab . '_admin_filter'); $form->addElement('select', 'show_records', __('Show records'), array(0 => '[' . __('All') . ']', 1 => '[' . __('All active') . ']', 2 => '[' . __('All deactivated') . ']'), array('onchange' => $form->get_submit_form_js())); $f = $this->get_module_variable('admin_filter', 0); $form->setDefaults(array('show_records' => $f)); $admin_filter = $form->exportValue('show_records'); $this->set_module_variable('admin_filter', $admin_filter); switch ($admin_filter) { case 0: Utils_RecordBrowserCommon::$admin_filter = ''; break; case 1: Utils_RecordBrowserCommon::$admin_filter = '<tab>.active=1 AND '; break; case 2: Utils_RecordBrowserCommon::$admin_filter = '<tab>.active=0 AND '; break; } $form->display_as_row(); } if (isset($this->force_order)) { $order = $this->force_order; } if (!$order) { $order = array(); } $this->amount_of_records = Utils_RecordBrowserCommon::get_records_count($this->tab, $crits, $admin, $order); if ($limit === null && !$this->disabled['pagination']) { $limit = $gb->get_limit($this->amount_of_records); } if (!$this->disabled['pdf'] && !$pdf && $this->get_access('print')) { $limited_print_records = 200; $limited_print = $this->amount_of_records >= $limited_print_records; $print_limit = $limited_print ? $limit : null; $key = md5(serialize($this->tab) . serialize($crits) . serialize($cols) . serialize($order) . serialize($admin) . serialize($print_limit)); $_SESSION['client']['utils_recordbrowser'][$key] = array('tab' => $this->tab, 'crits' => $crits, 'cols' => $cols, 'order' => $order, 'admin' => $admin, 'more_table_properties' => $this->more_table_properties, 'limit' => $print_limit); $print_href = 'href="modules/Utils/RecordBrowser/print.php?' . http_build_query(array('key' => $key, 'cid' => CID)) . '" target="_blank"'; $print_tooltip_text = $limited_print ? __('Due to more than %d records, you are allowed to print current view', array($limited_print_records)) : __('Print all records'); $print_tooltip = Utils_TooltipCommon::open_tag_attrs($print_tooltip_text, false); $this->new_button('print', __('Print'), "{$print_href} {$print_tooltip}"); } $records = Utils_RecordBrowserCommon::get_records($this->tab, $crits, array(), $order, $limit, $admin); if (!$records) { $last_offset = $this->get_module_variable('last_offset'); while (!$records) { if ($last_offset > $limit['offset'] && $limit['offset'] - $limit['numrows'] >= 0) { $limit['offset'] -= $limit['numrows']; } elseif ($limit['offset'] + $limit['numrows'] < $this->amount_of_records) { $limit['offset'] += $limit['numrows']; } else { break; } $gb->set_module_variable('offset', $limit['offset']); $limit = $gb->get_limit($this->amount_of_records); $records = Utils_RecordBrowserCommon::get_records($this->tab, $crits, array(), $order, $limit, $admin); } } $this->set_module_variable('last_offset', $limit['offset']); if (($this->get_access('export') || $this->enable_export) && !$this->disabled['export']) { $this->new_button('save', __('Export'), 'href="modules/Utils/RecordBrowser/csv_export.php?' . http_build_query(array('tab' => $this->tab, 'admin' => $admin, 'cid' => CID, 'path' => $this->get_path())) . '"'); } $this->set_module_variable('crits_stuff', $crits ? $crits : array()); $this->set_module_variable('order_stuff', $order ? $order : array()); $custom_label = ''; if (!$pdf && !$special && $this->get_access('add', $this->custom_defaults) !== false) { if ($this->add_button !== null) { $label = $this->add_button; } elseif (!$this->multiple_defaults) { $label = $this->create_callback_href(array($this, 'navigate'), array('view_entry', 'add', null, $this->custom_defaults)); } else { $label = Utils_RecordBrowserCommon::create_new_record_href($this->tab, $this->custom_defaults, 'multi', true, true); } if ($label !== false && $label !== '') { $custom_label = '<a ' . $label . '><span class="record_browser_add_new" ' . Utils_TooltipCommon::open_tag_attrs(__('Add new record')) . '><img src="' . Base_ThemeCommon::get_template_file('Utils/RecordBrowser/add.png') . '" /><div class="add_new">' . __('Add new') . '</div></span></a>'; } } if ($this->more_add_button_stuff) { if ($custom_label) { $custom_label = '<table><tr><td>' . $custom_label . '</td><td>' . $this->more_add_button_stuff . '</td></tr></table>'; } else { $custom_label = $this->more_add_button_stuff; } } $gb->set_custom_label($custom_label); if ($admin) { $this->browse_mode = 'all'; } if ($this->browse_mode == 'recent') { $ret = DB::Execute('SELECT * FROM ' . $this->tab . '_recent WHERE user_id=%d ORDER BY visited_on DESC', array(Acl::get_user())); while ($row = $ret->FetchRow()) { if (!isset($records[$row[$this->tab . '_id']])) { continue; } $records[$row[$this->tab . '_id']]['visited_on'] = Base_RegionalSettingsCommon::time2reg(strtotime($row['visited_on'])); } } else { $this->set_module_variable('set_browsed_records', array('tab' => $this->tab, 'crits' => $crits, 'order' => $order, 'records' => array())); } if ($special) { $rpicker_ind = array(); } if (!$pdf && !$admin && $this->favorites) { $favs = array(); $ret = DB::Execute('SELECT ' . $this->tab . '_id FROM ' . $this->tab . '_favorite WHERE user_id=%d', array(Acl::get_user())); while ($row = $ret->FetchRow()) { $favs[$row[$this->tab . '_id']] = true; } } self::$access_override['tab'] = $this->tab; if (isset($limit)) { $i = $limit['offset']; } $grid_enabled = $this->grid === null ? Base_User_SettingsCommon::get(Utils_RecordBrowser::module_name(), 'grid') : $this->grid; if ($grid_enabled) { load_js('modules/Utils/RecordBrowser/grid.js'); } $this->view_fields_permission = $this->get_access('add', $this->custom_defaults); if (!$pdf && !$special && $this->add_in_table && $this->view_fields_permission) { $form = $this->init_module(Libs_QuickForm::module_name(), null, 'add_in_table__' . $this->tab); $form_name = $form->get_name(); } else { $form_name = ''; } foreach ($records as $row) { if ($this->browse_mode != 'recent' && isset($limit)) { self::$browsed_records['records'][$row['id']] = $i; $i++; } $row = Utils_RecordBrowserCommon::record_processing($this->tab, $row, 'browse'); self::$access_override['id'] = $row['id']; $gb_row = $gb->get_new_row(); $row_data = array(); if (!$pdf && !$admin && $this->favorites) { $isfav = isset($favs[$row['id']]); $row_data[] = Utils_RecordBrowserCommon::get_fav_button($this->tab, $row['id'], $isfav); } if (!$pdf && !$admin && $this->watchdog) { $row_data[] = Utils_WatchdogCommon::get_change_subscription_icon($this->tab, $row['id']); } if ($special) { $element = $this->get_module_variable('element'); $format = $this->get_module_variable('format_func'); $formated_name = is_callable($format) ? strip_tags(call_user_func($format, $row, true)) : Utils_RecordBrowserCommon::create_default_linked_label($this->tab, $row['id'], true); $row_data = array('<input type="checkbox" id="leightbox_rpicker_' . $element . '_' . $row['id'] . '" formated_name="' . $formated_name . '" />'); $rpicker_ind[] = $row['id']; } $r_access = $this->get_access('view', $row); foreach ($query_cols as $k => $argsid) { if (!$r_access || !$r_access[$argsid]) { $row_data[] = ''; continue; } $field = $hash[$argsid]; $args = $this->table_rows[$field]; $value = $this->get_val($field, $row, $special || $pdf, $args); if (strip_tags($value) == '') { $value .= ' '; } if ($args['style'] == 'currency' || $args['style'] == 'number') { $value = array('style' => 'text-align:right;', 'value' => $value); } if ($grid_enabled && !in_array($args['type'], array('calculated', 'multiselect', 'commondata'))) { $table = '<table class="Utils_RecordBrowser__grid_table" style="width:100%" cellpadding="0" cellspacing="0" border="0"><tr><td id="grid_form_field_' . $argsid . '_' . $row['id'] . '" style="display:none;">Loading...</td><td id="grid_value_field_' . $argsid . '_' . $row['id'] . '">'; $ed_icon = '</td><td style="min-width:18px;width:18px;padding:0px;margin:0px;">' . '<span id="grid_edit_' . $argsid . '_' . $row['id'] . '" style="float:right;display:none;"><a href="javascript:void(0);" onclick="grid_enable_field_edit(\'' . $argsid . '\',' . $row['id'] . ',\'' . $this->tab . '\',\'' . $form_name . '\');"><img border="0" src="' . Base_ThemeCommon::get_template_file(Utils_GenericBrowser::module_name(), 'edit.png') . '"></a></span>' . '<span id="grid_save_' . $argsid . '_' . $row['id'] . '" style="float:right;display:none;"><a href="javascript:void(0);" onclick="grid_submit_field(\'' . $argsid . '\',' . $row['id'] . ',\'' . $this->tab . '\');"><img border="0" src="' . Base_ThemeCommon::get_template_file(Utils_RecordBrowser::module_name(), 'save_grid.png') . '"></a></span>' . '</td></tr></table>'; /* $table = '<span id="grid_form_field_'.$argsid.'_'.$row['id'].'" style="display:none;">Loading...</span><span id="grid_value_field_'.$argsid.'_'.$row['id'].'">'; $ed_icon = '</span>'. '<span id="grid_edit_'.$argsid.'_'.$row['id'].'" style="float:right;display:none;"><a href="javascript:void(0);" onclick="grid_enable_field_edit(\''.$argsid.'\','.$row['id'].',\''.$this->tab.'\',\''.$form_name.'\');"><img border="0" src="'.Base_ThemeCommon::get_template_file(Utils_GenericBrowser::getName(), 'edit.png').'"></a></span>'. '<span id="grid_save_'.$argsid.'_'.$row['id'].'" style="float:right;display:none;"><a href="javascript:void(0);" onclick="grid_submit_field(\''.$argsid.'\','.$row['id'].',\''.$this->tab.'\');"><img border="0" src="'.Base_ThemeCommon::get_template_file(Utils_RecordBrowser::getName(), 'save_grid.png').'"></a></span>';*/ $attrs = 'onmouseover="if(typeof(mouse_over_grid)!=\'undefined\')mouse_over_grid(\'' . $argsid . '\',\'' . $row['id'] . '\');" onmouseout="if(typeof(mouse_out_grid)!=\'undefined\')mouse_out_grid(\'' . $argsid . '\',\'' . $row['id'] . '\');"'; // $attrs = 'onmouseover="$(\'grid_edit_'.$argsid.'_'.$row['id'].'\').style.display=\'inline\'" onmouseout="$(\'grid_edit_'.$argsid.'_'.$row['id'].'\').style.display=\'none\'"'; } else { $table = ''; $ed_icon = ''; $attrs = ''; } if (is_array($value)) { $value['value'] = $table . $value['value'] . $ed_icon; $value['attrs'] = $attrs; } else { $value = array('value' => $table . $value . $ed_icon, 'attrs' => $attrs); } if ($pdf) { $value['overflow_box'] = false; $value['attrs'] = $attrs . ' style="border:1px solid black;"'; $value['value'] = ' ' . $value['value'] . ' '; } $row_data[] = $value; } $gb_row->add_data_array($row_data); if (!$pdf && $this->disabled['actions'] !== true) { if ($this->disabled['actions'] === false) { $da = array(); } else { $da = array_flip($this->disabled['actions']); } if (!$special) { if (!isset($da['view'])) { $gb_row->add_action($this->create_callback_href(array($this, 'navigate'), array('view_entry', 'view', $row['id'])), __('View'), null, 'view'); } if (!isset($da['edit'])) { if ($this->get_access('edit', $row)) { $gb_row->add_action($this->create_callback_href(array($this, 'navigate'), array('view_entry', 'edit', $row['id'])), __('Edit'), null, 'edit'); } else { $gb_row->add_action('', __('Edit'), __('You don\'t have permission to edit this record.'), 'edit', 0, true); } } if ($admin) { if (!$row[':active']) { $gb_row->add_action($this->create_callback_href(array($this, 'set_active'), array($row['id'], true)), __('Activate'), null, 'active-off'); } else { $gb_row->add_action($this->create_callback_href(array($this, 'set_active'), array($row['id'], false)), __('Deactivate'), null, 'active-on'); } $info = Utils_RecordBrowserCommon::get_record_info($this->tab, $row['id']); if ($info['edited_on'] === null) { $gb_row->add_action('', __('This record was never edited'), null, 'history_inactive'); } else { $gb_row->add_action($this->create_callback_href(array($this, 'navigate'), array('view_edit_history', $row['id'])), __('View edit history'), null, 'history'); } } else { if (!isset($da['delete'])) { if ($this->get_access('delete', $row)) { $gb_row->add_action($this->create_confirm_callback_href(__('Are you sure you want to delete this record?'), array($this, 'delete_record'), array($row['id'], false)), __('Delete'), null, 'delete'); } else { $gb_row->add_action('', __('Delete'), __('You don\'t have permission to delete this record'), 'delete', 0, true); } } } } if (!isset($da['info'])) { $gb_row->add_info(($this->browse_mode == 'recent' ? '<b>' . __('Visited on: %s', array($row['visited_on'])) . '</b><br>' : '') . Utils_RecordBrowserCommon::get_html_record_info($this->tab, isset($info) ? $info : $row['id'])); } $this->call_additional_actions_methods($row, $gb_row); } } if (!$special && $this->add_in_table && $this->view_fields_permission) { $visible_cols = array(); foreach ($this->table_rows as $field => $args) { if (!$args['visible'] && (!isset($cols[$args['id']]) || $cols[$args['id']] === false)) { continue; } if (isset($cols[$args['id']]) && $cols[$args['id']] === false) { continue; } $visible_cols[$args['id']] = true; } self::$last_record = $this->record = $this->custom_defaults = Utils_RecordBrowserCommon::record_processing($this->tab, $this->custom_defaults, 'adding'); $this->prepare_view_entry_details($this->custom_defaults, 'add', null, $form, $visible_cols); $form->setDefaults($this->custom_defaults); if ($form->isSubmitted()) { $this->set_module_variable('force_add_in_table_after_submit', true); if ($form->validate()) { $values = $form->exportValues(); foreach ($this->custom_defaults as $k => $v) { if (!isset($values[$k])) { $values[$k] = $v; } } $id = Utils_RecordBrowserCommon::new_record($this->tab, $values); location(array()); } else { $this->show_add_in_table = true; } } $form->addElement('submit', 'submit_qanr', __('Save'), array('style' => 'width:100%;height:19px;', 'class' => 'button')); $renderer = new HTML_QuickForm_Renderer_TCMSArraySmarty(); $form->accept($renderer); $data = $renderer->toArray(); $gb->set_prefix($data['javascript'] . '<form ' . $data['attributes'] . '>' . $data['hidden'] . "\n"); $gb->set_postfix("</form>\n"); if (!$admin && $this->favorites) { $row_data = array(' '); } else { $row_data = array(); } if (!$admin && $this->watchdog) { $row_data[] = ' '; } $first = true; foreach ($visible_cols as $k => $v) { if (isset($data[$k])) { $row_data[] = array('value' => $data[$k]['error'] . $data[$k]['html'], 'overflow_box' => false); if ($first) { eval_js('focus_on_field = "' . $k . '";'); } $first = false; } else { $row_data[] = ' '; } } // if ($this->browse_mode == 'recent') // $row_data[] = ' '; $gb_row = $gb->get_new_row(); $gb_row->add_action('', $data['submit_qanr']['html'], '', null, 0, false, 7); $gb_row->set_attrs('id="add_in_table_row" style="display:' . ($this->show_add_in_table ? '' : 'none') . ';"'); $gb_row->add_data_array($row_data); } if ($special) { $this->set_module_variable('rpicker_ind', $rpicker_ind); $ret = $this->get_html_of_module($gb); Base_User_SettingsCommon::save(Utils_RecordBrowser_RecordPicker::module_name(), 'per_page', $gb->get_module_variable('per_page')); Base_User_SettingsCommon::save(Utils_GenericBrowser::module_name(), 'per_page', $gb_per_page); return $ret; } if ($pdf) { $gb->absolute_width(true); $args = array(Base_ThemeCommon::get_template_filename('Utils_GenericBrowser', 'pdf')); } else { $args = array(); } $this->display_module($gb, $args); }
public function send($file) { if ($this->is_back()) { return $this->go_back($file); } $qf = $this->init_module(Libs_QuickForm::module_name(), null, 'send_fax'); list($providers, $providers_arr) = self::get_providers($file); if (empty($providers)) { $this->go_back($file); Epesi::alert(__('No fax providers installed or configured for this type of file.')); return; } $qf->addElement('header', null, __('Faxing file: %s', array(basename($file)))); $qf->addElement('select', 'provider', __('Provider'), $providers); $qf->addElement('header', null, __('Contact')); $fav_contact = CRM_ContactsCommon::get_contacts(array(':Fav' => true, '!fax' => '')); $fav_contact2 = array(); foreach ($fav_contact as $v) { $fav_contact2[$v['id']] = CRM_ContactsCommon::contact_format_default($v, true); } $rb_contact = $this->init_module(Utils_RecordBrowser_RecordPicker::module_name()); $this->display_module($rb_contact, array('contact', 'dest_contact', array('CRM_FaxCommon', 'rpicker_contact_format'), array('!fax' => ''), array('fax' => true))); $qf->addElement('multiselect', 'dest_contact', '', $fav_contact2); $qf->addElement('static', null, $rb_contact->create_open_link('Add contact')); $qf->addElement('header', null, __('Company')); $fav_company = CRM_ContactsCommon::get_companies(array(':Fav' => true, '!fax' => ''), array('id', 'company_name')); $fav_company2 = array(); foreach ($fav_company as $v) { $fav_company2[$v['id']] = $v['company_name']; } $rb_company = $this->init_module(Utils_RecordBrowser_RecordPicker::module_name()); $this->display_module($rb_company, array('company', 'dest_company', array('CRM_FaxCommon', 'rpicker_company_format'), array('!fax' => ''), array('fax' => true))); $qf->addElement('multiselect', 'dest_company', '', $fav_company2); $qf->addElement('static', null, $rb_company->create_open_link('Add company')); $qf->addElement('header', null, __('Other')); $qf->addElement('text', 'dest_other', __('Other fax numbers (comma separated)')); $qf->addFormRule(array($this, 'check_numbers')); if ($qf->validate()) { $data = $qf->exportValues(); if (!isset($providers_arr[$data['provider']]['send_func'])) { Epesi::alert(__('Invalid fax provider.')); } else { $fax_func = array($data['provider'] . 'Common', $providers_arr[$data['provider']]['send_func']); $numbers = array(); $contacts = Utils_RecordBrowserCommon::get_records('contact', array('id' => $data['dest_contact']), array('fax')); foreach ($contacts as $row) { $numbers[] = $row['fax']; } $companies = Utils_RecordBrowserCommon::get_records('company', array('id' => $data['dest_company']), array('fax')); foreach ($companies as $row) { $numbers[] = $row['fax']; } $numbers += explode(',', $data['dest_other']); $ret = call_user_func($fax_func, $file, $numbers); if ($ret) { return $this->go_back($file); } } } $qf->display(); Base_ActionBarCommon::add('send', __('Send'), $qf->get_submit_form_href()); Base_ActionBarCommon::add('back', __('Back'), $this->create_back_href()); }