summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/newnotice.php15
-rw-r--r--doc/TODO3
-rw-r--r--lib/common.php27
-rw-r--r--lib/stream.php4
4 files changed, 36 insertions, 13 deletions
diff --git a/actions/newnotice.php b/actions/newnotice.php
index a4cc7d3ae..40a196a23 100644
--- a/actions/newnotice.php
+++ b/actions/newnotice.php
@@ -28,15 +28,12 @@ class NewnoticeAction extends Action {
if (!common_logged_in()) {
common_user_error(_t('Not logged in.'));
} else if ($this->arg('METHOD') == 'POST') {
- if ($this->save_new_notice()) {
- # XXX: smarter redirects
- $user = common_current_user();
- assert(!is_null($user)); # see if... above
- # XXX: redirect to source
- # XXX: use Ajax instead of a redirect
- common_redirect(common_local_url('all',
- array('nickname' =>
- $user->nickname)));
+ $id = $this->save_new_notice();
+
+ if ($id) {
+ common_broadcast_notices($id);
+ common_redirect(common_local_url('shownotice',
+ array('notice' => $id)), 303);
} else {
common_server_error(_t('Problem saving notice.'));
}
diff --git a/doc/TODO b/doc/TODO
index 0093f3559..56f74de1b 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -21,6 +21,9 @@
+ common_local_url()
- configuration for DB_DataObject
+ date formatting
++ new notice redirects to notice page
++ date in shown notice links to notice page
++ common_redirect()
- release 0.1
- require valid nicknames
- store canonical username for comparison and fetch
diff --git a/lib/common.php b/lib/common.php
index f7b93011c..4cef9f0d9 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -33,7 +33,9 @@ define('MAX_AVATAR_SIZE', 256 * 1024);
$config =
array('site' =>
- array('name' => 'Just another µB'),
+ array('name' => 'Just another µB',
+ 'server' => 'localhost',
+ 'path' => '/'),
'avatar' =>
array('directory' => INSTALLDIR . 'files',
'path' => '/files'),
@@ -258,13 +260,13 @@ function common_avatar_url($filename) {
}
function common_local_url($action, $args) {
+ global $config;
/* XXX: pretty URLs */
$extra = '';
foreach ($args as $key => $value) {
$extra .= "&${key}=${value}";
}
- /* XXX: correct path */
- return "/index.php?action=${action}${extra}";
+ return "http://".$config['site']['server'].'/'.$config['site']['path']."/index.php?action=${action}${extra}";
}
function commmon_date_string($dt) {
@@ -272,6 +274,25 @@ function commmon_date_string($dt) {
return date(DATE_RFC822);
}
+function common_redirect($url, $code=307) {
+ static $status = (301 => "Moved Permanently",
+ 302 => "Found",
+ 303 => "See Other",
+ 307 => "Temporary Redirect");
+ header("Status: ${code} $status[$code]");
+ header("Location: $url");
+ common_element('a', array('href' => $url), $url);
+}
+
+function common_broadcast_notices($id) {
+ // XXX: broadcast notices to remote subscribers
+ // XXX: broadcast notices to SMS
+ // XXX: broadcast notices to Jabber
+ // XXX: broadcast notices to other IM
+ // XXX: use a queue system like http://code.google.com/p/microapps/wiki/NQDQ
+ return true;
+}
+
// XXX: set up gettext
function _t($str) { $str }
diff --git a/lib/stream.php b/lib/stream.php
index 912969380..6b2ab24ff 100644
--- a/lib/stream.php
+++ b/lib/stream.php
@@ -47,7 +47,9 @@ class StreamAction extends Action {
$profile->nickname);
# FIXME: URL, image, video, audio
common_element('span', array('class' => 'content'), $notice->content);
- common_element('span', array('class' => 'date'),
+ $noticeurl = common_local_url('shownotice', array('notice' => $notice->id));
+ common_element('a', array('class' => 'notice',
+ 'href' => $noticeurl),
common_date_string($notice->created));
common_end_element('div');
}