diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..6ce399ef5 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: handlingarse # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: handlingar # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.gitignore b/.gitignore index 50dfd417e..8284df4f8 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,10 @@ /sqlitedbs /cache /old-cache +/.vscode .*.swp *~ *#*# TAGS +*.sw[a-z] +*DONT-CHECKIN* diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..84f119abd --- /dev/null +++ b/Makefile @@ -0,0 +1,34 @@ + + +DIFF_FILE_HSE = general/_before_body_end.html.erb +DIFF_FILE_HSE = general/_before_head_end.html.erb +DIFF_FILE_HSE = general/_credits.html.erb +DIFF_FILE_HSE = general/_credits.sv.html.erb +DIFF_FILE_HSE = general/_orglink.html.erb +DIFF_FILE_HSE = general/_popup_banner.html.erb +DIFF_FILE_HSE = general/exception_caught.html.erb +DIFF_FILE_HSE = general/mycontroller.html.erb + + +DIFF_FILE_HSE = help/_sidebar.html.erb +DIFF_FILE_HSE = help/_why_they_should_reply_by_email.html.erb +DIFF_FILE_HSE = help/about.html.erb +DIFF_FILE_HSE = help/alaveteli.html.erb +DIFF_FILE_HSE = help/api.html.erb +DIFF_FILE_HSE = help/contact.html.erb +DIFF_FILE_HSE = help/credits.html.erb +DIFF_FILE_HSE = help/officers.html.erb +DIFF_FILE_HSE = help/privacy.html.erb +DIFF_FILE_HSE = help/pro.html.erb +DIFF_FILE_HSE = help/requesting.html.erb +DIFF_FILE_HSE = help/unhappy.html.erb + + +diff-theme: + #git diff --no-index -w ./lib/views/$(DIFF_FILE_HSE) ../alaveteli/app/views/$(DIFF_FILE_HSE) + git diff --no-index ./lib/views/$(DIFF_FILE_HSE) ../alavetelitheme/lib/views/$(DIFF_FILE_HSE) + + +copy-a: + cp ../alaveteli/app/views/$(DIFF_FILE_HSE) ./lib/views/$(DIFF_FILE_HSE) + diff --git a/README.md b/README.md index 2662b4ee4..4bbf57fdc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,23 @@ +Handlingar Theme +============== + +Create pull request from [alavetelitheme master branch](https://github.com/mysociety/alavetelitheme/tree/master) to our [dev](https://github.com/handlingar/handlingar-theme/tree/dev) branch. + +Then do your suggested changes and pushed into [dev](https://github.com/handlingar/handlingar-theme/tree/dev) branch. + +Test these changes on the development server. + +If everything from [dev](https://github.com/handlingar/handlingar-theme/tree/dev) branch works correctly on development server we then do a Pull Request (PR) to [main](https://github.com/handlingar/handlingar-theme/tree/main) branch. + +Then we push [main](https://github.com/handlingar/handlingar-theme/tree/main) branch to production server. + +### Deploy updates on development server or production server +Use the following instructions to deploy changes that have been made. See this [link](https://gitlab.com/handlingar/handlingar/-/wikis/Uppdatera-tema) from Handlingar Wiki. + +Read more about project work order at: [Handlingar Wiki](https://gitlab.com/handlingar/handlingar/-/wikis/) + +This theme is based on Alavetelitheme example theme. Read more below. + Alavetelitheme ============== diff --git a/app/assets/images/alaveteli-pro/screenshot-batch-list.jpg b/app/assets/images/alaveteli-pro/screenshot-batch-list.jpg new file mode 100644 index 000000000..c01ca2948 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-batch-list.jpg differ diff --git a/app/assets/images/alaveteli-pro/screenshot-batch-privacy.jpg b/app/assets/images/alaveteli-pro/screenshot-batch-privacy.jpg new file mode 100644 index 000000000..e0ae92774 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-batch-privacy.jpg differ diff --git a/app/assets/images/alaveteli-pro/screenshot-batch-selection.jpg b/app/assets/images/alaveteli-pro/screenshot-batch-selection.jpg new file mode 100644 index 000000000..0b85bb483 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-batch-selection.jpg differ diff --git a/app/assets/images/alaveteli-pro/screenshot-batch-write.jpg b/app/assets/images/alaveteli-pro/screenshot-batch-write.jpg new file mode 100644 index 000000000..5c9f46f57 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-batch-write.jpg differ diff --git a/app/assets/images/alaveteli-pro/screenshot-dashboard.jpg b/app/assets/images/alaveteli-pro/screenshot-dashboard.jpg new file mode 100644 index 000000000..5a3e59f23 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-dashboard.jpg differ diff --git a/app/assets/images/alaveteli-pro/screenshot-embargo-extension.jpg b/app/assets/images/alaveteli-pro/screenshot-embargo-extension.jpg new file mode 100644 index 000000000..d6ecc6271 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-embargo-extension.jpg differ diff --git a/app/assets/images/alaveteli-pro/screenshot-embargo-publish.jpg b/app/assets/images/alaveteli-pro/screenshot-embargo-publish.jpg new file mode 100644 index 000000000..d6ecc6271 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-embargo-publish.jpg differ diff --git a/app/assets/images/alaveteli-pro/screenshot-embargo.jpg b/app/assets/images/alaveteli-pro/screenshot-embargo.jpg new file mode 100644 index 000000000..2947a9f94 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-embargo.jpg differ diff --git a/app/assets/images/alaveteli-pro/screenshot-requests.jpg b/app/assets/images/alaveteli-pro/screenshot-requests.jpg new file mode 100644 index 000000000..11dfa5f10 Binary files /dev/null and b/app/assets/images/alaveteli-pro/screenshot-requests.jpg differ diff --git a/app/assets/images/homepage-background-small.jpg b/app/assets/images/homepage-background-small.jpg index c503d25e9..0c50b7df0 100644 Binary files a/app/assets/images/homepage-background-small.jpg and b/app/assets/images/homepage-background-small.jpg differ diff --git a/app/assets/images/homepage-background.jpg b/app/assets/images/homepage-background.jpg index 426485d6b..08a864833 100644 Binary files a/app/assets/images/homepage-background.jpg and b/app/assets/images/homepage-background.jpg differ diff --git a/app/assets/images/logo.png b/app/assets/images/logo.png index 6f8e723a5..365ea08de 100644 Binary files a/app/assets/images/logo.png and b/app/assets/images/logo.png differ diff --git a/app/assets/images/logo@2.png b/app/assets/images/logo@2.png index ab890dfa5..cd21fecf6 100644 Binary files a/app/assets/images/logo@2.png and b/app/assets/images/logo@2.png differ diff --git a/app/assets/stylesheets/responsive/_settings.scss b/app/assets/stylesheets/responsive/_settings.scss index 015aece1e..033ffbd5c 100644 --- a/app/assets/stylesheets/responsive/_settings.scss +++ b/app/assets/stylesheets/responsive/_settings.scss @@ -11,8 +11,8 @@ $logo-height: 44px; $color_sand: #f3f1eb; $color_black: #333333; -$color_orange: #f4a140; -$color_blue: #4faded; +$color_orange: #E6722A; +$color_blue: #100467; $color_green: #62b356; $color_yellow: #ffd836; $color_red: #e04b4b; @@ -26,10 +26,11 @@ $color_dark_grey: #6c6b68; $color_neutral_light: $color_sand; $color_neutral_dark: $color_black; -$color_primary: $color_violet; -$color_secondary: $color_orange; +$color_primary: $color_orange; +$color_secondary: $color_dark_grey; $body-bg: $color_neutral_light; +$topnav_bg: #E6722A; $body-font-color: $color_neutral_dark; $link-color: darken($color_blue, 20%); @@ -49,5 +50,4 @@ $notice-color: $color_green; $error-color: $color_red; $action-color: $color_orange; -$banner_inner_bg: $color_primary; -$topnav_bg: darken($color_primary, 10%); +$banner_inner_bg: $color_orange; diff --git a/app/assets/stylesheets/responsive/custom.scss b/app/assets/stylesheets/responsive/custom.scss index 8759ae152..b95b3f49f 100644 --- a/app/assets/stylesheets/responsive/custom.scss +++ b/app/assets/stylesheets/responsive/custom.scss @@ -11,9 +11,9 @@ /* General styling of nav menu items */ %menu-item { text-decoration: none; - color: transparentize($color_white, 0.2); + color: transparentize($color_blue, 0.2); @include ie8 { - color: $color_white; + color: $color_blue; } transition: background-color 0.5s ease-out; &:hover, @@ -28,8 +28,8 @@ /* Selected menu item */ %selected-menu-item { font-weight: bold; - color: $color_primary; - background-color: $color_neutral_light; + color: $color_primary #100467; + background-color: $color_neutral_light #E6722A; &:hover, &:active, &:focus { @@ -535,7 +535,7 @@ p.locale-list-trigger { border: 0; padding: 0; } - } + } #banner { @@ -715,6 +715,13 @@ a.link_to_this { */ } +/* Layout for lists of requests, authorities, users */ +.request_listing,.body_listing,.user_listing { + .head { + line-height: 1.7em; + } +} + /* Status lines and icons */ .icon_waiting_classification, .icon_waiting_response, @@ -895,13 +902,8 @@ dt { background-image: image-url('homepage-background.jpg'); } - a { - color: $color_secondary; - &:hover, - &:active, - &:focus { + a, a:hover, a:active, a:focus { color: $color_white; - } } .intro__title { @@ -909,6 +911,10 @@ dt { text-shadow: 0 1px 2px transparentize($color_black, 0.7); } + .intro__browse a { + color: $color_white; + } + .new-request__content { background-color: $color_neutral_dark; border-radius: 5px; @@ -929,12 +935,12 @@ dt { } .new-request__make-new-requests { @include button-base; - background-color: desaturate(darken($color_secondary, 10%), 5%); + background-color: desaturate(darken($color_primary, 10%), 5%); color: $color_white; &:hover, &:active, &:focus { - background-color: darken($color_secondary, 20%); + background-color: darken($color_primary, 20%); } } } diff --git a/lib/alavetelitheme.rb b/lib/alavetelitheme.rb index 0af61e887..10c714e2b 100644 --- a/lib/alavetelitheme.rb +++ b/lib/alavetelitheme.rb @@ -68,9 +68,11 @@ def prepend_theme_assets # Tell FastGettext about the theme's translations: look in the theme's # locale-theme directory for a translation in the first place, and if # it isn't found, look in the Alaveteli locale directory next: -repos = [ - FastGettext::TranslationRepository.build('app', :path=>File.join(File.dirname(__FILE__), '..', 'locale-theme'), :type => :po), - FastGettext::TranslationRepository.build('app', :path=>'locale', :type => :po) -] -FastGettext.add_text_domain 'app', :type=>:chain, :chain=>repos -FastGettext.default_text_domain = 'app' +paths = [] +paths << File.join(File.dirname(__FILE__), '..', 'locale-theme') +paths << 'locale_alaveteli_pro' if AlaveteliConfiguration::enable_alaveteli_pro +paths << 'locale' +repos = paths.map do |path| + FastGettext::TranslationRepository.build('app', :path => path, :type => :po) +end +AlaveteliLocalization.set_default_text_domain('app', repos) diff --git a/lib/config/custom-routes.rb b/lib/config/custom-routes.rb index efbf95ebc..a3ad0e7c1 100644 --- a/lib/config/custom-routes.rb +++ b/lib/config/custom-routes.rb @@ -2,8 +2,8 @@ # Here you can override or add to the pages in the core website Rails.application.routes.draw do - # brand new controller example - # get '/mycontroller' => 'general#mycontroller' - # Additional help page example - # get '/help/help_out' => 'help#help_out' +# brand new controller for terms of use + + get '/help/terms' => 'help#terms', :as => 'help_terms' + end diff --git a/lib/config/user_spam_scorer.rb b/lib/config/user_spam_scorer.rb new file mode 100644 index 000000000..cb392e9b5 --- /dev/null +++ b/lib/config/user_spam_scorer.rb @@ -0,0 +1,78 @@ +# The DEFAULT_* values defined in lib/user_spam_scorer.rb will still apply +# unless you override their key in this optional file. +# +# Unfortunately at this time you can't override the regular expressions defined +# for DEFAULT_SPAM_NAME_FORMAT or DEFAULT_SPAM_ABOUT_ME_FORMAT. + +user_spam_scorer: + currency_symbols: + - £ + - $ + - € + - ¥ + - ¢ + suspicious_domains: + - mail.ru + - temp-mail.de + - tempmail.de + - shitmail.de + - yopmail.com + - yandex.com + spam_domains: + - 7x.cz + - allemaling.com + - bk.ru + - brmailing.com + - businessmailsystem.com + - checknowmail.com + - colde-mail.com + - consimail.com + - continumail.com + - contumail.com + - emailber.com + - grow-mail.com + - inbox.ru + - inemaling.com + - inmailing.com + - itemailing.com + - itmailing.com + - kod-emailing.com + - kod-maling.com + - kodemailing.com + - kodmailing.com + - left-mail.com + - list.ru + - mabermail.com + - mailphar.com + - out-email.com + - semi-mile.com + - sin-mailing.com + - sinemailing.com + - sinmailing.com + - takmailing.com + - themailemail.com + - visitinbox.com + - webgarden.com + - webgarden.cz + - wgz.cz + - wowmailing.com + suspicious_user_agents: + - curl + suspicious_ip_ranges: + - 127.0.0.0/8 + spam_name_formats: + - !ruby/regexp '/\A.*bitcoin.*\z/i' + - !ruby/regexp '/\A.*currency.*\z/i' + - !ruby/regexp '/\A.*support.*\z/i' + - !ruby/regexp '/\A.*customer.*service.*\z/i' + - !ruby/regexp '/\A.*customer.*care.*\z/i' + - !ruby/regexp '/\A.*buy.*online.*\z/i' + - !ruby/regexp '/\A.*real.*estate.*\z/i' + - !ruby/regexp '/\A.*web.*design.*\z/i' + - !ruby/regexp '/\A.*Mac\sDesktop.*\z/i' + - !ruby/regexp '/\A.*Inc\z/' + - !ruby/regexp '/\A.*LLC\z/' + - !ruby/regexp '/\A.*spyware.*\z/i' + - !ruby/regexp '/\A.*malware.*\z/i' + - !ruby/regexp '/\A.*CRM.*\z/' + - !ruby/regexp '/.*(http|https):\/\/.*/i' diff --git a/lib/controller_patches.rb b/lib/controller_patches.rb index 6d796b066..46ec145a5 100644 --- a/lib/controller_patches.rb +++ b/lib/controller_patches.rb @@ -6,6 +6,10 @@ # See http://stackoverflow.com/questions/7072758/plugin-not-reloading-in-development-mode # Rails.configuration.to_prepare do + HelpController.class_eval do + def terms; end + end +end # Example adding an instance variable to the frontpage controller # GeneralController.class_eval do # def mycontroller @@ -17,4 +21,10 @@ # def help_out # end # end -end + # Rails.application.routes.draw do + # brand new controller example + # get '/mycontroller' => 'general#mycontroller' + # Additional help page example + # get '/help/terms' => 'help#terms' + # end +# end diff --git a/lib/views/alaveteli_pro/info_requests/_new_request_advice.html.erb b/lib/views/alaveteli_pro/info_requests/_new_request_advice.html.erb new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/lib/views/alaveteli_pro/info_requests/_new_request_advice.html.erb @@ -0,0 +1 @@ + diff --git a/lib/views/alaveteli_pro/info_requests/_new_request_advice.sv.html.erb b/lib/views/alaveteli_pro/info_requests/_new_request_advice.sv.html.erb new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/lib/views/alaveteli_pro/info_requests/_new_request_advice.sv.html.erb @@ -0,0 +1 @@ + diff --git a/lib/views/alaveteli_pro/pages/_legal.html.erb b/lib/views/alaveteli_pro/pages/_legal.html.erb new file mode 100644 index 000000000..c12d8d358 --- /dev/null +++ b/lib/views/alaveteli_pro/pages/_legal.html.erb @@ -0,0 +1,11 @@ +
+

+ Introduction +

+ +

+ Handlingar.se does not have terms and conditions in English at the moment. Contact the Handlingar-team for more information. +

+ + +
diff --git a/lib/views/alaveteli_pro/pages/_legal.sv.html.erb b/lib/views/alaveteli_pro/pages/_legal.sv.html.erb new file mode 100644 index 000000000..60c337fe7 --- /dev/null +++ b/lib/views/alaveteli_pro/pages/_legal.sv.html.erb @@ -0,0 +1,370 @@ +
+

+ 1. Inledning +

+ +

+Handlingar.se (“Webbplatsen”/"Webbplatsens") är en plattform för att göra förfrågningar om allmänna handlingar offentligt. Handlingar Pro är en tjänst för att underlätta hanteringen av allmänna handlingar, tjänsten drivs av företaget Digital Openers AB som nämns i punkt 2 i dessa Allmänna Villkor. + +

+ +

+Genom att använda eller skaffa ett Handlingar Pro-konto accepterar du dessa Allmänna Villkor. Vänligen läs igenom villkoren innan du startar eller betalar för tjänsten. +

+ + +
+ +
+

+ 2. Parter +

+ +

+ Avtalet inklusive dessa Allmänna villkor gäller mellan Digital Openers AB, organisationsnummer 559298-6409, (”Digital Openers”) och det företag eller privatperson som börjar använda Digital Openers tjänster (”Kunden”/”Kundens”/”Kund”). + +

+
+ +
+

+3. Avtalet +

+ +

+ Avtalet mellan Kund och Digital Openers utgörs av dessa allmänna villkor. +

+ +

+Dessa Allmänna villkor är juridiskt bindande och gäller när Kunden börjar använda någon av Digital Openers tjänster. I och med att Kunden godkänner de Allmänna villkoren bekräftar Kunden att ni har läst och förstått innebörden av dessa. + +

+ +

+ Digital Openers förbehåller sig rätten att ensidigt ändra dessa Allmänna villkor när som helst och de kommer att förändras över tiden. Det är Kundens skyldighet att löpande se till att Kunden tar del av de gällande Allmänna villkoren som finns tillgängliga på https://handlingar.se. Uppdaterade Allmänna Villkor träder i kraft direkt när de publiceras på Webbplatsen. På Webbplatsen https://handlingar.se återfinns även Webbplatsens integritetspolicy som förtydligar hur personuppgifter hanteras inom Digital Openers verksamhet. + +

+
+ +
+

+4. Tjänsten +

+ +

+Digital Openers tillhandahåller olika typer av Tjänster, dels mjukvara, dels övriga tjänster, utbildning och konsultation (gemensamt "Tjänster"/”Tjänsten”/”Tjänsterna”). Nedan beskrivs typerna av Tjänster. +

+ +

+ 4.1 Mjukvarutjänst +

+ + +

+ Mjukvarutjänsten med namn Handlingar Pro och beskrivning av den är tillgänglig via Webbplatsen eller, om Digital Openers så anger, via andra webbadresser. Mjukvarutjänsten kan vara kostnadsfri, eller avgiftsbelagd, samt antingen användas tillsammans med eller utan konsultation och utbildning. + +

+ +

+ Digital Openers har rätt att, och kommer att lägga till, ändra och ta bort funktionalitet utan att först meddela Kunden. Om en förändring skulle vara till uppenbar och väsentlig nackdel för kunden, kommer kunden att informeras om ändringen i förväg med e-post. För det fall att Kunden inte accepterar de ändrade Allmänna Villkoren har Kunden rätt att säga upp Avtalet med omedelbar verkan. Uppsägning ska ske enligt punkt 9 i dessa Allmänna villkor. + +

+ +

+ Kunden är medveten om detta och accepterar att inte göra Kunden beroende av Tjänstens funktionalitet, tillgänglighet eller på något annat sätt som skulle kunna innebära att Kunden riskerar att inte kunna utföra sina åtaganden enligt lagstiftning, myndighetskrav, tredje man eller någon annan part. +

+ +

+ 4.2 Användning av Tjänsten +

+ +

+ I och med att Kunden har godkänt dessa Allmänna Villkor är Kunden medveten om att Tjänsten kan komma att förändras och inte längre uppfylla de krav eller önskemål som Kunden har och som tidigare kanske uppfylldes. Kunden har ingen rätt till ersättning om Tjänsten ändras, eller i Kundens tycke försämras eller av annan anledning inte uppfyller Kundens krav. + +

+ +

+ 4.3 Övriga tjänster + +

+ +

+ Digital Openers erbjuder också konsultation och utbildningstjänster såsom beskrivning av den är tillgänglig via Webbplatsen eller, om Digital Openers så anger, via andra webbadresser. + +

+ +

+ 4.4 Funktioner som innefattas i tjänsten +

+ +

+ Definitionen av de funktioner som innefattas i tjänsten finns beskrivet under “Pro”-sektionen på Webbplatsen. Denna definition kan över tid förändras. + +

+ +

+ Digital Openers har tolkningsföreträde när det gäller en funktions innebörd. Kunden får inte tolka vad en funktion ska uppfylla och sedan ställa krav utifrån egen tolkning av funktionens innebörd. + +

+ + + +
+

+5. Kundens ansvar +

+ +

+ Utöver vad som framgår i övrigt enligt dessa Allmänna villkor ansvarar Kunden för följande: + +

+ +

+ 5.1 Säkerhetskopiering av data + +

+ +

+ Kunden ska ansvara för säkerhetskopiering av sin data om inte annat överenskommits. + + +

+ +

+ Digital Openers jobbar för att förhindra förlust av data på Webbplatsen, och gör regelbunden säkerhetskopiering, men kan inte garantera att data inte försvinner. + + +

+ + +

+ 5.2 Teknisk standard + + +

+ +

+ Digital Openers ansvarar inte för eventuella brister och begränsningar i Kundens operativsystem och datormiljö. + + +

+ +

+ 5.3 Säkerhet av konto + + +

+ +

+ Kunden är ansvarig för aktivitetet gällande Kundens konto, inklusive att obehöriga inte får tillgång till Kundens konto. Kunden ska se till att lösenord är säkra från obehöriga företrädesvis med säker lösenordshanterare och Digital Openers ansvarar inte för Kundens brist på att hålla lösenordet säkert. + +

+ +

+ Kunden ska meddela Digital Openers om Kunden har märkt att en obehörig person använder samma konto. + + +

+ +
+ +
+

+6. Digital Openers ansvar och ansvarsbegränsning + +

+ +

+Digital Openers ersätter endast direkta skador som åsamkas Kunden genom grov vårdslöshet från Digital Openers sida. Ersättning utgår alltså inte för indirekt skada, såsom t.ex. förlorad vinst, minskad produktion eller hinder att uppfylla förpliktelse mot tredje man. +

+ +

+Digital Openers ersättningsansvar är begränsat till under avtalsperioden sammanlagda avgifter för berörd Tjänst, dock maximalt totalt ett prisbasbelopp. +

+ +

+Digital Openers tar inte ansvar för Kundens förlust av data oavsett hur denna förlust uppstått. +

+ +

+ Digital Openers ansvarar inte för skada som uppkommer på Kundens hårdvara, Kundens data eller annan information som förmedlas vid användning av Tjänsten. Digital Openers ansvarar inte för fel i tredjepartsprodukter. Inte heller ansvarar Digital Openers för skada orsakad av datavirus (eller motsvarande), försening, förlust eller förvanskning av Kundens data eller för Kundens eventuella ersättningsskyldighet gentemot tredje man. + +

+
+ +
+

+7. Force majeure +

+ +

+ Digital Openers är befriad från skyldighet att ersätta skada eller att fullgöra viss förpliktelse enligt Avtalet, om skadan eller underlåtenheten har sin grund i omständighet utanför Digital Openers kontroll och omständigheten förhindrar, avsevärt försvårar eller försenar fullgörande av sådan förpliktelse. Detsamma gäller om underlåtenheten har sin grund i försenade leveranser eller störningar från Digital Openers underleverantör som orsakats av hindrande omständigheter. Omständighet kan anses bl.a. myndighets åtgärd eller underlåtenhet, nytillkommen eller ändrad lagstiftning, myndighetsbestämmelse, myndighetsingripande, fel, brist eller dröjsmål i energiförsörjningen, arbetskonflikt, blockad, krig, upplopp, sabotage, extrema väderförhållanden, blixtnedslag, brand, explosion, översvämning, naturkatastrof, olyckshändelse eller andra omständigheter som Digital Openers inte rimligen kunnat råda över eller förutse. Så snart hindret för fullgörande upphör ska åtagandet fullgöras på avtalat sätt. + +

+ + +
+ +
+

+ 8. Priser, debitering och betalningsvillkor + +

+

+ 8.1 Priser och kostnader + +

+ +

+ Tjänstens priser framgår av vid var tid gällande prislista som finns tillgänglig på Webbplatsen. + +

+ +

+ 8.2 Betalningsvillkor +

+ +

+ Betalning ska ske senast 20 dagar efter fakturadatum. +

+ +

+ I de fall betalning är försenad har Digital Openers rätt att ta ut dröjsmålsränta enligt räntelagen (1975:635). +

+ +

+ Om Kunden vill bestrida en faktura ska detta göras via e-post eller post, inom trettio (30) dagar från fakturadatum. +

+ +

+ 8.3 Debiteringsperiod +

+ +

+ Debitering börjar när Tjänsten kan anses vara aktiverad eller då Kunden beställt Tjänsten. En debiteringsmånad följer inte hela kalendermånader utan inleds när en Tjänst aktiveras. +

+ +

+ Webbplatsen använder Stripe för betalningar. Kunden kan läsa om Stripes användningsvillkor och sekretesspolicy här: https://stripe.com/gb/privacy. +

+ +

+ 8.4 Ändring av priser +

+ +

+ Digital Openers har rätt att från månad till månad ändra priser för sina Tjänster. Ändrade priser ska meddelas på Webbplatsen eller genom epost till Kund. +

+ +

+ Ändring av priserna börjar gälla en månad efter att Digital Openers meddelat Kunden eller vid den senare tidpunkt som Digital Openers anger. +

+ +

+ 8.5 Uppsägning pga av ändring av prismodell eller priser +

+ +

+ Kunden har alltid rätt att vid ändring av prismodell eller prishöjning säga upp Avtalet med omedelbar verkan. +

+ + +
+ +
+

+ 9. Uppsägning +

+ +

+ 9.1 Kundens uppsägning + +

+ +

+Kunden har rätt att närsomhelst säga upp Avtalet eller del av Tjänsten/Tjänsterna. Kunden har inte rätt till någon återbetalning vid uppsägning. När Kunden har sagt upp Tjänsten händer följande: +

+ +

+

+

+ +

+ 9.2 Skriftlig uppsägning + +

+ +

+ Digital Openers säger upp Tjänsten/Tjänsterna eller Avtalet skriftligen till den e-post som kunden som privatperson angivit eller till den adress som Kundens företag har registrerad hos Bolagsverket. +

+ +

+ Kund säger upp Tjänsten/Tjänsterna eller Avtalet genom att maila pro(at)handlingar.nu, ange vilket organisationsnummer eller/samt e-post/mobilnummer som är kopplat till Tjänst/Tjänsterna eller Avtalet. +

+ +

+ För att en uppsägning ska anses vara genomförd så behöver Digital Openers bekräfta identiteten bakom uppsägningen. Digital Openers kommer kontakta Kunden via den e-post eller mobilnummer som Kunden angivit i den tjänst/tjänster som är aktuell för uppsägning, för att bekräfta att Kunden verkligen vill säga upp Tjänst/Tjänsterna eller Avtalet. +

+ +

+ 9.3 Förtida uppsägning +

+ +

+ Digital Openers äger rätt att skriftligen säga upp Avtalet till omedelbart upphörande tillhörande Kunden om: + +

+ +

+

+

+ + + + +
+ + +
+

+ 10. Tillämplig lag och tvistelösning +

+ +

+ Avtalet (inklusive dessa Allmänna villkor) ska regleras av, tolkas och fullgöras i enlighet med svensk lag. Eventuella tvister ska lösas i svensk domstol med Stockholms tingsrätt som första instans. +

+
+ diff --git a/lib/views/alaveteli_pro/pages/legal.html.erb b/lib/views/alaveteli_pro/pages/legal.html.erb new file mode 100644 index 000000000..a50a2261c --- /dev/null +++ b/lib/views/alaveteli_pro/pages/legal.html.erb @@ -0,0 +1,16 @@ +
+

Terms and conditions

+
+
+
+
    +
  • + <%= link_to "Introduction", '#introduction' %> +
  • + +
+
+
+
+ <%= render partial: 'legal' %> +
diff --git a/lib/views/alaveteli_pro/pages/legal.sv.html.erb b/lib/views/alaveteli_pro/pages/legal.sv.html.erb new file mode 100644 index 000000000..0abcbf1ca --- /dev/null +++ b/lib/views/alaveteli_pro/pages/legal.sv.html.erb @@ -0,0 +1,88 @@ +
+

Allmänna Villkor

+
+
+
+
    +
  • + <%= link_to "Inledning", '#introduction' %> +
  • +
  • + <%= link_to "Parter", "#parties" %> +
  • +
  • + <%= link_to "Avtalet", "#contract" %> +
  • +
  • + <%= link_to "Tjänsten ", "#service" %> +
  • +
  • + <%= link_to "Mjukvarutjänst ", "#service" %> +
  • +
  • + <%= link_to "Användning av Tjänsten ", "#service" %> +
  • +
  • + <%= link_to "Övriga tjänster ", "#service" %> +
  • +
  • + <%= link_to "Funktioner som innefattas i tjänsten ", "#service" %> +
  • +
  • + <%= link_to "Kundens ansvar ", "#responsibility" %> +
  • +
  • + <%= link_to "Säkerhetskopiering av data ", "#responsibility" %> +
  • +
  • + <%= link_to "Teknisk standard", "#responsibility" %> +
  • +
  • + <%= link_to "Säkerhet av konto", "#responsibility" %> +
  • +
  • + <%= link_to "Digital Openers ansvar och ansvarsbegränsning ", "#liability" %> +
  • +
  • + <%= link_to "Force majeure ", "#forcemajeure" %> +
  • +
  • + <%= link_to "Priser, debitering och betalningsvillkor ", "#price" %> +
  • +
  • + <%= link_to "Priser och kostnader ", "#price" %> +
  • +
  • + <%= link_to "Betalningsvillkor", "#price" %> +
  • +
  • + <%= link_to "Debiteringsperiod ", "#price" %> +
  • +
  • + <%= link_to "Ändring av priser ", "#price" %> +
  • +
  • + <%= link_to "Uppsägning pga av ändring av prismodell eller priser", "#price" %> +
  • +
  • + <%= link_to "Uppsägning ", "#termination" %> +
  • +
  • + <%= link_to "Kundens uppsägning ", "#termination" %> +
  • +
  • + <%= link_to "Skriftlig uppsägning ", "#termination" %> +
  • +
  • + <%= link_to "Förtida uppsägning ", "#termination" %> +
  • +
  • + <%= link_to "Tillämplig lag och tvistelösning ", "#law" %> +
  • + +
+
+
+
+ <%= render partial: 'legal' %> +
diff --git a/lib/views/alaveteli_pro/plans/index.html.erb b/lib/views/alaveteli_pro/plans/index.html.erb new file mode 100644 index 000000000..00f7dd913 --- /dev/null +++ b/lib/views/alaveteli_pro/plans/index.html.erb @@ -0,0 +1,199 @@ +

<%= _('Pricing') %>

+ +
+
+ +
+

<%= _('Professional') %>

+

<%= _('For journalists, academics and power users') %>

+

+ <% if @plan.interval == 'month' %> + <%= _('{{monthly_price}} ' \ + 'per user, per month', + monthly_price: format_currency( + @plan.amount_with_tax, + no_cents_if_whole: true)) %> + <% elsif @plan.interval == 'year' %> + <%= _('{{yearly_price}} ' \ + 'per user, per year', + yearly_price: format_currency( + @plan.amount_with_tax, + no_cents_if_whole: true)) %> + <% end %> +

+

<%= _('Introductory Pricing') %>

+
+ +
+

<%= _('Featuring') %>

+
    +
  • <%= _('Public requests for information') %>
  • +
  • <%= _('Private requests for information') %>
  • +
  • <%= _('Dashboard and workflow features') %>
  • +
  • <%= _('Friendly support') %>
  • +
+ <%= link_to _('Sign up'), plan_path('pro'), :class => 'button button-pop' %> +
+ +
+
+ +

+ <%= _('Don’t worry – our free accounts are still available and always will be.', + signup_link: signin_path) %> +

+ +
+

<%= _('New to Professional – Batch') %>

+

<%= _('Make a request to multiple authorities and manage the responses.') %>

+
+ +
+
+

<%= @pro_site_name.html_safe %>

+

<%= _('An all-in-one FOI toolkit for journalists, activists and campaigners') %>

+
+
+
+
    +
  • <%= _('Keep requests and responses private while you work on your story') %>
  • +
  • <%= _('A powerful private dashboard: track and manage your FOI projects') %>
  • +
  • <%= _('A super-smart to-do list: follow the progress of your requests') %>
  • +
  • <%= _('Action alerts: know when it’s time to take the next step') %>
  • +
  • <%= _('Daily summary emails to keep your inbox clean') %>
  • +
  • <%= _('Save as draft to get back to it later') %>
  • +
+ + +
+
+
+
+
+

<%= _('Plus, all the power of {{site_name}}', site_name: site_name) %>

+

<%= _('{{pro_site_name}} runs on the UK’s ' \ + 'best-known FOI service', + pro_site_name: @pro_site_name.html_safe) %>

+
+
+
+
    +
  • <%= _('Up-to-date database of ' \ + 'contact details for {{authority_count}} authorities', + authority_count: PublicBody.is_requestable.count) %>
  • +
  • <%= _('A searchable archive of Freedom of Information requests') %>
  • +
  • <%= _('Delivery verification for proof of receipt') %>
  • +
  • <%= _('A permanent, searchable, public record of your request and the responses') %>
  • +
  • <%= _('Streamlined process for requesting internal reviews') %>
  • +
+
+
+
+
+
+

<%= _('Batch') %>

+
+
+ + +
+
    +
  • <%= _('Make a request to multiple authorities: select authorities at the click of a button') %>
  • +
  • <%= _('Manage large volumes of responses: easily keep track of the status of each request') %>
  • +
  • <%= _('Get regular updates as the responses come in — without overwhelming your inbox') %>
  • +
+ + + + + <%= link_to _('Sign up'), plan_path('pro'), :class => 'button' %> +
+
+
+ +<% if feature_enabled?(:pro_pricing_testimonials) %> +
+

What people say about WhatDoTheyKnowpro

+ +
+<% end %> + +<% if feature_enabled?(:pro_pricing_faqs) %> +
+

Frequently Asked Questions

+
+
How do I cancel my account?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
What does my subscription fee go towards?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
How do I change my payment details?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
I’ve got a vouncher code
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+
+
+<% end %> diff --git a/lib/views/alaveteli_pro/plans/index.sv.html.erb b/lib/views/alaveteli_pro/plans/index.sv.html.erb new file mode 100644 index 000000000..00f7dd913 --- /dev/null +++ b/lib/views/alaveteli_pro/plans/index.sv.html.erb @@ -0,0 +1,199 @@ +

<%= _('Pricing') %>

+ +
+
+ +
+

<%= _('Professional') %>

+

<%= _('For journalists, academics and power users') %>

+

+ <% if @plan.interval == 'month' %> + <%= _('{{monthly_price}} ' \ + 'per user, per month', + monthly_price: format_currency( + @plan.amount_with_tax, + no_cents_if_whole: true)) %> + <% elsif @plan.interval == 'year' %> + <%= _('{{yearly_price}} ' \ + 'per user, per year', + yearly_price: format_currency( + @plan.amount_with_tax, + no_cents_if_whole: true)) %> + <% end %> +

+

<%= _('Introductory Pricing') %>

+
+ +
+

<%= _('Featuring') %>

+
    +
  • <%= _('Public requests for information') %>
  • +
  • <%= _('Private requests for information') %>
  • +
  • <%= _('Dashboard and workflow features') %>
  • +
  • <%= _('Friendly support') %>
  • +
+ <%= link_to _('Sign up'), plan_path('pro'), :class => 'button button-pop' %> +
+ +
+
+ +

+ <%= _('Don’t worry – our free accounts are still available and always will be.', + signup_link: signin_path) %> +

+ +
+

<%= _('New to Professional – Batch') %>

+

<%= _('Make a request to multiple authorities and manage the responses.') %>

+
+ +
+
+

<%= @pro_site_name.html_safe %>

+

<%= _('An all-in-one FOI toolkit for journalists, activists and campaigners') %>

+
+
+
+
    +
  • <%= _('Keep requests and responses private while you work on your story') %>
  • +
  • <%= _('A powerful private dashboard: track and manage your FOI projects') %>
  • +
  • <%= _('A super-smart to-do list: follow the progress of your requests') %>
  • +
  • <%= _('Action alerts: know when it’s time to take the next step') %>
  • +
  • <%= _('Daily summary emails to keep your inbox clean') %>
  • +
  • <%= _('Save as draft to get back to it later') %>
  • +
+ + +
+
+
+
+
+

<%= _('Plus, all the power of {{site_name}}', site_name: site_name) %>

+

<%= _('{{pro_site_name}} runs on the UK’s ' \ + 'best-known FOI service', + pro_site_name: @pro_site_name.html_safe) %>

+
+
+
+
    +
  • <%= _('Up-to-date database of ' \ + 'contact details for {{authority_count}} authorities', + authority_count: PublicBody.is_requestable.count) %>
  • +
  • <%= _('A searchable archive of Freedom of Information requests') %>
  • +
  • <%= _('Delivery verification for proof of receipt') %>
  • +
  • <%= _('A permanent, searchable, public record of your request and the responses') %>
  • +
  • <%= _('Streamlined process for requesting internal reviews') %>
  • +
+
+
+
+
+
+

<%= _('Batch') %>

+
+
+ + +
+
    +
  • <%= _('Make a request to multiple authorities: select authorities at the click of a button') %>
  • +
  • <%= _('Manage large volumes of responses: easily keep track of the status of each request') %>
  • +
  • <%= _('Get regular updates as the responses come in — without overwhelming your inbox') %>
  • +
+ + + + + <%= link_to _('Sign up'), plan_path('pro'), :class => 'button' %> +
+
+
+ +<% if feature_enabled?(:pro_pricing_testimonials) %> +
+

What people say about WhatDoTheyKnowpro

+ +
+<% end %> + +<% if feature_enabled?(:pro_pricing_faqs) %> +
+

Frequently Asked Questions

+
+
How do I cancel my account?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
What does my subscription fee go towards?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
How do I change my payment details?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
I’ve got a vouncher code
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+
+
+<% end %> diff --git a/lib/views/alaveteli_pro/plans/show.html.erb b/lib/views/alaveteli_pro/plans/show.html.erb new file mode 100644 index 000000000..b450621dc --- /dev/null +++ b/lib/views/alaveteli_pro/plans/show.html.erb @@ -0,0 +1,113 @@ +<% content_for :javascript_head do %> + +<% end %> + +<% content_for :javascript do %> + <%= javascript_tag do %> + AlaveteliPro.stripe_publishable_key = '<%= AlaveteliConfiguration.stripe_publishable_key %>'; + AlaveteliPro.stripe_local = '<%= stripe_locale %>'; + <% end %> + + <%= javascript_include_tag 'alaveteli_pro/stripe' %> +<% end %> + +
+ +
+
+

<%= _('Upgrade account') %>

+
+
+ +
+
+
+
+
+ <%= form_tag(subscriptions_path, id: 'js-stripe-subscription-form', class: 'stripe-form') do %> +
+

<%= _('Selected plan') %>

+
+
+ <%= @plan.name %> +
+
+ <%= billing_frequency(@plan.interval) %> +
+ +
+
+ +
+
+ + <%= text_field_tag 'coupon_code', params[:coupon_code] %> +
+
+ +
+
+
+ +
+

<%= _('Terms and conditions') %>

+
+
+ <%= render partial: 'alaveteli_pro/pages/legal' %> +
+
+
+ +
+
+ +
+ <%= hidden_field_tag 'plan_id', @plan.id %> + <%= submit_tag _('Subscribe'), id: 'js-stripe-submit', disabled: true, data: { disable_with: 'Processing...' } %> + <%= link_to _('Cancel'), pro_plans_path, class: 'settings__cancel-button' %> +

+ + +
+ <% end %> + + <% if feature_enabled?(:pro_pricing_faqs) %> +
+
+

Frequently Asked Questions

+
+
How do I cancel my account?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
What does my subscription fee go towards?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
How do I change my payment details?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
I’ve got a voucher code
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+
+
+
+ <% end %> + +
+
+
+ +
diff --git a/lib/views/alaveteli_pro/plans/show.sv.html.erb b/lib/views/alaveteli_pro/plans/show.sv.html.erb new file mode 100644 index 000000000..b450621dc --- /dev/null +++ b/lib/views/alaveteli_pro/plans/show.sv.html.erb @@ -0,0 +1,113 @@ +<% content_for :javascript_head do %> + +<% end %> + +<% content_for :javascript do %> + <%= javascript_tag do %> + AlaveteliPro.stripe_publishable_key = '<%= AlaveteliConfiguration.stripe_publishable_key %>'; + AlaveteliPro.stripe_local = '<%= stripe_locale %>'; + <% end %> + + <%= javascript_include_tag 'alaveteli_pro/stripe' %> +<% end %> + +
+ +
+
+

<%= _('Upgrade account') %>

+
+
+ +
+
+
+
+
+ <%= form_tag(subscriptions_path, id: 'js-stripe-subscription-form', class: 'stripe-form') do %> +
+

<%= _('Selected plan') %>

+
+
+ <%= @plan.name %> +
+
+ <%= billing_frequency(@plan.interval) %> +
+ +
+
+ +
+
+ + <%= text_field_tag 'coupon_code', params[:coupon_code] %> +
+
+ +
+
+
+ +
+

<%= _('Terms and conditions') %>

+
+
+ <%= render partial: 'alaveteli_pro/pages/legal' %> +
+
+
+ +
+
+ +
+ <%= hidden_field_tag 'plan_id', @plan.id %> + <%= submit_tag _('Subscribe'), id: 'js-stripe-submit', disabled: true, data: { disable_with: 'Processing...' } %> + <%= link_to _('Cancel'), pro_plans_path, class: 'settings__cancel-button' %> +

