summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--EVENTS.txt6
-rw-r--r--classes/Notice.php35
-rw-r--r--classes/Profile.php75
-rw-r--r--classes/User.php44
-rw-r--r--index.php5
-rw-r--r--install.php17
-rw-r--r--lib/action.php19
-rw-r--r--lib/htmloutputter.php16
-rw-r--r--lib/noticeform.php70
-rw-r--r--plugins/Orbited/OrbitedPlugin.php154
-rw-r--r--plugins/Orbited/orbitedextra.js2
-rw-r--r--plugins/Orbited/orbitedupdater.js24
-rw-r--r--plugins/Realtime/RealtimePlugin.php1
-rw-r--r--scripts/deleteuser.php68
-rw-r--r--theme/base/css/display.css2
-rw-r--r--theme/iphone/bg-body.gifbin136 -> 0 bytes
-rw-r--r--theme/iphone/bg-header.gifbin2469 -> 0 bytes
-rw-r--r--theme/iphone/default-avatar-mini.pngbin646 -> 0 bytes
-rw-r--r--theme/iphone/default-avatar-profile.pngbin2853 -> 0 bytes
-rw-r--r--theme/iphone/default-avatar-stream.pngbin1487 -> 0 bytes
-rw-r--r--theme/iphone/display.css698
-rw-r--r--theme/iphone/display.css.dist686
-rw-r--r--theme/iphone/ie6.css.dist63
-rw-r--r--theme/iphone/ie7.css.dist20
-rw-r--r--theme/iphone/login-bg.gifbin328 -> 0 bytes
-rw-r--r--theme/iphone/logo.pngbin818 -> 0 bytes
26 files changed, 469 insertions, 1536 deletions
diff --git a/EVENTS.txt b/EVENTS.txt
index fbb2f36a7..02b11a8a6 100644
--- a/EVENTS.txt
+++ b/EVENTS.txt
@@ -93,6 +93,12 @@ StartShowAside: Showing before the Aside container
EndShowAside: Showing after the Aside container
- $action: the current action
+StartShowNoticeFormData: Showing before the notice form data
+- $action: the current action
+
+EndShowNoticeFormData: Showing after the notice form data
+- $action: the current action
+
StartNoticeSave: before inserting a notice (good place for content filters)
- $notice: notice being saved (no ID or URI)
diff --git a/classes/Notice.php b/classes/Notice.php
index 93d5de790..ba2227c0a 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -1,5 +1,5 @@
<?php
-/*
+/**
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2008, 2009, StatusNet, Inc.
*
@@ -15,9 +15,26 @@
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Notices
+ * @package StatusNet
+ * @author Brenda Wallace <shiny@cpan.org>
+ * @author Christopher Vollick <psycotica0@gmail.com>
+ * @author CiaranG <ciaran@ciarang.com>
+ * @author Craig Andrews <candrews@integralblue.com>
+ * @author Evan Prodromou <evan@controlezvous.ca>
+ * @author Gina Haeussge <osd@foosel.net>
+ * @author Jeffery To <jeffery.to@gmail.com>
+ * @author Mike Cochrane <mikec@mikenz.geek.nz>
+ * @author Robin Millette <millette@controlyourself.ca>
+ * @author Sarven Capadisli <csarven@controlyourself.ca>
+ * @author Tom Adams <tom@holizz.com>
+ * @license GNU Affero General Public License http://www.gnu.org/licenses/
*/
-if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+ exit(1);
+}
/**
* Table Definition for notice
@@ -168,11 +185,11 @@ class Notice extends Memcached_DataObject
if (common_config('site', 'dupelimit') > 0 && !Notice::checkDupes($profile_id, $final)) {
common_log(LOG_WARNING, 'Dupe posting by profile #' . $profile_id . '; throttled.');
- throw new ClientException(_('Too many duplicate messages too quickly;'.
+ throw new ClientException(_('Too many duplicate messages too quickly;'.
' take a breather and post again in a few minutes.'));
}
- $banned = common_config('profile', 'banned');
+ $banned = common_config('profile', 'banned');
if ( in_array($profile_id, $banned) || in_array($profile->nickname, $banned)) {
common_log(LOG_WARNING, "Attempted post from banned user: $profile->nickname (user id = $profile_id).");
@@ -200,12 +217,12 @@ class Notice extends Memcached_DataObject
$notice->created = common_sql_now();
}
- $notice->content = $final;
- $notice->rendered = common_render_content($final, $notice);
- $notice->source = $source;
- $notice->uri = $uri;
+ $notice->content = $final;
+ $notice->rendered = common_render_content($final, $notice);
+ $notice->source = $source;
+ $notice->uri = $uri;
- $notice->reply_to = self::getReplyTo($reply_to, $profile_id, $source, $final);
+ $notice->reply_to = self::getReplyTo($reply_to, $profile_id, $source, $final);
if (!empty($notice->reply_to)) {
$reply = Notice::staticGet('id', $notice->reply_to);
diff --git a/classes/Profile.php b/classes/Profile.php
index 7f0d12758..4a069ee84 100644
--- a/classes/Profile.php
+++ b/classes/Profile.php
@@ -476,4 +476,79 @@ class Profile extends Memcached_DataObject
$biolimit = self::maxBio();
return ($biolimit > 0 && !empty($bio) && (mb_strlen($bio) > $biolimit));
}
+
+ function delete()
+ {
+ $this->_deleteNotices();
+ $this->_deleteSubscriptions();
+ $this->_deleteMessages();
+ $this->_deleteTags();
+ $this->_deleteBlocks();
+
+ $related = array('Avatar',
+ 'Reply',
+ 'Group_member',
+ );
+
+ foreach ($related as $cls) {
+ $inst = new $cls();
+ $inst->profile_id = $this->id;
+ $inst->delete();
+ }
+
+ parent::delete();
+ }
+
+ function _deleteNotices()
+ {
+ $notice = new Notice();
+ $notice->profile_id = $this->id;
+
+ if ($notice->find()) {
+ while ($notice->fetch()) {
+ $other = clone($notice);
+ $other->delete();
+ }
+ }
+ }
+
+ function _deleteSubscriptions()
+ {
+ $sub = new Subscription();
+ $sub->subscriber = $this->id;
+ $sub->delete();
+
+ $subd = new Subscription();
+ $subd->subscribed = $this->id;
+ $subd->delete();
+ }
+
+ function _deleteMessages()
+ {
+ $msg = new Message();
+ $msg->from_profile = $this->id;
+ $msg->delete();
+
+ $msg = new Message();
+ $msg->to_profile = $this->id;
+ $msg->delete();
+ }
+
+ function _deleteTags()
+ {
+ $tag = new Profile_tag();
+ $tag->tagged = $this->id;
+ $tag->delete();
+ }
+
+ function _deleteBlocks()
+ {
+ $block = new Profile_block();
+ $block->blocked = $this->id;
+ $block->delete();
+
+ $block = new Group_block();
+ $block->blocked = $this->id;
+ $block->delete();
+ }
}
diff --git a/classes/User.php b/classes/User.php
index 3f7ed09bb..48df0cdd7 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -740,4 +740,48 @@ class User extends Memcached_DataObject
}
return $result;
}
+
+ function delete()
+ {
+ $profile = $this->getProfile();
+ $profile->delete();
+
+ $related = array('Fave',
+ 'User_openid',
+ 'Confirm_address',
+ 'Remember_me',
+ 'Foreign_link',
+ 'Invitation',
+ );
+
+ if (common_config('inboxes', 'enabled')) {
+ $related[] = 'Notice_inbox';
+ }
+
+ foreach ($related as $cls) {
+ $inst = new $cls();
+ $inst->user_id = $this->id;
+ $inst->delete();
+ }
+
+ $this->_deleteTags();
+ $this->_deleteBlocks();
+
+ parent::delete();
+ }
+
+ function _deleteTags()
+ {
+ $tag = new Profile_tag();
+ $tag->tagger = $this->id;
+ $tag->delete();
+ }
+
+ function _deleteBlocks()
+ {
+ $block = new Profile_block();
+ $block->blocker = $this->id;
+ $block->delete();
+ // XXX delete group block? Reset blocker?
+ }
}
diff --git a/index.php b/index.php
index 51e30f578..644812bd5 100644
--- a/index.php
+++ b/index.php
@@ -61,6 +61,11 @@ function getPath($req)
}
}
+/**
+ * logs and then displays error messages
+ *
+ * @return void
+ */
function handleError($error)
{
if ($error->getCode() == DB_DATAOBJECT_ERROR_NODATA) {
diff --git a/install.php b/install.php
index c2a5bb29e..69f025a6a 100644
--- a/install.php
+++ b/install.php
@@ -1,3 +1,4 @@
+
<?php
/**
* StatusNet - the distributed open-source microblogging tool
@@ -31,7 +32,7 @@
* @author Sarven Capadisli <csarven@status.net>
* @author Tom Adams <tom@holizz.com>
* @license GNU Affero General Public License http://www.gnu.org/licenses/
- * @version 0.9
+ * @version 0.9.x
* @link http://status.net
*/
@@ -340,13 +341,13 @@ function checkExtension($name)
if (extension_loaded($name)) {
return true;
} elseif (function_exists('dl') && ini_get('enable_dl') && !ini_get('safe_mode')) {
- // dl will throw a fatal error if it's disabled or we're in safe mode.
- // More fun, it may not even exist under some SAPIs in 5.3.0 or later...
- $soname = $name . '.' . PHP_SHLIB_SUFFIX;
- if (PHP_SHLIB_SUFFIX == 'dll') {
- $soname = "php_" . $soname;
- }
- return @dl($soname);
+ // dl will throw a fatal error if it's disabled or we're in safe mode.
+ // More fun, it may not even exist under some SAPIs in 5.3.0 or later...
+ $soname = $name . '.' . PHP_SHLIB_SUFFIX;
+ if (PHP_SHLIB_SUFFIX == 'dll') {
+ $soname = "php_" . $soname;
+ }
+ return @dl($soname);
} else {
return false;
}
diff --git a/lib/action.php b/lib/action.php
index 71ceffe20..1b2f73752 100644
--- a/lib/action.php
+++ b/lib/action.php
@@ -120,14 +120,16 @@ class Action extends HTMLOutputter // lawsuit
{
// XXX: attributes (profile?)
$this->elementStart('head');
- $this->showTitle();
- $this->showShortcutIcon();
- $this->showStylesheets();
- $this->showScripts();
- $this->showOpenSearch();
- $this->showFeeds();
- $this->showDescription();
- $this->extraHead();
+ if (Event::handle('StartShowHeadElements', array($this))) {
+ $this->showTitle();
+ $this->showShortcutIcon();
+ $this->showStylesheets();
+ $this->showOpenSearch();
+ $this->showFeeds();
+ $this->showDescription();
+ $this->extraHead();
+ Event::handle('EndShowHeadElements', array($this));
+ }
$this->elementEnd('head');
}
@@ -352,6 +354,7 @@ class Action extends HTMLOutputter // lawsuit
Event::handle('EndShowFooter', array($this));
}
$this->elementEnd('div');
+ $this->showScripts();
$this->elementEnd('body');
}
diff --git a/lib/htmloutputter.php b/lib/htmloutputter.php
index c70f96537..ce83295fb 100644
--- a/lib/htmloutputter.php
+++ b/lib/htmloutputter.php
@@ -427,16 +427,12 @@ class HTMLOutputter extends XMLOutputter
function autofocus($id)
{
$this->elementStart('script', array('type' => 'text/javascript'));
- $this->raw('
- <!--
- $(document).ready(function() {
- var el = $("#' . $id . '");
- if (el.length) {
- el.focus();
- }
- });
- -->
- ');
+ $this->raw('/*<![CDATA[*/'.
+ ' $(document).ready(function() {'.
+ ' var el = $("#' . $id . '");'.
+ ' if (el.length) { el.focus(); }'.
+ ' });'.
+ ' /*]]>*/');
$this->elementEnd('script');
}
}
diff --git a/lib/noticeform.php b/lib/noticeform.php
index 186330bf1..9864d15eb 100644
--- a/lib/noticeform.php
+++ b/lib/noticeform.php
@@ -142,40 +142,44 @@ class NoticeForm extends Form
function formData()
{
- $this->out->element('label', array('for' => 'notice_data-text'),
- sprintf(_('What\'s up, %s?'), $this->user->nickname));
- // XXX: vary by defined max size
- $this->out->element('textarea', array('id' => 'notice_data-text',
- 'cols' => 35,
- 'rows' => 4,
- 'name' => 'status_textarea'),
- ($this->content) ? $this->content : '');
-
- $contentLimit = Notice::maxContent();
-
- $this->out->element('script', array('type' => 'text/javascript'),
- 'maxLength = ' . $contentLimit . ';');
-
- if ($contentLimit > 0) {
- $this->out->elementStart('dl', 'form_note');
- $this->out->element('dt', null, _('Available characters'));
- $this->out->element('dd', array('id' => 'notice_text-count'),
- $contentLimit);
- $this->out->elementEnd('dl');
+ if (Event::handle('StartShowNoticeFormData', array($this))) {
+ $this->out->element('label', array('for' => 'notice_data-text'),
+ sprintf(_('What\'s up, %s?'), $this->user->nickname));
+ // XXX: vary by defined max size
+ $this->out->element('textarea', array('id' => 'notice_data-text',
+ 'cols' => 35,
+ 'rows' => 4,
+ 'name' => 'status_textarea'),
+ ($this->content) ? $this->content : '');
+
+ $contentLimit = Notice::maxContent();
+
+ $this->out->element('script', array('type' => 'text/javascript'),
+ 'maxLength = ' . $contentLimit . ';');
+
+ if ($contentLimit > 0) {
+ $this->out->elementStart('dl', 'form_note');
+ $this->out->element('dt', null, _('Available characters'));
+ $this->out->element('dd', array('id' => 'notice_text-count'),
+ $contentLimit);
+ $this->out->elementEnd('dl');
+ }
+
+ if (common_config('attachments', 'uploads')) {
+ $this->out->element('label', array('for' => 'notice_data-attach'),_('Attach'));
+ $this->out->element('input', array('id' => 'notice_data-attach',
+ 'type' => 'file',
+ 'name' => 'attach',
+ 'title' => _('Attach a file')));
+ $this->out->hidden('MAX_FILE_SIZE', common_config('attachments', 'file_quota'));
+ }
+ if ($this->action) {
+ $this->out->hidden('notice_return-to', $this->action, 'returnto');
+ }
+ $this->out->hidden('notice_in-reply-to', $this->inreplyto, 'inreplyto');
+
+ Event::handle('StartShowNoticeFormData', array($this));
}
-
- if (common_config('attachments', 'uploads')) {
- $this->out->element('label', array('for' => 'notice_data-attach'),_('Attach'));
- $this->out->element('input', array('id' => 'notice_data-attach',
- 'type' => 'file',
- 'name' => 'attach',
- 'title' => _('Attach a file')));
- $this->out->hidden('MAX_FILE_SIZE', common_config('attachments', 'file_quota'));
- }
- if ($this->action) {
- $this->out->hidden('notice_return-to', $this->action, 'returnto');
- }
- $this->out->hidden('notice_in-reply-to', $this->inreplyto, 'inreplyto');
}
/**
diff --git a/plugins/Orbited/OrbitedPlugin.php b/plugins/Orbited/OrbitedPlugin.php
new file mode 100644
index 000000000..ba87b266a
--- /dev/null
+++ b/plugins/Orbited/OrbitedPlugin.php
@@ -0,0 +1,154 @@
+<?php
+/**
+ * Laconica, the distributed open-source microblogging tool
+ *
+ * Plugin to do "real time" updates using Orbited + STOMP
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Plugin
+ * @package Laconica
+ * @author Evan Prodromou <evan@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/
+ */
+
+if (!defined('LACONICA')) {
+ exit(1);
+}
+
+require_once INSTALLDIR.'/plugins/Realtime/RealtimePlugin.php';
+
+/**
+ * Plugin to do realtime updates using Orbited + STOMP
+ *
+ * This plugin pushes data to a STOMP server which is then served to the
+ * browser by the Orbited server.
+ *
+ * @category Plugin
+ * @package Laconica
+ * @author Evan Prodromou <evan@controlyourself.ca>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://laconi.ca/
+ */
+
+class OrbitedPlugin extends RealtimePlugin
+{
+ public $webserver = null;
+ public $webport = null;
+ public $channelbase = null;
+ public $stompserver = null;
+ public $stompport = null;
+ public $username = null;
+ public $password = null;
+ public $webuser = null;
+ public $webpass = null;
+
+ protected $con = null;
+
+ function onStartShowHeadElements($action)
+ {
+ // See http://orbited.org/wiki/Deployment#Cross-SubdomainDeployment
+ $action->element('script', null, ' document.domain = document.domain; ');
+ }
+
+ function _getScripts()
+ {
+ $scripts = parent::_getScripts();
+
+ $port = (is_null($this->webport)) ? 8000 : $this->webport;
+
+ $server = (is_null($this->webserver)) ? common_config('site', 'server') : $this->webserver;
+
+ $root = 'http://'.$server.(($port == 80) ? '':':'.$port);
+
+ $scripts[] = $root.'/static/Orbited.js';
+ $scripts[] = common_path('plugins/Orbited/orbitedextra.js');
+ $scripts[] = $root.'/static/protocols/stomp/stomp.js';
+ $scripts[] = common_path('plugins/Orbited/orbitedupdater.js');
+
+ return $scripts;
+ }
+
+ function _updateInitialize($timeline, $user_id)
+ {
+ $script = parent::_updateInitialize($timeline, $user_id);
+
+ $server = $this->_getStompServer();
+ $port = $this->_getStompPort();
+
+ return $script." OrbitedUpdater.init(\"$server\", $port, ".
+ "\"{$timeline}\", \"{$this->webuser}\", \"{$this->webpass}\");";
+ }
+
+ function _connect()
+ {
+ require_once(INSTALLDIR.'/extlib/Stomp.php');
+
+ $url = $this->_getStompUrl();
+
+ $this->con = new Stomp($url);
+
+ if ($this->con->connect($this->username, $this->password)) {
+ $this->log(LOG_INFO, "Connected.");
+ } else {
+ $this->log(LOG_ERR, 'Failed to connect to queue server');
+ throw new ServerException('Failed to connect to queue server');
+ }
+ }
+
+ function _publish($channel, $message)
+ {
+ $result = $this->con->send($channel,
+ json_encode($message));
+
+ return $result;
+ // TODO: parse and deal with result
+ }
+
+ function _disconnect()
+ {
+ $this->con->disconnect();
+ }
+
+ function _pathToChannel($path)
+ {
+ if (!empty($this->channelbase)) {
+ array_unshift($path, $this->channelbase);
+ }
+ return '/' . implode('/', $path);
+ }
+
+ function _getStompServer()
+ {
+ return (!is_null($this->stompserver)) ? $this->stompserver :
+ (!is_null($this->webserver)) ? $this->webserver :
+ common_config('site', 'server');
+ }
+
+ function _getStompPort()
+ {
+ return (!is_null($this->stompport)) ? $this->stompport : 61613;
+ }
+
+ function _getStompUrl()
+ {
+ $server = $this->_getStompServer();
+ $port = $this->_getStompPort();
+ return "tcp://$server:$port/";
+ }
+}
diff --git a/plugins/Orbited/orbitedextra.js b/plugins/Orbited/orbitedextra.js
new file mode 100644
index 000000000..47e5c0c80
--- /dev/null
+++ b/plugins/Orbited/orbitedextra.js
@@ -0,0 +1,2 @@
+TCPSocket = Orbited.TCPSocket;
+
diff --git a/plugins/Orbited/orbitedupdater.js b/plugins/Orbited/orbitedupdater.js
new file mode 100644
index 000000000..8c5ab3b73
--- /dev/null
+++ b/plugins/Orbited/orbitedupdater.js
@@ -0,0 +1,24 @@
+// Update the local timeline from a Orbited server
+
+var OrbitedUpdater = function()
+{
+ return {
+
+ init: function(server, port, timeline, username, password)
+ {
+ // set up stomp client.
+ stomp = new STOMPClient();
+
+ stomp.onmessageframe = function(frame) {
+ RealtimeUpdate.receive(JSON.parse(frame.body));
+ };
+
+ stomp.onconnectedframe = function() {
+ stomp.subscribe(timeline);
+ }
+
+ stomp.connect(server, port, username, password);
+ }
+ }
+}();
+
diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php
index 0f0d0f9f4..181927968 100644
--- a/plugins/Realtime/RealtimePlugin.php
+++ b/plugins/Realtime/RealtimePlugin.php
@@ -230,6 +230,7 @@ class RealtimePlugin extends Plugin
}
$action->showContentBlock();
+ $action->showScripts();
$action->elementEnd('body');
return false; // No default processing
}
diff --git a/scripts/deleteuser.php b/scripts/deleteuser.php
new file mode 100644
index 000000000..52389123c
--- /dev/null
+++ b/scripts/deleteuser.php
@@ -0,0 +1,68 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - a distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+
+$shortoptions = 'i::n::y';
+$longoptions = array('id::nickname::yes');
+
+$helptext = <<<END_OF_DELETEUSER_HELP
+deleteuser.php [options]
+deletes a user from the database
+
+ -i --id ID of the user
+ -n --nickname nickname of the user
+ -y --yes do not wait for confirmation
+
+END_OF_DELETEUSER_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+if (have_option('i', 'id')) {
+ $id = get_option_value('i', 'id');
+ $user = User::staticGet('id', $id);
+ if (empty($user)) {
+ print "Can't find user with ID $id\n";
+ exit(1);
+ }
+} else if (have_option('n', 'nickname')) {
+ $nickname = get_option_value('n', 'nickname');
+ $user = User::staticGet('nickname', $nickname);
+ if (empty($user)) {
+ print "Can't find user with nickname '$nickname'\n";
+ exit(1);
+ }
+} else {
+ print "You must provide either an ID or a nickname.\n";
+ exit(1);
+}
+
+if (!have_option('y', 'yes')) {
+ print "About to PERMANENTLY delete user '{$user->nickname}' ({$user->id}). Are you sure? [y/N] ";
+ $response = fgets(STDIN);
+ if (strtolower(trim($response)) != 'y') {
+ print "Aborting.\n";
+ exit(0);
+ }
+}
+
+print "Deleting...";
+$user->delete();
+print "DONE.\n";
diff --git a/theme/base/css/display.css b/theme/base/css/display.css
index 7706fba48..76709113f 100644
--- a/theme/base/css/display.css
+++ b/theme/base/css/display.css
@@ -251,7 +251,7 @@ margin-right:18px;
margin-bottom:11px;
margin-left:18px;
}
-#site_nav_global_primary ul li {
+#site_nav_global_primary li {
display:inline;
margin-left:11px;
}
diff --git a/theme/iphone/bg-body.gif b/theme/iphone/bg-body.gif
deleted file mode 100644
index d87e2e8d7..000000000
--- a/theme/iphone/bg-body.gif
+++ /dev/null
Binary files differ
diff --git a/theme/iphone/bg-header.gif b/theme/iphone/bg-header.gif
deleted file mode 100644
index 5154b2e5e..000000000
--- a/theme/iphone/bg-header.gif
+++ /dev/null
Binary files differ
diff --git a/theme/iphone/default-avatar-mini.png b/theme/iphone/default-avatar-mini.png
deleted file mode 100644
index 38b8692b4..000000000
--- a/theme/iphone/default-avatar-mini.png
+++ /dev/null
Binary files differ
diff --git a/theme/iphone/default-avatar-profile.png b/theme/iphone/default-avatar-profile.png
deleted file mode 100644
index f8357d4fc..000000000
--- a/theme/iphone/default-avatar-profile.png
+++ /dev/null
Binary files differ
diff --git a/theme/iphone/default-avatar-stream.png b/theme/iphone/default-avatar-stream.png
deleted file mode 100644
index 6b63baa70..000000000
--- a/theme/iphone/default-avatar-stream.png
+++ /dev/null
Binary files differ
diff --git a/theme/iphone/display.css b/theme/iphone/display.css
deleted file mode 100644
index 1838a8e86..000000000
--- a/theme/iphone/display.css
+++ /dev/null
@@ -1,698 +0,0 @@
-/* CSS Document */
-/* Design & CSS by Marie-Claude Doyon http://www.marieclaudedoyon.com */
-/* Simplified for mobile by Ken Sheppardson http://identi.ca/kshep */
-
-@import url(../../base/css/display.css);
-
-html {}
-body {
- width: 100%;
- padding: 0;
- margin: 0;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 24px;
- min-height: 100%;
- height: 100%;
- color: #193441;
-}
-
-a {
- color: #C15D42;
- text-decoration: none;
-}
-a:hover {
- text-decoration: underline;
-}
-img, img a {
- border: 0;
-}
-h1 {
- font-size: 1.2em;
-}
-
-#wrap {
- margin: 0;
-}
-
-#header {
- width: 100%;
- float: left;
- background-color: #193441;
- margin: 0 0 20px 0;
- padding: 0;
-}
-#logo {
- float: left;
- margin: 10px 0px 0px 10px;
-}
-p#branding {
- margin: 0;
- padding: 6px 0 3px 0;
- color: #fbf2d7;
- font-size: 2em;
- font-weight: bold;
- line-height: 2.5em;
-}
-p#branding a {
- color: #dab134;
-}
-
-#header h1.pagetitle {
- display: none;
- margin: 0;
- padding: 0;
- font-size: 1.2em;
- line-height: 2em;
- color: #d8e2d7;
-}
-
-#header h2.sitename {
- display: none;
- margin: 0;
- padding: 0;
- color: #FCFFF5;
-}
-
-/* ===== Begin Navigation Styling ===== */
-
-/* ----- Navigation ------ */
-#nav {
- float: right;
- margin: 0;
- padding: 0;
- list-style-type: none;
- font-size: 1.2em;
-}
-#nav li {
- display: block;
- float: left;
-}
-#nav li a {
- display: block;
- padding: 9px 15px 12px 0px;
- color: #91AA9D;
-}
-#nav li a:hover {
- text-decoration: underline;
-}
-
-/* ----- Tabs ----- */
-#nav_views {
- clear: both;
- float: left;
- margin: 10px 0px 0px 5px;
- padding: 0;
- bottom: 0;
- list-style-type: none;
- font-size: 1.1em;
- font-weight: bold;
-}
-#nav_views li {
- display: block;
- float: left;
- line-height: 1.3em;
-}
-#nav_views li a {
- display: block;
- margin: 0;
- padding: 4px 12px 3px 12px;
- color: #FCFFF5;
- background-color: #91AA9D;
- border-right: 1px solid #6A8787;
-}
-#nav_views li a:hover {
- text-decoration: none;
-}
-#nav_views li.current a, #nav_views li.current a:hover {
- color: #3F606F;
- background-color: #FCFFF5;
- border-right: 1px solid #6A8787;
-}
-#nav_views li.current a:hover {
- color: #193441;
-}
-#nav_views li a:hover {
- color: #FCFFF5;
- background-color: #3F606F;
- border-right: 1px solid #6A8787;
-}
-
-/* ----- Nav Footer ----- */
-#nav_sub {
- clear: both;
- margin: 18px 10px 0 10px;
- padding: 0;
- list-style-type: none;
- font-size: 1.1em;
- font-weight: bold;
- line-height: 2em;
- border-top: 1px solid #D8E2D7;
-}
-#nav_sub li {
- display: block;
- float: left;
-}
-#nav_sub li a {
- padding: 6px 24px 6px 0;
-}
-#nav_sub li a:hover {
- text-decoration: underline;
-}
-/* ===== End Navigation Styling ===== */
-
-#content {
- clear: left;
- margin: 10px;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: 1em;
- line-height: 1.1em;
-}
-#content h2 {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 1.1em;
-}
-#content label {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 1.1em;
-}
-
-.instructions {
- clear: both;
- float: left;
- margin: 5px 5px 10px 5px;
-}
-.instructions p, .success, .error {
- font-weight: normal;
- margin: 0;
- padding: 10px;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: 1.1em;
- line-height: 1.2em;
- border: 1px solid #91AA9D;
- color: #FCFFF5;
-}
-.instructions a, .success a, .error a {
- color: #d8e2d7;
- text-decoration: underline;
-}
-.instructions a:hover, .success a:hover, .error a:hover {
- color: #FCFFF5;
-}
-.success {
- clear: both;
- float: left;
- margin: 5px 5px 10px 5px;
- background-color: #48705b;
-}
-.error {
- clear: both;
- float: left;
- margin: 5px 5px 10px 5px;
- background-color: #ce3728;
-}
-
-/* ----- Stream -----*/
-
-#notices {
- clear: both;
- margin: 0 auto;
- padding: 0;
- list-style-type: none;
- border-top: 1px solid #D8E2D7;
-}
-#notices a:hover {
- text-decoration: underline;
-}
-.notice_single {
- clear: both;
- display: block;
- margin: 0;
- padding: 5px 5px 5px 0;
- min-height: 48px;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: 1em;
- line-height: 1.4em;
- border-bottom: 1px solid #D8E2D7;
-}
-.notice_single:hover {
- background-color: #F3F8EA;
-}
-.notice_single p {
- display: inline;
- margin: 0;
- padding: 0;
-}
-#notice_delete_form #confirmation_text {
- display: block;
- font-size: 1.1em;
- font-weight: bold;
-}
-input#submit_yes, input#submit_no {
- margin: 18px 10px 0px 0px;
- padding: 4px;
- font-weight: bold;
- color: #FCFFF5;
- background-color: #C15D42;
- cursor: pointer;
- border: 0;
- width: 40px;
-}
-input#submit_yes:hover, input#submit_no:hover {
- background-color: #904632;
-}
-.avatar.stream {
- float: left;
- margin: 0 10px 0 0;
-}
-p.time {
- display: block;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 0.9em;
- line-height: 2em;
-}
-p.time a {
- color: #91AA9D;
-}
-
-/* ----- Profile -----*/
-#profile {
- clear: both;
- float: left;
- padding: 10px 0 0 0;
- border-top: 1px solid #D8E2D7;
- font-family: Georgia, "Times New Roman", Times, serif;
-}
-#profile h1 {
- clear: both;
- float: left;
- margin: 0;
- padding: 0;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 1.2em;
-}
-#profile h2 {
- clear: both;
- float: left;
- margin: 0;
- padding: 1em 0 0.2em 0;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 1.1em;
- text-transform: uppercase;
- color: #91AA9D;
-}
-#profile p {
- clear: both;
- float: left;
- margin: 0 10px 0 0;
- font-size: 1em;
- line-height: 1.4em;
-}
-#profile p.location {
- margin: 0 10px 12px 0;
- font-style: italic;
-}
-#profile p.notice_current {
- font-size: 1.2em;
- line-height: 1.3em;
-}
-#profile_avatar {
- float: left;
- margin-right: 4px;
-}
-#profile_avatar img {
- margin-bottom: 5px;
-}
-.avatar.profile {
- clear: left;
- margin: 0 10px 5px 0;
-}
-.avatar.original {
- float: left;
- margin: 0 10px 18px 0;
-}
-a.nickname {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight: bold;
- font-size: 1.1em;
- padding-right: 3px;
-}
-#profile_information {
- float: left;
-}
-
-.statistics {
- clear: both;
- float: left;
-}
-.statistics h2 {
- clear: both;
- float: left;
- margin: 12px 0 3px 0;
-}
-dl.statistics {
- margin: 0;
-}
-.statistics dt {
- clear: left;
- float: left;
- width: 200px;
-}
-.statistics dd {
- float: left;
-}
-.statistics dt:after {
- content: ":";
-}
-#subscriptions {
- clear: both;
- float: left;
- margin: 18px 0 30px 0;
-}
-#subscriptions_avatars {
- clear: both;
- float: left;
- margin: 6px 0 0 0;
- padding: 0;
- list-style-type: none;
-}
-#subscriptions_avatars li .avatar.mini {
- float: left;
- margin: 0 3px 3px 0;
- padding: 0;
- line-height: 0;
-}
-#subscriptions_viewall {
- clear: left;
-}
-/* ----- End Profile -----*/
-
-/* ----- Begin Subscriptions & Subscribers -----*/
-
-ul.subscriptions, ul.subscribers {
- float: none;
- margin: 0;
- padding: 0;
- list-style-type: none;
- overflow: auto;
-}
-ul.subscriptions li, ul.subscribers li {
- display: block;
- float: left;
- padding: 0;
-}
-/* ----- End Subscriptions & Subscribers -----*/
-
-#pagination {
- margin: 18px auto;
-}
-#nav_pagination {
- margin: 0 0 36px 0;
- padding: 0;
- float: right;
- list-style-type: none;
- font-size: 12px;
- font-weight: bold;
-}
-#nav_pagination li {
- display: block;
- float: left;
- background-color: #91AA9D;
-}
-#nav_pagination li.before {
- margin-right: 1px;
-}
-#nav_pagination li a {
- padding: 6px 15px;
- line-height: 2em;
- background-color: #91AA9D;
- color: #FCFFF5;
-}
-#nav_pagination li a:hover {
- background-color: #3F606F;
- color: #FCFFF5;
- text-decoration: none;
-}
-
-#footer {
- clear: both;
- margin: 10px;
- border-top: 1px solid #D8E2D7;
-}
-#footer p {
- font-size: 0.8em;
- margin-top: 1em;
- line-height: 1.2em;
-}
-#cc {
- float: left;
- margin: 3px 10px 0 0;
-}
-
-/* ===== Begin Forms Styling ===== */
-
-/* ----- Forms General Style ----- */
-form {
- margin: 0 auto;
- padding: 0;
-}
-form {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 1em;
-}
-form label {
- display: block;
- font-size: 1em;
- font-weight: bold;
- line-height: 1.5em;
-}
-form input {
- border: 1px solid #D8E2D7;
- width: 264px;
-}
-input#submit, input.submit {
- display: block;
- margin: 18px 0;
- padding: 4px;
- font-weight: bold;
- color: #FCFFF5;
- background-color: #C15D42;
- cursor: pointer;
- border: 0;
- width: auto;
-}
-input#submit:hover, input.submit:hover {
- background-color: #904632;
-}
-input.checkbox {
- width: auto;
- border: 0;
-}
-textarea, input {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 1em;
- color: #193441;
- padding: 3px;
-}
-textarea:focus, input:focus {
- background-color: #f0f6eb;
-}
-textarea {
- width: 270px;
- border: 1px solid #D8E2D7;
-}
-.input_instructions {
- margin-top: 3px;
- display: block;
- font-size: 1em;
- line-height: 1.2em;
- color: #91aa9d;
- font-family: Verdana, Arial, Helvetica, sans-serif;
-}
-
-/* ----- Status Form ----- */
-#status_form {
- width: 100%;
- margin: 0px 0px 10px 5px;
-}
-#status_form p {
- margin: 0;
- padding: 0;
-}
-#status_label {
- display: none;
- clear: both;
- margin: 0;
- padding: 0 0 3px 0;
- font-size: 1.5em;
- font-weight: bold;
- line-height: 2em;
- color: #91AA9D;
-}
-#status_textarea {
- display: block;
- float: left;
- width: 70%;
- height: 3em;
- margin: 0 0 10px 0;
- padding: 0;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 1.1em;
- color: #193441;
- border: 0;
-}
-#status_submit {
- display: block;
- float: left;
- margin: 0 0 0 4px;
- padding: 1em 10px 1em 10px;
- line-height: 1em;
- width: 10%;
- background-color: #C15D42;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight: bold;
- font-size: 1em;
- color: #FCFFF5;
- cursor: pointer;
- border: 0;
-}
-#status_submit:hover {
- background-color: #904632;
-}
-#counter {
- padding: 1em .5em 1em 5px;
- color: #fff;
- clear: both;
- float: left;
- font-weight: bold;
- text-align: right;
-}
-/* ----- Subscribe Form ----- */
-#subscribe .submit, #unsubscribe .submit, #remotesubscribe .button, #remotesubscribe {
- clear: left;
- margin: 0;
- width: 96px;
- height: 27px;
- font-family: verdana, arial, helvetica, sans-serif;
- font-weight: bold;
- font-size: 12px;
- text-transform: uppercase;
- background-color: #c15d42;
- color: #fcfff5;
- border: 0;
-}
-#remotesubscribe {
- width: 96px;
- height: 22px;
- padding: 5px 0 0 0;
- text-align: center;
-}
-#subscribe .button:hover, #unsubscribe .button:hover {
- background-color: #904632;
- cursor: pointer;
-}
-
-a#remotesubscribe {
- display: block;
-}
-
-/* ----- Login Form -----*/
-input#license {
- width: auto;
- border: 0;
-}
-/* ----- Avatar Form -----*/
-form {
- clear: left;
-}
-
-/* ----- OpenID Form -----*/
-
-input#openid_url {
- background: url(login-bg.gif) no-repeat;
- background-color: #fff;
- background-position: 4px 50%;
- color: #000;
- padding-left: 24px;
-}
-
-/* People lists (search results, maybe subscribers) */
-
-#profiles {
- clear: both;
- margin: 0 auto;
- padding: 0;
- list-style-type: none;
- border-top: 1px solid #D8E2D7;
-}
-#profiles a:hover {
- text-decoration: underline;
-}
-
-.profile_single {
- clear: both;
- display: block;
- margin: 0;
- padding: 5px 5px 5px 0;
- min-height: 48px;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: 1.2em;
- line-height: 1.4em;
- border-bottom: 1px solid #D8E2D7;
-}
-.profile_single:hover {
- background-color: #F3F8EA;
-}
-
-/* ----- IM Settings Form -----*/
-
-#imsettings p {
- margin: 0;
- padding: 0;
- line-height: 1.3em;
-}
-
-/* ===== End Forms Styling ===== */
-
-/* ===== Tag Cloud Styling ===== */
-
-p.tagcloud {
-text-align: center;
-}
-
-p.tagcloud a {
-line-height:1em;
-vertical-align:middle;
-}
-
-p.tagcloud a.largest {
-font-size: 4em;
-}
-p.tagcloud a.verylarge {
-font-size: 3em;
-}
-
-p.tagcloud a.large {
-font-size: 2em;
-}
-
-p.tagcloud a.medium {
-font-size: 1.5em;
-}
-
-p.tagcloud a.small {
-font-size: 1em;
-}
-
-p.tagcloud a.verysmall {
-font-size: 80%;
-}
-
-p.tagcloud a.smallest {
-font-size: 60%;
-}
-
-a.replybutton {
- border: 1px solid #D8E2D7;
- padding: 0px 10px 0px 10px;
- line-height: 0.8em;
-}
diff --git a/theme/iphone/display.css.dist b/theme/iphone/display.css.dist
deleted file mode 100644
index 395da2e2f..000000000
--- a/theme/iphone/display.css.dist
+++ /dev/null
@@ -1,686 +0,0 @@
-/* CSS Document */
-/* Design & CSS by Marie-Claude Doyon http://www.marieclaudedoyon.com */
-
-html {
- background: url(bg-body.gif) repeat-y top center #d8e2d7;
- }
-body {
- position: absolute;
- width: 100%;
- margin: 0;
- padding: 0;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- line-height: 12px;
- min-height: 100%;
- height: 100%;
- color: #193441;
- }
-a {
- color: #C15D42;
- text-decoration: none;
- }
-a:hover {
- text-decoration: underline;
- }
-img, img a {
- border: 0;
- }
-h1 {
- font-size: 14px;
- }
-
-
-#wrap {
- margin: 0 auto;
- padding: 0 20px;
- width: 760px;
- background: url(bg-header.gif) repeat-x #FCFFF5;
- }
-#header {
- position: relative;
- margin: 0 auto;
- width: 540px;
- height: 216px;
- }
-#logo {
- margin-top: 9px;
- }
-p#branding {
- margin: 0;
- padding: 6px 0 3px 0;
- color: #fbf2d7;
- font-size: 21px;
- font-weight: bold;
- line-height: 27px;
- }
-p#branding a {
- color: #dab134;
- }
-
-#header h1.pagetitle {
- margin: 0;
- padding: 0;
- font-size: 15px;
- line-height: 24px;
- color: #d8e2d7;
-}
-
-#header h2.sitename {
- display: none;
- margin: 0;
- padding: 0;
- color: #FCFFF5;
-}
-
-/* ===== Begin Navigation Styling ===== */
-
-/* ----- Navigation ------ */
-#nav {
- float: right;
- margin: 0;
- padding: 0;
- list-style-type: none;
- font-size: 12px;
- }
-#nav li {
- display: block;
- float: left;
- }
-#nav li a {
- display: block;
- padding: 9px 9px 12px 9px;
- color: #91AA9D;
- }
-#nav li a:hover {
- text-decoration: underline;
- }
-
-/* ----- Tabs ----- */
-#nav_views {
- margin: 0 auto;
- padding: 0;
- position: absolute;
- bottom: 0;
- list-style-type: none;
- font-size: 14px;
- font-weight: bold;
- width: 540px;
- /*height: 30px;*/
- }
-#nav_views li {
- display: block;
- float: left;
- line-height: 21px;
- }
-#nav_views li a {
- display: block;
- margin: 0;
- padding: 4px 12px 3px 12px;
- color: #FCFFF5;
- background-color: #91AA9D;
- border-right: 1px solid #6A8787;
- }
-#nav_views li a:hover {
- text-decoration: none;
- }
-#nav_views li.current a, #nav_views li.current a:hover {
- color: #3F606F;
- background-color: #FCFFF5;
- border-right: 1px solid #6A8787;
- }
-#nav_views li.current a:hover {
- color: #193441;
- }
-#nav_views li a:hover {
- color: #FCFFF5;
- background-color: #3F606F;
- border-right: 1px solid #6A8787;
- }
-
-/* ----- Nav Footer ----- */
-#nav_sub {
- clear: both;
- margin: 18px auto 0 auto;
- padding: 0;
- list-style-type: none;
- font-size: 11px;
- font-weight: bold;
- line-height: 21px;
- border-top: 1px solid #D8E2D7;
- width: 540px;
- }
-#nav_sub li {
- display: block;
- float: left;
- }
-#nav_sub li a {
- padding: 6px 24px 6px 0;
- }
-#nav_sub li a:hover {
- text-decoration: underline;
- }
-/* ===== End Navigation Styling ===== */
-
-#content {
- clear: left;
- margin: 40px 0 45px 0;
- padding: 0 110px;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: 14px;
- line-height: 18px;
- }
-#content h2 {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 15px;
- }
-#content label {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 12px;
- }
-.instructions p, .success, .error {
- font-weight: normal;
- margin: 36px 0 0 0;
- padding: 10px;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: 13px;
- line-height: 15px;
- border: 1px solid #91AA9D;
- color: #FCFFF5;
- }
-.instructions a, .success a, .error a {
- color: #d8e2d7;
- text-decoration: underline;
- }
-.instructions a:hover, .success a:hover, .error a:hover {
- color: #FCFFF5;
- }
-.success {
- background-color: #48705b;
- }
-.error {
- background-color: #ce3728;
- }
-
-
-/* ----- Stream -----*/
-
-#notices {
- clear: both;
- margin: 0 auto;
- padding: 0;
- list-style-type: none;
- width: 540px;
- border-top: 1px solid #D8E2D7;
- }
-#notices a:hover {
- text-decoration: underline;
- }
-.notice_single {
- clear: both;
- display: block;
- margin: 0;
- padding: 5px 5px 5px 0;
- min-height: 48px;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: 13px;
- line-height: 16px;
- border-bottom: 1px solid #D8E2D7;
- }
-.notice_single:hover {
- background-color: #F3F8EA;
- }
-.notice_single p {
- display: inline;
- margin: 0;
- padding: 0;
- }
-#notice_delete_form #confirmation_text {
- display: block;
- font-size: 14px;
- font-weight: bold;
- }
-input#submit_yes, input#submit_no {
- margin: 18px 10px 0px 0px;
- padding: 4px;
- font-weight: bold;
- color: #FCFFF5;
- background-color: #C15D42;
- cursor: pointer;
- border: 0;
- width: 40px;
- }
-input#submit_yes:hover, input#submit_no:hover {
- background-color: #904632;
- }
-.avatar.stream {
- float: left;
- margin: 0 10px 0 0;
- }
-p.time {
- display: block;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10px;
- line-height: 15px;
- }
-p.time a {
- color: #91AA9D;
- }
-
-/* ----- Profile -----*/
-#profile {
- clear: left;
- margin: 0 -110px;
- padding: 10px 0 0 0;
- min-height: 170px;
- border-top: 1px solid #D8E2D7;
- font-family: Georgia, "Times New Roman", Times, serif;
- }
-#profile h1 {
- margin: 0;
- padding: 0;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 14px;
- }
-#profile h2 {
- margin: 0;
- padding: 0;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 11px;
- text-transform: uppercase;
- color: #91AA9D;
- }
-#profile p {
- margin: 0 10px 0 0;
- font-size: 12px;
- line-height: 14px;
- }
-#profile p.location {
- margin: 0 10px 12px 0;
- font-style: italic;
- }
-#profile p.notice_current {
- font-size: 18px;
- line-height: 21px;
- }
-#profile_avatar {
- float: left;
- margin-right: 4px;
- }
-#profile_avatar img {
- margin-bottom: 5px;
- }
-.avatar.profile {
- clear: left;
- margin: 0 10px 5px 0;
- }
-.avatar.original {
- float: left;
- margin: 0 10px 18px 0;
- }
-a.nickname {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight: bold;
- font-size: 12px;
- padding-right: 3px;
- }
-#profile_information {
- float: left;
- position: relative;
- width: 270px;
- height: 200px;
- }
-.statistics {
- margin-top: 18px;
- }
-.statistics h2 {
- margin: 12px 0 3px 0;
- }
-dl.statistics {
- margin: 0;
- font-size: 12px;
- line-height: 14px;
- }
-.statistics dt {
- float: left;
- width: 96px;
-}
-.statistics dd {
- margin-left: 100px;
-}
-.statistics dt:after {
- content: ":";
- }
-#subscriptions {
- float: left;
- margin: 18px 0 30px 0;
- }
-#subscriptions_avatars {
- float: left;
- margin: 6px 0 0 0;
- padding: 0;
- list-style-type: none;
- width: 270px;
- }
-#subscriptions_avatars li .avatar.mini {
- float: left;
- margin: 0 3px 3px 0;
- padding: 0;
- line-height: 0;
- /* border: 1px solid #f00; */
- }
-#subscriptions_viewall {
- clear: left;
- }
-/* ----- End Profile -----*/
-
-/* ----- Begin Subscriptions & Subscribers -----*/
-
-ul.subscriptions, ul.subscribers {
- float: none;
- margin: 0;
- padding: 0;
- list-style-type: none;
- overflow: auto;
- }
-ul.subscriptions li, ul.subscribers li {
- display: block;
- float: left;
- padding: 0;
- }
-/* ----- End Subscriptions & Subscribers -----*/
-
-
-
-#pagination {
- margin: 18px auto;
- width: 540px;
- }
-#nav_pagination {
- margin: 0 0 36px 0;
- padding: 0;
- float: right;
- list-style-type: none;
- font-size: 12px;
- font-weight: bold;
- }
-#nav_pagination li {
- display: block;
- float: left;
- background-color: #91AA9D;
- }
-#nav_pagination li.before {
- margin-right: 1px;
- }
-#nav_pagination li a {
- padding: 6px 15px;
- line-height: 21px;
- background-color: #91AA9D;
- color: #FCFFF5;
- }
-#nav_pagination li a:hover {
- background-color: #3F606F;
- color: #FCFFF5;
- text-decoration: none;
- }
-
-#footer {
- clear: both;
- margin: 0 auto;
- padding: 0 0 36px 0;
- width: 540px;
- border-top: 1px solid #D8E2D7;
- }
-#footer p {
- margin-top: 9px;
- line-height: 12px;
- }
-#cc {
- float: left;
- margin: 3px 10px 0 0;
- }
-
-/* ===== Begin Forms Styling ===== */
-
-/* ----- Forms General Style ----- */
-form {
- margin: 0 auto;
- padding: 0;
- }
-form {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 12px;
- }
-form label {
- display: block;
- font-size: 12px;
- font-weight: bold;
- line-height: 18px;
- }
-form input {
- border: 1px solid #D8E2D7;
- width: 264px;
- }
-input#submit, input.submit {
- display: block;
- margin: 18px 0;
- padding: 4px;
- font-weight: bold;
- color: #FCFFF5;
- background-color: #C15D42;
- cursor: pointer;
- border: 0;
- width: auto;
- }
-input#submit:hover, input.submit:hover {
- background-color: #904632;
- }
-input.checkbox {
- /*width: 14px;
- height: 14px;*/
- width: auto;
- border: 0;
- }
-textarea, input {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 12px;
- color: #193441;
- padding: 3px;
- }
-textarea:focus, input:focus {
- background-color: #f0f6eb;
- }
-textarea {
- width: 270px;
- border: 1px solid #D8E2D7;
- }
-.input_instructions {
- margin-top: 3px;
- display: block;
- font-size: 11px;
- line-height: 15px;
- color: #91aa9d;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- }
-
-/* ----- Status Form ----- */
-#status_form {
- height: 96px;
- /*background-color: #F00;*/
- }
-#status_form p {
- margin: 36px 0 0 0;
- padding: 0;
- }
-#status_label {
- display: block;
- clear: both;
- margin: 0;
- padding: 0 0 3px 0;
- font-size: 18px;
- font-weight: bold;
- line-height: 24px;
- color: #91AA9D;
- }
-#status_textarea {
- display: block;
- float: left;
- width: 463px;
- height: 35px;
- padding: 5px;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 12px;
- color: #193441;
- border: 0;
- }
-#status_submit {
- display: block;
- float: left;
- margin: 1px 0 0 4px;
- width: 63px;
- height: 45px;
- background-color: #C15D42;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-weight: bold;
- font-size: 14px;
- color: #FCFFF5;
- cursor: pointer;
- border: 0;
- }
-#status_submit:hover {
- background-color: #904632;
- }
-#counter {
- position: absolute;
- top: 140px;
- left: -64px;
- width: 50px;
- font-weight: bold;
- text-align: right;
-}
-/* ----- Subscribe Form ----- */
-#subscribe .submit, #unsubscribe .submit, #remotesubscribe .button, #remotesubscribe {
- clear: left;
- margin: 0;
- width: 96px;
- height: 27px;
- font-family: verdana, arial, helvetica, sans-serif;
- font-weight: bold;
- font-size: 10px;
- text-transform: uppercase;
- background-color: #c15d42;
- color: #fcfff5;
- border: 0;
- }
-#remotesubscribe {
- width: 96px;
- height: 22px;
- padding: 5px 0 0 0;
- text-align: center;
- }
-#subscribe .button:hover, #unsubscribe .button:hover {
- background-color: #904632;
- cursor: pointer;
- }
-
-a#remotesubscribe {
- display: block;
-}
-
-/* ----- Login Form -----*/
-input#license {
- width: auto;
- border: 0;
- }
-/* ----- Avatar Form -----*/
-form {
- clear: left;
-}
-
-/* ----- OpenID Form -----*/
-
-input#openid_url {
- background: url(login-bg.gif) no-repeat;
- background-color: #fff;
- background-position: 4px 50%;
- color: #000;
- padding-left: 24px;
-}
-
-/* People lists (search results, maybe subscribers) */
-
-#profiles {
- clear: both;
- margin: 0 auto;
- padding: 0;
- list-style-type: none;
- width: 540px;
- border-top: 1px solid #D8E2D7;
- /*border: 1px solid #F00;*/
- }
-#profiles a:hover {
- text-decoration: underline;
- }
-
-.profile_single {
- clear: both;
- display: block;
- margin: 0;
- padding: 5px 5px 5px 0;
- min-height: 48px;
- font-family: Georgia, "Times New Roman", Times, serif;
- font-size: 13px;
- line-height: 16px;
- border-bottom: 1px solid #D8E2D7;
- }
-.profile_single:hover {
- background-color: #F3F8EA;
- }
-
-/* ----- IM Settings Form -----*/
-
-#imsettings p {
- margin: 0;
- padding: 0;
- line-height: 15px;
-}
-
-/* ===== End Forms Styling ===== */
-
-/* ===== Tag Cloud Styling ===== */
-
-p.tagcloud {
-text-align: center;
-}
-
-p.tagcloud a {
-line-height:100%;
-vertical-align:middle;
-}
-
-p.tagcloud a.largest {
-font-size: 400%;
-}
-p.tagcloud a.verylarge {
-font-size: 300%;
-}
-
-p.tagcloud a.large {
-font-size: 200%;
-}
-
-p.tagcloud a.medium {
-font-size: 150%;
-}
-
-p.tagcloud a.small {
-font-size: 100%;
-}
-
-p.tagcloud a.verysmall {
-font-size: 80%;
-}
-
-p.tagcloud a.smallest {
-font-size: 60%;
-}
diff --git a/theme/iphone/ie6.css.dist b/theme/iphone/ie6.css.dist
deleted file mode 100644
index 97d9fee3f..000000000
--- a/theme/iphone/ie6.css.dist
+++ /dev/null
@@ -1,63 +0,0 @@
-@charset "UTF-8";
-/* CSS Document */
-body {
- text-align: center;
-}
-input {
- height: 24px;
-}
-#wrap {
- margin: 0 auto;
- padding: 0 20px;
- width: 800px;
- text-align: left;
- background: url(bg-header.gif) repeat-x #FCFFF5;
- }
-#header {
- position: relative;
- margin-left: 108px;
- }
-#nav_views {
- margin: 0;
- }
-#nav_views li {
- line-height: 19px;
- }
-.statistics dd {
- margin-top: -15px;
- clear: both;
- }
-#notices {
- margin: 0;
- }
-.notice_single {
- height: 48px;
- }
-#profile p.notice_current {
- height: 96px;
- }
-
-#subscriptions_avatars li {
- float: left;
- margin: 0;
- padding: 0;
- }
-img.avatar.original, img.avatar.profile {
- clear: none;
- float: left;
-}
-#status_textarea {
- height: 46px;
- }
-
-#nav_pagination li a {
- padding: 6px 15px;
- line-height: 27px;
- }
-#nav_sub {
- position: relative;
- margin-left: 108px;
- }
-#footer {
- margin-left: 108px;
-}
diff --git a/theme/iphone/ie7.css.dist b/theme/iphone/ie7.css.dist
deleted file mode 100644
index bbf52d5cf..000000000
--- a/theme/iphone/ie7.css.dist
+++ /dev/null
@@ -1,20 +0,0 @@
-@charset "UTF-8";
-/* CSS Document */
-
-#statistics dd {
- clear: both;
- }
-
-
-#subscriptions_avatars li {
- float: left;
- }
-img.avatar.original, img.avatar.profile {
- clear: none;
- float: left;
-}
-
-#nav_pagination li a {
- padding: 6px 15px;
- line-height: 27px;
- } \ No newline at end of file
diff --git a/theme/iphone/login-bg.gif b/theme/iphone/login-bg.gif
deleted file mode 100644
index e2d8377db..000000000
--- a/theme/iphone/login-bg.gif
+++ /dev/null
Binary files differ
diff --git a/theme/iphone/logo.png b/theme/iphone/logo.png
deleted file mode 100644
index 3b271814d..000000000
--- a/theme/iphone/logo.png
+++ /dev/null
Binary files differ