Merge pull request #4591 from colemanw/CRM-15625
[civicrm-core.git] / templates / CRM / Campaign / Form / Search / Survey.tpl
CommitLineData
6a488035
TO
1{*
2 +--------------------------------------------------------------------+
819d0d41 3 | CiviCRM version 4.5 |
6a488035 4 +--------------------------------------------------------------------+
819d0d41 5 | Copyright CiviCRM LLC (c) 2004-2014 |
6a488035
TO
6 +--------------------------------------------------------------------+
7 | This file is a part of CiviCRM. |
8 | |
9 | CiviCRM is free software; you can copy, modify, and distribute it |
10 | under the terms of the GNU Affero General Public License |
11 | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. |
12 | |
13 | CiviCRM is distributed in the hope that it will be useful, but |
14 | WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
16 | See the GNU Affero General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU Affero General Public |
19 | License and the CiviCRM Licensing Exception along |
20 | with this program; if not, contact CiviCRM LLC |
21 | at info[AT]civicrm[DOT]org. If you have questions about the |
22 | GNU Affero General Public License or the licensing of CiviCRM, |
23 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
24 +--------------------------------------------------------------------+
25*}
26
27{if !$hasSurveys}
28 <div class="messages status no-popup">
29 <div class="icon inform-icon"></div> &nbsp;
30 {ts}No surveys found.{/ts}
31 </div>
32
33 <div class="action-link">
34 <a href="{crmURL p='civicrm/survey/add' q='reset=1' h=0 }" class="button"><span><div class="icon add-icon"></div>{ts}Add Survey{/ts}</span></a>
35 </div>
36
37{elseif $buildSelector}
38
39 {* use to display result set of survey *}
40 <div id="survey-result-set-dialog" class="hiddenElement"></div>
41
42 {* load survey selector *}
4d17a233
CW
43 {include file="CRM/common/enableDisableApi.tpl"}
44 {include file="CRM/common/crmeditable.tpl"}
6a488035
TO
45
46 {literal}
47 <script type="text/javascript">
3cc60a06 48 CRM.$(function($) {
6a488035
TO
49 loadSurveyList( );
50 });
51 </script>
52 {/literal}
53
24e7a504 54 <table class="surveys">
6a488035
TO
55 <thead>
56 <tr class="columnheader">
57 <th class="hiddenElement">{ts}Survey ID{/ts}</th>
58 <th>{ts}Title{/ts}</th>
59 <th class="hiddenElement">{ts}Campaign ID{/ts}</th>
60 <th>{ts}Campaign{/ts}</th>
61 <th class="hiddenElement">{ts}Survey Type ID{/ts}</th>
62 <th>{ts}Survey Type{/ts}</th>
63 <th>{ts}Release Frequency{/ts}</th>
64 <th>{ts}Reserve Each Time{/ts}</th>
65 <th>{ts}Total Reserve{/ts}</th>
66 <th>{ts}Default?{/ts}</th>
67 <th class="hiddenElement">{ts}Is Active?{/ts}</th>
68 <th>{ts}Active?{/ts}</th>
69 <th></th>
70 <th></th>
71 <th></th>
72 </tr>
73 </thead>
74 <tbody></tbody>
75 </table>
76
77{else}
78
79 <div class="action-link">
80 <a href="{crmURL p='civicrm/survey/add' q='reset=1' h=0 }" class="button"><span><div class="icon add-icon"></div>{ts}Add Survey{/ts}</span></a>
81 </div>
82
83 {* build search form here *}
84
85 {* Search form and results for surveys *}
86 <div class="crm-block crm-form-block crm-search-form-block">
87 {assign var='searchForm' value="search_form_$searchFor"}
88
89 <div id="{$searchForm}" class="crm-accordion-wrapper crm-survey_search_form-accordion{if $force and !$buildSelector} collapsed{/if}">
90 <div class="crm-accordion-header">
91 {ts}Search Surveys{/ts}
92 </div><!-- /.crm-accordion-header -->
93
94 <div class="crm-accordion-body">
95 {strip}
96 <table class="form-layout-compressed">
97 <tr>
98 <td>{$form.survey_title.label}<br />
99 {$form.survey_title.html}
100 </td>
101 </tr>
102 <tr>
103 <td>{$form.activity_type_id.label}<br />
104 {$form.activity_type_id.html}
105 </td>
106 <td>{$form.survey_campaign_id.label}<br />
107 {$form.survey_campaign_id.html}
108 </td>
109 </tr>
110 <tr>
111 <td colspan="2">
112 {if $context eq 'search'}
113 {$form.buttons.html}
114 {else}
115 <a class="searchSurvey button" style="float:left;" href="#" title="{ts}Search{/ts}" onClick="searchSurveys( '{$qfKey}' );return false;">{ts}Search{/ts}</a>
116 {/if}
117 </td>
118 </tr>
119 </table>
120 {/strip}
121 </div>
122 </div>
123 </div>
124 {* search form ends here *}
125
126 <div id='surveyList'></div>
127
128{/if} {* end of search form build *}
129
130
131{literal}
132<script type="text/javascript">
133
6a488035
TO
134 {/literal}
135 {* load selector when force *}
136 {if $force and !$buildSelector}
137 {literal}
3cc60a06 138 CRM.$(function($) {
6a488035
TO
139 searchSurveys( {/literal}'{$qfKey}'{literal} );
140 });
141
142 {/literal}
143 {/if}
144 {literal}
145
146function searchSurveys( qfKey )
147{
148 var dataUrl = {/literal}"{crmURL h=0 q='search=1&snippet=4&type=survey'}"{literal};
149
150 //lets carry qfKey to retain form session.
151 if ( qfKey ) dataUrl = dataUrl + '&qfKey=' + qfKey;
152
2c68626a
DJ
153 CRM.$.get( dataUrl, null, function( surveyList ) {
154 CRM.$( '#surveyList' ).html( surveyList ).trigger('crmLoad');
6a488035
TO
155
156 //collapse the search form.
157 var searchFormName = '#search_form_' + {/literal}'{$searchFor}'{literal};
2c68626a 158 CRM.$( searchFormName + '.crm-accordion-wrapper:not(.collapsed)').crmAccordionToggle();
6a488035
TO
159 }, 'html' );
160}
161
162function loadSurveyList( )
163{
164 var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/rest' h=0 q='snippet=4&className=CRM_Campaign_Page_AJAX&fnName=surveyList' }"{literal};
165
166 //build the search qill.
167 //get the search criteria.
168 var searchParams = {/literal}{$searchParams}{literal};
169 var surveyTypes = {/literal}{$surveyTypes}{literal};
170 var surveyCampaigns = {/literal}{$surveyCampaigns}{literal};
171
172 var noRecordFoundMsg = "{/literal}{ts escape='js'}No matches found for:{/ts}{literal}";
173 noRecordFoundMsg += '<div class="qill">';
174
175 var count = 0;
ae8f569f 176 var searchQill = [];
6a488035 177 for ( param in searchParams ) {
483a3659
DJ
178 if ( val = CRM.$( '#' + param ).val( ) ) {
179 if ( param == 'activity_type_id' ) val = surveyTypes[val];
180 if ( param == 'survey_campaign_id' ) val = surveyCampaigns[val];
181 searchQill[count++] = searchParams[param] + ' : ' + val;
182 }
6a488035
TO
183 }
184 noRecordFoundMsg += searchQill.join( '<span class="font-italic"> ...AND... </span></div><div class="qill">' );
483a3659 185 CRM.$( 'table.surveys', '#surveyList').dataTable({
6a488035
TO
186 "bFilter" : false,
187 "bAutoWidth" : false,
188 "bProcessing": false,
189 "bLengthChange": false,
190 "aaSorting": [],
191 "aoColumns":[{sClass:'crm-survey-id hiddenElement' },
192 {sClass:'crm-survey-title' },
193 {sClass:'crm-survey-campaign_id hiddenElement' },
194 {sClass:'crm-survey-campaign' },
195 {sClass:'crm-survey-activity_type_id hiddenElement' },
196 {sClass:'crm-survey-activity_type' },
197 {sClass:'crm-survey-release_frequency' },
198 {sClass:'crm-survey-default_number_of_contacts' },
199 {sClass:'crm-survey-max_number_of_contacts' },
200 {sClass:'crm-survey-is_default' },
201 {sClass:'crm-survey-is_active hiddenElement' },
202 {sClass:'crm-survey-isActive' },
203 {sClass:'crm-survey-result_id', bSortable:false},
204 {sClass:'crm-survey-action', bSortable:false},
205 {sClass:'crm-campaign-voterLinks', bSortable:false}
206 ],
207 "sPaginationType": "full_numbers",
208 "sDom" : 'rt<"crm-datatable-pager-bottom"ip>',
209 "bServerSide": true,
210 "bJQueryUI": true,
211 "sAjaxSource": sourceUrl,
212 "asStripClasses" : [ "odd-row", "even-row" ],
213 "oLanguage":{"sEmptyTable" : noRecordFoundMsg,
214 "sZeroRecords" : noRecordFoundMsg },
2c68626a 215 "fnDrawCallback": function() { CRM.$().crmtooltip(); },
6a488035
TO
216 "fnRowCallback": function( nRow, aData, iDisplayIndex ) {
217 //insert the id for each row for enable/disable.
218 var rowId = 'survey_row_' + aData[0];
2c68626a 219 CRM.$(nRow).attr( 'id', rowId );
6a488035
TO
220 //handled disabled rows.
221 var isActive = Boolean(Number(aData[10]));
2c68626a 222 if ( !isActive ) CRM.$(nRow).addClass( 'disabled' );
6a488035
TO
223
224 //add id for yes/no column.
2c68626a 225 CRM.$(nRow).children().eq(11).attr( 'id', rowId + '_status' );
6a488035
TO
226
227 return nRow;
228 },
229
230 "fnServerData": function ( sSource, aoData, fnCallback ) {
231 var dataLength = aoData.length;
232
233 var count = 1;
ae8f569f 234 var searchCriteria = [];
6a488035
TO
235
236 //get the search criteria.
237 var searchParams = {/literal}{$searchParams}{literal};
238 for ( param in searchParams ) {
239 fldName = param;
240 if ( param == 'survey_title' ) fldName = 'title';
241 if ( param == 'survey_campaign_id' ) fldName = 'campaign_id';
2c68626a 242 if ( val = CRM.$( '#' + param ).val( ) ) {
6a488035
TO
243 aoData[dataLength++] = {name: fldName, value: val};
244 }
245 searchCriteria[count++] = fldName;
246 }
247
248 //do search for surveys.
249 aoData[dataLength++] = {name: 'search_for', value: 'survey'};
250
251 //lets transfer search criteria.
252 aoData[dataLength++] = {name: 'searchCriteria', value:searchCriteria.join(',')};
253
2c68626a 254 CRM.$.ajax( {
6a488035
TO
255 "dataType": 'json',
256 "type": "POST",
257 "url": sSource,
258 "data": aoData,
259 "success": fnCallback
260 } ); }
261 });
262}
263
264function displayResultSet( surveyId, surveyTitle, OptionGroupId ) {
265 var data = new Object;
266 data['option_group_id'] = OptionGroupId;
267 data['survey_id'] = surveyId;
268
269 var dataUrl = {/literal}"{crmURL p='civicrm/ajax/rest' h=0 q='className=CRM_Campaign_Page_AJAX&fnName=loadOptionGroupDetails' }"{literal};
270 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'}Weight{/ts}{literal}</th></tr>';
271 var setTitle = '{/literal}{ts escape='js'}Result Set for{/ts} {literal}' + surveyTitle;
272
2c68626a 273 CRM.$.post( dataUrl, data, function( opGroup ) {
6a488035
TO
274 if ( opGroup.status == 'success' ) {
275 var result = opGroup.result;
276 for( key in result ) {
277 var interval = '';
278 if ( result[key].interval && result[key].interval != 'undefined' ) {
279 interval = result[key].interval;
280 }
281 content += '<tr><td>'+ result[key].label +'</td><td>'+ result[key].value +'</td><td>'+ interval +'</td><td>'+ result[key].weight +'</td></tr>';
282 }
283
2c68626a 284 CRM.$("#survey-result-set-dialog").show( ).html('<table>'+content+'</table>').dialog({
6a488035
TO
285 title: setTitle,
286 modal: true,
287 width: 480,
288 overlay: {
289 opacity: 0.5,
290 background: "black"
291 },
292 beforeclose: function(event, ui) {
2c68626a 293 CRM.$(this).dialog("destroy");
6a488035
TO
294 }
295 });
296 }
297 }, "json" );
298
299}
300
301</script>
302{/literal}