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: abstract class ActionActiveFormBase extends X2ActiveForm {
38:
39: public $JSClass = 'ActionActiveFormBase';
40:
41: public function init () {
42: $this->action = Yii::app()->createUrl ('/actions/actions/create');
43: $this->htmlOptions = X2Html::mergeHtmlOptions ($this->htmlOptions, array (
44: 'class' => 'action-subtype-form',
45: ));
46: return parent::init ();
47: }
48:
49: public function getPackages () {
50: if (!isset ($this->_packages)) {
51: $this->_packages = array_merge (parent::getPackages (), array(
52: 'ActionActiveFormBaseCss' => array(
53: 'baseUrl' => Yii::app ()->getModule ('actions')->assetsUrl,
54: 'css' => array(
55: 'css/actionForms.css',
56: ),
57: ),
58: 'ActionActiveFormBaseJS' => array(
59: 'baseUrl' => Yii::app ()->getModule ('actions')->assetsUrl,
60: 'js' => array(
61: 'js/ActionActiveFormBase.js',
62: ),
63: 'depends' => array ('X2FormJS'),
64: ),
65: ));
66: }
67: return $this->_packages;
68: }
69:
70: public function getJSClassParams () {
71: return array_merge (parent::getJSClassParams (), array (
72: 'ajaxForm' => true,
73: ));
74: }
75:
76: public function submitButton (array $htmlOptions=array ()) {
77: $html = '<div class="row button-row">';
78: $htmlOptions = X2Html::mergeHtmlOptions ($htmlOptions, array (
79: 'class' => 'x2-button',
80: ));
81: $html .= X2Html::submitButton (Yii::t('actions', 'Save'), $htmlOptions);
82: $html .= '</div>';
83: return $html;
84: }
85:
86: public function dateRangeInput (
87: CModel $model, $attributeA, $attributeB, array $options = array ()) {
88:
89: return $this->widget ('ActiveDateRangeInput', array (
90: 'model' => $model,
91: 'startDateAttribute' => $attributeA,
92: 'endDateAttribute' => $attributeB,
93: 'namespace' => get_class ($this->formModel).$this->namespace,
94: 'options' => $options,
95: ), true);
96: }
97:
98: public function renderInput (CModel $model, $attribute, array $htmlOptions=array ()) {
99: $action = new Actions;
100: $action->setAttributes ($model->getAttributes (), false);
101: $defaultOptions = array (
102: 'id' => $this->resolveId ($attribute),
103: );
104: $htmlOptions = X2Html::mergeHtmlOptions ($defaultOptions, $htmlOptions);
105: return preg_replace (
106: '/Actions(\[[^\]]*\])/', get_class ($this->formModel) . '$1',
107: $action->renderInput ($attribute, $htmlOptions));
108: }
109:
110: }
111:
112: ?>
113: