40 abstract protected function getWidgetValue();
42 abstract protected function getSource();
44 abstract protected function getOptions();
52 $cClipWidget =
new CClipWidget();
53 $clipId = $this->getWidgetClipName();
54 $cClipWidget->beginClip($clipId);
55 $cClipWidget->widget(
'zii.widgets.jui.CJuiAutoComplete', array(
56 'name' => $this->getWidgetName(),
57 'id' => $this->getWidgetId(),
58 'value' => $this->getWidgetValue(),
59 'source' => $this->getSource(),
60 'options' => $this->getOptions(),
61 'htmlOptions' => $this->getHtmlOptions(),
64 $cClipWidget->endClip();
65 $content = $cClipWidget->getController()->clips[$clipId];
66 $content .= $this->renderSelectLink();
70 protected function getWidgetId()
75 protected function getWidgetClipName()
77 return get_class($this);
80 protected function getWidgetName()
85 protected function renderSelectLink()
87 if (!$this->shouldRenderSelectLink())
91 $cs = Yii::app()->getClientScript();
92 $cs->registerCoreScript(
'bbq');
93 $cs->registerScriptFile(
94 Yii::app()->getAssetManager()->publish(
95 Yii::getPathOfAlias(
'application.core.elements.assets')
97 CClientScript::POS_END
99 $this->registerSelectLinkScripts();
100 $content = ZurmoHtml::openTag(
'div', array(
'class' =>
'has-model-select'));
101 $content .= ZurmoHtml::hiddenField($this->getNameForHiddenSelectLinkField());
103 Yii::app()->createUrl($this->getSourceUrlForSelectLink(), $this->getSelectLinkUrlParams()),
104 $this->resolveAjaxOptionsForSelectingModel(),
105 array(
'id' => $this->getWidgetId() .
'-select-link')
107 $content .= ZurmoHtml::closeTag(
'div');
111 protected function getSourceUrlForSelectLink()
116 protected function getSelectLinkUrlParams()
119 'modalTransferInformation' => $this->getModalTransferInformation(),
123 protected function getModalTransferInformation()
126 'sourceIdFieldId' => $this->getIdForHiddenSelectLinkField(),
127 'sourceNameFieldId' => $this->getWidgetId(),
128 'modalId' => $this->getModalContainerId(),
132 protected function getIdForHiddenSelectLinkField()
134 return ZurmoHtml::getIdByName($this->getNameForHiddenSelectLinkField());
137 protected function getNameForHiddenSelectLinkField()
142 protected function resolveAjaxOptionsForSelectingModel()
144 $title = $this->getModalTitleForSelectingModel();
145 return ModalView::getAjaxOptionsForModalLink($title, $this->getModalContainerId());
148 protected function getModalContainerId()
150 return 'modalContainer';
153 protected function getModalTitleForSelectingModel()
158 protected function registerSelectLinkScripts()
160 $scriptName = $this->getWidgetId() .
'-transfer-script';
161 if (Yii::app()->clientScript->isScriptRegistered($scriptName))
167 $selectLinkId = $this->getWidgetId() .
'-select-link';
169 Yii::app()->clientScript->registerScript($scriptName,
"
170 $('#{$selectLinkId}').off();
171 $('#{$this->getIdForHiddenSelectLinkField()}').change(function(event){
172 {$this->getAfterChangeSelectIdScript()}
179 protected function getAfterChangeSelectIdScript()
184 protected function shouldRenderSelectLink()
186 if (isset($this->params[
'shouldRenderSelectLink']))
188 return $this->params[
'shouldRenderSelectLink'];
190 return $this->shouldRenderSelectLinkDefault();
193 protected function shouldRenderSelectLinkDefault()
static ajaxLink($text, $url, $ajaxOptions=array(), $htmlOptions=array())
getEditableInputName($attributeName=null, $relationAttributeName=null)
getEditableInputId($attributeName=null, $relationAttributeName=null)