diff options
author | Matthew Somerville <matthew@mysociety.org> | 2012-05-22 14:49:42 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2012-05-22 14:49:42 +0100 |
commit | df4583814b09d3844db1ffe671b2cb8ff48a6d93 (patch) | |
tree | 3d01231000b4ca071aeaf2fd7393316a0b6aed4d | |
parent | 7985b5e44688f9ddaf430bf06c42b50484da038a (diff) | |
parent | 58365c1fc883f64e6a8c9b4cd70869013c179b69 (diff) |
Merge branch 'master' into bromley
Conflicts:
bin/send-reports
perllib/FixMyStreet/App/Controller/Report/New.pm
-rw-r--r-- | .mailmap | 33 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Photo.pm | 91 | ||||
-rwxr-xr-x | perllib/FixMyStreet/App/Controller/Questionnaire.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/New.pm | 91 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/Update.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Root.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/DB/Result/Problem.pm | 2 | ||||
-rw-r--r-- | perllib/FixMyStreet/SendReport/Barnet.pm | 11 | ||||
-rw-r--r-- | t/app/controller/report_new.t | 67 | ||||
-rwxr-xr-x | templates/web/default/faq/faq-en-gb.html | 39 | ||||
-rwxr-xr-x | templates/web/fixmystreet/faq/faq-en-gb.html | 39 | ||||
-rw-r--r-- | templates/web/fixmystreet/footer.html | 1 | ||||
-rw-r--r-- | web/cobrands/fixmystreet/_layout.scss | 8 | ||||
-rw-r--r-- | web/i/pin-green.png | bin | 1806 -> 1316 bytes | |||
-rw-r--r-- | web/i/pin-red.png | bin | 1841 -> 1353 bytes | |||
-rw-r--r-- | web/i/pin-yellow-big.png | bin | 2364 -> 1242 bytes | |||
-rw-r--r-- | web/i/pin-yellow.png | bin | 1475 -> 828 bytes |
17 files changed, 237 insertions, 151 deletions
diff --git a/.mailmap b/.mailmap new file mode 100644 index 000000000..b279f97a8 --- /dev/null +++ b/.mailmap @@ -0,0 +1,33 @@ +Anders Einar Hilden <hildenae@gmail.com> +Andrew Perry <me@andrewperry.com.au> +Anna Powell-Smith <annapowellsmith@gmail.com> <anna> +Anna Powell-Smith <annapowellsmith@gmail.com> <annapowellsmith@gmail.com> +bci-cities <bci-cities> +Chris Lightfoot <chris@ex-parrot.com> <chris> +Dave Whiteland <dave@mysociety.org> <dave@balti.ukcod.org.uk> +Dave Whiteland <dave@mysociety.org> <dave@fury.ukcod.org.uk> +Duncan Parkes <duncan@mysociety.org> <duncan@fury.ukcod.org.uk> +Edmund von der Burg <evdb@mysociety.org> <evdb@ecclestoad.co.uk> +Francis Irving <francis@mysociety.org> <francis> +Guillaume Rischard <fixmystreet@stereo.lu> <fixmystreet@stereo.lu> +Guillaume Rischard <fixmystreet@stereo.lu> <git@stereo.lu> +Josh Angell <josh@supercooldesign.co.uk> <jbangell@gmail.com> +Kagee <hildenae@gmail.com> +Keith Garrett <keith@mysociety.org> <keith> +Kevin Brubeck Unhammer <unhammer@fsfe.org> +Louise Crow <louise@mysociety.org> <louise.crow@gmail.com> +Louise Crow <louise@mysociety.org> <louise@peas.ukcod.org.uk> +Louise Crow <louise@mysociety.org> <louise> +Mark Longair <mark@mysociety.org> <mhl@pobox.com> +Matthew Somerville <matthew@mysociety.org> <matthew> +Matthew Somerville <matthew@mysociety.org> <matthew@balti.ukcod.org.uk> +Matthew Somerville <matthew@mysociety.org> <matthew@cake.ukcod.org.uk> +Matthew Somerville <matthew@mysociety.org> <matthew@dracos.co.uk> +Matthew Somerville <matthew@mysociety.org> <matthew@fury.ukcod.org.uk> +Matthew Somerville <matthew@mysociety.org> <matthew-github@dracos.co.uk> +Matthew Somerville <matthew@mysociety.org> <matthew@mysociety.org> +Matthew Somerville <matthew@mysociety.org> <matthew@rocket.ukcod.org.uk> +Struan Donald <struan@mysociety.org> <struan@exo.org.uk> +Struan Donald <struan@mysociety.org><struan@fury.ukcod.org.uk> +Tim Morley <t_morley@argonet.co.uk> <timsk> +Tony Bowden <tony@tmtm.com> diff --git a/perllib/FixMyStreet/App/Controller/Photo.pm b/perllib/FixMyStreet/App/Controller/Photo.pm index 5d5832b08..a6717fc33 100644 --- a/perllib/FixMyStreet/App/Controller/Photo.pm +++ b/perllib/FixMyStreet/App/Controller/Photo.pm @@ -5,6 +5,7 @@ use namespace::autoclean; BEGIN {extends 'Catalyst::Controller'; } use DateTime::Format::HTTP; +use Digest::SHA1 qw(sha1_hex); use Path::Class; =head1 NAME @@ -136,6 +137,96 @@ sub _crop { return $blobs[0]; } +=head2 process_photo + +Handle the photo - either checking and storing it after an upload or retrieving +it from the cache. + +Store any error message onto 'photo_error' in stash. +=cut + +sub process_photo : Private { + my ( $self, $c ) = @_; + + return + $c->forward('process_photo_upload') + || $c->forward('process_photo_cache') + || 1; # always return true +} + +sub process_photo_upload : Private { + my ( $self, $c ) = @_; + + # check for upload or return + my $upload = $c->req->upload('photo') + || return; + + # check that the photo is a jpeg + my $ct = $upload->type; + $ct =~ s/x-citrix-//; # Thanks, Citrix + # Had a report of a JPEG from an Android 2.1 coming through as a byte stream + unless ( $ct eq 'image/jpeg' || $ct eq 'image/pjpeg' || $ct eq 'application/octet-stream' ) { + $c->log->info('Bad photo tried to upload, type=' . $ct); + $c->stash->{photo_error} = _('Please upload a JPEG image only'); + return; + } + + # get the photo into a variable + my $photo_blob = eval { + my $filename = $upload->tempname; + my $out = `jhead -se -autorot $filename 2>&1`; + die _("Please upload a JPEG image only"."\n") if $out =~ /Not JPEG:/; + my $photo = $upload->slurp; + return $photo; + }; + if ( my $error = $@ ) { + my $format = _( +"That image doesn't appear to have uploaded correctly (%s), please try again." + ); + $c->stash->{photo_error} = sprintf( $format, $error ); + return; + } + + # we have an image we can use - save it to the upload dir for storage + my $cache_dir = dir( $c->config->{UPLOAD_DIR} ); + $cache_dir->mkpath; + unless ( -d $cache_dir && -w $cache_dir ) { + warn "Can't find/write to photo cache directory '$cache_dir'"; + return; + } + + my $fileid = sha1_hex($photo_blob); + $upload->copy_to( file($cache_dir, $fileid . '.jpeg') ); + + # stick the hash on the stash, so don't have to reupload in case of error + $c->stash->{upload_fileid} = $fileid; + + return 1; +} + +=head2 process_photo_cache + +Look for the upload_fileid parameter and check it matches a file on disk. If it +does return true and put fileid on stash, otherwise false. + +=cut + +sub process_photo_cache : Private { + my ( $self, $c ) = @_; + + # get the fileid and make sure it is just a hex number + my $fileid = $c->req->param('upload_fileid') || ''; + $fileid =~ s{[^0-9a-f]}{}gi; + return unless $fileid; + + my $file = file( $c->config->{UPLOAD_DIR}, "$fileid.jpeg" ); + return unless -e $file; + + $c->stash->{upload_fileid} = $fileid; + return 1; +} + + =head1 AUTHOR Struan Donald diff --git a/perllib/FixMyStreet/App/Controller/Questionnaire.pm b/perllib/FixMyStreet/App/Controller/Questionnaire.pm index 6ed7ddd9d..fe71f3fbb 100755 --- a/perllib/FixMyStreet/App/Controller/Questionnaire.pm +++ b/perllib/FixMyStreet/App/Controller/Questionnaire.pm @@ -244,7 +244,7 @@ sub process_questionnaire : Private { push @errors, _('Please provide some explanation as to why you\'re reopening this report') if $c->stash->{been_fixed} eq 'No' && $c->stash->{problem}->is_fixed() && !$c->stash->{update}; - $c->forward('/report/new/process_photo'); + $c->forward('/photo/process_photo'); push @errors, $c->stash->{photo_error} if $c->stash->{photo_error}; diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 4dac4d30f..5f067573b 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -5,7 +5,6 @@ use namespace::autoclean; BEGIN { extends 'Catalyst::Controller'; } use FixMyStreet::Geocode; -use Digest::SHA1 qw(sha1_hex); use Encode; use Image::Magick; use List::MoreUtils qw(uniq); @@ -99,7 +98,7 @@ sub report_new : Path : Args(0) { return unless $c->forward('check_form_submitted'); $c->forward('process_user'); $c->forward('process_report'); - $c->forward('process_photo'); + $c->forward('/photo/process_photo'); return unless $c->forward('check_for_errors'); $c->forward('save_user_and_report'); $c->forward('redirect_or_confirm_creation'); @@ -215,7 +214,7 @@ sub report_import : Path('/import') { } # handle the photo upload - $c->forward( 'process_photo_upload' ); + $c->forward( '/photo/process_photo_upload' ); my $fileid = $c->stash->{upload_fileid}; if ( my $error = $c->stash->{photo_error} ) { push @errors, $error; @@ -844,92 +843,6 @@ sub process_report : Private { return 1; } -=head2 process_photo - -Handle the photo - either checking and storing it after an upload or retrieving -it from the cache. - -Store any error message onto 'photo_error' in stash. -=cut - -sub process_photo : Private { - my ( $self, $c ) = @_; - - return - $c->forward('process_photo_upload') - || $c->forward('process_photo_cache') - || 1; # always return true -} - -sub process_photo_upload : Private { - my ( $self, $c ) = @_; - - # check for upload or return - my $upload = $c->req->upload('photo') - || return; - - # check that the photo is a jpeg - my $ct = $upload->type; - unless ( $ct eq 'image/jpeg' || $ct eq 'image/pjpeg' ) { - $c->log->info('Bad photo tried to upload, type=' . $ct); - $c->stash->{photo_error} = _('Please upload a JPEG image only'); - return; - } - - # get the photo into a variable - my $photo_blob = eval { - my $filename = $upload->tempname; - my $out = `jhead -se -autorot $filename`; - my $photo = $upload->slurp; - return $photo; - }; - if ( my $error = $@ ) { - my $format = _( -"That image doesn't appear to have uploaded correctly (%s), please try again." - ); - $c->stash->{photo_error} = sprintf( $format, $error ); - return; - } - - # we have an image we can use - save it to the upload dir for storage - my $cache_dir = dir( $c->config->{UPLOAD_DIR} ); - $cache_dir->mkpath; - unless ( -d $cache_dir && -w $cache_dir ) { - warn "Can't find/write to photo cache directory '$cache_dir'"; - return; - } - - my $fileid = sha1_hex($photo_blob); - $upload->copy_to( file($cache_dir, $fileid . '.jpeg') ); - - # stick the hash on the stash, so don't have to reupload in case of error - $c->stash->{upload_fileid} = $fileid; - - return 1; -} - -=head2 process_photo_cache - -Look for the upload_fileid parameter and check it matches a file on disk. If it -does return true and put fileid on stash, otherwise false. - -=cut - -sub process_photo_cache : Private { - my ( $self, $c ) = @_; - - # get the fileid and make sure it is just a hex number - my $fileid = $c->req->param('upload_fileid') || ''; - $fileid =~ s{[^0-9a-f]}{}gi; - return unless $fileid; - - my $file = file( $c->config->{UPLOAD_DIR}, "$fileid.jpeg" ); - return unless -e $file; - - $c->stash->{upload_fileid} = $fileid; - return 1; -} - =head2 check_for_errors Examine the user and the report for errors. If found put them on stash and diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index 7542fbe96..5b0dad170 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -23,7 +23,7 @@ sub report_update : Path : Args(0) { $c->forward( '/report/load_problem_or_display_error', [ $c->req->param('id') ] ); $c->forward('process_update'); $c->forward('process_user'); - $c->forward('/report/new/process_photo'); + $c->forward('/photo/process_photo'); $c->forward('check_for_errors') or $c->go( '/report/display', [ $c->req->param('id') ] ); diff --git a/perllib/FixMyStreet/App/Controller/Root.pm b/perllib/FixMyStreet/App/Controller/Root.pm index 9cdf0b523..7f7d7f5fd 100644 --- a/perllib/FixMyStreet/App/Controller/Root.pm +++ b/perllib/FixMyStreet/App/Controller/Root.pm @@ -68,7 +68,7 @@ Forward to the standard 404 error page sub default : Path { my ( $self, $c ) = @_; - $c->detach('/page_error_404_not_found'); + $c->detach('/page_error_404_not_found', []); } =head2 page_error_404_not_found, page_error_410_gone diff --git a/perllib/FixMyStreet/DB/Result/Problem.pm b/perllib/FixMyStreet/DB/Result/Problem.pm index b8aea8697..9cbaef6c2 100644 --- a/perllib/FixMyStreet/DB/Result/Problem.pm +++ b/perllib/FixMyStreet/DB/Result/Problem.pm @@ -578,7 +578,7 @@ sub body { # Note: this only makes sense when called on a problem that has been sent! sub can_display_external_id { my $self = shift; - if ($self->external_id && $self->send_method_used eq 'barnet') { + if ($self->external_id && $self->send_method_used && $self->send_method_used eq 'barnet') { return 1; } return 0; diff --git a/perllib/FixMyStreet/SendReport/Barnet.pm b/perllib/FixMyStreet/SendReport/Barnet.pm index 3eb8d2048..9a54dd91d 100644 --- a/perllib/FixMyStreet/SendReport/Barnet.pm +++ b/perllib/FixMyStreet/SendReport/Barnet.pm @@ -68,17 +68,18 @@ sub send { my $interface = BarnetInterfaces::service::ZLBB_SERVICE_ORDER->new(); - my ($nearest_postcode, $nearest_street); + my ($nearest_postcode, $nearest_street) = ('', ''); for ($h{closest_address}) { $nearest_postcode = sprintf("%-10s", $1) if /Nearest postcode [^:]+: ((\w{1,4}\s?\w+|\w+))/; # use partial postcode or comma as delimiter, strip leading number (possible letter 221B) off too # "99 Foo Street, London N11 1XX" becomes Foo Street # "99 Foo Street N11 1XX" becomes Foo Street - $nearest_street = sprintf("%-30s", $1) if /Nearest road [^:]+: (?:\d+\w? )?(.*?)(\b[A-Z]+\d|,|$)/m; + $nearest_street = $1 if /Nearest road [^:]+: (?:\d+\w? )?(.*?)(\b[A-Z]+\d|,|$)/m; } - my $postcode = $h{postcode} || $nearest_postcode; # use given postcode if available + my $postcode = mySociety::PostcodeUtil::is_valid_postcode($h{query}) + ? $h{query} : $nearest_postcode; # use given postcode if available - # note: endpoint can be of form 'https://username:password@:url' + # note: endpoint can be of form 'https://username:password@url' my $council_config = FixMyStreet::App->model("DB::Open311conf")->search( { area_id => COUNCIL_ID_BARNET} )->first; if ($council_config and $council_config->endpoint) { $interface->set_proxy($council_config->endpoint); @@ -116,7 +117,7 @@ sub send { COUNTY => "", # char30 CITY => "", # char30 POSTALCODE => $postcode, # char10 - STREET => $nearest_street, # char30 + STREET => truncate_string_with_entities(ent(encode_utf8($nearest_street)), 30), # char30 STREETNUMBER => "", # char5 GEOCODE => $geo_code, # char32 }, diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index 5fc6e6a5d..74355c2d4 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -6,10 +6,14 @@ use utf8; use FixMyStreet::TestMech; use Web::Scraper; +use Path::Class; my $mech = FixMyStreet::TestMech->new; $mech->get_ok('/report/new'); +my $sample_file = file(__FILE__)->parent->file("sample.jpg")->stringify; +ok -e $sample_file, "sample file $sample_file exists"; + subtest "test that bare requests to /report/new get redirected" => sub { $mech->get_ok('/report/new'); @@ -296,6 +300,69 @@ foreach my $test ( }, errors => [ 'Please enter a subject', 'Please enter some details', ], }, + { + msg => 'non-photo upload gives error', + pc => 'SW1A 1AA', + fields => { + title => 'Title', + detail => 'Detail', + photo => [ [ undef, 'bad.txt', Content => 'This is not a JPEG', Content_Type => 'text/plain' ], 1 ], + name => 'Bob Jones', + may_show_name => '1', + email => 'bob@example.com', + phone => '', + category => 'Street lighting', + password_sign_in => '', + password_register => '', + remember_me => undef, + }, + changes => { + photo => '', + }, + errors => [ "Please upload a JPEG image only" ], + }, + { + msg => 'bad photo upload gives error', + pc => 'SW1A 1AA', + fields => { + title => 'Title', + detail => 'Detail', + photo => [ [ undef, 'fake.jpeg', Content => 'This is not a JPEG', Content_Type => 'image/jpeg' ], 1 ], + name => 'Bob Jones', + may_show_name => '1', + email => 'bob@example.com', + phone => '', + category => 'Street lighting', + password_sign_in => '', + password_register => '', + remember_me => undef, + }, + changes => { + photo => '', + }, + errors => [ "That image doesn't appear to have uploaded correctly (Please upload a JPEG image only ), please try again." ], + }, + { + msg => 'photo with octet-stream gets through okay', + pc => 'SW1A 1AA', + fields => { + title => '', + detail => 'Detail', + photo => [ [ $sample_file, undef, Content_Type => 'application/octet-stream' ], 1 ], + name => 'Bob Jones', + may_show_name => '1', + email => 'bob@example.com', + phone => '', + category => 'Street lighting', + password_sign_in => '', + password_register => '', + remember_me => undef, + }, + changes => { + photo => '', + }, + errors => [ "Please enter a subject" ], + }, ) { subtest "check form errors where $test->{msg}" => sub { diff --git a/templates/web/default/faq/faq-en-gb.html b/templates/web/default/faq/faq-en-gb.html index cc9ba979a..2c1c43799 100755 --- a/templates/web/default/faq/faq-en-gb.html +++ b/templates/web/default/faq/faq-en-gb.html @@ -61,29 +61,27 @@ by a registered charity, though, so if you want to make a contribution, <a href="https://secure.mysociety.org/donate/">please do</a>.</dd> <dt>Can I use FixMyStreet on my mobile?</dt> - <dd><ul> - <li><em>iPhone:</em> There are two apps for FixMyStreet, one written by us - in 2008 and another much more recently by a volunteer, Martin Stephenson. - Both are available for download on the App Store: + <dd> + <p>The FixMyStreet website should work on your mobile phone, adapting to + the size of your screen automatically. We plan to release updated native + apps in the near future. + <ul> + <li><em>iPhone:</em> Our basic app from 2008 is available for download + on the App Store: <a href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet</a>, - <a href="http://itunes.apple.com/gb/app/streetreport/id371891859">StreetReport</a>. <li><em>Android:</em> A volunteer, Anna Powell-Smith, has written an app available from the <a href="https://market.android.com/details?id=com.android.fixmystreet">Android Market</a>. <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the <a href="http://store.ovi.com/content/107557">Ovi Store</a>. </ul> - <p>We also hope to make the website itself much more mobile friendly in the future.</p> </dd> <dt>Why do you only cover the countries of Great Britain?</dt> - <dd>We would love to cover Northern Ireland, but as we were funded for - FixMyStreet by the Department for Constitutional Affairs (now the Ministry - of Justice), we were covered for Ordnance Survey data (but not OSNI data) - by the Pan-Governmental Agreement. The cost for these maps would be - prohibitively expensive for the small charity that we are – if you know of - any way we could get access to the Ordnance Survey for Northern Ireland's - maps so that we can add them to the site, that'd be great.</dd> + <dd>We would love to cover Northern Ireland, but we have only been able + to locate boundaries for Great Britain (from Ordnance Survey). If you + know of a source for Northern Ireland council boundaries + so that we can add them to the site, that'd be great.</dd> </dl> <h2>Practical Questions</h2> @@ -142,7 +140,8 @@ send you emails in relation to your problem.</dd> <h2>Organisation Questions</h2> <dl> <dt>Who built FixMyStreet?</dt> - <dd>This site was built by <a href="http://www.mysociety.org/">mySociety</a>, in conjunction with the <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>. + <dd>This site was built by <a href="http://www.mysociety.org/">mySociety</a>, + in conjunction with the <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>. mySociety is the project of a registered charity which has grown out of the community of volunteers who built sites like <a href="http://www.theyworkforyou.com/">TheyWorkForYou.com</a>. mySociety’s primary mission is to build Internet projects which give people simple, tangible @@ -150,15 +149,11 @@ benefits in the civic and community aspects of their lives. Our first project was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your elected representatives, for free. The charity is called UK Citizens Online Democracy and is charity number 1076346. mySociety can be contacted by email at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>, -or by post at:<br> -mySociety<br> -483 Green Lanes<br> -London<br> -N13 4BS<br> -UK</dd> +or by post at mySociety, 483 Green Lanes, London, N13 4BS, UK.</dd> <dt><img src="/i/moj.png" align="right" alt="Ministry of Justice" hspace="10">Who pays for it?</dt> - <dd>FixMyStreet was paid for via the Department for -Constitutional Affairs Innovations Fund.</dd> + <dd>FixMyStreet was originally paid for via the Department for + Constitutional Affairs Innovations Fund. It is now funded by a variety of means, from commercial + work to <a href="http://www.mysociety.org/donate/">donations</a>.</dd> <dt><a name="nfi"></a>Wasn’t this site called Neighbourhood Fix-It?</dt> <dd>Yes, we changed the name mid June 2007. We decided Neighbourhood Fix-It was a bit of a mouthful, hard to spell, and hard to publicise (does the URL have a dash in it or not?). The domain FixMyStreet became available, and everyone liked the name.</dd> diff --git a/templates/web/fixmystreet/faq/faq-en-gb.html b/templates/web/fixmystreet/faq/faq-en-gb.html index fe899d3a2..1e676d9f2 100755 --- a/templates/web/fixmystreet/faq/faq-en-gb.html +++ b/templates/web/fixmystreet/faq/faq-en-gb.html @@ -72,29 +72,27 @@ by a registered charity, though, so if you want to make a contribution, <a href="https://secure.mysociety.org/donate/">please do</a>.</dd> <dt>Can I use FixMyStreet on my mobile?</dt> - <dd><ul> - <li><em>iPhone:</em> There are two apps for FixMyStreet, one written by us - in 2008 and another much more recently by a volunteer, Martin Stephenson. - Both are available for download on the App Store: + <dd> + <p>The FixMyStreet website should work on your mobile phone, adapting to + the size of your screen automatically. We plan to release updated native + apps in the near future. + <ul> + <li><em>iPhone:</em> Our basic app from 2008 is available for download + on the App Store: <a href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">FixMyStreet</a>, - <a href="http://itunes.apple.com/gb/app/streetreport/id371891859">StreetReport</a>. <li><em>Android:</em> A volunteer, Anna Powell-Smith, has written an app available from the <a href="https://market.android.com/details?id=com.android.fixmystreet">Android Market</a>. <li><em>Nokia:</em> A volunteer, Thomas Forth, has written an app available from the <a href="http://store.ovi.com/content/107557">Ovi Store</a>. </ul> - <p>We also hope to make the website itself much more mobile friendly in the future.</p> </dd> <dt>Why do you only cover the countries of Great Britain?</dt> - <dd>We would love to cover Northern Ireland, but as we were funded for - FixMyStreet by the Department for Constitutional Affairs (now the Ministry - of Justice), we were covered for Ordnance Survey data (but not OSNI data) - by the Pan-Governmental Agreement. The cost for these maps would be - prohibitively expensive for the small charity that we are – if you know of - any way we could get access to the Ordnance Survey for Northern Ireland's - maps so that we can add them to the site, that'd be great.</dd> + <dd>We would love to cover Northern Ireland, but we have only been able + to locate boundaries for Great Britain (from Ordnance Survey). If you + know of a source for Northern Ireland council boundaries + so that we can add them to the site, that'd be great.</dd> </dl> <h2><a name="practical"></a>Practical Questions</h2> @@ -136,7 +134,8 @@ by a user of the site.</dd> <h2><a name="organisation"></a>Organisation Questions</h2> <dl> <dt>Who built FixMyStreet?</dt> - <dd>This site was built by <a href="http://www.mysociety.org/">mySociety</a>, in conjunction with the <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>. + <dd>This site was built by <a href="http://www.mysociety.org/">mySociety</a>, + in conjunction with the <a href="http://www.youngfoundation.org.uk/">Young Foundation</a>. mySociety is the project of a registered charity which has grown out of the community of volunteers who built sites like <a href="http://www.theyworkforyou.com/">TheyWorkForYou.com</a>. mySociety’s primary mission is to build Internet projects which give people simple, tangible @@ -144,15 +143,11 @@ benefits in the civic and community aspects of their lives. Our first project was <a href="http://www.writetothem.com/">WriteToThem</a>, where you can write to any of your elected representatives, for free. The charity is called UK Citizens Online Democracy and is charity number 1076346. mySociety can be contacted by email at <a href="mailto:hello@mysociety.org">hello@mysociety.org</a>, -or by post at:<br> -mySociety<br> -483 Green Lanes<br> -London<br> -N13 4BS<br> -UK</dd> +or by post at mySociety, 483 Green Lanes, London, N13 4BS, UK.</dd> <dt><img src="/i/moj.png" align="right" alt="Ministry of Justice" hspace="10">Who pays for it?</dt> - <dd>FixMyStreet was paid for via the Department for -Constitutional Affairs Innovations Fund.</dd> + <dd>FixMyStreet was originally paid for via the Department for + Constitutional Affairs Innovations Fund. It is now funded by a variety of means, from commercial + work to <a href="http://www.mysociety.org/donate/">donations</a>.</dd> <dt><a name="nfi"></a>Wasn’t this site called Neighbourhood Fix-It?</dt> <dd>Yes, we changed the name mid June 2007. We decided Neighbourhood Fix-It was a bit of a mouthful, hard to spell, and hard to publicise (does the URL have a dash in it or not?). The domain FixMyStreet became available, and everyone liked the name.</dd> diff --git a/templates/web/fixmystreet/footer.html b/templates/web/fixmystreet/footer.html index ada4b5d7e..903d8c73d 100644 --- a/templates/web/fixmystreet/footer.html +++ b/templates/web/fixmystreet/footer.html @@ -8,7 +8,6 @@ <li><a class="m-app-iphone" href="http://itunes.apple.com/gb/app/fixmystreet/id297456545">iPhone</a></li> <li><a class="m-app-droid" href="https://market.android.com/details?id=com.android.fixmystreet">Android</a></li> <li><a class="m-app-nokia" href="http://store.ovi.com/content/107557">Nokia</a></li> - <li><a class="m-app-iphone-streetreport" href="http://itunes.apple.com/gb/app/streetreport/id371891859">iPhone Street Report</a></li> </ul> </div> diff --git a/web/cobrands/fixmystreet/_layout.scss b/web/cobrands/fixmystreet/_layout.scss index 4a5502351..3b65f941c 100644 --- a/web/cobrands/fixmystreet/_layout.scss +++ b/web/cobrands/fixmystreet/_layout.scss @@ -404,10 +404,6 @@ body.twothirdswidthpage { &.m-app-iphone { background-position: -12px -3610px; } - &.m-app-iphone-streetreport { - background-position: -12px -3678px; - height:50px; - } &.m-app-droid { background-position: -12px -3756px; } @@ -427,10 +423,6 @@ body.twothirdswidthpage { } .ie6 #footer-mobileapps ul li a { background:url(/cobrands/fixmystreet/images/ie_mobileapps.gif) -1px -1px no-repeat; - &.m-app-iphone-streetreport { - background-position: -1px -69px; - height:50px; - } &.m-app-droid { background-position: -1px -148px; } diff --git a/web/i/pin-green.png b/web/i/pin-green.png Binary files differindex 8b64d5160..47a0a6cc1 100644 --- a/web/i/pin-green.png +++ b/web/i/pin-green.png diff --git a/web/i/pin-red.png b/web/i/pin-red.png Binary files differindex 9b754e42e..298f4d3f6 100644 --- a/web/i/pin-red.png +++ b/web/i/pin-red.png diff --git a/web/i/pin-yellow-big.png b/web/i/pin-yellow-big.png Binary files differindex 59ed29dbd..d1642d644 100644 --- a/web/i/pin-yellow-big.png +++ b/web/i/pin-yellow-big.png diff --git a/web/i/pin-yellow.png b/web/i/pin-yellow.png Binary files differindex f9359b0b3..196cb0f5f 100644 --- a/web/i/pin-yellow.png +++ b/web/i/pin-yellow.png |