Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.
 All Data Structures Functions Variables Pages
RowMenuColumn.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 
41  class RowMenuColumn extends CGridColumn
42  {
46  public $rowMenu;
47 
51  public $title;
52 
57  public $listView;
58 
59  public $redirectUrl;
60 
65  public $modelClassName;
66 
67  public function init()
68  {
69  assert('$this->listView instanceof ListView');
70  assert('is_string($this->modelClassName) && $this->modelClassName != null');
71  }
72 
79  protected function renderDataCellContent($row, $data)
80  {
81  $menuItems = array('label' => $this->title, 'items' => array());
82  if (count($this->rowMenu['elements']) > 0)
83  {
84  foreach ($this->rowMenu['elements'] as $elementInformation)
85  {
86  $elementclassname = $elementInformation['type'] . 'ActionElement';
87  $class = new ReflectionClass($elementclassname);
88  if ($class->implementsInterface('RowModelShouldRenderInterface') && !$elementclassname::shouldRenderByRowModel($data))
89  {
90  continue;
91  }
92  $params = $this->resolveParams($elementInformation, $data, $row);
93  array_walk($params, array($this->listView, 'resolveEvaluateSubString'));
94  $element = new $elementclassname($this->listView->getControllerId(),
95  $this->listView->getModuleId(),
96  $data->id, $params);
97  if (!ActionSecurityUtil::canCurrentUserPerformAction( $element->getActionType(), $data) ||
98  (isset($params['userHasRelatedModelAccess']) &&
99  $params['userHasRelatedModelAccess'] == false))
100  {
101  continue;
102  }
103  if (!$this->listView->canRenderRowMenuColumnByElementAndData($element, $data))
104  {
105  continue;
106  }
107  if ($element->isFormRequiredToUse())
108  {
109  throw new NotSupportedException();
110  }
111  $menuItems['items'][] = $element->renderMenuItem();
112  }
113  }
114  if (count($menuItems['items']) > 0)
115  {
116  $cClipWidget = new CClipWidget();
117  $cClipWidget->beginClip("OptionMenu");
118  $cClipWidget->widget('application.core.widgets.MbMenu', array(
119  'htmlOptions' => array('class' => 'options-menu edit-row-menu'),
120  'items' => array($menuItems),
121  ));
122  $cClipWidget->endClip();
123  echo $cClipWidget->getController()->clips['OptionMenu'];
124  }
125  }
126 
127  public function renderDataCellContentFromOutsideClass($row, $data)
128  {
129  $this->renderDataCellContent($row, $data);
130  }
131 
139  protected function resolveParams($elementInformation, $data, $row)
140  {
141  $params = array_slice($elementInformation, 1);
142  if (!isset($params['redirectUrl']))
143  {
144  $params['redirectUrl'] = $this->redirectUrl;
145  }
146  $params['modelClassName'] = $this->modelClassName;
147  $params['gridId'] = $this->grid->getId();
148  return $params;
149  }
150  }
151 ?>
resolveParams($elementInformation, $data, $row)
static canCurrentUserPerformAction($actionType, $model)
renderDataCellContent($row, $data)
Generated on Fri Sep 25 2020 07:10:26
Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.