예제 #1
0
파일: setup.php 프로젝트: rmiddle/feg
 function showTabRecipientAction()
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('$path', $this->_TPL_PATH);
     $worker = FegApplication::getActiveWorker();
     if (!$worker || !$worker->is_superuser) {
         echo $translate->_('common.access_denied');
         return;
     }
     $tpl->assign('response_uri', 'setup/recipient');
     // $tpl->assign('core_tplpath', $core_tplpath);
     $defaults = new Feg_AbstractViewModel();
     $defaults->name = 'Full Customer Recipient List';
     $defaults->id = 'full_view_recipient';
     $defaults->class_name = 'View_CustomerRecipient';
     $defaults->renderLimit = 15;
     $defaults->renderSortBy = SearchFields_CustomerRecipient::ID;
     $defaults->renderSortAsc = 0;
     $view = Feg_AbstractViewLoader::getView($defaults->id, $defaults);
     $view->name = 'Full Customer Recipient List';
     $view->renderPage = 0;
     Feg_AbstractViewLoader::setView($view->id, $view);
     $tpl->assign('view', $view);
     $tpl->assign('view_fields', View_CustomerRecipient::getFields());
     $tpl->assign('view_searchable_fields', View_CustomerRecipient::getSearchFields());
     $tpl->display('file:' . $this->_TPL_PATH . 'internal/tabs/customer_recipient/index.tpl');
 }
예제 #2
0
파일: stats.php 프로젝트: rmiddle/feg
 function showFailedRecipientAction()
 {
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     $defaults = new Feg_AbstractViewModel();
     $defaults->id = '_failed_recipient';
     $defaults->class_name = 'View_MessageRecipient';
     $defaults->renderLimit = 10;
     $defaults->renderSortBy = SearchFields_MessageRecipient::ID;
     $defaults->renderSortAsc = 0;
     $view = Feg_AbstractViewLoader::getView($defaults->id, $defaults);
     $view->name = 'Failed Messages Recipient List';
     $view->renderLimit = 10;
     $view->renderTemplate = 'failed';
     $view->params = array(SearchFields_MessageRecipient::SEND_STATUS => new DevblocksSearchCriteria(SearchFields_MessageRecipient::SEND_STATUS, '=', 1));
     $view->renderPage = 0;
     Feg_AbstractViewLoader::setView($view->id, $view);
     $tpl->assign('view', $view);
     $tpl->display('file:' . $this->_TPL_PATH . 'stats/view_failed_recipient.tpl');
 }
