public function setup()
 {
     parent::setUp();
     SecurityTestHelper::createSuperAdmin();
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $this->modelsWithMashableInboxInterface = array_keys(MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableInboxInterface'));
 }
Example #2
0
 public function testGetModelDataForCurrentUserByInterfaceName()
 {
     Yii::app()->user->userModel = User::getByUsername('super');
     $mashableModelData = MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableInboxInterface');
     $this->assertEquals(3, count($mashableModelData));
     Yii::app()->user->userModel = User::getByUsername('billy');
     $mashableModelData = MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableInboxInterface');
     $this->assertEquals(1, count($mashableModelData));
 }
 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;
 }
Example #4
0
 /**
  * Based on the current user, return model class names and thier display labels.  Only include models
  * that the user has a right to access its corresponding module, as well as only models that implement the
  * MashableActivityInterface.
  * @param $includeHavingRelatedItems - if the returning data should include models that are
  * mashable but are connected via activityItems.  An example is accounts, a mission is not conneted to an account
  * so if this setting is false, accounts would not be returned. Home/User are always returned.
  * @return array of model class names and display labels.
  */
 public static function getMashableModelDataForCurrentUser($includeHavingRelatedItems = true)
 {
     return MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableActivityInterface', $includeHavingRelatedItems);
 }
 private function renderMashableInboxModelsToolbar()
 {
     $activeClass = null;
     if ($this->modelClassName == null) {
         $activeClass = "active";
     }
     $unreadCount = MashableUtil::getUnreadCountMashableInboxForCurrentUser();
     $url = Yii::app()->createUrl($this->moduleId . '/' . $this->controllerId . '/list');
     $label = Zurmo::t('MashableInboxModule', 'Combined');
     $span = ZurmoHtml::tag('span', array("class" => "unread-count"), $unreadCount);
     $zLabel = ZurmoHtml::tag('span', array("class" => "z-label"), $label . $span);
     $content = ZurmoHtml::link($zLabel, $url, array('class' => 'icon-combined ' . $activeClass));
     $combinedInboxesModels = MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableInboxInterface');
     foreach ($combinedInboxesModels as $modelClassName => $modelLabel) {
         $activeClass = null;
         if ($this->modelClassName == $modelClassName) {
             $activeClass = "active";
         }
         $unreadCount = MashableUtil::getUnreadCountForCurrentUserByModelClassName($modelClassName);
         $url = Yii::app()->createUrl($this->moduleId . '/' . $this->controllerId . '/list', array('modelClassName' => $modelClassName));
         $span = ZurmoHtml::tag('span', array("class" => "unread-count"), $unreadCount);
         $zLabel = ZurmoHtml::tag('span', array("class" => "z-label"), $modelLabel . $span);
         $content .= ZurmoHtml::link($zLabel, $url, array('class' => 'icon-' . strtolower($modelClassName) . ' ' . $activeClass));
     }
     return $content;
 }
Example #6
0
 /**
  * Gets the listView that should be rendered based on the mashableInboxForm params
  * @param MashableInboxForm $mashableInboxForm
  * @return \MashableInboxListView
  */
 private function getMashableInboxListView($mashableInboxForm)
 {
     $modelClassNames = array_keys(MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableInboxInterface'));
     $modelClassNamesAndSearchAttributeMetadataForMashableInbox = MashableUtil::getSearchAttributeMetadataForMashableInboxByModelClassName($modelClassNames, $mashableInboxForm->filteredBy, $mashableInboxForm->searchTerm);
     $modelClassNamesAndSortAttributes = MashableUtil::getSortAttributesByMashableInboxModelClassNames($modelClassNames);
     $dataProvider = new RedBeanModelsDataProvider('MashableInbox', $modelClassNamesAndSortAttributes, true, $modelClassNamesAndSearchAttributeMetadataForMashableInbox, array('pagination' => array('pageSize' => $this->pageSize)));
     $listView = new MashableInboxListView($this->getId(), $this->getModule()->getId(), 'MashableInbox', $dataProvider, array(), null, array('paginationParams' => GetUtil::getData()));
     return $listView;
 }
 private function renderMashableInboxModelsToolbar()
 {
     $activeClass = null;
     if ($this->modelClassName == null) {
         $activeClass = "active";
     }
     $unreadCount = MashableUtil::getUnreadCountMashableInboxForCurrentUser();
     $label = Zurmo::t('MashableInboxModule', 'Combined');
     $params = array('label' => $label, 'modelClassName' => null, 'unread' => $unreadCount, 'htmlOptions' => array('class' => $activeClass), 'iconClass' => 'icon-combined');
     $element = new MashableInboxModelMenuActionElement($this->controllerId, $this->moduleId, null, $params);
     $content = $element->render();
     $combinedInboxesModels = MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableInboxInterface');
     foreach ($combinedInboxesModels as $modelClassName => $modelLabel) {
         $activeClass = null;
         if ($this->modelClassName == $modelClassName) {
             $activeClass = "active";
         }
         $unreadCount = MashableUtil::getUnreadCountForCurrentUserByModelClassName($modelClassName);
         $params = array('label' => $modelLabel, 'modelClassName' => $modelClassName, 'htmlOptions' => array('class' => $activeClass), 'unread' => $unreadCount, 'iconClass' => 'icon-' . strtolower($modelClassName));
         $element = new MashableInboxModelMenuActionElement($this->controllerId, $this->moduleId, null, $params);
         $content .= $element->render();
     }
     return $content;
 }