diff options
-rw-r--r-- | README | 30 | ||||
-rw-r--r-- | actions/opensearch.php | 4 | ||||
-rw-r--r-- | actions/showstream.php | 24 | ||||
-rw-r--r-- | actions/twitapistatuses.php | 1 | ||||
-rw-r--r-- | classes/Channel.php | 35 | ||||
-rw-r--r-- | lib/action.php | 8 | ||||
-rw-r--r-- | lib/noticelist.php | 13 | ||||
-rw-r--r-- | lib/popularnoticesection.php | 2 | ||||
-rw-r--r-- | theme/base/css/display.css | 31 | ||||
-rw-r--r-- | theme/base/images/icons/icon_atom.jpg | bin | 1117 -> 0 bytes | |||
-rw-r--r-- | theme/base/images/icons/icon_atom.png | bin | 0 -> 820 bytes | |||
-rw-r--r-- | theme/base/images/icons/icon_rss.jpg | bin | 1166 -> 0 bytes | |||
-rw-r--r-- | theme/base/images/icons/icon_rss.png | bin | 0 -> 777 bytes | |||
-rw-r--r-- | theme/default/css/display.css | 52 | ||||
-rw-r--r-- | theme/default/css/ie.css | 9 | ||||
-rw-r--r-- | theme/identica/css/display.css | 47 |
16 files changed, 106 insertions, 150 deletions
@@ -26,14 +26,14 @@ instant messenger programs (GTalk/Jabber), and specially-designed desktop clients that support the Twitter API. Laconica supports an open standard called OpenMicroBlogging -(http://openmicroblogging.org/) that lets users on different Web sites +<http://openmicroblogging.org/> that lets users on different Web sites or in different companies subscribe to each others' notices. It enables a distributed social network spread all across the Web. Laconica was originally developed for the Open Software Service, -Identi.ca (http://identi.ca/). It is shared with you in hope that you +Identi.ca <http://identi.ca/>. It is shared with you in hope that you too make an Open Software Service available to your users. To learn -more, please see the Open Software Service Definition 1.0: +more, please see the Open Software Service Definition 1.1: http://www.opendefinition.org/ossd @@ -404,7 +404,7 @@ config.php, and access to the Laconica database from the mail server. XMPP ---- -XMPP (eXtended Message and Presence Protocol, http://xmpp.org/) is the +XMPP (eXtended Message and Presence Protocol, <http://xmpp.org/>) is the instant-messenger protocol that drives Jabber and GTalk IM. You can distribute messages via XMPP using the system below; however, you need to run the XMPP incoming daemon to allow incoming messages as @@ -537,7 +537,7 @@ Sample cron job: Sitemaps -------- -Sitemap files (http://sitemaps.org/) are a very nice way of telling +Sitemap files <http://sitemaps.org/> are a very nice way of telling search engines and other interested bots what's available on your site and what's changed recently. You can generate sitemap files for your Laconica instance. @@ -558,7 +558,7 @@ Laconica instance. like './sitemapindex.xml'. sitemap-directory is the directory where you want the sitemaps stored, like './sitemaps/' (make sure the dir exists). URL-prefix-for-sitemaps is the full URL for the sitemap dir, - typically something like 'http://example.net/mublog/sitemaps/'. + typically something like <http://example.net/mublog/sitemaps/>. You can use several methods for submitting your sitemap index to search engines to get your site indexed. One is to add a line like the @@ -612,7 +612,7 @@ modification to use the new output format. Translation ----------- -Translations in Laconica use the gettext system (http://www.gnu.org/software/gettext/). +Translations in Laconica use the gettext system <http://www.gnu.org/software/gettext/>. Theoretically, you can add your own sub-directory to the locale/ subdirectory to add a new language to your system. You'll need to compile the ".po" files into ".mo" files, however. @@ -627,7 +627,7 @@ Backups There is no built-in system for doing backups in Laconica. You can make backups of a working Laconica system by backing up the database and -the Web directory. To backup the database use mysqldump (http://ur1.ca/7xo) +the Web directory. To backup the database use mysqldump <http://ur1.ca/7xo> and to backup the Web directory, try tar. Private @@ -819,7 +819,7 @@ db -- This section is a reference to the configuration options for -DB_DataObject (see http://ur1.ca/7xp). The ones that you may want to +DB_DataObject (see <http://ur1.ca/7xp>). The ones that you may want to set are listed below for clarity. database: a DSN (Data Source Name) for your Laconica database. This is @@ -919,7 +919,7 @@ server: If set, defines another server where avatars are stored in the the client to speed up page loading, either with another virtual server or with an NFS or SAMBA share. Clients typically only make 2 connections to a single server at a - time (http://ur1.ca/6ih), so this can parallelize the job. + time <http://ur1.ca/6ih>, so this can parallelize the job. Defaults to null. public @@ -1000,7 +1000,7 @@ memcached --------- You can get a significant boost in performance by caching some -database data in memcached (http://www.danga.com/memcached/). +database data in memcached <http://www.danga.com/memcached/>. enabled: Set to true to enable. Default false. server: a string with the hostname of the memcached server. Can also @@ -1011,7 +1011,7 @@ sphinx You can get a significant boost in performance using Sphinx Search instead of your database server to search for users and notices. -(http://sphinxsearch.com/). +<http://sphinxsearch.com/>. enabled: Set to true to enable. Default false. server: a string with the hostname of the sphinx server. @@ -1024,7 +1024,7 @@ A catch-all for integration with other systems. source: The name to use for the source of posts to Twitter. Defaults to 'laconica', but if you request your own source name from - Twitter (http://twitter.com/help/request_source), you can use + Twitter <http://twitter.com/help/request_source>, you can use that here instead. Status updates on Twitter will then have links to your site. @@ -1101,7 +1101,7 @@ Unstable version If you're adventurous or impatient, you may want to install the development version of Laconica. To get it, use the git version -control tool (http://git-scm.com/) like so: +control tool <http://git-scm.com/> like so: git clone http://laconi.ca/software/laconica.git @@ -1114,7 +1114,7 @@ There are several ways to get more information about Laconica. * There is a mailing list for Laconica developers and admins at http://mail.laconi.ca/mailman/listinfo/laconica-dev -* The #laconica IRC channel on freenode.net (http://www.freenode.net/). +* The #laconica IRC channel on freenode.net <http://www.freenode.net/>. * The Laconica wiki, http://laconi.ca/trac/ Feedback diff --git a/actions/opensearch.php b/actions/opensearch.php index 7709249bb..2eb818306 100644 --- a/actions/opensearch.php +++ b/actions/opensearch.php @@ -67,7 +67,7 @@ class OpensearchAction extends Action $short_name = _('Notice Search'); } header('Content-Type: text/html'); - common_start_xml(); + $this->startXML(); $this->elementStart('OpenSearchDescription', array('xmlns' => 'http://a9.com/-/spec/opensearch/1.1/')); $short_name = common_config('site', 'name').' '.$short_name; $this->element('ShortName', null, $short_name); @@ -81,7 +81,7 @@ class OpensearchAction extends Action $this->element('OutputEncoding', null, 'UTF-8'); $this->element('InputEncoding', null, 'UTF-8'); $this->elementEnd('OpenSearchDescription'); - common_end_xml(); + $this->endXML(); } function isReadOnly() diff --git a/actions/showstream.php b/actions/showstream.php index eab1fc0a2..ecd952635 100644 --- a/actions/showstream.php +++ b/actions/showstream.php @@ -312,14 +312,22 @@ class ShowstreamAction extends Action } $this->elementEnd('div'); - //XXX: entity_actions doesn't need to be outputted if entity is looking at their own profile $this->elementStart('div', 'entity_actions'); $this->element('h2', null, _('User actions')); $this->elementStart('ul'); - $this->elementStart('li', array('class' => 'entity_subscribe')); $cur = common_current_user(); + + if ($cur && $cur->id == $this->profile->id) { + $this->elementStart('li', 'entity_edit'); + $this->element('a', array('href' => common_local_url('profilesettings'), + 'title' => _('Edit profile settings')), + _('Edit')); + $this->elementEnd('li'); + } + if ($cur) { if ($cur->id != $this->profile->id) { + $this->elementStart('li', 'entity_subscribe'); if ($cur->isSubscribed($this->profile)) { $usf = new UnsubscribeForm($this, $this->profile); $usf->show(); @@ -327,24 +335,24 @@ class ShowstreamAction extends Action $sf = new SubscribeForm($this, $this->profile); $sf->show(); } + $this->elementEnd('li'); } } else { + $this->elementStart('li', 'entity_subscribe'); $this->showRemoteSubscribeLink(); + $this->elementEnd('li'); } - $this->elementEnd('li'); - -// common_profile_new_message_nudge($cur, $this->user, $this->profile); $user = User::staticGet('id', $this->profile->id); if ($cur && $cur->id != $user->id && $cur->mutuallySubscribed($user)) { - $this->elementStart('li', array('class' => 'entity_send-a-message')); + $this->elementStart('li', 'entity_send-a-message'); $this->element('a', array('href' => common_local_url('newmessage', array('to' => $user->id)), 'title' => _('Send a direct message to this user')), _('Message')); $this->elementEnd('li'); if ($user->email && $user->emailnotifynudge) { - $this->elementStart('li', array('class' => 'entity_nudge')); + $this->elementStart('li', 'entity_nudge'); $nf = new NudgeForm($this, $user); $nf->show(); $this->elementEnd('li'); @@ -353,7 +361,7 @@ class ShowstreamAction extends Action if ($cur && $cur->id != $this->profile->id) { $blocked = $cur->hasBlocked($this->profile); - $this->elementStart('li', array('class' => 'entity_block')); + $this->elementStart('li', 'entity_block'); if ($blocked) { $ubf = new UnblockForm($this, $this->profile); $ubf->show(); diff --git a/actions/twitapistatuses.php b/actions/twitapistatuses.php index a35f4b12e..18e24c0f5 100644 --- a/actions/twitapistatuses.php +++ b/actions/twitapistatuses.php @@ -450,7 +450,6 @@ class TwitapistatusesAction extends TwitterapiAction if ($user->id == $notice->profile_id) { $replies = new Reply; $replies->get('notice_id', $notice_id); - common_dequeue_notice($notice); $replies->delete(); $notice->delete(); diff --git a/classes/Channel.php b/classes/Channel.php index 2e3e4e8d4..c03efef48 100644 --- a/classes/Channel.php +++ b/classes/Channel.php @@ -19,7 +19,7 @@ if (!defined('LACONICA')) { exit(1); } -class Channel +class Channel extends Action { function on($user) @@ -129,6 +129,7 @@ class WebChannel extends Channel # XXX: buffer all output and send it at the end # XXX: even better, redirect to appropriate page # depending on what command was run + common_show_header(_('Command results')); common_element('p', null, $text); common_show_footer(); @@ -146,26 +147,26 @@ class AjaxWebChannel extends WebChannel function output($user, $text) { - common_start_html('text/xml;charset=utf-8', true); - common_element_start('head'); - common_element('title', null, _('Command results')); - common_element_end('head'); - common_element_start('body'); - common_element('p', array('id' => 'command_result'), $text); - common_element_end('body'); - common_element_end('html'); + $this->startHTML('text/xml;charset=utf-8', true); + $this->elementStart('head'); + $this->element('title', null, _('Command results')); + $this->elementEnd('head'); + $this->elementStart('body'); + $this->element('p', array('id' => 'command_result'), $text); + $this->elementEnd('body'); + $this->elementEnd('html'); } function error($user, $text) { - common_start_html('text/xml;charset=utf-8', true); - common_element_start('head'); - common_element('title', null, _('Ajax Error')); - common_element_end('head'); - common_element_start('body'); - common_element('p', array('id' => 'error'), $text); - common_element_end('body'); - common_element_end('html'); + $this->startHTML('text/xml;charset=utf-8', true); + $this->elementStart('head'); + $this->element('title', null, _('Ajax error')); + $this->elementEnd('head'); + $this->elementStart('body'); + $this->element('p', array('id' => 'error'), $text); + $this->elementEnd('body'); + $this->elementEnd('html'); } } diff --git a/lib/action.php b/lib/action.php index 587d2ab13..f9b068878 100644 --- a/lib/action.php +++ b/lib/action.php @@ -162,15 +162,15 @@ class Action extends HTMLOutputter // lawsuit 'media' => 'screen, projection, tv')); $this->comment('[if IE]><link rel="stylesheet" type="text/css" '. 'href="'.theme_path('css/ie.css', 'base').'?version='.LACONICA_VERSION.'" /><![endif]'); - $this->comment('[if IE]><link rel="stylesheet" type="text/css" '. - 'href="'.theme_path('css/ie.css', null).'?version='.LACONICA_VERSION.'" /><![endif]'); foreach (array(6,7) as $ver) { - if (file_exists(theme_file('ie'.$ver.'.css'))) { + if (file_exists(theme_file('css/ie'.$ver.'.css', 'base'))) { // Yes, IE people should be put in jail. $this->comment('[if lte IE '.$ver.']><link rel="stylesheet" type="text/css" '. 'href="'.theme_path('css/ie'.$ver.'.css', 'base').'?version='.LACONICA_VERSION.'" /><![endif]'); } } + $this->comment('[if IE]><link rel="stylesheet" type="text/css" '. + 'href="'.theme_path('css/ie.css', null).'?version='.LACONICA_VERSION.'" /><![endif]'); } /** @@ -257,7 +257,7 @@ class Action extends HTMLOutputter // lawsuit function showBody() { $this->elementStart('body', array('id' => $this->trimmed('action'))); - $this->elementStart('div', 'wrap'); + $this->elementStart('div', array('id' => 'wrap')); $this->showHeader(); $this->showCore(); $this->showFooter(); diff --git a/lib/noticelist.php b/lib/noticelist.php index 7c88c33cc..3ef6691af 100644 --- a/lib/noticelist.php +++ b/lib/noticelist.php @@ -203,11 +203,14 @@ class NoticeListItem extends Widget function showNoticeOptions() { - $this->out->elementStart('div', 'notice-options'); - $this->showFaveForm(); - $this->showReplyLink(); - $this->showDeleteLink(); - $this->out->elementEnd('div'); + $user = common_current_user(); + if ($user) { + $this->out->elementStart('div', 'notice-options'); + $this->showFaveForm(); + $this->showReplyLink(); + $this->showDeleteLink(); + $this->out->elementEnd('div'); + } } /** diff --git a/lib/popularnoticesection.php b/lib/popularnoticesection.php index 89daaa563..5734d8001 100644 --- a/lib/popularnoticesection.php +++ b/lib/popularnoticesection.php @@ -31,7 +31,7 @@ if (!defined('LACONICA')) { exit(1); } -define('NOTICES_PER_SECTION', 6); +define('NOTICES_PER_SECTION', 5); /** * Base class for sections showing lists of notices diff --git a/theme/base/css/display.css b/theme/base/css/display.css index 809c1ba6f..242818c9a 100644 --- a/theme/base/css/display.css +++ b/theme/base/css/display.css @@ -20,8 +20,6 @@ font-family:sans-serif; font-size:1em; line-height:1.65; position:relative; -margin:0 auto; -width:71.714em; } h1,h2,h3,h4,h5,h6 { text-transform:uppercase; @@ -240,10 +238,9 @@ display:none; #site_notice { position:absolute; -right:0; -top:49px; -float:right; -width:300px; +top:65px; +right:18px; +width:250px; } #page_notice { clear:both; @@ -254,6 +251,7 @@ margin-bottom:18px; #anon_notice { float:left; width:432px; +width:28.052em; padding:11px; border-radius:7px; -moz-border-radius:7px; @@ -361,9 +359,10 @@ margin-right:4px; } #wrap { -float:left; margin:0 auto; width:71.714em; +width:1003px; +overflow:hidden; } #core { @@ -391,9 +390,9 @@ float:left; } #aside_primary { -width:284px; +width:280px; float:left; -margin-left:2px; +margin-left:4px; padding:18px; border-radius:7px; -moz-border-radius:7px; @@ -606,12 +605,14 @@ display:block; .form_user_block input.submit, .form_user_unblock input.submit, .entity_send-a-message a, +.entity_edit a, .form_user_nudge input.submit, .entity_nudge p { border:0; padding-left:20px; } +.entity_edit a, .entity_send-a-message a, .entity_nudge p { padding:4px 4px 4px 23px; @@ -749,7 +750,7 @@ border-radius:4px; /* NOTICES */ #notices_primary { float:left; -width:644px; +width:100%; border-radius:7px; -moz-border-radius:7px; -webkit-border-radius:7px; @@ -1063,13 +1064,16 @@ margin-bottom:0; } .section .notice { -padding-top:11px; -padding-bottom:11px; +padding-top:7px; +padding-bottom:7px; +border-top:0; } .section .notice:first-child { padding-top:0; -border-top:0; +} +.section .notice .fn { +display:none; } @@ -1154,3 +1158,4 @@ clear:both; #form_settings_avatar .form_actions { margin-bottom:0; } + diff --git a/theme/base/images/icons/icon_atom.jpg b/theme/base/images/icons/icon_atom.jpg Binary files differdeleted file mode 100644 index 22853edc4..000000000 --- a/theme/base/images/icons/icon_atom.jpg +++ /dev/null diff --git a/theme/base/images/icons/icon_atom.png b/theme/base/images/icons/icon_atom.png Binary files differnew file mode 100644 index 000000000..6a001f11a --- /dev/null +++ b/theme/base/images/icons/icon_atom.png diff --git a/theme/base/images/icons/icon_rss.jpg b/theme/base/images/icons/icon_rss.jpg Binary files differdeleted file mode 100644 index da23422d0..000000000 --- a/theme/base/images/icons/icon_rss.jpg +++ /dev/null diff --git a/theme/base/images/icons/icon_rss.png b/theme/base/images/icons/icon_rss.png Binary files differnew file mode 100644 index 000000000..0ccd1ce25 --- /dev/null +++ b/theme/base/images/icons/icon_rss.png diff --git a/theme/default/css/display.css b/theme/default/css/display.css index 97a6a12a8..da1ba6717 100644 --- a/theme/default/css/display.css +++ b/theme/default/css/display.css @@ -67,7 +67,6 @@ color:#002E6E; .profile { border-top-color:#D1D9E4; } -.section .notice, .section .profile { border-top-color:#97BFD1; } @@ -92,12 +91,6 @@ color:#333; color:#000; } -#form_notice #notice_data-attach_view { -background-image:url(../images/icons/twotone/green/paper-clip.gif); -background-repeat:no-repeat; -background-position:0 45%; -background-color:transparent; -} #nav_register a { text-decoration:none; @@ -123,8 +116,6 @@ background-color:rgba(255, 255, 255, 0.7); } - - #page_notice .error { background-color:#F7E8E8; } @@ -144,26 +135,21 @@ background-color:#A9BF4F; } - - #export_data li a { background-repeat:no-repeat; background-position:0 45%; } #export_data li a.rss { -background-image:url(../../base/images/icons/icon_rss.jpg); +background-image:url(../../base/images/icons/icon_rss.png); } #export_data li a.atom { -background-image:url(../../base/images/icons/icon_atom.jpg); +background-image:url(../../base/images/icons/icon_atom.png); } #export_data li a.foaf { background-image:url(../../base/images/icons/icon_foaf.gif); } -#export_data li a.export_vcard { -background-image:url(../../base/images/icons/icon_vcard.gif); -} - +.entity_edit a, .entity_send-a-message a, .form_user_nudge input.submit, .form_user_block input.submit, @@ -185,6 +171,9 @@ color:#fff; background-color:#97BFD1; } +.entity_edit a { +background-image:url(../images/icons/twotone/green/edit.gif); +} .entity_send-a-message a { background-image:url(../images/icons/twotone/green/quote.gif); } @@ -204,30 +193,6 @@ background-image:url(../images/icons/twotone/green/shield.gif); background-color:#fcfcfc; } -.notice-data a span { -background-color:transparent; -background-repeat:no-repeat; -background-position:0 45%; -} -.notice_video .notice-data a span { -background-image:url(../images/icons/twotone/green/camera.gif); -} -.notice_audio .notice-data a span { -background-image:url(../images/icons/twotone/green/music.gif); -} -.notice_image .notice-data a span { -background-image:url(../images/icons/twotone/green/search.gif); -} -.notice_event .notice-data a span { -background-image:url(../images/icons/twotone/green/calendar.gif); -} -.notice_location .notice-data a span { -background-image:url(../images/icons/twotone/green/flag.gif); -} -.notice_document .notice-data a span { -background-image:url(../images/icons/twotone/green/document.gif); -} - .notice-options .notice_reply a, .notice-options form input.submit { background-color:transparent; @@ -274,12 +239,13 @@ background:transparent url(../images/icons/twotone/green/news.gif) no-repeat 0 4 .pagination .nav_prev a, .pagination .nav_next a { background-repeat:no-repeat; +border-color:#D1D9E4; } .pagination .nav_prev a { background-image:url(../images/icons/twotone/green/arrow-left.gif); -background-position:0 45%; +background-position:10% 45%; } .pagination .nav_next a { background-image:url(../images/icons/twotone/green/arrow-right.gif); -background-position:100% 45%; +background-position:90% 45%; } diff --git a/theme/default/css/ie.css b/theme/default/css/ie.css new file mode 100644 index 000000000..2b06768ea --- /dev/null +++ b/theme/default/css/ie.css @@ -0,0 +1,9 @@ +/* IE specific styles */ + +.notice-options input.submit { +color:#fff; +} + +#site_nav_local_views a { +background-color:#ACCCDA; +} diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css index beb5a2c13..6fcd730a9 100644 --- a/theme/identica/css/display.css +++ b/theme/identica/css/display.css @@ -67,7 +67,6 @@ color:#002E6E; .profile { border-top-color:#CEE1E9; } -.section .notice, .section .profile { border-top-color:#87B4C8; } @@ -92,12 +91,6 @@ color:#333; color:#000; } -#form_notice #notice_data-attach_view { -background-image:url(../images/icons/twotone/green/paper-clip.gif); -background-repeat:no-repeat; -background-position:0 45%; -background-color:transparent; -} #nav_register a { text-decoration:none; @@ -123,8 +116,6 @@ background-color:rgba(255, 255, 255, 0.7); } - - #page_notice .error { background-color:#F7E8E8; } @@ -144,26 +135,21 @@ background-color:#9BB43E; } - - #export_data li a { background-repeat:no-repeat; background-position:0 45%; } #export_data li a.rss { -background-image:url(../../base/images/icons/icon_rss.jpg); +background-image:url(../../base/images/icons/icon_rss.png); } #export_data li a.atom { -background-image:url(../../base/images/icons/icon_atom.jpg); +background-image:url(../../base/images/icons/icon_atom.png); } #export_data li a.foaf { background-image:url(../../base/images/icons/icon_foaf.gif); } -#export_data li a.export_vcard { -background-image:url(../../base/images/icons/icon_vcard.gif); -} - +.entity_edit a, .entity_send-a-message a, .form_user_nudge input.submit, .form_user_block input.submit, @@ -185,6 +171,9 @@ color:#fff; background-color:#87B4C8; } +.entity_edit a { +background-image:url(../images/icons/twotone/green/edit.gif); +} .entity_send-a-message a { background-image:url(../images/icons/twotone/green/quote.gif); } @@ -204,30 +193,6 @@ background-image:url(../images/icons/twotone/green/shield.gif); background-color:#fcfcfc; } -.notice-data a span { -background-color:transparent; -background-repeat:no-repeat; -background-position:0 45%; -} -.notice_video .notice-data a span { -background-image:url(../images/icons/twotone/green/camera.gif); -} -.notice_audio .notice-data a span { -background-image:url(../images/icons/twotone/green/music.gif); -} -.notice_image .notice-data a span { -background-image:url(../images/icons/twotone/green/search.gif); -} -.notice_event .notice-data a span { -background-image:url(../images/icons/twotone/green/calendar.gif); -} -.notice_location .notice-data a span { -background-image:url(../images/icons/twotone/green/flag.gif); -} -.notice_document .notice-data a span { -background-image:url(../images/icons/twotone/green/document.gif); -} - .notice-options .notice_reply a, .notice-options form input.submit { background-color:transparent; |