All Data Structures Functions Variables Pages
SlidingPanelsUtil.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 
40  abstract class SlidingPanelsUtil
41  {
42  const SHOULD_SLIDE_TO_FIRST_PANEL_KEY_NAME = 'slideToFirstPanel';
43 
48  public static function getSlideToSecondPanelLabel()
49  {
50  throw new NotImplementedException();
51  }
52 
57  public static function getSlideToFirstPanelLabel()
58  {
59  throw new NotImplementedException();
60  }
61 
66  public static function renderToggleLinkContent($portletId)
67  {
68  if (static::resolveShouldSlideToSecondPanel($portletId))
69  {
70  $slideToSecond = true;
71  }
72  else
73  {
74  $slideToSecond = false;
75  }
76  static::registerSlidingPanelsScript($portletId);
77  if ($slideToSecond)
78  {
79  $label = static::getSlideToSecondPanelLabel();
80  $extraClass = ' slide-to-second-panel';
81  }
82  else
83  {
84  $label = static::getSlideToFirstPanelLabel();
85  $extraClass = null;
86  }
87  $content = ZurmoHtml::tag('span', array(), $label);
88  $content = ZurmoHtml::link($content, '#', array('id' => 'sliding-panel-toggle',
89  'class' => 'vertical-forward-pager' . $extraClass));
90  return $content;
91  }
92 
93  public static function setShouldSlideToSecondPanelForCurrentUser($portletId, $shouldSlideToSecondPanel)
94  {
95  assert('is_bool($shouldSlideToSecondPanel)');
97  setForCurrentUserByPortletIdAndKey($portletId, static::SHOULD_SLIDE_TO_FIRST_PANEL_KEY_NAME, !$shouldSlideToSecondPanel);
98  }
99 
104  public static function resolveShouldSlideToSecondPanel($portletId)
105  {
107  getForCurrentUserByPortletIdAndKey($portletId, static::SHOULD_SLIDE_TO_FIRST_PANEL_KEY_NAME, true));
108  }
109 
110  protected static function registerSlidingPanelsScript($portletId)
111  {
112  $script = "
113  $('#sliding-panel-toggle').click(function()
114  {
115  $('.sliding-panel').slideToggle();
116  $('.sliding-panel').toggleClass('showing-panel');
117  if ($(this).hasClass('slide-to-second-panel'))
118  {
119  $(this).removeClass('slide-to-second-panel');
120  $(this).addClass('slide-to-first-panel');
121  $(this).find('span').text('" . static::getSlideToFirstPanelLabel() . "');
122  " . static::getAjaxSubmitScript($portletId, false) . "
123  }
124  else
125  {
126  $(this).removeClass('slide-to-first-panel');
127  $(this).addClass('slide-to-second-panel');
128  $(this).find('span').text('" . static::getSlideToSecondPanelLabel() . "');
129  " . static::getAjaxSubmitScript($portletId, true) . "
130  }
131  return false;
132  });
133  ";
134  Yii::app()->getClientScript()->registerScript('slidingPanelsScript', $script);
135  }
136 
142  protected static function getAjaxSubmitScript($portletId, $shouldSlideToSecondPanel)
143  {
144  assert('is_bool($shouldSlideToSecondPanel)');
145  $urlScript = 'js:$.param.querystring("' . static::getAjaxUpdateSlidingPanelShowingByDefaultUrl() . '", "' .
146  'portletId=' . $portletId . '&shouldSlideToSecondPanel=' . $shouldSlideToSecondPanel . '")'; // Not Coding Standard
147  return ZurmoHtml::ajax(array('type' => 'GET', 'url' => $urlScript));
148  }
149 
150  protected static function getAjaxUpdateSlidingPanelShowingByDefaultUrl()
151  {
152  return Yii::app()->createUrl('/zurmo/default/ajaxUpdateSlidingPanelShowingByDefault');
153  }
154  }
155 ?>
static renderToggleLinkContent($portletId)
static setForCurrentUserByPortletIdAndKey($portletId, $keyName, $value)
static getSlideToSecondPanelLabel()
static getSlideToFirstPanelLabel()
static resolveShouldSlideToSecondPanel($portletId)
static getForCurrentUserByPortletIdAndKey($portletId, $keyName, $returnBoolean=false)
static getAjaxSubmitScript($portletId, $shouldSlideToSecondPanel)
Generated on Thu Jun 4 2020 07:10:29