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 [email protected].
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: * Class for displaying the "Quick Contact" widget
39: *
40: * @package application.components
41: */
42: class QuickContact extends X2Widget {
43:
44: public $visibility;
45: public function init() {
46: parent::init();
47: }
48:
49: public function renderContactFields($model) {
50: $defaultFields = X2Model::model('Fields')->findAllByAttributes(
51: array('modelName' => 'Contacts'),
52: array(
53: 'condition' => "fieldName IN ('firstName', 'lastName', 'email', 'phone')",
54: )
55: );
56: $requiredFields = X2Model::model('Fields')->findAllByAttributes(
57: array(
58: 'modelName' => 'Contacts',
59: 'required' => 1,
60: ), array(
61: 'condition' => "fieldName NOT IN ('firstName', 'lastName', 'phone', 'email', 'visibility')"
62: ));
63: $i = 0;
64: $fields = array_merge($requiredFields, $defaultFields);
65: foreach ($fields as $field) {
66: if ($field->type === 'boolean') {
67: $class = "";
68: echo "<div>";
69: } else {
70: $class = (($field->fieldName === 'firstName' || $field->fieldName === 'lastName') ?
71: 'quick-contact-narrow' : 'quick-contact-wide');
72: }
73:
74: $htmlAttr = array(
75: 'class' => $class,
76: 'tabindex'=>100 + $i,
77: 'title'=>$field->attributeLabel,
78: 'id'=>'quick_create_'.$field->modelName.'_'.$field->fieldName,
79: );
80:
81: if ($field->type === 'boolean') {
82: echo CHtml::label($field->attributeLabel, $htmlAttr['id']);
83: }
84: echo X2Model::renderModelInput ($model, $field, $htmlAttr);
85: if ($field->type === 'boolean')
86: echo "</div>";
87:
88: ++$i;
89: }
90: }
91:
92: public function run() {
93: $model = new Contacts;
94: $this->render('quickContact', array (
95: 'model' => $model
96: ));
97: }
98: }
99:
100: