Add initfest views and assets

This commit is contained in:
Petko Bordjukov 2015-08-15 04:33:02 +03:00
parent f47cbd02a3
commit 6c9bdf0cec
30 changed files with 1346 additions and 19 deletions

View File

@ -1,4 +1,10 @@
module ApplicationHelper
def locale_collection
I18n.available_locales.map do |locale|
[t("locales.#{locale}"), locale]
end
end
def action_buttons(conference, record, actions = [:index, :show, :edit, :destroy])
klass = record.class
output = ''

View File

@ -5,6 +5,10 @@ Rails.application.config.assets.version = '1.0'
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
Rails.application.config.assets.paths << 'lib/initfest/assets/images'
Rails.application.config.assets.paths << 'lib/initfest/assets/javascripts'
Rails.application.config.assets.paths << 'lib/initfest/assets/stylesheets'
Rails.application.config.assets.precompile << /\.(?:png|jpg|jpeg|gif)\z/
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.

View File

@ -30,23 +30,13 @@ bg:
biography: Опишете се с няколко изречения, говорейки за себе си в трето лице :)
github: Потребителското Ви име в Github
twitter: Потребителското Ви име в Twitter
lecture:
title: Заглавието на лекцията Ви
subtitle: Подзаглавието на лекцията Ви (ако има такова)
track_id: Потокът от лекции, в който искате да попадне лекцията Ви
length: Продължителността на лекция може да бъде от 40 до 45 минути
language: Език, на който ще бъде водена лекцията
abstract: Резюме на лекцията, което да може да бъде прочетено от посетителите (1 абзац)
description: Подробно описание на лекцията (няколко абзаца)
event:
title: Заглавието на събитието Ви
subtitle: Подзаглавието на събитието Ви (ако има такова)
track: Потокът от лекции, в който искате да попадне събитието Ви
length: Продължителността на събитието може да бъде от 40 до 45 минути
language: Език, на който ще бъде водено събитието
abstract: Резюме на събитието, което да може да бъде прочетено от посетителите (1 абзац)
description: Подробно описание на събитието (няколко абзаца)
notes: Забележки, които искате да споделите с организаторския екип
agreement: Отбележете съгласни ли сте с това лекцията Ви да бъде записана и публикувана под лиценз CC-BY-ND (Creative Commons Attribution No Derivatives)
workshop:
title: Заглавието на уъркшопа Ви
subtitle: Подзаглавието на уъркшопа Ви (ако има такова)
track_id: Потокът от уъркшопи, в който искате да попадне уъркшопа Ви
length: Продължителността на всеки уъркшоп може да бъде от 30 до 120 минути
language: Език, на който ще бъде воден уъркшопа
abstract: Резюме на уъркшопа, което да може да бъде прочетено от посетителите (1 абзац)
description: Подробно описание на уъркшопа (няколко абзаца)
notes: Забележки, които искате да споделите с организаторския екип
agreement: Отбележете съгласни ли сте с това уъркшопът Ви да бъде записан и публикуван под лиценз CC-BY-ND (Creative Commons Attribution No Derivatives)
agreement: Отбележете съгласни ли сте с това събитието Ви да бъде записано и публикувано под лиценз CC-BY-ND (Creative Commons Attribution No Derivatives)

View File

@ -5,3 +5,77 @@ bg:
see_details: Повече информация
user:
info: Информация за потребител
welcome:
submit_event: "Предложи %{event_type}"
home_title: "%{conference} - зов за лектори"
what_we_ask: 'Бихме искали да получим предложенията Ви за лекции и уъркшопи, принадлежащи към следните категории до 30 септември 2014г.:'
license_notice: 'Имайте предвид, че презентациите ви впоследствие ще бъдат публикувани с лиценз CC-BY-ND (Creative Commons Attribution No derivatives).'
submit_event: Предложи %{event_type}
resend_instructions_header: Повторно изпращане на инструкции за потвърждаване на акаунт
resend_instructions_btn: Изпрати отново инструкциите
enter: Вход
login: Вход
registration: Регистрация
lostpass: Забравена парола?
did_not_get_confirmation: Не сте получили инструкции за потвърждение?
did_not_get_unlock: Не сте получили инструкции за отключване?
change_pass: Промяна на парола
send_lostpass_instructions: Изпрати ми инструкции за промяна на парола
login_data: Данни за вход в системата
login_with: "Влез с %{with}"
speaker_profile: Лекторски профил
please_fill_in_your_speaker_profile: Моля, попълнете данните в лекторския си профил.
expected_validation: "Очаква се потвърждение на: %{email}"
pass_update_hint1: Не попълвайте, ако не желаете да промените паролата си
pass_update_hint2: Попълнете, ако искате да промените паролата или e-mail адреса си.
update: Обнови
resend_unlock_instructions_title: Изпрати отново инструкции за отключване
edit_speaker_profile: Редакция на профил
edit_workshop: Редакция на уъркшоп
edit_title: "поток: „%{track}“, продължителност: %{len} мин."
abstract: Резюме
description: Описание
edit: Редактирай
new_workshop_title: Предложи нов уъркшоп
my_workshops: Моите предложения за уъркшопи
no_workshops_submitted: Все още не сте предложили уъркшоп
edit_talk: Редакция на лекция
submit_talk_header: Предложи нова лекция
my_talks: Моите предложения за лекции
no_talks_submitted: Все още не сте предложили лекция
hello: "Здравейте, %{name}"
account_locked: Акаунтът Ви беше заключен поради голям брой неуспешни опити за влизане в него.
click_to_unlock: 'Кликнете линкът отдолу, за да го отключите:'
welcome: "Добре дошли, %{name}"
confirm_by_clicking: Можете да потвърдите акаунта си, като кликнете на линка отдолу
someone_requested_passreset: Някой поиска линк за промяна на парола на акаунта Ви. Паролата може да бъде променена от линкът отдолу.
do_not_want_pass_reset1: Ако не желаете да смените паролата си, моля изтрийте това писмо.
do_not_want_pass_reset2: Паролата Ви няма да бъде променена, докато не кликнете горния линк и не въведете нова парола.
home: Начало
talks: Лекции
workshops: Уъркшопи
logout: Изход
of_motto: да споделим свободата
meta_data: "Език: %{language}, поток: „%{track}“, продължителност: %{length} мин."
suggestion_and_speaker_count: "%{suggestions} предложения от %{speakers} лектори"
lecture_was_successfully_confirmed: "Лекцията беше потвърдена успешно"
workshop_was_successfully_confirmed: "Уъркшопът беше потвърден успешно"

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,15 @@
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require_tree .

View File

@ -0,0 +1,137 @@
.alert-error {
color: red;
}
.input {
position: relative;
margin: 0 0 1em 0;
border-top: 0.1em dotted #999;
padding: 1em 0;
}
.input label {
font-size: 1em;
display: block;
width: 12em;
float: left;
}
.input {
input.string, input.email, input.password, select.select, input.numeric {
font-size: 1em;
width: 20em;
float: left;
}
textarea {
height: 15em;
width: 45em;
}
img {
padding: 5px;
display: block;
border: 1px solid #CCC;
background-color: #F1F1F1;
margin-left: 12em;
margin-bottom: 10px;
}
}
.input label.boolean {
margin-left: 12em;
}
.input .hint, .input .error {
display: block;
clear: both;
font-size: 0.75em;
font-style: italic;
width: 20em;
margin: 0 0 0 16em;
padding: 1em 0 0 0;
}
.input .error {
font-style: normal;
padding: 1em 0 0 0;
color: #F00;
}
.input .error::before {
content: "";
display: inline-block;
font-size: 2em;
margin: 0 0.2em 0 0;
transform: translate(0, 0.1em);
}
.btn {
display: block;
margin: 2em 0 0 13em;
}
/* styling of the button */
.btn {
background: #233e83;
padding: 0.4em 0.8em;
border-radius: 0.2em;
color: #FFF;
border: none;
border-bottom: 0.2em solid #7A95DC;
cursor: pointer;
transition: background 200ms, border 200ms, transform 200ms;
-webkit-transition: background 200ms, border 200ms, transform 200ms;
}
.btn:hover {
background: #152551;
}
.btn:active {
background: #597AD2;
border-bottom: 0.2em solid #000;
transform: translate(0, 0.1em);
-webkit-transform: translate(0, 0.1em);
}
.centered {
text-align: center;
}
.large {
padding: 30px;
}
.btn-link {
background: #233e83;
padding: 0.4em 0.8em;
border-radius: 0.2em;
color: #FFF;
border: none;
border-bottom: 0.2em solid #7A95DC;
cursor: pointer;
transition: background 200ms, border 200ms, transform 200ms;
-webkit-transition: background 200ms, border 200ms, transform 200ms;
}
.btn-link:link, .btn-link:active, .btn-link:visited {
color: #FFF;
text-decoration: none;
}
.btn-link:hover {
background: #152551;
}
.btn-link:active {
background: #597AD2;
border-bottom: 0.2em solid #000;
transform: translate(0, 0.1em);
-webkit-transform: translate(0, 0.1em);
}
.btn-link-large {
font-size: 2em;
}

View File

@ -0,0 +1,8 @@
@import "font-awesome-sprockets";
@import "font-awesome";
@import 'initfest/styles';
@import 'initfest/forms';
@import 'initfest/flash_messages';
nav { background-image: image-url('initfest/navbg.jpg'); }

View File

@ -0,0 +1,18 @@
#flash_messages {
border: 1px solid #CCC;
background-color: #F1F1F1;
padding: 10px;
margin: 20px 100px 10px 100px;
div {
text-align: center;
}
.notice {
color: green;
}
.alert {
color: orange;
}
}

View File

@ -0,0 +1,827 @@
/* cyrillic-ext */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 400;
src: local('Arimo'), url(http://fonts.gstatic.com/s/arimo/v8/an78_18DAUCSU6a4qacRuA.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 400;
src: local('Arimo'), url(http://fonts.gstatic.com/s/arimo/v8/4NN7UQ_VsRBn7NDD9HKUPw.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 400;
src: local('Arimo'), url(http://fonts.gstatic.com/s/arimo/v8/ye-fuRt_0mKrPeIp6Mwa8A.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 400;
src: local('Arimo'), url(http://fonts.gstatic.com/s/arimo/v8/VF6T-UwCT6WyIiUKP6AykQ.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 400;
src: local('Arimo'), url(http://fonts.gstatic.com/s/arimo/v8/eSHy7hCA8QR4qTF-59v60g.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 400;
src: local('Arimo'), url(http://fonts.gstatic.com/s/arimo/v8/V41d6938Z8eBLYL302F8Ig.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 400;
src: local('Arimo'), url(http://fonts.gstatic.com/s/arimo/v8/chnpHRvNNCWcZBKRQ4gVug.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
/* cyrillic-ext */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 700;
src: local('Arimo Bold'), local('Arimo-Bold'), url(http://fonts.gstatic.com/s/arimo/v8/ar6XjGD_YvbpY9XD5YxKTBTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 700;
src: local('Arimo Bold'), local('Arimo-Bold'), url(http://fonts.gstatic.com/s/arimo/v8/XzFO_hPcAZmADxw_2htokBTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 700;
src: local('Arimo Bold'), local('Arimo-Bold'), url(http://fonts.gstatic.com/s/arimo/v8/Tq4Zh2K0uru54pu6hyua9BTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 700;
src: local('Arimo Bold'), local('Arimo-Bold'), url(http://fonts.gstatic.com/s/arimo/v8/gRIQMcBGUlcKSvTGaO9yHBTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 700;
src: local('Arimo Bold'), local('Arimo-Bold'), url(http://fonts.gstatic.com/s/arimo/v8/u0Tw4Txbkc9Av4uzN1j1aBTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 700;
src: local('Arimo Bold'), local('Arimo-Bold'), url(http://fonts.gstatic.com/s/arimo/v8/XCmwOdi6K62tkWaszbVGURTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Arimo';
font-style: normal;
font-weight: 700;
src: local('Arimo Bold'), local('Arimo-Bold'), url(http://fonts.gstatic.com/s/arimo/v8/27rE5lMk9EHpLbxiIuGd0BTbgVql8nDJpwnrE27mub0.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
/* cyrillic-ext */
@font-face {
font-family: 'Arimo';
font-style: italic;
font-weight: 400;
src: local('Arimo Italic'), local('Arimo-Italic'), url(http://fonts.gstatic.com/s/arimo/v8/-lqiBwxkYHykb59Lvn7rk_Y6323mHUZFJMgTvxaG2iE.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
font-family: 'Arimo';
font-style: italic;
font-weight: 400;
src: local('Arimo Italic'), local('Arimo-Italic'), url(http://fonts.gstatic.com/s/arimo/v8/tvCMF1Qlf0MEvcc7JEzrhfY6323mHUZFJMgTvxaG2iE.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Arimo';
font-style: italic;
font-weight: 400;
src: local('Arimo Italic'), local('Arimo-Italic'), url(http://fonts.gstatic.com/s/arimo/v8/aKQL0kir7sjNM0_YzHc9yvY6323mHUZFJMgTvxaG2iE.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Arimo';
font-style: italic;
font-weight: 400;
src: local('Arimo Italic'), local('Arimo-Italic'), url(http://fonts.gstatic.com/s/arimo/v8/c6Ldt38oFMowvdIZIi9CaPY6323mHUZFJMgTvxaG2iE.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Arimo';
font-style: italic;
font-weight: 400;
src: local('Arimo Italic'), local('Arimo-Italic'), url(http://fonts.gstatic.com/s/arimo/v8/Phj51JGRBuPcxq7i7-qcHPY6323mHUZFJMgTvxaG2iE.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Arimo';
font-style: italic;
font-weight: 400;
src: local('Arimo Italic'), local('Arimo-Italic'), url(http://fonts.gstatic.com/s/arimo/v8/-CSRdP_Aes2aBSIDGwIm6vY6323mHUZFJMgTvxaG2iE.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Arimo';
font-style: italic;
font-weight: 400;
src: local('Arimo Italic'), local('Arimo-Italic'), url(http://fonts.gstatic.com/s/arimo/v8/W9ndJDdcIndrj-dqFXLbVvY6323mHUZFJMgTvxaG2iE.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
}
body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
font-size: 16px;
font-family: 'Arimo', sans-serif;
}
@media all and (max-width: 400px) {
body {
font-size: 14px;
}
}
.content {
max-width: 960px;
margin: 0 auto;
position: relative;
}
p {
margin: 0 0 1em 0;
padding: 0;
line-height: 1.5em;
font-weight: 300;
}
h1.big {
font-size: 2.4em;
margin-top: 0;
margin-bottom: 0.6em;
padding-top: 0;
}
a {
color: #000;
}
a:hover {
color: #7789b5;
}
a img {
border: none;
}
h3 small {
font-size: 0.65em;
}
.tac {
text-align: center;
}
@media all and (max-width: 960px) {
.content {
padding: 0 1em;
}
}
.left { float: left; }
.right { float: right; }
.cf::after, .cf::before {
content: " ";
clear: both;
display: block;
}
/* Navigation */
nav {
position: relative;
height: 84px;
background: url("../img/navbg.jpg") repeat-x;
}
nav ul {
float: right;
list-style: none;
margin: 0;
padding: 0;
}
nav ul li {
position: relative;
}
nav .menu > li {
float: left;
margin: 0;
padding: 0;
}
nav .menu > li {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
transition: border-top 200ms;
-webkit-transition: border-top 200ms;
border-top: 0 solid #FFF;
}
nav .menu > li:hover {
border-top: 0.4em solid #A8D6FF;
}
.menu li.fa::before {
display: block;
padding: 30px 4px 0 4px;
}
.menu li.fa a {
padding-top: 0;
position: absolute;
display: block;
top: 0;
left: 0;
height: 52px;
width: 10px;
}
nav ul a {
color: #000;
text-decoration: none;
display: block;
padding: 1.5em 0.4em;
}
nav ul .sub-menu {
display: none;
position: absolute;
background: #fff;
width: 200px;
left: 50%;
margin-left: -100px;
box-shadow: 0 3px 5px -3px #000
}
nav ul li:hover .sub-menu {
display: block;
position: absolute;
}
nav ul .sub-menu li,
nav ul .sub-menu li a { display: block; width: 100%; }
nav ul .sub-menu li a { padding: 1em 0; text-align: center; }
nav ul .sub-menu li { border-bottom: 1px solid #ccc; }
nav ul .separator {
display: block;
width: 0.05em;
background: #B7B7B7;
height: 2em;
margin: 1.1em 0.4em 0 0.4em;
}
nav .logo {
display: block;
position: absolute;
top: 0;
left: 0;
}
nav .selected {
font-weight: bold;
}
@media all and (max-width: 840px) {
nav .logo {
display: none;
}
nav .logo img {
display: block;
max-height: 100%;
}
nav {
height: auto;
background: none;
padding: 0.4em 0;
border-bottom: 0.2em solid #d7ecff;
}
nav ul {
float: none;
}
nav ul a {
padding: 0.2em;
}
nav ul .separator {
display: block;
width: 0.05em;
background: #B7B7B7;
height: 1em;
margin: 0.2em 0.2em 0 0.2em;
}
nav ul a:hover {
border-top: 0 solid #A8D6FF;
}
nav .fa-twitter, nav .fa-facebook, nav .fa-rss {
display: none;
}
}
/* Banner */
.banner {
height: 258px;
background: url("../img/banner.jpg") no-repeat;
background-size: cover;
padding: 0.2em 0 0 0;
}
.banner img {
display: block;
max-width: 100%;
height: 247px;
margin: 0 auto;
}
@media all and (max-width: 840px) {
.banner { display: none; }
}
/* Grid */
.grid {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 100%;
}
.grid::after {
content: " ";
clear: both;
display: block;
}
.grid .col2 {
width: 50%;
float: left;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.grid .col2+.col2, .grid .col3+.col3, .grid .col4+.col4 {
padding: 0 0 0 1em;
}
.grid .col3 {
width: 33%;
float: left;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.grid .col3:nth-child(3n + 1) {
clear: both;
padding: 0;
}
.grid .col4 {
width: 25%;
float: left;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.grid .col4:nth-child(4n + 1) {
clear: both;
padding: 0;
}
.grid .col-left {
width: 70%;
float: left;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0 1.6em 0 0;
}
.grid .col-right {
width: 30%;
float: left;
margin-bottom: 2em;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.grid .col-right .content {
width: 100%;
}
@media all and (max-width: 600px) {
.grid .col2, .grid .col3, .grid .col4, .grid .col-left, .grid .col-right {
width: 100%;
float: none;
padding: 0 0 1em 0;
}
.grid .col2+.col2, .grid .col3+.col3, .grid .col4+.col4 {
padding: 0;
}
}
/* Separator */
.separator {
width: 100%;
margin: 1.8em 0;
height: 0.1em;
background: #7789b5;
}
/* News */
h4 {
margin: 1em 0 0 0;
padding: 0;
height: 70px;
}
p.info + p {
height: 240px;
overflow: hidden;
}
.entry-content {
padding: 0 0 2em 0;
}
.info {
color: #8F8F8F;
font-size: 0.6em;
margin: 0 0 1em 0;
}
.button {
display: inline-block;
padding: 0.4em 0.6em;
border-radius: 0.4em;
background: #DEDEDE;
font-size: 0.8em;
margin: 1em 0 1em 0;
text-decoration: none;
border-bottom: 0.15em solid #999;
}
/* Footer */
footer {
margin: -0.3em 0 0;
padding-top: 1em;
padding-bottom: 1em;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: #ddd;
}
footer h3 {
font-weight: bold;
font-size: 1em;
}
footer .content li {
list-style: none;
margin-bottom: 11px;
}
footer .content li a {
margin-left: 4px;
color: #000;
font-size: 16px;
text-decoration: underline;
}
#copyright {
width: 75%;
margin: 15px auto 0;
padding-top: 40px;
border-top: 1px solid #999;
text-align: center;
font-size: 16px;
}
/* Sub navigation */
.subnav {
margin-top: 1.6em;
list-style: none;
padding-left: 0;
}
.subnav .menu {
margin-left: -2.2em;
}
.subnav li {
float: left;
padding: 0;
margin: 0 1em 0 0;
list-style: none outside;
}
.subnav li.selected {
font-weight: bold;
}
.subnav a {
text-decoration: none;
}
@media all and (max-width: 960px) {
.subnav {
padding: 0 1em;
}
}
/* Speaker */
.speaker {
position: relative;
margin: 0 0 2em 0;
}
.speaker::after {
content: " ";
clear: both;
display: block;
}
.speaker > img {
/* width: 100px; */
float: left;
padding: 0.3em;
background: #FFF;
-moz-box-shadow: 0px 0px 1px 1px #999;
-webkit-box-shadow: 0px 0px 1px 1px #999;
box-shadow: 0px 0px 1px 1px #999;
margin: 0 1em 2em 0;
}
.speaker .icons {
text-align: center;
display: inline-block;
margin: 0 0 0 0.1em;
}
.speaker .icons a {
display: inline-block;
margin: 0 0.3em 0 0;
}
.speaker h3 {
margin: 0 0 0.4em 0;
padding: 0;
}
/* Sponsors */
.sponsors-item {
padding: 0 0 2em 0;
}
.sponsors-item .col2 > img {
display: inline-block;
margin: 0 0 2em 0;
}
.sponsors-frontpage a {
display: inline-block;
padding: 0 2.2em 1em 0;
}
/* Plugins */
.gmp_map_opts {
float: none !important;
margin-top: 2em !important;
}
/*********************************************
* GLOBAL STYLES (Small style changes)
*********************************************/
h1 { font-size: 1.8em; }
h2 { font-size: 1.8em; }
h3 { font-size: 1.6em; }
h4 { font-size: 1.4em; }
h5 { font-size: 1.2em; }
h6 { font-size: 1.0em; }
h1, h2, h3, h4, h5, h6 { font-weight: normal; }
a { color: #428bca; text-decoration: none; }
a:hover { text-decoration: underline; }
/*********************************************
* Navigation
*********************************************/
nav .menu > li { margin: 1px 10px; }
/*********************************************
* Tagline & Sponsors
*********************************************/
.col2.tagline { width: 70%; }
.col2.sponsors { width: 30%; }
.separator { margin: 2.4em 0; height: 1px; background: #DBDBDB; }
section.content.grid.homepage { margin-top: 2em; }
a.footer { color: #333; }
a.button { text-decoration: none; color: #333; }
a.button:hover { opacity: 0.8; }
/*********************************************
* Team members
*********************************************/
.members {
margin: 0 0 2em 0;
}
.member {
margin: 0 0 1em 0;
}
.member a {
display: block;
}
.member a > img {
width: 100px;
max-width: 100%;
padding: 0.3em;
background: #FFF;
-moz-box-shadow: 0px 0px 1px 1px #999;
-webkit-box-shadow: 0px 0px 1px 1px #999;
box-shadow: 0px 0px 1px 1px #999;
}
.member span {
display: block;
}
.member .icons a {
display: inline-block;
margin: 0 0.3em 0 0;
}
/* from the old site */
.program a:visited {
color:#004B91;
}
.program table {
width: 99%;
}
.program h2 {
}
.program table, .program td, .program tr, .program th {
border: 0;
}
.program table td.time {
width: 130px;
vertical-align: baseline;
}
.program table caption {
font-size: 120%;
font-weight: bold;
}
.program table td, .program table th {
padding: 1em 0;
}
/*********************************************
* Team members
*********************************************/
.schedule {
width: 100%;
font-size: 0.8em;
margin: 0 0 3em 0;
clear: both;
}
.schedule-legend {
width: 300px;
}
.schedule th, .schedule td {
border-bottom: 1px solid #000;
border-right: 1px dotted #999;
padding: 0.6em 0.4em;
text-align: center;
vertical-align: middle;
}
.schedule-legend td {
padding: 0.4em;
}
.schedule a {
border-bottom: dotted 1px #000;
color: #000;
}
.schedule a:hover {
border-bottom: none;
}
.schedule tr td:first-child {
min-width: 82px;
}
.schedule-day {
font-weight: bold;
}
.schedule-empty {
background: #FFF;
}
.schedule-social {
background: #EDD7A7;
}
.schedule-technical {
background: #A4D183;
}
.schedule-workshop {
background: #E2E0E9;
}
.schedule-en::after {
content: " ";
background: url('../img/en_US.png');
width: 16px;
height: 11px;
display: block;
margin: 0.3em auto 0.3em auto;
}
.schedule-bg::after {
content: " ";
background: url('../img/bg_BG.png');
width: 16px;
height: 11px;
display: block;
margin: 0.3em auto 0.3em auto;
}
.schedule-civic {
background: #E8AAAB;
}
.schedule-advanced-technical {
background: #91C4DF;
}
.schedule-open-biz {
background: #DECDCB;
}
.schedule-misc {
background: #B0E9EC;
}
.schedule-open-art {
background: #ED9134;
}
.schedule-avatar {
float: left;
padding: 0.3em;
background: #FFF;
-moz-box-shadow: 0px 0px 1px 1px #999;
-webkit-box-shadow: 0px 0px 1px 1px #999;
box-shadow: 0px 0px 1px 1px #999;
margin: 0 1em 2em 0;
}
p img {
max-width: 100%;
}
.front-page-sponsors {
text-align: center;
}
.front-page-big-title h1 {
font-size: 1.4em;
text-align: center;
}
.content.front-page-big-title {
padding: 1em 0 0 0;
}
section.entry-meta {
font-size: 0.8em;
padding: 0 0 2em 0;
color: #999;
}
footer.entry-footer {
padding: 1em;
border-radius: 0.4em;
background: #F0F0F0;
font-size: 0.8em;
}
.alignright {
display: inline;
float: right;
margin-left: 1.625em;
}

View File

@ -0,0 +1,15 @@
- content_for(:title) { ":: #{t :resend_instructions_header}" }
h2.entry-title = t :resend_instructions_header
= simple_form_for(resource, wrapper: :default, as: :user, url: user_confirmation_path) do |f|
= f.error_notification
= f.full_error :confirmation_token
.form-inputs
= f.input :email, required: true, autofocus: true, hint: false
.form-actions
= f.button :submit, t(:resend_instructions_btn)
== render 'devise/shared/links'

View File

@ -0,0 +1,18 @@
- content_for(:title) { ":: #{t :change_pass}" }
h2.entry-title = t :change_pass
= simple_form_for(resource, wrapper: :default, as: :user, url: user_password_path, html: { method: :put }) do |f|
= f.error_notification
= f.input :reset_password_token, as: :hidden
= f.full_error :reset_password_token
.form-inputs
= f.input :password, required: true, autofocus: true
= f.input :password_confirmation, required: true
.form-actions
= f.button :submit, t(:change_pass)
= render 'devise/shared/links'

View File

@ -0,0 +1,14 @@
- content_for(:title) { ":: #{t :lostpass}" }
h2.entry-title = t :lostpass
= simple_form_for(resource, wrapper: :default, as: :user, url: user_password_path) do |f|
= f.error_notification
.form-inputs
= f.input :email, required: true, autofocus: true, hint: false
.form-actions
= f.button :submit, t(:send_lostpass_instructions)
== render 'devise/shared/links'

View File

@ -0,0 +1,25 @@
- content_for(:title) { t :edit_speaker_profile }
= simple_form_for(resource, wrapper: :default, as: :user, url: user_registration_path, html: { method: :put, multipart: true }) do |f|
.form_inputs
/ h2
/ - if current_user.personal_profile(current_conference).present?
/ = link_to t(:personal_profile), edit_personal_profile_path
/ - else
/ = link_to t(:personal_profile), new_personal_profile_path
.form-inputs
h3.entry-title = t :login_data
= f.input :email, required: true
= f.input :language, collection: I18n.available_locales, required: true
- if devise_mapping.confirmable? && resource.pending_reconfirmation?
p
= t :expected_validation, email: resource.unconfirmed_email
= f.input :password, autocomplete: "off", hint: t(:pass_update_hint1), required: false
= f.input :password_confirmation, required: false
= f.input :current_password, hint: t(:pass_update_hint2), required: true
.form-actions
= f.button :submit, t(:update)

View File

@ -0,0 +1,16 @@
- content_for(:title) { ":: #{t :registration}" }
h2.entry-title = t :registration
= simple_form_for(resource, wrapper: :default, as: :user, url: user_registration_path) do |f|
= f.error_notification
.form-inputs
= f.input :email, required: true, autofocus: true
= f.input :password, required: true
= f.input :password_confirmation, required: true
.form-actions
= f.button :submit
== render 'devise/shared/links'

View File

@ -0,0 +1,14 @@
- content_for(:title) { "#{t :login}" }
h2.entry-title = t :login
= simple_form_for(resource, wrapper: :default, as: :user, url: user_session_path) do |f|
.form-inputs
= f.input :email, required: false, autofocus: true, hint: false
= f.input :password, required: false, hint: false
= f.input :remember_me, as: :boolean, wrapper: :default if devise_mapping.rememberable?
.form-actions
= f.button :submit, t(:login)
== render 'devise/shared/links'

View File

@ -0,0 +1,15 @@
- if controller_name != 'sessions'
= link_to t(:enter), new_user_session_path
br
- if devise_mapping.registerable? && controller_name != 'registrations'
= link_to t(:registration), new_user_registration_path
br
- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations'
= link_to t(:lostpass), new_user_password_path
br
- if devise_mapping.confirmable? && controller_name != 'confirmations'
= link_to t(:did_not_get_confirmation), new_user_confirmation_path
br

View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html>
<head>
<title>
<% if content_for? :title %>
<%= yield :title %> |
<% end %>
<%= current_conference.try :title %>
</title>
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0">
<%= stylesheet_link_tag "initfest/application", media: "all" %>
<%= javascript_include_tag "initfest/application" %>
<%= csrf_meta_tags %>
</head>
<body>
<%= render 'public/shared/nav' %>
<section class="content">
<%= render 'public/shared/flash_messages' unless flash.empty? %>
<%= yield %>
</section>
</body>
</html>

View File

@ -0,0 +1 @@
=> link_to t('views.welcome.submit_event', event_type: event_type.name.mb_chars.downcase), new_event_path(type: event_type.id), class: 'btn-link btn-link-large'

View File

@ -0,0 +1,6 @@
li
p
strong
= track.name
span<>
= track.description

View File

@ -0,0 +1,14 @@
h1.entry-title = t :home_title, conference: current_conference.title
= simple_format current_conference.description
p = t :what_we_ask
ul
= render partial: 'track', collection: current_conference.tracks
p = t :license_notice
- if current_conference.call_for_participation.in_progress?
.centered.large
= render partial: 'event_type', collection: current_conference.event_types

View File

@ -0,0 +1,24 @@
= simple_form_for @event, wrapper: :default do |form|
= form.input :event_type_id, as: :hidden, wrapper: false
h2= t('submit_event', event_type: @event.event_type.name)
p
= form.error_notification
.form-inputs
= form.input :title, autofocus: true
= form.input :subtitle
= form.association :track, wrapper: :default, collection: current_conference.tracks
-# TODO length is different for different types of events (translation problem)
= form.input :length
= form.input :language, as: :radio_buttons, collection: locale_collection, include_blank: false, wrapper: :default, checked: current_user.language
= form.input :abstract
= form.input :description
= form.input :notes
= form.input :agreement, as: :boolean, wrapper: :default
= form.button :submit

View File

@ -0,0 +1,20 @@
= simple_form_for @profile, wrapper: :default, url: personal_profile_path do |f|
= f.error_notification
.form-inputs
.input.file.required.personal_profile_picture
= image_tag(@profile.picture.medium.url) if @profile.picture?
= f.input :picture, as: :file, required: true, wrapper: false
= f.hidden_field :picture_cache, class: 'image_preview', wrapper: false
= f.input :first_name, autofocus: true
= f.input :last_name
= f.input :public_email
= f.input :organisation
= f.input :github
= f.input :twitter
= f.input :mobile_phone, input_html: {value: @profile.mobile_phone.try(:phony_formatted, format: :international)}
= f.input :biography
.form-actions
= f.button :submit

View File

@ -0,0 +1,5 @@
- content_for(:title) { ":: #{t :personal_profile}" }
h2.entry-title = t :personal_profile
= render 'form'

View File

@ -0,0 +1,5 @@
- content_for(:title) { ":: #{t :personal_profile}" }
h2.entry-title = t :personal_profile
= render 'form'

View File

@ -0,0 +1,3 @@
div#flash_messages
- flash.each do |key, value|
= content_tag :div, value, class: "flash #{key}"

View File

@ -0,0 +1,31 @@
nav
.content.cf
= link_to root_path, class: 'logo' do
= image_tag 'initfest/logo.png', alt: 'OpenFest'
div
ul.menu
li
= link_to t('views.navigation.submit_event'), events_path
/ li
/ a href="#" = t('views.navigation.become_a_volunteer')
/ li
/ a href="#" = t('views.navigation.become_a_sponsor')
- unless user_signed_in?
== content_tag :li, class: [('current_page_item' if controller_name == 'sessions')] do
= link_to t(:login), new_user_session_path
- else
== content_tag :li, class: [('current_page_item' if controller_name == 'registrations')] do
= link_to t(:edit_speaker_profile), edit_user_registration_path
li
= link_to t(:logout), destroy_user_session_path, method: :delete
li
- if I18n.locale == :bg
= link_to url_for(request.query_parameters.merge(locale: 'en')), hreflang: 'en' do
img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHzSURBVHjaYkxOP8IAB//+Mfz7w8Dwi4HhP5CcJb/n/7evb16/APL/gRFQDiAAw3JuAgAIBEDQ/iswEERjGzBQLEru97ll0g0+3HvqMn1SpqlqGsZMsZsIe0SICA5gt5a/AGIEarCPtFh+6N/ffwxA9OvP/7//QYwff/6fZahmePeB4dNHhi+fGb59Y4zyvHHmCEAAAW3YDzQYaJJ93a+vX79aVf58//69fvEPlpIfnz59+vDhw7t37968efP3b/SXL59OnjwIEEAsDP+YgY53b2b89++/awvLn98MDi2cVxl+/vl6mituCtBghi9f/v/48e/XL86krj9XzwEEEENy8g6gu22rfn78+NGs5Ofr16+ZC58+fvyYwX8rxOxXr169fPny+fPn1//93bJlBUAAsQADZMEBxj9/GBxb2P/9+S/R8u3vzxuyaX8ZHv3j8/YGms3w8ycQARmi2eE37t4ACCDGR4/uSkrKAS35B3TT////wADOgLOBIaXIyjBlwxKAAGKRXjCB0SOEaeu+/y9fMnz4AHQxCP348R/o+l+//sMZQBNLEvif3AcIIMZbty7Ly6t9ZmXl+fXj/38GoHH/UcGfP79//BBiYHjy9+8/oUkNAAHEwt1V/vI/KBY/QSISFqM/GBg+MzB8A6PfYC5EFiDAABqgW776MP0rAAAAAElFTkSuQmCC" title="English" alt="English"
- elsif I18n.locale == :en
= link_to url_for(request.query_parameters.merge(locale: 'bg')), hreflang: 'bg' do
img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALCAIAAAD5gJpuAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFgSURBVHjaYvz69SsDEvj37x+ERGbAwZ9//wACiAUoysXFBST///8P0QOm//+HU0jgxYsXAAHEAlP0H5nxHxtgZGQEWgIQQCx3Pt2RYZL5+/8vQobh/z8gBIN/MAhErEwst77dAgggRoZmhjKXskefH/359weIfv/7DUJ/f//6CyR//fr7C8j99QdEyvPKH5x0ECAAhWOQAgAMg7D+/8nWNVMQDwmCvWTessZJ9VWHCIns0yWxc/MF4FgMUgCAYRBmpf9/sDqY2yWEQBbEYcK0ZuKxIY0FGZ98Z/8KFlcAsTAcYZDX/M369tefv3/+/AGSIJf8+fMbxPgDYoC4QOP//JER+XPqIANAALH83M7ALPvn3z2gcSBTQK4AOwRKQhh/fjP8+cuo8reOgQEggFiA0cP0+w+DpCRQDijK8AekE+SuP38YICQQ/f0LQUDFAAHECIznf0iIAZWLJgUEAAEGADzQZYYqa4w6AAAAAElFTkSuQmCC" title="Български" alt="Български"
- else
= I18n.locale.inspect