2 +--------------------------------------------------------------------+
3 | Copyright CiviCRM LLC. All rights reserved. |
5 | This work is published under the GNU AGPLv3 license with some |
6 | permitted exceptions and without any warranty. For full license |
7 | and copyright information, see https://civicrm.org/licensing |
8 +--------------------------------------------------------------------+
12 <div class="messages status no-popup">
13 {icon icon="fa-info-circle"}{/icon}
17 <div class="action-link">
18 {crmButton p='civicrm/survey/add' q='reset=1' h=0 icon="plus-circle"}{ts}Add Survey{/ts}{/crmButton}
21 {elseif $buildSelector}
23 {* use to display result set of survey *}
24 <div id="survey-result-set-dialog" class="hiddenElement"></div>
26 {* load survey selector *}
27 {include file="CRM/common/enableDisableApi.tpl"}
30 <script type="text/javascript">
37 <table class="surveys">
39 <tr class="columnheader">
40 <th class="hiddenElement">{ts}Survey ID{/ts}</th>
41 <th>{ts}Title{/ts}</th>
42 <th class="hiddenElement">{ts}Campaign ID{/ts}</th>
43 <th>{ts}Campaign{/ts}</th>
44 <th class="hiddenElement">{ts}Survey Type ID{/ts}</th>
45 <th>{ts}Survey Type{/ts}</th>
46 <th>{ts}Release Frequency{/ts}</th>
47 <th>{ts}Reserve Each Time{/ts}</th>
48 <th>{ts}Total Reserve{/ts}</th>
49 <th>{ts}Default?{/ts}</th>
50 <th class="hiddenElement">{ts}Is Active?{/ts}</th>
51 <th>{ts}Active?{/ts}</th>
62 <div class="action-link">
63 {crmButton p='civicrm/survey/add' q='reset=1' h=0 icon="plus-circle"}{ts}Add Survey{/ts}{/crmButton}
66 {* build search form here *}
68 {* Search form and results for surveys *}
69 <div class="crm-block crm-form-block crm-search-form-block">
70 {assign var='searchForm' value="search_form_$searchFor"}
72 <div id="{$searchForm}" class="crm-accordion-wrapper crm-survey_search_form-accordion{if $force and !$buildSelector} collapsed{/if}">
73 <div class="crm-accordion-header">
74 {ts}Search Surveys{/ts}
75 </div><!-- /.crm-accordion-header -->
77 <div class="crm-accordion-body">
79 <table class="form-layout-compressed">
81 <td>{$form.survey_title.label}<br />
82 {$form.survey_title.html}
86 <td>{$form.activity_type_id.label}<br />
87 {$form.activity_type_id.html}
89 <td>{$form.survey_campaign_id.label}<br />
90 {$form.survey_campaign_id.html}
95 {if $context eq 'search'}
98 <a class="searchSurvey button" style="float:left;" href="#" title="{ts}Search{/ts}" onClick="searchSurveys( '{$qfKey}' );return false;">{ts}Search{/ts}</a>
107 {* search form ends here *}
109 <div id='surveyList'></div>
111 {/if} {* end of search form build *}
115 <script type="text/javascript">
118 {* load selector when force *}
119 {if $force and !$buildSelector}
122 searchSurveys( {/literal}'{$qfKey}'{literal} );
129 function searchSurveys( qfKey )
131 var dataUrl = {/literal}"{crmURL h=0 q='search=1&snippet=4&type=survey'}"{literal};
133 //lets carry qfKey to retain form session.
134 if ( qfKey ) dataUrl = dataUrl + '&qfKey=' + qfKey;
136 CRM.$.get( dataUrl, null, function( surveyList ) {
137 CRM.$( '#surveyList' ).html( surveyList ).trigger('crmLoad');
139 //collapse the search form.
140 var searchFormName = '#search_form_' + {/literal}'{$searchFor}'{literal};
141 CRM.$( searchFormName + '.crm-accordion-wrapper:not(.collapsed)').crmAccordionToggle();
145 function loadSurveyList( )
147 var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/rest' h=0 q='snippet=4&className=CRM_Campaign_Page_AJAX&fnName=surveyList' }"{literal};
149 //build the search qill.
150 //get the search criteria.
151 var searchParams = {/literal}{$searchParams}{literal};
152 var surveyTypes = {/literal}{$surveyTypes}{literal};
153 var surveyCampaigns = {/literal}{$surveyCampaigns}{literal};
155 var noRecordFoundMsg = "{/literal}{ts escape='js'}No matches found for:{/ts}{literal}";
156 noRecordFoundMsg += '<div class="qill">';
160 for ( param in searchParams ) {
161 if ( val = CRM.$( '#' + param ).val( ) ) {
162 if ( param == 'activity_type_id' ) val = surveyTypes[val];
163 if ( param == 'survey_campaign_id' ) val = surveyCampaigns[val];
164 searchQill[count++] = searchParams[param] + ' : ' + val;
167 noRecordFoundMsg += searchQill.join( '<span class="font-italic"> ...AND... </span></div><div class="qill">' );
168 CRM.$( 'table.surveys', '#surveyList').dataTable({
170 "bAutoWidth" : false,
171 "bProcessing": false,
172 "bLengthChange": false,
174 "aoColumns":[{sClass:'crm-survey-id hiddenElement' },
175 {sClass:'crmf-title' },
176 {sClass:'crm-survey-campaign_id hiddenElement' },
177 {sClass:'crm-survey-campaign' },
178 {sClass:'crm-survey-activity_type_id hiddenElement' },
179 {sClass:'crm-survey-activity_type' },
180 {sClass:'crm-survey-release_frequency' },
181 {sClass:'crm-survey-default_number_of_contacts' },
182 {sClass:'crm-survey-max_number_of_contacts' },
183 {sClass:'crm-survey-is_default' },
184 {sClass:'crm-survey-is_active hiddenElement' },
185 {sClass:'crm-survey-isActive' },
186 {sClass:'crm-survey-result_id', bSortable:false},
187 {sClass:'crm-survey-action', bSortable:false},
188 {sClass:'crm-campaign-voterLinks', bSortable:false}
190 "sPaginationType": "full_numbers",
191 "sDom" : 'rt<"crm-datatable-pager-bottom"ip>',
194 "sAjaxSource": sourceUrl,
195 "asStripClasses" : [ "odd-row", "even-row" ],
196 "oLanguage":{"sEmptyTable" : noRecordFoundMsg,
197 "sZeroRecords" : noRecordFoundMsg },
198 "fnDrawCallback": function() {
199 CRM.$(this).trigger('crmLoad');
201 "fnRowCallback": function( nRow, aData, iDisplayIndex ) {
203 CRM.$(nRow).children().eq(1).addClass('crm-editable');
204 //insert the id for each row for enable/disable.
205 var rowId = 'survey-' + aData[0];
206 CRM.$(nRow).attr( 'id', rowId).addClass('crm-entity');
207 //handled disabled rows.
208 var isActive = Boolean(Number(aData[10]));
209 if ( !isActive ) CRM.$(nRow).addClass( 'disabled' );
211 //add id for yes/no column.
212 CRM.$(nRow).children().eq(11).attr( 'id', rowId + '_status' );
213 CRM.$(nRow).children().eq(9).html(CRM.utils.formatIcon('fa-check', ts('Default'), nRow.cells[9].innerText));
218 "fnServerData": function ( sSource, aoData, fnCallback ) {
219 var dataLength = aoData.length;
222 var searchCriteria = [];
224 //get the search criteria.
225 var searchParams = {/literal}{$searchParams}{literal};
226 for ( param in searchParams ) {
228 if ( param == 'survey_title' ) fldName = 'title';
229 if ( param == 'survey_campaign_id' ) fldName = 'campaign_id';
230 if ( val = CRM.$( '#' + param ).val( ) ) {
231 aoData[dataLength++] = {name: fldName, value: val};
233 searchCriteria[count++] = fldName;
236 //do search for surveys.
237 aoData[dataLength++] = {name: 'search_for', value: 'survey'};
239 //lets transfer search criteria.
240 aoData[dataLength++] = {name: 'searchCriteria', value:searchCriteria.join(',')};
247 "success": fnCallback
252 function displayResultSet( surveyId, surveyTitle, OptionGroupId ) {
253 var data = new Object;
254 data['option_group_id'] = OptionGroupId;
255 data['survey_id'] = surveyId;
257 var dataUrl = {/literal}"{crmURL p='civicrm/ajax/rest' h=0 q='className=CRM_Campaign_Page_AJAX&fnName=loadOptionGroupDetails' }"{literal};
258 var content = '<tr><th>{/literal}{ts escape='js'}Label{/ts}{literal}</th><th>{/literal}{ts escape='js'}Value{/ts}{literal}</th><th>{/literal}{ts escape='js'}Recontact Interval{/ts}{literal}</th><th>{/literal}{ts escape='js'}Order{/ts}{literal}</th></tr>';
259 var setTitle = '{/literal}{ts escape='js'}Result Set for{/ts} {literal}' + surveyTitle;
261 CRM.$.post( dataUrl, data, function( opGroup ) {
262 if ( opGroup.status == 'success' ) {
263 var result = opGroup.result;
264 for( key in result ) {
266 if ( result[key].interval && result[key].interval != 'undefined' ) {
267 interval = result[key].interval;
269 content += '<tr><td>'+ result[key].label +'</td><td>'+ result[key].value +'</td><td>'+ interval +'</td><td>'+ result[key].weight +'</td></tr>';
272 CRM.$("#survey-result-set-dialog").show( ).html('<table>'+content+'</table>').dialog({
280 beforeclose: function(event, ui) {
281 CRM.$(this).dialog("destroy");