1 <div id=
"bootstrap-theme" class=
"crm-search">
2 <h1 crm-page-title
>{{:: ts('Saved Searches') }}
</h1>
3 <div class=
"form-inline">
4 <label for=
"search-list-filter">{{:: ts('Filter') }}
</label>
5 <input class=
"form-control" type=
"search" id=
"search-list-filter" ng-model=
"$ctrl.searchFilter" placeholder=
"">
6 <a class=
"btn btn-primary pull-right" href=
"#/create/Contact/">
7 <i class=
"crm-i fa-plus"></i>
8 {{:: ts('New Search') }}
14 <th ng-click=
"$ctrl.sortBy('label')">
15 <i class=
"crm-i fa-sort disabled" ng-if=
"$ctrl.sortField !== 'label'"></i>
16 <i class=
"crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if=
"$ctrl.sortField === 'label'"></i>
19 <th ng-click=
"$ctrl.sortBy('entity_title')">
20 <i class=
"crm-i fa-sort disabled" ng-if=
"$ctrl.sortField !== 'entity_title'"></i>
21 <i class=
"crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if=
"$ctrl.sortField === 'entity_title'"></i>
24 <th ng-click=
"$ctrl.sortBy('display_name.length')">
25 <i class=
"crm-i fa-sort disabled" ng-if=
"$ctrl.sortField !== 'display_name.length'"></i>
26 <i class=
"crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if=
"$ctrl.sortField === 'display_name.length'"></i>
27 {{:: ts('Displays') }}
29 <th ng-click=
"$ctrl.sortBy('groups[0]')">
30 <i class=
"crm-i fa-sort disabled" ng-if=
"$ctrl.sortField !== 'groups[0]'"></i>
31 <i class=
"crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if=
"$ctrl.sortField === 'groups[0]'"></i>
32 {{:: ts('Smart Group') }}
34 <th ng-if=
"$ctrl.afformEnabled" ng-click=
"$ctrl.sortBy('afform_count')">
35 <i class=
"crm-i fa-sort disabled" ng-if=
"$ctrl.sortField !== 'afform_count'"></i>
36 <i class=
"crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if=
"$ctrl.sortField === 'afform_count'"></i>
39 <th ng-click=
"$ctrl.sortBy('created_date')">
40 <i class=
"crm-i fa-sort disabled" ng-if=
"$ctrl.sortField !== 'created_date'"></i>
41 <i class=
"crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if=
"$ctrl.sortField === 'created_date'"></i>
44 <th ng-click=
"$ctrl.sortBy('modified_date')">
45 <i class=
"crm-i fa-sort disabled" ng-if=
"$ctrl.sortField !== 'modified_date'"></i>
46 <i class=
"crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if=
"$ctrl.sortField === 'modified_date'"></i>
47 {{:: ts('Last Modified') }}
53 <tr ng-repeat=
"search in $ctrl.savedSearches | filter:$ctrl.searchFilter | orderBy:$ctrl.sortField:$ctrl.sortDir">
54 <td>{{:: search.label }}
</td>
55 <td>{{:: search.entity_title }}
</td>
57 <div class=
"btn-group">
58 <button type=
"button" disabled
ng-if=
"!search.display_name" class=
"btn btn-xs dropdown-toggle btn-primary-outline">
59 {{:: ts('
0 Displays') }}
61 <button type=
"button" ng-if=
"search.display_name" class=
"btn btn-xs dropdown-toggle btn-primary-outline" data-toggle=
"dropdown" aria-haspopup=
"true" aria-expanded=
"false">
62 {{:: search.display_name.length ===
1 ? ts('
1 Display') : ts('%
1 Displays', {
1: search.display_name.length}) }}
<span class=
"caret"></span>
64 <ul class=
"dropdown-menu" ng-if=
":: search.display_name.length">
65 <li ng-repeat=
"display_name in search.display_name">
66 <a href=
"{{:: $ctrl.searchPath + '#/display/' + search.name + '/' + display_name }}" target=
"_blank">
67 <i class=
"fa {{:: search.display_icon[$index] }}"></i>
68 {{:: search.display_label[$index] }}
74 <td>{{:: search.groups.join(', ') }}
</td>
75 <td ng-if=
"::$ctrl.afformEnabled">
76 <div class=
"btn-group">
77 <button type=
"button" ng-click=
"$ctrl.loadAfforms()" ng-if=
"search.display_name" class=
"btn btn-xs dropdown-toggle btn-primary-outline" data-toggle=
"dropdown" aria-haspopup=
"true" aria-expanded=
"false">
78 {{ $ctrl.afforms ? (search.afform_count ===
1 ? ts('
1 Form') : ts('%
1 Forms', {
1: search.afform_count})) : ts('Forms...') }}
79 <span class=
"caret"></span>
81 <ul class=
"dropdown-menu">
82 <li ng-repeat=
"display_name in search.display_name" ng-if=
"::$ctrl.afformAdminEnabled">
83 <a href=
"{{:: $ctrl.afformPath + '#/create/search/' + search.name + '.' + display_name }}">
84 <i class=
"fa fa-plus"></i> {{:: ts('Create form for %
1', {
1: search.display_label[$index]}) }}
87 <li class=
"divider" role=
"separator" ng-if=
"::$ctrl.afformAdminEnabled"></li>
88 <li ng-if=
"!search.afform_count" class=
"disabled">
90 <i ng-if=
"!$ctrl.afforms" class=
"crm-i fa-spinner fa-spin"></i>
91 <em ng-if=
"$ctrl.afforms && !$ctrl.afforms[search.name]">{{:: ts('None Found') }}
</em>
94 <li ng-if=
"$ctrl.afforms" ng-repeat=
"afform in $ctrl.afforms[search.name]" title=
"{{:: ts('Edit form') }}">
95 <a href=
"{{:: $ctrl.afformPath + '#/edit/' + afform.name }}">
96 <i class=
"crm-i fa-pencil-square-o"></i>
103 <td title=
"{{:: formatDate(search.created_date, null, true) }}">
104 {{:: search['created.display_name'] ? ts('%
1 by %
2', {
1: formatDate(search.created_date),
2: search['created.display_name']}) : formatDate(search.created_date) }}
106 <td title=
"{{:: formatDate(search.modified_date, null, true) }}">
107 {{:: search['modified.display_name'] ? ts('%
1 by %
2', {
1: formatDate(search.modified_date),
2: search['modified.display_name']}) : formatDate(search.modified_date) }}
109 <td class=
"text-right">
110 <a class=
"btn btn-xs btn-default" href=
"#/edit/{{:: search.id }}">{{:: ts('Edit') }}
</a>
111 <a class=
"btn btn-xs btn-default" href=
"#/create/{{:: search.api_entity + '?params=' + $ctrl.encode(search.api_params) }}">{{:: ts('Clone') }}
</a>
112 <a href
class=
"btn btn-xs btn-danger" crm-confirm=
"{type: 'delete', obj: search}" on-yes=
"$ctrl.deleteSearch(search)">{{:: ts('Delete') }}
</a>
115 <tr ng-if=
"$ctrl.savedSearches.length === 0">
117 <p class=
"messages status no-popup text-center">
118 {{:: ts('No saved searches.')}}