/** * Prepare HTML field templates for each dataTable column. * * @param string column name * @param object of item * @return string HTML template for propper field */ public function getDataTableFieldTemplate($column, $item) { switch ($column) { case 'id': $template = '<input type="checkbox" class="export" name="ids[]" value="' . $item->id . '" />'; break; case 'name': $template = '<a href="' . RouteHelper::_('index.php?view=deals&layout=deal&id=' . $item->id) . '">' . $item->name . '</a>'; break; case 'company_name': $template = '<a href="' . RouteHelper::_('index.php?view=companies&layout=company&id=' . $item->company_id) . '">' . $item->company_name . '</a>'; break; case 'amount': $template = ConfigHelper::getCurrency() . $item->amount; break; case 'status_name': if (!isset($item->status_id) || !$item->status_id) { $item->status_name = TextHelper::_('COBALT_CLICK_TO_EDIT'); } $statuses = DealHelper::getStatuses(null, true); $template = '<div class="dropdown">'; $template .= ' <a href="#" class="dropdown-toggle update-toggle-html" role="button" data-toggle="dropdown" id="deal_status_' . $item->id . '_link">'; $template .= ' <span class="deal-status-' . $item->status_name . '">' . $item->status_name . '</span>'; $template .= ' </a>'; $template .= ' <ul class="dropdown-menu" aria-labelledby="deal_status_' . $item->id . '" role="menu">'; if (isset($statuses) && count($statuses)) { foreach ($statuses as $id => $name) { $template .= ' <li>'; $template .= ' <a href="#" class="status_select dropdown_item" data-field="status_id" data-item="deal" data-item-id="' . $item->id . '" data-value="' . $id . '">'; $template .= ' <span class="deal-status-' . OutputFilter::stringURLUnicodeSlug($name) . '">' . $name . '</span>'; $template .= ' </a>'; $template .= ' </li>'; } } $template .= ' </ul>'; $template .= ' </div>'; break; case 'stage_name': if (!isset($item->stage_id) || !$item->stage_id) { $item->stage_name = TextHelper::_('COBALT_CLICK_TO_EDIT'); } $stages = DealHelper::getStages(null, true); $template = '<div class="dropdown">'; $template .= ' <a href="#" class="dropdown-toggle update-toggle-html" role="button" data-toggle="dropdown" id="deal_stage_' . $item->id . '_link">'; $template .= ' <span class="deal-stage-' . $item->stage_name . '">' . $item->stage_name . '</span>'; $template .= ' </a>'; $template .= ' <ul class="dropdown-menu" aria-labelledby="deal_stage_' . $item->id . '" role="menu">'; if (isset($stages) && count($stages)) { foreach ($stages as $id => $name) { $template .= ' <li>'; $template .= ' <a href="#" class="stage_select dropdown_item" data-field="stage_id" data-item="deal" data-item-id="' . $item->id . '" data-value="' . $id . '">'; $template .= ' <span class="deal-stage-' . OutputFilter::stringURLUnicodeSlug($name) . '">' . $name . '</span>'; $template .= ' </a>'; $template .= ' </li>'; } } $template .= ' </ul>'; $template .= ' </div>'; break; case 'source_name': if (!isset($item->source_id) || !$item->source_id) { $item->source_name = TextHelper::_('COBALT_CLICK_TO_EDIT'); } $sources = DealHelper::getSources(null, true); $template = '<div class="dropdown">'; $template .= ' <a href="#" class="dropdown-toggle update-toggle-html" role="button" data-toggle="dropdown" id="deal_source_' . $item->id . '_link">'; $template .= ' <span class="deal-source-' . $item->source_name . '">' . $item->source_name . '</span>'; $template .= ' </a>'; $template .= ' <ul class="dropdown-menu" aria-labelledby="deal_source_' . $item->id . '" role="menu">'; if (isset($sources) && count($sources)) { foreach ($sources as $id => $name) { $template .= ' <li>'; $template .= ' <a href="#" class="source_select dropdown_item" data-field="source_id" data-item="deal" data-item-id="' . $item->id . '" data-value="' . $id . '">'; $template .= ' <span class="deal-source-' . OutputFilter::stringURLUnicodeSlug($name) . '">' . $name . '</span>'; $template .= ' </a>'; $template .= ' </li>'; } } $template .= ' </ul>'; $template .= ' </div>'; break; case 'expected_close': if ($item->expected_close == "0000-00-00 00:00:00") { $template = TextHelper::_('COBALT_NOT_SET'); } else { $template = DateHelper::formatDate($item->expected_close); } break; case 'actual_close': if ($item->actual_close == "0000-00-00 00:00:00") { $template = TextHelper::_('COBALT_ACTIVE_DEAL'); } else { $template = DateHelper::formatDate($item->actual_close); } break; case 'action': $template = '<div class="btn-group">'; // @TODO: make these 2 buttons work // $template .= ' <a rel="tooltip" title="'.TextHelper::_('COBALT_VIEW_CONTACTS').'" data-placement="bottom" class="btn" href="javascript:void(0);" onclick="Cobalt.showDealContactsDialogModal('.$item->id.');"><i class="glyphicon glyphicon-user"></i></a>'; // $template .= ' <a rel="tooltip" title="'.TextHelper::_('COBALT_VIEW_NOTES').'" data-placement="bottom" class="btn" href="javascript:void(0);" onclick="openNoteModal(\'.deal->id.\',\'deal\');"><i class="glyphicon glyphicon-file"></i></a>'; $template .= ' <a data-toggle="popover" title="' . TextHelper::_('COBALT_VIEW_DETAILS') . '" data-placement="top" data-html="true" data-content-class="extras-' . $item->id . '" class="btn btn-xs btn-default" href="#" tabindex="0"><i class="glyphicon glyphicon-info-sign"></i></a>'; $template .= '</div>'; $template .= '<div class="extras-' . $item->id . ' hide">'; $template .= ' <b>' . TextHelper::_('COBALT_PRIMARY_CONTACT') . '</b>'; $template .= ' <a href="' . RouteHelper::_('index.php?view=people&layout=person&id=' . $item->primary_contact_id) . '">' . $item->primary_contact_first_name . '</a><br>'; $template .= ' <b>' . TextHelper::_('COBALT_NEXT_ACTION') . '</b><br>'; $template .= '</div>'; break; default: if (isset($column) && isset($item->{$column})) { $template = $item->{$column}; } else { $template = ''; } break; } return $template; }
/** * Read a CSV File * @param [String] $file * @return [Mixed] $data */ public function readCSVFile($file, $table = null) { $app = \Cobalt\Container::fetch('app'); ini_set("auto_detect_line_endings", "1"); $data = array(); $line = 1; $headers = array(); $i = -2; $db = JFactory::getDBO(); $table = $db->getTableColumns("#__" . $app->input->get('import_type', $table)); $special_headers = array('company_id', 'company_name', 'stage_name', 'source_name', 'status_name', 'primary_contact_name', 'assignee_name', 'type'); if (($handle = fopen($file, "r")) !== false) { while (($read = fgetcsv($handle, 1000, ",")) !== false) { $i++; $num = count($read); if ($line == 1) { $headers = $read; $data['headers'] = $headers; } else { $line_data = array(); for ($c = 0; $c < $num; $c++) { $header_name = array_key_exists($c, $headers) ? $headers[$c] : false; if ($header_name) { if (in_array($header_name, $special_headers)) { $read[$c] = utf8_encode($read[$c]); switch ($header_name) { case "company_id": $model = new Company(); $new_header = "company_id"; $company_name = $model->getCompanyName($read[$c]); $name = "name=\"import_id[" . $i . "][" . $new_header . "]\""; if ($company_name != "") { $name = $company_name; } else { $name = ""; } $special_data = array('label' => $read[$c], 'value' => $name); break; case "company_name": $model = new Company(); $new_header = "company_id"; $company_id = $model->getCompanyList($read[$c]); $name = "name=\"import_id[" . $i . "][" . $new_header . "]\""; if (count($company_id) > 0) { $name = $company_id[0]['name']; } else { $name = $read[$c]; } $special_data = array('label' => $read[$c], 'value' => utf8_encode($name)); break; case "stage_name": $new_header = "stage_id"; $stage_id = DealHelper::getStages($read[$c]); $name = "name=\"import_id[" . $i . "][" . $new_header . "]\""; if (count($stage_id)) { $keys = array_keys($stage_id); $stage_id = $keys[0]; } $special_data = array('dropdown' => DropdownHelper::generateDropdown('stage', $stage_id, $name)); break; case "source_name": $new_header = "source_id"; $source_id = DealHelper::getSources($read[$c]); $name = "name=\"import_id[" . $i . "][" . $new_header . "]\""; if (count($source_id)) { $keys = array_keys($source_id); $source_id = $keys[0]; } $special_data = array('dropdown' => DropdownHelper::generateDropdown('source', $source_id, $name)); break; case "status_name": $new_header = "status_id"; $status_id = DealHelper::getStatuses($read[$c]); $name = "name=\"import_id[" . $i . "][" . $new_header . "]\""; if (count($status_id)) { $keys = array_keys($status_id); $status_id = $keys[0]; } $special_data = array('dropdown' => DropdownHelper::generateDropdown('deal_status', $status_id, $name)); break; case "primary_contact_name": $new_header = "primary_contact_id"; $model = new People(); $contact = $model->searchForContact($read[$c]); if ($contact) { $special_data = array('label' => $contact[0]->label, 'value' => $contact[0]->value); } else { $special_data = array(); } break; case "assignee_name": $new_header = "assignee_id"; $model = new People(); $contact = $model->searchForContact($read[$c]); break; case "type": $new_header = "type"; $special_data = array('dropdown' => ucwords(DropdownHelper::getContactTypes($read[$c]))); break; } $line_data[$new_header] = $special_data; } else { if (array_key_exists($header_name, $table)) { $line_data[$header_name] = utf8_encode($read[$c]); } } } } if (count($line_data) > 0) { $data[] = $line_data; } } $line++; } fclose($handle); } return $data; }
public function _display_source_report() { //get deals for reports $dealModel = new DealModel(); $dealModel->set('archived', 0); $dealModel->set('limit', 0); $reports = $dealModel->getDeals(); //get model state $state = $dealModel->getState(); //info for dropdowns $deal_amounts = DealHelper::getAmounts(); $deal_sources = DealHelper::getSources(); $deal_stages = DealHelper::getStages(); $deal_statuses = DealHelper::getStatuses(); $deal_close_dates = DealHelper::getClosing(); $modified_dates = DealHelper::getModified(); //list view $source_report_header = ViewHelper::getView('reports', 'source_report_header', 'phtml', array('state' => $state, 'reports' => $reports)); $source_report_list = ViewHelper::getView('reports', 'source_report_filter', 'phtml', array('reports' => $reports)); $source_report_footer = ViewHelper::getView('reports', 'source_report_footer', 'phtml'); $source_report_header->deal_amounts = $deal_amounts; $source_report_header->deal_stages = $deal_stages; $source_report_header->deal_statuses = $deal_statuses; $source_report_header->deal_close_dates = $deal_close_dates; $source_report_header->modified_dates = $modified_dates; $source_report_header->created_dates = DateHelper::getCreatedDates(); $source_report_header->team_names = DropdownHelper::getTeamNames(); $source_report_header->user_names = DropdownHelper::getUserNames(); $source_report_header->state = $state; //assign refs to view $this->source_report_header = $source_report_header; $this->source_report_list = $source_report_list; $this->source_report_footer = $source_report_footer; $this->state = $state; $this->reports = $reports; }
public function render() { $app = \Cobalt\Container::fetch('app'); //retrieve deal list from model $model = new DealModel(); $state = $model->getState(); $dealList = array(); $deal = array(); $doc = JFactory::getDocument(); //session info $session = JFactory::getSession(); $member_role = UsersHelper::getRole(); $user_id = UsersHelper::getUserId(); $team_id = UsersHelper::getTeamId(); //determine if we are requesting a specific deal or all deals //if id requested if ($app->input->get('id')) { $model->set('_id', $app->input->get('id')); $dealList = $model->getDeals(); if (is_null($dealList[0]->id)) { $app->redirect(RouteHelper::_('index.php?view=deals'), TextHelper::_('COBALT_NOT_AUTHORIZED')); } //display remove and assign primary contact to deal $app->input->set('loc', 'deal'); } else { //else load all deals if ($app->input->get('layout') != 'edit') { if (TemplateHelper::isMobile()) { $model->set('ordering', 'd.name ASC'); } $dealList = $model->getDeals(); } } //determine if we are editing an existing deal entry if (count($dealList) == 1) { //grab deal object $deal = $dealList[0]; $deal->header = ucwords(TextHelper::_('COBALT_DEAL_EDIT')); } else { //else we are creating a new entry $deal = new \stdClass(); $deal->name = ""; $deal->summary = ""; $deal->company_id = $app->input->get('company_id') ? $app->input->get('company_id') : null; $deal->person_id = $app->input->get('person_id') ? $app->input->get('person_id') : null; //get company name to prefill data and hidden fields if ($deal->company_id) { $company = CompanyHelper::getCompany($deal->company_id); $deal->company_name = $company[0]['name']; $deal->company_id = $company[0]['id']; } //if a person is specified prefill data if ($deal->person_id) { $person = PeopleHelper::getPerson($deal->person_id); $deal->person_name = $person[0]['last_name'] . ', ' . $person[0]['first_name']; $deal->person_id = $person[0]['id']; //assign company if person is associated with company if ($person[0]['company_id']) { $deal->company_id = $person[0]['company_id']; $deal->company_name = $person[0]['company_name']; } } //assign rest of null data $deal->amount = ""; $deal->stage_id = 0; $deal->source_id = 0; $deal->probability = 0; $deal->status_id = 0; $deal->expected_close = ""; $deal->header = ucwords(TextHelper::_('COBALT_DEAL_HEADER')); } //load javalibs if (!TemplateHelper::isMobile()) { $doc->addScript(JURI::base() . 'src/Cobalt/media/js/deal_manager.js'); } //dropdown info //get deal type filters $deal_types = DealHelper::getDealTypes(); $deal_type_name = $session->get('deal_type_filter'); $deal_type_name = array_key_exists($deal_type_name, $deal_types) ? $deal_types[$deal_type_name] : $deal_types['']; //get column filters $column_filters = DealHelper::getColumnFilters(); $selected_columns = DealHelper::getSelectedColumnFilters(); //get member access info $teams = UsersHelper::getTeams(); $users = UsersHelper::getUsers(); $stages = DealHelper::getStages(); //get deal stage filters $stage_name = $session->get('deal_stage_filter'); $stage_name = $stage_name ? $stages[$stage_name] : $stages['all']; //get session data to prefill filters $user_filter = $session->get('deal_user_filter'); $team_filter = $session->get('deal_team_filter'); if ($user_filter == "all" && $user_filter != $user_id) { $user_name = TextHelper::_('COBALT_ALL_USERS'); } elseif ($user_filter == "all") { $user_name = TextHelper::_('COBALT_ME'); } elseif ($user_filter and $user_filter != $user_id and $user_filter != 'all') { $user_info = UsersHelper::getUsers($user_filter); $user_info = $user_info[0]; $user_name = $user_info['first_name'] . " " . $user_info['last_name']; } elseif ($team_filter) { $team_info = UsersHelper::getTeams($team_filter); $team = $team_info[0]; $user_name = $team['team_name'] . TextHelper::_('COBALT_TEAM_APPEND'); } else { $user_name = TextHelper::_('COBALT_ME'); } //get closing time filters $closing_names = DealHelper::getClosing(); $closing_name = $session->get('deal_close_filter'); $closing_name = $closing_name ? $closing_names[$closing_name] : $closing_names['all']; //get total deals associated with user $total_deals = UsersHelper::getDealCount($user_id, $team_id, $member_role); //Load Events & Tasks for person $layout = $this->getLayout(); if ($layout == "deal") { $model = new EventModel(); $events = $model->getEvents("deal", null, $app->input->get('id')); $this->event_dock = ViewHelper::getView('events', 'event_dock', 'phtml', array('events' => $events)); $primary_contact_id = DealHelper::getPrimaryContact($dealList[0]->id); $this->contact_info = ViewHelper::getView('contacts', 'default', 'phtml', array('contacts' => $dealList[0]->people, 'primary_contact_id' => $primary_contact_id)); $this->document_list = ViewHelper::getView('documents', 'list', 'phtml', array('documents' => $deal->documents, 'total' => $total, 'pagination' => $pagination)); //$this->document_list = ViewHelper::getView('documents','document_row','phtml',array('documents'=>$deal->documents)); $this->custom_fields_view = ViewHelper::getView('custom', 'default', 'phtml', array('type' => 'deal', 'item' => $dealList[0])); } if ($layout == "default") { $this->dataTableColumns = $model->getDataTableColumns(); $pagination = $model->getPagination(); $total = $model->getTotal(); $this->deal_list = ViewHelper::getView('deals', 'list', 'phtml', array('dealList' => $dealList, 'total' => $total, 'pagination' => $pagination)); $this->state = $state; $doc->addScriptDeclaration("\n loc = 'deals';\n order_url = 'index.php?view=deals&layout=list&format=raw&tmpl=component';\n order_dir = '" . $state->get('Deal.filter_order_Dir') . "';\n order_col = '" . $state->get('Deal.filter_order') . "';\n var dataTableColumns = " . json_encode($this->dataTableColumns) . ";"); $deal_name = $state->get('Deal.deals_name'); $this->deal_filter = $deal_name; } if (TemplateHelper::isMobile()) { $this->add_note = ViewHelper::getView('note', 'edit', 'phtml'); $this->add_task = ViewHelper::getView('events', 'edit_task', 'phtml', array('association_type' => 'deal', 'assocation_id' => $app->input->get('id'))); } if ($layout == "edit") { $item = $app->input->get('id') && array_key_exists(0, $dealList) ? $dealList[0] : array('id' => ''); $this->edit_custom_fields_view = ViewHelper::getView('custom', 'edit', 'phtml', array('type' => 'deal', 'item' => $item)); $json = TRUE; $companyModel = new CompanyModel(); $companyNames = $companyModel->getCompanyNames($json); $doc->addScriptDeclaration("var company_names=" . $companyNames . ";"); $peopleModel = new PeopleModel(); $peopleNames = $peopleModel->getPeopleNames($json); $doc->addScriptDeclaration("var people_names=" . $peopleNames . ";"); } $closed_stages = DealHelper::getClosedStages(); //assign results to view $this->closed_stages = $closed_stages; $this->dealList = $dealList; $this->totalDeals = $total_deals; $this->deal = $deal; $this->deal_types = $deal_types; $this->deal_type_name = $deal_type_name; $this->user_id = $user_id; $this->member_role = $member_role; $this->teams = $teams; $this->users = $users; $this->stages = $stages; $this->stage_name = $stage_name; $this->user_name = $user_name; $this->closing_names = $closing_names; $this->closing_name = $closing_name; $this->state = $state; $this->column_filters = $column_filters; $this->selected_columns = $selected_columns; //display return parent::render(); }
public function render($tpl = null) { $app = JFactory::getApplication(); $id = $app->input->get('id', null); $company_id = $app->input->get('company_id'); $person_id = $app->input->get('person_id'); //get deals $model = new DealModel(); if ($company_id) { $model->set('company_id', $company_id); } elseif ($person_id) { $model->set('person_id', $person_id); } elseif ($id) { $model->set('_id', $id); } $layout = $this->getLayout(); $total = $model->getTotal(); $this->total = $total; $pagination = $model->getPagination(); $this->pagination = $pagination; //assign references switch ($layout) { case "entry": $this->stages = DealHelper::getStages(null, true, false); $this->statuses = DealHelper::getStatuses(null, true); $this->sources = DealHelper::getSources(null); $this->users = UsersHelper::getUsers(null, true); $this->k = 0; $this->deal = $model->getDeal(); break; case "deal": $this->deal = $model->getDeal($id); $this->dealList = $model->getDeals(); $primary_contact_id = DealHelper::getPrimaryContact($this->deal->id); $this->closed_stages = DealHelper::getClosedStages(); $model = new EventModel(); $events = $model->getEvents("deal", null, $app->input->get('id')); $this->event_dock = ViewHelper::getView('events', 'event_dock', 'phtml', array('events' => $events)); $this->document_list = ViewHelper::getView('documents', 'document_row', 'phtml', array('documents' => $this->deal->documents)); $this->custom_fields_view = ViewHelper::getView('custom', 'default', 'phtml', array('type' => 'deal', 'item' => $this->deal)); $this->contact_info = ViewHelper::getView('contacts', 'default', 'phtml', array('contacts' => $this->deal->people, 'primary_contact_id' => $primary_contact_id)); break; case "deal_dock_list": $this->deals = $model->getDeals(); break; case "add": case "edit": $this->deal = $model->getDeal($id); $this->edit_custom_fields_view = ViewHelper::getView('custom', 'edit', 'phtml', array('type' => 'deal', 'item' => $this->deal)); break; case "edit_conversation": $model = new ConversationModel(); $conversation = $model->getConversation($id); $this->conversation = $conversation[0]; break; case "conversation_entry": $model = new ConversationModel(); $conversation = $model->getConversation($id); $this->conversation = $conversation[0]; break; default: $this->dealList = $model->getDeals(); $state = $model->getState(); $this->state = $state; break; } //display view echo parent::render(); }