initial commit to seperate repo

This commit is contained in:
Don Harper 2015-06-09 22:50:31 -05:00
commit 1a020ca68b
1302 changed files with 201261 additions and 0 deletions

View file

@ -0,0 +1,23 @@
A "website-done-with-bootstrap" theme, so to speak.
Has a fixed navigation bar at top that displays the NAVIGATION_LINKS
setting and supports nested menus.
This theme is used in Nikola's website: http://getnikola.com
Important: To fit in the bootstrap navigation bar, the search form needs the
navbar-form and pull-left CSS classes applied. Here is an example with Nikola's
default duckduckgo search form:
SEARCH_FORM = """
<!-- Custom search -->
<form method="get" id="search" action="http://duckduckgo.com/" class="navbar-form pull-left">
<input type="hidden" name="sites" value="%s"/>
<input type="hidden" name="k8" value="#444444"/>
<input type="hidden" name="k9" value="#D51920"/>
<input type="hidden" name="kt" value="h"/>
<input type="text" name="q" maxlength="255" placeholder="Search&hellip;" class="span2" style="margin-top: 4px;"/>
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" />
</form>
<!-- End of custom search -->
""" % SITE_URL

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

6167
themes/bootstrap/assets/css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,45 @@
/*
Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
#cboxOverlay{background:#000; opacity: 0.9; filter: alpha(opacity = 90);}
#colorbox{outline:0;}
#cboxContent{margin-top:20px;background:#000;}
.cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{border:5px solid #000; background:#fff;}
#cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}
#cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}
#cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
/* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
#cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
/* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
#cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
#cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
#cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top left; width:28px; height:65px; text-indent:-9999px;}
#cboxPrevious:hover{background-position:bottom left;}
#cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top right; width:28px; height:65px; text-indent:-9999px;}
#cboxNext:hover{background-position:bottom right;}
#cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(images/controls.png) no-repeat top center; width:38px; height:19px; text-indent:-9999px;}
#cboxClose:hover{background-position:bottom center;}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -0,0 +1,201 @@
body {
padding-top: 60px;
}
@media (max-width: 979px) {
body {
padding-top: 0px;
}
}
#container {
width: 960px;
margin: 50 auto;
}
#contentcolumn {
max-width: 760px;
}
#q {
width: 150px;
}
img {
max-width: 90%;
}
.postbox {
border-bottom: 2px solid darkgrey;
margin-bottom: 12px;
}
.footerbox {padding: 15px; text-align: center; margin-bottom: 15px;}
td.label {
/* Issue #290 */
background-color: inherit;
}
.footnote-reference {
/* Issue 290 */
vertical-align: super;
font-size: xx-small;
}
.caption {
/* Issue 292 */
text-align: center;
padding-top: 1em;
}
div.figure > img,
div.figure > a > img {
/* Issue 292 */
display: block;
margin-left: auto;
margin-right: auto;
}
div.sidebar, div.admonition, div.attention, div.caution, div.danger, div.error, div.hint, div.important, div.note, div.tip, div.warning {
/* Issue 277 */
border: 1px solid #aaa;
border-radius: 5px;
}
blockquote p, blockquote {
font-size: 17.5px;
font-weight: 300;
line-height: 1.25;
}
ul.bricks > li {
display: inline;
background-color: lightblue;
padding: 8px;
border-radius: 5px;
line-height: 3;
white-space:nowrap;
margin: 3px;
}
ul.breadcrumb > li:before {
content: " / ";
}
pre, pre code {
white-space: pre;
word-wrap: normal;
overflow: auto;
}
article.post-micro {
font-family: Georgia, 'Times New Roman', Times, serif;
font-size: 1.5em;
}
/* fix anchors for headers */
h1, h2, h3 {
margin-top: -40px;
padding-top: 60px;
}
h4, h5, h6 {
margin-top: -50px;
padding-top: 60px;
}
h1.panel-title, h2.panel-title, h3.panel-title, h4.panel-title, h5.panel-title, h6.panel-title {
margin-top: 0;
margin-bottom: 0;
padding-top: 0;
}
.image-block {
display: inline-block;
}
.flowr_row {
width: 100%;
}
.tags {
padding-left: 0;
margin-left: -5px;
list-style: none;
text-align: center;
}
.tags > li {
display: inline-block;
min-width: 10px;
padding: 3px 7px;
font-size: 12px;
font-weight: bold;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
background-color: #999;
border-radius: 10px;
}
.tags > li a {
color: #fff;
}
.metadata p:before,
.postlist .listdate:before {
content: " — ";
}
.metadata p:first-of-type:before {
content: "";
}
.metadata p {
display: inline;
}
.posttranslations h3 {
display: inline;
font-size: 1em;
font-weight: bold;
}
.posttranslations h3:last-child {
display: none;
}
.entry-content {
margin-top: 1em;
}
.navbar .brand {
padding: 0 20px;
}
.navbar .brand #blog-title {
padding: 10px 0;
display: inline-block;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

2280
themes/bootstrap/assets/js/bootstrap.js vendored Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Arabic (ar)
translated by: A.Rhman Sayes
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "الصورة {current} من {total}",
previous: "السابق",
next: "التالي",
close: "إغلاق",
xhrError: "حدث خطأ أثناء تحميل المحتوى.",
imgError: "حدث خطأ أثناء تحميل الصورة.",
slideshowStart: "تشغيل العرض",
slideshowStop: "إيقاف العرض"
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Bulgarian (bg)
translated by: Marian M.Bida
site: webmax.bg
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "изображение {current} от {total}",
previous: "предишна",
next: "следваща",
close: "затвори",
xhrError: "Неуспешно зареждане на съдържанието.",
imgError: "Неуспешно зареждане на изображението.",
slideshowStart: "пусни слайд-шоу",
slideshowStop: "спри слайд-шоу"
});

View file

@ -0,0 +1,13 @@
/*
jQuery Colorbox language configuration
language: Catala (ca)
translated by: eduard salla
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Imatge {current} de {total}",
previous: "Anterior",
next: "Següent",
close: "Tancar",
xhrError: "Error en la càrrega del contingut.",
imgError: "Error en la càrrega de la imatge."
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Czech (cs)
translated by: Filip Novak
site: mame.napilno.cz/filip-novak
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "{current}. obrázek z {total}",
previous: "Předchozí",
next: "Následující",
close: "Zavřít",
xhrError: "Obsah se nepodařilo načíst.",
imgError: "Obrázek se nepodařilo načíst.",
slideshowStart: "Spustit slideshow",
slideshowStop: "Zastavit slideshow"
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Danish (da)
translated by: danieljuhl
site: danieljuhl.dk
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Billede {current} af {total}",
previous: "Forrige",
next: "Næste",
close: "Luk",
xhrError: "Indholdet fejlede i indlæsningen.",
imgError: "Billedet fejlede i indlæsningen.",
slideshowStart: "Start slideshow",
slideshowStop: "Stop slideshow"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: German (de)
translated by: wallenium
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Bild {current} von {total}",
previous: "Zurück",
next: "Vor",
close: "Schließen",
xhrError: "Dieser Inhalt konnte nicht geladen werden.",
imgError: "Dieses Bild konnte nicht geladen werden.",
slideshowStart: "Slideshow starten",
slideshowStop: "Slideshow anhalten"
});

View file

@ -0,0 +1,13 @@
/*
jQuery Colorbox language configuration
language: Spanish (es)
translated by: migolo
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Imagen {current} de {total}",
previous: "Anterior",
next: "Siguiente",
close: "Cerrar",
xhrError: "Error en la carga del contenido.",
imgError: "Error en la carga de la imagen."
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Estonian (et)
translated by: keevitaja
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "{current}/{total}",
previous: "eelmine",
next: "järgmine",
close: "sulge",
xhrError: "Sisu ei õnnestunud laadida.",
imgError: "Pilti ei õnnestunud laadida.",
slideshowStart: "Käivita slaidid",
slideshowStop: "Peata slaidid"
});

View file

@ -0,0 +1,18 @@
/*
jQuery Colorbox language configuration
language: Persian (Farsi)
translated by: Mahdi Jaberzadeh Ansari (MJZSoft)
site: www.mjzsoft.ir
email: mahdijaberzadehansari (at) yahoo.co.uk
Please note : Persian language is right to left like arabic.
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "تصویر {current} از {total}",
previous: "قبلی",
next: "بعدی",
close: "بستن",
xhrError: "متاسفانه محتویات مورد نظر قابل نمایش نیست.",
imgError: "متاسفانه بارگذاری این عکس با مشکل مواجه شده است.",
slideshowStart: "آغاز نمایش خودکار",
slideshowStop: "توقف نمایش خودکار"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Finnish (fi)
translated by: Mikko
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Kuva {current} / {total}",
previous: "Edellinen",
next: "Seuraava",
close: "Sulje",
xhrError: "Sisällön lataaminen epäonnistui.",
imgError: "Kuvan lataaminen epäonnistui.",
slideshowStart: "Aloita kuvaesitys.",
slideshowStop: "Lopeta kuvaesitys."
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: French (fr)
translated by: oaubert
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "image {current} sur {total}",
previous: "pr&eacute;c&eacute;dente",
next: "suivante",
close: "fermer",
xhrError: "Impossible de charger ce contenu.",
imgError: "Impossible de charger cette image.",
slideshowStart: "d&eacute;marrer la pr&eacute;sentation",
slideshowStop: "arr&ecirc;ter la pr&eacute;sentation"
});

View file

@ -0,0 +1,13 @@
/*
jQuery Colorbox language configuration
language: Galician (gl)
translated by: donatorouco
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Imaxe {current} de {total}",
previous: "Anterior",
next: "Seguinte",
close: "Pechar",
xhrError: "Erro na carga do contido.",
imgError: "Erro na carga da imaxe."
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Greek (gr)
translated by: S.Demirtzoglou
site: webiq.gr
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Εικόνα {current} από {total}",
previous: "Προηγούμενη",
next: "Επόμενη",
close: "Απόκρυψη",
xhrError: "Το περιεχόμενο δεν μπόρεσε να φορτωθεί.",
imgError: "Απέτυχε η φόρτωση της εικόνας.",
slideshowStart: "Έναρξη παρουσίασης",
slideshowStop: "Παύση παρουσίασης"
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Hebrew (he)
translated by: DavidCo
site: DavidCo.me
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "תמונה {current} מתוך {total}",
previous: "הקודם",
next: "הבא",
close: "סגור",
xhrError: "שגיאה בטעינת התוכן.",
imgError: "שגיאה בטעינת התמונה.",
slideshowStart: "התחל מצגת",
slideshowStop: "עצור מצגת"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Croatian (hr)
translated by: Mladen Bicanic (base.hr)
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Slika {current} od {total}",
previous: "Prethodna",
next: "Sljedeća",
close: "Zatvori",
xhrError: "Neuspješno učitavanje sadržaja.",
imgError: "Neuspješno učitavanje slike.",
slideshowStart: "Pokreni slideshow",
slideshowStop: "Zaustavi slideshow"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Hungarian (hu)
translated by: kovadani
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "{current}/{total} kép",
previous: "Előző",
next: "Következő",
close: "Bezár",
xhrError: "A tartalmat nem sikerült betölteni.",
imgError: "A képet nem sikerült betölteni.",
slideshowStart: "Diavetítés indítása",
slideshowStop: "Diavetítés leállítása"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Indonesian (id)
translated by: sarwasunda
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "ke {current} dari {total}",
previous: "Sebelumnya",
next: "Berikutnya",
close: "Tutup",
xhrError: "Konten ini tidak dapat dimuat.",
imgError: "Gambar ini tidak dapat dimuat.",
slideshowStart: "Putar",
slideshowStop: "Berhenti"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Italian (it)
translated by: maur8ino
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Immagine {current} di {total}",
previous: "Precedente",
next: "Successiva",
close: "Chiudi",
xhrError: "Errore nel caricamento del contenuto.",
imgError: "Errore nel caricamento dell'immagine.",
slideshowStart: "Inizia la presentazione",
slideshowStop: "Termina la presentazione"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Japanaese (ja)
translated by: Hajime Fujimoto
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "{total}枚中{current}枚目",
previous: "前",
next: "次",
close: "閉じる",
xhrError: "コンテンツの読み込みに失敗しました",
imgError: "画像の読み込みに失敗しました",
slideshowStart: "スライドショー開始",
slideshowStop: "スライドショー終了"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Korean (kr)
translated by: lunareffect
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "총 {total} 중 {current}",
previous: "이전",
next: "다음",
close: "닫기",
xhrError: "컨텐츠를 불러오는 데 실패했습니다.",
imgError: "이미지를 불러오는 데 실패했습니다.",
slideshowStart: "슬라이드쇼 시작",
slideshowStop: "슬라이드쇼 중지"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Lithuanian (lt)
translated by: Tomas Norkūnas
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Nuotrauka {current} iš {total}",
previous: "Atgal",
next: "Pirmyn",
close: "Uždaryti",
xhrError: "Nepavyko užkrauti turinio.",
imgError: "Nepavyko užkrauti nuotraukos.",
slideshowStart: "Pradėti automatinę peržiūrą",
slideshowStop: "Sustabdyti automatinę peržiūrą"
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Latvian (lv)
translated by: Matiss Roberts Treinis
site: x0.lv
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "attēls {current} no {total}",
previous: "iepriekšējais",
next: "nākamais",
close: "aizvērt",
xhrError: "Neizdevās ielādēt saturu.",
imgError: "Neizdevās ielādēt attēlu.",
slideshowStart: "sākt slaidrādi",
slideshowStop: "apturēt slaidrādi"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Myanmar (my)
translated by: Yan Naing
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "ပုံ {total} မှာ {current} မြောက်ပုံ",
previous: "ရှေ့သို့",
next: "နောက်သို့",
close: "ပိတ်မည်",
xhrError: "ပါဝင်သော အကြောင်းအရာများ ဖော်ပြရာတွင် အနည်းငယ် ချို့ယွင်းမှုရှိနေပါသည်",
imgError: "ပုံပြသရာတွင် အနည်းငယ် ချို့ယွင်းချက် ရှိနေပါသည်",
slideshowStart: "ပုံများ စတင်ပြသမည်",
slideshowStop: "ပုံပြသခြင်း ရပ်ဆိုင်မည်"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Dutch (nl)
translated by: barryvdh
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Afbeelding {current} van {total}",
previous: "Vorige",
next: "Volgende",
close: "Sluiten",
xhrError: "Deze inhoud kan niet geladen worden.",
imgError: "Deze afbeelding kan niet geladen worden.",
slideshowStart: "Diashow starten",
slideshowStop: "Diashow stoppen"
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Norwegian (no)
translated by: lars-erik
site: markedspartner.no
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Bilde {current} av {total}",
previous: "Forrige",
next: "Neste",
close: "Lukk",
xhrError: "Feil ved lasting av innhold.",
imgError: "Feil ved lasting av bilde.",
slideshowStart: "Start lysbildefremvisning",
slideshowStop: "Stopp lysbildefremvisning"
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Polski (pl)
translated by: Tomasz Wasiński
site: 2bevisible.pl
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "{current}. obrazek z {total}",
previous: "Poprzedni",
next: "Następny",
close: "Zamknij",
xhrError: "Nie udało się załadować treści.",
imgError: "Nie udało się załadować obrazka.",
slideshowStart: "rozpocznij pokaz slajdów",
slideshowStop: "zatrzymaj pokaz slajdów"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Brazilian Portuguese (pt-br)
translated by: ReinaldoMT
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Imagem {current} de {total}",
previous: "Anterior",
next: "Próxima",
close: "Fechar",
slideshowStart: "iniciar apresentação de slides",
slideshowStop: "parar apresentação de slides",
xhrError: "Erro ao carregar o conteúdo.",
imgError: "Erro ao carregar a imagem."
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Romanian (ro)
translated by: shurub3l
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "imagine {current} din {total}",
previous: "precedenta",
next: "următoarea",
close: "închideți",
xhrError: "Acest conținut nu poate fi încărcat.",
imgError: "Această imagine nu poate fi încărcată",
slideshowStart: "începeți prezentarea (slideshow)",
slideshowStop: "opriți prezentarea (slideshow)"
});

View file

@ -0,0 +1,16 @@
/*
jQuery Colorbox language configuration
language: Russian (ru)
translated by: Marfa
site: themarfa.name
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "изображение {current} из {total}",
previous: "назад",
next: "вперёд",
close: "закрыть",
xhrError: "Не удалось загрузить содержимое.",
imgError: "Не удалось загрузить изображение.",
slideshowStart: "начать слайд-шоу",
slideshowStop: "остановить слайд-шоу"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Slovenian (si)
translated by: Boštjan Pišler (pisler.si)
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Slika {current} od {total}",
previous: "Prejšnja",
next: "Naslednja",
close: "Zapri",
xhrError: "Vsebine ni bilo mogoče naložiti.",
imgError: "Slike ni bilo mogoče naložiti.",
slideshowStart: "Zaženi prezentacijo",
slideshowStop: "Zaustavi prezentacijo"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Slovak (sk)
translated by: Jaroslav Kostal
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "{current}. obrázok z {total}",
previous: "Predchádzajúci",
next: "Následujúci",
close: "Zatvoriť",
xhrError: "Obsah sa nepodarilo načítať.",
imgError: "Obrázok sa nepodarilo načítať.",
slideshowStart: "Spustiť slideshow",
slideshowStop: "zastaviť slideshow"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Serbian (sr)
translated by: Sasa Stefanovic (baguje.com)
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Slika {current} od {total}",
previous: "Prethodna",
next: "Sledeća",
close: "Zatvori",
xhrError: "Neuspešno učitavanje sadržaja.",
imgError: "Neuspešno učitavanje slike.",
slideshowStart: "Pokreni slideshow",
slideshowStop: "Zaustavi slideshow"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Swedish (sv)
translated by: Mattias Reichel
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Bild {current} av {total}",
previous: "Föregående",
next: "Nästa",
close: "Stäng",
xhrError: "Innehållet kunde inte laddas.",
imgError: "Den här bilden kunde inte laddas.",
slideshowStart: "Starta bildspel",
slideshowStop: "Stoppa bildspel"
});

View file

@ -0,0 +1,19 @@
/*
jQuery Colorbox language configuration
language: Turkish (tr)
translated by: Caner ÖNCEL
site: egonomik.com
edited by: Sinan Eldem
www.sinaneldem.com.tr
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "Görsel {current} / {total}",
previous: "Önceki",
next: "Sonraki",
close: "Kapat",
xhrError: "İçerik yüklenirken hata meydana geldi.",
imgError: "Resim yüklenirken hata meydana geldi.",
slideshowStart: "Slaytı Başlat",
slideshowStop: "Slaytı Durdur"
});

View file

@ -0,0 +1,16 @@
/*
jQuery ColorBox language configuration
language: Ukrainian (uk)
translated by: Andrew
http://acisoftware.com.ua
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "зображення {current} з {total}",
previous: "попереднє",
next: "наступне",
close: "закрити",
xhrError: "Не вдалося завантажити вміст.",
imgError: "Не вдалося завантажити зображення.",
slideshowStart: "почати слайд-шоу",
slideshowStop: "зупинити слайд-шоу"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Chinese Simplified (zh-CN)
translated by: zhao weiming
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "当前图像 {current} 总共 {total}",
previous: "前一页",
next: "后一页",
close: "关闭",
xhrError: "此内容无法加载",
imgError: "此图片无法加载",
slideshowStart: "开始播放幻灯片",
slideshowStop: "停止播放幻灯片"
});

View file

@ -0,0 +1,15 @@
/*
jQuery Colorbox language configuration
language: Chinese Traditional (zh-TW)
translated by: Atans Chiu
*/
jQuery.extend(jQuery.colorbox.settings, {
current: "圖片 {current} 總共 {total}",
previous: "上一頁",
next: "下一頁",
close: "關閉",
xhrError: "此內容加載失敗.",
imgError: "此圖片加載失敗.",
slideshowStart: "開始幻燈片",
slideshowStop: "結束幻燈片"
});

View file

@ -0,0 +1,265 @@
/**
* Flowr.js - Simple jQuery plugin to emulate Flickr's justified view
* For usage information refer to http://github.com/kalyan02/flowr-js
*
*
* @author: Kalyan Chakravarthy (http://KalyanChakravarthy.net)
* @version: v0.1
*/
(function($){
//$("#container2").css( 'border', '1px solid #ccc');
$.fn.flowr = function(options) {
$this = this;
var ROW_CLASS_NAME = 'flowr-row'; // Class name for the row of flowy
var MAX_LAST_ROW_GAP = 25; // If the width of last row is lesser than max-width, recalculation is needed
var NO_COPY_FIELDS = [ 'complete', 'data', 'responsive' ]; // these attributes will not be carried forward for append related calls
var DEFAULTS = {
'data' : [],
'padding' : 5, // whats the padding between flowy items
'height' : 240, // Minimum height an image row should take
'render' : null, // callback function to get the tag
'append' : false, // TODO
'widthAttr' : 'width', // a custom data structure can specify which attribute refers to height/width
'heightAttr' : 'height',
'maxScale' : 1.5, // In case there is only 1 elment in last row
'maxWidth' : this.width()-1, // 1px is just for offset
'itemWidth' : null, // callback function for width
'itemHeight' : null, // callback function for height
'complete' : null, // complete callback
'rowClassName' : ROW_CLASS_NAME,
'rows' : -1, // Maximum number of rows to render. -1 for no limit.
'responsive' : true // make content responsive
};
var settings = $.extend( DEFAULTS, options);
// If data is being appended, we already have settings
// If we already have settings, retrieve them
if( settings.append && $this.data('lastSettings') ) {
lastSettings = $this.data('lastSettings');
// Copy over the settings from previous init
for( attr in DEFAULTS ) {
if( NO_COPY_FIELDS.indexOf(attr)<0 && settings[attr] == DEFAULTS[attr] ) {
settings[attr] = lastSettings[attr];
}
}
// Check if we have an incomplete last row
lastRow = $this.data('lastRow');
if( lastRow.data.length > 0 && settings.maxWidth-lastRow.width > MAX_LAST_ROW_GAP ) {
// Prepend the incomplete row to newly loaded data and redraw
lastRowData = lastSettings.data.slice( lastSettings.data.length - lastRow.data.length - 1 );
settings.data = lastRowData.concat(settings.data);
// Remove the incomplete row
// TODO: Don't reload this stuff later. Reattach to new row.
$( '.' + settings.rowClassName + ':last', $this ).detach();
} else {
// console.log( lastRow.data.length );
// console.log( lastRow.width );
}
}
// only on the first initial call
if( !settings.responsive && !settings.append )
$this.width( $this.width() );
// Basic sanity checks
if( !(settings.data instanceof Array) )
return;
if( typeof(settings.padding) != 'number' )
settings.padding = parseInt( settings.padding );
if( typeof(settings.itemWidth) != 'function' ) {
settings.itemWidth = function(data) {
return data[ settings.widthAttr ];
}
}
if( typeof(settings.itemHeight) != 'function' ) {
settings.itemHeight = function(data) {
return data[ settings.heightAttr ];
}
}
// A standalone utility to calculate the item widths for a particular row
// Returns rowWidth: width occupied & data : the items in the new row
var utils = {
getNextRow : function( data, settings ) {
var itemIndex = 0;
var itemsLength = data.length;
var lineItems = [];
var lineWidth = 0;
var maxWidth = settings.maxWidth;
var paddingSize = settings.padding;
// console.log( 'maxItems=' + data.length );
requiredPadding = function() {
var extraPads = arguments.length == 1 ? arguments[0] : 0;
return (lineItems.length - 1 + extraPads) * settings.padding;
}
while( lineWidth + requiredPadding() < settings.maxWidth && (itemIndex < itemsLength) ) {
var itemData = data[ itemIndex ];
var itemWidth = settings.itemWidth.call( $this, itemData );
var itemHeight = settings.itemHeight.call( $this, itemData );
var minHeight = settings.height;
var minWidth = Math.floor( itemWidth * settings.height / itemHeight );
var newLineWidth = lineWidth + minWidth + requiredPadding(1);
if (minWidth > settings.maxWidth) {
// very short+wide images like panoramas
// show them even if ugly, as wide as possible
minWidth = settings.maxWidth-1;
minHeight = settings.height * minHeight / minWidth;
}
// console.log( 'lineWidth = ' + lineWidth );
// console.log( 'newLineWidth = ' + newLineWidth );
if( newLineWidth < settings.maxWidth ) {
lineItems.push({
'height' : minHeight,
'width' : minWidth,
'itemData' : itemData
});
lineWidth += minWidth;
itemIndex ++;
} else {
// We'd have exceeded width. So break off to scale.
// console.log( 'breaking off = ' + itemIndex );
// console.log( 'leave off size = ' + lineItems.length );
break;
}
} //while
// Scale the size to max width
testWidth=0;
if( lineWidth < settings.maxWidth ) {
var fullScaleWidth = settings.maxWidth - requiredPadding() - 10;
var currScaleWidth = lineWidth;
var scaleFactor = fullScaleWidth / currScaleWidth;
if( scaleFactor > settings.maxScale )
scaleFactor = 1;
var newHeight = Math.round( settings.height * scaleFactor );
for( i=0; i<lineItems.length; i++ ) {
var lineItem = lineItems[ i ];
lineItem.width = Math.floor(lineItem.width * scaleFactor);
lineItem.height = newHeight;
testWidth += lineItem.width;
}
}
return {
data : lineItems,
width : testWidth + requiredPadding()
};
}, //getNextRow
reorderContent : function(){
/*
TODO: optimize for faster resizing by reusing dom objects instead of killing the dom
*/
var _initialWidth = $this.data('width');
var _newWidth = $this.width();
var _change = _initialWidth - _newWidth;
if(_initialWidth!=_newWidth) {
$this.html('');
var _settings = $this.data( 'lastSettings' );
_settings.data = $this.data( 'data' );
_settings.maxWidth = $this.width() - 1;
$this.flowr( _settings );
}
}
} //utils
// If the resposive var is set to true then listen for resize method
// and prevent resizing from happening twice if responsive is set again during append phase!
if( settings.responsive && !$this.data('__responsive') ) {
$(window).resize(function(){
initialWidth = $this.data('width');
newWidth = $this.width();
//initiate resize
if( initialWidth != newWidth ) {
var task_id = $this.data('task_id');
if( task_id ) {
task_id = clearTimeout( task_id );
task_id = null;
}
task_id = setTimeout( utils.reorderContent, 80 );
$this.data('task_id', task_id );
}
});
$this.data('__responsive',true);
}
return this.each(function(){
// Get a copy of original data. 1 level deep copy is sufficient.
var data = settings.data.slice(0);
var rowData = null;
var currentRow = 0;
var currentItem = 0;
// Store all the data
var allData = $this.data( 'data' ) || [];
for(i=0;i<data.length;i++) {
allData.push( data[i] );
}
$this.data( 'data', allData );
// While we have a new row
while( ( rowData = utils.getNextRow(data,settings) ) != null && rowData.data.length > 0 ) {
if( settings.rows > 0 && currentRow >= settings.rows )
break;
// remove the number of elements in the new row from the top of data stack
data.splice( 0, rowData.data.length );
// Create a new row div, add class, append the htmls and insert the flowy items
var $row = $('<div>').addClass(settings.rowClassName);
for( i=0; i<rowData.data.length; i++ ) {
var displayData = rowData.data[i];
// Get the HTML object from custom render function passed as argument
var displayObject = settings.render.call( $this, displayData );
displayObject = $(displayObject);
// Set some basic stuff
displayObject
.css( 'width', displayData.width )
.css( 'height', displayData.height )
.css( 'margin-left', i==0 ? '0' : settings.padding + "px" ); //TODO:Refactor
$row.append( displayObject );
currentItem++;
}
$this.append( $row );
// console.log ( "I> rowData.data.length="+rowData.data.length +" rowData.width="+rowData.width );
currentRow++;
$this.data('lastRow', rowData );
}
// store the current state of settings and the items in last row
// we'll need this info when we append more items
$this.data('lastSettings', settings );
// onComplete callback
// pass back info about list of rows and items rendered
if( typeof (settings.complete) == 'function' ) {
var completeData = {
renderedRows : currentRow,
renderedItems : currentItem
}
settings.complete.call( $this, completeData );
}
});
};
})(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
themes/bootstrap/bundles Normal file
View file

@ -0,0 +1,4 @@
assets/css/all-nocdn.css=bootstrap.css,bootstrap-responsive.css,rst.css,code.css,colorbox.css,theme.css,custom.css
assets/css/all.css=rst.css,code.css,colorbox.css,theme.css,custom.css
assets/js/all-nocdn.js=jquery.min.js,bootstrap.min.js,jquery.colorbox-min.js,moment-with-locales.min.js,fancydates.js
assets/js/all.js=jquery.colorbox-min.js,moment-with-locales.min.js,fancydates.js

1
themes/bootstrap/engine Normal file
View file

@ -0,0 +1 @@
mako

1
themes/bootstrap/parent Normal file
View file

@ -0,0 +1 @@
base

View file

@ -0,0 +1,93 @@
## -*- coding: utf-8 -*-
<%namespace name="base" file="base_helper.tmpl" import="*" />
<%namespace name="notes" file="annotation_helper.tmpl" import="*" />
${set_locale(lang)}
${base.html_headstart()}
<%block name="extra_head">
### Leave this block alone.
</%block>
${template_hooks['extra_head']()}
</head>
<body>
<a href="#content" class="sr-only sr-only-focusable">${messages("Skip to main content")}</a>
<!-- Menubar -->
<div class="navbar navbar-fixed-top" id="navbar">
<div class="navbar-inner">
<div class="container">
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="${abs_link('/')}">
%if logo_url:
<img src="${logo_url}" alt="${blog_title}" id="logo">
%endif
% if show_blog_title:
<span id="blog-title">${blog_title}</span>
% endif
</a>
<!-- Everything you want hidden at 940px or less, place within here -->
<div class="nav-collapse collapse">
<ul class="nav">
${base.html_navigation_links()}
${template_hooks['menu']()}
</ul>
%if search_form:
${search_form}
%endif
<ul class="nav pull-right">
<%block name="belowtitle">
%if len(translations) > 1:
<li>${base.html_translations()}</li>
%endif
</%block>
% if show_sourcelink:
<li><%block name="sourcelink"></%block></li>
%endif
${template_hooks['menu_alt']()}
</ul>
</div>
</div>
</div>
</div>
<!-- End of Menubar -->
<div class="container-fluid" id="content">
<!--Body content-->
<div class="row-fluid">
<div class="span2"></div>
<div class="span8">
${template_hooks['page_header']()}
<%block name="content"></%block>
</div>
</div>
<!--End of body content-->
</div>
<div class="footerbox">
${content_footer}
${template_hooks['page_footer']()}
</div>
${base.late_load_js()}
<script>jQuery("a.image-reference").colorbox({rel:"gal",maxWidth:"100%",maxHeight:"100%",scalePhotos:true});</script>
<!-- fancy dates -->
<script>
moment.locale("${momentjs_locales[lang]}");
fancydates(${date_fanciness}, ${js_date_format});
</script>
<!-- end fancy dates -->
<%block name="extra_js"></%block>
% if annotations and post and not post.meta('noannotations'):
${notes.code()}
% elif not annotations and post and post.meta('annotations'):
${notes.code()}
% endif
${body_end}
${template_hooks['body_end']()}
</body>
</html>

View file

@ -0,0 +1,170 @@
## -*- coding: utf-8 -*-
<%def name="html_headstart()">
<!DOCTYPE html>
<html
\
% if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']) or (comment_system == 'facebook'):
prefix='\
%if use_open_graph or (twitter_card and twitter_card['use_twitter_cards']):
og: http://ogp.me/ns# \
%endif
%if use_open_graph:
article: http://ogp.me/ns/article# \
%endif
%if comment_system == 'facebook':
fb: http://ogp.me/ns/fb# \
%endif
'\
%endif
\
% if is_rtl:
dir="rtl" \
% endif
\
lang="${lang}">
<head>
<meta charset="utf-8">
%if description:
<meta name="description" content="${description}">
%endif
<meta name="viewport" content="width=device-width">
<title>${title|striphtml} | ${blog_title|striphtml}</title>
${html_stylesheets()}
${html_feedlinks()}
%if permalink:
<link rel="canonical" href="${abs_link(permalink)}">
%endif
%if favicons:
%for name, file, size in favicons:
<link rel="${name}" href="${file}" sizes="${size}"/>
%endfor
%endif
% if comment_system == 'facebook':
<meta property="fb:app_id" content="${comment_system_id}">
% endif
%if prevlink:
<link rel="prev" href="${prevlink}" type="text/html">
%endif
%if nextlink:
<link rel="next" href="${nextlink}" type="text/html">
%endif
${mathjax_config}
%if use_cdn:
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
%else:
<!--[if lt IE 9]><script src="${url_replacer(permalink, '/assets/js/html5.js', lang)}"></script><![endif]-->
%endif
${extra_head_data}
</%def>
<%def name="late_load_js()">
%if use_bundles:
%if use_cdn:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
<script src="/assets/js/all.js"></script>
%else:
<script src="/assets/js/all-nocdn.js"></script>
%endif
%else:
%if use_cdn:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
%else:
<script src="/assets/js/jquery.min.js"></script>
<script src="/assets/js/bootstrap.min.js"></script>
<script src="/assets/js/moment-with-locales.min.js"></script>
<script src="/assets/js/fancydates.js"></script>
%endif
<script src="/assets/js/jquery.colorbox-min.js"></script>
%endif
%if colorbox_locales[lang]:
<script src="/assets/js/colorbox-i18n/jquery.colorbox-${colorbox_locales[lang]}.js"></script>
%endif
${social_buttons_code}
</%def>
<%def name="html_stylesheets()">
%if use_bundles:
%if use_cdn:
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<link href="/assets/css/all.css" rel="stylesheet" type="text/css">
%else:
<link href="/assets/css/all-nocdn.css" rel="stylesheet" type="text/css">
%endif
%else:
%if use_cdn:
<link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
%else:
<link href="/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="/assets/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css">
%endif
<link href="/assets/css/rst.css" rel="stylesheet" type="text/css">
<link href="/assets/css/code.css" rel="stylesheet" type="text/css">
<link href="/assets/css/colorbox.css" rel="stylesheet" type="text/css">
<link href="/assets/css/theme.css" rel="stylesheet" type="text/css">
%if has_custom_css:
<link href="/assets/css/custom.css" rel="stylesheet" type="text/css">
%endif
%endif
% if annotations and post and not post.meta('noannotations'):
${notes.css()}
% elif not annotations and post and post.meta('annotations'):
${notes.css()}
% endif
</%def>
<%def name="html_navigation_links()">
%for url, text in navigation_links[lang]:
% if isinstance(url, tuple):
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">${text}<b class="caret"></b></a>
<ul class="dropdown-menu">
%for suburl, text in url:
% if rel_link(permalink, suburl) == "#":
<li class="active"><a href="${permalink}">${text}</a>
%else:
<li><a href="${suburl}">${text}</a>
%endif
%endfor
</ul>
% else:
% if rel_link(permalink, url) == "#":
<li class="active"><a href="${permalink}">${text}</a>
%else:
<li><a href="${url}">${text}</a>
%endif
% endif
%endfor
</%def>
<%def name="html_feedlinks()">
%if rss_link:
${rss_link}
%elif generate_rss:
%if len(translations) > 1:
%for language in translations:
<link rel="alternate" type="application/rss+xml" title="RSS (${language})" href="${_link('rss', None, language)}">
%endfor
%else:
<link rel="alternate" type="application/rss+xml" title="RSS" href="${_link('rss', None)}">
%endif
%endif
</%def>
<%def name="html_translations()">
%for langname in translations.keys():
%if langname != lang:
<li><a href="${_link("index", None, langname)}" rel="alternate" hreflang="${langname}">${messages("LANGUAGE", langname)}</a></li>
%endif
%endfor
</%def>

View file

@ -0,0 +1,93 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
<%namespace name="comments" file="comments_helper.tmpl"/>
<%namespace name="ui" file="crumbs.tmpl" import="bar"/>
<%block name="sourcelink"></%block>
<%block name="content">
${ui.bar(crumbs)}
%if title:
<h1>${title}</h1>
%endif
%if post:
<p>
${post.text()}
</p>
%endif
%if folders:
<ul>
% for folder, ftitle in folders:
<li><a href="${folder}"><i class="icon-folder-open"></i>&nbsp;${ftitle}</a></li>
% endfor
</ul>
%endif
<div id="gallery_container"></div>
%if photo_array:
<noscript>
<ul class="thumbnails">
%for image in photo_array:
<li><a href="${image['url']}" class="thumbnail image-reference" title="${image['title']}">
<img src="${image['url_thumb']}" alt="${image['title']}" /></a>
%endfor
</ul>
</noscript>
%endif
%if site_has_comments and enable_comments:
${comments.comment_form(None, permalink, title)}
%endif
</%block>
<%block name="extra_head">
${parent.extra_head()}
<style type="text/css">
.image-block {
display: inline-block;
}
.flowr_row {
width: 100%;
}
</style>
</%block>
<%block name="extra_js">
<script src="/assets/js/flowr.plugin.js"></script>
<script>
jsonContent = ${photo_array_json};
$("#gallery_container").flowr({
data : jsonContent,
height : ${thumbnail_size}*.6,
padding: 5,
rows: -1,
render : function(params) {
// Just return a div, string or a dom object, anything works fine
img = $("<img />").attr({
'src': params.itemData.url_thumb,
'width' : params.width,
'height' : params.height
}).css('max-width', '100%');
link = $( "<a></a>").attr({
'href': params.itemData.url,
'class': 'image-reference'
});
div = $("<div />").addClass('image-block').attr({
'title': params.itemData.title,
'data-toggle': "tooltip",
});
link.append(img);
div.append(link);
div.hover(div.tooltip());
return div;
},
itemWidth : function(data) { return data.size.w; },
itemHeight : function(data) { return data.size.h; },
complete : function(params) {
if( jsonContent.length > params.renderedItems ) {
nextRenderList = jsonContent.slice( params.renderedItems );
}
}
});
$("a.image-reference").colorbox({rel:"gal", maxWidth:"100%",maxHeight:"100%",scalePhotos:true});
</script>
</%block>

View file

@ -0,0 +1,28 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
<%namespace name="ui" file="crumbs.tmpl" import="bar"/>
<%block name="content">
${ui.bar(crumbs)}
%if folders or files:
<ul class="list-unstyled">
% for name in folders:
<li><a href="${name}"><i class="icon-folder-open"></i> ${name}</a>
% endfor
% for name in files:
<li><a href="${name}.html"><i class="icon-file"></i> ${name}</a>
% endfor
</ul>
%endif
% if code:
${code}
% endif
</%block>
<%block name="sourcelink">
% if source_link:
<li>
<a href="${source_link}" id="sourcelink">${messages("Source")}</a>
</li>
% endif
</%block>

View file

@ -0,0 +1,56 @@
## -*- coding: utf-8 -*-
<%namespace name="helper" file="post_helper.tmpl"/>
<%namespace name="pheader" file="post_header.tmpl"/>
<%namespace name="comments" file="comments_helper.tmpl"/>
<%inherit file="base.tmpl"/>
<%block name="extra_head">
${parent.extra_head()}
% if post.meta('keywords'):
<meta name="keywords" content="${post.meta('keywords')|h}">
% endif
%if post.description():
<meta name="description" itemprop="description" content="${post.description()}">
%endif
<meta name="author" content="${post.author()}">
%if post.prev_post:
<link rel="prev" href="${post.prev_post.permalink()}" title="${post.prev_post.title()}" type="text/html">
%endif
%if post.next_post:
<link rel="next" href="${post.next_post.permalink()}" title="${post.next_post.title()}" type="text/html">
%endif
${helper.open_graph_metadata(post)}
${helper.twitter_card_information(post)}
${helper.meta_translations(post)}
</%block>
<%block name="content">
<article class="post-${post.meta('type')} h-entry hentry postpage" itemscope="itemscope" itemtype="http://schema.org/Article">
${pheader.html_post_header()}
<div class="e-content entry-content" itemprop="articleBody text">
${post.text()}
</div>
<aside class="postpromonav">
<nav>
${helper.html_tags(post)}
${helper.html_pager(post)}
</nav>
</aside>
% if not post.meta('nocomments') and site_has_comments:
<section class="comments">
<h2>${messages("Comments")}</h2>
${comments.comment_form(post.permalink(absolute=True), post.title(), post._base_path)}
</section>
% endif
${helper.mathjax_script(post)}
</article>
${comments.comment_link_script()}
</%block>
<%block name="sourcelink">
% if show_sourcelink:
<li>
<a href="${post.source_link()}" id="sourcelink">${messages("Source")}</a>
</li>
% endif
</%block>

View file

@ -0,0 +1,24 @@
<%block name="content">
<div id="${carousel_id}" class="carousel slide">
<ol class="carousel-indicators">
% for i in range(len(slides_content)):
% if i == 0:
<li data-target="#${carousel_id}" data-slide-to="${i}" class="active"></li>
% else:
<li data-target="#${carousel_id}" data-slide-to="${i}"></li>
% endif
% endfor
</ol>
<div class="carousel-inner">
% for i, image in enumerate(slides_content):
% if i == 0:
<div class="item active"><img src="${image}" alt="" style="margin: 0 auto 0 auto;"></div>
% else:
<div class="item"><img src="${image}" alt="" style="margin: 0 auto 0 auto;"></div>
% endif
% endfor
</div>
<a class="left carousel-control" href="#${carousel_id}" data-slide="prev">&lsaquo;</a>
<a class="right carousel-control" href="#${carousel_id}" data-slide="next">&rsaquo;</a>
</div>
</%block>

View file

@ -0,0 +1,26 @@
## -*- coding: utf-8 -*-
<%inherit file="base.tmpl"/>
<%block name="content">
<h1>${title}</h1>
% if cat_items:
<h2>${messages("Categories")}</h2>
<ul class="unstyled">
% for text, link in cat_items:
% if text:
<li><a class="reference badge" href="${link}">${text}</a></li>
% endif
% endfor
</ul>
% if items:
<h2>${messages("Tags")}</h2>
% endif
%endif
% if items:
<ul class="list-inline">
% for text, link in items:
<li><a class="reference badge" href="${link}">${text}</a></li>
% endfor
</ul>
% endif
</%block>