diff --git a/README b/README index eb1fb8cd70..51a8e91cc5 100644 --- a/README +++ b/README @@ -98,7 +98,6 @@ released Aug 26 2009. Notable changes this version: - Better error handling in Twitter posting. - Show oEmbed data for XHTML files as well as plain HTML. - Updated bug database link in README. -- require HTML tidy extension. - add support for HTTP Basic Auth in PHP CGI or FastCGI (e.g. GoDaddy). - autofocus input to selected entry elements depending on page. - updated layout for filter-by-tag form. @@ -179,7 +178,6 @@ Your PHP installation must include the following PHP extensions: - GD. For scaling down avatar images. - mbstring. For handling Unicode (UTF-8) encoded strings. - gettext. For multiple languages. Default on many PHP installs. -- tidy. Used to clean up HTML/URLs for the URL shortener to consume. For some functionality, you will also need the following extensions: diff --git a/actions/apidirectmessagenew.php b/actions/apidirectmessagenew.php index fed6acc30e..e6c39ce4ac 100644 --- a/actions/apidirectmessagenew.php +++ b/actions/apidirectmessagenew.php @@ -79,7 +79,7 @@ class ApiDirectMessageNewAction extends ApiAuthAction $this->source = $this->trimmed('source'); // Not supported by Twitter. $reserved_sources = array('web', 'omb', 'mail', 'xmpp', 'api'); - if (empty($thtis->source) || in_array($this->source, $reserved_sources)) { + if (empty($this->source) || in_array($this->source, $reserved_sources)) { $source = 'api'; } diff --git a/actions/passwordsettings.php b/actions/passwordsettings.php index 46ed1df7e7..3bb8e3bb9f 100644 --- a/actions/passwordsettings.php +++ b/actions/passwordsettings.php @@ -110,7 +110,7 @@ class PasswordsettingsAction extends AccountSettingsAction $this->elementEnd('li'); $this->elementStart('li'); $this->password('confirm', _('Confirm'), - _('same as password above')); + _('Same as password above')); $this->elementEnd('li'); $this->elementEnd('ul'); diff --git a/actions/pathsadminpanel.php b/actions/pathsadminpanel.php index c4ab18c00c..f1a2b1b8a6 100644 --- a/actions/pathsadminpanel.php +++ b/actions/pathsadminpanel.php @@ -293,7 +293,7 @@ class PathsAdminPanelForm extends AdminForm function formActions() { - $this->out->submit('save', _('Save'), 'submit form_action-secondary', + $this->out->submit('save', _('Save'), 'submit', 'save', _('Save paths')); } diff --git a/actions/remotesubscribe.php b/actions/remotesubscribe.php index 74025cf807..c723d53a1c 100644 --- a/actions/remotesubscribe.php +++ b/actions/remotesubscribe.php @@ -166,7 +166,7 @@ class RemotesubscribeAction extends Action omb_oauth_datastore()); } catch (OMB_InvalidYadisException $e) { $this->showForm(_('Not a valid profile URL (no YADIS document or ' . - 'no or invalid XRDS defined).')); + 'invalid XRDS defined).')); return; } diff --git a/actions/siteadminpanel.php b/actions/siteadminpanel.php index 40197d6e2b..b963336e60 100644 --- a/actions/siteadminpanel.php +++ b/actions/siteadminpanel.php @@ -196,18 +196,18 @@ class SiteadminpanelAction extends AdminPanelAction if (in_array($values['site']['ssl'], array('sometimes', 'always'))) { if (empty($values['site']['sslserver'])) { - $this->clientError(_("You must set an SSL sever when enabling SSL.")); + $this->clientError(_("You must set an SSL server when enabling SSL.")); } } if (mb_strlen($values['site']['sslserver']) > 255) { - $this->clientError(_("Invalid SSL server. Max length is 255 characters.")); + $this->clientError(_("Invalid SSL server. The maximum length is 255 characters.")); } // Validate text limit if (!Validate::number($values['site']['textlimit'], array('min' => 140))) { - $this->clientError(_("Minimum text limit is 140c.")); + $this->clientError(_("Minimum text limit is 140 characters.")); } // Validate dupe limit @@ -281,7 +281,7 @@ class SiteAdminPanelForm extends AdminForm $this->unli(); $this->li(); $this->input('email', _('Email'), - _('contact email address for your site')); + _('Contact email address for your site')); $this->unli(); $this->out->elementEnd('ul'); $this->out->elementEnd('fieldset'); @@ -364,7 +364,7 @@ class SiteAdminPanelForm extends AdminForm $this->li(); $this->input('frequency', _('Frequency'), - _('Snapshots will be sent once every N Web hits'), + _('Snapshots will be sent once every N web hits'), 'snapshot'); $this->unli(); diff --git a/db/08to09_pg.sql b/db/08to09_pg.sql index de6a822090..b312d47dd8 100644 --- a/db/08to09_pg.sql +++ b/db/08to09_pg.sql @@ -49,4 +49,15 @@ DROP index subscription_subscribed_idx; CREATE index subscription_subscribed_idx ON subscription (subscribed,created); DROP index notice_profile_id_idx; -CREATE index notice_profile_id_idx ON notice (profile_id,created,id); \ No newline at end of file +CREATE index notice_profile_id_idx ON notice (profile_id,created,id); + +ALTER TABLE notice ADD COLUMN lat decimal(10, 7) /* comment 'latitude'*/; +ALTER TABLE notice ADD COLUMN lon decimal(10,7) /* comment 'longitude'*/; +ALTER TABLE notice ADD COLUMN location_id integer /* comment 'location id if possible'*/ ; +ALTER TABLE notice ADD COLUMN location_ns integer /* comment 'namespace for location'*/; + +ALTER TABLE profile ADD COLUMN lat decimal(10,7) /*comment 'latitude'*/ ; +ALTER TABLE profile ADD COLUMN lon decimal(10,7) /*comment 'longitude'*/; +ALTER TABLE profile ADD COLUMN location_id integer /* comment 'location id if possible'*/; +ALTER TABLE profile ADD COLUMN location_ns integer /* comment 'namespace for location'*/; + \ No newline at end of file diff --git a/db/notice_source.sql b/db/notice_source.sql index 10ff0d55aa..50660e9480 100644 --- a/db/notice_source.sql +++ b/db/notice_source.sql @@ -11,6 +11,7 @@ VALUES ('cliqset', 'Cliqset', 'http://www.cliqset.com/', now()), ('deskbar','Deskbar-Applet','http://www.gnome.org/projects/deskbar-applet/', now()), ('Do','Gnome Do','http://do.davebsd.com/wiki/index.php?title=Microblog_Plugin', now()), + ('drupal','Drupal','http://drupal.org/', now()), ('eventbox','EventBox','http://thecosmicmachine.com/eventbox/ ', now()), ('Facebook','Facebook','http://apps.facebook.com/identica/', now()), ('feed2omb','feed2omb','http://projects.ciarang.com/p/feed2omb/', now()), diff --git a/db/statusnet_pg.sql b/db/statusnet_pg.sql index 27b189e288..cd72d66eab 100644 --- a/db/statusnet_pg.sql +++ b/db/statusnet_pg.sql @@ -1,5 +1,4 @@ /* local and remote users have profiles */ - create sequence profile_seq; create table profile ( id bigint default nextval('profile_seq') primary key /* comment 'unique identifier' */, @@ -132,11 +131,14 @@ create table notice ( reply_to integer /* comment 'notice replied to (usually a guess)' */ references notice (id) , is_local integer default 0 /* comment 'notice was generated by a user' */, source varchar(32) /* comment 'source of comment, like "web", "im", or "clientname"' */, - conversation integer /*id of root notice in this conversation' */ references notice (id) - - + conversation integer /*id of root notice in this conversation' */ references notice (id), + lat decimal(10,7) /* comment 'latitude'*/ , + lon decimal(10,7) /* comment 'longitude'*/ , + location_id integer /* comment 'location id if possible'*/ , + location_ns integer /* comment 'namespace for location'*/ /* FULLTEXT(content) */ ); + create index notice_profile_id_idx on notice using btree(profile_id,created,id); create index notice_created_idx on notice using btree(created); diff --git a/install.php b/install.php index e7f7cf3187..1c62bb2b21 100644 --- a/install.php +++ b/install.php @@ -301,7 +301,7 @@ function checkPrereqs() } $reqs = array('gd', 'curl', - 'xmlwriter', 'mbstring','tidy'); + 'xmlwriter', 'mbstring', 'xml', 'dom', 'simplexml'); foreach ($reqs as $req) { if (!checkExtension($req)) { diff --git a/js/geometa.js b/js/geometa.js index ced5be0608..21deb18852 100644 --- a/js/geometa.js +++ b/js/geometa.js @@ -1,5 +1,5 @@ // A shim to implement the W3C Geolocation API Specification using Gears or the Ajax API -if ( typeof navigator.geolocation == "undefined" || navigator.geolocation.shim ) (function(){ +if (typeof navigator.geolocation == "undefined" || navigator.geolocation.shim ) (function(){ // -- BEGIN GEARS_INIT (function() { @@ -94,7 +94,7 @@ var GearsGeoLocation = (function() { } }; -})(); +}); var AjaxGeoLocation = (function() { // -- PRIVATE @@ -103,7 +103,7 @@ var AjaxGeoLocation = (function() { if (!hasGoogleLoader() && !loading) { loading = true; var s = document.createElement('script'); - s.src = 'http://www.google.com/jsapi?callback=_google_loader_apiLoaded'; + s.src = (document.location.protocol == "https:"?"https://":"http://") + 'www.google.com/jsapi?callback=_google_loader_apiLoaded'; s.type = "text/javascript"; document.getElementsByTagName('body')[0].appendChild(s); } @@ -161,22 +161,23 @@ var AjaxGeoLocation = (function() { var cl = google.loader.ClientLocation; var position = { - latitude: cl.latitude, - longitude: cl.longitude, - altitude: null, - accuracy: 43000, // same as Gears accuracy over wifi? - altitudeAccuracy: null, - heading: null, - velocity: null, - timestamp: new Date(), - + coords: { + latitude: cl.latitude, + longitude: cl.longitude, + altitude: null, + accuracy: 43000, // same as Gears accuracy over wifi? + altitudeAccuracy: null, + heading: null, + speed: null, + }, // extra info that is outside of the bounds of the core API address: { city: cl.address.city, country: cl.address.country, country_code: cl.address.country_code, region: cl.address.region - } + }, + timestamp: new Date() }; successCallback(position); @@ -208,9 +209,9 @@ var AjaxGeoLocation = (function() { } }; -})(); +}); // If you have Gears installed use that, else use Ajax ClientLocation -navigator.geolocation = (window.google && google.gears) ? GearsGeoLocation : AjaxGeoLocation; +navigator.geolocation = (window.google && google.gears) ? GearsGeoLocation() : AjaxGeoLocation(); })(); diff --git a/js/jquery.joverlay.js b/js/jquery.joverlay.js index e4effec8e7..cf4e159986 100644 --- a/js/jquery.joverlay.js +++ b/js/jquery.joverlay.js @@ -1,6 +1,6 @@ /* Copyright (c) 2009 Alvaro A. Lima Jr http://alvarojunior.com/jquery/joverlay.html * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * Version: 0.7.1 (JUN 15, 2009) + * Version: 0.8 (OUT 19, 2009) * Requires: jQuery 1.3+ */ @@ -9,43 +9,54 @@ // Global vars var isIE6 = $.browser.msie && $.browser.version == 6.0; // =( var JOVERLAY_TIMER = null; - var JOVERLAY_ELEMENT_PREV = null; $.fn.jOverlay = function(options) { // Element exist? if ( $('#jOverlay').length ) {$.closeOverlay();} - // Clear Element Prev - JOVERLAY_ELEMENT_PREV = null; - // Clear Timer if (JOVERLAY_TIMER !== null) { clearTimeout( JOVERLAY_TIMER ); } // Set Options - var options = $.extend({}, $.fn.jOverlay.options, options); + var options = $.extend({}, $.fn.jOverlay.options, options || {}); + + // success deprecated !!! Use onSuccess + var onSuccess = options.onSuccess || options.success; + + var element = this.is('*') ? this : '#jOverlayContent'; + + var position = isIE6 ? 'absolute' : 'fixed'; + + var isImage = /([^\/\\]+)\.(png|gif|jpeg|jpg|bmp)$/i.test( options.url ); + + var imgLoading = options.imgLoading ? "" : ''; // private function function center(id) { if (options.center) { $.center(id); + } else if( isIE6 ) { + $.center('#jOverlayContent',{ + 'top' : $(window).scrollTop() + 'px', + 'marginLeft' : '', + 'marginTop' : '', + 'left' : '' + }); } } - var element = this.is('*') ? this : '#jOverlayContent'; - var position = isIE6 ? 'absolute' : 'fixed'; - var isImage = /([^\/\\]+)\.(png|gif|jpeg|jpg|bmp)$/i.test( options.url ); - - var imgLoading = options.imgLoading ? "" : ''; - $('body').prepend(imgLoading + "
" + "