mirror of https://github.com/MISP/MISP
chg: [UI] Allow event mass export for all events
parent
6461d7c8cd
commit
b1c95771cf
|
@ -2780,7 +2780,7 @@ class EventsController extends AppController
|
|||
|
||||
public function delete($id = null)
|
||||
{
|
||||
if ($this->request->is('post') || $this->request->is('put') || $this->request->is('delete')) {
|
||||
if ($this->request->is(['post', 'put', 'delete'])) {
|
||||
if (isset($this->request->data['id'])) {
|
||||
$this->request->data['Event'] = $this->request->data;
|
||||
}
|
||||
|
@ -2848,11 +2848,7 @@ class EventsController extends AppController
|
|||
$this->redirect(array('action' => 'index'));
|
||||
}
|
||||
} else {
|
||||
if (is_numeric($id)) {
|
||||
$eventList = array($id);
|
||||
} else {
|
||||
$eventList = json_decode($id, true);
|
||||
}
|
||||
$eventList = is_numeric($id) ? [$id] : $this->_jsonDecode($id);
|
||||
$this->request->data['Event']['id'] = json_encode($eventList);
|
||||
$this->set('idArray', $eventList);
|
||||
$this->render('ajax/eventDeleteConfirmationForm');
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
<table class="table table-striped table-hover table-condensed">
|
||||
<tr>
|
||||
<?php if ($isSiteAdmin): ?>
|
||||
<th>
|
||||
<input class="select_all select" type="checkbox" title="<?php echo __('Select all');?>" role="button" tabindex="0" aria-label="<?php echo __('Select all events on current page');?>" onclick="toggleAllCheckboxes();">
|
||||
</th>
|
||||
<?php else: ?>
|
||||
<th style="padding-left:0;padding-right:0;"> </th>
|
||||
<?php endif;?>
|
||||
<th>
|
||||
<input class="select_all select" type="checkbox" title="<?php echo __('Select all');?>" role="button" tabindex="0" aria-label="<?php echo __('Select all events on current page');?>" onclick="toggleAllCheckboxes();">
|
||||
</th>
|
||||
<th class="filter" title="<?= __('Published') ?>"><?= $this->Paginator->sort('published', '<i class="fa fa-upload"></i>', ['escape' => false]) ?></th>
|
||||
<?php
|
||||
if (Configure::read('MISP.showorgalternate') && Configure::read('MISP.showorg')):
|
||||
|
@ -42,13 +38,9 @@
|
|||
</tr>
|
||||
<?php foreach ($events as $event): $eventId = (int)$event['Event']['id']; ?>
|
||||
<tr id="event_<?= $eventId ?>">
|
||||
<?php if ($isSiteAdmin || ($event['Event']['orgc_id'] == $me['org_id'])):?>
|
||||
<td style="width:10px">
|
||||
<input class="select" type="checkbox" data-id="<?= $eventId ?>" data-uuid="<?= h($event['Event']['uuid']) ?>">
|
||||
<input class="select" type="checkbox" data-id="<?= $eventId ?>" data-can-modify="<?= $this->Acl->canModifyEvent($event) ? 1 : 0 ?>">
|
||||
</td>
|
||||
<?php else: ?>
|
||||
<td style="padding-left:0;padding-right:0;"></td>
|
||||
<?php endif; ?>
|
||||
<td class="dblclickElement" style="width:30px">
|
||||
<a href="<?= "$baseurl/events/view/$eventId" ?>" title="<?= __('View') ?>" aria-label="<?= __('View') ?>">
|
||||
<i class="fa <?= $event['Event']['published'] ? 'fa-check green' : 'fa-times grey' ?>"></i>
|
||||
|
@ -215,7 +207,7 @@
|
|||
var lastSelected = false;
|
||||
$(function() {
|
||||
$('.select').on('change', function() {
|
||||
listCheckboxesChecked();
|
||||
listCheckboxesCheckedEventIndex();
|
||||
}).click(function(e) {
|
||||
if ($(this).is(':checked')) {
|
||||
if (e.shiftKey) {
|
||||
|
|
|
@ -78,14 +78,14 @@
|
|||
'id' => 'multi-delete-button',
|
||||
'title' => __('Delete selected events'),
|
||||
'fa-icon' => 'trash',
|
||||
'class' => 'hidden mass-select',
|
||||
'class' => 'hidden mass-delete',
|
||||
'onClick' => 'multiSelectDeleteEvents'
|
||||
),
|
||||
array(
|
||||
'id' => 'multi-export-button',
|
||||
'title' => __('Export selected events'),
|
||||
'fa-icon' => 'file-export',
|
||||
'class' => 'hidden mass-select',
|
||||
'class' => 'hidden mass-export',
|
||||
'onClick' => 'multiSelectExportEvents'
|
||||
)
|
||||
)
|
||||
|
|
|
@ -925,6 +925,21 @@ function listCheckboxesChecked() {
|
|||
else $('.mass-select').addClass('hidden');
|
||||
}
|
||||
|
||||
function listCheckboxesCheckedEventIndex() {
|
||||
// Show mass delete just when user has permission to delete at least one of selected event
|
||||
if ($('.select:checked[data-can-modify="1"]').length > 0) {
|
||||
$('.mass-delete').removeClass('hidden');
|
||||
} else {
|
||||
$('.mass-delete').addClass('hidden');
|
||||
}
|
||||
|
||||
if ($('.select:checked').length > 0) {
|
||||
$('.mass-export').removeClass('hidden');
|
||||
} else {
|
||||
$('.mass-export').addClass('hidden');
|
||||
}
|
||||
}
|
||||
|
||||
function attributeListAnyProposalCheckBoxesChecked() {
|
||||
if ($('.select_proposal:checked').length > 0) $('.mass-proposal-select').removeClass('hidden');
|
||||
else $('.mass-proposal-select').addClass('hidden');
|
||||
|
@ -937,8 +952,8 @@ function taxonomyListAnyCheckBoxesChecked() {
|
|||
|
||||
function multiSelectDeleteEvents() {
|
||||
var selected = [];
|
||||
$(".select").each(function() {
|
||||
if ($(this).is(":checked")) {
|
||||
$(".select:checked").each(function() {
|
||||
if ($(this).data('can-modify')) {
|
||||
var temp = $(this).data("id");
|
||||
if (temp != null) {
|
||||
selected.push(temp);
|
||||
|
@ -954,12 +969,10 @@ function deleteEventPopup(eventId) {
|
|||
|
||||
function multiSelectExportEvents() {
|
||||
var selected = [];
|
||||
$(".select").each(function() {
|
||||
if ($(this).is(":checked")) {
|
||||
var temp = $(this).data("uuid");
|
||||
if (temp != null) {
|
||||
selected.push(temp);
|
||||
}
|
||||
$(".select:checked").each(function() {
|
||||
var temp = $(this).data("id");
|
||||
if (temp != null) {
|
||||
selected.push(temp);
|
||||
}
|
||||
});
|
||||
openGenericModal(baseurl + "/events/restSearchExport/" + JSON.stringify(selected))
|
||||
|
|
Loading…
Reference in New Issue