public static function resolveRowHtmlOptionsExpression($grid, $row, $data)
 {
     $mashableUtilRules = MashableUtil::createMashableInboxRulesByModel(get_class($data));
     $hasReadLatest = $mashableUtilRules->hasCurrentUserReadLatest($data->id);
     $unread = null;
     if (!$hasReadLatest) {
         $unread = 'unread';
     }
     $params = array("class" => $unread);
     return $params;
 }
 protected function getMenuItems()
 {
     if ($this->getModelClassName() === null) {
         return null;
     }
     $mashableUtilRules = MashableUtil::createMashableInboxRulesByModel($this->getModelClassName());
     if ($mashableUtilRules->shouldRenderCreateAction) {
         $label = Zurmo::t('Core', 'Create');
         $modelClassName = $this->getModelClassName();
         $moduleClassName = $modelClassName::getModuleClassName();
         $label .= ' ' . $moduleClassName::getModuleLabelByTypeAndLanguage('Singular');
         return array(array('label' => $label, 'url' => $this->getRouteForItem($this->getModelClassName())));
     }
 }
 public function render()
 {
     $mashableInboxModels = MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableInboxInterface');
     $items = array();
     foreach ($mashableInboxModels as $modelClassName => $modelLabel) {
         $mashableUtilRules = MashableUtil::createMashableInboxRulesByModel($modelClassName);
         if ($mashableUtilRules->shouldRenderCreateAction) {
             $items[] = array('label' => $modelClassName, 'url' => $this->getRouteForItem($modelClassName));
         }
     }
     $menuItems = array('label' => $this->getDefaultLabel(), 'url' => null, 'items' => $items);
     if (!empty($items)) {
         $cClipWidget = new CClipWidget();
         $cClipWidget->beginClip("ActionMenu");
         $cClipWidget->widget('application.core.widgets.MbMenu', array('htmlOptions' => array('id' => 'MashableInboxCreateDropdown'), 'items' => array($menuItems)));
         $cClipWidget->endClip();
         return $cClipWidget->getController()->clips['ActionMenu'];
     }
     return null;
 }
 protected function preFilter($filterChain)
 {
     $getData = GetUtil::getData();
     $modelClassName = ArrayUtil::getArrayValue($getData, 'modelClassName');
     if ($modelClassName == null) {
         return true;
     }
     if ($modelClassName::getCount() != 0) {
         return true;
     }
     $moduleClassName = $modelClassName::getModuleClassName();
     $mashableRules = MashableUtil::createMashableInboxRulesByModel($modelClassName);
     if ($mashableRules->getZeroModelViewClassName() == null) {
         return true;
     }
     $messageViewClassName = $mashableRules->getZeroModelViewClassName();
     $messageView = new $messageViewClassName($this->controller->getId(), $moduleClassName::getDirectoryName(), $modelClassName);
     $pageViewClassName = $this->controller->getModule()->getPluralCamelCasedName() . 'PageView';
     $view = new $pageViewClassName(ZurmoDefaultViewUtil::makeStandardViewForCurrentUser($this->controller, $messageView));
     echo $view->render();
     return false;
 }
Example #5
0
 public function testCreateMashableInboxRulesByModel()
 {
     $mashableInboxRules = MashableUtil::createMashableInboxRulesByModel('conversation');
     $this->assertEquals('ConversationMashableInboxRules', get_class($mashableInboxRules));
 }
 public function testModuleSecurityAccess()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $nobody = UserTestHelper::createBasicUser('nobody');
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('nobody');
     $content = $this->runControllerWithNoExceptionsAndGetContent('mashableInbox/default');
     foreach ($this->modelsWithMashableInboxInterface as $modelClassName) {
         $this->setGetArray(array('modelClassName' => $modelClassName));
         $moduleClassName = $modelClassName::getModuleClassName();
         if (is_subclass_of($moduleClassName, 'SecurableModule')) {
             $this->runControllerShouldResultInAccessFailureAndGetContent('mashableInbox/default/list');
         } else {
             $this->runControllerWithNoExceptionsAndGetContent('mashableInbox/default/list');
         }
         $mashableRules = MashableUtil::createMashableInboxRulesByModel($modelClassName);
     }
 }
 protected function makeANewUnreadMissionOwnedByCurrentUser()
 {
     $mission = new Mission();
     $mission->owner = $this->user;
     $mission->dueDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     $mission->description = 'My test description';
     $mission->reward = 'My test reward';
     $mission->status = Mission::STATUS_AVAILABLE;
     $this->assertTrue($mission->save());
     $rules = MashableUtil::createMashableInboxRulesByModel('Mission');
     $rules->markUserAsHavingUnreadLatestModel($mission, $this->user);
     return $mission;
 }
Example #8
0
 /**
  * @param Mission $mission
  * @param User $user
  * @return bool
  */
 public static function hasUserReadMissionLatest(Mission $mission, User $user)
 {
     $mashableUtilRules = MashableUtil::createMashableInboxRulesByModel('Mission');
     $hasReadLatest = $mashableUtilRules->hasUserReadLatest($mission, $user);
     return $hasReadLatest;
 }
Example #9
0
 /**
  * Resolves the mass action triggered by ajax based on the modelClassName
  * @param string $massAction
  * @param string $modelClassName
  * @param integer $modelId
  */
 private function resolveMassActionByModel($massAction, $modelClassName, $modelId)
 {
     $method = 'resolve' . ucfirst($massAction);
     $mashableUtilRules = MashableUtil::createMashableInboxRulesByModel($modelClassName);
     $mashableUtilRules->{$method}((int) $modelId);
 }
 private function addModelMassOptions()
 {
     $mashableUtilRules = MashableUtil::createMashableInboxRulesByModel($this->getModelClassName());
     $this->massOptions = array_merge($this->massOptions, $mashableUtilRules->getMassOptions());
 }