Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.
 All Data Structures Functions Variables Pages
DetailsPortletSelectionView.php
1 <?php
2  /*********************************************************************************
3  * Zurmo is a customer relationship management program developed by
4  * Zurmo, Inc. Copyright (C) 2017 Zurmo Inc.
5  *
6  * Zurmo is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY ZURMO, ZURMO DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  *
13  * Zurmo is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  *
23  * You can contact Zurmo, Inc. with a mailing address at 27 North Wacker Drive
24  * Suite 370 Chicago, IL 60606. or at email address contact@zurmo.com.
25  *
26  * The interactive user interfaces in original and modified versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  *
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the Zurmo
32  * logo and Zurmo copyright notice. If the display of the logo is not reasonably
33  * feasible for technical reasons, the Appropriate Legal Notices must display the words
34  * "Copyright Zurmo Inc. 2017. All rights reserved".
35  ********************************************************************************/
36 
38  {
39  protected $controllerId;
40  protected $moduleId;
41  protected $modelId;
42  protected $uniqueLayoutId;
43 
44  public function __construct($controllerId, $moduleId, $modelId, $uniqueLayoutId)
45  {
46  $this->controllerId = $controllerId;
47  $this->moduleId = $moduleId;
48  $this->modelId = $modelId;
49  $this->uniqueLayoutId = $uniqueLayoutId;
50  }
51 
52  protected function renderContent()
53  {
54  $placedViewTypes = Portlet::getPlacedViewTypesByLayoutIdAndUser($this->uniqueLayoutId,
55  Yii::app()->user->userModel->id);
56  $modules = Module::getModuleObjects();
57  $sortablePortlets = array();
58  foreach ($modules as $module)
59  {
60  if ($module->isEnabled())
61  {
62  $p = $module->getParentModule();
63  $viewClassNames = $module::getViewClassNames();
64  foreach ($viewClassNames as $className)
65  {
66  $viewReflectionClass = new ReflectionClass($className);
67  if (!$viewReflectionClass->isAbstract())
68  {
69  $portletRules = PortletRulesFactory::createPortletRulesByView($className);
70  if ($viewReflectionClass->implementsInterface('RelatedPortletViewInterface'))
71  {
72  if ($this->resolveLayoutIdInAllowedOnPortletViewClassNames($className) &&
73  $className::allowMultiplePlacement() == false &&
74  !in_array($portletRules->getType(), $placedViewTypes)&&
76  {
77  $metadata = $className::getMetadata();
78  $url = Yii::app()->createUrl($this->moduleId . '/defaultPortlet/add', array(
79  'uniqueLayoutId' => $this->uniqueLayoutId,
80  'modelId' => $this->modelId,
81  'portletType' => $portletRules->getType(),
82  )
83  );
84  $title = $metadata['perUser']['title'];
86  $sortablePortlets[$title] = array('url' => $url,
87  'title' => $title,
88  'portletRules' => $portletRules);
89  }
90  }
91  }
92  }
93  }
94  }
95  if (empty($sortablePortlets))
96  {
97  $messageView = new NoPortletsToPlaceView();
98  return $messageView->render();
99  }
100  //Sort by title
101  ksort($sortablePortlets);
102  return PortletUtil::renderAddPortletsContent($sortablePortlets);
103  }
104 
105  private function resolveLayoutIdInAllowedOnPortletViewClassNames($className)
106  {
107  if (in_array($this->uniqueLayoutId, $className::getAllowedOnPortletViewClassNames()))
108  {
109  return true;
110  }
111  foreach ($className::getAllowedOnPortletViewClassNames() as $allowedOnPortletViewClassName)
112  {
113  if (is_subclass_of($this->uniqueLayoutId, $allowedOnPortletViewClassName))
114  {
115  return true;
116  }
117  }
118  return false;
119  }
120  }
121 ?>
static createPortletRulesByView($viewClassName)
static getModuleObjects()
Definition: Module.php:51
Definition: View.php:43
static resolveEvaluateSubString(&$subString, $resolveVariableName=null, $params=null, $defaultValue=null)
static doesCurrentUserHavePermissionToAddPortlet($portletRules)
Generated on Thu Jul 9 2020 07:10:29
Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.