protected function renderContent() { $placedViewTypes = $this->getPlacedViewTypes(); $modules = Module::getModuleObjects(); foreach ($modules as $module) { if ($module->isEnabled()) { $p = $module->getParentModule(); $viewClassNames = $module::getViewClassNames(); foreach ($viewClassNames as $className) { $viewReflectionClass = new ReflectionClass($className); if (!$viewReflectionClass->isAbstract()) { $portletRules = PortletRulesFactory::createPortletRulesByView($className); if ($portletRules != null && $portletRules->allowOnDashboard()) { if ($portletRules->allowMultiplePlacementOnDashboard() && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true || !$portletRules->allowMultiplePlacementOnDashboard() && !in_array($portletRules->getType(), $placedViewTypes) && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true) { $metadata = $className::getMetadata(); $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array('uniqueLayoutId' => $this->uniqueLayoutId, 'dashboardId' => $this->dashboardId, 'portletType' => $portletRules->getType())); if (isset($metadata['perUser']['title'])) { $title = $metadata['perUser']['title']; } else { continue; } MetadataUtil::resolveEvaluateSubString($title); $sortablePortlets[$title] = array('url' => $url, 'title' => $title, 'portletRules' => $portletRules); } } } } } } return PortletUtil::renderAddPortletsContent($sortablePortlets); }
protected function renderContent() { $placedViewTypes = Portlet::getPlacedViewTypesByLayoutIdAndUser($this->uniqueLayoutId, Yii::app()->user->userModel->id); $modules = Module::getModuleObjects(); $sortablePortlets = array(); foreach ($modules as $module) { if ($module->isEnabled()) { $p = $module->getParentModule(); $viewClassNames = $module::getViewClassNames(); foreach ($viewClassNames as $className) { $viewReflectionClass = new ReflectionClass($className); if (!$viewReflectionClass->isAbstract()) { $portletRules = PortletRulesFactory::createPortletRulesByView($className); if ($viewReflectionClass->implementsInterface('RelatedPortletViewInterface')) { if ($this->resolveLayoutIdInAllowedOnPortletViewClassNames($className) && $className::allowMultiplePlacement() == false && !in_array($portletRules->getType(), $placedViewTypes) && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true) { $metadata = $className::getMetadata(); $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array('uniqueLayoutId' => $this->uniqueLayoutId, 'modelId' => $this->modelId, 'portletType' => $portletRules->getType())); $title = $metadata['perUser']['title']; MetadataUtil::resolveEvaluateSubString($title); $sortablePortlets[$title] = array('url' => $url, 'title' => $title, 'portletRules' => $portletRules); } } } } } } if (empty($sortablePortlets)) { $messageView = new NoPortletsToPlaceView(); return $messageView->render(); } //Sort by title ksort($sortablePortlets); return PortletUtil::renderAddPortletsContent($sortablePortlets); }
protected function renderContent() { $placedViewTypes = Portlet::getPlacedViewTypesByLayoutIdAndUser($this->uniqueLayoutId, Yii::app()->user->userModel->id); $content = '<ul class="available-portlets">'; $modules = Module::getModuleObjects(); foreach ($modules as $module) { if ($module->isEnabled()) { $p = $module->getParentModule(); $viewClassNames = $module::getViewClassNames(); foreach ($viewClassNames as $className) { $viewReflectionClass = new ReflectionClass($className); if (!$viewReflectionClass->isAbstract()) { $portletRules = PortletRulesFactory::createPortletRulesByView($className); if ($portletRules != null && $portletRules->allowOnDashboard()) { if ($portletRules->allowMultiplePlacementOnDashboard() && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true || !$portletRules->allowMultiplePlacementOnDashboard() && !in_array($portletRules->getType(), $placedViewTypes) && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true) { $metadata = $className::getMetadata(); $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array('uniqueLayoutId' => $this->uniqueLayoutId, 'dashboardId' => $this->dashboardId, 'portletType' => $portletRules->getType())); $onClick = 'window.location.href = "' . $url . '"'; $content .= '<li>'; $title = $metadata['perUser']['title']; MetadataUtil::resolveEvaluateSubString($title); $label = '<span>\\</span>' . $title; $content .= ZurmoHtml::link(Zurmo::t('HomeModule', $label), null, array('onclick' => $onClick)); $content .= '</li>'; } } } } } } $content .= '</ul>'; return $content; }
/** * @param array $portlets * @return array */ public static function resolvePortletsForCurrentUser(array $portlets) { $resolvedPortlets = array(); $user = Yii::app()->user->userModel; foreach ($portlets as $column => $positionInfo) { foreach ($positionInfo as $position => $portlet) { $viewClassName = $portlet->viewType . 'View'; $moduleClassName = $viewClassName::getModuleClassName(); $portletRules = $portletRules = PortletRulesFactory::createPortletRulesByView($viewClassName); if ($portletRules->canUserAccessPortlet($user) && RightsUtil::canUserAccessModule($moduleClassName, $user)) { $resolvedPortlets[$column][] = $portlet; } } } return $resolvedPortlets; }
protected function renderContent() { $placedViewTypes = Portlet::getPlacedViewTypesByLayoutIdAndUser($this->uniqueLayoutId, Yii::app()->user->userModel->id); $content = '<ul class="available-portlets">'; $modules = Module::getModuleObjects(); $sortablePortlets = array(); foreach ($modules as $module) { if ($module->isEnabled()) { $p = $module->getParentModule(); $viewClassNames = $module::getViewClassNames(); foreach ($viewClassNames as $className) { $viewReflectionClass = new ReflectionClass($className); if (!$viewReflectionClass->isAbstract()) { $portletRules = PortletRulesFactory::createPortletRulesByView($className); if ($viewReflectionClass->implementsInterface('RelatedPortletViewInterface')) { if ($this->resolveLayoutIdInAllowedOnPortletViewClassNames($className) && $className::allowMultiplePlacement() == false && !in_array($portletRules->getType(), $placedViewTypes) && PortletsSecurityUtil::doesCurrentUserHavePermissionToAddPortlet($portletRules) === true) { $metadata = $className::getMetadata(); $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array('uniqueLayoutId' => $this->uniqueLayoutId, 'modelId' => $this->modelId, 'portletType' => $portletRules->getType())); $title = $metadata['perUser']['title']; MetadataUtil::resolveEvaluateSubString($title); $sortablePortlets[$title] = $url; } } } } } } if (empty($sortablePortlets)) { $messageView = new NoPortletsToPlaceView(); return $messageView->render(); } //Sort by title ksort($sortablePortlets); foreach ($sortablePortlets as $title => $url) { $onClick = 'window.location.href = "' . $url . '"'; $content .= '<li>'; $label = '<span>\\</span>' . $title; $content .= ZurmoHtml::link(Zurmo::t('HomeModule', $label), null, array('onclick' => $onClick)); $content .= '</li>'; } $content .= '</ul>'; return $content; }
public function testPortletRulesFactory() { $viewClassName = 'DetailsView'; $portletRules = PortletRulesFactory::createPortletRulesByView($viewClassName); $this->assertNull($portletRules); $viewClassName = 'RelatedListView'; $portletRules = PortletRulesFactory::createPortletRulesByView($viewClassName); $this->assertTrue($portletRules instanceof PortletRules); $this->assertTrue($portletRules->allowOnRelationView()); $this->assertFalse($portletRules->allowOnDashboard()); }
protected function resolveUniqueClass(Portlet $portlet) { $content = null; $content .= get_class($portlet->getView()); foreach ($portlet->getCssClasses() as $cssClass) { $content .= ' ' . $cssClass; } $portletRules = PortletRulesFactory::createPortletRulesByView(get_class($portlet->getView())); $content .= ' ' . $portletRules->resolveIconTypeName(); return $content; }