protected function renderCheckboxWithHiddenInput($label, $attribute, $renderHidden = false) { $checkboxLabelFor = $attribute; if ($renderHidden) { $attribute = $this->resolveCheckboxInputAttributeName($attribute); $checkboxLabelFor = ZurmoHtml::activeId($this->model, $attribute); } $checkboxLabelHtmlOptions = array(); $checkboxLabel = ZurmoHtml::label($label, $checkboxLabelFor, $checkboxLabelHtmlOptions); $checkboxHtmlOptions = $this->resolveCheckBoxHtmlOptions($renderHidden); $content = null; if ($renderHidden) { $content .= $this->form->checkBox($this->model, $attribute, $checkboxHtmlOptions); } else { $content .= ZurmoHtml::checkBox($attribute, false, $checkboxHtmlOptions); } $content .= $checkboxLabel; return $content; }
public function actionValidateSendTestEmail() { $this->throwAccessDeniedExceptionIfModuleIsInaccessible(); if (!Yii::app()->request->isPostRequest) { throw new CHttpException(400); } $form = new SendTestEmailForm(); $ajax = Yii::app()->request->getPost('ajax'); if ($ajax == 'send-test-form') { $form->setAttributes($_POST[get_class($form)]); $errorData = array(); if (!$form->validate()) { foreach ($form->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($form, $attribute)] = $errors; } } echo CJSON::encode($errorData); } Yii::app()->end(0, false); }
/** * Override to allow for optional live binding of yiiactiveform. @see $bindAsLive. */ public function run() { if (is_array($this->focus)) { $this->focus = "#" . ZurmoHtml::activeId($this->focus[0], $this->focus[1]); } echo ZurmoHtml::endForm(); $cs = Yii::app()->clientScript; $cs->registerScriptFile(Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('ext.zurmoinc.framework.views.assets')) . '/FormUtils.js', CClientScript::POS_END); if (!$this->enableAjaxValidation && !$this->enableClientValidation || empty($this->attributes)) { if ($this->focus !== null) { $cs->registerCoreScript('jquery'); $cs->registerScript('CActiveForm#focus', "\n if (!window.location.hash)\n { \$('" . $this->focus . "').focus(); }\n "); } return; } $options = $this->clientOptions; if (isset($this->clientOptions['validationUrl']) && is_array($this->clientOptions['validationUrl'])) { $options['validationUrl'] = ZurmoHtml::normalizeUrl($this->clientOptions['validationUrl']); } $options['attributes'] = array_values($this->attributes); if ($this->summaryID !== null) { $options['summaryID'] = $this->summaryID; } if ($this->focus !== null) { $options['focus'] = $this->focus; } $options = CJavaScript::encode($options); //Not registering via coreScript because it does not properly register when using ajax non-minified //on home page myList config view. Needs a better solution $cs->registerScriptFile(Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('system.web.js.source')) . '/jquery.yii.js', CClientScript::POS_END); $cs->registerScriptFile(Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('system.web.js.source')) . '/jquery.yiiactiveform.js', CClientScript::POS_END); $id = $this->id; if ($this->bindAsLive) { $cs->registerScript(__CLASS__ . '#' . $id, "\$('#{$id}').live('focus', function(e)\n {\n if (\$(this).data('settings') == undefined)\n {\n \$(this).yiiactiveform({$options});\n }\n });\n "); } else { $cs->registerScript(__CLASS__ . '#' . $id, "\$('#{$id}').yiiactiveform({$options});"); } }
protected function actionValidatePopulateContactEmailBeforeCreating($postData, ContactPrimaryEmailForm $contactForm) { if (isset($postData['ajax']) && $postData['ajax'] == 'edit-form') { $contactForm->setAttributes($postData[get_class($contactForm)]); if ($contactForm->validate()) { Yii::app()->end(false); } else { $errorData = array(); foreach ($contactForm->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($contactForm, $attribute)] = $errors; } echo CJSON::encode($errorData); } Yii::app()->end(false); } }
public static function validateEditableForm() { $builderModelForm = Yii::app()->request->getPost(BaseBuilderElement::getModelClassName()); if (isset($builderModelForm['properties'])) { $properties = $builderModelForm['properties']; } else { $properties = array(); } if (isset($builderModelForm['content'])) { $content = $builderModelForm['content']; } else { $content = array(); } if (is_string($content)) { $content = CJSON::decode($content); } $modelForm = new BuilderElementEditableModelForm($content, $properties); $errorData = array(); $modelForm->setAttributes($builderModelForm); if (!$modelForm->validate()) { foreach ($modelForm->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($modelForm, $attribute)] = $errors; } } echo CJSON::encode($errorData); Yii::app()->end(0, false); }
protected function renderHiddenField(&$hiddenElements, $attributeName, $value = null) { $hiddenElements .= ZurmoHtml::hiddenField(ZurmoHtml::activeName($this->model, $attributeName), $value, array('id' => ZurmoHtml::activeId($this->model, $attributeName))); }
public function actionApplyRuntimeFilters($id) { $postData = PostUtil::getData(); $savedReport = SavedReport::getById((int) $id); ControllerSecurityUtil::resolveCanCurrentUserAccessModule($savedReport->moduleClassName); ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($savedReport); $report = SavedReportToReportAdapter::makeReportBySavedReport($savedReport); $wizardFormClassName = ReportToWizardFormAdapter::getFormClassNameByType($report->getType()); if (!isset($postData[$wizardFormClassName])) { throw new NotSupportedException(); } DataToReportUtil::resolveFilters($postData[$wizardFormClassName], $report, true); if (isset($postData['ajax']) && $postData['ajax'] == 'edit-form') { $adapter = new ReportToWizardFormAdapter($report); $reportWizardForm = $adapter->makeFormByType(); $reportWizardForm->setScenario(reportWizardForm::FILTERS_VALIDATION_SCENARIO); if (!$reportWizardForm->validate()) { $errorData = array(); foreach ($reportWizardForm->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($reportWizardForm, $attribute)] = $errors; } echo CJSON::encode($errorData); Yii::app()->end(0, false); } } $filtersData = ArrayUtil::getArrayValue($postData[$wizardFormClassName], ComponentForReportForm::TYPE_FILTERS); $sanitizedFiltersData = DataToReportUtil::sanitizeFiltersData($report->getModuleClassName(), $report->getType(), $filtersData); $stickyData = array(ComponentForReportForm::TYPE_FILTERS => $sanitizedFiltersData); StickyReportUtil::setDataByKeyAndData($report->getId(), $stickyData); }
/** * Validates report wizard form against the post data * @param type $postData * @param ReportWizardForm $model * @throws NotSupportedException */ public static function validateReportWizardForm($postData, ReportWizardForm $model) { if (isset($postData['validationScenario']) && $postData['validationScenario'] != null) { $model->setScenario($postData['validationScenario']); } else { throw new NotSupportedException(); } $model->validate(); $errorData = array(); foreach ($model->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($model, $attribute)] = $errors; } return $errorData; }
protected function registerSendTestEmailScriptsForEditView() { $scriptName = $this->modelClassName . '-compile-send-test-email-data-for-campaign-edit-view'; if (Yii::app()->clientScript->isScriptRegistered($scriptName)) { return; } else { $functionName = SendTestEmailModalEditView::COMPILE_SEND_TEST_EMAIL_DATA_JS_FUNCTION_NAME; // Begin Not Coding Standard Yii::app()->clientScript->registerScript($scriptName, "\n window.{$functionName} = function ()\n {\n var testData = {\n fromName : \$('#" . ZurmoHtml::activeId($this->model, 'fromName') . "').val(),\n fromAddress : \$('#" . ZurmoHtml::activeId($this->model, 'fromAddress') . "').val(),\n subject : \$('#" . ZurmoHtml::activeId($this->model, 'subject') . "').val(),\n textContent : \$('#" . ZurmoHtml::activeId($this->model, 'textContent') . "').val(),\n htmlContent : \$('#" . ZurmoHtml::activeId($this->model, 'htmlContent') . "').val(),\n marketingListId : \$('#" . ZurmoHtml::activeId($this->model, '_marketingList_id') . "').val(),\n enableTracking : \$('input:checkbox[name*=enableTracking]').prop('checked') ? 1 : 0,\n supportsRichText : \$('input:checkbox[name*=supportsRichText]').prop('checked') ? 1 : 0,\n attachmentIds\t : new Array()\n };\n \$(':input[name*=filesIds]').each(function()\n {\n testData.attachmentIds.push(\$(this).val());\n });\n return testData;\n }\n "); // End Not Coding Standard } }
protected function registerTrashSomeDataOnModuleChangeScript() { if (!$this->model->isWorkflowTemplate()) { return; } // Begin Not Coding Standard Yii::app()->clientScript->registerScript('trashSomeDataOnModuleChangeScript', "\n \$('" . $this->resolveModuleClassNameJQuerySelector() . "').unbind('change.trashSomeDataOnModuleChange')\n .bind('change.trashSomeDataOnModuleChange', function()\n {\n \$('#" . ZurmoHtml::activeId($this->model, 'textContent') . "').val('');\n if (" . intval($this->model->isPastedHtmlTemplate()) . ")\n {\n var htmlContentElement = \$('#" . ZurmoHtml::activeId($this->model, 'htmlContent') . "');\n \$(htmlContentElement).redactor('set', '');\n }\n\n else if (" . intval($this->model->isBuilderTemplate()) . ")\n {\n \$('" . $this->resolveIsDraftHiddenInputJQuerySelector() . "').val(1);\n resetBaseTemplateId();\n resetOriginalBaseBaseTemplateId();\n resetSerializedDomData();\n \$('#" . SelectBaseTemplateForEmailTemplateWizardView::TEMPLATES_DIV_ID . "').find('.pills').children(':first').click();\n }\n });\n "); // End Not Coding Standard }
/** * Render sendgrid editable text field * @param CModel $model * @param CFormModel $form * @param string $attribute * @param boolean $isPassword * @return string */ public function renderSendGridEditableTextField($model, $form, $attribute, $isPassword = false) { $id = ZurmoHtml::activeId($model, $attribute); $name = ZurmoHtml::activeName($model, $attribute); $htmlOptions = array('name' => $name, 'id' => $id); $label = $form->labelEx($model, $attribute, array('for' => $id)); if (!$isPassword) { $textField = $form->textField($model, $attribute, $htmlOptions); } else { $textField = $form->passwordField($model, $attribute, $htmlOptions); } $error = $form->error($model, $attribute); return '<div>' . $label . $textField . $error . '</div>'; }
protected function actionValidate($postData, EmailTemplateWizardForm $model) { if (isset($postData['validationScenario']) && $postData['validationScenario'] != null) { $model->setScenario($postData['validationScenario']); } else { throw new NotSupportedException(); } $errorData = array(); $validated = $model->validate(); if ($validated === false) { foreach ($model->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($model, $attribute)] = $errors; } } echo CJSON::encode($errorData); Yii::app()->end(0, false); }
protected function attemptToValidateAjaxFromPost($model, $postVariableName) { if (isset($_POST['ajax']) && $_POST['ajax'] == 'edit-form') { $model->setAttributes($_POST[$postVariableName]); $model->validate(); $errorData = array(); foreach ($model->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($model, $attribute)] = $errors; } echo CJSON::encode($errorData); Yii::app()->end(0, false); } }
public function actionValidateDynamicSearch($viewClassName, $modelClassName, $formModelClassName) { if (isset($_POST['ajax']) && $_POST['ajax'] === 'search-form' && isset($_POST[$formModelClassName])) { $model = new $modelClassName(false); $model->setScenario('searchModel'); $searchForm = new $formModelClassName($model); $sourceData = $_POST; if (isset($_POST[$formModelClassName][SearchForm::ANY_MIXED_ATTRIBUTES_SCOPE_NAME])) { $searchForm->setAnyMixedAttributesScope($_POST[$formModelClassName][SearchForm::ANY_MIXED_ATTRIBUTES_SCOPE_NAME]); unset($_POST[$formModelClassName][SearchForm::ANY_MIXED_ATTRIBUTES_SCOPE_NAME]); } if (isset($_POST[$formModelClassName][SearchForm::SELECTED_LIST_ATTRIBUTES])) { $listAttributesSelector = new ListAttributesSelector($viewClassName, $model->getModuleClassName(), $modelClassName); $listAttributesSelector->setSelected($_POST[$formModelClassName][SearchForm::SELECTED_LIST_ATTRIBUTES]); $searchForm->setListAttributesSelector($listAttributesSelector); unset($_POST[$formModelClassName][SearchForm::SELECTED_LIST_ATTRIBUTES]); } if (isset($_POST[$formModelClassName]['filterByStarred'])) { $searchForm->filterByStarred = $_POST[$formModelClassName]['filterByStarred']; unset($_POST[$formModelClassName]['filterByStarred']); } if (isset($_POST[$formModelClassName][KanbanBoard::GROUP_BY_ATTRIBUTE_VISIBLE_VALUES])) { unset($_POST[$formModelClassName][KanbanBoard::GROUP_BY_ATTRIBUTE_VISIBLE_VALUES]); } if (isset($_POST[$formModelClassName][KanbanBoard::SELECTED_THEME])) { unset($_POST[$formModelClassName][KanbanBoard::SELECTED_THEME]); } if (isset($_POST[$formModelClassName]['filteredBy'])) { $searchForm->filterByStarred = $_POST[$formModelClassName]['filteredBy']; unset($_POST[$formModelClassName]['filteredBy']); } $sanitizedSearchData = $this->resolveAndSanitizeDynamicSearchAttributesByPostData($_POST[$formModelClassName], $searchForm); $searchForm->setAttributes($sanitizedSearchData); if (isset($_POST['save']) && $_POST['save'] == 'saveSearch') { $searchForm->setScenario('validateSaveSearch'); if ($searchForm->validate()) { $savedSearch = $this->processSaveSearch($searchForm, $viewClassName); echo CJSON::encode(array('id' => $savedSearch->id, 'name' => $savedSearch->name, 'sortAttribute' => $this->getSortAttributeFromSavedSearchData($savedSearch), 'sortDescending' => $this->getSortDescendingFromSavedSearchData($savedSearch))); Yii::app()->end(0, false); } } else { $searchForm->setScenario('validateDynamic'); } if (!$searchForm->validate()) { $errorData = array(); foreach ($searchForm->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($searchForm, $attribute)] = $errors; } echo CJSON::encode($errorData); Yii::app()->end(0, false); } $this->setStickyData($searchForm, $viewClassName, true, $sourceData); } }
/** * Resolve Ajax options for when clicking apply on editable form. * @return array */ protected function resolveAjaxPostForApplyClickAjaxOptions() { $hiddenInputId = ZurmoHtml::activeId($this->model, 'id'); $message = Zurmo::t('EmailTemplatesModule', 'There was an error applying changes'); $ajaxArray = ComponentForEmailTemplateWizardView::resolveErrorAjaxCallback($message); //$ajaxArray['cache'] = 'false'; //todo: should by default be used. $ajaxArray['url'] = $this->resolveFormActionUrl(); $ajaxArray['type'] = 'POST'; // Begin Not Coding Standard $ajaxArray['data'] = 'js:$("#' . $this->resolveApplyLinkId() . '").closest("form").serialize()'; $ajaxArray['beforeSend'] = "js:function()\n {\n emailTemplateEditor.freezeLayoutEditor();\n }"; $ajaxArray['success'] = "js:function (html)\n {\n var replaceElementId = \$('#" . $hiddenInputId . "').val();\n var replaceElementInIframe = \$('#" . BuilderCanvasWizardView::CANVAS_IFRAME_ID . "')\n .contents().find('#' + replaceElementId).parent();\n replaceElementInIframe.replaceWith(html);\n " . $this->getAjaxScriptForInitSortableElements() . "\n emailTemplateEditor.unfreezeLayoutEditor();\n emailTemplateEditor.canvasChanged();\n emailTemplateEditor.addPlaceHolderForEmptyCells();\n }"; // End Not Coding Standard return $ajaxArray; }
protected function registerSendTestEmailScriptsForWizardView() { $scriptName = 'compile-send-test-email-data-for-email-template-wizard-view'; if (Yii::app()->clientScript->isScriptRegistered($scriptName)) { return; } else { $functionName = SendTestEmailModalEditView::COMPILE_SEND_TEST_EMAIL_DATA_JS_FUNCTION_NAME; // Begin Not Coding Standard Yii::app()->clientScript->registerScript($scriptName, "\n window.{$functionName} = function ()\n {\n var testData = {\n subject : \$('#" . ZurmoHtml::activeId($this->model, 'subject') . "').val(),\n textContent : \$('#" . ZurmoHtml::activeId($this->model, 'textContent') . "').val(),\n language : \$('#" . ZurmoHtml::activeId($this->model, 'language') . "').val(),\n type : \$('#" . ZurmoHtml::activeId($this->model, 'type') . "').val(),\n attachmentIds : new Array()\n };\n \$(':input[name*=filesIds]').each(function()\n {\n testData.attachmentIds.push(\$(this).val());\n });\n if (" . intval($this->model->isPastedHtmlTemplate()) . ")\n {\n testData.htmlContent = \$('#" . ZurmoHtml::activeId($this->model, 'htmlContent') . "').val();\n }\n else if (" . intval($this->model->isBuilderTemplate()) . ")\n {\n testData.serializedData = JSON.stringify({dom: \$.parseJSON(emailTemplateEditor.compileSerializedData())});\n }\n return testData;\n }\n "); // End Not Coding Standard } }
protected function actionValidateSettings($model) { $model->setAttributes($_POST[get_class($model)]); $model->validate(); $errorData = array(); foreach ($model->getErrors() as $attribute => $errors) { $errorData[ZurmoHtml::activeId($model, $attribute)] = $errors; } echo CJSON::encode($errorData); Yii::app()->end(0, false); }
public static function resolveOriginalBaseTemplateIdHiddenInputJQuerySelector() { $id = ZurmoHtml::activeId(new BuilderEmailTemplateWizardForm(), 'originalBaseTemplateId'); return '#' . $id; }
/** * Resolve id for a given property * @param CModel $model * @param $property * @param bool $doNotWrapInSquareBrackets * @return string */ public static function resolveAttributeId(CModel $model, $property, $doNotWrapInSquareBrackets = false) { static::resolvePropertyWithSquareBrackets($property, $doNotWrapInSquareBrackets); $attribute = static::resolveAttributeName($property); $attribute = ZurmoHtml::activeId($model, $attribute); return $attribute; }