function showTabNotificationsAction() { $visit = UsermeetApplication::getVisit(); $translate = DevblocksPlatform::getTranslationService(); $active_worker = UsermeetApplication::getActiveWorker(); $tpl = DevblocksPlatform::getTemplateService(); $tpl->assign('path', $this->_TPL_PATH); // Select tab $visit->set(UsermeetVisit::KEY_HOME_SELECTED_TAB, 'notifications'); // My Notifications $myNotificationsView = Um_AbstractViewLoader::getView(self::VIEW_MY_NOTIFICATIONS); $title = vsprintf($translate->_('home.my_notifications.view.title'), $active_worker->getName()); if (null == $myNotificationsView) { $myNotificationsView = new Um_WorkerEventView(); $myNotificationsView->id = self::VIEW_MY_NOTIFICATIONS; $myNotificationsView->name = $title; $myNotificationsView->renderLimit = 25; $myNotificationsView->renderPage = 0; $myNotificationsView->renderSortBy = SearchFields_WorkerEvent::CREATED_DATE; $myNotificationsView->renderSortAsc = 0; } // Overload criteria $myNotificationsView->name = $title; $myNotificationsView->params = array(SearchFields_WorkerEvent::WORKER_ID => new DevblocksSearchCriteria(SearchFields_WorkerEvent::WORKER_ID, '=', $active_worker->id), SearchFields_WorkerEvent::IS_READ => new DevblocksSearchCriteria(SearchFields_WorkerEvent::IS_READ, '=', 0)); /* * [TODO] This doesn't need to save every display, but it was possible to * lose the params in the saved version of the view in the DB w/o recovery. * This should be moved back into the if(null==...) check in a later build. */ Um_AbstractViewLoader::setView($myNotificationsView->id, $myNotificationsView); $tpl->assign('view', $myNotificationsView); $tpl->display('file:' . $this->_TPL_PATH . 'home/tabs/my_notifications/index.tpl'); }
function saveAddLanguagePanelAction() { $active_worker = UsermeetApplication::getActiveWorker(); // Make sure we're an active worker if (empty($active_worker) || empty($active_worker->id)) { return; } $codes = DAO_Translation::getDefinedLangCodes(); @($add_lang_code = DevblocksPlatform::importGPC($_REQUEST['add_lang_code'], 'string', '')); @($copy_lang_code = DevblocksPlatform::importGPC($_REQUEST['copy_lang_code'], 'string', '')); @($del_lang_ids = DevblocksPlatform::importGPC($_REQUEST['del_lang_ids'], 'array', array())); if (!empty($del_lang_ids)) { if (is_array($del_lang_ids)) { foreach ($del_lang_ids as $lang_id) { DAO_Translation::deleteByLangCodes($lang_id); } } } // Don't add blanks or the same language twice. if (!empty($add_lang_code) && !isset($codes[$add_lang_code])) { // English reference strings (to know our scope) $english_strings = DAO_Translation::getMapByLang('en_US'); $copy_strings = array(); // If we have a desired source language for defaults, load it. if (!empty($copy_lang_code)) { if (0 == strcasecmp('en_US', $copy_lang_code)) { $copy_strings = $english_strings; } else { $copy_strings = DAO_Translation::getMapByLang($copy_lang_code); } } // Loop through English strings for new language if (is_array($english_strings)) { foreach ($english_strings as $string_id => $src_en) { /* @var $src_en Model_Translation */ $override = ''; // If we have a valid source, copy its override or its default (in that order) @($copy_string = $copy_strings[$string_id]); if (is_a($copy_string, 'Model_Translation')) { $override = !empty($copy_string->string_override) ? $copy_string->string_override : $copy_string->string_default; } // Insert the new string as an override. Only official translations are defaults $fields = array(DAO_Translation::STRING_ID => $string_id, DAO_Translation::LANG_CODE => $add_lang_code, DAO_Translation::STRING_DEFAULT => '', DAO_Translation::STRING_OVERRIDE => $override); DAO_Translation::create($fields); } } } // If we added a new language then change the view to display it if (!empty($add_lang_code)) { $defaults = new Um_AbstractViewModel(); $defaults->class_name = 'Um_TranslationView'; $defaults->id = Um_TranslationView::DEFAULT_ID; // Clear the existing view $view = Um_AbstractViewLoader::getView(Um_TranslationView::DEFAULT_ID, $defaults); $view->doResetCriteria(); // Set search to untranslated strings that aren't English $view->renderSortBy = SearchFields_Translation::STRING_ID; $view->renderSortAsc = true; $view->params = array(SearchFields_Translation::LANG_CODE => new DevblocksSearchCriteria(SearchFields_Translation::LANG_CODE, DevblocksSearchCriteria::OPER_EQ, $add_lang_code)); /* * If we didn't copy from another language, only show empty strings * which makes it easier to translate in the GUI. */ if (empty($copy_lang_code)) { $view->params[SearchFields_Translation::STRING_OVERRIDE] = new DevblocksSearchCriteria(SearchFields_Translation::STRING_OVERRIDE, DevblocksSearchCriteria::OPER_EQ, ''); } Um_AbstractViewLoader::setView($view->id, $view); } self::_clearCache(); DevblocksPlatform::redirect(new DevblocksHttpResponse(array('setup', 'translations'))); }
/** * This method automatically fixes any cached strange options, like * deleted custom fields. * */ protected function _sanitize() { $fields = $this->getColumns(); $custom_fields = DAO_CustomField::getAll(); $needs_save = false; // Parameter sanity check if (is_array($this->params)) { foreach ($this->params as $pidx => $null) { if (substr($pidx, 0, 3) != "cf_") { continue; } if (0 != ($cf_id = intval(substr($pidx, 3)))) { // Make sure our custom fields still exist if (!isset($custom_fields[$cf_id])) { unset($this->params[$pidx]); $needs_save = true; } } } } // View column sanity check if (is_array($this->view_columns)) { foreach ($this->view_columns as $cidx => $c) { // Custom fields if (substr($c, 0, 3) == "cf_") { if (0 != ($cf_id = intval(substr($c, 3)))) { // Make sure our custom fields still exist if (!isset($custom_fields[$cf_id])) { unset($this->view_columns[$cidx]); $needs_save = true; } } } else { // If the column no longer exists (rare but worth checking) if (!isset($fields[$c])) { unset($this->view_columns[$cidx]); $needs_save = true; } } } } // Sort by sanity check if (substr($this->renderSortBy, 0, 3) == "cf_") { if (0 != ($cf_id = intval(substr($this->renderSortBy, 3)))) { if (!isset($custom_fields[$cf_id])) { $this->renderSortBy = null; $needs_save = true; } } } if ($needs_save) { Um_AbstractViewLoader::setView($this->id, $this); } }
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 = Um_AbstractViewLoader::getView($id); $view->doCustomize($columns, $num_rows); $active_worker = UsermeetApplication::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 Um_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)); // } Um_AbstractViewLoader::setView($id, $view); $view->render(); }