infractores 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.env.sample +8 -0
- data/.gitignore +22 -0
- data/.travis.yml +14 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +67 -0
- data/Gemfile.lock +417 -0
- data/Guardfile +8 -0
- data/LICENSE +21 -0
- data/Procfile +2 -0
- data/README.md +48 -0
- data/Rakefile +6 -0
- data/app/assets/images/.keep +0 -0
- data/app/assets/images/gallery-buttons.png +0 -0
- data/app/assets/images/logo-infractores.svg +10 -0
- data/app/assets/javascripts/application.js +18 -0
- data/app/assets/javascripts/bootstrap.js +4 -0
- data/app/assets/javascripts/index.js +82 -0
- data/app/assets/javascripts/twitter.js +18 -0
- data/app/assets/stylesheets/1-utilities/_variables.scss +12 -0
- data/app/assets/stylesheets/2-quarks/_typography.scss +32 -0
- data/app/assets/stylesheets/3-atoms/_buttons.scss +3 -0
- data/app/assets/stylesheets/4-molecules/_footer.scss +32 -0
- data/app/assets/stylesheets/4-molecules/_infraction-gallery.scss +101 -0
- data/app/assets/stylesheets/4-molecules/_navbar.scss +71 -0
- data/app/assets/stylesheets/5-pages/index.scss +165 -0
- data/app/assets/stylesheets/5-pages/show.scss +29 -0
- data/app/assets/stylesheets/application.css +18 -0
- data/app/assets/stylesheets/bootstrap_and_overrides.css +7 -0
- data/app/controllers/application_controller.rb +5 -0
- data/app/controllers/concerns/.keep +0 -0
- data/app/controllers/infractions_controller.rb +23 -0
- data/app/controllers/users_controller.rb +7 -0
- data/app/helpers/application_helper.rb +19 -0
- data/app/helpers/infractions_helper.rb +6 -0
- data/app/mailers/.keep +0 -0
- data/app/models/.keep +0 -0
- data/app/models/concerns/.keep +0 -0
- data/app/models/evidence.rb +23 -0
- data/app/models/infraction.rb +43 -0
- data/app/models/tweet.rb +54 -0
- data/app/models/user.rb +34 -0
- data/app/services/twitter_service.rb +51 -0
- data/app/uploaders/evidence_uploader.rb +62 -0
- data/app/views/infractions/_map.html.erb +17 -0
- data/app/views/infractions/_reported_by.html.erb +4 -0
- data/app/views/infractions/_summary.html.erb +23 -0
- data/app/views/infractions/index.html.erb +18 -0
- data/app/views/infractions/show.html.erb +24 -0
- data/app/views/layouts/application.html.erb +90 -0
- data/app/views/shared/_google_analytics.html.erb +12 -0
- data/app/views/users/index.html.erb +21 -0
- data/app/workers/tweet_inspector.rb +18 -0
- data/bin/bundle +3 -0
- data/bin/rails +8 -0
- data/bin/rake +8 -0
- data/bin/setup +29 -0
- data/bin/spring +15 -0
- data/config.ru +4 -0
- data/config/application.rb +27 -0
- data/config/boot.rb +3 -0
- data/config/database.yml.sample +85 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +50 -0
- data/config/environments/production.rb +79 -0
- data/config/environments/test.rb +42 -0
- data/config/initializers/assets.rb +15 -0
- data/config/initializers/backtrace_silencers.rb +7 -0
- data/config/initializers/carrierwave.rb +17 -0
- data/config/initializers/cookies_serializer.rb +3 -0
- data/config/initializers/filter_parameter_logging.rb +4 -0
- data/config/initializers/inflections.rb +16 -0
- data/config/initializers/mime_types.rb +4 -0
- data/config/initializers/session_store.rb +3 -0
- data/config/initializers/twitter.rb +1 -0
- data/config/initializers/wrap_parameters.rb +14 -0
- data/config/locales/en.bootstrap.yml +23 -0
- data/config/locales/en.yml +23 -0
- data/config/locales/es.yml +263 -0
- data/config/routes.rb +6 -0
- data/config/secrets.yml +22 -0
- data/db/migrate/20150824210535_add_tweets_table.rb +8 -0
- data/db/migrate/20150829133406_create_infractions.rb +11 -0
- data/db/migrate/20150829134520_create_users.rb +12 -0
- data/db/migrate/20150829141909_add_user_id_to_tweets.rb +5 -0
- data/db/migrate/20150829154430_create_locations.rb +10 -0
- data/db/migrate/20150830224603_create_evidences_table.rb +8 -0
- data/db/migrate/20150911020838_add_valid_column_to_infractions.rb +6 -0
- data/db/migrate/20150911025204_add_index_to_users_username.rb +5 -0
- data/db/migrate/20151102220702_add_lat_lon_to_infractions.rb +6 -0
- data/db/migrate/20151102221811_remove_locations.rb +5 -0
- data/db/migrate/20151117194703_add_reported_at_to_infractions.rb +5 -0
- data/db/migrate/20160229023500_change_lat_lon_precision.rb +6 -0
- data/db/seeds.rb +7 -0
- data/infractores.gemspec +25 -0
- data/lib/assets/.keep +0 -0
- data/lib/infractores.rb +1 -0
- data/lib/infractores/version.rb +3 -0
- data/lib/tasks/.keep +0 -0
- data/lib/tasks/twitter.rake +16 -0
- data/lib/tasks/users.rake +9 -0
- data/log/.keep +0 -0
- data/public/404.html +67 -0
- data/public/422.html +67 -0
- data/public/500.html +66 -0
- data/public/favicon.ico +0 -0
- data/public/robots.txt +5 -0
- data/vendor/assets/images/blank.gif +0 -0
- data/vendor/assets/images/fancybox_loading.gif +0 -0
- data/vendor/assets/images/fancybox_loading@2x.gif +0 -0
- data/vendor/assets/images/fancybox_overlay.png +0 -0
- data/vendor/assets/images/fancybox_sprite.png +0 -0
- data/vendor/assets/images/fancybox_sprite@2x.png +0 -0
- data/vendor/assets/images/glyphicons-halflings-white.png +0 -0
- data/vendor/assets/images/glyphicons-halflings.png +0 -0
- data/vendor/assets/javascripts/.keep +0 -0
- data/vendor/assets/javascripts/jquery.fancybox-buttons.js +122 -0
- data/vendor/assets/javascripts/jquery.fancybox.pack.js +46 -0
- data/vendor/assets/javascripts/livereload.js +1183 -0
- data/vendor/assets/stylesheets/.keep +0 -0
- data/vendor/assets/stylesheets/jquery.fancybox-buttons.css +97 -0
- data/vendor/assets/stylesheets/jquery.fancybox.css +274 -0
- metadata +215 -0
data/Guardfile
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
guard 'livereload' do
|
2
|
+
watch(%r{app/views/.+\.(erb|haml|slim)})
|
3
|
+
watch(%r{app/helpers/.+\.rb})
|
4
|
+
watch(%r{public/.+\.(css|js|html)})
|
5
|
+
watch(%r{config/locales/.+\.yml})
|
6
|
+
# Rails Assets Pipeline
|
7
|
+
watch(%r{(app|vendor)(/assets/\w+/(.+\.(scss|js|html))).*}) { |m| "/assets/#{m[3]}" }
|
8
|
+
end
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 OmbuLabs
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/Procfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# Infractores
|
2
|
+
|
3
|
+
Infractores is a tool that lets anyone with a Twitter account report a parking
|
4
|
+
violation with a tweet.
|
5
|
+
|
6
|
+
The violations are recorded and placed in a map along with evidence supporting
|
7
|
+
the report.
|
8
|
+
|
9
|
+
## Considerations
|
10
|
+
|
11
|
+
The project uses a Twitter application to find the tweets that describe a
|
12
|
+
violation. It also uses Amazon Web Services to store the evidence related to the
|
13
|
+
violation.
|
14
|
+
|
15
|
+
### Requirements
|
16
|
+
|
17
|
+
* Postgres 9.4.1+
|
18
|
+
* Redis 3.0.1+
|
19
|
+
* Ruby 2.2.1
|
20
|
+
|
21
|
+
## Setup
|
22
|
+
|
23
|
+
### Setup your environment
|
24
|
+
|
25
|
+
cp .env.sample .env
|
26
|
+
|
27
|
+
You **must enter** your AWS and Twitter credentials in this file.
|
28
|
+
|
29
|
+
### Setup your database
|
30
|
+
|
31
|
+
rake db:create db:migrate
|
32
|
+
|
33
|
+
### Get parking violations from Twitter
|
34
|
+
|
35
|
+
rake twitter:download_tweets
|
36
|
+
|
37
|
+
This task will download all the mentions for the user associated with the
|
38
|
+
Twitter credentials and its hashtag, for example: [#InfractoresBA](https://twitter.com/hashtag/infractoresba?f=tweets&src=hash)
|
39
|
+
|
40
|
+
## Start
|
41
|
+
|
42
|
+
foreman start
|
43
|
+
|
44
|
+
This will start the Rails server and a Sidekiq worker to process the tweets.
|
45
|
+
|
46
|
+
## License
|
47
|
+
|
48
|
+
See: [MIT License](LICENSE).
|
data/Rakefile
ADDED
File without changes
|
Binary file
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
5
|
+
width="218.25px" height="73.333px" viewBox="0 0 218.25 73.333" enable-background="new 0 0 218.25 73.333" xml:space="preserve">
|
6
|
+
<text transform="matrix(0.9953 -0.0973 0.0973 0.9953 22.3145 53.2031)" fill="#F7685C" font-family="'Rubik-Medium'" font-size="26">InfractoresBA</text>
|
7
|
+
<rect x="4.039" y="13.107" transform="matrix(0.9953 -0.0973 0.0973 0.9953 -3.0448 10.7845)" fill="none" stroke="#F7685C" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" width="210" height="47"/>
|
8
|
+
<text transform="matrix(1 0 0 1 479.8232 -62.4219)" fill="#F7685C" font-family="'Rubik-Medium'" font-size="26">InfractoresBA</text>
|
9
|
+
<rect x="462.75" y="-94" fill="none" stroke="#F7685C" stroke-width="3" stroke-miterlimit="10" width="210" height="47"/>
|
10
|
+
</svg>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require twitter/bootstrap
|
16
|
+
//= require jquery.fancybox.pack
|
17
|
+
//= require jquery.fancybox-buttons
|
18
|
+
//= require_tree .
|
@@ -0,0 +1,82 @@
|
|
1
|
+
$(document).ready(function(){
|
2
|
+
var redMarker = 'http://maps.gstatic.com/mapfiles/markers2/marker.png';
|
3
|
+
var blueMarker = 'http://maps.gstatic.com/mapfiles/markers2/boost-marker-mapview.png';
|
4
|
+
var allMarkers = [];
|
5
|
+
|
6
|
+
$(".fancybox").fancybox({
|
7
|
+
openEffect : 'none',
|
8
|
+
closeEffect : 'none'
|
9
|
+
});
|
10
|
+
|
11
|
+
$( "h4 a.see-map" ).click(function(evt) {
|
12
|
+
event.preventDefault();
|
13
|
+
var infractionId = $(this).data().infractionId;
|
14
|
+
$("#map_canvas_" + infractionId).toggle();
|
15
|
+
var initMap = "initialize_" + infractionId;
|
16
|
+
window[initMap]();
|
17
|
+
});
|
18
|
+
|
19
|
+
$( "#info, #close" ).click(function(event) {
|
20
|
+
event.preventDefault();
|
21
|
+
$("body").toggleClass("overflow");
|
22
|
+
$("#description").toggle();
|
23
|
+
});
|
24
|
+
|
25
|
+
function resetMapAndPaintMarker(myMarker) {
|
26
|
+
$.each(allMarkers, function(i, marker) {
|
27
|
+
marker.setIcon(redMarker)
|
28
|
+
});
|
29
|
+
myMarker.setIcon(blueMarker);
|
30
|
+
}
|
31
|
+
|
32
|
+
function scrollToInfraction(infractionDiv) {
|
33
|
+
$('html, body').animate({
|
34
|
+
scrollTop: $(infractionDiv).offset().top
|
35
|
+
}, 300);
|
36
|
+
};
|
37
|
+
|
38
|
+
function scrollToPermalinkInfraction() {
|
39
|
+
var infraction = window.location.hash;
|
40
|
+
if(infraction != "") {
|
41
|
+
infraction = infraction.replace("#", "#ver-");
|
42
|
+
$(infraction).click();
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
function initializeMainMap() {
|
47
|
+
var myLatLng = {lat: -34.592894, lng: -58.452826 };
|
48
|
+
var mapCanvas = document.getElementById('map_canvas_main');
|
49
|
+
var mapOptions = {
|
50
|
+
center: myLatLng,
|
51
|
+
zoom: 13,
|
52
|
+
mapTypeId: google.maps.MapTypeId.ROADMAP
|
53
|
+
}
|
54
|
+
var map = new google.maps.Map(mapCanvas, mapOptions);
|
55
|
+
$.each(infractionMarkers, function(i, markerData) {
|
56
|
+
var latitude = parseFloat(markerData[0]);
|
57
|
+
var longitude = parseFloat(markerData[1]);
|
58
|
+
var infractionDiv = "#infraccion-" + markerData[2];
|
59
|
+
var latLng = new google.maps.LatLng(latitude, longitude);
|
60
|
+
var marker = new google.maps.Marker({
|
61
|
+
map: map,
|
62
|
+
position: latLng,
|
63
|
+
icon: redMarker
|
64
|
+
});
|
65
|
+
allMarkers.push(marker);
|
66
|
+
google.maps.event.addListener(marker, 'click', function() {
|
67
|
+
scrollToInfraction(infractionDiv);
|
68
|
+
window.location = "/" + infractionDiv;
|
69
|
+
resetMapAndPaintMarker(marker);
|
70
|
+
});
|
71
|
+
$("#ver-infraccion-" + markerData[2]).click(function(evt) {
|
72
|
+
scrollToInfraction(infractionDiv);
|
73
|
+
map.panTo(latLng);
|
74
|
+
map.setZoom(18);
|
75
|
+
resetMapAndPaintMarker(marker);
|
76
|
+
});
|
77
|
+
});
|
78
|
+
scrollToPermalinkInfraction();
|
79
|
+
}
|
80
|
+
google.maps.event.addDomListener(window, 'load', initializeMainMap);
|
81
|
+
|
82
|
+
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
window.onload = (function(){
|
2
|
+
|
3
|
+
$('.tweet').each(function(index, value) {
|
4
|
+
var tweet = value;
|
5
|
+
var id = tweet.getAttribute("tweetID");
|
6
|
+
|
7
|
+
twttr.widgets.createTweet(
|
8
|
+
id, tweet,
|
9
|
+
{
|
10
|
+
conversation : 'none', // or all
|
11
|
+
cards : 'hidden', // or visible
|
12
|
+
linkColor : '#cc0000', // default is blue
|
13
|
+
theme : 'light' // or dark
|
14
|
+
}
|
15
|
+
)
|
16
|
+
});
|
17
|
+
|
18
|
+
});
|
@@ -0,0 +1,32 @@
|
|
1
|
+
/* Colors */
|
2
|
+
|
3
|
+
@import "1-utilities/variables";
|
4
|
+
|
5
|
+
body {
|
6
|
+
font-family: 'Rubik', 'Helvetica', 'Arial', sans-serif;
|
7
|
+
font-size: 12px;
|
8
|
+
line-height: 1.5;
|
9
|
+
margin-top: 0px;
|
10
|
+
color: $black;
|
11
|
+
background-color: $red;
|
12
|
+
}
|
13
|
+
h1{
|
14
|
+
font-size: 36px;
|
15
|
+
}
|
16
|
+
h2{
|
17
|
+
font-size: 24px;
|
18
|
+
}
|
19
|
+
h3{
|
20
|
+
font-size: 20px;
|
21
|
+
}
|
22
|
+
h4{
|
23
|
+
font-size: 14px;
|
24
|
+
}
|
25
|
+
a{
|
26
|
+
color: $red;
|
27
|
+
font-weight: 400;
|
28
|
+
&:hover{
|
29
|
+
color: $red;
|
30
|
+
text-decoration: underline;
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
/* Colors */
|
2
|
+
|
3
|
+
@import "1-utilities/variables";
|
4
|
+
|
5
|
+
footer{
|
6
|
+
position: relative;
|
7
|
+
z-index: 1;
|
8
|
+
width: 50%;
|
9
|
+
max-width: 550px;
|
10
|
+
background-color: $yellow;
|
11
|
+
padding: 2em 1em;
|
12
|
+
text-align: center;
|
13
|
+
p.pull-right{
|
14
|
+
margin: 0;
|
15
|
+
float: none !important;
|
16
|
+
margin-bottom: 20px;
|
17
|
+
a{
|
18
|
+
background: $red;
|
19
|
+
padding: 10px;
|
20
|
+
color: $yellow;
|
21
|
+
-webkit-border-radius: 50px;
|
22
|
+
-moz-border-radius: 50px;
|
23
|
+
border-radius: 50px;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
@media screen and (max-width: 768px){
|
28
|
+
footer{
|
29
|
+
max-width: none;
|
30
|
+
width: 100%;
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,101 @@
|
|
1
|
+
/* Infraction's slider */
|
2
|
+
|
3
|
+
@import "1-utilities/variables";
|
4
|
+
|
5
|
+
.gallery-container{
|
6
|
+
margin: 2%;
|
7
|
+
overflow: hidden;
|
8
|
+
h4{
|
9
|
+
margin-left: 2%;
|
10
|
+
}
|
11
|
+
.main-gallery-test{
|
12
|
+
margin-left: 2%;
|
13
|
+
a.fancybox{
|
14
|
+
cursor: pointer;
|
15
|
+
display: block !important;
|
16
|
+
position: relative;
|
17
|
+
position: relative;
|
18
|
+
float: left;
|
19
|
+
width: 32%;
|
20
|
+
margin: 0 1% 1% 0;
|
21
|
+
height: 100px;
|
22
|
+
overflow: hidden;
|
23
|
+
img{
|
24
|
+
width: 100%
|
25
|
+
}
|
26
|
+
&:before{
|
27
|
+
opacity: 0;
|
28
|
+
content: "\f00e";
|
29
|
+
font-family: 'FontAwesome';
|
30
|
+
position: absolute;
|
31
|
+
top: 43%;
|
32
|
+
left: 40%;
|
33
|
+
width: 30px;
|
34
|
+
background-color: #FCE67A;
|
35
|
+
-webkit-border-radius: 4px;
|
36
|
+
-moz-border-radius: 4px;
|
37
|
+
border-radius: 16px;
|
38
|
+
font-size: 16px;
|
39
|
+
text-align: center;
|
40
|
+
border: 3px solid #FCE67A;
|
41
|
+
}
|
42
|
+
&:hover{
|
43
|
+
&:before{
|
44
|
+
opacity: 1;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
}
|
50
|
+
#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span{
|
51
|
+
background: image-url("gallery-buttons.png");
|
52
|
+
}
|
53
|
+
#fancybox-loading{
|
54
|
+
background-position: 0 -130px;
|
55
|
+
}
|
56
|
+
.fancybox-prev span, .fancybox-next span{
|
57
|
+
height: 44px;
|
58
|
+
width: 44px;
|
59
|
+
}
|
60
|
+
.fancybox-next span{
|
61
|
+
background-position: 0 -45px;
|
62
|
+
}
|
63
|
+
.fancybox-prev span{
|
64
|
+
background-position: 0 -88px;
|
65
|
+
}
|
66
|
+
.fancybox-close{
|
67
|
+
height: 44px;
|
68
|
+
width: 44px;
|
69
|
+
top: 0;
|
70
|
+
right: 0;
|
71
|
+
}
|
72
|
+
.fancybox-skin{
|
73
|
+
background: $yellow;
|
74
|
+
}
|
75
|
+
.fancybox-nav span{
|
76
|
+
visibility: visible;
|
77
|
+
}
|
78
|
+
.fancybox-inner:before{
|
79
|
+
content: "";
|
80
|
+
position: absolute;
|
81
|
+
background: image-url("logo-infractores.svg");
|
82
|
+
background-size: 100%;
|
83
|
+
width: 130px;
|
84
|
+
height: 43px;
|
85
|
+
background-repeat: no-repeat;
|
86
|
+
bottom: 0;
|
87
|
+
right: 0;
|
88
|
+
margin: 10px;
|
89
|
+
}
|
90
|
+
|
91
|
+
@media screen and (max-width: 500px){
|
92
|
+
.gallery-container{
|
93
|
+
.main-gallery-test{
|
94
|
+
margin-left: 2%;
|
95
|
+
a.fancybox{
|
96
|
+
width: 49%;
|
97
|
+
height: 80px;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
/* Colors */
|
2
|
+
|
3
|
+
@import "1-utilities/variables";
|
4
|
+
|
5
|
+
.navbar-inverse{
|
6
|
+
background: $blue;
|
7
|
+
border-radius: 0;
|
8
|
+
position: fixed;
|
9
|
+
z-index: 100;
|
10
|
+
top: 0;
|
11
|
+
//-webkit-box-shadow: rgba(0,0,0,0.3) 0 2px 3px;
|
12
|
+
//-moz-box-shadow: rgba(0,0,0,0.3) 0 2px 3px;
|
13
|
+
//box-shadow: rgba(0,0,0,0.3) 0 2px 3px;
|
14
|
+
padding: 1em 1em 0 1em;
|
15
|
+
border: 0;
|
16
|
+
max-width: 550px;
|
17
|
+
width: 50%;
|
18
|
+
.navbar-inner{
|
19
|
+
width: 90%;
|
20
|
+
margin: auto;
|
21
|
+
min-height: 40px;
|
22
|
+
}
|
23
|
+
.brand{
|
24
|
+
color: $red;
|
25
|
+
font-size: 18px;
|
26
|
+
margin: 0;
|
27
|
+
background-color: $red;
|
28
|
+
float: left;
|
29
|
+
padding: 5px 10px;
|
30
|
+
a{
|
31
|
+
color: $blue;
|
32
|
+
&:hover{
|
33
|
+
text-decoration: none;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
37
|
+
#info{
|
38
|
+
line-height: 32px;
|
39
|
+
float: right;
|
40
|
+
font-size: 14px;
|
41
|
+
color: $white;
|
42
|
+
&:hover{
|
43
|
+
color: $red;
|
44
|
+
text-decoration: none;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
#description{
|
49
|
+
display: none;
|
50
|
+
background-color: $light_yellow;
|
51
|
+
padding: 5%;
|
52
|
+
color: $blue;
|
53
|
+
line-height: 24px;
|
54
|
+
font-size: 14px;
|
55
|
+
position: fixed;
|
56
|
+
z-index: 2;
|
57
|
+
top: 52px;
|
58
|
+
height: 100%;
|
59
|
+
width: 50%;
|
60
|
+
max-width: 550px;
|
61
|
+
}
|
62
|
+
|
63
|
+
@media screen and (max-width:768px){
|
64
|
+
.navbar-inverse, #description{
|
65
|
+
width: 100%;
|
66
|
+
max-width: none;
|
67
|
+
&#description{
|
68
|
+
padding: 7%;
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|