diff options
author | matthew.gregg <matthew.gregg@gmail.com> | 2008-07-15 23:20:45 -0400 |
---|---|---|
committer | matthew.gregg <matthew.gregg@gmail.com> | 2008-07-15 23:20:45 -0400 |
commit | faa3933fbb54d0fc4a12145bd0aefa899db30dea (patch) | |
tree | b72d7e33ff8d7f7bc3f9dd93cb59429a89ab0fbf /actions | |
parent | b6efc9889f589ba5c526f12f8b60f77fd902de6b (diff) |
Added notice deletion http://laconi.ca/PITS/00045
Removes selected notice and any replies that reference it.
Attempts to de-queue anything pending.
This patch does not archive notices.
darcs-hash:20080716032045-982e4-a0b5d37ecfa84796f1681dda54110094ad1424c6.gz
Diffstat (limited to 'actions')
-rw-r--r-- | actions/deletenotice.php | 92 | ||||
-rw-r--r-- | actions/showstream.php | 10 |
2 files changed, 102 insertions, 0 deletions
diff --git a/actions/deletenotice.php b/actions/deletenotice.php new file mode 100644 index 000000000..06c1bf27e --- /dev/null +++ b/actions/deletenotice.php @@ -0,0 +1,92 @@ +<?php +/* + * Laconica - a distributed open-source microblogging tool + * Copyright (C) 2008, Controlez-Vous, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('LACONICA')) { exit(1); } + +require_once(INSTALLDIR.'/lib/deleteaction.php'); + +class DeletenoticeAction extends DeleteAction { + function handle($args) { + parent::handle($args); + # XXX: Ajax! + + if ($_SERVER['REQUEST_METHOD'] == 'POST') { + $this->delete_notice(); + } else if ($_SERVER['REQUEST_METHOD'] == 'GET') { + $this->show_form(); + } + } + + function get_instructions() { + return _('You are about to permanently delete a notice. Once this is done, it cannot be undone.'); + } + + function get_title() { + return _('Delete notice'); + } + + function show_form($error=NULL) { + $user = common_current_user(); + + common_show_header($this->get_title(), array($this, 'show_header'), array($q, $error), + array($this, 'show_top')); + common_element_start('form', array('id' => 'notice_delete_form', + 'method' => 'post', + 'action' => common_local_url('deletenotice'))); + common_hidden('notice', $this->trimmed(notice)); + common_element_start('p'); + common_element('span', array('id' => 'confirmation_text'),_('Are you sure you want to delete this notice?')); + + common_element('input', array('id' => 'submit_no', + 'name' => 'submit', + 'type' => 'submit', + 'value' => _('No'))); + common_element('input', array('id' => 'submit_yes', + 'name' => 'submit', + 'type' => 'submit', + 'value' => _('Yes'))); + common_element_end('p'); + common_element_end('form'); + common_show_footer(); + } + + function delete_notice() { + $url = common_get_returnto(); + $confirmed = $this->trimmed('submit'); + if ($confirmed == 'Yes') { + $user = common_current_user(); + $notice_id = $this->trimmed('notice'); + $notice = Notice::staticGet($notice_id); + $replies = new Reply; + $replies->get('notice_id', $notice_id); + + common_dequeue_notice($notice); + $replies->delete(); + $notice->delete(); + } + else { + if ($url) { + common_set_returnto(NULL); + } else { + $url = common_local_url('public'); + } + } + common_redirect($url); + } +} diff --git a/actions/showstream.php b/actions/showstream.php index c05e30c39..59d4385c6 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -363,6 +363,10 @@ class ShowstreamAction extends StreamAction { function show_notice($notice) { $profile = $notice->getProfile(); + if (common_logged_in()) { + $user = common_current_user(); + $user_profile = $user->getProfile(); + } # XXX: RDFa common_element_start('li', array('class' => 'notice_single', 'id' => 'notice-' . $notice->id)); @@ -400,6 +404,12 @@ class ShowstreamAction extends StreamAction { common_raw('→'); common_element_end('a'); common_element_end('p'); + if ($notice->profile_id == $user_profile->id) { + $deleteurl = common_local_url('deletenotice', array('notice' => $notice->id)); + common_element('a', array('class' => 'deletenotice', + 'href' => $deleteurl), + _('delete')); + } common_element_end('li'); } }
\ No newline at end of file |