function showTab() { @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer', 0)); $tpl = DevblocksPlatform::getTemplateService(); $tpl->cache_lifetime = "0"; $tpl_path = dirname(dirname(__FILE__)) . '/templates/'; // $tpl->assign('response_uri', 'config/attachments'); $defaults = new C4_AbstractViewModel(); $defaults->class_name = 'C4_AttachmentView'; $defaults->name = 'Attachements View'; $defaults->id = 'ticket_view_attachements'; $defaults->renderLimit = 15; $view_attachements = C4_AbstractViewLoader::getView('ticket_view_attachements', $defaults); $view_attachements->params = array(SearchFields_Attachment::TICKET_ID => new DevblocksSearchCriteria(SearchFields_Attachment::TICKET_ID, DevblocksSearchCriteria::OPER_EQ, $ticket_id)); $view_attachements->renderPage = 0; C4_AbstractViewLoader::setView($view_attachements->id, $view_attachements); $tpl->assign('view_attachements', $view_attachements); $tpl->display('file:' . $tpl_path . 'attachments/index.tpl'); }
function showTab() { $tpl = DevblocksPlatform::getTemplateService(); $tpl->cache_lifetime = "0"; $tpl_path = dirname(dirname(__FILE__)) . '/templates/'; $tpl->assign('path', $tpl_path); if (null == ($view = C4_AbstractViewLoader::getView('', self::VIEW_ACTIVITY_RSS))) { $view = new C4_RssExpItemView(); $view->id = self::VIEW_ACTIVITY_RSS; $view->renderSortBy = SearchFields_RssExpItem::CREATED_DATE; $view->renderSortAsc = 0; $view->name = "RSS"; C4_AbstractViewLoader::setView($view->id, $view); } $tpl->assign('response_uri', 'activity/rss'); $tpl->assign('view', $view); $tpl->assign('view_fields', C4_RssExpItemView::getFields()); $tpl->assign('view_searchable_fields', C4_RssExpItemView::getSearchFields()); $tpl->display($tpl_path . 'activity_tab/index.tpl'); }
function showTab() { @($org = DevblocksPlatform::importGPC($_REQUEST['org_id'])); $tpl = DevblocksPlatform::getTemplateService(); $tpl_path = dirname(dirname(__FILE__)) . '/templates/'; $tpl->assign('path', $tpl_path); $contact = DAO_ContactOrg::get($org); $tpl->assign('contact', $contact); $defaults = new C4_AbstractViewModel(); $defaults->class_name = 'View_ContactOrg'; $defaults->id = View_ContactOrg::DEFAULT_ID; $view = C4_AbstractViewLoader::getView(View_ContactOrg::DEFAULT_ID, $defaults); $view->params = array(new DevblocksSearchCriteria(SearchFields_ContactOrg::PARENT_ORG_ID, '=', $contact->id)); $tpl->assign('view', $view); $tpl->assign('contacts_page', 'orgs'); $tpl->assign('response_uri', 'contacts/orgs'); $tpl->assign('view_fields', View_ContactOrg::getFields()); $tpl->assign('view_searchable_fields', View_ContactOrg::getSearchFields()); $tpl->display('file:' . $tpl_path . 'childorgs.tpl'); exit; }
function showTab() { $translate = DevblocksPlatform::getTranslationService(); $tpl = DevblocksPlatform::getTemplateService(); $defaults = new C4_AbstractViewModel(); $defaults->class_name = 'View_Issue'; $defaults->id = self::VIEW_ACTIVITY_ISSUES; $defaults->name = $translate->_('issues.activity.tab'); $defaults->view_columns = array( SearchFields_Issue::CREATED_DATE, SearchFields_Issue::UPDATED_DATE ); $defaults->renderSortBy = SearchFields_Issue::CREATED_DATE; $defaults->renderSortAsc = 0; $view = C4_AbstractViewLoader::getView(self::VIEW_ACTIVITY_ISSUES, $defaults); $tpl->assign('view', $view); $tpl->display('devblocks:wgm.issues::activity_tab/index.tpl'); }
function showTab() { @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer', 0)); $tpl_path = dirname(dirname(__FILE__)) . '/templates/'; $tpl = DevblocksPlatform::getTemplateService(); //$visit = CerberusApplication::getVisit(); //$visit->set(Extension_ConfigTab::POINT, 'attachments'); $message_ids = array_keys(DAO_Message::getMessagesByTicket($ticket_id)); $comment_ids = array_keys(DAO_Comment::getByContext(CerberusContexts::CONTEXT_TICKET, $ticket_id)); $attachment_links = array_merge(DAO_AttachmentLink::getByContextIds(CerberusContexts::CONTEXT_MESSAGE, $message_ids), DAO_AttachmentLink::getByContextIds(CerberusContexts::CONTEXT_COMMENT, $comment_ids)); $defaults = new C4_AbstractViewModel(); $defaults->class_name = 'View_AttachmentLink'; $defaults->name = 'Attachements'; $defaults->id = '_ticket_view_attachements'; $defaults->renderLimit = 15; $view = C4_AbstractViewLoader::getView($defaults->id, $defaults); $view->renderPage = 0; $view->addParams(array(SearchFields_AttachmentLink::GUID => new DevblocksSearchCriteria(SearchFields_AttachmentLink::GUID, 'in', array_keys($attachment_links))), true); C4_AbstractViewLoader::setView($view->id, $view); $tpl->assign('view', $view); $tpl->display('file:' . $tpl_path . 'attachments/index.tpl'); }
function doOrgQuickSearchAction() { @($type = DevblocksPlatform::importGPC($_POST['type'], 'string')); @($query = DevblocksPlatform::importGPC($_POST['query'], 'string')); $query = trim($query); $defaults = new C4_AbstractViewModel(); $defaults->class_name = 'C4_ContactOrgView'; $defaults->id = C4_ContactOrgView::DEFAULT_ID; $view = C4_AbstractViewLoader::getView(C4_ContactOrgView::DEFAULT_ID, $defaults); $params = array(); if ($query && false === strpos($query, '*')) { $query = '*' . $query . '*'; } switch ($type) { case "name": $params[SearchFields_ContactOrg::NAME] = new DevblocksSearchCriteria(SearchFields_ContactOrg::NAME, DevblocksSearchCriteria::OPER_LIKE, strtolower($query)); break; case "phone": $params[SearchFields_ContactOrg::PHONE] = new DevblocksSearchCriteria(SearchFields_ContactOrg::PHONE, DevblocksSearchCriteria::OPER_LIKE, strtolower($query)); break; } $view->params = $params; $view->renderPage = 0; $view->renderSortBy = null; C4_AbstractViewLoader::setView(C4_ContactOrgView::DEFAULT_ID, $view); DevblocksPlatform::redirect(new DevblocksHttpResponse(array('contacts', 'orgs'))); }
private static function _init() { $visit = CerberusApplication::getVisit(); self::$views = $visit->get(self::VISIT_ABSTRACTVIEWS, array()); }
function doWatcherBulkPanelAction() { // Checked rows @($ids_str = DevblocksPlatform::importGPC($_REQUEST['ids'], 'string')); $ids = DevblocksPlatform::parseCsvString($ids_str); // Filter: whole list or check @($filter = DevblocksPlatform::importGPC($_REQUEST['filter'], 'string', '')); // View @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string')); $view = C4_AbstractViewLoader::getView($view_id); // Watcher fields @($status = trim(DevblocksPlatform::importGPC($_POST['do_status'], 'string', ''))); $do = array(); // Do: ... if (0 != strlen($status)) { $do['status'] = intval($status); } // Do: Custom fields //$do = DAO_CustomFieldValue::handleBulkPost($do); $view->doBulkUpdate($filter, $do, $ids); $view->render(); return; }
function showTasksAction() { $translate = DevblocksPlatform::getTranslationService(); @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer')); $tpl = DevblocksPlatform::getTemplateService(); $tpl->assign('path', $this->_TPL_PATH); $ticket = DAO_Ticket::getTicket($ticket_id); $tpl->assign('ticket', $ticket); $view = C4_AbstractViewLoader::getView('C4_TaskView', 'ticket_tasks'); $view->id = 'ticket_tasks'; $view->name = $translate->_('tasks.ticket.tab.view'); $view->view_columns = array(SearchFields_Task::SOURCE_EXTENSION, SearchFields_Task::DUE_DATE, SearchFields_Task::WORKER_ID); $view->params = array(SearchFields_Task::SOURCE_EXTENSION => new DevblocksSearchCriteria(SearchFields_Task::SOURCE_EXTENSION, '=', 'cerberusweb.tasks.ticket'), SearchFields_Task::SOURCE_ID => new DevblocksSearchCriteria(SearchFields_Task::SOURCE_ID, '=', $ticket_id)); $tpl->assign('view', $view); C4_AbstractViewLoader::setView($view->id, $view); $tpl->display('file:' . $this->_TPL_PATH . 'display/modules/tasks/index.tpl'); }
function exportTmxAction() { $defaults = new C4_AbstractViewModel(); $defaults->class_name = 'C4_TranslationView'; $defaults->id = C4_TranslationView::DEFAULT_ID; $view = C4_AbstractViewLoader::getView(C4_TranslationView::DEFAULT_ID, $defaults); // Extract every result from the view list($results, $null) = DAO_Translation::search($view->params, -1, 0, SearchFields_Translation::STRING_ID, true, false); // Build TMX outline $xml = simplexml_load_string('<?xml version="1.0" encoding="' . LANG_CHARSET_CODE . '"?>' . '<!DOCTYPE tmx SYSTEM "tmx14.dtd">' . '<tmx version="1.4">' . '<body></body>' . '</tmx>'); /* @var $xml SimpleXMLElement */ $namespaces = $xml->getNamespaces(true); $codes = array(); // Loop translated strings if (is_array($results)) { foreach ($results as $result) { $string_id = $result[SearchFields_Translation::STRING_ID]; $lang_code = $result[SearchFields_Translation::LANG_CODE]; $string_default = $result[SearchFields_Translation::STRING_DEFAULT]; $string_override = $result[SearchFields_Translation::STRING_OVERRIDE]; $codes[$lang_code] = 1; $string = !empty($string_override) ? $string_override : $string_default; // [TODO] Nest multiple <tuv> in a single <tu> parent $eTu =& $xml->body->addChild('tu'); /* @var $eTu SimpleXMLElement */ $eTu->addAttribute('tuid', $string_id); $eTuv =& $eTu->addChild('tuv'); /* @var $eTuv SimpleXMLElement */ $eTuv->addAttribute('xml:lang', $lang_code, 'http://www.w3.org/XML/1998/namespace'); $eSeg =& $eTuv->addChild('seg', htmlspecialchars($string)); /* @var $eSeg SimpleXMLElement */ } } $imp = new DOMImplementation(); // $dtd = $imp->createDocumentType('tmx', '', 'tmx14.dtd'); // $doc = $imp->createDocument("", "", $dtd); $doc = $imp->createDocument("", ""); $doc->encoding = LANG_CHARSET_CODE; $doc->formatOutput = true; $simplexml = dom_import_simplexml($xml); /* @var $dom DOMElement */ $simplexml = $doc->importNode($simplexml, true); $simplexml = $doc->appendChild($simplexml); $filename = "cerb4_lang_" . implode('_', array_keys($codes)) . ".xml"; header("Content-type: text/xml"); header("Content-Disposition: attachment; filename=\"{$filename}\""); echo $doc->saveXML(); }
function doArticlesBulkUpdateAction() { // Checked rows @($ids_str = DevblocksPlatform::importGPC($_REQUEST['ids'], 'string')); $ids = DevblocksPlatform::parseCsvString($ids_str); // Filter: whole list or check @($filter = DevblocksPlatform::importGPC($_REQUEST['filter'], 'string', '')); // View @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string')); $view = C4_AbstractViewLoader::getView($view_id); $do = array(); // Categories @($category_ids = DevblocksPlatform::importGPC($_REQUEST['category_ids'], 'array', array())); if (is_array($category_ids)) { $do['category_delta'] = array(); foreach ($category_ids as $cat_id) { @($cat_mode = DevblocksPlatform::importGPC($_REQUEST['category_ids_' . $cat_id], 'string', '')); if (!empty($cat_mode)) { $do['category_delta'][] = $cat_mode . $cat_id; } } } // Feedback fields // @$list_id = trim(DevblocksPlatform::importGPC($_POST['list_id'],'integer',0)); // Do: List // if(0 != strlen($list_id)) // $do['list_id'] = $list_id; // Do: Custom fields // $do = DAO_CustomFieldValue::handleBulkPost($do); $view->doBulkUpdate($filter, $do, $ids); $view->render(); return; }
function showTab() { $tpl = DevblocksPlatform::getTemplateService(); $tpl_path = dirname(__FILE__) . '/templates/'; $tpl->assign('path', $tpl_path); // View $tpl->assign('response_uri', 'config/communities'); $defaults = new C4_AbstractViewModel(); $defaults->id = 'portals_cfg'; $defaults->class_name = 'C4_CommunityPortalView'; $view = C4_AbstractViewLoader::getView($defaults->id, $defaults); $tpl->assign('view', $view); $tpl->assign('view_fields', C4_CommunityPortalView::getFields()); $tpl->assign('view_searchable_fields', C4_CommunityPortalView::getSearchFields()); $tpl->display('file:' . $tpl_path . 'community/config/tab/index.tpl'); }
function runMacroAction() { @($macro_id = DevblocksPlatform::importGPC($_REQUEST['macro_id'], 'integer')); @($ids = DevblocksPlatform::importGPC($_REQUEST['ids'])); @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string')); $view = C4_AbstractViewLoader::getView($view_id); $ids = explode(',', $ids); if (null !== ($macro = DAO_Macro::get($macro_id))) { switch ($macro->source_extension_id) { case 'cerberusweb.macros.ticket': $fields = array(); // loop over the actions, saving the $params as $fields foreach ($macro->actions as $action => $params) { switch ($action) { case 'cerberusweb.macros.action.assign': $fields['next_worker_id'] = $params['worker_id']; break; case 'cerberusweb.macros.action.move': $fields['team_id'] = $params['group_id']; $fields['category_id'] = $params['bucket_id']; break; case 'cerberusweb.macros.action.status': $fields['is_waiting'] = $params['is_waiting']; $fields['is_closed'] = $params['is_closed']; $fields['is_deleted'] = $params['is_deleted']; break; default: // $fields[] = $params; break; } } // update the ticket DAO_Ticket::updateTicket($ids, $fields); break; case 'cerberusweb.macros.address': foreach ($macro->actions as $action => $params) { switch ($action) { default: DAO_Address::update($ids, $params); } } break; case 'cerberusweb.macros.opportunity': foreach ($macro->actions as $action => $params) { switch ($action) { default: DAO_CrmOpportunity::update($ids, $params); } } case 'cerberusweb.macros.task': foreach ($macro->actions as $action => $params) { switch ($action) { default: DAO_Task::update($ids, $params); } } case 'cerberusweb.macros.organization': foreach ($macro->actions as $action => $params) { switch ($action) { default: DAO_ContactOrg::update($ids, $params); } } default: break; } } $view = C4_AbstractViewLoader::getView($view_id); $view->render(); }
function viewAssignThreadsAction() { @($row_ids = DevblocksPlatform::importGPC($_POST['row_id'], 'array', array())); @($worker_id = DevblocksPlatform::importGPC($_REQUEST['assign_worker_id'], 'integer', 0)); @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string', '')); $fields = array(DAO_ForumsThread::WORKER_ID => $worker_id); DAO_ForumsThread::update($row_ids, $fields); if (!empty($view_id) && null != ($view = C4_AbstractViewLoader::getView('', $view_id))) { $view->render(); } }
function showTab() { $tpl = DevblocksPlatform::getTemplateService(); $tpl->cache_lifetime = "0"; $tpl_path = dirname(dirname(__FILE__)) . '/templates/'; $tpl->assign('path', $tpl_path); if (null == ($view = C4_AbstractViewLoader::getView('', self::VIEW_ACTIVITY_TIMETRACKING))) { $view = new C4_TimeTrackingEntryView(); $view->id = self::VIEW_ACTIVITY_TIMETRACKING; $view->renderSortBy = SearchFields_TimeTrackingEntry::LOG_DATE; $view->renderSortAsc = 0; C4_AbstractViewLoader::setView($view->id, $view); } $tpl->assign('response_uri', 'activity/timetracking'); $tpl->assign('view', $view); $tpl->assign('view_fields', C4_TimeTrackingEntryView::getFields()); $tpl->assign('view_searchable_fields', C4_TimeTrackingEntryView::getSearchFields()); $tpl->display($tpl_path . 'activity_tab/index.tpl'); }
function doArticleQuickSearchAction() { @($type = DevblocksPlatform::importGPC($_POST['type'], 'string')); @($query = DevblocksPlatform::importGPC($_POST['query'], 'string')); $query = trim($query); $visit = CerberusApplication::getVisit(); /* @var $visit CerberusVisit */ $translate = DevblocksPlatform::getTranslationService(); if (null == ($searchView = C4_AbstractViewLoader::getView('', ChKbResearchTab::VIEW_RESEARCH_KB_SEARCH))) { $searchView = new C4_KbArticleView(); $searchView->id = ChKbResearchTab::VIEW_RESEARCH_KB_SEARCH; $searchView->name = $translate->_('common.search_results'); C4_AbstractViewLoader::setView($searchView->id, $searchView); } $params = array(); switch ($type) { case "content": $params[SearchFields_KbArticle::CONTENT] = new DevblocksSearchCriteria(SearchFields_KbArticle::CONTENT, DevblocksSearchCriteria::OPER_FULLTEXT, $query); break; } $searchView->params = $params; $searchView->renderPage = 0; $searchView->renderSortBy = null; C4_AbstractViewLoader::setView($searchView->id, $searchView); DevblocksPlatform::redirect(new DevblocksHttpResponse(array('research', 'kb', 'search'))); }
function doTaskBulkUpdateAction() { // Checked rows @($ids_str = DevblocksPlatform::importGPC($_REQUEST['ids'], 'string')); $ids = DevblocksPlatform::parseCsvString($ids_str); // Filter: whole list or check @($filter = DevblocksPlatform::importGPC($_REQUEST['filter'], 'string', '')); // View @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string')); $view = C4_AbstractViewLoader::getView('', $view_id); // Task fields $due = trim(DevblocksPlatform::importGPC($_POST['due'], 'string', '')); $status = trim(DevblocksPlatform::importGPC($_POST['status'], 'string', '')); $worker_id = trim(DevblocksPlatform::importGPC($_POST['worker_id'], 'string', '')); $do = array(); // Do: Due if (0 != strlen($due)) { $do['due'] = $due; } // Do: Status if (0 != strlen($status)) { $do['status'] = $status; } // Do: Worker if (0 != strlen($worker_id)) { $do['worker_id'] = $worker_id; } // Do: Custom fields $do = DAO_CustomFieldValue::handleBulkPost($do); $view->doBulkUpdate($filter, $do, $ids); $view->render(); return; }
function saveGroupPanelAction() { @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string', '')); @($group_id = DevblocksPlatform::importGPC($_REQUEST['group_id'], 'integer', 0)); @($name = DevblocksPlatform::importGPC($_REQUEST['name'], 'string', '')); $fields = array(DAO_Group::TEAM_NAME => $name); // [TODO] Delete if (empty($group_id)) { // new $group_id = DAO_Group::create($fields); } else { // update DAO_Group::update($group_id, $fields); } // Reload view (if linked) if (!empty($view_id) && null != ($view = C4_AbstractViewLoader::getView($view_id))) { $view->render(); } exit; }
function doBulkUpdateAction() { // Checked rows @($ids_str = DevblocksPlatform::importGPC($_REQUEST['ids'], 'string')); $ids = DevblocksPlatform::parseCsvString($ids_str); // Filter: whole list or check @($filter = DevblocksPlatform::importGPC($_REQUEST['filter'], 'string', '')); // View @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string')); $view = C4_AbstractViewLoader::getView($view_id); // Feedback fields // @$list_id = trim(DevblocksPlatform::importGPC($_POST['list_id'],'integer',0)); $do = array(); // Do: List // if(0 != strlen($list_id)) // $do['list_id'] = $list_id; // Do: Custom fields $do = DAO_CustomFieldValue::handleBulkPost($do); $view->doBulkUpdate($filter, $do, $ids); $view->render(); return; }
function showTab() { @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer', 0)); $tpl = DevblocksPlatform::getTemplateService(); $tpl_path = dirname(dirname(__FILE__)) . '/templates/'; $tpl->assign('path', $tpl_path); $tpl->cache_lifetime = "0"; $ticket = DAO_Ticket::getTicket($ticket_id); $tpl->assign('ticket_id', $ticket_id); $address = DAO_Address::get($ticket->first_wrote_address_id); $tpl->assign('address', $address); if (null == ($view = C4_AbstractViewLoader::getView('', 'ticket_opps'))) { $view = new C4_CrmOpportunityView(); $view->id = 'ticket_opps'; } if (!empty($address->contact_org_id)) { // org @($org = DAO_ContactOrg::get($address->contact_org_id)); $view->name = "Org: " . $org->name; $view->params = array(SearchFields_CrmOpportunity::ORG_ID => new DevblocksSearchCriteria(SearchFields_CrmOpportunity::ORG_ID, '=', $org->id)); } else { // address $view->name = "Requester: " . $address->email; $view->params = array(SearchFields_CrmOpportunity::PRIMARY_EMAIL_ID => new DevblocksSearchCriteria(SearchFields_CrmOpportunity::PRIMARY_EMAIL_ID, '=', $ticket->first_wrote_address_id)); } C4_AbstractViewLoader::setView($view->id, $view); $tpl->assign('view', $view); $tpl->display('file:' . $tpl_path . 'crm/opps/ticket/tab.tpl'); }
function render() { $tpl = DevblocksPlatform::getTemplateService(); $active_worker = CerberusApplication::getActiveWorker(); $memberships = $active_worker->getMemberships(); $response = DevblocksPlatform::getHttpResponse(); @($section = $response->path[1]); //print_r($_REQUEST);exit(); //@$page = DevblocksPlatform::importGPC($_GET['password']); @($page = DevblocksPlatform::importGPC($_REQUEST['page'], 'integer')); if ($page == NULL) { $page = 0; } if (isset($_POST['a2'])) { @($section = $_POST['a2']); } else { @($section = $response->path[2]); } //print_r($section); //echo $section; switch ($section) { case 'search': $title = 'Search'; $query = $_POST['query']; if ($query && false === strpos($query, '*')) { $query = '*' . $query . '*'; } if (!is_null($query)) { $params = array(); $type = $_POST['type']; switch ($type) { case "mask": $params[SearchFields_Ticket::TICKET_MASK] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MASK, DevblocksSearchCriteria::OPER_LIKE, strtoupper($query)); break; case "sender": $params[SearchFields_Ticket::TICKET_FIRST_WROTE] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_FIRST_WROTE, DevblocksSearchCriteria::OPER_LIKE, strtolower($query)); break; case "subject": $params[SearchFields_Ticket::TICKET_SUBJECT] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SUBJECT, DevblocksSearchCriteria::OPER_LIKE, $query); break; case "content": $params[SearchFields_Ticket::TICKET_MESSAGE_CONTENT] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_MESSAGE_CONTENT, DevblocksSearchCriteria::OPER_LIKE, $query); break; } } else { //show the search form because no search has been submitted $tpl->display('file:' . dirname(__FILE__) . '/templates/tickets/search.tpl'); return; } break; case 'sidebar': $groups = DAO_Group::getAll(); $tpl->assign('groups', $groups); $group_buckets = DAO_Bucket::getTeams(); $tpl->assign('group_buckets', $group_buckets); $workers = DAO_Worker::getAll(); $tpl->assign('workers', $workers); $group_counts = DAO_Overview::getGroupTotals(); $tpl->assign('group_counts', $group_counts); $waiting_counts = DAO_Overview::getWaitingTotals(); $tpl->assign('waiting_counts', $waiting_counts); $worker_counts = DAO_Overview::getWorkerTotals(); $tpl->assign('worker_counts', $worker_counts); $tpl->display('file:' . dirname(__FILE__) . '/templates/tickets/sidebar.tpl'); return; break; case 'overview': default: $workers = DAO_Worker::getAll(); $group_buckets = DAO_Bucket::getTeams(); $groups = DAO_Group::getAll(); @($filter = $response->path[3]); switch ($filter) { case 'group': @($filter_group_id = $response->path[4]); $params = array(SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', CerberusTicketStatus::OPEN), SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_WAITING, '=', 0), SearchFields_Ticket::TICKET_NEXT_WORKER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_NEXT_WORKER_ID, '=', 0)); if (!is_null($filter_group_id) && isset($groups[$filter_group_id])) { $tpl->assign('filter_group_id', $filter_group_id); $title = $groups[$filter_group_id]->name; $params[SearchFields_Ticket::TICKET_TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, '=', $filter_group_id); @($filter_bucket_id = $response->path[5]); if (!is_null($filter_bucket_id)) { $tpl->assign('filter_bucket_id', $filter_bucket_id); @($title .= ': ' . ($filter_bucket_id == 0 ? 'Inbox' : $group_buckets[$filter_group_id][$filter_bucket_id]->name)); $params[SearchFields_Ticket::TICKET_CATEGORY_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CATEGORY_ID, '=', $filter_bucket_id); } else { @($title .= ' (Spam Filtered)'); $params[SearchFields_Ticket::TICKET_SPAM_SCORE] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SPAM_SCORE, '<=', '0.9000'); } } break; case 'waiting': @($filter_waiting_id = $response->path[4]); $params = array(SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', CerberusTicketStatus::OPEN), SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_WAITING, '=', 1)); if (!is_null($filter_waiting_id) && isset($groups[$filter_waiting_id])) { $tpl->assign('filter_waiting_id', $filter_waiting_id); $title = '[Waiting] ' . $groups[$filter_waiting_id]->name; $params[SearchFields_Ticket::TICKET_TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, '=', $filter_waiting_id); @($filter_bucket_id = $response->path[5]); if (!is_null($filter_bucket_id)) { $tpl->assign('filter_bucket_id', $filter_bucket_id); @($title .= ': ' . ($filter_bucket_id == 0 ? 'Inbox' : $group_buckets[$filter_waiting_id][$filter_bucket_id]->name)); $params[SearchFields_Ticket::TICKET_CATEGORY_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CATEGORY_ID, '=', $filter_bucket_id); } } break; case 'worker': @($filter_worker_id = $response->path[4]); $params = array(SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', CerberusTicketStatus::OPEN), SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_WAITING, '=', 0), $params[SearchFields_Ticket::TICKET_TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, 'in', array_keys($memberships))); if (!is_null($filter_worker_id)) { $tpl->assign('filter_bucket_id', $filter_bucket_id); $title = "For " . $workers[$filter_worker_id]->getName(); $params[SearchFields_Ticket::TICKET_NEXT_WORKER_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_NEXT_WORKER_ID, '=', $filter_worker_id); @($filter_group_id = $response->path[5]); if (!is_null($filter_group_id) && isset($groups[$filter_group_id])) { $title .= ' in ' . $groups[$filter_group_id]->name; $params[SearchFields_Ticket::TICKET_TEAM_ID] = new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, '=', $filter_group_id); } } break; case 'all': default: $title = 'All (Spam Filtered)'; $params = array(SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED, '=', CerberusTicketStatus::OPEN), SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_WAITING, '=', 0), SearchFields_Ticket::TICKET_NEXT_WORKER_ID => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_NEXT_WORKER_ID, '=', 0), SearchFields_Ticket::TICKET_SPAM_SCORE => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SPAM_SCORE, '<=', '0.9000'), SearchFields_Ticket::TICKET_TEAM_ID => new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID, 'in', array_keys($memberships))); break; } // $params = array( // new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_CLOSED,'=',CerberusTicketStatus::OPEN), // new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_NEXT_WORKER_ID,'=',0), // new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_SPAM_SCORE,'<=','0.9000'), // new DevblocksSearchCriteria(SearchFields_Ticket::TICKET_TEAM_ID,'in',array_keys($memberships)) // ); // $title = "Overview"; break; } $mobileView = C4_AbstractViewLoader::getView('', "VIEW_MOBILE"); //print_r($mobileView); if ($mobileView == NULL) { $mobileView = new C4_MobileTicketView(); //C4_TicketView(); } $mobileView->id = "VIEW_MOBILE"; $mobileView->name = $title; $mobileView->view_columns = array(SearchFields_Ticket::TICKET_LAST_ACTION_CODE); $mobileView->params = $params; $mobileView->renderLimit = 10; //$overViewDefaults->renderLimit; $mobileView->renderPage = $page; $mobileView->renderSortBy = SearchFields_Ticket::TICKET_UPDATED_DATE; $mobileView->renderSortAsc = 0; C4_AbstractViewLoader::setView($mobileView->id, $mobileView); $views[] = $mobileView; $tpl->assign('views', $views); if ($filter == null) { $filter = 'all'; } $tpl->assign('filter', $filter); $fid = $response->path[4]; if ($fid == null) { $fid = '0'; } $tpl->assign('fid', $fid); $bucket_id = $response->path[5]; if ($bucket_id == null) { $buket_id = 0; } $tpl->assign('bid', $bucket_id); $tpl->assign('title', $title); $tpl->assign('tickets', $tickets[0]); $tpl->assign('next_page', $page + 1); $tpl->assign('prev_page', $page - 1); //print_r($tickets);exit(); $tpl->display('file:' . dirname(__FILE__) . '/templates/tickets.tpl'); }
function showTab() { $tpl = DevblocksPlatform::getTemplateService(); $tpl->cache_lifetime = "0"; $tpl_path = dirname(dirname(__FILE__)) . '/templates/'; $tpl->assign('path', $tpl_path); $defaults = new C4_AbstractViewModel(); $defaults->class_name = 'C4_CallEntryView'; $defaults->id = self::VIEW_ACTIVITY_CALLS; $defaults->renderSortBy = SearchFields_CallEntry::UPDATED_DATE; $defaults->renderSortAsc = 0; $view = C4_AbstractViewLoader::getView(self::VIEW_ACTIVITY_CALLS, $defaults); $view->name = "Calls"; C4_AbstractViewLoader::setView($view->id, $view); $tpl->assign('response_uri', 'activity/calls'); $tpl->assign('view', $view); $tpl->assign('view_fields', C4_CallEntryView::getFields()); $tpl->assign('view_searchable_fields', C4_CallEntryView::getSearchFields()); $tpl->display($tpl_path . 'activity_tab/index.tpl'); }
function searchviewAction() { $visit = CerberusApplication::getVisit(); $response = DevblocksPlatform::getHttpRequest(); $path = $response->path; array_shift($path); // tickets array_shift($path); // searchview $id = array_shift($path); $view = C4_AbstractViewLoader::getView($id); if (!empty($view->params)) { $params = array(); // Index by field name for search system if (is_array($view->params)) { foreach ($view->params as $key => $criteria) { /* @var $criteria DevblocksSearchCriteria */ $params[$key] = $criteria; } } } if (null == ($search_view = C4_AbstractViewLoader::getView(CerberusApplication::VIEW_SEARCH))) { $search_view = C4_TicketView::createSearchView(); } $search_view->params = $params; $search_view->renderPage = 0; C4_AbstractViewLoader::setView($search_view->id, $search_view); DevblocksPlatform::setHttpResponse(new DevblocksHttpResponse(array('tickets', 'search'))); }
function getView($context=null, $context_id=null, $options=array()) { $view_id = str_replace('.','_',$this->id); $defaults = new C4_AbstractViewModel(); $defaults->id = $view_id; $defaults->class_name = $this->getViewClass(); $view = C4_AbstractViewLoader::getView($view_id, $defaults); //$view->name = 'Calls'; $params_req = array(); if(!empty($context) && !empty($context_id)) { $params_req = array( new DevblocksSearchCriteria(SearchFields_Issue::CONTEXT_LINK,'=',$context), new DevblocksSearchCriteria(SearchFields_Issue::CONTEXT_LINK_ID,'=',$context_id), ); } $view->addParamsRequired($params_req, true); $view->renderTemplate = 'context'; C4_AbstractViewLoader::setView($view_id, $view); return $view; }
function viewSaveCustomizeAction() { $translate = DevblocksPlatform::getTranslationService(); @($id = DevblocksPlatform::importGPC($_REQUEST['id'])); @($columns = DevblocksPlatform::importGPC($_REQUEST['columns'], 'array', array())); @($num_rows = DevblocksPlatform::importGPC($_REQUEST['num_rows'], 'integer', 10)); $num_rows = max($num_rows, 1); // make 1 the minimum $view = C4_AbstractViewLoader::getView($id); $view->doCustomize($columns, $num_rows); $active_worker = CerberusApplication::getActiveWorker(); // Conditional Persist if (substr($id, 0, 5) == "cust_") { // custom workspace $list_view_id = intval(substr($id, 5)); // Special custom view fields @($title = DevblocksPlatform::importGPC($_REQUEST['title'], 'string', $translate->_('views.new_list'))); $view->name = $title; // Persist Object $list_view = new Model_WorkerWorkspaceListView(); $list_view->title = $title; $list_view->columns = $view->view_columns; $list_view->num_rows = $view->renderLimit; $list_view->params = $view->params; $list_view->sort_by = $view->renderSortBy; $list_view->sort_asc = $view->renderSortAsc; DAO_WorkerWorkspaceList::update($list_view_id, array(DAO_WorkerWorkspaceList::LIST_VIEW => serialize($list_view))); } else { $prefs = new C4_AbstractViewModel(); $prefs->class_name = get_class($view); $prefs->view_columns = $view->view_columns; $prefs->renderLimit = $view->renderLimit; $prefs->renderSortBy = $view->renderSortBy; $prefs->renderSortAsc = $view->renderSortAsc; DAO_WorkerPref::set($active_worker->id, 'view' . $view->id, serialize($prefs)); } C4_AbstractViewLoader::setView($id, $view); $view->render(); }
function viewAssignThreadsAction() { @($row_ids = DevblocksPlatform::importGPC($_POST['row_id'], 'array', array())); @($worker_id = DevblocksPlatform::importGPC($_REQUEST['assign_worker_id'], 'integer', 0)); @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string', '')); $active_worker = CerberusApplication::getActiveWorker(); if (is_array($row_ids) && !empty($row_ids)) { // Do assignments $fields = array(DAO_ForumsThread::WORKER_ID => $worker_id); DAO_ForumsThread::update($row_ids, $fields); // Only send notifications if not assigning to self (or unassigning) if (!empty($worker_id) && $active_worker->id != $worker_id) { $url_writer = DevblocksPlatform::getUrlService(); // Load threads for notifications $forum_threads = DAO_ForumsThread::getWhere(sprintf("%s IN (%s)", DAO_ForumsThread::ID, implode(',', $row_ids))); // Send notifications about assigned forum threads if (is_array($forum_threads) && !empty($forum_threads)) { foreach ($forum_threads as $forum_thread) { /* @var $forum_thread Model_ForumsThread */ $fields = array(DAO_WorkerEvent::CREATED_DATE => time(), DAO_WorkerEvent::WORKER_ID => $worker_id, DAO_WorkerEvent::URL => $url_writer->write('c=forums&a=explorer', true) . '?start=' . $forum_thread->id, DAO_WorkerEvent::TITLE => 'New Forum Assignment', DAO_WorkerEvent::CONTENT => sprintf("%s assigned: %s", $active_worker->getName(), $forum_thread->title), DAO_WorkerEvent::IS_READ => 0); DAO_WorkerEvent::create($fields); } } } } if (!empty($view_id) && null != ($view = C4_AbstractViewLoader::getView($view_id))) { $view->render(); } }
function doEditWorkspaceAction() { @($workspace = DevblocksPlatform::importGPC($_POST['workspace'], 'string', '')); @($rename_workspace = DevblocksPlatform::importGPC($_POST['rename_workspace'], 'string', '')); @($ids = DevblocksPlatform::importGPC($_POST['ids'], 'array', array())); @($names = DevblocksPlatform::importGPC($_POST['names'], 'array', array())); @($pos = DevblocksPlatform::importGPC($_POST['pos'], 'array', array())); @($deletes = DevblocksPlatform::importGPC($_POST['deletes'], 'array', array())); $db = DevblocksPlatform::getDatabaseService(); $active_worker = CerberusApplication::getActiveWorker(); $visit = CerberusApplication::getVisit(); $worklists = DAO_WorkerWorkspaceList::getWhere(sprintf("%s = %s", DAO_WorkerWorkspaceList::WORKSPACE, $db->qstr($workspace))); // Reorder worklists, rename lists, delete lists, on workspace if (is_array($ids) && !empty($ids)) { foreach ($ids as $idx => $id) { if (false !== array_search($id, $deletes)) { DAO_WorkerWorkspaceList::delete($id); C4_AbstractViewLoader::deleteView('cust_' . $id); // free up a little memory } else { if (!isset($worklists[$id])) { continue; } $list_view = $worklists[$id]->list_view; /* @var $list_view Model_WorkerWorkspaceListView */ // If the name changed if (isset($names[$idx]) && 0 != strcmp($list_view->title, $names[$idx])) { $list_view->title = $names[$idx]; // Save the view in the session $view = C4_AbstractViewLoader::getView('', 'cust_' . $id); $view->name = $list_view->title; C4_AbstractViewLoader::setView('cust_' . $id, $view); } DAO_WorkerWorkspaceList::update($id, array(DAO_WorkerWorkspaceList::LIST_POS => @intval($pos[$idx]), DAO_WorkerWorkspaceList::LIST_VIEW => serialize($list_view))); } } } // Rename workspace if (!empty($rename_workspace)) { $fields = array(DAO_WorkerWorkspaceList::WORKSPACE => $rename_workspace); DAO_WorkerWorkspaceList::updateWhere($fields, sprintf("%s = %s AND %s = %d", DAO_WorkerWorkspaceList::WORKSPACE, $db->qstr($workspace), DAO_WorkerWorkspaceList::WORKER_ID, $active_worker->id)); $workspace = $rename_workspace; } // Change active tab $visit->set(CerberusVisit::KEY_HOME_SELECTED_TAB, 'w_' . $workspace); DevblocksPlatform::redirect(new DevblocksHttpResponse(array('home'))); }
function showTab() { @($ticket_id = DevblocksPlatform::importGPC($_REQUEST['ticket_id'], 'integer', 0)); $visit = CerberusApplication::getVisit(); /* @var $visit CerberusVisit */ $translate = DevblocksPlatform::getTranslationService(); $tpl = DevblocksPlatform::getTemplateService(); $tpl->assign('path', $this->tpl_path); $tpl->cache_lifetime = "0"; $view = C4_AbstractViewLoader::getView('', 'audit_log'); if (null == $view) { $view = new C4_TicketAuditLogView(); $view->id = 'audit_log'; $view->name = $translate->_('auditlog.audit_log'); $view->view_columns = array(SearchFields_TicketAuditLog::CHANGE_DATE, SearchFields_TicketAuditLog::WORKER_ID, SearchFields_TicketAuditLog::CHANGE_FIELD, SearchFields_TicketAuditLog::CHANGE_VALUE); $view->params = array(); $view->renderLimit = 15; $view->renderPage = 0; $view->renderSortBy = SearchFields_TicketAuditLog::CHANGE_DATE; $view->renderSortAsc = false; } $view->params = array(SearchFields_TicketAuditLog::TICKET_ID => new DevblocksSearchCriteria(SearchFields_TicketAuditLog::TICKET_ID, DevblocksSearchCriteria::OPER_EQ, $ticket_id)); $view->renderPage = 0; C4_AbstractViewLoader::setView($view->id, $view); $tpl->assign('view', $view); $tpl->display('file:' . $this->tpl_path . '/display/log/index.tpl'); }
function doWorkersBulkUpdateAction() { // Checked rows @($ids_str = DevblocksPlatform::importGPC($_REQUEST['ids'], 'string')); $ids = DevblocksPlatform::parseCsvString($ids_str); // Filter: whole list or check @($filter = DevblocksPlatform::importGPC($_REQUEST['filter'], 'string', '')); // View @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string')); $view = C4_AbstractViewLoader::getView($view_id); // Worker fields @($is_disabled = trim(DevblocksPlatform::importGPC($_POST['is_disabled'], 'string', ''))); $do = array(); // Do: Disabled if (0 != strlen($is_disabled)) { $do['is_disabled'] = $is_disabled; } // Do: Custom fields $do = DAO_CustomFieldValue::handleBulkPost($do); $view->doBulkUpdate($filter, $do, $ids); $view->render(); return; }
function render() { $tpl = DevblocksPlatform::getTemplateService(); $translate = DevblocksPlatform::getTranslationService(); $response = DevblocksPlatform::getHttpResponse(); $path = $response->path; array_shift($path); // iphone array_shift($path); // tickets $action = array_shift($path); // current action switch ($action) { case 'display': $feedback_id = array_shift($path); $feedbackEntry = DAO_FeedbackEntry::get($feedback_id); if (!empty($feedbackEntry->quote_address_id)) { if (null != ($address = DAO_Address::get($feedbackEntry->quote_address_id))) { $tpl->assign('address', $address); } } $tpl->assign('feedbackEntry', $feedbackEntry); $tpl->display('file:' . $this->_TPL_PATH . 'feedback/display.tpl'); break; default: $defaults = new C4_AbstractViewModel(); $defaults->class_name = 'View_FeedbackEntry_iPhone'; $defaults->id = self::VIEW_FEEDBACK; $defaults->name = $translate->_('feedback.activity.tab'); $defaults->view_columns = array(SearchFields_FeedbackEntry::LOG_DATE, SearchFields_FeedbackEntry::ADDRESS_EMAIL, SearchFields_FeedbackEntry::SOURCE_URL, SearchFields_FeedbackEntry::QUOTE_MOOD); $defaults->renderSortBy = SearchFields_FeedbackEntry::LOG_DATE; $defaults->renderSortAsc = 0; $view = C4_AbstractViewLoader::getView(self::VIEW_FEEDBACK, $defaults); $tpl->assign('view', $view); $tpl->display('file:' . $this->_TPL_PATH . 'feedback/home.tpl'); break; } }