Merge remote branch 'statusnet/testing' into testing

This commit is contained in:
James Walker 2010-03-04 01:31:19 -05:00
commit 9cbeac5695
11 changed files with 207 additions and 12 deletions

View File

@ -1106,7 +1106,7 @@ class Notice extends Memcached_DataObject
return $groups; return $groups;
} }
function asAtomEntry($namespace=false, $source=false) function asAtomEntry($namespace=false, $source=false, $author=true)
{ {
$profile = $this->getProfile(); $profile = $this->getProfile();
@ -1151,8 +1151,10 @@ class Notice extends Memcached_DataObject
$xs->element('title', null, $this->content); $xs->element('title', null, $this->content);
$xs->raw($profile->asAtomAuthor()); if ($author) {
$xs->raw($profile->asActivityActor()); $xs->raw($profile->asAtomAuthor());
$xs->raw($profile->asActivityActor());
}
$xs->element('link', array('rel' => 'alternate', $xs->element('link', array('rel' => 'alternate',
'type' => 'text/html', 'type' => 'text/html',

View File

@ -1060,6 +1060,18 @@ class Activity
} }
$this->entry = $entry; $this->entry = $entry;
// @fixme Don't send in a DOMDocument
if ($feed instanceof DOMDocument) {
common_log(
LOG_WARNING,
'Activity::__construct() - '
. 'DOMDocument passed in for feed by mistake. '
. "Expecting a 'feed' DOMElement."
);
$feed = $feed->getElementsByTagName('feed')->item(0);
}
$this->feed = $feed; $this->feed = $feed;
$pubEl = $this->_child($entry, self::PUBLISHED, self::ATOM); $pubEl = $this->_child($entry, self::PUBLISHED, self::ATOM);

View File

@ -107,9 +107,19 @@ class AtomNoticeFeed extends Atom10Feed
*/ */
function addEntryFromNotice($notice) function addEntryFromNotice($notice)
{ {
$this->addEntryRaw($notice->asAtomEntry()); $source = $this->showSource();
$author = $this->showAuthor();
$this->addEntryRaw($notice->asAtomEntry(false, $source, $author));
} }
function showSource()
{
return true;
}
function showAuthor()
{
return true;
}
} }

View File

@ -61,6 +61,7 @@ class AtomUserNoticeFeed extends AtomNoticeFeed
if (!empty($user)) { if (!empty($user)) {
$profile = $user->getProfile(); $profile = $user->getProfile();
$this->addAuthor($profile->nickname, $user->uri); $this->addAuthor($profile->nickname, $user->uri);
$this->setActivitySubject($profile->asActivityNoun('subject'));
} }
$title = sprintf(_("%s timeline"), $user->nickname); $title = sprintf(_("%s timeline"), $user->nickname);
@ -105,4 +106,14 @@ class AtomUserNoticeFeed extends AtomNoticeFeed
{ {
return $this->user; return $this->user;
} }
function showSource()
{
return false;
}
function showAuthor()
{
return false;
}
} }

View File

