Merge branch '0.7.x' into 0.8.x

This commit is contained in:
Evan Prodromou 2009-04-07 17:14:23 -04:00
commit 4e3e4fcfff
16 changed files with 155 additions and 74 deletions

View File

@ -93,6 +93,32 @@ class AllAction extends Action
$nav->show(); $nav->show();
} }
function showPageNotice()
{
$notice = $this->user->noticesWithFriends(0, 1);
if ($notice->count()) {
return;
}
$message = sprintf(_('This is the timeline for %s and friends but no one has posted anything yet.'), $this->user->nickname) . ' ';
if (common_logged_in()) {
$current_user = common_current_user();
if ($this->user->id === $current_user->id) {
$message .= _('Try subscribing to more people, [join a group](%%action.groups) or post something yourself.');
} else {
$message .= sprintf(_('You can try to [nudge %s](./) from his profile or [post something to his or her attention](%%%%action.newnotice%%%%?status_textarea=%s).'), $this->user->nickname, '@' . $this->user->nickname);
}
}
else {
$message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to his or her attention.'), $this->user->nickname);
}
$this->elementStart('div', 'guide');
$this->raw(common_markup_to_html($message));
$this->elementEnd('div');
}
function showContent() function showContent()
{ {
$notice = $this->user->noticesWithFriends(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1); $notice = $this->user->noticesWithFriends(($this->page-1)*NOTICES_PER_PAGE, NOTICES_PER_PAGE + 1);

View File

@ -150,7 +150,7 @@ class FavoritedAction extends Action
return; return;
} }
$message = _('Favorite notices appear on this page but noone has favorited one yet.') . ' '; $message = _('Favorite notices appear on this page but no one has favorited one yet.') . ' ';
if (common_logged_in()) { if (common_logged_in()) {
$message .= _('Be the first to add a notice to your favorites by clicking the fave button next to any notice you like.'); $message .= _('Be the first to add a notice to your favorites by clicking the fave button next to any notice you like.');
@ -159,7 +159,7 @@ class FavoritedAction extends Action
$message .= _('Why not [register an account](%%action.register%%) and be the first to add a notice to your favorites!'); $message .= _('Why not [register an account](%%action.register%%) and be the first to add a notice to your favorites!');
} }
$this->elementStart('div', 'blankfiller'); $this->elementStart('div', 'guide');
$this->raw(common_markup_to_html($message)); $this->raw(common_markup_to_html($message));
$this->elementEnd('div'); $this->elementEnd('div');
} }

View File

@ -72,12 +72,23 @@ class GroupsearchAction extends SearchAction
$terms = preg_split('/[\s,]+/', $q); $terms = preg_split('/[\s,]+/', $q);
$results = new GroupSearchResults($user_group, $terms, $this); $results = new GroupSearchResults($user_group, $terms, $this);
$results->show(); $results->show();
} else { $user_group->free();
$this->element('p', 'error', _('No results')); $this->pagination($page > 1, $cnt > GROUPS_PER_PAGE,
}
$user_group->free();
$this->pagination($page > 1, $cnt > GROUPS_PER_PAGE,
$page, 'groupsearch', array('q' => $q)); $page, 'groupsearch', array('q' => $q));
} else {
$this->element('p', 'error', _('No results.'));
$this->searchSuggestions($q);
if (common_logged_in()) {
$message = _('If you can\'t find the group you\'re looking for, you can [create it](%%action.newgroup%%) yourself.');
}
else {
$message = _('Why not [register an account](%%action.register%%) and [create the group](%%action.newgroup%%) yourself!');
}
$this->elementStart('div', 'guide');
$this->raw(common_markup_to_html($message));
$this->elementEnd('div');
$user_group->free();
}
} }
} }
@ -98,10 +109,5 @@ class GroupSearchResults extends GroupList
{ {
return preg_replace($this->pattern, '<strong>\\1</strong>', htmlspecialchars($text)); return preg_replace($this->pattern, '<strong>\\1</strong>', htmlspecialchars($text));
} }
function isReadOnly()
{
return true;
}
} }

View File

@ -114,22 +114,27 @@ class NoticesearchAction extends SearchAction
$cnt = $notice->find(); $cnt = $notice->find();
} }
if ($cnt === 0) { if ($cnt === 0) {
$this->element('p', 'error', _('No results')); $this->element('p', 'error', _('No results.'));
$this->searchSuggestions($q);
if (common_logged_in()) {
$message = sprintf(_('Be the first to [post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!'), urlencode($q));
}
else {
$message = sprintf(_('Why not [register an account](%%%%action.register%%%%) and be the first to [post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!'), urlencode($q));
}
$this->elementStart('div', 'guide');
$this->raw(common_markup_to_html($message));
$this->elementEnd('div');
return; return;
} }
$terms = preg_split('/[\s,]+/', $q); $terms = preg_split('/[\s,]+/', $q);
$nl = new SearchNoticeList($notice, $this, $terms); $nl = new SearchNoticeList($notice, $this, $terms);
$cnt = $nl->show(); $cnt = $nl->show();
$this->pagination($page > 1, $cnt > NOTICES_PER_PAGE, $this->pagination($page > 1, $cnt > NOTICES_PER_PAGE,
$page, 'noticesearch', array('q' => $q)); $page, 'noticesearch', array('q' => $q));
} }
function isReadOnly()
{
return true;
}
} }
class SearchNoticeList extends NoticeList { class SearchNoticeList extends NoticeList {

View File

@ -60,14 +60,8 @@ class PeoplesearchAction extends SearchAction
function showResults($q, $page) function showResults($q, $page)
{ {
$profile = new Profile(); $profile = new Profile();
// lcase it for comparison
// $q = strtolower($q);
$search_engine = $profile->getSearchEngine('identica_people'); $search_engine = $profile->getSearchEngine('identica_people');
$search_engine->set_sort_mode('chron'); $search_engine->set_sort_mode('chron');
// Ask for an extra to see if there's more. // Ask for an extra to see if there's more.
$search_engine->limit((($page-1)*PROFILES_PER_PAGE), PROFILES_PER_PAGE + 1); $search_engine->limit((($page-1)*PROFILES_PER_PAGE), PROFILES_PER_PAGE + 1);
@ -81,14 +75,15 @@ class PeoplesearchAction extends SearchAction
$terms = preg_split('/[\s,]+/', $q); $terms = preg_split('/[\s,]+/', $q);
$results = new PeopleSearchResults($profile, $terms, $this); $results = new PeopleSearchResults($profile, $terms, $this);
$results->show(); $results->show();
} else { $profile->free();
$this->element('p', 'error', _('No results')); $this->pagination($page > 1, $cnt > PROFILES_PER_PAGE,
}
$profile->free();
$this->pagination($page > 1, $cnt > PROFILES_PER_PAGE,
$page, 'peoplesearch', array('q' => $q)); $page, 'peoplesearch', array('q' => $q));
} else {
$this->element('p', 'error', _('No results.'));
$this->searchSuggestions($q);
$profile->free();
}
} }
} }

View File

@ -179,7 +179,7 @@ class PublicAction extends Action
return; return;
} }
$message = _('This is the public timeline for %%site.name%% but noone has posted anything yet.') . ' '; $message = _('This is the public timeline for %%site.name%% but no one has posted anything yet.') . ' ';
if (common_logged_in()) { if (common_logged_in()) {
$message .= _('Be the first to post!'); $message .= _('Be the first to post!');
@ -188,7 +188,7 @@ class PublicAction extends Action
$message .= _('Why not [register an account](%%action.register%%) and be the first to post!'); $message .= _('Why not [register an account](%%action.register%%) and be the first to post!');
} }
$this->elementStart('div', 'blankfiller'); $this->elementStart('div', 'guide');
$this->raw(common_markup_to_html($message)); $this->raw(common_markup_to_html($message));
$this->elementEnd('div'); $this->elementEnd('div');
} }

