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: Yii::import('zii.widgets.grid.CDataColumn');
 38: 
 39: /**
 40:  * Display column for attributes of X2Model subclasses.
 41:  */
 42: class X2ButtonColumn extends CButtonColumn {
 43: 
 44:     public $viewButtonImageUrl = false; 
 45:     public $updateButtonImageUrl = false; 
 46:     public $deleteButtonImageUrl = false; 
 47:     public $name;
 48:     
 49:     public $viewButtonUrl='
 50:         $data instanceof X2Model ? 
 51:             Yii::app()->createUrl(
 52:                 "/".lcfirst (X2Model::getModuleName (get_class ($data)))."/view",
 53:                 array("id"=>$data->primaryKey)) :
 54:             Yii::app()->controller->createUrl("view", array("id"=>$data->primaryKey))';
 55:     public $updateButtonUrl='
 56:         $data instanceof X2Model ? 
 57:             Yii::app()->createUrl(
 58:                 "/".lcfirst (X2Model::getModuleName (get_class ($data)))."/update",
 59:                 array("id"=>$data->primaryKey)) :
 60:             Yii::app()->controller->createUrl("update", array("id"=>$data->primaryKey))';
 61:     public $deleteButtonUrl='
 62:         $data instanceof X2Model ? 
 63:             Yii::app()->createUrl(
 64:                 "/".lcfirst (X2Model::getModuleName (get_class ($data)))."/delete",
 65:                 array("id"=>$data->primaryKey)) :
 66:             Yii::app()->controller->createUrl("delete", array("id"=>$data->primaryKey))';
 67: 
 68:     /**
 69:      * Registers the client scripts for the button column.
 70:      */
 71:     protected function registerClientScript()
 72:     {
 73:         $js=array();
 74:         foreach($this->buttons as $id=>$button)
 75:         {
 76:             if(isset($button['click']))
 77:             {
 78:                 $function=CJavaScript::encode($button['click']);
 79:                 $class=preg_replace('/\s+/','.',$button['options']['class']);
 80:                 /* x2modstart */ 
 81:                 $js[]= "
 82:                     $(document).unbind ('click.CButtonColumn".$id."');
 83:                     $(document).on (
 84:                         'click.CButtonColumn".$id."','#{$this->grid->id} a.{$class}',$function);
 85:                 ";
 86:                 /* x2modend */ 
 87:             }
 88:         }
 89: 
 90:         if($js!==array())
 91:             Yii::app()->getClientScript()->registerScript(__CLASS__.'#'.$this->id, implode("\n",$js));
 92:     }
 93: 
 94: 
 95:     /**
 96:      * Initializes the default buttons (view, update and delete).
 97:      */
 98:     protected function initDefaultButtons()
 99:     {
100:         $this->viewButtonLabel = 
101:             "<span class='fa fa-search' title='".CHtml::encode (Yii::t('app', 'View record'))."'>
102:              </span>";
103:         $this->updateButtonLabel = 
104:             "<span class='fa fa-edit' title='".CHtml::encode (Yii::t('app', 'Edit record'))."'>
105:              </span>";
106:         $this->deleteButtonLabel = 
107:             "<span class='fa fa-times x2-delete-icon' 
108:               title='".CHtml::encode (Yii::t('app', 'Delete record'))."'></span>";
109:         parent::initDefaultButtons ();
110:     }
111: 
112: }
113: