1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
36:
37: 38: 39: 40: 41: 42: 43:
44: class Publisher extends X2Widget {
45:
46: public static $actionTypeToTab = array (
47: 'note' => 'PublisherCommentTab',
48: 'action' => 'PublisherActionTab',
49: 'call' => 'PublisherCallTab',
50: 'time' => 'PublisherTimeTab',
51: 'event' => 'PublisherEventTab',
52: 'products' => 'PublisherProductsTab',
53: );
54:
55: public $id = '';
56: public $JSClass = 'Publisher';
57: public $model;
58: public $associationType;
59: public $associationId = '';
60: public $assignedTo = null;
61: public $renderTabs = true;
62:
63: public $viewParams = array(
64: 'model',
65: 'associationId',
66: 'associationType',
67: );
68:
69: protected $_packages;
70: private $_tabs;
71: private $_hiddenTabs;
72:
73: public function getTabs () {
74: if (!isset ($this->_tabs)) {
75: $visibleTabs = array_filter (Yii::app()->settings->actionPublisherTabs,
76: function ($shown) {
77: return $shown;
78: });
79: $this->_tabs = array ();
80: foreach ($visibleTabs as $tabName => $shown) {
81: $tab = new $tabName ();
82: $tab->publisher = $this;
83: $tab->namespace = $this->namespace;
84: $this->_tabs[] = $tab;
85: }
86: }
87: return $this->_tabs;
88: }
89:
90: public function setTabs ($tabs) {
91: $this->_tabs = $tabs;
92: foreach ($this->_tabs as $tab) {
93: $tab->publisher = $this;
94: }
95: }
96:
97: 98: 99:
100: public function getPackages () {
101: if (!isset ($this->_packages)) {
102: $this->_packages = array_merge (parent::getPackages (), array (
103: 'PublisherJS' => array(
104: 'baseUrl' => Yii::app()->request->baseUrl,
105: 'js' => array(
106: 'js/publisher/Publisher.js',
107: ),
108: 'depends' => array ('auxlib', 'MultiRowTabsJS')
109: ),
110: 'MultiRowTabsJS' => array(
111: 'baseUrl' => Yii::app()->request->baseUrl,
112: 'js' => array(
113: 'js/MultiRowTabs.js',
114: ),
115: 'depends' => array ('jquery', 'jquery.ui')
116: ),
117: ));
118: }
119: return $this->_packages;
120: }
121:
122: public function getJSClassParams () {
123: if (!isset ($this->_JSClassParams)) {
124: $selectedTab = $this->tabs[0]->tabId;
125: $this->_JSClassParams = array_merge (parent::getJSClassParams (), array (
126: 'translations' => array (),
127: 'initTabId' => $selectedTab,
128: 'publisherCreateUrl' =>
129: Yii::app()->controller->createUrl ('/actions/actions/publisherCreate'),
130: 'isCalendar' => $this->calendar,
131: 'renderTabs' => $this->renderTabs,
132: ));
133: }
134: return $this->_JSClassParams;
135: }
136:
137: public function getTranslations () {
138: if (!isset ($this->_translations)) {
139: $this->_translations = array_merge (parent::getTranslations (), array (
140: 'View History Item' => Yii::t('app', 'View History Item')
141: ));
142: }
143: return $this->_translations;
144: }
145:
146: public function run() {
147: $model = new Actions;
148: $model->associationType = $this->associationType;
149: $model->associationId = $this->associationId;
150: if($this->assignedTo) {
151: $model->assignedTo = $this->assignedTo;
152: } else {
153: $model->assignedTo = Yii::app()->user->getName();
154: }
155: $this->model = $model;
156: $selectedTabObj = $this->tabs[0];
157: $selectedTabObj->startVisible = true;
158:
159: $this->registerPackages ();
160: $this->instantiateJSClass (false);
161:
162: Yii::app()->clientScript->registerScript('loadEmails', "
163: $(document).on('ready',function(){
164: $(document).on('click','.email-frame',function(){
165: var id=$(this).attr('id');
166: x2.Publisher.loadFrame(id,'Email');
167: });
168: $(document).on ('click', '.quote-frame', function(){
169: var id=$(this).attr('id');
170: x2.Publisher.loadFrame(id,'Quote');
171: });
172:
173: $(document).on ('click', '.quote-print-frame', function(){
174: var id=$(this).attr('id');
175: x2.Publisher.loadFrame(id,'QuotePrint');
176: });
177: });
178: ", CClientScript::POS_HEAD);
179:
180: Yii::app()->clientScript->registerCss('recordViewPublisherCss', '
181: .action-event-panel {
182: margin-top: 5px;
183: }
184: ');
185:
186: if ($this->renderTabs) {
187: $that = $this;
188: $this->render(
189: 'application.components.views.publisher.publisher',
190: array_merge (
191: array_combine(
192: $this->viewParams,
193: array_map(function($p)use($that){return $that->$p;}, $this->viewParams)
194: ),
195: array (
196: 'tabs' => $this->tabs,
197: )
198: )
199: );
200: }
201: }
202:
203:
204:
205:
206:
207: 208: 209:
210: public function setHalfWidth($value) {
211: $this->calendar = !$value;
212: }
213: public $calendar = false;
214: public $hideTabs = array ();
215: public $selectedTab = '';
216:
217:
218: }
219: