Skip to content

Commit

Permalink
feat: added Terms of Use, rewrite About section; use must accept ToU
Browse files Browse the repository at this point in the history
  • Loading branch information
lksv committed Apr 27, 2016
1 parent 61a2101 commit 98cdfd5
Show file tree
Hide file tree
Showing 11 changed files with 258 additions and 41 deletions.
8 changes: 4 additions & 4 deletions app/assets/javascripts/map.js
Expand Up @@ -16,7 +16,7 @@ function resize(){
var maxZoomEnabled = 14;
var initialZoom = 14;

var mbAttr = 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
var mbAttr = 'Map layer data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
'Imagery © <a href="http://mapbox.com">Mapbox</a>',
mbUrl = 'https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6IjZjNmRjNzk3ZmE2MTcwOTEwMGY0MzU3YjUzOWFmNWZhIn0.Y8bhBaUMqFiPrDRW9hieoQ';
Expand All @@ -31,12 +31,12 @@ var layers = {
type: "xyz",
url: 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
subdomains: ['a', 'b', 'c'],
attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
attribution: 'Map layer data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>',
continuousWorld: true
}),
"Satelitní": L.tileLayer('https://api.tiles.mapbox.com/v4/mapbox.streets-satellite/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibGtzdiIsImEiOiJjaW40OHNjbzcwMHNpdzVtMWRsMzE1aDI2In0.A1H4C1Zf8bBaXkWKPEL05Q', {
attribution: '<a href="https://mapbox.com/about/maps/">MapBox</a> &mdash; Map data &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
attribution: '<a href="https://mapbox.com/about/maps/">MapBox</a> &mdash; Map layer data &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
subdomains: 'abcd', maxZoom: 20, maxNativeZoom: 18,
}),
"Černobílá": L.tileLayer('https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png', {
Expand Down Expand Up @@ -234,7 +234,7 @@ var map = new L.Map('map', {
// just for debugging purposes
window.map = map;

map.attributionControl.setPrefix('By <a href="http://github.com/lksv">lksv</a>');
map.attributionControl.setPrefix('<a href="/terms">Smluvní podmínky</a>&nbsp;&nbsp;');

// get default map position
var leafletPosition = window.sessionStorage && window.sessionStorage.getItem('leafletPosition');
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/about_controller.rb
@@ -1,5 +1,5 @@
class AboutController < ApplicationController
skip_authorization_check only: [:index, :intro]
skip_authorization_check only: [:index, :intro, :terms]

def index
end
Expand Down
7 changes: 7 additions & 0 deletions app/controllers/application_controller.rb
Expand Up @@ -3,6 +3,8 @@ class ApplicationController < ActionController::Base
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception

before_filter :update_sanitized_params, if: :devise_controller?

check_authorization unless: :public_controller?

helper_method :current_or_guest_user, :guest_user?
Expand Down Expand Up @@ -65,6 +67,11 @@ def public_controller?
devise_controller? || is_a?(::PdfjsViewer::ViewerController)
end


def update_sanitized_params
devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:terms_of_service, :email, :password, :password_confirmation)}
end

# called (once) when the user logs in, insert any code your application needs
# to hand off from guest_user to current_user.
def logging_in
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/users_controller.rb
Expand Up @@ -2,12 +2,12 @@ class UsersController < ApplicationController
skip_load_and_authorize_resource only: :create
skip_authorization_check only: :create


def create
raise 'You are already registered!' if signed_in? || !guest_user?
generated_password = Devise.friendly_token.first(8)
@user = User.new(
email: params[:user] && params[:user][:email],
terms_of_service: params[:user][:terms_of_service],
password: generated_password,
password_confirmation: generated_password,
generated_password: generated_password
Expand Down
8 changes: 8 additions & 0 deletions app/models/user.rb
Expand Up @@ -12,13 +12,21 @@ class User < ActiveRecord::Base
has_many :local_administration_unit_admins, dependent: :destroy

validates :role, inclusion: { :in => Settings.roles, message: 'invalid type of role' }

validates_acceptance_of :terms_of_service,
allow_nil: false,
message: 'musí být potvrzeny',
on: :create

after_initialize :default_role

scope :subscribed, -> {
where('confirmed_at IS NOT NULL')
.where('email !~ ?', '^guest_.*example.com')
}

attr_accessor :terms_of_service

def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
Expand Down
73 changes: 38 additions & 35 deletions app/views/about/index.html.haml
@@ -1,55 +1,58 @@
%h1 O projektu

%h3 Jak vznikl?

%p
Prvotní impuls k projektu (OtevřenéBrno.cz) vznikl na základě jedné mé osobní zkušeností s dohledáváním informací na
stránkách města Brna, týkající se zápisu o garáži, o jejíž koupi jsem měl zájem.
Podat včas nabídku by ale znamenalo každý den kontrolovat úřední desku a projít
obrovské množství dokumentů.

%h3 K čemu web slouží?
%p
Původní verze vznikla tedy jako "důkaz", že město může svoje dokumenty a data
poskytovat občanům v uživatelsky vstřícnější a přehlednější podobě.

Web slouží k dohledání dokumentů radnic a jejich přehlednému zobrazení v mapě.
Lze i projíždět mapu a sledovat zvýrazněné objekty, kde se podle úředních
desek něco děje. Můžete tak dohledat například záměr výstavby, prodej obecní
nemovitosti nebo informaci o plánovaném čištění vaší ulice. Též můžete zadat
sledování vybrané oblasti. Pohlídáme pak za Vás, kdykoliv obec vydá k oblasti
nějaký dokument, a dáme vám o tom vědět e-mailem.
%p
V současné době web prezentuje úřední desky z více než 1200 úřadů (obce,
kraje, ...) jejichž data stahuje pomocí portálu
Cílem projektu je umožnit každému jednoduše dohledat jen to, co ho
z nepřeberného množství úředních dokumentů zajímá. Jsme platformou, kterou
radnice přehledně komunikují s občany. V současné době web prezentuje úřední
desky z více než 1.200 úřadů, jejichž data stahuje pomocí portálu
=succeed '.' do
%a{href: 'http://edesky.cz'} edesky.cz
Radnice nám bohužel zatím neposkytují dokumenty ve vhodném formátu, což je
jedním z důvodů omezené přesnosti vyhledávání.

%h3 Chcete nám pomoci?

/ Kromě automatického stahování dokumentů se mohou města sami aktivně zapojit a
/ pomocí poskytnutého administrativního přístupu samy kontrolovat kvalitu a
/ včasné zveřejnění jejich dokumentů.
%p
Napište vaší radnici, že máte zájem dozvídat se o dokumentech skrze náš web.
Obce a kraje mohou totiž zdarma požádat o administrativní rozhraní k tomuto
webu. Díky tomu se pak výrazně zvýší přesnost prezentovaných dat, též budou
moci vložit další mapové vrstvy.

%h3 Přesnost prezentovaných údajů
%h3 Jak projekt vznikl?

%p
Přesnost rozpoznání jednotlivých nemovitostí závisí na kvalitě dokumentů, které
jsou prezentovány na úřední desce. Portál
=link_to 'negaratuje správnost', terms_path
prezentovaných údajů. Zpravidla je kvalita ovlivněna:
%ul
%li
Formátem dokumentu. Oskenovaný dokument ve formátu PDF je nutné znovu převést na text.
%li
Výrazovými schopnostmi v přirozeném jazyce. Pokud je forma zápisu příliš
volná, např. není uvedeno katastrální území, označení nemovitosti nemusí
být správně rozpoznáno.

%h3 Co nabízíme obcím a krajům

Obce a kraje mohou <strong>zdarma</strong> požádat o administrativní rozhraní
ke svým datům. Díky tomu mohou: (i) výrazně zpřesnit kvalitu/přesnost prezentovaných
dat, (ii) prezentovat na mapě další mapové vrstvy s libovolnými údaji. V případě
zájmu nás kontaktujte.
Prvotní impuls k projektu (OtevřenéBrno.cz) vznikl na základě jedné mé osobní
zkušeností s dohledáváním informací na stránkách města Brna, týkající se
zápisu o garáži, o jejíž koupi jsem měl zájem. Podat včas nabídku by ale
znamenalo každý den kontrolovat úřední desku a projít obrovské množství
dokumentů.

%p
Původní verze vznikla tedy jako "důkaz", že město může svoje dokumenty a data
poskytovat občanům v uživatelsky vstřícnější a přehlednější podobě.

%h3 Kontakt

Mgr. Lukáš Svoboda, IČ: 1365321, e-mail: kontakt@mapasamospravy.cz

%h3 Podmínky použití

%p
Pokdmínky použití jsou uvedeny ve
=link_to 'vlastní sekci', terms_path

%h3 Poděkování
%p
Tento web vznikl mj. také díky odborné, morální a finanční podpoře OSF, Nadaci
Vodafone, Ideasense….
.row
.col-md-offset-4.col-xs-12
%p Projekt podpořil Fond Otakara Motejla a Nadace Vodafone.
Expand Down
189 changes: 189 additions & 0 deletions app/views/about/terms.html.haml
@@ -0,0 +1,189 @@
%h1 Podmínky

%p
%strong Provozovatelem
portálu
%a{href: root_url}= ENV['DOMAIN']
je Lukáš Svoboda, IČ 1365321.
%p
%strong Uživatelem
je návštěvník internetových stránek na doméně
=succeed '.' do
%a{href: root_url}= ENV['DOMAIN']

%p
Pokud se uživatel registruje, je to za účelem sledování dokumentů z
elektronických úředních desek.

%p
V případě, že uživatel najde na portálu
%a{href: root_url}= ENV['DOMAIN']
osobní údaje, které jsou zveřejněné v rozporu s platnými právními předpisy,
upozorní na to provozovatele na e-mail kontak@mapasamospravy.cz a ten zjedná nápravu.

/ https://www.google.com/intl/cs_cz/help/terms_maps.html
/ https://www.google.com/intl/cs/policies/terms/
/ https://earth.google.com/intl/cs/licensepro.html
%h2 1. Uchovávání dat

%p
Pro účely zkvalitnění služby můžeme používat software třetí strany na
sledování chování uživatele. Poskytovatel i tyto služby mohou využívat
cookies a ukládat data o chování uživatelů.

%p
Používáme cookies a Google Analytics, ze sběru statistik se můžete vyřadit
doplňkem vašeho prohlížeče.

%p
Zveřejněné dokumenty jsou majetkem úřadů, které je vydaly a originály jsou
dostupné na detailu dokumentů.

%p
Data mohou být uchovávány u třetích stran a v cloudových službách a to i mimo
Českou republiku a EU.

%h2 2. Přesnost prezentovaných údajů

%p Uživatel bere na vědomí že pezentované data mohou obsahovat chyby.
%p
Přesnost rozpoznání jednotlivých nemovitostí závisí na kvalitě dokumentů,
které jsou prezentovány na úřední desce. Portál negaratuje správnost
prezentovaných údajů. Zpravidla je kvalita ovlivněna:
%ul
%li
Formátem dokumentu. Oskenovaný dokument ve formátu PDF je nutné znovu převést na text.
%li
Výrazovými schopnostmi v přirozeném jazyce. Pokud je forma zápisu příliš
volná, např. není uvedeno katastrální území, označení nemovitosti nemusí
být správně rozpoznáno.


%h2 3. Změny služeb a jejich ukončení

%p
Služby neustále upravujeme a vylepšujeme. Můžeme průběžně přidávat či
odebírat funkce a také můžeme pozastavit či ukončit celou službu.

%p
Ačkoli nás to bude mrzet, používání našich služeb můžete kdykoli ukončit.
Provozovatel vám také může poskytování služeb kdykoli pozastavit nebo
vytvořit či přidat k službám nová omezení.

%h2 4. Naše záruky a odmítnutí odpovědnosti

%p
Naše služby poskytujeme na úrovni znalostí a péče, které jsou přiměřené v
daném obchodním odvětví, a doufáme, že je budete rádi používat. Určité
skutečnosti však v souvislosti s našimi službami slíbit nemůžeme.

%p
POSKYTOVATEL ANI JEJÍ DODAVATELÉ ČI DISTRIBUTOŘI NEUVÁDĚJÍ V SOUVISLOSTI SE
SLUŽBAMI ŽÁDNÉ JINÉ KONKRÉTNÍ SLIBY NEŽ TY, KTERÉ JSOU VÝSLOVNĚ UVEDENY V
TĚCHTO PODMÍNKÁCH NEBO V DODATEČNÝCH PODMÍNKÁCH. NAPŘÍKLAD SE V SOUVISLOSTI S
OBSAHEM V RÁMCI SLUŽEB, S JEJICH KONKRÉTNÍMI FUNKCEMI, S JEJICH
SPOLEHLIVOSTÍ, DOSTUPNOSTÍ ANI S JEJICH SCHOPNOSTÍ USPOKOJIT VAŠE POTŘEBY K
NIČEMU NEZAVAZUJEME. SLUŽBY POSKYTUJEME „TAK, JAK JSOU“.

%p
NĚKTERÉ PRÁVNÍ ŘÁDY POSKYTUJÍ URČITÉ ZÁRUKY, NAPŘÍKLAD ODVOZENÉ ZÁRUKY
TÝKAJÍCÍ SE OBCHODOVATELNOSTI, VHODNOSTI K URČITÉMU ÚČELU A NEPORUŠOVÁNÍ
PRÁV. V ROZSAHU, KTERÝ PRÁVNÍ PŘEDPISY UMOŽŇUJÍ, SE ZŘÍKÁME VEŠKERÝCH ZÁRUK

%h2 5. Odpovědnost za naše služby

%p
POKUD TO PLATNÉ PRÁVNÍ PŘEDPISY UMOŽŇUJÍ, NEPONESE POSKYTOVATEL ANI JEJÍ
DODAVATELÉ ČI DISTRIBUTOŘI ODPOVĚDNOST ZA UŠLÝ ZISK, ZTRÁTU TRŽEB, ZTRÁTU
DAT, FINANČNÍ ZTRÁTY ANI ZA NEPŘÍMÉ, ZVLÁŠTNÍ, NÁSLEDNÉ ČI EXEMPLÁRNÍ ŠKODY
NEBO ZA NÁHRADU ŠKODY SE SANKČNÍ FUNKCÍ.
%p
V ROZSAHU, KTERÝ PRÁVNÍ PŘEDPISY UMOŽŇUJÍ, BUDE CELKOVÁ ODPOVĚDNOST
POSKYTOVATELE A JEHO DODAVATELŮ A DISTRIBUTORŮ ZA JAKÝKOLI NÁROK VZNESENÝ NA
ZÁKLADĚ TĚCHTO PODMÍNEK, VČETNĚ VEŠKERÝCH ZÁRUK VYPLÝVAJÍCÍCH ZE ZÁKONA,
OMEZENA VÝŠÍ ČÁSTKY, KTEROU JSTE ZA POUŽITÍ SLUŽEB ZAPLATILI (NEBO NA
OPĚTOVNÉ POSKYTOVÁNÍ SLUŽEB, POKUD SE PRO TUTO MOŽNOST ROZHODNEME).
%p
VE VŠECH PŘÍPADECH PLATÍ, ŽE POSKYTOVATEL ANI JEHO DODAVATELÉ ČI
DISTRIBUTOŘI NEPONESOU ODPOVĚDNOST ZA JAKÉKOLI ZTRÁTY ČI ŠKODY, KTERÉ NELZE
PŘIMĚŘENÝM ZPŮSOBEM PŘEDVÍDAT.

%p
VÝSLOVNĚ UZNÁVÁTE A SOUHLASÍTE S TÍM, ŽE:

%br
a) PORTÁL A JEHO SLUŽBY POUŽÍVÁTE NA VLASTNÍ RIZIKO. SLUŽBY JE POSKYTOVÁNY
„TAK, JAK JE“, BEZ ZÁRUKY JAKÉHOKOLI DRUHU. V NEJVĚTŠÍM MOŽNÉM ROZSAHU
POVOLENÉM ZÁKONEM SE PROVOZOVATEL VÝSLOVNĚ ZŘÍKÁ VEŠKERÝCH ZÁRUK A
PODMÍNEK JAKÉHOKOLI DRUHU, AŤ JIŽ VÝSLOVNĚ UVEDENÝCH NEBO PŘEDPOKLÁDANÝCH,
VČETNĚ, MIMO JINÉ, PŘEDPOKLÁDANÝCH ZÁRUK A PODMÍNEK VZTAHUJÍCÍCH SE K
OBCHODOVATELNOSTI, VHODNOSTI PRO DANÝ ÚČEL A NEDODRŽENÍ SMLOUVY.

%br
b) POSKYTOVATEL (I) NEZARUČUJE, ŽE PORTÁL A JEHO SLUŽBY SPLNÍ VAŠE POŽADAVKY,
(II) ŽE PORTÁL A JEHO SLUŽBY NEBUDE OBSAHOVAT CHYBY, (III) NEPŘEBÍRÁ ŽÁDNOU
ZÁRUKU STRAN ZABEZPEČENÍ, SPOLEHLIVOSTI, NAČASOVÁNÍ NEBO VÝKONU PORTÁL A JEHO
SLUŽEB A NEZARUČUJE, (IV) ŽE JAKÉKOLI CHYBY PORTÁLU A JEHO SLUŽEB BUDOU
OPRAVENY.

%br
c) ŽÁDNÉ ÚSTNÍ ANI PÍSEMNÉ INFORMACE NEBO DOPORUČENÍ, KTERÉ ZÍSKÁTE OD
PROVOZOVATELE ČI JAKÉKOLI TŘETÍ STRANY NEBO PROSTŘEDNICTVÍM PORTÁLU,
NEVYTVÁŘEJÍ NÁROK NA ŽÁDNOU ZÁRUKU, KTERÁ NENÍ VÝSLOVNĚ UVEDENA V TĚCHTO
SMLUVNÍCH PODMÍNKÁCH.


%h2 6. Používání našich služeb firmami

%p
Pokud služby používáte v zastoupení firmy, pak tato firma souhlasí s těmito
podmínkami. Poskytovatele, jeho zástupce a zaměstnance ochráníte před a
odškodníte za jakékoli nároky, soudní řízení a žaloby vyplývající nebo
související s používáním služeb nebo porušením těchto smluvních podmínek
včetně odpovědnosti a výdajů vzešlých z veškerých nároků, ztrát, náhrad škod,
žalob, soudních řízení, rozsudků, výdajů za soudní řízení a nákladů na právní
zastoupení.

%h2 7. Používání našich služeb ve státní správě

%p
Používáte-li naše služby jménem některého subjektu státní správy, pak tento
subjekt přijímá tyto podmínky. Výhradně v rozsahu povoleném platnými právními
předpisy, nařízeními nebo výsadami a imunitami zbavuje tento subjekt
provozovatele a spřízněné subjekty, zástupce a zaměstnance odpovědnosti a
poskytne odškodnění v případě nároku, jednání nebo řízení vyplývajícího z
používání služeb nebo porušení těchto smluvních podmínek, případně v jejich
souvislosti, včetně odpovědnosti nebo nákladů vyplývajících z nároků, ztrát,
poškození, soudních rozhodnutí, nákladů na soudní spory a právních poplatků.


%h2 8. Informace o těchto podmínkách

%p
Tyto podmínky nebo jakékoli dodatečné podmínky týkající se určité služby
můžeme příležitostně měnit, například z důvodu změn platných zákonů nebo změn
našich služeb. Znění podmínek byste měli pravidelně kontrolovat. Zprávu o
změnách podmínek zveřejníme na této stránce. Změny nebudou uplatňovány
zpětně a nebudou nabývat účinnosti dříve než 14 dní po uveřejnění. Změny
týkající se nových funkcí určité služby nebo změny provedené z právních
důvodů však nabudou účinnosti okamžitě. Jestliže se změněnými podmínkami
určité služby nesouhlasíte, měli byste službu přestat používat.

%p
Jestliže dojde k rozporu mezi těmito podmínkami a dodatečnými podmínkami,
budou v rozporných bodech platit dodatečné podmínky.

%p
Tyto podmínky řídí smluvní vztah mezi vámi a provozovatelem. Neudělují
práva žádným třetím stranám.

%p
Jestliže tyto podmínky nebudete splňovat a my nebudeme okamžitě jednat,
neznamená to, že bychom se vzdávali jakýchkoli práv, která nám případně
náleží (jako například právo dále v budoucnu jednat).

%h2 9. Přetrvání smluvních podmínek

Podmínky uvedené v částech 4., 5., 6., 7. zůstávají
platné i po ukončení nebo vypršení platnosti těchto Smluvních podmínek.
1 change: 1 addition & 0 deletions app/views/devise/registrations/edit.html.erb
Expand Up @@ -42,4 +42,5 @@
<%= button_to t('.cancel_my_account', :default => "Cancel my account"), registration_path(resource_name), data: { confirm: t('.are_you_sure', :default => "Are you sure?") }, :method => :delete, :class => 'button right' %>
</div>

<%= link_to 'Smluvní podmínky', terms_path %> <br/>
<%= link_to t('devise.shared.links.back', :default => "Back"), :back %>

0 comments on commit 98cdfd5

Please sign in to comment.