protected function renderMergeTagsContent()
 {
     $title = ZurmoHtml::tag('h3', array(), Zurmo::t('Default', 'Merge Tags'));
     $view = new MergeTagsView('Campaign', Element::resolveInputIdPrefixIntoString(array(get_class($this->model), 'textContent')), Element::resolveInputIdPrefixIntoString(array(get_class($this->model), 'htmlContent')), false);
     $content = $view->render();
     return $title . $content;
 }
 /**
  * @return string
  */
 protected function renderAttributeIndexOrDerivedType()
 {
     $hiddenInputName = Element::resolveInputNamePrefixIntoString(array_merge($this->inputPrefixData, array('attributeIndexOrDerivedType')));
     $hiddenInputId = Element::resolveInputIdPrefixIntoString(array_merge($this->inputPrefixData, array('attributeIndexOrDerivedType')));
     $idInputHtmlOptions = array('id' => $hiddenInputId);
     return ZurmoHtml::hiddenField($hiddenInputName, $this->model->getAttributeIndexOrDerivedType(), $idInputHtmlOptions);
 }
Example #3
0
 protected function resolveId($model, $attribute)
 {
     $id = CHtml::activeId($model, $attribute);
     if ($this->inputPrefixData == null) {
         return $id;
     }
     $inputIdPrefix = Element::resolveInputIdPrefixIntoString($this->inputPrefixData);
     return str_replace(get_class($model), $inputIdPrefix, $id);
 }
 protected function registerStageToProbabilityMappingScript($form)
 {
     $stageInputId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), 'stage', 'value'));
     $probabilityInputId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), 'probability'));
     $mappingData = OpportunitiesModule::getStageToProbabilityMappingData();
     if (count($mappingData) > 0) {
         $jsonEncodedMapping = CJSON::encode($mappingData);
         Yii::app()->clientScript->registerScript('stageToProbabilityMapping', "\n                \$('#" . $stageInputId . "').unbind('change');\n                \$('#" . $stageInputId . "').bind('change', function()\n                    {\n                        stageToProbabilityMapping(\$(this));\n                    }\n                );\n                function stageToProbabilityMapping(stageInput)\n                {\n                    var value  = stageInput.val();\n                    var result = \$.parseJSON('" . $jsonEncodedMapping . "');\n                    \$('#" . $probabilityInputId . "').val(0);\n                    \$.each(result, function(stage, probability)\n                    {\n                        if (value == stage)\n                        {\n                            \$('#" . $probabilityInputId . "').val(probability);\n                            return false;\n                        }\n                    });\n                 }\n                 stageToProbabilityMapping(\$('#" . $stageInputId . "'));\n                ");
     }
 }
 protected function registerSetMeetingEndDateTimeScript($form)
 {
     $url = Yii::app()->createUrl($this->moduleId . '/' . $this->controllerId . '/getMeetingEndDateTimeBasedOnStartDateTime');
     $meetingStartDateTimeId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), 'startDateTime'));
     $meetingEndDateTimeId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), 'endDateTime'));
     // Fill endDateTime only for new meetings
     if ($this->model->id <= 0) {
         // Begin Not Coding Standard
         Yii::app()->clientScript->registerScript('SetMeetingEndDateTime', "\n                    \$('#" . $meetingStartDateTimeId . "').change(function()\n                    {\n                        \$.ajax(\n                        {\n                            url : '" . $url . "',\n                            type : 'GET',\n                            data : {\n                                startDateTime : \$('#" . $meetingStartDateTimeId . "').val()\n                            },\n                            dataType: 'json',\n                            success : function(data)\n                            {\n                                if (data['endDateTime'] && data['endDateTime'].length > 0)\n                                {\n                                    \$('#" . $meetingEndDateTimeId . "').val(data['endDateTime']);\n                                }\n                            },\n                            error : function()\n                            {\n                            }\n                        }\n                        );\n                    });\n                ");
         // End Not Coding Standard
     }
 }
 protected function registerStageToProbabilityMappingScript($form)
 {
     $stageInputId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), 'stage', 'value'));
     $probabilityInputId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), 'probability'));
     $mappingData = ContractsModule::getStageToProbabilityMappingData();
     if (count($mappingData) > 0) {
         $jsonEncodedMapping = CJSON::encode($mappingData);
         // In case of edit, we need the exact value from db
         if ($this->model->id > 0) {
             $initialCallToFunction = "";
         } else {
             $initialCallToFunction = " stageToProbabilityMapping(\$('#" . $stageInputId . "'));";
         }
         Yii::app()->clientScript->registerScript('stageToProbabilityMapping', "\n                \$('#" . $stageInputId . "').unbind('change.probabilityMapping');\n                \$('#" . $stageInputId . "').bind('change.probabilityMapping', function()\n                    {\n                        stageToProbabilityMapping(\$(this));\n                    }\n                );\n                function stageToProbabilityMapping(stageInput)\n                {\n                    var value  = stageInput.val();\n                    var result = \$.parseJSON('" . $jsonEncodedMapping . "');\n                    \$('#" . $probabilityInputId . "').val(0);\n                    \$.each(result, function(stage, probability)\n                    {\n                        if (value == stage)\n                        {\n                            \$('#" . $probabilityInputId . "').val(probability);\n                            return false;\n                        }\n                    });\n                 }\n                 " . $initialCallToFunction);
     }
 }
 /**
  * @return string
  */
 protected function renderHiddenStructurePositionInput()
 {
     $hiddenInputName = Element::resolveInputNamePrefixIntoString(array_merge($this->inputPrefixData, array('structurePosition')));
     $hiddenInputId = Element::resolveInputIdPrefixIntoString(array_merge($this->inputPrefixData, array('structurePosition')));
     $idInputHtmlOptions = array('id' => $hiddenInputId, 'class' => 'structure-position');
     return ZurmoHtml::hiddenField($hiddenInputName, $this->rowNumber + 1, $idInputHtmlOptions);
 }
 /**
  * Returns the input id that should be used to trigger the dedupe
  * @param Element $element
  * @return null|string
  */
 protected function getInputIdForDedupe(Element $element)
 {
     $interfaces = class_implements($element);
     if (in_array('MultipleAttributesElementInterface', $interfaces)) {
         return Element::resolveInputIdPrefixIntoString(array(get_class($this->model), $element->getAttribute(), $this->getRelatedAttributeForDedupe($element)));
     } else {
         return Element::resolveInputIdPrefixIntoString(array(get_class($this->model), $this->getAttributeForDedupe($element)));
     }
 }
 /**
  * Builds hidden operator input. Used in the event there is only one operator available. No reason to show
  * that in the user interface
  * @return string
  */
 protected function renderHiddenOperator()
 {
     if ($this->model->hasAvailableOperatorsType() && count($this->model->getOperatorValuesAndLabels()) == 1) {
         $hiddenInputName = Element::resolveInputNamePrefixIntoString(array_merge($this->inputPrefixData, array('operator')));
         $hiddenInputId = Element::resolveInputIdPrefixIntoString(array_merge($this->inputPrefixData, array('operator')));
         $idInputHtmlOptions = array('id' => $hiddenInputId);
         $valuesAndLabels = $this->model->getOperatorValuesAndLabels();
         return ZurmoHtml::hiddenField($hiddenInputName, key($valuesAndLabels), $idInputHtmlOptions);
     }
 }
 /**
  * @return string
  */
 protected function renderHiddenRecipientsInputForValidationContent()
 {
     $hiddenInputId = Element::resolveInputIdPrefixIntoString(array_merge($this->inputPrefixData, array('recipientsValidation')));
     $hiddenInputName = Element::resolveInputNamePrefixIntoString(array_merge($this->inputPrefixData, array('recipientsValidation')));
     $idInputHtmlOptions = array('id' => $hiddenInputId);
     $id = Element::resolveInputIdPrefixIntoString(array_merge($this->inputPrefixData, array('recipientsValidation')));
     $content = ZurmoHtml::hiddenField($hiddenInputName, null, $idInputHtmlOptions);
     $content .= $this->form->error($this->model, 'recipientsValidation', array('inputID' => $hiddenInputId), true, true, $id);
     return $content;
 }
 /**
  * @return string
  */
 protected function renderRelatedModelRelationHiddenInputContent()
 {
     $hiddenInputName = Element::resolveInputNamePrefixIntoString(array_merge($this->inputPrefixData, array('relatedModelRelation')));
     $hiddenInputId = Element::resolveInputIdPrefixIntoString(array_merge($this->inputPrefixData, array('relatedModelRelation')));
     $idInputHtmlOptions = array('id' => $hiddenInputId);
     return ZurmoHtml::hiddenField($hiddenInputName, $this->model->relatedModelRelation, $idInputHtmlOptions);
 }
 /**
  * @return A|string
  */
 protected function renderTypeContent()
 {
     $typeValuesAndLabels = $this->model->getTypeValuesAndLabels($this->isCreatingNewModel(), $this->isAttributeRequired);
     if (count($typeValuesAndLabels) > 1) {
         $params = array('inputPrefix' => $this->inputPrefixData, 'typeValuesAndLabels' => $typeValuesAndLabels);
         $typeElement = new WorkflowActionAttributeTypeStaticDropDownElement($this->model, 'type', $this->form, $params);
         $typeElement->editableTemplate = '{content}{error}';
         return $typeElement->render();
     } else {
         $label = reset($typeValuesAndLabels);
         $name = Element::resolveInputNamePrefixIntoString($this->inputPrefixData) . '[type]';
         $id = Element::resolveInputIdPrefixIntoString($this->inputPrefixData) . 'type';
         $htmlOptions = array('id' => $id);
         $content = ZurmoHtml::tag('span', array(), $label);
         $content .= ZurmoHtml::hiddenField($name, key($typeValuesAndLabels), $htmlOptions);
         return $content;
     }
 }
 protected function renderTypeContent()
 {
     $name = Element::resolveInputNamePrefixIntoString($this->inputPrefixData) . '[type]';
     $id = Element::resolveInputIdPrefixIntoString($this->inputPrefixData) . 'type';
     $htmlOptions = array('id' => $id);
     return ZurmoHtml::hiddenField($name, $this->emailMessageRecipientType, $htmlOptions);
 }
 /**
  * Resolves input id for the attribute
  * @param string $attribute
  * @param string $relatedAttribute
  * @return string
  */
 private function resolveInputId($attribute, $relatedAttribute = null)
 {
     assert('is_string($attribute)');
     assert('is_string($relatedAttribute) || ($relatedAttribute === null)');
     if ($this->model->{$attribute} instanceof CustomField) {
         $inputId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), $attribute, 'value'));
     } elseif ($relatedAttribute != null) {
         $inputId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), $attribute, $relatedAttribute));
     } else {
         $inputId = Element::resolveInputIdPrefixIntoString(array(get_class($this->model), $attribute));
     }
     return $inputId;
 }