View File

@ -68,7 +68,7 @@ class PublictagcloudAction extends Action
return; return;
} }
$message = _('Noone has posted a notice with a [hashtag](%%doc.tags%%) yet.') . ' '; $message = _('No one has posted a notice with a [hashtag](%%doc.tags%%) yet.') . ' ';
if (common_logged_in()) { if (common_logged_in()) {
$message .= _('Be the first to post one!'); $message .= _('Be the first to post one!');
@ -77,7 +77,7 @@ class PublictagcloudAction extends Action
$message .= _('Why not [register an account](%%action.register%%) and be the first to post one!'); $message .= _('Why not [register an account](%%action.register%%) and be the first to post one!');
} }
$this->elementStart('div', 'blankfiller'); $this->elementStart('div', 'guide');
$this->raw(common_markup_to_html($message)); $this->raw(common_markup_to_html($message));
$this->elementEnd('div'); $this->elementEnd('div');
} }

View File

@ -21,6 +21,7 @@ VALUES
('mbpidgin','mbpidgin','http://code.google.com/p/microblog-purple/', now()), ('mbpidgin','mbpidgin','http://code.google.com/p/microblog-purple/', now()),
('Mobidentica', 'Mobidentica', 'http://www.substanceofcode.com/software/mobidentica/', now()), ('Mobidentica', 'Mobidentica', 'http://www.substanceofcode.com/software/mobidentica/', now()),
('moconica','Moconica','http://moconica.com/', now()), ('moconica','Moconica','http://moconica.com/', now()),
('peoplebrowsr', 'PeopleBrowsr', 'http://www.peoplebrowsr.com/', now()),
('pocketwit','PockeTwit','http://code.google.com/p/pocketwit/', now()), ('pocketwit','PockeTwit','http://code.google.com/p/pocketwit/', now()),
('posty','Posty','http://spreadingfunkyness.com/posty/', now()), ('posty','Posty','http://spreadingfunkyness.com/posty/', now()),
('royalewithcheese','Royale With Cheese','http://p.hellyeah.org/', now()), ('royalewithcheese','Royale With Cheese','http://p.hellyeah.org/', now()),

8
doc-src/bookmarklet Normal file
View File

@ -0,0 +1,8 @@
A bookmarklet is a small piece of javascript code used as a bookmark. This one will let you post to %%site.name%% simply by selecting some text on a page and pressing the bookmarklet.
Drag-and-drop the following link to your bookmarks bar or right-click it and add it to your browser favorites to keep it handy.
<MTMarkdownOptions output='raw'>
<a href="javascript:var%20d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://%%site.server%%/%%site.path%%/notice/new',l=d.location,e=encodeURIComponent,g=f+'?status_textarea=%22'+e(s)+'%22 from '+l.href;function%20a(){if(!w.open(g,'t','toolbar=0,resizable=0,scrollbars=1,status=1,width=720,height=570')){l.href=g;}}a();void(0);">Post to %%site.name%%</a>
</MTMarkdownOptions>

View File

@ -402,13 +402,8 @@ class Action extends HTMLOutputter // lawsuit
if ($user) { if ($user) {
$this->menuItem(common_local_url('all', array('nickname' => $user->nickname)), $this->menuItem(common_local_url('all', array('nickname' => $user->nickname)),
_('Home'), _('Personal profile and friends timeline'), false, 'nav_home'); _('Home'), _('Personal profile and friends timeline'), false, 'nav_home');
}
$this->menuItem(common_local_url('peoplesearch'),
_('Search'), _('Search for people or text'), false, 'nav_search');
if ($user) {
$this->menuItem(common_local_url('profilesettings'), $this->menuItem(common_local_url('profilesettings'),
_('Account'), _('Change your email, avatar, password, profile'), false, 'nav_account'); _('Account'), _('Change your email, avatar, password, profile'), false, 'nav_account');
if (common_config('xmpp', 'enabled')) { if (common_config('xmpp', 'enabled')) {
$this->menuItem(common_local_url('imsettings'), $this->menuItem(common_local_url('imsettings'),
_('Connect'), _('Connect to IM, SMS, Twitter'), false, 'nav_connect'); _('Connect'), _('Connect to IM, SMS, Twitter'), false, 'nav_connect');
@ -416,20 +411,28 @@ class Action extends HTMLOutputter // lawsuit
$this->menuItem(common_local_url('smssettings'), $this->menuItem(common_local_url('smssettings'),
_('Connect'), _('Connect to SMS, Twitter'), false, 'nav_connect'); _('Connect'), _('Connect to SMS, Twitter'), false, 'nav_connect');
} }
$this->menuItem(common_local_url('invite'),
_('Invite'),
sprintf(_('Invite friends and colleagues to join you on %s'),
common_config('site', 'name')),
false, 'nav_invitecontact');
$this->menuItem(common_local_url('logout'), $this->menuItem(common_local_url('logout'),
_('Logout'), _('Logout from the site'), false, 'nav_logout'); _('Logout'), _('Logout from the site'), false, 'nav_logout');
} else { }
$this->menuItem(common_local_url('login'), else {
_('Login'), _('Login to the site'), false, 'nav_login');
if (!common_config('site', 'closed')) { if (!common_config('site', 'closed')) {
$this->menuItem(common_local_url('register'), $this->menuItem(common_local_url('register'),
_('Register'), _('Create an account'), false, 'nav_register'); _('Register'), _('Create an account'), false, 'nav_register');
} }
$this->menuItem(common_local_url('openidlogin'), $this->menuItem(common_local_url('openidlogin'),
_('OpenID'), _('Login with OpenID'), false, 'nav_openid'); _('OpenID'), _('Login with OpenID'), false, 'nav_openid');
$this->menuItem(common_local_url('login'),
_('Login'), _('Login to the site'), false, 'nav_login');
} }
$this->menuItem(common_local_url('doc', array('title' => 'help')), $this->menuItem(common_local_url('doc', array('title' => 'help')),
_('Help'), _('Help me!'), false, 'nav_help'); _('Help'), _('Help me!'), false, 'nav_help');
$this->menuItem(common_local_url('peoplesearch'),
_('Search'), _('Search for people or text'), false, 'nav_search');
Event::handle('EndPrimaryNav', array($this)); Event::handle('EndPrimaryNav', array($this));
} }
$this->elementEnd('ul'); $this->elementEnd('ul');
@ -923,11 +926,15 @@ class Action extends HTMLOutputter // lawsuit
* *
* @return string current URL * @return string current URL
*/ */
function selfUrl() function selfUrl()
{ {
$action = $this->trimmed('action'); $action = $this->trimmed('action');
$args = $this->args; $args = $this->args;
unset($args['action']); unset($args['action']);
if (array_key_exists('submit', $args)) {
unset($args['submit']);
}
foreach (array_keys($_COOKIE) as $cookie) { foreach (array_keys($_COOKIE) as $cookie) {
unset($args[$cookie]); unset($args[$cookie]);
} }

View File

@ -50,7 +50,7 @@ class GalleryAction extends Action
if ($this->arg('page') && $this->arg('page') != 1) { if ($this->arg('page') && $this->arg('page') != 1) {
$args['page'] = $this->arg['page']; $args['page'] = $this->arg['page'];
} }
common_redirect(common_local_url('subscriptions', $args), 301); common_redirect(common_local_url($this->trimmed('action'), $args), 301);
return false; return false;
} }
@ -71,6 +71,7 @@ class GalleryAction extends Action
$this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; $this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
$this->tag = $this->trimmed('tag'); $this->tag = $this->trimmed('tag');
$this->q = $this->trimmed('q');
return true; return true;
} }
@ -87,7 +88,7 @@ class GalleryAction extends Action
# Post from the tag dropdown; redirect to a GET # Post from the tag dropdown; redirect to a GET
if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($_SERVER['REQUEST_METHOD'] == 'POST') {
common_redirect($this->selfUrl(), 307); common_redirect($this->selfUrl(), 303);
return; return;
} }
@ -136,7 +137,7 @@ class GalleryAction extends Action
'method' => 'post')); 'method' => 'post'));
$this->dropdown('tag', _('Tag'), $content, $this->dropdown('tag', _('Tag'), $content,
_('Choose a tag to narrow list'), false, $tag); _('Choose a tag to narrow list'), false, $tag);
$this->submit('go', _('Go')); $this->submit('submit', _('Go'));
$this->elementEnd('form'); $this->elementEnd('form');
$this->elementEnd('li'); $this->elementEnd('li');
$this->elementEnd('ul'); $this->elementEnd('ul');

View File

@ -133,5 +133,31 @@ class SearchAction extends Action
$this->showResults($q, $page); $this->showResults($q, $page);
} }
} }
function searchSuggestions($q) {
$qe = urlencode($q);
$message = sprintf(_(<<<E_O_T
* Make sure all words are spelled correctly.
* Try different keywords.
* Try more general keywords.
* Try fewer keywords.
You can also try your search on other engines:
* [Twingly](http://www.twingly.com/search?q=%s&content=microblog&site=identi.ca)
* [Tweet scan](http://www.tweetscan.com/indexi.php?s=%s)
* [Google](http://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)
* [Yahoo](http://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)
E_O_T
), $qe, $qe, $qe, $qe);
$this->elementStart('dl', array('id' => 'help_search', 'class' => 'help'));
$this->element('dt', null, _('Search help'));
$this->elementStart('dd', 'instructions');
$this->raw(common_markup_to_html($message));
$this->elementEnd('dd');
$this->elementEnd('div');
}
} }

View File

@ -1,11 +1,14 @@
# This version needs to match the tarball and unpacked directory name.
%define LACVER 0.7.3
BuildRequires: php-pear BuildRequires: php-pear
BuildRequires: httpd-devel BuildRequires: httpd-devel
Name: laconica Name: laconica
Version: 0.7.2 Version: %{LACVER}
Release: 1%{?dist} Release: 1%{?dist}
License: GAGPL v3 or later License: GAGPL v3 or later
Source: laconica-0.7.2.tar.gz Source: laconica-%{version}.tar.gz
Group: Applications/Internet Group: Applications/Internet
Summary: Laconica, the Open Source microblogging platform Summary: Laconica, the Open Source microblogging platform
BuildArch: noarch BuildArch: noarch
@ -49,6 +52,8 @@ cp -a * %{buildroot}%{wwwpath}
mkdir -p %{buildroot}%{_datadir}/laconica mkdir -p %{buildroot}%{_datadir}/laconica
cp -a db %{buildroot}%{_datadir}/laconica/db cp -a db %{buildroot}%{_datadir}/laconica/db
mkdir -p %{buildroot}%{_datadir}/laconica/avatar
mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d
cat > %{buildroot}%{_sysconfdir}/httpd/conf.d/laconica.conf <<"EOF" cat > %{buildroot}%{_sysconfdir}/httpd/conf.d/laconica.conf <<"EOF"
Alias /laconica/ "/var/www/laconica/" Alias /laconica/ "/var/www/laconica/"
@ -74,6 +79,12 @@ rm -rf %buildroot
%config(noreplace) %{_sysconfdir}/httpd/conf.d/laconica.conf %config(noreplace) %{_sysconfdir}/httpd/conf.d/laconica.conf
%changelog %changelog
* Wed Apr 03 2009 Zach Copley <zach@controlyourself.ca> - 0.7.3
- Changed version number to 0.7.3.
* Fri Mar 13 2009 Ken Sedgwick <ksedgwic@bonsai.com> - 0.7.2.1-1
- Factored laconica version to the first line of the file.
* Wed Mar 03 2009 Zach Copley <zach@controlyourself.ca> - 0.7.2 * Wed Mar 03 2009 Zach Copley <zach@controlyourself.ca> - 0.7.2
- Changed version number to 0.7.2. - Changed version number to 0.7.2.

View File

@ -83,12 +83,13 @@ left:0;
border:0; border:0;
} }
#page_notice .error, .error,
#page_notice .success { .success {
padding:4px 7px; padding:4px 7px;
border-radius:4px; border-radius:4px;
-moz-border-radius:4px; -moz-border-radius:4px;
-webkit-border-radius:4px; -webkit-border-radius:4px;
margin-bottom:18px;
} }
form label.submit { form label.submit {
display:none; display:none;
@ -384,6 +385,7 @@ margin-bottom:1em;
#content { #content {
width:64.009%; width:64.009%;
min-height:259px;
padding:1.795%; padding:1.795%;
float:left; float:left;
border-radius:7px; border-radius:7px;
@ -403,6 +405,7 @@ float:left;
#aside_primary { #aside_primary {
width:27.917%; width:27.917%;
min-height:259px;
float:left; float:left;
margin-left:0.395%; margin-left:0.395%;
padding:1.795%; padding:1.795%;
@ -1143,4 +1146,13 @@ clear:both;
margin-bottom:0; margin-bottom:0;
} }
.instructions ul {
list-style-position:inside;
}
.instructions p,
.instructions ul {
margin-bottom:18px;
}
.help dt {
display:none;
}

