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); }
public function testResolveEvaluateSubString() { //variable in string, value as array $combinedData = "eval:array_combine(array('a', 'b', 'c'), \$array2)"; $resolveVariableName = 'array2'; $params = array('1', '2', '3'); MetadataUtil::resolveEvaluateSubString($combinedData, $resolveVariableName, $params); $this->assertEquals('2', $combinedData['b']); //variables in array, values in array $sum = "eval:(int)(\$x + \$y + \$z)"; $resolveVariableName = array('x', 'y', 'z'); $params = array(5, 6, 7); MetadataUtil::resolveEvaluateSubString($sum, $resolveVariableName, $params); $this->assertEquals(18, $sum); //variables in array, value as default value $product = "eval:(int)(\$x * \$y)"; $resolveVariableName = array('x', 'y'); $params = null; $defaultValue = 5; MetadataUtil::resolveEvaluateSubString($product, $resolveVariableName, $params, $defaultValue); $this->assertEquals(25, $product); //combine all in one array of evals $evaluateValues = array('combinedData' => "eval:array_combine(array('a', 'b', 'c'), \$array2)", 'sum' => "eval:(int)(\$x + \$y + \$z)", 'product' => "eval:(int)(\$default * \$default)", 'static' => "string"); $resolveVariableName = array('array2', 'x', 'y', 'z', 'default'); $params = array(array('1', '2', '3'), 5, 6, 7); $defaultValue = 8; MetadataUtil::resolveEvaluateSubString($evaluateValues, $resolveVariableName, $params, $defaultValue); $this->assertEquals('2', $evaluateValues['combinedData']['b']); $this->assertEquals(18, $evaluateValues['sum']); $this->assertEquals(64, $evaluateValues['product']); $this->assertEquals("string", $evaluateValues['static']); }
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; }
public function testResolveMetadataForLanguageLocalization() { //Test AccountsModulePluralLabel $metadata = AccountsModule::getMetadata(); AccountsModule::setMetadata($metadata); $metadata = AccountsModule::getMetadata(); $this->assertEquals("eval:Zurmo::t('AccountsModule', 'AccountsModulePluralLabel', \$translationParams)", $metadata['global']['tabMenuItems'][0]['label']); $resolveVariableName = 'translationParams'; $params = LabelUtil::getTranslationParamsForAllModules(); MetadataUtil::resolveEvaluateSubString($metadata, $resolveVariableName, $params); $this->assertEquals('Accounts', $metadata['global']['tabMenuItems'][0]['label']); }
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 static function resolveColumnMetadataByHintType($name, $hintType = 'string', $length = 255, $unsigned = null, $notNull = 'NULL', $default = 'DEFAULT NULL', $collation = null, $resolveName = true) { // TODO: @Shoaibi: Critical: write tests for: integer, smallint, tinyint, blob, date, datetime, double, string, text, email, url // with and without column ending with _id, check collation, unsigned, type, default if ($resolveName) { $name = static::resolve($name); } // map reasonable default values $defaults = array('hintType' => 'string', 'length' => 255, 'notNull' => 'NULL', 'default' => 'DEFAULT NULL', 'unsigned' => 'eval:DatabaseCompatibilityUtil::resolveUnsignedByHintType($hintType, ' . RedBeanModelMemberRulesToColumnAdapter::ASSUME_SIGNED . ", '{$name}');", 'collation' => 'eval:DatabaseCompatibilityUtil::resolveCollationByHintType($hintType);'); foreach ($defaults as $key => $defaultValue) { if (!isset(${$key})) { MetadataUtil::resolveEvaluateSubString($defaultValue, 'hintType', $hintType); ${$key} = $defaultValue; } } // field is set to be NOT NULL in db, its default can't be 'NULL', unsetting variable. // Not Coding Standard if ($notNull !== 'NULL') { $default = null; } // resolve hint type to db type. $type = DatabaseCompatibilityUtil::mapHintTypeIntoDatabaseColumnType($hintType, $length); $column = compact('name', 'type', 'unsigned', 'notNull', 'collation', 'default'); return $column; }
public static function getDefaultTitle() { $metadata = self::getMetadata(); $title = $metadata['perUser']['title']; MetadataUtil::resolveEvaluateSubString($title); return $title; }
protected static function resolveTabMenuForDynamicLabelContent(&$items) { foreach ($items as $key => $item) { if (isset($items[$key]['dynamicLabelContent'])) { MetadataUtil::resolveEvaluateSubString($items[$key]['dynamicLabelContent']); if (isset($items[$key]['items'])) { static::resolveTabMenuForDynamicLabelContent($items[$key]['items']); } } } }