_section) { return; } // Check role based permission. $instanceID = $form->getVar('_id'); if ($instanceID && !CRM_Report_Utils_Report::isInstanceGroupRoleAllowed($instanceID)) { $url = CRM_Utils_System::url('civicrm/report/list', 'reset=1'); CRM_Core_Error::statusBounce(ts('You do not have permission to access this report.'), $url ); } $attributes = CRM_Core_DAO::getAttribute('CRM_Report_DAO_ReportInstance'); $form->add('text', 'title', ts('Report Title'), $attributes['title'] ); $form->add('text', 'description', ts('Report Description'), $attributes['description'] ); $form->add('text', 'email_subject', ts('Subject'), $attributes['email_subject'] ); $form->add('text', 'email_to', ts('To'), $attributes['email_to'] ); $form->add('text', 'email_cc', ts('CC'), $attributes['email_subject'] ); $form->add('text', 'row_count', ts('Limit Dashboard Results'), array( 'maxlength' => 64, 'size' => 5, ) ); $form->add('textarea', 'report_header', ts('Report Header'), $attributes['header'] ); $form->add('textarea', 'report_footer', ts('Report Footer'), $attributes['footer'] ); $form->addElement('checkbox', 'is_navigation', ts('Include Report in Navigation Menu?'), NULL, array('onclick' => "return showHideByValue('is_navigation','','navigation_menu','table-row','radio',false);") ); $form->addElement('select', 'view_mode', ts('Configure link to...'), array( 'view' => ts('View Results'), 'criteria' => ts('Show Criteria'), )); $form->addElement('checkbox', 'addToDashboard', ts('Available for Dashboard?'), NULL, array('onclick' => "return showHideByValue('addToDashboard','','limit_result','table-row','radio',false);")); $form->addElement('checkbox', 'is_reserved', ts('Reserved Report?')); if (!CRM_Core_Permission::check('administer reserved reports')) { $form->freeze('is_reserved'); } $config = CRM_Core_Config::singleton(); if ($config->userFramework != 'Joomla' || $config->userFramework != 'WordPress' ) { $form->addElement('select', 'permission', ts('Permission'), array('0' => ts('Everyone (includes anonymous)')) + CRM_Core_Permission::basicPermissions() ); // prepare user_roles to save as names not as ids if (function_exists('user_roles')) { $user_roles_array = user_roles(); foreach ($user_roles_array as $key => $value) { $user_roles[$value] = $value; } $grouprole = &$form->addElement('advmultiselect', 'grouprole', ts('ACL Group/Role'), $user_roles, array( 'size' => 5, 'style' => 'width:240px', 'class' => 'advmultiselect', ) ); $grouprole->setButtonAttributes('add', array('value' => ts('Add >>'))); $grouprole->setButtonAttributes('remove', array('value' => ts('<< Remove'))); } } // navigation field $parentMenu = CRM_Core_BAO_Navigation::getNavigationList(); $form->add('select', 'parent_id', ts('Parent Menu'), array('' => ts('- select -')) + $parentMenu); // For now we only providing drilldown for one primary detail report only. In future this could be multiple reports foreach ($form->_drilldownReport as $reportUrl => $drillLabel) { $instanceList = CRM_Report_Utils_Report::getInstanceList($reportUrl); if (count($instanceList) > 1) { $form->add('select', 'drilldown_id', $drillLabel, array('' => ts('- select -')) + $instanceList); } break; } $form->addButtons(array( array( 'type' => 'submit', 'name' => ts('Save Report'), 'isDefault' => TRUE, ), array( 'type' => 'cancel', 'name' => ts('Cancel'), ), ) ); $form->addFormRule(array('CRM_Report_Form_Instance', 'formRule'), $form); } /** * Add form rules. * * @param array $fields * @param array $errors * @param CRM_Report_Form_Instance $self * * @return array|bool */ public static function formRule($fields, $errors, $self) { // Validate both the "next" and "save" buttons for creating/updating a report. $nextButton = $self->controller->getButtonName(); $saveButton = str_replace('_next', '_save', $nextButton); $clickedButton = $self->getVar('_instanceButtonName'); $errors = array(); if ($clickedButton == $nextButton || $clickedButton == $saveButton) { if (empty($fields['title'])) { $errors['title'] = ts('Title is a required field.'); $self->assign('instanceFormError', TRUE); } } return empty($errors) ? TRUE : $errors; } /** * Set default values. * * @param CRM_Core_Form $form * @param array $defaults */ public static function setDefaultValues(&$form, &$defaults) { // we should not build form elements in dashlet mode. if ($form->_section) { return; } $instanceID = $form->getVar('_id'); $navigationDefaults = array(); if (!isset($defaults['permission'])) { $permissions = array_flip(CRM_Core_Permission::basicPermissions()); $defaults['permission'] = $permissions['CiviReport: access CiviReport']; } $config = CRM_Core_Config::singleton(); $defaults['report_header'] = $report_header = "
userFrameworkResourceURL}i/powered_by.png\" />