예제 #3
0
파일: Model.class.php 프로젝트: rmiddle/feg
 /**
  * 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) {
         Feg_AbstractViewLoader::setView($this->id, $this);
     }
 }
예제 #4
0
파일: internal.php 프로젝트: rmiddle/feg
 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 = Feg_AbstractViewLoader::getView($id);
     $view->doCustomize($columns, $num_rows);
     $active_worker = FegApplication::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 Feg_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));
     //		}
     Feg_AbstractViewLoader::setView($id, $view);
     $view->render();
 }
예제 #5
0
파일: App.php 프로젝트: rmiddle/feg
 function saveAddLanguagePanelAction()
 {
     $active_worker = FegApplication::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 Feg_AbstractViewModel();
         $defaults->class_name = 'Feg_TranslationView';
         $defaults->id = Feg_TranslationView::DEFAULT_ID;
         // Clear the existing view
         $view = Feg_AbstractViewLoader::getView(Feg_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, '');
         }
         Feg_AbstractViewLoader::setView($view->id, $view);
     }
     self::_clearCache();
     DevblocksPlatform::redirect(new DevblocksHttpResponse(array('setup', 'translations')));
 }
예제 #6
0
파일: customer.php 프로젝트: rmiddle/feg
 function showTab()
 {
     @($customer_id = DevblocksPlatform::importGPC($_REQUEST['customer_id'], 'integer', 0));
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->cache_lifetime = "0";
     //  FIXME setup ACL check.
     //		$worker = FegApplication::getActiveWorker();
     //		if(!$worker || !$worker->is_superuser) {
     //			echo $translate->_('common.access_denied');
     //			return;
     //		}
     $tpl->assign('customer_id', $customer_id);
     $defaults = new Feg_AbstractViewModel();
     $defaults->name = 'Message List';
     $defaults->id = '_view_customer_messages';
     $defaults->class_name = 'View_Message';
     $defaults->renderLimit = 15;
     $defaults->renderSortBy = SearchFields_Message::ID;
     $defaults->renderSortAsc = 0;
     $view = Feg_AbstractViewLoader::getView($defaults->id, $defaults);
     $view->name = 'Message List';
     $view->params = array(SearchFields_Message::ACCOUNT_ID => new DevblocksSearchCriteria(SearchFields_Message::ACCOUNT_ID, '=', $customer_id));
     $view->renderPage = 0;
     $view->view_columns = array(SearchFields_Message::ID, SearchFields_Message::IMPORT_STATUS, SearchFields_Message::CREATED_DATE, SearchFields_Message::UPDATED_DATE);
     Feg_AbstractViewLoader::setView($view->id, $view);
     $tpl->assign('view', $view);
     $tpl->display('file:' . $this->_TPL_PATH . 'customer/tabs/messages/messages.tpl');
 }
예제 #7
0
파일: App.php 프로젝트: rmiddle/feg
 function showTab()
 {
     $visit = FegApplication::getVisit();
     /* @var $visit CerberusVisit */
     $translate = DevblocksPlatform::getTranslationService();
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->tpl_path);
     @($customer_id = DevblocksPlatform::importGPC($_REQUEST['customer_id'], 'integer', 0));
     $tpl->assign('customer_id', $customer_id);
     $defaults = new Feg_AbstractViewModel();
     $defaults->class_name = 'View_MessageAuditLog';
     $defaults->id = 'customer_audit_log';
     $defaults->renderLimit = 15;
     $defaults->view_columns = array(SearchFields_MessageAuditLog::CHANGE_DATE, SearchFields_MessageAuditLog::RECIPIENT_ID, SearchFields_MessageAuditLog::MESSAGE_ID, SearchFields_MessageAuditLog::MESSAGE_RECIPIENT_ID, SearchFields_MessageAuditLog::WORKER_ID, SearchFields_MessageAuditLog::CHANGE_FIELD, SearchFields_MessageAuditLog::CHANGE_VALUE);
     $defaults->renderSortBy = SearchFields_MessageAuditLog::CHANGE_DATE;
     $defaults->renderSortAsc = false;
     $defaults->params = array();
     $defaults->renderPage = 0;
     $view = Feg_AbstractViewLoader::getView($defaults->id, $defaults);
     $view->name = 'Customer Audit Log';
     $view->renderTemplate = 'default';
     $view->params = array(SearchFields_MessageAuditLog::ACCOUNT_ID => new DevblocksSearchCriteria(SearchFields_MessageAuditLog::ACCOUNT_ID, DevblocksSearchCriteria::OPER_EQ, $customer_id));
     $view->renderPage = 0;
     Feg_AbstractViewLoader::setView($view->id, $view);
     $tpl->assign('view', $view);
     $tpl->display('file:' . $this->tpl_path . '/display/log/index.tpl');
 }
예제 #8
0
파일: preferences.php 프로젝트: rmiddle/feg
 function showTabNotificationsAction()
 {
     $visit = FegApplication::getVisit();
     $translate = DevblocksPlatform::getTranslationService();
     $active_worker = FegApplication::getActiveWorker();
     $tpl = DevblocksPlatform::getTemplateService();
     $tpl->assign('path', $this->_TPL_PATH);
     // Select tab
     $visit->set(FegVisit::KEY_PREFERENCES_SELECTED_TAB, 'notifications');
     // My Notifications
     $myNotificationsView = Feg_AbstractViewLoader::getView(self::VIEW_MY_NOTIFICATIONS);
     $title = vsprintf($translate->_('preferences.my_notifications.view.title'), $active_worker->getName());
     if (null == $myNotificationsView) {
         $myNotificationsView = new View_WorkerEvent();
         $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.
      */
     Feg_AbstractViewLoader::setView($myNotificationsView->id, $myNotificationsView);
     $tpl->assign('view', $myNotificationsView);
     $tpl->display('file:' . $this->_TPL_PATH . 'preferences/tabs/my_notifications/index.tpl');
 }