|
154 | 154 | $db = rex_sql::factory(); |
155 | 155 | $db->setTable(rex::getTable('consent_manager_cookie')); |
156 | 156 | $db->setWhere('clang_id = ' . $clang_id . ' AND uid != "consent_manager" ORDER BY uid ASC'); |
157 | | - $db->select('DISTINCT uid, service_name, variant'); |
| 157 | + $db->select('DISTINCT pid, uid, service_name, variant'); |
158 | 158 | $cookies = $db->getArray(); |
159 | 159 |
|
| 160 | + $cookieLinks = []; |
| 161 | + foreach ($cookies as $c) { |
| 162 | + $cookieLinks[$c['uid']] = rex_url::backendPage('consent_manager/cookie', ['func' => 'edit', 'pid' => $c['pid']]); |
| 163 | + } |
| 164 | + |
160 | 165 | if ($clang_id === rex_clang::getStartId() || true !== $form->isEditMode()) { |
161 | 166 | if ([] !== $cookies) { |
162 | 167 | // Styling und Buttons |
163 | | - $html = '<div id="cm-cookie-buttons-wrapper" class="btn-group btn-group-xs" style="margin-bottom: 5px;">'; |
| 168 | + $html = '<div id="cm-cookie-toolbar" class="input-group input-group-xs" style="margin-bottom: 5px;">'; |
| 169 | + $html .= '<span class="input-group-btn">'; |
164 | 170 | $html .= '<button type="button" class="btn btn-info cm-select-all"><i class="fa fa-check-square-o"></i> Alle auswählen</button>'; |
165 | 171 | $html .= '<button type="button" class="btn btn-default cm-deselect-all"><i class="fa fa-square-o"></i> Alle abwählen</button>'; |
| 172 | + $html .= '</span>'; |
| 173 | + $html .= '<input type="text" id="cm-cookie-search" class="form-control" placeholder="Suche...">'; |
| 174 | + $html .= '<span class="input-group-addon"><i class="rex-icon rex-icon-search"></i></span>'; |
166 | 175 | $html .= '</div>'; |
167 | 176 |
|
168 | 177 | $html .= '<script nonce="' . rex_response::getNonce() . '"> |
|
175 | 184 | $checkboxes.first().closest(".rex-form-group").addClass("consent-manager-cookie-list"); |
176 | 185 | } |
177 | 186 | |
178 | | - // Buttons Wrapper |
179 | | - var $btnWrapper = $("#cm-cookie-buttons-wrapper"); |
| 187 | + // Toolbar Wrapper |
| 188 | + var $toolbar = $("#cm-cookie-toolbar"); |
180 | 189 | |
181 | 190 | // Optional: Label des Button-Containers leeren, falls vorhanden |
182 | | - $btnWrapper.closest(".rex-form-group").find("dt").html(" "); |
| 191 | + $toolbar.closest(".rex-form-group").find("dt").html(" "); |
183 | 192 | |
184 | 193 | // Select All Handler |
185 | | - $btnWrapper.on("click", ".cm-select-all", function() { |
186 | | - $checkboxes.prop("checked", true); |
| 194 | + $toolbar.on("click", ".cm-select-all", function() { |
| 195 | + $checkboxes.filter(":visible").prop("checked", true); |
187 | 196 | }); |
188 | 197 | |
189 | 198 | // Deselect All Handler |
190 | | - $btnWrapper.on("click", ".cm-deselect-all", function() { |
191 | | - $checkboxes.prop("checked", false); |
| 199 | + $toolbar.on("click", ".cm-deselect-all", function() { |
| 200 | + $checkboxes.filter(":visible").prop("checked", false); |
| 201 | + }); |
| 202 | + |
| 203 | + // Live Search Handler |
| 204 | + $("#cm-cookie-search").on("keyup", function() { |
| 205 | + var value = $(this).val().toLowerCase(); |
| 206 | + $checkboxes.each(function() { |
| 207 | + var $input = $(this); |
| 208 | + var text = $input.closest("label").text().toLowerCase(); |
| 209 | + var $wrapper = $input.closest(".checkbox"); |
| 210 | + |
| 211 | + if (text.indexOf(value) > -1) { |
| 212 | + $wrapper.show(); |
| 213 | + } else { |
| 214 | + $wrapper.hide(); |
| 215 | + } |
| 216 | + }); |
192 | 217 | }); |
193 | 218 | }); |
194 | 219 | </script>'; |
|
0 commit comments