From 6c9bdf0cecbba9d8e44d1bd6de9b68701e2c9c15 Mon Sep 17 00:00:00 2001 From: Petko Bordjukov Date: Sat, 15 Aug 2015 04:33:02 +0300 Subject: [PATCH] Add initfest views and assets --- app/helpers/application_helper.rb | 6 + config/initializers/assets.rb | 4 + config/locales/simple_form.bg.yml | 28 +- config/locales/views.bg.yml | 74 ++ lib/initfest/assets/images/initfest/bg_BG.png | Bin 0 -> 462 bytes lib/initfest/assets/images/initfest/en_US.png | Bin 0 -> 599 bytes lib/initfest/assets/images/initfest/logo.png | Bin 0 -> 8898 bytes lib/initfest/assets/images/initfest/navbg.jpg | Bin 0 -> 1244 bytes .../javascripts/initfest/application.js | 15 + .../assets/stylesheets/initfest/_forms.scss | 137 +++ .../stylesheets/initfest/application.scss | 8 + .../stylesheets/initfest/flash_messages.scss | 18 + .../assets/stylesheets/initfest/styles.css | 827 ++++++++++++++++++ .../views/devise/confirmations/new.slim | 15 + lib/initfest/views/devise/passwords/edit.slim | 18 + lib/initfest/views/devise/passwords/new.slim | 14 + .../views/devise/registrations/edit.slim | 25 + .../views/devise/registrations/new.slim | 16 + lib/initfest/views/devise/sessions/new.slim | 14 + lib/initfest/views/devise/shared/_links.slim | 15 + .../views/layouts/public/application.html.erb | 22 + .../views/public/events/_event_type.slim | 1 + lib/initfest/views/public/events/_track.slim | 6 + lib/initfest/views/public/events/index.slim | 14 + lib/initfest/views/public/events/new.slim | 24 + .../views/public/personal_profiles/_form.slim | 20 + .../views/public/personal_profiles/edit.slim | 5 + .../views/public/personal_profiles/new.slim | 5 + .../views/public/shared/_flash_messages.slim | 3 + lib/initfest/views/public/shared/_nav.slim | 31 + 30 files changed, 1346 insertions(+), 19 deletions(-) create mode 100644 lib/initfest/assets/images/initfest/bg_BG.png create mode 100644 lib/initfest/assets/images/initfest/en_US.png create mode 100644 lib/initfest/assets/images/initfest/logo.png create mode 100644 lib/initfest/assets/images/initfest/navbg.jpg create mode 100644 lib/initfest/assets/javascripts/initfest/application.js create mode 100644 lib/initfest/assets/stylesheets/initfest/_forms.scss create mode 100644 lib/initfest/assets/stylesheets/initfest/application.scss create mode 100644 lib/initfest/assets/stylesheets/initfest/flash_messages.scss create mode 100644 lib/initfest/assets/stylesheets/initfest/styles.css create mode 100644 lib/initfest/views/devise/confirmations/new.slim create mode 100644 lib/initfest/views/devise/passwords/edit.slim create mode 100644 lib/initfest/views/devise/passwords/new.slim create mode 100644 lib/initfest/views/devise/registrations/edit.slim create mode 100644 lib/initfest/views/devise/registrations/new.slim create mode 100644 lib/initfest/views/devise/sessions/new.slim create mode 100644 lib/initfest/views/devise/shared/_links.slim create mode 100644 lib/initfest/views/layouts/public/application.html.erb create mode 100644 lib/initfest/views/public/events/_event_type.slim create mode 100644 lib/initfest/views/public/events/_track.slim create mode 100644 lib/initfest/views/public/events/index.slim create mode 100644 lib/initfest/views/public/events/new.slim create mode 100644 lib/initfest/views/public/personal_profiles/_form.slim create mode 100644 lib/initfest/views/public/personal_profiles/edit.slim create mode 100644 lib/initfest/views/public/personal_profiles/new.slim create mode 100644 lib/initfest/views/public/shared/_flash_messages.slim create mode 100644 lib/initfest/views/public/shared/_nav.slim diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index eb4b1ad..190f23c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -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 = '' diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 2d9ae76..417380f 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -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. diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml index 0290bdb..a093d19 100644 --- a/config/locales/simple_form.bg.yml +++ b/config/locales/simple_form.bg.yml @@ -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) \ No newline at end of file diff --git a/config/locales/views.bg.yml b/config/locales/views.bg.yml index bcb1c79..70e16d4 100644 --- a/config/locales/views.bg.yml +++ b/config/locales/views.bg.yml @@ -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: "Уъркшопът беше потвърден успешно" diff --git a/lib/initfest/assets/images/initfest/bg_BG.png b/lib/initfest/assets/images/initfest/bg_BG.png new file mode 100644 index 0000000000000000000000000000000000000000..0469f0607dc76eb60327c29e04d9585f3ef25dc7 GIT binary patch literal 462 zcmV;<0WtoGP)WfB*UmB!B(-`wPhZ^#?@C^U5EbbPyl_g=3Hc01Sh${{P9=HB%4| z34*<3-m=C?^;L%miR{xQv2*hU;8+Y&0Dxf-W~KjsusWFAC4@j0#9_j;X5z6SjRhH> zd}sd(7FPhVFdSi!*Zj@;_Sc`kfByUdk|3A-`STmZ_yb~qxIp9o{E-p)bLt=iKmf7) z+|Ix(`{&<1pm88mK&}8g1WG~}e||Ik`OB#Cw~m1UAb?na(Zlrn4}+v6P!1@{@CT$5 zU(k2*|8J(R-+sudaynhucHbwAMTnor{mwqO^w7JHzaBsT z{O^B8RYf5+LvDs&KmRKVd78=o{`1#HTiEo_OolaGleS)G+IQ#sUI`b*pv<`1zCJ=H0jd{{2S>p`ri%{LsXJ%FbMS z$#S`6f|?OG!^Jxczkf6Q`UNF{l0Sd`ad7zm>({^EzyAS6{{CgrkluOb3l1A>ZU2~A zK+FZ=zkmP!`TOVhpFbzBzFaPmD2$N3;+$pK?>zdet`f0002ovPDHLkV1gy;I?Vt8 literal 0 HcmV?d00001 diff --git a/lib/initfest/assets/images/initfest/logo.png b/lib/initfest/assets/images/initfest/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b994965727cc84c311d02d61fccf853a96506796 GIT binary patch literal 8898 zcmbVyWmr^Q+xE~>Dk&x13^6d&Py$1D$si#ELpMX0baxCX(ozBgNGK@X-6hgU%78Z| z>c{;&&;5MgkN0?geET@|UTf`rUFUUPv3AGlYO9bE(GdXv08%wosQ!KHa=)5Cz`x(t zhkyHd-_Uv~!MqIIY`uKpo;Cn^gqxKOvziOs&PLw`j_~&wwvh$^a1aiLFfW*vCdAs! zMF9S{jDVku`@J>*AT8(T4!3r)@nW{Jv2$>hVg3H`Gb^(LLWb2?R7*(9UD3wgK{deB z#vnl3&^o}$S`xu3C(A7D2e}7uvGIa4`?)x~A|ZY|X8 zE-ruj^)G3pm%h#arSU&XBMtrCZ3OjgkZ#_d*7y0aW&20@K6d}Rp}z(1*+6tW9qy9? zcZRxId%M`UdZ|HWSnrPrARG`7B`_2U1&e@{MHS_hL_i<~Auvcn0Sc8=P*fBW7lQtS z@jvN;B_zc}#lezb5L5yLQUXgT35!5Mib}!~63W8L;zIxEs<|S);I7s-|JZf7xBDMm ziT_m>qUdP@_j2 zf`6CB|5Gae?7FYNzq|h}{QJRwr;d&5{e1DfpBT$o*lz#;#vf`>c|*UIV{^h(24nx< z7EH*KvEyK-7ivyNjSqu{Ji{o);KYg^k$^Cw;vqfu)ShB)cU2ti}*-XjUTWfND_SdJY;6GP? zzI#8ydgl7!pyKSL^{eZw%abS6tkPV%f_-+PM0`Xk&?PRi%LB(t9m?-y{g|P_suiE8 zEN+X7LaCk*^L|<8_i2Zs+#v+AC#vzzI<51h;%h>;XT6VfV04ey0CEbHtBkOUvqF|o zTh*d81x3j`93RoA(4fgwI@o(A6^J02AsJBdTDolUt}DG;9P9$Cy*TR1_c%qJMQ`Gu z>f~c_lX*I9d7pvH3hf^x?csmR;yxyhS7w#1)dvxf3-!~zwudQ!Llq#5a$R>_`AX!Y zb_5~%516`0HrrWbxae+#$}M!j`fQg$TR6#VRnaWoM2c24dO?dAtmpWt*Ip!Bvv5_w z*^UeU?BmdZ=pW|#OK&(pFjwkvT@;} zsfcw_n!&YDQ1W$T32jjtpi^Nz4j9wY1$+c-YH(3asuadbX3m0=y)3d!;Z<%YvYF~< zZaSl{U`4eP9e5?=Q0YVI%$a&wBWx-SC(fsRvwB6!mRNCiK%>-*q*%Hou{g^;KHAvh zR0wr3foOyfGe{Y)+RsArATas|Z9AM)OC=)3-!nl%jk}<(2IM;h8lPeSq+!dXS)qnF z4FEv)PR{TG3c5*hx)lt(02o+3koBdg6l;;3j`wYBX|nP_tUC$xmftvFTyU;Uc1D)# zsD6EKC@n9TJ{sHoGM;cc7oxW<3=pju5WOXn`A z=jm6^l9q}$ga&;*8^($ope1OzYgDA%oeCr&K5isV*>Yl0>Nyd$)c%G!=<#`OKUOg3 zzhiN%n#6t?L{?VN<;ku8Q1#qF&BfB*DyuxryuEkmc(H%DWa7&V4XH8NDvA7_=4LxT zfPyEKiky)jZxz8aMj0AU*@7geFSf)!U$sl#MS8mHM8V$lIE4 z`W0J>k*)hu?u`m+m%ua)4k}sRwR8!knWXhtH#Yw@8Ok=kwOGT*e%&~HXW@c^W@p29~vPGnk(XnxyJsO0sP860M52nFzQ zI;%uZE)$Ikid#Mh2$fo<71Hg zqW{i>lP(aw&-L>U~EPn!<#+2^8$#di0kBL2kfHxc!uD$4JT;6+J@_jl9+0kL9Id&edah1yKs$( zh(f_Ik8^7cZHH)CPn$O5Q#{LL_BfL;^Nc7J0}ysPb#lI{tuys32@9M$W7jVXPKYJ( zw0EbNMo}0N&FSwQJWvu(ir%3_^S@Q)LBya8h6K}kB8zp2VrC$)C zh7Fi(D^te6(<_6xrD>GUE*2`ggiQ5P*oly(Bf(w(^6~5Rn#xVd`17n%EFc$Jo-qVe zp6u+fmFwyy&ym53lr}*Wm4lIvu~w8lM*Uz@VJ1e)^%pMy8enEJLLq~00eeqIs+_W+ zXUsuMd%OVw+MaI7wrkq`&Ke@-;oQ7Zo`W9j;tXUt)B>udW;`=V!*MnZCg_Exx z9Of9tP`%@TiYkSFoTp3 zGnPJsP=V(QjHkMll zD6WYa@z54iWl=h>iyuGF`ASle8{Yxsh250_5QYHF3Aiq9Wzhx|P9kM)ovpo9;_+Eg zuC{!<7v~rI<{FxCJxSB{CPlIYB+*7Dh@U;P6e^kMKx2Cg=ADLlmkvRUr(#nK>1L*q z`KXGFnwp9vsf7s!Y6iwSFs-%W-F1c$tDgzttocYd4gSlo%%cy?UmAs?(q=MDG(|XS1fN65v3s3) z9+t!+fGfffNSwhw{*;I7W5Hv&h)$J&sdb~xy)Vw`vahSM$Kb#nWqw*2$;UZIAUA>`eY2=)*T8???D;=de)VJqN3Y*sttB#i- zxMj6`@nPyRLtz)8F7P52q{Zl;%v(@`UL(2Ky0LL`Y-p?^c{}k?p(;qAJGYKZQ(GJE z=tzX|Gi!g_WFB#S@I?^rZqKmk{=j?Qqt?0Z+5Pi}>;=Y&JCyKoV=X96H8PhnbKKfg z+n5X;nZwC7iPEvL8piTsc!Gv8n2OJD!UE;8pc+^;5x={^qTB|mZ)Xb}D()Rv3oA9J zoFh?aA>_(eQrUmJB88tev3E92FDT!~89SY$`e5@&ILuaKlZO?MLv59hRkdD`$NN}6 z6Iq1r)@W(4_%0!N_j}>FL|x5z`hdQGva)ijnqBI+Z5ET1RuTy^?~a|M$GSvK^eS&O zordmPISIqoS98v;KDvf?0Dg9|nAoDYS;8KDmZi*rl%Tgj!Q5y14GS&v)>=+c&lOY* zB)zVZrj#djRdNkN4u^(A0*auAl(;UW0@2Yik{X>~O_lvK6X;pS3Nt9kbCq$gxJ5KS zc@2mD@pjZ05~G;UQtP-Gv32RlRh0yj(x^a0hL=kmuY+Tx?E3qlnMJG)=db}YuGK%n zBICLwvMQ7kIjpllyz1&(n)u90RGrj}GD%GDQe#~*<9odM4KXd;sr9U$zNKrhb>FVp zzCYcSzDRjEwo#h9t_igYYi=1@q-DbkzF((!efwEXA%*3uM|=ayaxWCUblC#1fZ0G5 zW&oAtv_??_=YpN$6$4vZ^m&pZ(JFQ?aUAq>kG`o*&oTGQTa!DOJkcCQ2I|Z%ibyA$ zOJIfX(c#2FNrs`}5iO5VCo+ByU$zHx1>6pTWMz{--^@Dc>7j}w%Xjxx`_nuPtXA0t z##V%F*sOS-i3AaK4Oj`ktA7z7GlqPF|0;NW|% zml8^(Ni@Vqy9QvNP`UCa}IPC`kA!no6=%Xr}oE)0{!7ZdK zZd1K15l>nAzQZ}9Fm;EUuue7!&iR9Y^rQDMnF8AY+(YCl$m@Nwh8F z)|uI;j*+#ofH;*l`6BWh*3K~rBhrcu0{#xpRVfB24*#135K>li6ybS&RDXvb zlXA6V&FQjoR4<_9?@Znq{7b$4k|lzlhHP3XFO_$^h4L&BpvX&%UE35GTllRWQ*P?J zwUZkXbkp*BPW1<~mPyG`R%W8#;QJ$8bF!#IHhjDbVAjx&IZcrnIicvnPaq3D464@2 z(&(wYnsi)aqcD^;%^wR@F1g8I&&$fbk=Jg;zS&vX{Cap+xqPyh;z0E5X7Hp%sN z9a=aG@!H*n3c{oo)??(Zf9QC8b$fKq0Avt$-?#>R`Y9J^52V>UuMlBRv!~2{KR;EV zHEjNaR9lZrvYUPkC#f9UA!h6w37jp$C`m6*lgke;N^Lucmqo7q2=DH?F8gu9N~Qf(b6Ek-)k2nU(F1oI+g*QT>-O!@_J4$^62Z1PRZ(M=$o$1Tpw68;r zxWoB`vm2pO@l~y0`wlchR#N4>8Prj2OMqs$zf9yeXQahYa)sUml(GA{+~vly+H-!A4f&)t(gkDQS7*Wi_NrV)=x)lf3!)HV`Bv(VY^LM7P#9Ub0WA60At^ zg2z%+R8$_2(VN6GTne)&s5?)%0+8KbhPD{9icaL_;sk@72wK0_iZ@LJezhJH5=Qm3 ze)hwWNpoEJ=_2r?<>|oB`j;u&bCGKoFfJL4LWPd}9j243!P|gB%-o024mE_m@IY;4 z>HF<34fN4+Q*5N2*ofguw~ntDv#*?ayYuw-2D(ya9g{ra<8`U1^=a3FH>z7J??BC9 zV}f^8n|yQN&W3s%4sdc*W$nw>{=Si0^0_&&qWABq<|&0Z+mV*_L~W04CzzYwUNpI^ zwz#Z)3jP^TyhnrL{aMZ9c1~B~v-mqf@K?N)Xqt@J`{lP2$y?v5WX;f@sN>SPU7#5_ zgN&*7<&K+fLrsDUk43!f~O%b14tI5U0kV)(BfeM+rp>SWE2>v4uf|2Xss2d@ zST|^zbK}g8&_Q8OY?cXJq7>wAm*#wE5;b@A1nx3x@>>={LPDKQ5`I9 zp@?3d4$lVSN8crrJ5?rFY$@`Fvd0~-e=^C0n*K(L|Ee3k=n$_LM|&$0^72(rEi9nK z84dCFQomQ7)-it)m+_AazhuBWDI!?0C0em*b01E3+{m~N9lUCC^^OvS2uDV65u8(U zH1Sb$O(x9%))TaxcpaqUkT;h78#8`1EY?Jm$0x7xll)U>_oLBp8-~vT-yVPZ&6KiL z7-P}9d@8?gk7}2|$%@?3umoakJp=CM06wz*xNj$Zz>N%O@z^J@{BoR}z?|PqKI_GRy?7gdg|7!ChXtL=F>)9wT44*W#s7OXjUTP!kvI5(lY}le2#;KD< zEui2vCd#*!Lqp$Fd`Wh=G6Woms??JEA{vdO@}a@S;OR&@iA2KU-pUL0X^*-mG1^J) zQj^aZ87Hm8v+B(!3$`)>VZC{^M3a$Y9BclbS3D9^QIy|I6q|BJwl=!0fBF5O%@fL( zbOp=48jbiSCpYoRS1Tdu#8`>DW~7q6#Ut>go?dst3X6^jKhqa&H*c7F7F`4A#ooPCE9X!<@#Q~sA_v!z z%$82PG#ORS;UVGHX|u2P)P1R}tLMn3Y|WJrQ)?`ABnR3p31rr?hCh7!@o5>4ABwE@ zz--`QzxyK*J)qXXH-=3|U32xbQzxs+>cmnsI(OfSv3E~T%Oki;1ibA!VoHdI=eiJh zT(sPsot=Hb*!t@o%ONFy(4RVrZ?t1$j?eOc-}2S}wYg`?G;s3j^V8_3{n>7TxPqs0 zgUjFAZZ@+IXBZa5KFsOI=o*ogK8H*gKc66qxljY8gn|7h5HmEiw1dSNic6T|$N15e z=0fIQL#feEHEjr!>>>w8mi<{a`SK6DDvtU~s3*H~*q<92v#F<8hf#zXj_H4q@6H^Y ztz}J*1w5nX#jrdq(9&zabj0C63x)j1FO~3f3?GQjRqra;BU|Zu_18Q>TFH%(?{}IM zJCi}E|62D-1;austdcvWv;flF*y#Dm&9=(KI!=8X^FL@}jbkdE2THFeUjOvi=)JPRWIw_qgKQ!O0Qd!J z{J(C!sb#MSiRC(u0EO$~V}reY$_RP6Y!P{Dsk*kluG=iQ1xI~#^(IGgbo2+}h|IpZ zWas^5`aK|`Yr!xZKFRm1&DWQ}CNqx=c$uWFd6`Ak?S_kC^o*1x9I z09%@)bd6tXE$iuEIYG_MpL#n`wOxGbypDMlh>J-VvPl~se5X#q;%r~jZ7law`|$8M zoR*~tq8ZzGIy0YSUmIubj!-975Ib^jVOQrnE2h_QV9?w~?+4rzRcmwpB;dky{s|`g zdZ$43xvr=WnEU-Mo%t#dT-44HWyBtWXO-=9mOf&Hm!xy7@#fAlc4W*#8sjM_iq-Xj z3Y4kugYI}+T#Pk8e^c`k*1=uunlug1oPi?{;UW=>oK+gfCnxfa&1O=J1GyIDrD{P? zV!Bov+rqyzpD%xs{e|Z9s5l~IaAn%W!qvcL4d8brRSnyC)QAxLcRC03*pICNSbs?TLI<&(h8 z5L=@3j2TzTqRo~bmj+NDD+n!l=#or{`* zw7oaodT=>#+NsWVSDJPn-#n|v=Ni+8j7I~xr+R&*Edwx`IRNdQAC1T|20iFvY!Uyc zW1HdB|HoJ&mKkG&g9v+xq_ZPl-3y9=C0NL@jxTAq^wQgWC&)Ioyn)`bpxA0W?lCCd z#E8Yh%m$sD#4UpIOX9eii*F>Kn<=}Mrq|#BTYNeqyR-EbuUitHc-MM(&WUn=wQo1+ zsDiUpxJCA4R}FO$b?uQ81!vm}lJnZOJr4LpugG?D!};UM;}*}h<}mD*8HHeTa#5pl zc><|l0HWJP&ZasLO0W?S|3{;@V@ZYRVM-VZICgAAYS*wIm;RvTj|Jb!aNUo>2#TjX zdCJEsZj)WL2kXK6DwyT^FG-y-koH+arr0o)Bf&5lRxh9NETB(u{*U zr|bngOdTJCnXeLgcC+XVdx+@s<~pbgJTo9JacIm?y*f5WHY*iRqm-zPnYiXAc;lAz zdN+B|{rs34FZ6-_?p7Gr#Fq2qpUu~cb=@mQqV5iizB`6YKF5&6#blq0ZuQ*`{%rJE zcfJ52Mgqmne!^%C<04X0w?FP=sAoJ?QZ%7U%A)Pt<^aE{-91Ioay}3I0r|qPyoaBv z#BYBe8Cb_DaYjx2xqi?gTRz73&j&kHoTcb?u*y$|-b+27CHL2NJBEyMinrH2d%BI) z8pvQtx1a$(^oPx1zh?Hh{69hTx3?c|vdT0UOit3m`m04Y{k1#u?aC1gq~ijRF6qVL zCFIF`_Lk22YSNpvSHf>{i2FUiH~L-j#rh zN>n0E|ME^U@Vgk`Ca6K9Jp!up)f+DqwaXcRj0p!wr-LqD-Zb6{eiIT??p0QBw)Oj= z&v*A%BpH596<*R6L2~Na*K1v{D;yP5O$K`SCjlafF zK?Wr3MNI9iuwgGvEk?O$q8dfLuS>6-yYr|B*IGY5jnUCL*YNGW;PNk%ep4jUKvx;J z)G^Z)f2%*IOEJB+ChU~grJyydk5z7+=M#U`-`uc1kq9{YW!lREp5t`C_IqL>1&Y0# zpo|{$9EuUm&aT)>13Hd8$g3uqGv>JY=BH#snwOuas}W{86!oP3Ni0g|lnT)>LAoME zEuwWsj=ZFKICu?PU1^aeAtAB$at^v(0f#7BMVzHmicomu0h=ZpulucXbF$45fE(U| zQ#TDm@g#O)wFgh=B?cs@V{&TID$gewn3%RB-WX&U4DB`IUD=)Gjsf+wsRbB*46LB0 zZ}<;OZUcvl%Cic6m0!*MPYh#L}?FeoJ#Ak#k0j$D3!|HmY!)B%qtgv`EaJ0@2t+95@Ur+Y-#e=ar@ zl67vb(yKk=@0hZY2k8DBm3W3CsgwbWL<^=eR%m=*fUjf@^$%um0?M5~aB5x;B%Cr= zF*pSm0937n0mago{a4JqgJq*5#|-NBJ~H_-l5ixrAItYVn?kaMpxyu*e1XxFz?R*7 zH!c?BH|g^)Bg4|xCk2oys*Tb9vQ(f)=|qf4y~?`k9?!uFp|t#thX8>h_Q+Ha09LF0 z47K@@w`DxrgPnW(ouqoVKIo7%pOnBo6SAQis;#&;+H8eM0FtH3n^k@s^6=(C=uutV z0f?m0cA$rz?OU+Ngt|t*3OSxCG6O?1hCx^gv+g|JAPGbjT2hbN3q?4 z_B{F_FH}EKdOcrM694JM=%0Ve^e+532G@|B(%qBa>^dc*KVGEX*un>dCBsyK=Ro1} zcCsLh_*KfLK#|8jYZx*7Ioe9V|EbBhY&Sgki&Sg7tAio*qsE`n;Ftf?P$fVDCzEA&fKAzt>@Ku$ z#)~KQ<{#k2|G=0i2NMq-j3-eKhO069C#N5L_eRNBS{ z0QLG!5C^9c`~Z}^qc!&c0iswv4?u8Cnp?i_NGxl4Syi{!QC71}wyioW%yKN4UuZk3 z)l+@g67axBNQ zkk7z^B=8c)(OqG%H&@?~mgHL37e1AkZc?pQE87yXw!6u~VzC%<@O%baWV}7gSKArO zo9!{k$kSZI@eSLeLq>Jo-tkKej`So2(`hvN#OGGaG{d|))}FtFPQy6Y+FRLk5W9pt zd&kufHlOW*aqTX46dK}ar2DRcA4T1kZEeRymS2}k48Fx>H@r zILA9LKw0F)oLmrb+z=M?g_^?Wi$cD_m0=~%bg}yXRE)*JuwiSQX_cM|_g}c}H$Fb} zM+aGWUR*pF!A~&KX?LI>;sGRruiya0qS5F;G&V308;aqTjK^Z}WGazJCK9Q1sw3&t z$Y^?WBsDfRK0Y=!Gd(>$bGa|X;NakJYIri8o}8MXCZ_rq|GEhd0Tl-;AVv}th)@Jc z5y4yV01yNqPk#>pB4jicCqnr{i$9Yz0U{WFMonG1qJE4#C6}Y))L#GqF#i{jA~A>} vDX;*(Kie3(n!Nt-5wp8? 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; +} diff --git a/lib/initfest/views/devise/confirmations/new.slim b/lib/initfest/views/devise/confirmations/new.slim new file mode 100644 index 0000000..d0dad8b --- /dev/null +++ b/lib/initfest/views/devise/confirmations/new.slim @@ -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' diff --git a/lib/initfest/views/devise/passwords/edit.slim b/lib/initfest/views/devise/passwords/edit.slim new file mode 100644 index 0000000..a49e4bc --- /dev/null +++ b/lib/initfest/views/devise/passwords/edit.slim @@ -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' diff --git a/lib/initfest/views/devise/passwords/new.slim b/lib/initfest/views/devise/passwords/new.slim new file mode 100644 index 0000000..55f2297 --- /dev/null +++ b/lib/initfest/views/devise/passwords/new.slim @@ -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' diff --git a/lib/initfest/views/devise/registrations/edit.slim b/lib/initfest/views/devise/registrations/edit.slim new file mode 100644 index 0000000..6bfc02b --- /dev/null +++ b/lib/initfest/views/devise/registrations/edit.slim @@ -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) diff --git a/lib/initfest/views/devise/registrations/new.slim b/lib/initfest/views/devise/registrations/new.slim new file mode 100644 index 0000000..bb5f2c2 --- /dev/null +++ b/lib/initfest/views/devise/registrations/new.slim @@ -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' diff --git a/lib/initfest/views/devise/sessions/new.slim b/lib/initfest/views/devise/sessions/new.slim new file mode 100644 index 0000000..db5c6aa --- /dev/null +++ b/lib/initfest/views/devise/sessions/new.slim @@ -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' diff --git a/lib/initfest/views/devise/shared/_links.slim b/lib/initfest/views/devise/shared/_links.slim new file mode 100644 index 0000000..fc5cdbd --- /dev/null +++ b/lib/initfest/views/devise/shared/_links.slim @@ -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 diff --git a/lib/initfest/views/layouts/public/application.html.erb b/lib/initfest/views/layouts/public/application.html.erb new file mode 100644 index 0000000..dbd8cbe --- /dev/null +++ b/lib/initfest/views/layouts/public/application.html.erb @@ -0,0 +1,22 @@ + + + + + <% if content_for? :title %> + <%= yield :title %> | + <% end %> + <%= current_conference.try :title %> + + + <%= stylesheet_link_tag "initfest/application", media: "all" %> + <%= javascript_include_tag "initfest/application" %> + <%= csrf_meta_tags %> + + + <%= render 'public/shared/nav' %> +
+ <%= render 'public/shared/flash_messages' unless flash.empty? %> + <%= yield %> +
+ + diff --git a/lib/initfest/views/public/events/_event_type.slim b/lib/initfest/views/public/events/_event_type.slim new file mode 100644 index 0000000..8c51604 --- /dev/null +++ b/lib/initfest/views/public/events/_event_type.slim @@ -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' diff --git a/lib/initfest/views/public/events/_track.slim b/lib/initfest/views/public/events/_track.slim new file mode 100644 index 0000000..1818ca1 --- /dev/null +++ b/lib/initfest/views/public/events/_track.slim @@ -0,0 +1,6 @@ +li + p + strong + = track.name + span<> – + = track.description diff --git a/lib/initfest/views/public/events/index.slim b/lib/initfest/views/public/events/index.slim new file mode 100644 index 0000000..a3222a3 --- /dev/null +++ b/lib/initfest/views/public/events/index.slim @@ -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 diff --git a/lib/initfest/views/public/events/new.slim b/lib/initfest/views/public/events/new.slim new file mode 100644 index 0000000..6446c7b --- /dev/null +++ b/lib/initfest/views/public/events/new.slim @@ -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 diff --git a/lib/initfest/views/public/personal_profiles/_form.slim b/lib/initfest/views/public/personal_profiles/_form.slim new file mode 100644 index 0000000..00ec2e1 --- /dev/null +++ b/lib/initfest/views/public/personal_profiles/_form.slim @@ -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 diff --git a/lib/initfest/views/public/personal_profiles/edit.slim b/lib/initfest/views/public/personal_profiles/edit.slim new file mode 100644 index 0000000..d48bae0 --- /dev/null +++ b/lib/initfest/views/public/personal_profiles/edit.slim @@ -0,0 +1,5 @@ +- content_for(:title) { ":: #{t :personal_profile}" } + +h2.entry-title = t :personal_profile + += render 'form' diff --git a/lib/initfest/views/public/personal_profiles/new.slim b/lib/initfest/views/public/personal_profiles/new.slim new file mode 100644 index 0000000..d48bae0 --- /dev/null +++ b/lib/initfest/views/public/personal_profiles/new.slim @@ -0,0 +1,5 @@ +- content_for(:title) { ":: #{t :personal_profile}" } + +h2.entry-title = t :personal_profile + += render 'form' diff --git a/lib/initfest/views/public/shared/_flash_messages.slim b/lib/initfest/views/public/shared/_flash_messages.slim new file mode 100644 index 0000000..c94abd1 --- /dev/null +++ b/lib/initfest/views/public/shared/_flash_messages.slim @@ -0,0 +1,3 @@ +div#flash_messages + - flash.each do |key, value| + = content_tag :div, value, class: "flash #{key}" diff --git a/lib/initfest/views/public/shared/_nav.slim b/lib/initfest/views/public/shared/_nav.slim new file mode 100644 index 0000000..17df5c0 --- /dev/null +++ b/lib/initfest/views/public/shared/_nav.slim @@ -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