View File

@ -37,7 +37,6 @@ background:none;
input.submit, input.submit,
#form_notice.warning #notice_text-count, #form_notice.warning #notice_text-count,
#nav_register a,
.form_settings .form_note, .form_settings .form_note,
.entity_remote_subscribe { .entity_remote_subscribe {
background-color:#A9BF4F; background-color:#A9BF4F;
@ -48,7 +47,6 @@ input:focus, textarea:focus, select:focus,
border-color:#A9BF4F; border-color:#A9BF4F;
} }
input.submit, input.submit,
#nav_register a,
.entity_remote_subscribe { .entity_remote_subscribe {
color:#fff; color:#fff;
} }
@ -97,13 +95,6 @@ cursor:wait;
text-indent:-9999px; text-indent:-9999px;
} }
#nav_register a {
text-decoration:none;
font-weight:bold;
padding:2px 4px;
}
#content, #content,
#site_nav_local_views a, #site_nav_local_views a,
#aside_primary { #aside_primary {
@ -122,10 +113,10 @@ background-color:rgba(255, 255, 255, 0.7);
} }
#page_notice .error { .error {
background-color:#F7E8E8; background-color:#F7E8E8;
} }
#page_notice .success { .success {
background-color:#EFF3DC; background-color:#EFF3DC;
} }

View File

@ -37,7 +37,6 @@ background:none;
input.submit, input.submit,
#form_notice.warning #notice_text-count, #form_notice.warning #notice_text-count,
#nav_register a,
.form_settings .form_note, .form_settings .form_note,
.entity_remote_subscribe { .entity_remote_subscribe {
background-color:#9BB43E; background-color:#9BB43E;
@ -48,7 +47,6 @@ input:focus, textarea:focus, select:focus,
border-color:#9BB43E; border-color:#9BB43E;
} }
input.submit, input.submit,
#nav_register a,
.entity_remote_subscribe { .entity_remote_subscribe {
color:#fff; color:#fff;
} }
@ -97,12 +95,6 @@ cursor:wait;
text-indent:-9999px; text-indent:-9999px;
} }
#nav_register a {
text-decoration:none;
font-weight:bold;
padding:2px 4px;
}
#content, #content,
#site_nav_local_views a, #site_nav_local_views a,
#aside_primary { #aside_primary {
@ -121,10 +113,10 @@ background-color:rgba(255, 255, 255, 0.7);
} }
#page_notice .error { .error {
background-color:#F7E8E8; background-color:#F7E8E8;
} }
#page_notice .success { .success {
background-color:#EFF3DC; background-color:#EFF3DC;
} }