Import from SVN (r45945, r596)
[civicrm-core.git] / templates / CRM / Campaign / Form / Search / Campaign.tpl
1 {*
2 +--------------------------------------------------------------------+
3 | CiviCRM version 4.3 |
4 +--------------------------------------------------------------------+
5 | Copyright CiviCRM LLC (c) 2004-2013 |
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 !$hasCampaigns}
28 <div class="messages status no-popup">
29 <div class="icon inform-icon"></div> &nbsp;
30 {ts}No campaigns found.{/ts}
31 </div>
32
33 <div class="action-link">
34 <a href="{crmURL p='civicrm/campaign/add' q='reset=1' h=0 }" class="button"><span><div class="icon add-icon"></div>{ts}Add Campaign{/ts}</span></a>
35 </div>
36
37 {elseif $buildSelector}
38
39 {* load campaign selector *}
40
41 {include file="CRM/common/enableDisable.tpl"}
42
43 {literal}
44 <script type="text/javascript">
45 cj( function( ){
46 loadCampaignList( );
47 });
48 </script>
49 {/literal}
50
51 <table id="campaigns">
52 <thead>
53 <tr class="columnheader">
54 <th class="hiddenElement">{ts}Campaign ID{/ts}</th>
55 <th class="hiddenElement">{ts}Campaign Name{/ts}</th>
56 <th>{ts}Title{/ts}</th>
57 <th>{ts}Description{/ts}</th>
58 <th>{ts}Start Date{/ts}</th>
59 <th>{ts}End Date{/ts}</th>
60 <th class="hiddenElement">{ts}Type ID{/ts}</th>
61 <th>{ts}Type{/ts}</th>
62 <th class="hiddenElement">{ts}Status ID{/ts}</th>
63 <th>{ts}Status{/ts}</th>
64 <th class="hiddenElement">{ts}Is Active?{/ts}</th>
65 <th>{ts}Active?{/ts}</th>
66 <th></th>
67 </tr>
68 </thead>
69 <tbody></tbody>
70 </table>
71
72 {else}
73
74 <div class="action-link">
75 <a href="{crmURL p='civicrm/campaign/add' q='reset=1' h=0 }" class="button"><span><div class="icon add-icon"></div>{ts}Add Campaign{/ts}</span></a>
76 </div>
77
78 {* build search form here *}
79
80 {* Search form and results for campaigns *}
81 <div class="crm-block crm-form-block crm-search-form-block">
82
83 {assign var='searchForm' value="search_form_$searchFor"}
84
85 <div id="{$searchForm}" class="crm-accordion-wrapper crm-campaign_search_form-accordion {if $force and !$buildSelector}collapsed{/if}">
86 <div class="crm-accordion-header">
87 {ts}Search Campaigns{/ts}
88 </div><!-- /.crm-accordion-header -->
89
90 <div class="crm-accordion-body">
91 {strip}
92 <table class="form-layout-compressed">
93 <tr>
94 <td>{$form.campaign_title.label}<br />
95 {$form.campaign_title.html} &nbsp;
96 </td>
97 <td>
98 {$form.description.label}<br />
99 {$form.description.html|crmAddClass:huge}
100 </td>
101 </tr>
102
103 <tr>
104 <td>{$form.start_date.label}<br />
105 {include file="CRM/common/jcalendar.tpl" elementName=start_date}
106 </td>
107 <td>{$form.end_date.label}<br />
108 {include file="CRM/common/jcalendar.tpl" elementName=end_date}
109 </td>
110 </tr>
111
112 <tr>
113 <td>{$form.campaign_type_id.label}<br />
114 {$form.campaign_type_id.html}
115 </td>
116 <td>{$form.status_id.label}<br />
117 {$form.status_id.html}
118 </td>
119 </tr>
120
121 <tr>
122 <td colspan="2">
123 {if $context eq 'search'}
124 {$form.buttons.html}
125 {else}
126 <a class="searchCampaign button" style="float:left;" href="#" title={ts}Search{/ts} onClick="searchCampaigns( '{$qfKey}' );return false;">{ts}Search{/ts}</a>
127 {/if}
128 </td>
129 </tr>
130 </table>
131 {/strip}
132 </div>
133 </div>
134 </div>
135 {* search form ends here *}
136
137 <div id='campaignList'></div>
138
139 {/if} {* end of search form build *}
140
141
142 {literal}
143 <script type="text/javascript">
144
145 cj(function() {
146 cj().crmAccordions();
147 });
148
149 {/literal}
150 {* load selector when force *}
151 {if $force and !$buildSelector}
152 {literal}
153 cj( function( ) {
154 searchCampaigns( {/literal}'{$qfKey}'{literal} );
155 });
156
157 {/literal}
158 {/if}
159 {literal}
160
161 function searchCampaigns( qfKey )
162 {
163 var dataUrl = {/literal}"{crmURL h=0 q='search=1&snippet=4&type=campaign'}"{literal};
164
165 //lets carry qfKey to retain form session.
166 if ( qfKey ) dataUrl = dataUrl + '&qfKey=' + qfKey;
167
168 cj.get( dataUrl, null, function( campaignList ) {
169 cj( '#campaignList' ).html( campaignList );
170
171 //collapse the search form.
172 var searchFormName = '#search_form_' + {/literal}'{$searchFor}'{literal};
173 cj( searchFormName + '.crm-accordion-wrapper:not(.collapsed)').crmAccordionToggle();
174 }, 'html' );
175 }
176
177 function loadCampaignList( )
178 {
179 var sourceUrl = {/literal}"{crmURL p='civicrm/ajax/rest' h=0 q='snippet=4&className=CRM_Campaign_Page_AJAX&fnName=campaignList' }"{literal};
180
181 //build the search qill.
182 //get the search criteria.
183 var searchParams = {/literal}{$searchParams}{literal};
184 var campaignTypes = {/literal}{$campaignTypes}{literal};
185 var campaignStatus = {/literal}{$campaignStatus}{literal};
186 var noRecordFoundMsg = '{/literal}{ts escape='js'}No matches found for:{/ts}{literal}';
187 noRecordFoundMsg += '<div class="qill">';
188
189 var count = 0;
190 var searchQill = new Array( );
191 for ( param in searchParams ) {
192 if ( val = cj( '#' + param ).val( ) ) {
193 if ( param == 'status_id' ) val = campaignStatus[val];
194 if ( param == 'campaign_type_id' ) val = campaignTypes[val];
195 searchQill[count++] = searchParams[param] + ' : ' + val;
196 }
197 }
198 noRecordFoundMsg += searchQill.join( '<span class="font-italic"> ...AND... </span></div><div class="qill">' );
199
200 cj( '#campaigns' ).dataTable({
201 "bFilter" : false,
202 "bAutoWidth" : false,
203 "bProcessing": false,
204 "bLengthChange": false,
205 "aaSorting": [],
206 "aoColumns":[{sClass:'crm-campaign-id hiddenElement' },
207 {sClass:'crm-campaign-name hiddenElement' },
208 {sClass:'crm-campaign-title' },
209 {sClass:'crm-campaign-description' },
210 {sClass:'crm-campaign-start_date' },
211 {sClass:'crm-campaign-end_date' },
212 {sClass:'crm-campaign-campaign-type_id hiddenElement' },
213 {sClass:'crm-campaign-campaign-type' },
214 {sClass:'crm-campaign-campaign-status_id hiddenElement' },
215 {sClass:'crm-campaign-campaign-status' },
216 {sClass:'crm-campaign-campaign-is_active hiddenElement' },
217 {sClass:'crm-campaign-campaign-isAactive' },
218 {sClass:'crm-campaign-action', bSortable:false}
219 ],
220 "sPaginationType": "full_numbers",
221 "sDom" : 'rt<"crm-datatable-pager-bottom"ip>',
222 "bServerSide": true,
223 "bJQueryUI": true,
224 "sAjaxSource": sourceUrl,
225 "asStripClasses" : [ "odd-row", "even-row" ],
226 "oLanguage":{"sEmptyTable" : noRecordFoundMsg,
227 "sZeroRecords" : noRecordFoundMsg },
228 "fnDrawCallback": function() { cj().crmtooltip(); },
229 "fnRowCallback": function( nRow, aData, iDisplayIndex ) {
230 //insert the id for each row for enable/disable.
231 var rowId = 'campaign_row_' + aData[0];
232 cj(nRow).attr( 'id', rowId );
233 //handled disabled rows.
234 var isActive = Boolean(Number(aData[10]));
235 if ( !isActive ) cj(nRow).addClass( 'disabled' );
236
237 //add id for yes/no column.
238 cj(nRow).children().eq(11).attr( 'id', rowId + '_status' );
239
240 return nRow;
241 },
242
243 "fnServerData": function ( sSource, aoData, fnCallback ) {
244 var dataLength = aoData.length;
245
246 var count = 1;
247 var searchCriteria = new Array( );
248
249 //get the search criteria.
250 var searchParams = {/literal}{$searchParams}{literal};
251 for ( param in searchParams ) {
252 fldName = param;
253 if ( param == 'campaign_title' ) fldName = 'title';
254 if ( val = cj( '#' + param ).val( ) ) {
255 aoData[dataLength++] = {name: fldName, value: val};
256 }
257 searchCriteria[count++] = fldName;
258 }
259
260 //do search for campaigns.
261 aoData[dataLength++] = {name: 'search_for', value: 'campaign'};
262
263 //lets transfer search criteria.
264 aoData[dataLength++] = {name: 'searchCriteria', value:searchCriteria.join(',')};
265
266 cj.ajax( {
267 "dataType": 'json',
268 "type": "POST",
269 "url": sSource,
270 "data": aoData,
271 "success": fnCallback
272 } ); }
273 });
274 }
275
276 </script>
277 {/literal}