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: class RecordViewWidgetManager extends TwoColumnSortableWidgetManager {
38:
39: public $layoutManager;
40:
41: 42: 43:
44: public $model;
45:
46: 47: 48:
49: public $JSClass = 'RecordViewWidgetManager';
50:
51: public $namespace = 'RecordViewWidgetManager';
52:
53: public $widgetType = 'recordView';
54:
55: 56: 57:
58: public $widgetParamsByWidgetName = array ();
59:
60: 61: 62:
63: public function getPackages () {
64: if (!isset ($this->_packages)) {
65: $this->_packages = array_merge (parent::getPackages (), array (
66: 'RecordViewWidgetManagerJS' => array(
67: 'baseUrl' => Yii::app()->request->baseUrl,
68: 'js' => array(
69: 'js/sortableWidgets/RecordViewWidgetManager.js',
70: ),
71: 'depends' => array ('TwoColumnSortableWidgetManagerJS')
72: ),
73: ));
74: }
75: return $this->_packages;
76: }
77:
78: protected function getTranslations () {
79: if (!isset ($this->_translations )) {
80: $this->_translations = array_merge (parent::getTranslations (), array (
81: 'Create' => Yii::t('app', 'Create'),
82: 'Cancel' => Yii::t('app', 'Cancel'),
83: ));
84: }
85: return $this->_translations;
86: }
87:
88: public function getJSClassParams () {
89: if (!isset ($this->_JSClassParams)) {
90: $this->_JSClassParams = array_merge (parent::getJSClassParams (), array (
91: 'connectedContainerSelector' => '.'.$this->connectedContainerClass,
92: 'setSortOrderUrl' =>
93: Yii::app()->controller->createUrl ('/profile/setWidgetOrder'),
94: 'showWidgetContentsUrl' => Yii::app()->controller->createUrl (
95: '/profile/view', array ('id' => 1)),
96: 'modelId' => $this->model->id,
97: 'modelType' => get_class ($this->model),
98: 'cssSelectorPrefix' => $this->namespace,
99: 'widgetType' => $this->widgetType
100: ));
101: }
102: return $this->_JSClassParams;
103: }
104:
105: public function displayWidgets ($containerNumber){
106: $widgetLayoutName = $this->widgetLayoutName;
107: $layout =
108: Yii::app()->params->profile->$widgetLayoutName;
109:
110: foreach ($layout as $widgetClass => $settings) {
111: if (self::isExcluded ($widgetClass, get_class ($this->model))) continue;
112:
113: if ($settings['containerNumber'] == $containerNumber) {
114:
115: if (isset ($this->widgetParamsByWidgetName[$widgetClass])) {
116: $options = $this->widgetParamsByWidgetName[$widgetClass];
117: } else {
118: $options = array ();
119: }
120: $options = array_merge (array (
121: 'model' => $this->model,
122: 'widgetManager' => $this,
123: ), $options);
124: SortableWidget::instantiateWidget (
125: $widgetClass, Yii::app()->params->profile, $this->widgetType, $options);
126: }
127: }
128: }
129:
130: 131: 132:
133: public function instantiateJSClass ($onReady=true) {
134: Yii::app()->clientScript->registerScript (
135: $this->namespace.get_class ($this).'JSClassInstantiation',
136: ($onReady ? "$(function () {" : "").
137: $this->getJSObjectName ()."=
138: x2.".lcfirst ($this->JSClass)."= new x2.$this->JSClass (".
139: CJSON::encode ($this->getJSClassParams ()).
140: ");".
141: ($onReady ? "});" : ""), CClientScript::POS_END);
142: }
143:
144:
145: public static function isExcluded ($name, $modelType) {
146: if ($modelType === 'Topics' &&
147: !in_array ($name, array ('InlineTagsWidget', 'InlineRelationshipsWidget')) ||
148: ($modelType === 'Docs' ||
149: $modelType === 'Media' && (in_array ($name, array (
150: 'InlineTagsWidget',
151: 'WorkflowStageDetailsWidget',
152: 'ActionHistoryChartWidget',
153:
154: 'EmailsWidget',
155: 'QuotesWidget',
156: )))) ||
157: $modelType === 'Actions' && $name !== 'InlineTagsWidget' ||
158: $modelType !== 'Campaign' && $name === 'CampaignChartWidget' ||
159: ($modelType == 'BugReports' && $name!='WorkflowStageDetailsWidget') ||
160: ($modelType == 'Quote' && in_array ($name, array (
161: 'WorkflowStageDetailsWidget',
162: 'QuotesWidget',
163: ))) ||
164: ($modelType == 'Opportunity' && in_array ($name, array (
165: 'EmailsWidget',
166: ))) ||
167: ($modelType == 'Campaign' && in_array ($name, array (
168: 'WorkflowStageDetailsWidget',
169: 'InlineRelationshipsWidget',
170: 'EmailsWidget',
171: 'QuotesWidget',
172: ))) ||
173: ($modelType === 'Product' && in_array ($name, array (
174: 'WorkflowStageDetailsWidget',
175: 'QuotesWidget',
176: 'EmailsWidget',
177: )))) {
178:
179: return true;
180: } else {
181: return false;
182: }
183: }
184:
185:
186: }
187:
188: ?>
189: