Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Content and bug fixes #106

Open
wants to merge 61 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
22a4bf4
update map center to sav, fix bounding coordinates
carlvlewis Jul 31, 2019
f8026e8
Localized for Savannah w/ Heroku deploy (#1)
roberth05 Aug 2, 2019
3dd0ec2
Terms of Service update
roberth05 Aug 2, 2019
cde11bd
Better reflection of the OpenSavannah project
roberth05 Aug 2, 2019
24da5b5
Copyright mark
roberth05 Aug 2, 2019
6a9cc95
Create CNAME
carlvlewis Aug 2, 2019
e5e1405
fix offset initial viewport
carlvlewis Aug 2, 2019
3f367c8
Syntax change
roberth05 Aug 3, 2019
e95e573
Savannah drain data
roberth05 Aug 3, 2019
f65b19c
Fixes address lookup
roberth05 Aug 4, 2019
f5f5361
Made mail server variables generic
roberth05 Aug 5, 2019
4f8cfd2
Revert "Made mail server variables generic"
roberth05 Aug 5, 2019
e1ce3c6
Generic mail settings
roberth05 Aug 5, 2019
2700563
Add files via upload
carlvlewis Aug 5, 2019
bae384f
Delete adopt-a-drain-horizontal.png
carlvlewis Aug 5, 2019
e09e9f3
Add files via upload
carlvlewis Aug 5, 2019
8902498
Update main.js.erb
carlvlewis Aug 9, 2019
20ca354
Update main.js.erb
carlvlewis Aug 9, 2019
e3b934e
Update main.js.erb
carlvlewis Aug 9, 2019
2c08a23
Update main.js.erb
carlvlewis Aug 9, 2019
f424d7a
Update main.js.erb
carlvlewis Aug 9, 2019
40bb499
Update main.js.erb
carlvlewis Aug 9, 2019
3946e0a
Updating email addresses
roberth05 Aug 16, 2019
7c8670b
Merge branch 'develop' of https://github.com/opensavannah/adopt-a-dra…
roberth05 Aug 16, 2019
e4413ed
ActionMailer default URL
roberth05 Aug 16, 2019
0d07e65
Guidelines and TOS updates for Savannah
roberth05 Aug 18, 2019
d6a46e0
Merge pull request #6 from opensavannah/terms-of-service
carlvlewis Aug 18, 2019
12a18f4
Create tos.md
carlvlewis Aug 21, 2019
7608172
Guidelines update for 311 info
roberth05 Aug 21, 2019
4d5621a
Merge branch 'develop' of https://github.com/opensavannah/adopt-a-dra…
roberth05 Aug 21, 2019
43f9383
Removed City of Savannah logo
roberth05 Aug 21, 2019
376549f
Update README.md
carlvlewis Aug 23, 2019
50e2032
Delete durham_drains.csv
carlvlewis Aug 23, 2019
3f38d80
Update _background.html.haml
carlvlewis Aug 23, 2019
12af19a
Update _background.html.haml
carlvlewis Aug 23, 2019
f2e7764
Update index.html.haml
carlvlewis Aug 23, 2019
f5f5360
Create CODE_OF_CONDUCT.md
carlvlewis Aug 23, 2019
47173e5
Merge pull request #18 from opensavannah/add-code-of-conduct-1
carlvlewis Aug 23, 2019
f97a2c8
Update CNAME
carlvlewis Aug 25, 2019
d818c35
Update main.js.erb
carlvlewis Aug 28, 2019
cddb0a3
Update application.html.haml
carlvlewis Aug 29, 2019
7e0dcb4
Update application.html.haml
carlvlewis Aug 29, 2019
37088a8
Update CNAME
carlvlewis Aug 29, 2019
4f335ee
Update application.css
carlvlewis Aug 29, 2019
ff4f6d2
Update application.html.haml
carlvlewis Aug 29, 2019
f5ace0c
patches
carlvlewis Aug 29, 2019
f6cbd7a
Update application.html.haml
carlvlewis Aug 29, 2019
977d29a
change to drainsavannah.org
carlvlewis Sep 6, 2019
f898bff
Update index.html.haml
carlvlewis Sep 6, 2019
c532bd2
Update index.html.haml
carlvlewis Sep 6, 2019
2cd3564
Update email message (#25)
brandonmichaelhunter Sep 8, 2019
807334e
update opensavlogo
LewisRa Sep 9, 2019
895ee91
update logo take 2
LewisRa Sep 9, 2019
9447360
Revert "Update email message (#25)"
LewisRa Sep 9, 2019
ff4efe5
Revert "Revert Update email message (#25)"
roberth05 Sep 10, 2019
ef95eb8
Update application.rb
carlvlewis Sep 11, 2019
3d0d1c1
Update application.rb
roberth05 Sep 11, 2019
d0f78e0
Track cleaning (#24)
roberth05 Sep 15, 2019
b7b26de
Removing sidebar-full class to hide sidebar after search on mobile. …
roberth05 Oct 1, 2019
69c108b
Resolve issue #12
Oct 12, 2019
ca6421d
Resolve issue #26
Oct 12, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
drainsavannah.org
94 changes: 94 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Citizen Code of Conduct

## 1. Purpose

A primary goal of Adopt A Drain Savannah.Org is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).

This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.

We invite all those who participate in Adopt A Drain Savannah.Org to help us create safe and positive experiences for everyone.

## 2. Open [Source/Culture/Tech] Citizenship

A supplemental goal of this Code of Conduct is to increase open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.

Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.

If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.

## 3. Expected Behavior

The following behaviors are expected and requested of all community members:

* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
* Exercise consideration and respect in your speech and actions.
* Attempt collaboration before conflict.
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.

## 4. Unacceptable Behavior

The following behaviors are considered harassment and are unacceptable within our community:

* Violence, threats of violence or violent language directed against another person.
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
* Posting or displaying sexually explicit or violent material.
* Posting or threatening to post other people's personally identifying information ("doxing").
* Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
* Inappropriate photography or recording.
* Inappropriate physical contact. You should have someone's consent before touching them.
* Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
* Deliberate intimidation, stalking or following (online or in person).
* Advocating for, or encouraging, any of the above behavior.
* Sustained disruption of community events, including talks and presentations.

## 5. Weapons Policy

No weapons will be allowed at Adopt A Drain Savannah.Org events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives (including fireworks), and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter.

## 6. Consequences of Unacceptable Behavior

Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.

Anyone asked to stop unacceptable behavior is expected to comply immediately.

If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).

## 7. Reporting Guidelines

If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. yall@opensavannah.org.



Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.

## 8. Addressing Grievances

If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify City of Savannah with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.



## 9. Scope

We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business.

This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.

## 10. Contact info

yall@opensavannah.org

## 11. License and attribution

The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).

Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).

_Revision 2.3. Posted 6 March 2017._

_Revision 2.2. Posted 4 February 2016._

_Revision 2.1. Posted 23 June 2014._

_Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._
2 changes: 1 addition & 1 deletion Customization.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,5 @@ adopt-a-drain/app/mailers/application_mailer.rb

If you have any complaints, please email or contact us:

Laura Smith: adoptadraindurham@gmail.com
OpenSavanah Brigade: Info@adopt-a-drain-savannah.org

7 changes: 5 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,8 @@ RUN mkdir /myapp
WORKDIR /myapp
EXPOSE 3000
COPY . /myapp
RUN bundle install
CMD ["bundle", "exec", "puma", "-p", "3000"]
ARG BUNDLE_INSTALL_ARGS
ARG RAILS_ENV=development
RUN bundle install ${BUNDLE_INSTALL_ARGS}
RUN if [ "$RAILS_ENV" = "production" ]; then SECRET_TOKEN=$(rake secret) bundle exec rake assets:precompile; fi
CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"]
31 changes: 20 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,14 @@

Claim responsibility for cleaning out a storm drain after it rains.

[![Travis CI](https://travis-ci.org/specious/adopt-a-drain.svg?branch=production)](https://travis-ci.org/specious/adopt-a-drain)

## Screenshot
![Adopt-a-Drain](/adopt.png "Adopt-a-Drain")

## Production

https://adoptadrain.codefordurham.com/
https://adopt-a-drain-savannah.org

## Installation
This application requires [Postgres](http://www.postgresql.org/) to be installed

git clone git://github.com/codefordurham/adopt-a-drain.git
git clone git://github.com/opensavannah/adopt-a-drain.git
cd adopt-a-drain
bundle install

Expand Down Expand Up @@ -84,10 +79,24 @@ A successful deployment to Heroku requires a few setup steps:

`heroku run bundle exec rake db:seed`

If you choose, you can use the pre-defined Docker build and deployment for Heroku.
You will need set your Heroku stack to container:

heroku stack:set container

git push heroku master


Keep in mind that the Heroku free Postgres plan only allows up to 10,000 rows,
so if your city has more than 10,000 fire drains (or other thing to be
adopted), you will need to upgrade to the $9/month plan.

### Google Maps API Service
You will need to apply for a Google Maps Javascript API key in order to remove the "Development Only" watermark on maps.
After you have obtained the key, you will need to set it as an environment variable.

heroku config:set GOOGLE_MAPS_KEY=your_maps_api_key

### Google Analytics
If you have a Google Analytics account you want to use to track visits to your
deployment of this app, just set your ID and your domain name as environment
Expand Down Expand Up @@ -119,8 +128,8 @@ Here are some ways *you* can contribute:
* by reviewing patches
* [financially][]

[locales]: https://github.com/sfbrigade/adopt-a-drain/tree/master/config/locales
[issues]: https://github.com/sfbrigade/adopt-a-drain/issues
[locales]: https://github.com/opensavannah/adopt-a-drain/tree/master/config/locales
[issues]: https://github.com/opensavannah/adopt-a-drain/issues
[financially]: https://secure.sfbrigade.org/page/contribute

## Submitting an Issue
Expand Down Expand Up @@ -165,8 +174,8 @@ timely fashion. If critical issues for a particular implementation exist at the
time of a major release, support for that Ruby version may be dropped.

## Copyright
Copyright (c) 2017 Code for Durham. See [LICENSE.md](https://github.com/codefordurham/adopt-a-drain/blob/master/LICENSE.md) for details.
Copyright (c) 2019 Code for Savannah. See [LICENSE.md](https://github.com/opensavannah/adopt-a-drain/blob/master/LICENSE.md) for details.

[license]: https://github.com/codefordurham/adopt-a-drain/blob/master/LICENSE.md
[license]: https://github.com/opensavannah/adopt-a-drain/blob/master/LICENSE.md


Binary file added app/.DS_Store
Binary file not shown.
Binary file added app/assets/images/logos/CityOfSavannah.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/assets/images/logos/adopt-a-drain-horizontal.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/assets/images/logos/opensavlogo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 8 additions & 6 deletions app/assets/javascripts/main.js.erb
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ $(function() {
keyboardShortcuts: false,
mapTypeControl: false,
mapTypeId: google.maps.MapTypeId.ROADMAP,
maxZoom: 21,
minZoom: 15,
maxZoom: 20,
minZoom: 10,
panControl: false,
rotateControl: false,
scaleControl: false,
streetViewControl: true,
zoom: 17,
zoomControl: true,
zoomControl: false,
styles: [
{"featureType":"transit", "stylers":[{visibility: "off"}]},
{
Expand Down Expand Up @@ -58,7 +58,7 @@ $(function() {
// });

// lat, lon
initialLocation = new google.maps.LatLng(35.996,-78.902);
initialLocation = new google.maps.LatLng(32.076176, -81.088371);
map.setCenter(initialLocation);
map.setZoom(18);
var iconBase = '<%= image_path 'markers/' %>';
Expand Down Expand Up @@ -98,8 +98,8 @@ $(function() {

var icons = {
available: {
name: 'Drains to Creek',
title: 'Creek',
name: 'Drains to Ogeechee/Savannah',
title: 'River',
icon: '<%= image_path 'markers/tosewer.png' %>'
},
adopted: {
Expand Down Expand Up @@ -367,6 +367,8 @@ $(function() {
$('#address').focus();
} else {
$('#address').parent().removeClass(errorClass);
//Close the sidebar on mobile devices to reveal the map.
$('.sidebar').removeClass('sidebar-full');
$('#address').next(".help-block").html('');
zoomTo(data[0], data[1]);
}
Expand Down
6 changes: 3 additions & 3 deletions app/assets/stylesheets/application.css
Original file line number Diff line number Diff line change
Expand Up @@ -131,12 +131,12 @@ h5.my-things {
}

.btn-primary {
color: #fff;
color: #000;
border-color: #2e6da4;
}

.btn-primary:hover {
color: #fff;
color: #000;
background-color: #005596;
border-color: #204d74;
}
Expand Down Expand Up @@ -228,4 +228,4 @@ a.guidelines {
#legend {
right: auto;
}
}
}
23 changes: 23 additions & 0 deletions app/controllers/cleanings_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class CleaningsController < ApplicationController
respond_to :html, :json
def create
@cleaning = Cleaning.new(cleaning_params)
if @cleaning.save
respond_to do |format|
format.html { render :created }
format.json { render(json: @cleaning) }
end
else
respond_to do |format|
format.json { render(json: {errors: @thing.errors}, status: 500) }
end
end
end

private

def cleaning_params
params.require(:cleanings).permit(:date_cleaned, :diverted, :user_id, :thing_id)
end

end
2 changes: 1 addition & 1 deletion app/mailers/application_mailer.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class ApplicationMailer < ActionMailer::Base
default from: 'adoptadraindurham@gmail.com'
default from: 'Info@adopt-a-drain-savannah.org'
layout 'mailer'
end
2 changes: 2 additions & 0 deletions app/models/address.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
class Address
include Geokit::Geocoders

Geokit::Geocoders::GoogleGeocoder.api_key = ENV['GOOGLE_MAPS_KEY']

def self.geocode(address)
MultiGeocoder.geocode(address).ll.split(',').collect(&:to_f)
end
Expand Down
5 changes: 5 additions & 0 deletions app/models/cleaning.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class Cleaning < ActiveRecord::Base
belongs_to :user
belongs_to :thing
validates :date_cleaned, presence: true
end
1 change: 1 addition & 0 deletions app/models/thing.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ class Thing < ActiveRecord::Base
:full_address, :state, :street_address, :street_name,
:street_number, :zip
has_many :reminders
has_many :cleanings
validates :city_id, uniqueness: true, allow_nil: true
validates :lat, presence: true
validates :lng, presence: true
Expand Down
1 change: 1 addition & 0 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ class User < ActiveRecord::Base
has_many :reminders_from, class_name: 'Reminder', foreign_key: 'from_user_id'
has_many :reminders_to, class_name: 'Reminder', foreign_key: 'to_user_id'
has_many :things
has_many :cleanings
validates :first_name, presence: true
validates_formatting_of :email, using: :email
validates_formatting_of :sms_number, using: :us_phone, allow_blank: true
Expand Down
Binary file added app/views/.DS_Store
Binary file not shown.
17 changes: 17 additions & 0 deletions app/views/cleanings/_cleaning_form.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
= form_for :cleanings, :url => {action: 'create'}, :html => {:id => "cleaning-form", :class => "form-vertical"} do |f|
:javascript
$(document).ready(function() {
$('[data-toggle="tooltip"]').tooltip();
});
.form-group
%label.control-label{:for => "date_cleaned", :id => "date_cleaned_label"}
= t("labels.date_cleaned")
= f.date_field "date_cleaned", :class => "form-control", :required => true
%label.control-label{:for => "diverted", :id => "diverted_label"}
= t("labels.diverted")
%i.fa.fa-question-circle{:data_toggle=>"tooltip", :title=>"Please enter the type and weight of the materials you pulled out of the drain. Ex: 2lbs of hard plastic & 3lbs of pine straw. This information helps tremendously with research."}
= f.text_area "diverted", :class => "form-control"
= f.hidden_field "user_id", :value => params[:user]
= f.hidden_field "thing_id", :value => params[:thing]
.form-actions
= f.submit t("buttons.submit_cleaning"), :class => "btn btn-primary btn-block"
6 changes: 6 additions & 0 deletions app/views/cleanings/created.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
%h1
Cleaning Reported
%p
Thank you for cleaning your drain! Keeping our waterways clean is critical to our neighborhoods.
%button.btn.btn-default{:type => "button", :"data-dismiss" => "modal", :onclick=>"window.close(); return false"}
Close
1 change: 1 addition & 0 deletions app/views/cleanings/new.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
= render :partial => "cleaning_form"
3 changes: 2 additions & 1 deletion app/views/layouts/application.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
= csrf_meta_tag
%meta{:name => "viewport", :content => "width=device-width, initial-scale=1"}
%meta{:name => "twitter:card", :content => "summary"}
%meta{:name => "twitter:site", :content => "@SFWater"}
%meta{:name => "twitter:site", :content => "@opensavannah"}
%meta{:name => "twitter:title", :content => t("titles.main", :thing => t("defaults.thing").titleize)}
%meta{:name => "twitter:description", :content => t("site.description")}
%meta{:name => "twitter:image", :content => image_url('logos/adopt-a-drain-horizontal.png')}
Expand Down Expand Up @@ -38,3 +38,4 @@
= stylesheet_link_tag "application"
%body
= yield

18 changes: 6 additions & 12 deletions app/views/main/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
- elsif @reset_password_token.present?
= render :partial => 'passwords/edit'
- else
%iframe{ :width => "100%", :src => "https://www.youtube.com/embed/Z1Vjrx3IAH0", :frameborder => "0", :allowfullscreen => "allowfullscreen" }
%iframe{ :width => "100%", :src => "http://youtube.com/watch?v=CRm5xctANC0", :frameborder => "0", :allowfullscreen => "allowfullscreen" }
= render :partial => "sidebar/search"
%a{:href => "https://docs.google.com/forms/d/e/1FAIpQLSc5UFpt8Ukle9i2YvJvBKFCrgCtlmQsZuTKbhe6Y3Ito2arGQ/viewform", :class => "btn btn-primary"}
%a{:href => "http://adoptadrainsav.paperform.co", :class => "btn btn-primary"}
= "Please Give Us Feedback!"
-# Corresponds to guideline div above
%div.hidden.visible-xs-block
Expand All @@ -33,15 +33,9 @@
= t("defaults.tagline")
#logos
.row
.col-xs-4
%a{:href => "http://dconc.gov/"}
= image_tag "logos/DurhamCountyLogo.png", :alt => t("sponsors.built"), :title => t("sponsors.built"), :class => "cfsf"
.col-xs-4
%a{:href => "https://durhamnc.gov/"}
= image_tag "logos/DurhamCityLogo.png", :alt => t("sponsors.built"), :title => t("sponsors.built"), :class => "cfsf"
.col-xs-4
%a{:href => "http://codefordurham.com/"}
= image_tag "logos/CodeforDurhamlogo.png", :alt => t("sponsors.built"), :title => t("sponsors.built"), :class => "cfsf"
.col-xs-6
%a{:href => "http://opensavannah.org/"}
= image_tag "logos/opensavlogo.png", :alt => t("sponsors.built"), :title => t("sponsors.built"), :class => "cfa"
.col-xs-4
%a{:href => "http://codeforamerica.org/"}
= image_tag "logos/cfa.jpg", :alt => t("sponsors.cfa"), :title => t("sponsors.cfa"), :class => "cfa"
Expand All @@ -54,7 +48,7 @@
= t("links.learn_more_background")
.col-md-6
%p.pull-right
%a{:href => URI.escape("mailto:adoptadraindurham@gmail.com?subject=#{t("titles.main", :thing => t("defaults.thing").titleize)} - #{t("links.feedback").titleize}")}
%a{:href => URI.escape("mailto:Info@adopt-a-drain-savannah.org?subject=#{t("titles.main", :thing => t("defaults.thing").titleize)} - #{t("links.feedback").titleize}")}
= t("links.feedback")
.col-md-9.map-container
#map
Expand Down
Loading