summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@prodromou.name>2008-05-17 10:46:42 -0400
committerEvan Prodromou <evan@prodromou.name>2008-05-17 10:46:42 -0400
commit2d581992668b411020cc1dad16d8c05858c31a65 (patch)
tree126ca685b14a08429617e08f939edc83d8b0747f
parent047412861921706fcf8e01431b5bc1fbe63d8586 (diff)
more twiddling
Placeholder for broadcasting notice updates. Fixup the local url function to include server and path. Add server and path to configuration array. Make new notice 303 redirect to shownotice. Make redirects work. Add link in streams to notices. darcs-hash:20080517144642-84dde-c267a6e3bb0717ad5a3a819a7cf65fdd5817ea8e.gz
-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');
}