+ + +
+ <% end %> + + <% if feature_enabled?(:pro_pricing_faqs) %> +
+
+

Frequently Asked Questions

+
+
How do I cancel my account?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
What does my subscription fee go towards?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
How do I change my payment details?
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+ +
I’ve got a voucher code
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at porttitor orci, nec sollicitudin turpis. Donec vel nisl justo. Praesent blandit ex ut massa faucibus, cursus tincidunt dui consectetur. In suscipit lorem felis. Sed elementum, augue euismod dignissim vulputate, ligula elit blandit sem, non vehicula nisl turpis ultricies nisi. Integer accumsan luctus hendrerit.
+
+
+
+ <% end %> + +
+
+
+ +
diff --git a/lib/views/general/_before_head_end.html.erb b/lib/views/general/_before_head_end.html.erb index 7f33fa9eb..11e1f2710 100644 --- a/lib/views/general/_before_head_end.html.erb +++ b/lib/views/general/_before_head_end.html.erb @@ -1 +1,19 @@ - + + + + diff --git a/lib/views/general/_credits.html.erb b/lib/views/general/_credits.html.erb new file mode 100644 index 000000000..c89fc02c0 --- /dev/null +++ b/lib/views/general/_credits.html.erb @@ -0,0 +1,8 @@ +| + Privacy and cookies + | + + Run by a group of volunteers in Sweden, built by mySociety, powered by Alaveteli and its contributors... + and you! + | + Dedicated to the Freedom of the Press Act and the Principle of Public Access. diff --git a/lib/views/general/_credits.sv.html.erb b/lib/views/general/_credits.sv.html.erb new file mode 100644 index 000000000..1f303e496 --- /dev/null +++ b/lib/views/general/_credits.sv.html.erb @@ -0,0 +1,8 @@ +| + Integritet och kakor + | + + Drivs av en grupp volontärer i Sverige, byggt av mySociety och stärkt av Alaveteli och dess bidragsgivare... + och dig! + | + Dedikerad till Tryckfrihetsförordningen och Offentlighetsprincipen. diff --git a/lib/views/general/_frontpage_blog.html.erb b/lib/views/general/_frontpage_blog.html.erb new file mode 100644 index 000000000..a047c3fda --- /dev/null +++ b/lib/views/general/_frontpage_blog.html.erb @@ -0,0 +1,14 @@ +<% if blog_posts_for_frontpage.any? %> +
+

<%= _('Latest news and campaigns') %>

+ + <% blog_posts_for_frontpage.each do |post| %> +
+

<%= link_to post.title, post.url %>

+

<%= raw post.description %>

+
+ <% end %> + + <%= link_to _('See all →'), blog_path, class: 'button-secondary' %> +
+<% end %> \ No newline at end of file diff --git a/lib/views/general/_nav_items.html.erb b/lib/views/general/_nav_items.html.erb new file mode 100644 index 000000000..820287124 --- /dev/null +++ b/lib/views/general/_nav_items.html.erb @@ -0,0 +1,21 @@ +
  • + <%= link_to _("Make a request"), select_authority_path, :id => 'make-request-link' %> +
  • + +
  • + <%= link_to _("Browse requests"), request_list_successful_path %> +
  • + +
  • + <%= link_to _("View authorities"), list_public_bodies_default_path %> +
  • + +
  • <%= link_to _("Pro"), account_request_index_path %>
  • + +
  • <%= link_to _("Services"), 'https://about.handlingar.se/' %>
  • + +
  • <%= link_to _("Read blog"), blog_path %>
  • + +
  • + <%= link_to _("Help"), help_about_path %> +
  • diff --git a/lib/views/general/_orglink.html.erb b/lib/views/general/_orglink.html.erb new file mode 100644 index 000000000..b22d12359 --- /dev/null +++ b/lib/views/general/_orglink.html.erb @@ -0,0 +1 @@ +<%= link_to image_tag('old-logo.png', :alt => 'Alaveteli logo'), frontpage_url, :id=>'logo' %> diff --git a/lib/views/general/_popup_banner.sv.html.erb b/lib/views/general/_popup_banner.sv.html.erb new file mode 100644 index 000000000..f532671c7 --- /dev/null +++ b/lib/views/general/_popup_banner.sv.html.erb @@ -0,0 +1,2 @@ +<%#- Handlingar.se är för närvarande i Alpha! Vänligen kontakta oss för konstruktiv feedback på förbättringar!-%> + diff --git a/lib/views/general/exception_caught.html.erb b/lib/views/general/exception_caught.html.erb new file mode 100644 index 000000000..459a0009c --- /dev/null +++ b/lib/views/general/exception_caught.html.erb @@ -0,0 +1,26 @@ +
    +<% if @status == 404 %> +

    <%= _("Sorry, we couldn't find that page") %>

    + +

    <%= _("The page doesn't exist. Things you can try now:")%>

    + + + + <% if feature_enabled? :alaveteli_pro %> + <%= _('Please note that in some cases publication of requests and ' \ + 'responses will be delayed.') %> + <% end %> +<% else %> +

    <%= _("Sorry, there was a problem processing this page") %>

    +

    <%= _('You have found a bug. Please contact us to tell us about the problem', :contact_url => help_contact_path) %>

    + +<% end %> +
    diff --git a/lib/views/general/exception_caught.sv.html.erb b/lib/views/general/exception_caught.sv.html.erb new file mode 100644 index 000000000..c7f618bff --- /dev/null +++ b/lib/views/general/exception_caught.sv.html.erb @@ -0,0 +1,26 @@ +
    +<% if @status == 404 %> +

    <%= _("Ursäkta, vi kunde inte hitta den sidan") %>

    + +

    <%= _("Sidan existerar inte. Saker du kan pröva nu:")%>

    + + + + <% if feature_enabled? :alaveteli_pro %> + <%= _('Vänligen notera att i vissa fall kommer publiceringar av förfrågningar och ' \ + 'svar bli fördröjda.') %> + <% end %> +<% else %> +

    <%= _("Ursäkta, det var ett problem med att ladda denna sida") %>

    +

    <%= _('Du har hittat en bugg. Vänligen kontakta oss för att berätta om problemet', :contact_url => help_contact_path) %>

    + +<% end %> +
    diff --git a/lib/views/general/mycontroller.html.erb b/lib/views/general/mycontroller.html.erb new file mode 100644 index 000000000..ad642d3c7 --- /dev/null +++ b/lib/views/general/mycontroller.html.erb @@ -0,0 +1,7 @@ +<% @title = "My new controller" %> + +

    My new controller

    + +

    This is a view of a controller that does almost nothing, except output the words <%= @say_something %>

    + + diff --git a/lib/views/help/_sidebar.html.erb b/lib/views/help/_sidebar.en.html.erb similarity index 93% rename from lib/views/help/_sidebar.html.erb rename to lib/views/help/_sidebar.en.html.erb index 29da36ada..7c578b4f2 100644 --- a/lib/views/help/_sidebar.html.erb +++ b/lib/views/help/_sidebar.en.html.erb @@ -3,12 +3,16 @@ \ No newline at end of file + diff --git a/lib/views/help/unhappy.sv.html.erb b/lib/views/help/unhappy.sv.html.erb new file mode 100644 index 000000000..f0db5b27b --- /dev/null +++ b/lib/views/help/unhappy.sv.html.erb @@ -0,0 +1,92 @@ +<% @title = "Missnöjd över en begäran om allmän handling?" %> + + +<% if !@info_request.nil? %> +

    Missnöjd över svaret du fick på din begäran om allmän handling '<%=request_link(@info_request) %>'? +

    +<% else %> +

    Missnöjd över svaret du fick?

    +<% end %> + +

    Guide kommer snart! Innan dess rekommenderar vi att skriva din fråga på Öppenhetsforum som finns + här.

    + + +<% @title = "Missnöjd över en fråga och begäran om allmän handling?" %> + + +<% if @info_request %> +

    Missnöjd över svaret du fick på din begäran om allmän handling '<%=request_link(@info_request) %>'? +

    +<% else %> +

    Missnöjd över svaret du fick?

    +<% end %> + +

    Om ...

    + + + +

    ... du kan

    + +
      +
    1. Begära en intern granskning hos den offentliga myndigheten.
    2. +
    3. Se, "2. Göra en överklagan".
    4. +
    5. Hur som helst, använd också andra medel för att få svar på din fråga.
    6. +
    + +

    1.Begär en intern granskning#

    + +

    + <% if @info_request %> + <%= link_to "Begär en intern granskning", new_request_followup_path(:request_id => @info_request.id) + "?internal_review=1#followup", :class => 'link_button_green request-internal-review-action' %> och skriv sedan ett meddelande där du ber myndigheten att granska din begäran.. + <% else %> + Längst ner på den relevanta förfrågningssidan på <%= site_name %> välj + "begära en intern granskning". Skriv sedan ett meddelande som ber om en intern + granskning av din begäran. Du kanske vill inkludera en länk till hemsidan + för att klargöra vilken begäran du pratar om. + <% end %> +

    + +

    Interna recensioner bör vara snabba. Om en tar längre än 20 arbetsdagar + då ska myndigheten skriva och låta dig veta, och det borde aldrig ta + längre än 40 arbetsdagar (se denna + guiden). +Du får då antingen informationen + du begärde ursprungligen, eller så får du höra att granskningen upprätthåller + ursprungligt beslut. +

    + +

    2. Göra en överklagan #

    + +

    Guide kommer snart! Innan dess rekommenderar vi att skriva din fråga på Öppenhetsforumet som finns + här.

    + + +

    3. Använda andra medel för att få svar på din fråga. #

    + +

    Du kan försöka på andra sätt för att få svar din fråga eller granskning.

    + + + + <% end %> + diff --git a/lib/views/user/_signup.en.html.erb b/lib/views/user/_signup.en.html.erb new file mode 100644 index 000000000..3dbbe73d0 --- /dev/null +++ b/lib/views/user/_signup.en.html.erb @@ -0,0 +1,54 @@ +
    + <%= form_tag(signup_path, {:id => "signup_form"}) do %> + <%= foi_error_messages_for :user_signup %> + +

    + + <%= text_field 'user_signup', 'name', { :size => 20, :tabindex => 10, :autocomplete => "off" } %> +

    + +
    + <%= _('Your name will appear publicly ' \ + '(why?) on this website and in search ' \ + 'engines. Thinking of using a ' \ + 'pseudonym?', + :why_url => help_privacy_path(:anchor => "public_request").html_safe, + :help_url => help_privacy_path(:anchor => "real_name").html_safe) %> +
    + +

    + + <%= text_field 'user_signup', 'email', { :size => 20, :tabindex => 20 } %> +

    + +
    + <%= _('We will not reveal your email address to anybody unless ' \ + 'you or the law tell us to.', + :url => help_privacy_path) %> +
    + +

    + + <%= password_field 'user_signup', 'password', { :size => 15, :tabindex => 30, :autocomplete => "off" } %> +

    + +
    + <%= _('12 characters minimum. 72 characters maximum.') %> +
    + +

    + + <%= password_field 'user_signup', 'password_confirmation', { :size => 15, :tabindex => 40, :autocomplete => "off" } %> +

    + + <%= recaptcha_tags %> + +
    + <%= hidden_field_tag 'token', params[:token], {:id => 'signup_token' } %> + <%= hidden_field_tag :modal, params[:modal], {:id => 'signup_modal' } %> + <%= submit_tag _('Sign up'), + :tabindex => 50, + :data => { :disable_with => _("Sending...") } %> +
    + <% end %> +
    diff --git a/lib/views/user/_signup.sv.html.erb b/lib/views/user/_signup.sv.html.erb new file mode 100644 index 000000000..b1842334c --- /dev/null +++ b/lib/views/user/_signup.sv.html.erb @@ -0,0 +1,54 @@ +
    + <%= form_tag(signup_path, {:id => "signup_form"}) do %> + <%= foi_error_messages_for :user_signup %> + +

    + + <%= text_field 'user_signup', 'name', { :size => 20, :tabindex => 10, :autocomplete => "off" } %> +

    + +
    + <%= _('Ditt namn kommer att synas offentligt ' \ + '(why?) på denna webbsida och på ' \ + 'sökmotorer. Funderar du på att använda en ' \ + 'pseudonym?', + :why_url => help_privacy_path(:anchor => "public_request").html_safe, + :help_url => help_privacy_path(:anchor => "real_name").html_safe) %> +
    + +

    + + <%= text_field 'user_signup', 'email', { :size => 20, :tabindex => 20 } %> +

    + +
    + <%= _('Vi kommer inte att avslöja din e-postadress till någon såvida inte ' \ + 'du eller lagen säger till oss.', + :url => help_privacy_path) %> +
    + +

    + + <%= password_field 'user_signup', 'password', { :size => 15, :tabindex => 30, :autocomplete => "off" } %> +

    + +
    + <%= _('Minst 12 tecken. Maximalt 72 tecken.') %> +
    + +

    + + <%= password_field 'user_signup', 'password_confirmation', { :size => 15, :tabindex => 40, :autocomplete => "off" } %> +

    + + <%= recaptcha_tags %> + +
    + <%= hidden_field_tag 'token', params[:token], {:id => 'signup_token' } %> + <%= hidden_field_tag :modal, params[:modal], {:id => 'signup_modal' } %> + <%= submit_tag _('Sign up'), + :tabindex => 50, + :data => { :disable_with => _("Sending...") } %> +
    + <% end %> +
    diff --git a/locale-theme/sv/app.po b/locale-theme/sv/app.po new file mode 100644 index 000000000..1e69da2ba --- /dev/null +++ b/locale-theme/sv/app.po @@ -0,0 +1,10 @@ +# Your theme's locale files will override the core locale files. This +# is a good place to put both translations specific to your theme, and +# "translations" of the core English words (e.g. you might want to +# call FOI "RTI" throughougout, like this: +# +# msgid "Skapa och bläddra bland förfrågningar om allmänna handlingar enligt offentlighetsprincipen" +# msgstr "Skapa och hitta förfrågningar om allmänna handlingar" + +msgid "Services" +msgstr "Tjänster"