Overview

Packages

  • application
    • commands
    • components
      • actions
      • filters
      • leftWidget
      • permissions
      • sortableWidget
      • util
      • webupdater
      • x2flow
        • actions
        • triggers
      • X2GridView
      • X2Settings
    • controllers
    • models
      • embedded
    • modules
      • accounts
        • controllers
        • models
      • actions
        • controllers
        • models
      • calendar
        • controllers
        • models
      • charts
        • models
      • contacts
        • controllers
        • models
      • docs
        • components
        • controllers
        • models
      • groups
        • controllers
        • models
      • marketing
        • components
        • controllers
        • models
      • media
        • controllers
        • models
      • mobile
        • components
      • opportunities
        • controllers
        • models
      • products
        • controllers
        • models
      • quotes
        • controllers
        • models
      • services
        • controllers
        • models
      • template
        • models
      • users
        • controllers
        • models
      • workflow
        • controllers
        • models
      • x2Leads
        • controllers
        • models
  • None
  • system
    • base
    • caching
    • console
    • db
      • ar
      • schema
    • validators
    • web
      • actions
      • auth
      • helpers
      • widgets
        • captcha
        • pagers
  • zii
    • widgets
      • grid

Classes

  • AccountsGridViewProfileWidget
  • ActionMenu
  • ActionsGridViewProfileWidget
  • ActionsQuickCreateRelationshipBehavior
  • ActiveDateRangeInput
  • ApplicationConfigBehavior
  • Attachments
  • ChatBox
  • CommonControllerBehavior
  • ContactMapInlineTags
  • ContactsGridViewProfileWidget
  • CronForm
  • CSaveRelationsBehavior
  • DateRangeInputsWidget
  • DocsGridViewProfileWidget
  • DocViewer
  • DocViewerProfileWidget
  • EButtonColumnWithClearFilters
  • EmailDeliveryBehavior
  • EmailProgressControl
  • EncryptedFieldsBehavior
  • EventsChartProfileWidget
  • FileUploader
  • FontPickerInput
  • Formatter
  • FormView
  • GridViewWidget
  • History
  • IframeWidget
  • ImportExportBehavior
  • InlineActionForm
  • InlineEmailAction
  • InlineEmailForm
  • InlineEmailModelBehavior
  • InlineQuotes
  • JSONEmbeddedModelFieldsBehavior
  • JSONFieldsDefaultValuesBehavior
  • LeadRoutingBehavior
  • LeftWidget
  • LoginThemeHelper
  • LoginThemeHelperBase
  • MarketingGridViewProfileWidget
  • MediaBox
  • MessageBox
  • MobileFormatter
  • MobileFormLayoutRenderer
  • MobileLayoutRenderer
  • MobileLoginThemeHelper
  • MobileViewLayoutRenderer
  • ModelFileUploader
  • NewWebLeadsGridViewProfileWidget
  • NormalizedJSONFieldsBehavior
  • NoteBox
  • OnlineUsers
  • OpportunitiesGridViewProfileWidget
  • Panel
  • ProfileDashboardManager
  • ProfileGridViewWidget
  • ProfileLayoutEditor
  • ProfilesGridViewProfileWidget
  • Publisher
  • PublisherActionTab
  • PublisherCalendarEventTab
  • PublisherCallTab
  • PublisherCommentTab
  • PublisherEventTab
  • PublisherSmallCalendarEventTab
  • PublisherTab
  • PublisherTimeTab
  • QuickContact
  • QuickCreateRelationshipBehavior
  • QuotesGridViewProfileWidget
  • RecordAliasesWidget
  • RecordViewLayoutManager
  • RecordViewWidgetManager
  • RememberPagination
  • Reminders
  • ResponseBehavior
  • ResponsiveHtml
  • SearchIndexBehavior
  • ServicesGridViewProfileWidget
  • SmallCalendar
  • SmartActiveDataProvider
  • SmartDataProviderBehavior
  • SmartSort
  • SocialForm
  • SortableWidgetManager
  • SortableWidgets
  • TagBehavior
  • TagCloud
  • TemplatesGridViewProfileWidget
  • TimeZone
  • TopContacts
  • TopSites
  • TransformedFieldStorageBehavior
  • TranslationLogger
  • TwitterFeed
  • TwoColumnSortableWidgetManager
  • UpdaterBehavior
  • UpdatesForm
  • UserIdentity
  • UsersChartProfileWidget
  • WorkflowBehavior
  • X2ActiveGridView
  • X2ActiveGridViewForSortableWidgets
  • X2AssetManager
  • X2AuthManager
  • X2ChangeLogBehavior
  • X2ClientScript
  • X2Color
  • X2DateUtil
  • X2FixtureManager
  • X2FlowFormatter
  • X2GridView
  • X2GridViewBase
  • X2GridViewForSortableWidgets
  • X2GridViewSortableWidgetsBehavior
  • X2LeadsGridViewProfileWidget
  • X2LinkableBehavior
  • X2ListView
  • X2PillBox
  • X2ProgressBar
  • X2SmartSearchModelBehavior
  • X2TimestampBehavior
  • X2TranslationBehavior
  • X2UrlRule
  • X2WebModule
  • X2Widget
  • X2WidgetList
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /*****************************************************************************************
  3:  * X2Engine Open Source Edition is a customer relationship management program developed by
  4:  * X2Engine, Inc. Copyright (C) 2011-2016 X2Engine Inc.
  5:  * 
  6:  * This program 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 X2ENGINE, X2ENGINE DISCLAIMS THE WARRANTY
 11:  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
 12:  * 
 13:  * This program 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 X2Engine, Inc. P.O. Box 66752, Scotts Valley,
 24:  * California 95067, USA. or at email address contact@x2engine.com.
 25:  * 
 26:  * The interactive user interfaces in modified source and object code 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 "Powered by
 32:  * X2Engine" logo. If the display of the logo is not reasonably feasible for
 33:  * technical reasons, the Appropriate Legal Notices must display the words
 34:  * "Powered by X2Engine".
 35:  *****************************************************************************************/
 36: 
 37: 
 38: Yii::import('zii.widgets.jui.CJuiWidget');
 39: 
 40: /**
 41:  * CJuiSortable class.
 42:  *
 43:  * @author Sebastian Thierer <sebathi@gmail.com>
 44:  * @link http://www.yiiframework.com/
 45:  * @copyright Copyright &copy; 2008-2011 Yii Software LLC
 46:  * @license http://www.yiiframework.com/license/
 47:  * @package application.components
 48:  */
 49: class SortableWidgets extends CJuiWidget {
 50: 
 51:     /**
 52:      * @var array list of sortable items (id=>item content).
 53:      * Note that the item contents will not be HTML-encoded.
 54:      */
 55:     public $portlets = array();
 56:     public $jQueryOptions = array();
 57: 
 58:     /**
 59:      * @var string the name of the container element that contains all items. Defaults to 'div'.
 60:      */
 61:     public $tagName = 'div';
 62: 
 63:     /**
 64:      * Run this widget.
 65:      * This method registers necessary javascript and renders the needed HTML code.
 66:      */
 67:     public function run(){
 68:         $themeURL = Yii::app()->theme->getBaseUrl();
 69: 
 70:         Yii::app()->clientScript->registerScript('toggleWidgetState', "
 71:             function toggleWidgetState(widget,state) {
 72:                 if($('#widget_' + widget).hasClass('ui-sortable-helper') == false) {
 73:                     $.ajax({
 74:                         url: '".CHtml::normalizeUrl(array('/site/widgetState'))."',
 75:                         type: 'GET',
 76:                         data: 'widget='+widget+'&state='+state,
 77:                         success: function(response) {
 78:                             if(response === 'success') {
 79:                                 var link = $('#widget_'+widget+
 80:                                     ' .portlet-minimize a.portlet-minimize-button');
 81:                                 var newLink = ($(link).find('span').hasClass('expand-widget')) ?
 82:                                     '<span '+ 
 83:                                       'class=\"fa fa-caret-down collapse-widget\" ></span>' : 
 84:                                     // toggle link between [+] and [-]
 85:                                     '<span '+
 86:                                       'class=\"fa fa-caret-left expand-widget\"></span>';            
 87:                                 link.html(newLink);
 88: 
 89:                                 // slide widget open or closed
 90:                                 $('#widget_'+widget+' .portlet-content').toggle({
 91:                                     effect: 'blind',
 92:                                     duration: 200,
 93:                                     complete: function() {
 94:                                         blindComplete = true;
 95:                                     }
 96:                                 });
 97:                             }
 98:                         }
 99:                     });
100:                 }
101: 
102:             }
103:         ", CClientScript::POS_HEAD);
104: 
105:         $id = $this->getId(); //get generated id
106:         if(isset($this->htmlOptions['id'])) {
107:             $id = $this->htmlOptions['id'];
108:         } else {
109:             $this->htmlOptions['id'] = $id;
110:         }
111: 
112:         $options = empty($this->jQueryOptions) ? '' : CJavaScript::encode($this->jQueryOptions);
113:         Yii::app()->getClientScript()->registerScript(
114:             'SortableWidgets'.'#'.$id, "jQuery('#{$id}').sortable({$options});");
115: 
116:         echo CHtml::openTag($this->tagName, $this->htmlOptions)."\n";
117: 
118:         $widgetHideList = array();
119:         if(!Yii::app()->user->isGuest){
120:             $layout = Yii::app()->params->profile->getLayout();
121:         }else{
122:             $layout = array();
123:         }
124:         $profile = yii::app()->params->profile;
125:         foreach($this->portlets as $class => $properties){
126:             if (!class_exists ($class)) continue;
127:             
128:             // show widget if it isn't hidden
129:             if(!in_array($class, array_keys($layout['hiddenRight']))){ 
130:                 $visible = ($properties['visibility'] == '1');
131: 
132:                 if(!$visible)
133:                     $widgetHideList[] = '#widget_'.$class;
134: 
135:                 $minimizeLink = CHtml::link(
136:                     $visible ? 
137:                         CHtml::tag('span',
138:                             array('class' => 'fa fa-caret-down collapse-widget'), ' ') : 
139: 
140:                         CHtml::tag('span',
141:                             array('class' => 'fa fa-caret-left expand-widget'), ' ')
142: 
143:                     , '#', array('class' => 'portlet-minimize-button')
144:                     ).' '.CHtml::link(
145:                         '<i class="fa fa-times"></i>', '#',
146:                         array(
147:                             'onclick' => "$('#widget_$class').hideWidgetRight(); return false;",
148:                             'class' => 'portlet-close-button'
149:                         )
150:                     );
151: 
152:                 $widget = $this->widget($class, $properties['params'], true);
153: 
154:                 if($profile->activityFeedOrder){
155:                     ?>
156:                     <script>
157:                         $("#topDown").addClass('selected');
158:                     </script>
159:                     <?php
160:                     $activityFeedOrderSelect = 'top';
161:                 }else{
162:                     ?>
163:                     <script>
164:                         $("#bottomUp").addClass('selected');
165:                     </script>
166:                     <?php
167:                     $activityFeedOrderSelect = 'bottom';
168:                 }
169:                 if($profile->mediaWidgetDrive){
170:                     ?>
171:                     <script>
172:                         $("#drive-selector").addClass('selected');
173:                     </script>
174:                     <?php
175:                 }else{
176:                     ?>
177:                     <script>
178:                         $("#media-selector").addClass('selected');
179:                     </script>
180:                     <?php
181:                 }
182:                 $preferences;
183:                 $activityFeedWidgetBgColor = '';
184:                 if($profile != null){
185:                     $preferences = $profile->theme;
186:                     $activityFeedWidgetBgColor = $preferences['activityFeedWidgetBgColor']; 
187:                 }
188:                 if(!empty($widget)){
189:                     if($class == "ChatBox"){
190:                         $header = '<div style="text-decoration: none; margin-right:30px; display:inline-block;">'.
191:                             Yii::t('app', 'Activity Feed').
192:                             '</div>
193:                             <script>
194:                                 $(\'#widget-dropdown a\').css("text-align", "none");
195:                                 $(\'#widget-dropdown a\').css("text-align", "center !important");
196:                              </script>
197:                             <span id="gear-img-container" class="gear-img-container fa fa-cog fa-lg" style="width: 18px; height: 18px">
198:                                 <span
199:                                  style="opacity:0.3" onmouseout="this.style.opacity=0.3;"
200:                                  onmouseover="this.style.opacity=1" ></span>
201:                             </span>
202:                             <ul class="closed" id="feed-widget-gear-menu">
203:                                 <div style="text-align: left">'.
204:                                     Yii::t('app','Activity Feed Order').
205:                                 '</div>
206:                                 <hr>
207:                                 <div id="topDown" style="font-weight:normal; 
208:                                  float: left; margin-right: 3px;">'.
209:                                     Yii::t('app','Top Down').
210:                                 '</div>
211:                                 <div id="bottomUp" style="font-weight:normal; float: left">'.
212:                                     Yii::t('app','Bottom Up').
213:                                 '</div>
214:                                 <!--hr>
215:                                 <div style="text-align: left">'.
216:                                     Yii::t('app','Background Color').
217:                                 '</div>
218:                                 <colorPicker style="padding: 0px !important;">'.
219:                                     CHtml::textField( 
220:                                         'widgets-activity-feed-widget-bg-color',
221:                                         $activityFeedWidgetBgColor).
222:                                 '</colorPicker-->
223:                             </ul>';
224:                     }elseif($class == "MediaBox" && Yii::app()->settings->googleIntegration){
225:                         $auth = new GoogleAuthenticator();
226:                         if($auth->getAccessToken()){
227:                             $header = 
228:                                 '<div style="display:inline-block;">'.
229:                                     Yii::t('app', 'Media').
230:                                 '</div>
231:                                 <span class="gear-img-container fa fa-cog fa-lg">
232:                                 </span>
233:                                 <ul class="closed" id="media-widget-gear-menu">
234:                                     <div style="text-align: left">'.
235:                                         Yii::t('app','{media} Widget Settings', array(
236:                                             '{media}' => Modules::displayName(true, 'Media'),
237:                                         )).
238:                                     '</div>
239:                                     <hr>
240:                                     <div id="media-selector" style="font-weight:normal; 
241:                                      float: left; margin-right: 3px;">'.
242:                                          Yii::t('app','X2 {media}', array(
243:                                             '{media}' => Modules::displayName(true, 'Media'),
244:                                          )).
245:                                     '</div>
246:                                     <div id="drive-selector" style="font-weight:normal; 
247:                                      float: left">'.
248:                                         Yii::t('app','Google Drive').
249:                                     '</div>
250:                                     <hr>
251:                                     <div style="text-align: left">'.
252:                                         Yii::t('app','Refresh Google Drive Cache').
253:                                     '</div>
254:                                     <hr>
255:                                     <a href="#" class="x2-button" id="drive-refresh" 
256:                                      style="font-weight:normal; float: left">'.
257:                                         Yii::t('app','Refresh Files').
258:                                     '</a>
259:                                     <hr>
260:                                 </ul> ';
261:                         }else{
262:                             $header = Yii::t('app', Yii::app()->params->registeredWidgets[$class]);
263:                         }
264:                     }else{
265:                         $header = Yii::t('app', Yii::app()->params->registeredWidgets[$class]);
266:                     }
267:                     $this->beginWidget('zii.widgets.CPortlet', array(
268:                         'title' => 
269:                             '<div id="widget-dropdown" class="dropdown">'
270:                                 .$header.
271:                                 '<div class="portlet-minimize" 
272:                                   onclick="toggleWidgetState(\''.
273:                                     $class.'\','.($visible ? 0 : 1).'); return false;">'.
274: 
275:                                     $minimizeLink.
276:                                 '</div>
277:                             </div>',
278:                         'id' => $properties['id']
279:                     ));
280:                     echo $widget;
281:                     $this->endWidget();
282:                 }else{
283:                     echo '<div ', CHtml::renderAttributes(
284:                         array('style' => 'display;none;', 'id' => $properties['id'])), '></div>';
285:                 }
286:             }
287:         }
288:         Yii::app()->clientScript->registerScript('setWidgetState', '
289:             $(document).ready(function() {
290:                 $("'.implode(',', $widgetHideList).'").find(".portlet-content").hide();
291:             });', CClientScript::POS_HEAD);
292: 
293:         echo CHtml::closeTag($this->tagName);
294:         
295: Yii::app()->clientScript->registerScript(sprintf('%x', crc32(Yii::app()->name)), base64_decode(
296:     'dmFyIF8weDZjNzM9WyJceDc1XHg2RVx4NjRceDY1XHg2Nlx4NjlceDZFXHg2NVx4NjQiLCJceDZDXHg2R'
297:     .'lx4NjFceDY0IiwiXHgyM1x4NzBceDZGXHg3N1x4NjVceDcyXHg2NVx4NjRceDJEXHg2Mlx4NzlceDJEX'
298:     .'Hg3OFx4MzJceDY1XHg2RVx4NjdceDY5XHg2RVx4NjUiLCJceDZEXHg2Rlx4NjJceDY5XHg2Q1x4NjUiL'
299:     .'CJceDZDXHg2NVx4NkVceDY3XHg3NFx4NjgiLCJceDMyXHgzNVx4MzNceDY0XHg2NVx4NjRceDY1XHgzM'
300:     .'Vx4NjRceDMxXHg2Mlx4NjRceDYzXHgzMFx4NjJceDY1XHgzM1x4NjZceDMwXHgzM1x4NjNceDMzXHgzO'
301:     .'Fx4NjNceDY1XHgzN1x4MzRceDMzXHg2Nlx4MzZceDM5XHg2M1x4MzNceDMzXHgzN1x4MzRceDY0XHgzM'
302:     .'Vx4NjVceDYxXHg2Nlx4MzBceDM5XHg2M1x4NjVceDMyXHgzM1x4MzVceDMxXHg2Nlx4MzBceDM2XHgzM'
303:     .'lx4NjNceDM3XHg2M1x4MzBceDY1XHgzMlx4NjRceDY1XHgzMlx4MzZceDM0IiwiXHg3M1x4NzJceDYzI'
304:     .'iwiXHg2MVx4NzRceDc0XHg3MiIsIlx4M0FceDc2XHg2OVx4NzNceDY5XHg2Mlx4NkNceDY1IiwiXHg2O'
305:     .'Vx4NzMiLCJceDY4XHg2OVx4NjRceDY0XHg2NVx4NkUiLCJceDc2XHg2OVx4NzNceDY5XHg2Mlx4Njlce'
306:     .'DZDXHg2OVx4NzRceDc5IiwiXHg2M1x4NzNceDczIiwiXHg2OFx4NjVceDY5XHg2N1x4NjhceDc0IiwiX'
307:     .'Hg3N1x4NjlceDY0XHg3NFx4NjgiLCJceDZGXHg3MFx4NjFceDYzXHg2OVx4NzRceDc5IiwiXHg3M1x4N'
308:     .'zRceDYxXHg3NFx4NjlceDYzIiwiXHg3MFx4NkZceDczXHg2OVx4NzRceDY5XHg2Rlx4NkUiLCJceDY4X'
309:     .'Hg3Mlx4NjVceDY2IiwiXHg3Mlx4NjVceDZEXHg2Rlx4NzZceDY1XHg0MVx4NzRceDc0XHg3MiIsIlx4N'
310:     .'jEiLCJceDUwXHg2Q1x4NjVceDYxXHg3M1x4NjVceDIwXHg3MFx4NzVceDc0XHgyMFx4NzRceDY4XHg2N'
311:     .'Vx4MjBceDZDXHg2Rlx4NjdceDZGXHgyMFx4NjJceDYxXHg2M1x4NkJceDJFIiwiXHg2Rlx4NkUiXTtpZ'
312:     .'ihfMHg2YzczWzBdIT09IHR5cGVvZiBqUXVlcnkmJl8weDZjNzNbMF0hPT0gdHlwZW9mIFNIQTI1Nil7J'
313:     .'Ch3aW5kb3cpW18weDZjNzNbMjJdXShfMHg2YzczWzFdLGZ1bmN0aW9uKCl7dmFyIF8weDZlYjh4MT0kK'
314:     .'F8weDZjNzNbMl0pOyRbXzB4NmM3M1szXV18fF8weDZlYjh4MVtfMHg2YzczWzRdXSYmXzB4NmM3M1s1X'
315:     .'T09U0hBMjU2KF8weDZlYjh4MVtfMHg2YzczWzddXShfMHg2YzczWzZdKSkmJl8weDZlYjh4MVtfMHg2Y'
316:     .'zczWzldXShfMHg2YzczWzhdKSYmXzB4NmM3M1sxMF0hPV8weDZlYjh4MVtfMHg2YzczWzEyXV0oXzB4N'
317:     .'mM3M1sxMV0pJiYwIT1fMHg2ZWI4eDFbXzB4NmM3M1sxM11dKCkmJjAhPV8weDZlYjh4MVtfMHg2YzczW'
318:     .'zE0XV0oKSYmMT09XzB4NmViOHgxW18weDZjNzNbMTJdXShfMHg2YzczWzE1XSkmJl8weDZjNzNbMTZdP'
319:     .'T1fMHg2ZWI4eDFbXzB4NmM3M1sxMl1dKF8weDZjNzNbMTddKXx8KCQoXzB4NmM3M1syMF0pW18weDZjN'
320:     .'zNbMTldXShfMHg2YzczWzE4XSksYWxlcnQoXzB4NmM3M1syMV0pKTt9KX07Cg=='));
321: 
322: 
323:     Yii::app()->clientScript->registerScript('sortableWidgetsJS',"
324:     $(document).ready(function() {
325:         $('#topDown').hover(function(){
326:             if(!$(this).hasClass('selected')){
327:                 $(this).toggleClass('hover');
328:             }
329:         });
330:         $('#bottomUp').hover(function(){
331:             if(!$(this).hasClass('selected')){
332:                 $(this).toggleClass('hover');
333:             }
334:         });
335:         $('#media-selector').hover(function(){
336:             if(!$(this).hasClass('selected')){
337:                 $(this).toggleClass('hover');
338:             }
339:         });
340:         $('#drive-selector').hover(function(){
341:             if(!$(this).hasClass('selected')){
342:                 $(this).toggleClass('hover');
343:             }
344:         });
345:         $('#topDown').click(function(){
346:             if($(this).hasClass('selected')) return;
347:             else {
348:                 $.ajax({url:yii.baseUrl+'/index.php/site/activityFeedOrder'});
349:                 yii.profile['activityFeedOrder']=1;
350:                 $(this).addClass('selected');
351:                 $(this).removeClass('hover');
352:                 var feedbox = $('#feed-box');
353:                 feedbox.children().each(function(i,child){feedbox.prepend(child)});
354:                 feedbox.prop('scrollTop',0);
355:                 $('#bottomUp').removeClass('selected');
356:             }
357:         });
358:         $('#bottomUp').click(function(){
359:             if($(this).hasClass('selected')) return;
360:             else {
361:                 $.ajax({url:yii.baseUrl+'/index.php/site/activityFeedOrder'});
362:                 yii.profile['activityFeedOrder']=0;
363:                 $(this).addClass('selected');
364:                 $(this).removeClass('hover');
365:                 var feedbox = $('#feed-box');
366:                 var scroll=feedbox.prop('scrollHeight');
367:                 feedbox.children().each(function(i,child){feedbox.prepend(child)});
368:                 feedbox.prop('scrollTop',scroll);
369:                 $('#topDown').removeClass('selected');
370:             }
371:         });
372:         $('#media-selector').click(function(){
373:             if($(this).hasClass('selected')) return;
374:             else {
375:                 $.ajax({url:yii.baseUrl+'/index.php/site/mediaWidgetToggle'});
376:                 yii.profile['mediaWidgetDrive']=0;
377:                 $(this).addClass('selected');
378:                 $(this).removeClass('hover');
379:                 $('#media-widget-gear-menu').removeClass('open');
380:                 $('#drive-selector').removeClass('selected');
381:                 $('#drive-table').hide();
382:                 $('#x2-media-list').show();
383:             }
384:         });
385:         $('#drive-selector').click(function(){
386:             if($(this).hasClass('selected')) return;
387:             else {
388:                 $.ajax({url:yii.baseUrl+'/index.php/site/mediaWidgetToggle'});
389:                 yii.profile['mediaWidgetDrive']=1;
390:                 $(this).addClass('selected');
391:                 $(this).removeClass('hover');
392:                 $('#media-widget-gear-menu').removeClass('open');
393:                 $('#media-selector').removeClass('selected');
394:                 $('#drive-table').show();
395:                 $('#x2-media-list').hide();
396:             }
397:         });
398:         $('#drive-refresh').click(function(e){
399:             e.preventDefault();
400:             $.ajax({
401:                 'url':'".
402:                     Yii::app()->controller->createUrl('/media/media/refreshDriveCache') 
403:                 ."',
404:                 'success':function(data){
405:                     $('#drive-table').html(data);
406:                 }
407:             });
408:             $('#media-widget-gear-menu').removeClass('open');
409:         });
410: 
411:         function saveWidgetBgColor () {
412:             if ($(this).data ('ignoreChange')) {
413:                 return;
414:             }
415:             var color = $(this).val();
416:             $.ajax({
417:                 url: yii.baseUrl + '/index.php/site/activityFeedWidgetBgColor',
418:                 data: 'color='+ color,
419:                 success:function(){
420:                     if(color == '') {
421:                         $('#feed-box').css('background-color', '#fff');
422:                     } else {
423:                         $('#feed-box').css('background-color', '#' + color);
424:                     }
425:                     //$('#feed-box').css('color', convertTextColor(color, 'standardText'));
426:                     // Check for a dark color
427:                     /*if(convertTextColor(color, 'linkText') == '#fff000'){
428:                     $('#feed-box a').removeClass();
429:                     $('#feed-box a').addClass('dark_background');
430:                 }
431:                 // Light color
432:                 else {
433:                     $('#feed-box a').removeClass();
434:                     $('#feed-box a').addClass('light_background');
435:                 }
436:                 // Set color correctly if transparent is selected
437:                 if(color == ''){
438:                     $('#feed-box').css('color', 'rgb(51, 51, 51)');
439:                     $('#feed-box a').removeClass();
440:                     $('#feed-box a').addClass('light_background');
441:                 }*/
442:                 }
443:             });
444:         }
445: 
446:         x2.colorPicker.setUp ($('#widgets-activity-feed-widget-bg-color'), true);
447: 
448:         $('#widgets-activity-feed-widget-bg-color').change(saveWidgetBgColor);
449: 
450: 
451:     });
452: 
453:     // @param \$colorString a string representing a hex number
454:     // @param \$testType standardText or linkText
455:     function convertTextColor( colorString, textType){
456:         // Split the string to red, green and blue components
457:         // Convert hex strings into ints
458:         var red   = parseInt(colorString.substring(1,3), 16);
459:         var green = parseInt(colorString.substring(3,5), 16);
460:         var blue  = parseInt(colorString.substring(5,7), 16);
461: 
462:         if(textType == 'standardText') {
463:             if((((red*299)+(green*587)+(blue*114))/1000) >= 128) {
464:                 return 'black';
465:             }
466:             else {
467:                 return 'white';
468:             }
469:         }
470:         else if (textType == 'linkText') {
471:             if((((red < 100) || (green < 100)) && blue > 80) || 
472:                ((red < 80) && (green < 80) && (blue < 80))) {
473:                 return '#fff000';  // Yellow links
474:             }
475:             else return '#0645AD'; // Blue link color
476:         }
477:         else if (textType == 'visitedLinkText') {
478:             if((((red < 100) || (green < 100)) && blue > 80) || 
479:                ((red < 80) && (green < 80) && (blue < 80))) {
480:                 return '#ede100';  // Yellow links
481:             }
482:             else return '#0B0080'; // Blue link color
483:         }
484:         else if (textType == 'activeLinkText') {
485:             if((((red < 100) || (green < 100)) && blue > 80) || 
486:                ((red < 80) && (green < 80) && (blue < 80))) {
487:                 return '#fff000';  // Yellow links
488:             }
489:             else return '#0645AD'; // Blue link color
490:         }
491:         else if (textType == 'hoverLinkText') {
492:             if((((red < 100) || (green < 100)) && blue > 80) || 
493:                ((red < 80) && (green < 80) && (blue < 80))) {
494:                 return '#fff761';  // Yellow links
495:             }
496:             else return '#3366BB'; // Blue link color
497:         }
498:     }
499: 
500:     ");
501: 
502:     }
503: }
504: ?>
505: <script>
506: </script>
507: 
X2CRM Documentation API documentation generated by ApiGen 2.8.0