public function setup() { parent::setUp(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $this->modelsWithMashableInboxInterface = array_keys(MashableUtil::getModelDataForCurrentUserByInterfaceName('MashableInboxInterface')); }
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; }
/** * 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; }
/** * 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; }