diff options
author | Florian Pritz <bluewind@xinu.at> | 2012-05-05 22:32:18 +0200 |
---|---|---|
committer | Florian Pritz <bluewind@xinu.at> | 2012-05-05 22:32:18 +0200 |
commit | 93e06f76dfa2cb49a2edfcb6b70dd3c6cf3272d6 (patch) | |
tree | be71bae47aa0251aa4459e121530adfa0a78e71c | |
parent | f3cb1c31e30a0d31eb545439fe3ad7da68ccb189 (diff) |
Rework file deletion; allow to delete multiple IDs at once
This removes the old form which was used to delete a single upload and
replaces it with checkboxes on the history page. All checked IDs will be
removed at once, instead of requiring the user to click through multiple
pages.
The old file/delete page is kept for compatibility with CLI clients.
Signed-off-by: Florian Pritz <bluewind@xinu.at>
-rw-r--r-- | application/controllers/file.php | 65 | ||||
-rw-r--r-- | application/views/file/deleted.php | 13 | ||||
-rw-r--r-- | application/views/file/file_info.php | 65 | ||||
-rw-r--r-- | application/views/file/upload_history.php | 47 | ||||
-rw-r--r-- | application/views/file_plaintext/delete_form.php | 2 | ||||
-rw-r--r-- | application/views/file_plaintext/deleted.php | 9 |
6 files changed, 119 insertions, 82 deletions
diff --git a/application/controllers/file.php b/application/controllers/file.php index 079802dbc..2a56df96c 100644 --- a/application/controllers/file.php +++ b/application/controllers/file.php @@ -180,37 +180,64 @@ class File extends CI_Controller { echo $cached; } - // Allow users to delete their own IDs - function delete() + function do_delete() { $this->muser->require_access(); - $id = $this->uri->segment(3); - $this->data["id"] = $id; + $ids = $this->input->post("ids"); + $errors = array(); + $msgs = array(); + $deleted_count = 0; + $total_count = 0; - $process = $this->input->post("process"); - if ($this->var->cli_client) { - $process = true; + if (!$ids) { + show_error("No IDs specified"); } - if ($id && !$this->file_mod->id_exists($id)) { - $this->output->set_status_header(404); - $this->data["msg"] = "Unknown ID."; - } elseif ($process) { + foreach ($ids as $id) { + $total_count++; + + if (!$this->file_mod->id_exists($id)) { + $errors[] = "'$id' didn't exist anymore."; + continue; + } + if ($this->file_mod->delete_id($id)) { - $this->load->view($this->var->view_dir.'/header', $this->data); - $this->load->view($this->var->view_dir.'/deleted', $this->data); - $this->load->view($this->var->view_dir.'/footer', $this->data); - return; + $msgs[] = "'$id' has been removed."; + $deleted_count++; } else { - $this->data["msg"] = "Deletion failed. Do you really own that file?"; + $errors[] = "'$id' couldn't be deleted."; } } - $this->data["filedata"] = $this->file_mod->get_filedata($id); - $this->data["can_delete"] = $this->data["filedata"]["user"] == $this->muser->get_userid(); + $this->data["errors"] = $errors; + $this->data["msgs"] = $msgs; + $this->data["deleted_count"] = $deleted_count; + $this->data["total_count"] = $total_count; + + $this->load->view($this->var->view_dir.'/header', $this->data); + $this->load->view($this->var->view_dir.'/deleted', $this->data); + $this->load->view($this->var->view_dir.'/footer', $this->data); + } + + function delete() + { + $this->muser->require_access(); + + $id = $this->uri->segment(3); + $this->data["id"] = $id; + + if ($id && !$this->file_mod->id_exists($id)) { + $this->output->set_status_header(404); + echo "Unknown ID '$id'.\n"; + return; + } - $this->file_mod->display_info($id); + if ($this->file_mod->delete_id($id)) { + echo "$id has been deleted.\n"; + } else { + echo "Deletion failed. Do you really own that file?\n"; + } } // Handle pastes diff --git a/application/views/file/deleted.php b/application/views/file/deleted.php index f12433808..ef02398d9 100644 --- a/application/views/file/deleted.php +++ b/application/views/file/deleted.php @@ -1,3 +1,14 @@ <div class="center"> - <p><?php echo $id; ?> has been deleted.</p> + <?php if (!empty($errors)) { + echo "<p>"; + echo implode("<br />\n", $errors); + echo "</p>"; + } ?> + <?php if (!empty($msgs)) { + echo "<p>"; + echo implode("<br />\n", $msgs); + echo "</p>"; + } ?> + + <p><?php echo $deleted_count; ?> of <?php echo $total_count; ?> deleted.</p> </div> diff --git a/application/views/file/file_info.php b/application/views/file/file_info.php index 1e9d9fdfd..779ece854 100644 --- a/application/views/file/file_info.php +++ b/application/views/file/file_info.php @@ -1,39 +1,30 @@ <div class="center"> - <?php echo form_open('file/delete/'.$id); ?> - <?php if(isset($msg)) echo "<p>".$msg."</p>"; ?> - <?php if($filedata): ?> - <?php if($can_delete) { ?> - <p>You are about to delete the following upload:</p> - <?php } ?> - <table style="margin: auto"> - <tr> - <td class="title">ID</td> - <td class="text"><a href="<?php echo site_url($id); ?>/"><?php echo $id; ?></a></td> - </tr> - <tr> - <td class="title">Filename</td> - <td class="text"><?php echo $filedata["filename"]; ?></td> - </tr> - <tr> - <td class="title">Date of upload</td> - <td class="text"><?php echo date("r", $filedata["date"]); ?></td> - </tr> - <tr> - <td class="title">Date of removal</td> - <td class="text"><?php echo $timeout; ?></td> - </tr> - <tr> - <td class="title">Size</td> - <td class="text"><?php echo format_bytes($filedata["filesize"]); ?></td> - </tr> - <tr> - <td class="title">Mimetype</td> - <td class="text"><?php echo $filedata["mimetype"]; ?></td> - </tr> - </table> - <?php if($can_delete) { ?> - <input type="submit" value="Delete" name="process" /> - <?php } ?> - <?php endif; ?> - </form> + <?php if($filedata): ?> + <table style="margin: auto"> + <tr> + <td class="title">ID</td> + <td class="text"><a href="<?php echo site_url($id); ?>/"><?php echo $id; ?></a></td> + </tr> + <tr> + <td class="title">Filename</td> + <td class="text"><?php echo $filedata["filename"]; ?></td> + </tr> + <tr> + <td class="title">Date of upload</td> + <td class="text"><?php echo date("r", $filedata["date"]); ?></td> + </tr> + <tr> + <td class="title">Date of removal</td> + <td class="text"><?php echo $timeout; ?></td> + </tr> + <tr> + <td class="title">Size</td> + <td class="text"><?php echo format_bytes($filedata["filesize"]); ?></td> + </tr> + <tr> + <td class="title">Mimetype</td> + <td class="text"><?php echo $filedata["mimetype"]; ?></td> + </tr> + </table> + <?php endif; ?> </div> diff --git a/application/views/file/upload_history.php b/application/views/file/upload_history.php index 8f0f8e3d7..2f0d0f41f 100644 --- a/application/views/file/upload_history.php +++ b/application/views/file/upload_history.php @@ -1,23 +1,26 @@ -<table class="results"> -<tr> - <th></th> - <th>ID</th> - <th>Filename</th> - <th>Mimetype - <th>Date</th> - <th>Hash</th> - <th>Size</th> -</tr> +<?php echo form_open("file/do_delete"); ?> + <table class="results"> + <tr> + <th></th> + <th>ID</th> + <th>Filename</th> + <th>Mimetype + <th>Date</th> + <th>Hash</th> + <th>Size</th> + </tr> -<?php foreach($query as $key => $item): ?> -<tr class="<?php echo even_odd(); ?>"> - <td><a href="<?php echo site_url("file/delete/".$item["id"]); ?>"><img src="<?php echo base_url(); ?>data/img/fuge-icons/cross.png" /></a></td> - <td><a href="<?php echo site_url("/".$item["id"]); ?>/"><?php echo $item["id"]; ?></a></td> - <td><?php echo htmlspecialchars($item["filename"]); ?></td> - <td><?php echo $item["mimetype"]; ?></td> - <td><?php echo $item["date"]; ?></td> - <td><?php echo $item["hash"]; ?></td> - <td><?php echo $item["filesize"]; ?></td> -</tr> -<?php endforeach; ?> -</table> + <?php foreach($query as $key => $item): ?> + <tr class="<?php echo even_odd(); ?>"> + <td><input type="checkbox" name="ids[<?php echo $item["id"]; ?>]" value="<?php echo $item["id"]; ?>" /></td> + <td><a href="<?php echo site_url("/".$item["id"]); ?>/"><?php echo $item["id"]; ?></a></td> + <td><?php echo htmlspecialchars($item["filename"]); ?></td> + <td><?php echo $item["mimetype"]; ?></td> + <td><?php echo $item["date"]; ?></td> + <td><?php echo $item["hash"]; ?></td> + <td><?php echo $item["filesize"]; ?></td> + </tr> + <?php endforeach; ?> + </table> + <input type="submit" value="Delete checked" name="process" /> +</form> diff --git a/application/views/file_plaintext/delete_form.php b/application/views/file_plaintext/delete_form.php deleted file mode 100644 index ba736078c..000000000 --- a/application/views/file_plaintext/delete_form.php +++ /dev/null @@ -1,2 +0,0 @@ -<?php if(isset($msg)) echo $msg; ?> - diff --git a/application/views/file_plaintext/deleted.php b/application/views/file_plaintext/deleted.php index e5683b9d4..347766092 100644 --- a/application/views/file_plaintext/deleted.php +++ b/application/views/file_plaintext/deleted.php @@ -1 +1,8 @@ -<?php echo $id; ?> has been deleted. +<?php if (!empty($errors)) { + echo implode("\n", $errors); +} ?> +<?php if (!empty($msgs)) { + echo implode("\n", $msgs); +} ?> + +<?php echo $deleted_count; ?> of <?php echo $total_count; ?> deleted. |