Example #15
0
 public static function renderDynamicSearchAttributeInput($viewClassName, $modelClassName, $formModelClassName, $rowNumber, $attributeIndexOrDerivedType, $searchAttributes = array(), $suffix = null)
 {
     assert('is_string($viewClassName)');
     assert('is_string($modelClassName)');
     assert('is_string($formModelClassName)');
     assert('is_int($rowNumber)');
     assert('is_string($attributeIndexOrDerivedType) || $attributeIndexOrDerivedType == null');
     assert('is_array($searchAttributes)');
     assert('is_string($suffix) || $suffix == null');
     $content = null;
     if (count(explode(DynamicSearchUtil::RELATION_DELIMITER, $attributeIndexOrDerivedType)) > 1) {
         $model = new $modelClassName(false);
         $nestedAttributes = explode(DynamicSearchUtil::RELATION_DELIMITER, $attributeIndexOrDerivedType);
         $inputPrefix = array($formModelClassName, DynamicSearchForm::DYNAMIC_NAME, $rowNumber);
         $totalNestedCount = count($nestedAttributes);
         $processCount = 1;
         $nestedSearchAttributes = $searchAttributes;
         foreach ($nestedAttributes as $attribute) {
             if ($processCount < $totalNestedCount && isset($nestedSearchAttributes[$attribute])) {
                 $nestedSearchAttributes = $nestedSearchAttributes[$attribute];
                 if (isset($nestedSearchAttributes['relatedData'])) {
                     unset($nestedSearchAttributes['relatedData']);
                 }
             }
             if ($processCount < $totalNestedCount) {
                 $model = SearchUtil::resolveModelToUseByModelAndAttributeName($model, $attribute);
                 $inputPrefix[] = $attribute;
                 $relatedDataName = Element::resolveInputIdPrefixIntoString($inputPrefix) . '[relatedData]';
                 $content .= ZurmoHtml::hiddenField($relatedDataName, true);
             }
             $processCount++;
         }
         $attributeIndexOrDerivedType = $attribute;
         $modelToUse = $model;
         $modelToUse->setAttributes($nestedSearchAttributes);
         $cellElementModelClassName = get_class($model->getModel());
         //Dynamic Search needs to always assume there is an available SearchForm
         //Always assumes the SearchView to use matches the exact pluralCamelCasedName.
         //Does not support nested relations to leads persay.  It will resolve as a Contact.
         //This is not a problem since you can't relate a model to a lead, it is related to a contact.
         //So this scenario would not come up naturally.
         $moduleClassName = $model->getModel()->getModuleClassName();
         $viewClassName = $moduleClassName::getPluralCamelCasedName() . 'SearchView';
         $element = DynamicSearchUtil::getCellElement($viewClassName, $cellElementModelClassName, $attributeIndexOrDerivedType);
     } else {
         $model = new $modelClassName(false);
         $model->setScenario('importModel');
         //this is so attributes such as modified user can be set
         $modelToUse = new $formModelClassName($model);
         $modelToUse->setAttributes($searchAttributes);
         $inputPrefix = array($formModelClassName, DynamicSearchForm::DYNAMIC_NAME, $rowNumber);
         $element = DynamicSearchUtil::getCellElement($viewClassName, $modelClassName, $attributeIndexOrDerivedType);
     }
     $form = new NoRequiredsActiveForm();
     $element['inputPrefix'] = $inputPrefix;
     $elementclassname = $element['type'] . 'Element';
     $element = new $elementclassname($modelToUse, $element['attributeName'], $form, array_slice($element, 2));
     $element->editableTemplate = '{content}{error}';
     $content .= $element->render();
     DropDownUtil::registerScripts(CClientScript::POS_END);
     return $content;
 }