summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarven Capadisli <csarven@csarven-laptop.(none)>2009-05-20 19:40:29 -0400
committerSarven Capadisli <csarven@csarven-laptop.(none)>2009-05-20 19:40:29 -0400
commitd835267cc7c197eb0b8d54d9becf752f07af4d6f (patch)
tree7f69a11e4dd33136bf9f5fd7a64b5c290b6b230a
parent4676171162a5c5953bc5104f2c569555e04c462f (diff)
parentb23d4230811db02266b9df0a3cefc5e54c36d169 (diff)
Merge branch '0.8.x' of git://gitorious.org/laconica/dev into 0.8.x
-rw-r--r--actions/designsettings.php37
-rw-r--r--config.php.sample395
-rw-r--r--js/farbtastic/farbtastic.go.js116
-rw-r--r--js/jcrop/jquery.Jcrop.go.js77
-rw-r--r--lib/common.php2
-rw-r--r--plugins/FBConnect/FBConnectPlugin.php20
-rwxr-xr-xscripts/twitterstatusfetcher.php3
-rw-r--r--theme/base/css/display.css11
-rw-r--r--theme/default/css/display.css7
9 files changed, 357 insertions, 311 deletions
diff --git a/actions/designsettings.php b/actions/designsettings.php
index 0deb3f684..8a7c26104 100644
--- a/actions/designsettings.php
+++ b/actions/designsettings.php
@@ -82,7 +82,16 @@ class DesignsettingsAction extends AccountSettingsAction
$this->element('legend', null, _('Change background image'));
$this->elementStart('ul', 'form_data');
$this->elementStart('li');
- $this->element('p', null, _('Upload background image'));
+ $this->element('label', array('for' => 'design_ background-image_file'),
+ _('Upload file'));
+ $this->element('input', array('name' => 'design_background-image_file',
+ 'type' => 'file',
+ 'id' => 'design_background-image_file'));
+ $this->element('p', 'form_guide', _('You can upload your personal background image. The maximum file size is 2Mb.'));
+ $this->element('input', array('name' => 'MAX_FILE_SIZE',
+ 'type' => 'hidden',
+ 'id' => 'MAX_FILE_SIZE',
+ 'value' => ImageFile::maxFileSizeInt()));
$this->elementEnd('li');
$this->elementEnd('ul');
$this->elementEnd('fieldset');
@@ -108,15 +117,22 @@ class DesignsettingsAction extends AccountSettingsAction
$userSwatch = ($userSwatch) ? json_decode($userSwatch, true) : $defaultSwatch;
$s = 0;
- $labelSwatch = array('Background color',
- 'Content background color',
- 'Sidebar background color',
- 'Text color',
- 'Link color');
+ $labelSwatch = array('Background',
+ 'Content',
+ 'Sidebar',
+ 'Text',
+ 'Links');
foreach($userSwatch as $propertyvalue => $value) {
- $foo = array_values($value); //Is this necessary? $value[0] doesn't work because of invalid key
+ $foo = array_values($value);
$this->elementStart('li');
- $this->input("swatch-".$s, $labelSwatch[$s], $foo[0]);
+ $this->element('label', array('for' => 'swatch-'.$s), _($labelSwatch[$s]));
+ $this->element('input', array('name' => 'swatch-'.$s, //prefer swatch[$s] ?
+ 'type' => 'text',
+ 'id' => 'swatch-'.$s,
+ 'class' => 'swatch',
+ 'maxlength' => '7',
+ 'size' => '7',
+ 'value' => $foo[0]));
$this->elementEnd('li');
$s++;
}
@@ -125,6 +141,11 @@ class DesignsettingsAction extends AccountSettingsAction
$this->elementEnd('fieldset');
$this->submit('save', _('Save'));
+ $this->element('input', array('id' => 'settings_design_reset',
+ 'type' => 'reset',
+ 'value' => 'Reset',
+ 'class' => 'form_action-secondary'));
+
/*TODO: Check submitted form values:
json_encode(form values)
if submitted Swatch == DefaultSwatch, don't store in DB.
diff --git a/config.php.sample b/config.php.sample
index 826b086a3..4f438dc5e 100644
--- a/config.php.sample
+++ b/config.php.sample
@@ -3,219 +3,206 @@
if (!defined('LACONICA')) { exit(1); }
-#If you have downloaded libraries in random little places, you
-#can add the paths here
+// If you have downloaded libraries in random little places, you
+// can add the paths here
-#$extra_path = array("/opt/php-openid-2.0.1", "/usr/local/share/php");
-#set_include_path(implode(PATH_SEPARATOR, $extra_path) . PATH_SEPARATOR . get_include_path());
+// $extra_path = array("/opt/php-openid-2.0.1", "/usr/local/share/php");
+// set_include_path(implode(PATH_SEPARATOR, $extra_path) . PATH_SEPARATOR . get_include_path());
-# We get called by common.php, $config is a tree with lots of config
-# options
-# These are for configuring your URLs
+// We get called by common.php, $config is a tree with lots of config
+// options
+// These are for configuring your URLs
$config['site']['name'] = 'Just another Laconica microblog';
$config['site']['server'] = 'localhost';
$config['site']['path'] = 'laconica';
-#$config['site']['fancy'] = false;
-#$config['site']['theme'] = 'default';
-#To enable the built-in mobile style sheet, defaults to false.
-#$config['site']['mobile'] = true;
-#For contact email, defaults to $_SERVER["SERVER_ADMIN"]
-#$config['site']['email'] = 'admin@example.net';
-#Brought by...
-#$config['site']['broughtby'] = 'Individual or Company';
-#$config['site']['broughtbyurl'] = 'http://example.net/';
-#If you don't want to let users register (say, for a one-person install)
-#Crude but effective -- register everybody, then lock down
-#$config['site']['closed'] = true;
-#Only allow registration for people invited by another user
-#$config['site']['inviteonly'] = true;
-#Make the site invisible to non-logged-in users
-#$config['site']['private'] = true;
-
-# 'direct' for direct notice links in sections
-# 'attachment' for notice attachment links in sections
-# left undefined, no link is showed
-#$config['site']['notice_link'] = 'attachment';
-#$config['site']['notice_link'] = 'direct';
-
-# If you want logging sent to a file instead of syslog
-#$config['site']['logfile'] = '/tmp/laconica.log';
-
-# Enables extra log information, for example full details of PEAR DB errors
-#$config['site']['logdebug'] = true;
-
-#To set your own logo, overriding the one in the theme
-#$config['site']['logo'] = '/mylogo.png';
-
-# This is a PEAR DB DSN, see http://pear.php.net/manual/en/package.database.db.intro-dsn.php
-# Set it to match your actual database
+// $config['site']['fancy'] = false;
+// $config['site']['theme'] = 'default';
+// To enable the built-in mobile style sheet, defaults to false.
+// $config['site']['mobile'] = true;
+// For contact email, defaults to $_SERVER["SERVER_ADMIN"]
+// $config['site']['email'] = 'admin@example.net';
+// Brought by...
+// $config['site']['broughtby'] = 'Individual or Company';
+// $config['site']['broughtbyurl'] = 'http://example.net/';
+// If you don't want to let users register (say, for a one-person install)
+// Crude but effective -- register everybody, then lock down
+// $config['site']['closed'] = true;
+// Only allow registration for people invited by another user
+// $config['site']['inviteonly'] = true;
+// Make the site invisible to non-logged-in users
+// $config['site']['private'] = true;
+
+// If you want logging sent to a file instead of syslog
+// $config['site']['logfile'] = '/tmp/laconica.log';
+
+// Enables extra log information, for example full details of PEAR DB errors
+// $config['site']['logdebug'] = true;
+
+// To set your own logo, overriding the one in the theme
+// $config['site']['logo'] = '/mylogo.png';
+
+// This is a PEAR DB DSN, see http://pear.php.net/manual/en/package.database.db.intro-dsn.php
+// Set it to match your actual database
$config['db']['database'] = 'mysql://laconica:microblog@localhost/laconica';
-#$config['db']['ini_your_db_name'] = $config['db']['schema_location'].'/laconica.ini';
-# *** WARNING *** WARNING *** WARNING *** WARNING ***
-# Setting debug to a non-zero value will expose your DATABASE PASSWORD to Web users.
-# !!!!!! DO NOT SET THIS ON PRODUCTION SERVERS !!!!!! DB_DataObject's bug, btw, not
-# ours.
-# *** WARNING *** WARNING *** WARNING *** WARNING ***
-#$config['db']['debug'] = 0;
-#$config['db']['db_driver'] = 'MDB2';
-
-#Database type. For mysql, these defaults are fine. For postgresql, set
-#'quote_identifiers' to true and 'type' to 'pgsql':
-#$config['db']['quote_identifiers'] = false;
-#$config['db']['type'] = 'mysql';
-
-#session_set_cookie_params(0, '/'. $config['site']['path'] .'/');
-
-#Standard fancy-url clashes prevented by not allowing nicknames on a blacklist
-#Add your own here. Note: empty array by default
-#$config['nickname']['blacklist'][] = 'scobleizer';
-
-# sphinx search
+// $config['db']['ini_your_db_name'] = $config['db']['schema_location'].'/laconica.ini';
+// *** WARNING *** WARNING *** WARNING *** WARNING ***
+// Setting debug to a non-zero value will expose your DATABASE PASSWORD to Web users.
+// !!!!!! DO NOT SET THIS ON PRODUCTION SERVERS !!!!!! DB_DataObject's bug, btw, not
+// ours.
+// *** WARNING *** WARNING *** WARNING *** WARNING ***
+// $config['db']['debug'] = 0;
+// $config['db']['db_driver'] = 'MDB2';
+
+// Database type. For mysql, these defaults are fine. For postgresql, set
+// 'quote_identifiers' to true and 'type' to 'pgsql':
+// $config['db']['quote_identifiers'] = false;
+// $config['db']['type'] = 'mysql';
+
+// session_set_cookie_params(0, '/'. $config['site']['path'] .'/');
+
+// Standard fancy-url clashes prevented by not allowing nicknames on a blacklist
+// Add your own here. Note: empty array by default
+// $config['nickname']['blacklist'][] = 'scobleizer';
+
+// sphinx search
$config['sphinx']['enabled'] = false;
$config['sphinx']['server'] = 'localhost';
$config['sphinx']['port'] = 3312;
-# Users to populate the 'Featured' tab
-#$config['nickname']['featured'][] = 'scobleizer';
-
-# xmpp
-#$config['xmpp']['enabled'] = false;
-#$config['xmpp']['server'] = 'server.example.net';
-#$config['xmpp']['host'] = NULL; # Only set if different from server
-#$config['xmpp']['port'] = 5222;
-#$config['xmpp']['user'] = 'update';
-#$config['xmpp']['encryption'] = false;
-#$config['xmpp']['resource'] = 'uniquename';
-#$config['xmpp']['password'] = 'blahblahblah';
-#$config['xmpp']['public'][] = 'someindexer@example.net';
-#$config['xmpp']['debug'] = false;
-
-#Default locale info
-#$config['site']['timezone'] = 'Pacific/Auckland';
-#$config['site']['language'] = 'en_NZ';
-
-#Email info, used for all outbound email
-#$config['mail']['notifyfrom'] = 'microblog@example.net';
-#$config['mail']['domain'] = 'microblog.example.net';
-# See http://pear.php.net/manual/en/package.mail.mail.factory.php for options
-#$config['mail']['backend'] = 'smtp';
-#$config['mail']['params'] = array(
-# 'host' => 'localhost',
-# 'port' => 25,
-# );
-#For incoming email, if enabled. Defaults to site server name.
-#$config['mail']['domain'] = 'incoming.example.net';
-
-#exponential decay factor for tags, default 10 days
-#raise this if traffic is slow, lower it if it's fast
-#$config['tag']['dropoff'] = 86400.0 * 10;
-
-#exponential decay factor for popular (most favorited notices)
-#default 10 days -- similar to tag dropoff
-#$config['popular']['dropoff'] = 86400.0 * 10;
-
-#optionally show non-local messages in public timeline
-#$config['public']['localonly'] = false;
-
-#hide certain users from public pages, by ID
-#$config['public']['blacklist'][] = 123;
-#$config['public']['blacklist'][] = 2307;
-
-#Mark certain notice sources as automatic and thus not
-#appropriate for public feed
-#$config['public]['autosource'][] = 'twitterfeed';
-#$config['public]['autosource'][] = 'rssdent';
-#$config['public]['autosource'][] = 'Ping.Fm';
-#$config['public]['autosource'][] = 'HelloTxt';
-#$config['public]['autosource'][] = 'Updating.Me';
-
-#Do notice broadcasts offline
-#If you use this, you must run the six offline daemons in the
-#background. See the README for details.
-#$config['queue']['enabled'] = true;
-
-#Queue subsystem
-#subsystems: internal (default) or stomp
-#using stomp requires an external message queue server
-#$config['queue']['subsystem'] = 'stomp';
-#$config['queue']['stomp_server'] = 'tcp://localhost:61613';
-#use different queue_basename for each laconica instance managed by the server
-#$config['queue']['queue_basename'] = 'laconica';
-
-#The following customise the behaviour of the various daemons:
-#$config['daemon']['piddir'] = '/var/run';
-#$config['daemon']['user'] = false;
-#$config['daemon']['group'] = false;
-
-#For installations with high traffic, laconica can use MemCached to cache
-#frequently requested information. Only enable the following if you have
-#MemCached up and running:
-#$config['memcached']['enabled'] = false;
-#$config['memcached']['server'] = 'localhost';
-#$config['memcached']['port'] = 11211;
-
-# Enable bidirectional Twitter bridge
-#$config['twitterbridge']['enabled'] = true;
-
-#Twitter integration source attribute. Note: default is Laconica
-#$config['integration']['source'] = 'Laconica';
-
-# Edit throttling. Off by default. If turned on, you can only post 20 notices
-# every 10 minutes. Admins may want to play with the settings to minimize inconvenience for
-# real users without getting uncontrollable floods from spammers or runaway bots.
-
-#$config['throttle']['enabled'] = true;
-#$config['throttle']['count'] = 100;
-#$config['throttle']['timespan'] = 3600;
-
-# List of users banned from posting (nicknames and/or IDs)
-#$config['profile']['banned'][] = 'hacker';
-#$config['profile']['banned'][] = 12345;
-
-# Config section for the built-in Facebook application
-#$config['facebook']['apikey'] = 'APIKEY';
-#$config['facebook']['secret'] = 'SECRET';
-
-# Facebook Connect plugin (Needs valid APIKEY above)
-#require_once(INSTALLDIR.'/plugins/FBConnect/FBConnectPlugin.php');
-#$fbc = new FBConnectPlugin();
-
-# Add Google Analytics
-# require_once('plugins/GoogleAnalyticsPlugin.php');
-# $ga = new GoogleAnalyticsPlugin('your secret code');
-
-# Use Templating (template: /tpl/index.php)
-# require_once('plugins/TemplatePlugin.php');
-# $tpl = new TemplatePlugin();
-
-#Don't allow saying the same thing more than once per hour
-#$config['site']['dupelimit'] = 3600;
-#Don't enforce the dupe limit
-#$config['site']['dupelimit'] = -1;
-
-#Base string for minting Tag URIs in Atom feeds. Defaults to
-#"yourserver,2009". This needs to be configured properly for your Atom
-#feeds to validate. See: http://www.faqs.org/rfcs/rfc4151.html and
-#http://taguri.org/ Examples:
-#$config['integration']['taguri'] = 'example.net,2008';
-#$config['integration']['taguri'] = 'admin@example.net,2009-03-09'
-
-#Don't use SSL
-#$config['site']['ssl'] = 'never';
-#Use SSL only for sensitive pages (like login, password change)
-#$config['site']['ssl'] = 'sometimes';
-#Use SSL for all pages
-#$config['site']['ssl'] = 'always';
-
-#Use a different hostname for SSL-encrypted pages
-#$config['site']['sslserver'] = 'secure.example.org';
-
-#If you have a lot of status networks on the same server, you can
-#store the site data in a database and switch as follows
-#Status_network::setupDB('localhost', 'statusnet', 'statuspass', 'statusnet');
-#if (!Status_network::setupSite($_server, $_path)) {
-# print "Error\n";
-# exit(1);
-#}
+// Users to populate the 'Featured' tab
+// $config['nickname']['featured'][] = 'scobleizer';
+
+// xmpp
+// $config['xmpp']['enabled'] = false;
+// $config['xmpp']['server'] = 'server.example.net';
+// $config['xmpp']['host'] = NULL; // Only set if different from server
+// $config['xmpp']['port'] = 5222;
+// $config['xmpp']['user'] = 'update';
+// $config['xmpp']['encryption'] = false;
+// $config['xmpp']['resource'] = 'uniquename';
+// $config['xmpp']['password'] = 'blahblahblah';
+// $config['xmpp']['public'][] = 'someindexer@example.net';
+// $config['xmpp']['debug'] = false;
+
+// Default locale info
+// $config['site']['timezone'] = 'Pacific/Auckland';
+// $config['site']['language'] = 'en_NZ';
+
+// Email info, used for all outbound email
+// $config['mail']['notifyfrom'] = 'microblog@example.net';
+// $config['mail']['domain'] = 'microblog.example.net';
+// See http://pear.php.net/manual/en/package.mail.mail.factory.php for options
+// $config['mail']['backend'] = 'smtp';
+// $config['mail']['params'] = array(
+// 'host' => 'localhost',
+// 'port' => 25,
+// );
+// For incoming email, if enabled. Defaults to site server name.
+// $config['mail']['domain'] = 'incoming.example.net';
+
+// exponential decay factor for tags, default 10 days
+// raise this if traffic is slow, lower it if it's fast
+// $config['tag']['dropoff'] = 86400.0 * 10;
+
+// exponential decay factor for popular (most favorited notices)
+// default 10 days -- similar to tag dropoff
+// $config['popular']['dropoff'] = 86400.0 * 10;
+
+// optionally show non-local messages in public timeline
+// $config['public']['localonly'] = false;
+
+// hide certain users from public pages, by ID
+// $config['public']['blacklist'][] = 123;
+// $config['public']['blacklist'][] = 2307;
+
+// Mark certain notice sources as automatic and thus not
+// appropriate for public feed
+// $config['public]['autosource'][] = 'twitterfeed';
+// $config['public]['autosource'][] = 'rssdent';
+// $config['public]['autosource'][] = 'Ping.Fm';
+// $config['public]['autosource'][] = 'HelloTxt';
+// $config['public]['autosource'][] = 'Updating.Me';
+
+// Do notice broadcasts offline
+// If you use this, you must run the six offline daemons in the
+// background. See the README for details.
+// $config['queue']['enabled'] = true;
+
+// Queue subsystem
+// subsystems: internal (default) or stomp
+// using stomp requires an external message queue server
+// $config['queue']['subsystem'] = 'stomp';
+// $config['queue']['stomp_server'] = 'tcp://localhost:61613';
+// use different queue_basename for each laconica instance managed by the server
+// $config['queue']['queue_basename'] = 'laconica';
+
+// The following customise the behaviour of the various daemons:
+// $config['daemon']['piddir'] = '/var/run';
+// $config['daemon']['user'] = false;
+// $config['daemon']['group'] = false;
+
+// For installations with high traffic, laconica can use MemCached to cache
+// frequently requested information. Only enable the following if you have
+// MemCached up and running:
+// $config['memcached']['enabled'] = false;
+// $config['memcached']['server'] = 'localhost';
+// $config['memcached']['port'] = 11211;
+
+// Twitter integration source attribute. Note: default is Laconica
+// $config['integration']['source'] = 'Laconica';
+
+// Edit throttling. Off by default. If turned on, you can only post 20 notices
+// every 10 minutes. Admins may want to play with the settings to minimize inconvenience for
+// real users without getting uncontrollable floods from spammers or runaway bots.
+
+// $config['throttle']['enabled'] = true;
+// $config['throttle']['count'] = 100;
+// $config['throttle']['timespan'] = 3600;
+
+// List of users banned from posting (nicknames and/or IDs)
+// $config['profile']['banned'][] = 'hacker';
+// $config['profile']['banned'][] = 12345;
+
+// Config section for the built-in Facebook application
+// $config['facebook']['apikey'] = 'APIKEY';
+// $config['facebook']['secret'] = 'SECRET';
+
+// Add Google Analytics
+// require_once('plugins/GoogleAnalyticsPlugin.php');
+// $ga = new GoogleAnalyticsPlugin('your secret code');
+
+// Use Templating (template: /tpl/index.php)
+// require_once('plugins/TemplatePlugin.php');
+// $tpl = new TemplatePlugin();
+
+// Don't allow saying the same thing more than once per hour
+// $config['site']['dupelimit'] = 3600;
+// Don't enforce the dupe limit
+// $config['site']['dupelimit'] = -1;
+
+// Base string for minting Tag URIs in Atom feeds. Defaults to
+// "yourserver,2009". This needs to be configured properly for your Atom
+// feeds to validate. See: http://www.faqs.org/rfcs/rfc4151.html and
+// http://taguri.org/ Examples:
+// $config['integration']['taguri'] = 'example.net,2008';
+// $config['integration']['taguri'] = 'admin@example.net,2009-03-09'
+
+// Don't use SSL
+// $config['site']['ssl'] = 'never';
+// Use SSL only for sensitive pages (like login, password change)
+// $config['site']['ssl'] = 'sometimes';
+// Use SSL for all pages
+// $config['site']['ssl'] = 'always';
+
+// Use a different hostname for SSL-encrypted pages
+// $config['site']['sslserver'] = 'secure.example.org';
+
+// If you have a lot of status networks on the same server, you can
+// store the site data in a database and switch as follows
+// Status_network::setupDB('localhost', 'statusnet', 'statuspass', 'statusnet');
+// if (!Status_network::setupSite($_server, $_path)) {
+// print "Error\n";
+// exit(1);
+// }
diff --git a/js/farbtastic/farbtastic.go.js b/js/farbtastic/farbtastic.go.js
index 64dd7db20..0149eca7d 100644
--- a/js/farbtastic/farbtastic.go.js
+++ b/js/farbtastic/farbtastic.go.js
@@ -1,29 +1,30 @@
+/** Init for Farbtastic library and page setup
+ *
+ * @package Laconica
+ * @author Sarven Capadisli <csarven@controlyourself.ca>
+ * @copyright 2009 Control Yourself, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://laconi.ca/
+ */
$(document).ready(function() {
- function UpdateColors(e) {
- var S = f.linked;
- var C = f.color;
-
- if (S && S.value && S.value != C) {
- UpdateSwatch(S);
-
- switch (parseInt(f.linked.id.slice(-1))) {
- case 1: default:
- $('body').css({'background-color':C});
- break;
- case 2:
- $('#content').css({'background-color':C});
- break;
- case 3:
- $('#aside_primary').css({'background-color':C});
- break;
- case 4:
- $('body').css({'color':C});
- break;
- case 5:
- $('a').css({'color':C});
- break;
- }
- S.value = C;
+ function UpdateColors(S) {
+ C = $(S).val();
+ switch (parseInt(S.id.slice(-1))) {
+ case 0: default:
+ $('body').css({'background-color':C});
+ break;
+ case 1:
+ $('#content').css({'background-color':C});
+ break;
+ case 2:
+ $('#aside_primary').css({'background-color':C});
+ break;
+ case 3:
+ $('body').css({'color':C});
+ break;
+ case 4:
+ $('a').css({'color':C});
+ break;
}
}
@@ -33,35 +34,52 @@ $(document).ready(function() {
}
function UpdateSwatch(e) {
- $(e).css({
- "background-color": e.value,
- "color": f.hsl[2] > 0.5 ? "#000": "#fff"
- });
+ $(e).css({"background-color": e.value,
+ "color": f.hsl[2] > 0.5 ? "#000": "#fff"});
}
- $('#settings_design_color').append('<div id="color-picker"></div>');
- $('#color-picker').hide();
-
- var f = $.farbtastic('#color-picker', UpdateColors);
- var swatches = $('#settings_design_color input');
-
- swatches
- .each(UpdateColors)
+ function SynchColors(e) {
+ var S = f.linked;
+ var C = f.color;
- .blur(function() {
- $(this).val($(this).val().toUpperCase());
- })
+ if (S && S.value && S.value != C) {
+ S.value = C;
+ UpdateSwatch(S);
+ UpdateColors(S);
+ }
+ }
- .focus(function() {
- $('#color-picker').show();
- UpdateFarbtastic(this);
- })
+ function Init() {
+ $('#settings_design_color').append('<div id="color-picker"></div>');
+ $('#color-picker').hide();
- .change(function() {
- UpdateFarbtastic(this);
- UpdateSwatch(this);
- }).change()
+ f = $.farbtastic('#color-picker', SynchColors);
+ swatches = $('#settings_design_color .swatch');
- ;
+ swatches
+ .each(SynchColors)
+ .blur(function() {
+ $(this).val($(this).val().toUpperCase());
+ })
+ .focus(function() {
+ $('#color-picker').show();
+ UpdateFarbtastic(this);
+ })
+ .change(function() {
+ UpdateFarbtastic(this);
+ UpdateSwatch(this);
+ UpdateColors(this);
+ }).change();
+ }
+ var f, swatches;
+ Init();
+ $('#form_settings_design').bind('reset', function(){
+ setTimeout(function(){
+ swatches.each(function(){UpdateColors(this);});
+ $('#color-picker').remove();
+ swatches.unbind();
+ Init();
+ },10);
+ });
});
diff --git a/js/jcrop/jquery.Jcrop.go.js b/js/jcrop/jquery.Jcrop.go.js
index a0399d540..4e1cbfd1e 100644
--- a/js/jcrop/jquery.Jcrop.go.js
+++ b/js/jcrop/jquery.Jcrop.go.js
@@ -1,39 +1,48 @@
- $(function(){
- var x = ($('#avatar_crop_x').val()) ? $('#avatar_crop_x').val() : 0;
- var y = ($('#avatar_crop_y').val()) ? $('#avatar_crop_y').val() : 0;
- var w = ($('#avatar_crop_w').val()) ? $('#avatar_crop_w').val() : $("#avatar_original img").attr("width");
- var h = ($('#avatar_crop_h').val()) ? $('#avatar_crop_h').val() : $("#avatar_original img").attr("height");
+/** Init for Jcrop library and page setup
+ *
+ * @package Laconica
+ * @author Sarven Capadisli <csarven@controlyourself.ca>
+ * @copyright 2009 Control Yourself, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://laconi.ca/
+ */
- jQuery("#avatar_original img").Jcrop({
- onChange: showPreview,
- setSelect: [ x, y, w, h ],
- onSelect: updateCoords,
- aspectRatio: 1,
- boxWidth: 480,
- boxHeight: 480,
- bgColor: '#000',
- bgOpacity: .4
- });
- });
+$(function(){
+ var x = ($('#avatar_crop_x').val()) ? $('#avatar_crop_x').val() : 0;
+ var y = ($('#avatar_crop_y').val()) ? $('#avatar_crop_y').val() : 0;
+ var w = ($('#avatar_crop_w').val()) ? $('#avatar_crop_w').val() : $("#avatar_original img").attr("width");
+ var h = ($('#avatar_crop_h').val()) ? $('#avatar_crop_h').val() : $("#avatar_original img").attr("height");
- function showPreview(coords) {
- var rx = 96 / coords.w;
- var ry = 96 / coords.h;
+ jQuery("#avatar_original img").Jcrop({
+ onChange: showPreview,
+ setSelect: [ x, y, w, h ],
+ onSelect: updateCoords,
+ aspectRatio: 1,
+ boxWidth: 480,
+ boxHeight: 480,
+ bgColor: '#000',
+ bgOpacity: .4
+ });
+});
- var img_width = $("#avatar_original img").attr("width");
- var img_height = $("#avatar_original img").attr("height");
+function showPreview(coords) {
+ var rx = 96 / coords.w;
+ var ry = 96 / coords.h;
- $('#avatar_preview img').css({
- width: Math.round(rx *img_width) + 'px',
- height: Math.round(ry * img_height) + 'px',
- marginLeft: '-' + Math.round(rx * coords.x) + 'px',
- marginTop: '-' + Math.round(ry * coords.y) + 'px'
- });
- };
+ var img_width = $("#avatar_original img").attr("width");
+ var img_height = $("#avatar_original img").attr("height");
- function updateCoords(c) {
- $('#avatar_crop_x').val(c.x);
- $('#avatar_crop_y').val(c.y);
- $('#avatar_crop_w').val(c.w);
- $('#avatar_crop_h').val(c.h);
- };
+ $('#avatar_preview img').css({
+ width: Math.round(rx *img_width) + 'px',
+ height: Math.round(ry * img_height) + 'px',
+ marginLeft: '-' + Math.round(rx * coords.x) + 'px',
+ marginTop: '-' + Math.round(ry * coords.y) + 'px'
+ });
+};
+
+function updateCoords(c) {
+ $('#avatar_crop_x').val(c.x);
+ $('#avatar_crop_y').val(c.y);
+ $('#avatar_crop_w').val(c.w);
+ $('#avatar_crop_h').val(c.h);
+};
diff --git a/lib/common.php b/lib/common.php
index abdc22c0e..3feba1d8b 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -19,7 +19,7 @@
if (!defined('LACONICA')) { exit(1); }
-define('LACONICA_VERSION', '0.7.3');
+define('LACONICA_VERSION', '0.8.0dev');
define('AVATAR_PROFILE_SIZE', 96);
define('AVATAR_STREAM_SIZE', 48);
diff --git a/plugins/FBConnect/FBConnectPlugin.php b/plugins/FBConnect/FBConnectPlugin.php
index 342a62492..191cede76 100644
--- a/plugins/FBConnect/FBConnectPlugin.php
+++ b/plugins/FBConnect/FBConnectPlugin.php
@@ -120,22 +120,28 @@ class FBConnectPlugin extends Plugin
$apikey = common_config('facebook', 'apikey');
$plugin_path = common_path('plugins/FBConnect');
- $url = common_get_returnto();
+ $login_url = common_get_returnto();
- if ($url) {
+ if ($login_url) {
// We don't have to return to it again
common_set_returnto(null);
} else {
$url = common_local_url('public');
}
+
+ $logout_url = common_local_url('logout');
$html = sprintf('<script type="text/javascript">FB.init("%s", "%s/xd_receiver.htm");
- function refresh_page() {
+ function goto_login() {
+ window.location = "%s";
+ }
+
+ function goto_logout() {
window.location = "%s";
}
- </script>', $apikey, $plugin_path, $url);
+ </script>', $apikey, $plugin_path, $login_url, $logout_url);
$action->raw($html);
@@ -170,8 +176,8 @@ class FBConnectPlugin extends Plugin
$text = _('Logout');
$html = sprintf('<li id="nav_logout"><a href="%s" title="%s" ' .
- 'onclick="FB.Connect.logoutAndRedirect(\'%s\')">%s</a></li>',
- $logout_url, $title, $logout_url, $text);
+ 'onclick="FB.Connect.logout(function() { goto_logout() })">%s</a></li>',
+ $logout_url, $title, $text);
$action->raw($html);
@@ -198,7 +204,7 @@ class FBConnectPlugin extends Plugin
if (!$user) {
$action->elementStart('li');
- $action->element('fb:login-button', array('onlogin' => 'refresh_page()',
+ $action->element('fb:login-button', array('onlogin' => 'goto_login()',
'length' => 'long'));
$action->elementEnd('li');
}
diff --git a/scripts/twitterstatusfetcher.php b/scripts/twitterstatusfetcher.php
index 9dfadc760..a61ce1b0d 100755
--- a/scripts/twitterstatusfetcher.php
+++ b/scripts/twitterstatusfetcher.php
@@ -214,7 +214,8 @@ class TwitterStatusFetcher extends Daemon
return;
}
- foreach ($timeline as $status) {
+ // Reverse to preserve order
+ foreach (array_reverse($timeline) as $status) {
// Hacktastic: filter out stuff coming from this Laconica
$source = mb_strtolower(common_config('integration', 'source'));
diff --git a/theme/base/css/display.css b/theme/base/css/display.css
index eda04be77..8bd0ae1c4 100644
--- a/theme/base/css/display.css
+++ b/theme/base/css/display.css
@@ -1161,6 +1161,17 @@ width:400px;
margin-right:28px;
}
+#settings_design_color .form_data li {
+width:33%;
+}
+#settings_design_color .form_data label {
+float:none;
+}
+#settings_design_color .form_data .swatch {
+padding:11px;
+margin-left:0;
+}
+
.instructions ul {
list-style-position:inside;
}
diff --git a/theme/default/css/display.css b/theme/default/css/display.css
index 1fc99eff7..e4b57ef49 100644
--- a/theme/default/css/display.css
+++ b/theme/default/css/display.css
@@ -72,13 +72,6 @@ border-top-color:#D1D9E4;
border-top-color:#C3D6DF;
}
-#content .notice p.entry-content a:visited {
-background-color:#fcfcfc;
-}
-#content .notice p.entry-content .vcard a {
-background-color:#fcfffc;
-}
-
#aside_primary {
background-color:#CEE1E9;
}