@ -398,7 +398,7 @@ class OStatusSubAction extends Action
function title() function title()
{ {
// TRANS: Page title for OStatus remote subscription form // TRANS: Page title for OStatus remote subscription form
return _m('Authorize subscription'); return _m('Confirm');
} }
/** /**

View File

@ -52,7 +52,8 @@ margin-bottom:0;
width:405px; width:405px;
} }
.aside #entity_subscriptions .more { .aside #entity_subscriptions .more,
.aside #entity_groups .more {
float:left; float:left;
} }

131
tests/UserFeedParseTest.php Normal file
View File

@ -0,0 +1,131 @@
<?php
if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
print "This script must be run from the command line\n";
exit();
}
define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
define('STATUSNET', true);
require_once INSTALLDIR . '/lib/common.php';
class UserFeedParseTests extends PHPUnit_Framework_TestCase
{
public function testFeed1()
{
global $_testfeed1;
$dom = DOMDocument::loadXML($_testfeed1);
$this->assertFalse(empty($dom));
$entries = $dom->getElementsByTagName('entry');
$entry1 = $entries->item(0);
$this->assertFalse(empty($entry1));
$feedEl = $dom->getElementsByTagName('feed')->item(0);
$this->assertFalse(empty($feedEl));
// Test actor (from activity:subject)
$act1 = new Activity($entry1, $feedEl);
$this->assertFalse(empty($act1));
$this->assertFalse(empty($act1->actor));
$this->assertEquals($act1->actor->type, ActivityObject::PERSON);
$this->assertEquals($act1->actor->title, 'Zach Copley');
$this->assertEquals($act1->actor->id, 'http://localhost/statusnet/user/1');
$this->assertEquals($act1->actor->link, 'http://localhost/statusnet/zach');
$avatars = $act1->actor->avatarLinks;
$this->assertEquals(
$avatars[0]->url,
'http://localhost/statusnet/theme/default/default-avatar-profile.png'
);
$this->assertEquals(
$avatars[1]->url,
'http://localhost/statusnet/theme/default/default-avatar-stream.png'
);
$this->assertEquals(
$avatars[2]->url,
'http://localhost/statusnet/theme/default/default-avatar-mini.png'
);
$this->assertEquals($act1->actor->displayName, 'Zach Copley');
$poco = $act1->actor->poco;
$this->assertEquals($poco->preferredUsername, 'zach');
$this->assertEquals($poco->address->formatted, 'El Cerrito, CA');
$this->assertEquals($poco->urls[0]->type, 'homepage');
$this->assertEquals($poco->urls[0]->value, 'http://zach.copley.name');
$this->assertEquals($poco->urls[0]->primary, 'true');
$this->assertEquals($poco->note, 'Zach Hack Attack');
// test the post
//var_export($act1);
$this->assertEquals($act1->object->type, 'http://activitystrea.ms/schema/1.0/note');
$this->assertEquals($act1->object->title, 'And now for something completely insane...');
$this->assertEquals($act1->object->content, 'And now for something completely insane...');
$this->assertEquals($act1->object->id, 'http://localhost/statusnet/notice/3');
}
}
$_testfeed1 = <<<TESTFEED1
<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0">
<id>http://localhost/statusnet/api/statuses/user_timeline/1.atom</id>
<title>zach timeline</title>
<subtitle>Updates from zach on Zach Dev!</subtitle>
<logo>http://localhost/statusnet/theme/default/default-avatar-profile.png</logo>
<updated>2010-03-04T01:41:14+00:00</updated>
<author>
<name>zach</name>
<uri>http://localhost/statusnet/user/1</uri>
</author>
<link href="http://localhost/statusnet/zach" rel="alternate" type="text/html"/>
<link href="http://localhost/statusnet/main/sup#1" rel="http://api.friendfeed.com/2008/03#sup" type="application/json"/>
<link href="http://localhost/statusnet/main/push/hub" rel="hub"/>
<link href="http://localhost/statusnet/main/salmon/user/1" rel="http://salmon-protocol.org/ns/salmon-replies"/>
<link href="http://localhost/statusnet/main/salmon/user/1" rel="http://salmon-protocol.org/ns/salmon-mention"/>
<link href="http://localhost/statusnet/api/statuses/user_timeline/1.atom" rel="self" type="application/atom+xml"/>
<activity:subject>
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
<id>http://localhost/statusnet/user/1</id>
<title>Zach Copley</title>
<link rel="alternate" type="text/html" href="http://localhost/statusnet/zach"/>
<link rel="avatar" type="image/png" media:width="96" media:height="96" href="http://localhost/statusnet/theme/default/default-avatar-profile.png"/>
<link rel="avatar" type="image/png" media:width="48" media:height="48" href="http://localhost/statusnet/theme/default/default-avatar-stream.png"/>
<link rel="avatar" type="image/png" media:width="24" media:height="24" href="http://localhost/statusnet/theme/default/default-avatar-mini.png"/>
<poco:preferredUsername>zach</poco:preferredUsername>
<poco:displayName>Zach Copley</poco:displayName>
<poco:note>Zach Hack Attack</poco:note>
<poco:address>
<poco:formatted>El Cerrito, CA</poco:formatted>
</poco:address>
<poco:urls>
<poco:type>homepage</poco:type>
<poco:value>http://zach.copley.name</poco:value>
<poco:primary>true</poco:primary>
</poco:urls>
</activity:subject>
<entry>
<title>And now for something completely insane...</title>
<link rel="alternate" type="text/html" href="http://localhost/statusnet/notice/3"/>
<id>http://localhost/statusnet/notice/3</id>
<published>2010-03-04T01:41:07+00:00</published>
<updated>2010-03-04T01:41:07+00:00</updated>
<link rel="ostatus:conversation" href="http://localhost/statusnet/conversation/3"/>
<content type="html">And now for something completely insane...</content>
</entry>
</feed>
TESTFEED1;

View File

@ -46,6 +46,10 @@
White underscore with green background White underscore with green background
White C with green background White C with green background
White magic wand with green background White magic wand with green background
Green badge with white background
Green sandbox with white background
Green speech bubble broken with white background
Green person with tie with white background
*/ */
Created by various authors Created by various authors

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -358,15 +358,27 @@ background-position: 5px -1445px;
.entity_delete input.submit { .entity_delete input.submit {
background-position: 5px -1511px; background-position: 5px -1511px;
} }
.entity_sandbox .form_user_unsandbox input.submit {
background-position: 5px -2568px;
}
.entity_silence .form_user_unsilence input.submit {
background-position: 5px -2633px;
}
.entity_role p { .entity_role p {
background-position: 5px -2436px; background-position: 5px -2436px;
} }
.entity_role_administrator input.submit { .entity_role_administrator .form_user_grantrole input.submit {
background-position: 5px -983px; background-position: 5px -983px;
} }
.entity_role_moderator input.submit { .entity_role_moderator .form_user_grantrole input.submit {
background-position: 5px -1313px; background-position: 5px -1313px;
} }
.entity_role_administrator .form_user_revokerole input.submit {
background-position: 5px -2699px;
}
.entity_role_moderator .form_user_revokerole input.submit {
background-position: 5px -2501px;
}
.form_reset_key input.submit { .form_reset_key input.submit {
background-position: 5px -1973px; background-position: 5px -1973px;
} }

View File

@ -358,15 +358,27 @@ background-position: 5px -1445px;
.entity_delete input.submit { .entity_delete input.submit {
background-position: 5px -1511px; background-position: 5px -1511px;
} }
.entity_sandbox .form_user_unsandbox input.submit {
background-position: 5px -2568px;
}
.entity_silence .form_user_unsilence input.submit {
background-position: 5px -2633px;
}
.entity_role p { .entity_role p {
background-position: 5px -2436px; background-position: 5px -2436px;
} }
.entity_role_administrator input.submit { .entity_role_administrator .form_user_grantrole input.submit {
background-position: 5px -983px; background-position: 5px -983px;
} }
.entity_role_moderator input.submit { .entity_role_moderator .form_user_grantrole input.submit {
background-position: 5px -1313px; background-position: 5px -1313px;
} }
.entity_role_administrator .form_user_revokerole input.submit {
background-position: 5px -2699px;
}
.entity_role_moderator .form_user_revokerole input.submit {
background-position: 5px -2501px;
}
.form_reset_key input.submit { .form_reset_key input.submit {
background-position: 5px -1973px; background-position: 5px -1973px;
} }