j
7 years ago
52 changed files with 3359 additions and 577 deletions
@ -1,2 +1,10 @@ |
|||
static |
|||
data |
|||
*.pyc |
|||
__pycache__ |
|||
venv |
|||
local_settings.py |
|||
camp.json |
|||
*.swp |
|||
*.swo |
|||
secret.txt |
|||
|
@ -0,0 +1,4 @@ |
|||
|
|||
setup venv: |
|||
|
|||
virtualenv --system-site-packages venv |
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,170 @@ |
|||
/** VARIABLES |
|||
===================================*/ |
|||
/** RESET AND LAYOUT |
|||
===================================*/ |
|||
.bx-wrapper { |
|||
position: relative; |
|||
margin-bottom: 60px; |
|||
padding: 0; |
|||
*zoom: 1; |
|||
-ms-touch-action: pan-y; |
|||
touch-action: pan-y; |
|||
} |
|||
.bx-wrapper img { |
|||
max-width: 100%; |
|||
display: block; |
|||
} |
|||
.bxslider { |
|||
margin: 0; |
|||
padding: 0; |
|||
} |
|||
ul.bxslider { |
|||
list-style: none; |
|||
} |
|||
.bx-viewport { |
|||
/*fix other elements on the page moving (on Chrome)*/ |
|||
-webkit-transform: translatez(0); |
|||
} |
|||
/** THEME |
|||
===================================*/ |
|||
|
|||
.bx-wrapper .bx-pager, |
|||
.bx-wrapper .bx-controls-auto { |
|||
position: absolute; |
|||
bottom: -30px; |
|||
width: 100%; |
|||
} |
|||
/* LOADER */ |
|||
.bx-wrapper .bx-loading { |
|||
min-height: 50px; |
|||
height: auto; |
|||
width: 100%; |
|||
position: absolute; |
|||
top: 0; |
|||
left: 0; |
|||
z-index: 2000; |
|||
} |
|||
/* PAGER */ |
|||
.bx-wrapper .bx-pager { |
|||
text-align: center; |
|||
font-size: .85em; |
|||
font-family: Arial; |
|||
font-weight: bold; |
|||
color: #666; |
|||
padding-top: 20px; |
|||
} |
|||
.bx-wrapper .bx-pager.bx-default-pager a { |
|||
background: #666; |
|||
text-indent: -9999px; |
|||
display: block; |
|||
width: 10px; |
|||
height: 10px; |
|||
margin: 0 5px; |
|||
outline: 0; |
|||
-moz-border-radius: 5px; |
|||
-webkit-border-radius: 5px; |
|||
border-radius: 5px; |
|||
} |
|||
.bx-wrapper .bx-pager.bx-default-pager a:hover, |
|||
.bx-wrapper .bx-pager.bx-default-pager a.active, |
|||
.bx-wrapper .bx-pager.bx-default-pager a:focus { |
|||
background: #000; |
|||
} |
|||
.bx-wrapper .bx-pager-item, |
|||
.bx-wrapper .bx-controls-auto .bx-controls-auto-item { |
|||
display: inline-block; |
|||
vertical-align: bottom; |
|||
*zoom: 1; |
|||
*display: inline; |
|||
} |
|||
.bx-wrapper .bx-pager-item { |
|||
font-size: 0; |
|||
line-height: 0; |
|||
} |
|||
/* DIRECTION CONTROLS (NEXT / PREV) */ |
|||
.bx-wrapper .bx-prev { |
|||
left: 10px; |
|||
background: url('controls.png') no-repeat 0 -32px; |
|||
} |
|||
.bx-wrapper .bx-prev:hover, |
|||
.bx-wrapper .bx-prev:focus { |
|||
background-position: 0 0; |
|||
} |
|||
.bx-wrapper .bx-next { |
|||
right: 30px; |
|||
background: url('controls.png') no-repeat -43px -32px; |
|||
} |
|||
.bx-wrapper .bx-next:hover, |
|||
.bx-wrapper .bx-next:focus { |
|||
background-position: -43px 0; |
|||
} |
|||
.bx-wrapper .bx-controls-direction a { |
|||
position: absolute; |
|||
top: 50%; |
|||
margin-top: -16px; |
|||
outline: 0; |
|||
width: 32px; |
|||
height: 32px; |
|||
text-indent: -9999px; |
|||
z-index: 9999; |
|||
} |
|||
.bx-wrapper .bx-controls-direction a.disabled { |
|||
display: none; |
|||
} |
|||
/* AUTO CONTROLS (START / STOP) */ |
|||
.bx-wrapper .bx-controls-auto { |
|||
text-align: center; |
|||
} |
|||
.bx-wrapper .bx-controls-auto .bx-start { |
|||
display: block; |
|||
text-indent: -9999px; |
|||
width: 10px; |
|||
height: 11px; |
|||
outline: 0; |
|||
background: url('images/controls.png') -86px -11px no-repeat; |
|||
margin: 0 3px; |
|||
} |
|||
.bx-wrapper .bx-controls-auto .bx-start:hover, |
|||
.bx-wrapper .bx-controls-auto .bx-start.active, |
|||
.bx-wrapper .bx-controls-auto .bx-start:focus { |
|||
background-position: -86px 0; |
|||
} |
|||
.bx-wrapper .bx-controls-auto .bx-stop { |
|||
display: block; |
|||
text-indent: -9999px; |
|||
width: 9px; |
|||
height: 11px; |
|||
outline: 0; |
|||
background: url('images/controls.png') -86px -44px no-repeat; |
|||
margin: 0 3px; |
|||
} |
|||
.bx-wrapper .bx-controls-auto .bx-stop:hover, |
|||
.bx-wrapper .bx-controls-auto .bx-stop.active, |
|||
.bx-wrapper .bx-controls-auto .bx-stop:focus { |
|||
background-position: -86px -33px; |
|||
} |
|||
/* PAGER WITH AUTO-CONTROLS HYBRID LAYOUT */ |
|||
.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-pager { |
|||
text-align: left; |
|||
width: 80%; |
|||
} |
|||
.bx-wrapper .bx-controls.bx-has-controls-auto.bx-has-pager .bx-controls-auto { |
|||
right: 0; |
|||
width: 35px; |
|||
} |
|||
/* IMAGE CAPTIONS */ |
|||
.bx-wrapper .bx-caption { |
|||
position: absolute; |
|||
bottom: 0; |
|||
left: 0; |
|||
background: #666; |
|||
background: rgba(80, 80, 80, 0.75); |
|||
width: 100%; |
|||
} |
|||
.bx-wrapper .bx-caption span { |
|||
color: #fff; |
|||
font-family: Arial; |
|||
display: block; |
|||
font-size: .85em; |
|||
padding: 10px; |
|||
} |
@ -0,0 +1,144 @@ |
|||
body { |
|||
background-color: #000000 !important; |
|||
font-size: 14px !important; |
|||
color: #ffffff !important; |
|||
overflow-x: hidden; |
|||
} |
|||
|
|||
.content_detail { |
|||
width: 70%; |
|||
padding-left: 5%; |
|||
} |
|||
|
|||
.right-items { |
|||
padding-bottom: 0.5em; |
|||
padding-top: 0.5em; |
|||
} |
|||
|
|||
body, h1, h2, h3, h4, h5, h6 { |
|||
font-family: Open Sans !important; |
|||
} |
|||
|
|||
|
|||
.sidebar-h4 { |
|||
font-weight: 600; |
|||
text-transform: uppercase; |
|||
font-size: 14px; |
|||
color: #ffffff; |
|||
} |
|||
|
|||
.sidebar-title { |
|||
text-transform: capitalize; |
|||
font-weight: 800; |
|||
font-style: italic; |
|||
font-size: 14px; |
|||
color: #1779ba; |
|||
} |
|||
|
|||
.sidebar-title :hover { |
|||
color: #ffffff; |
|||
} |
|||
|
|||
a:focus, a:hover { |
|||
color: #ffffff !important; |
|||
} |
|||
|
|||
.sidebar-date { |
|||
text-transform: uppercase; |
|||
font-size: 10px; |
|||
} |
|||
|
|||
.news { |
|||
padding-left: 10px; |
|||
} |
|||
|
|||
.special-column { |
|||
padding-left: 0em !important; |
|||
} |
|||
|
|||
.index-text { |
|||
padding-left: 3%; |
|||
padding-right: 1%; |
|||
padding-top: 10px; |
|||
} |
|||
|
|||
.index-text p { |
|||
text-align: justify; |
|||
} |
|||
|
|||
.title-bar-right { |
|||
margin-right: 2em; |
|||
margin-top: 1em; |
|||
} |
|||
|
|||
.menu-icon::after{ |
|||
background: #ffffff none repeat scroll 0 0 !important; |
|||
box-shadow: 0 7px 0 #ffffff, 0 14px 0 #ffffff !important; |
|||
} |
|||
|
|||
.big-title { |
|||
color: #ffffff; |
|||
font-weight: 600; |
|||
font-size: 1em; |
|||
} |
|||
|
|||
.big-date { |
|||
font-size: 1em; |
|||
text-transform: uppercase; |
|||
} |
|||
|
|||
.vertical-menu li { |
|||
list-style: none; |
|||
padding-top: 2em; |
|||
padding-left: 1em; |
|||
font-weight: 600; |
|||
font-size: 1em; |
|||
color: #ef4e5c; |
|||
background-color: #dddddd; |
|||
} |
|||
|
|||
.off-canvas { |
|||
background-color: #dddddd !important; |
|||
} |
|||
|
|||
.position-right.is-transition-push::after { |
|||
box-shadow: none !important; |
|||
} |
|||
|
|||
ul.clearing-thumbs li { |
|||
list-style: none; |
|||
display: inline; |
|||
padding-right: 3px; |
|||
} |
|||
|
|||
|
|||
.page-header { |
|||
margin-top: 30px; |
|||
padding-bottom: 20px; |
|||
} |
|||
|
|||
.thumbnail { |
|||
border: none; |
|||
} |
|||
|
|||
.results { |
|||
padding: 20px; |
|||
} |
|||
|
|||
.results-title { |
|||
padding-top: 20px; |
|||
padding-left: 20px; |
|||
} |
|||
|
|||
.pagination { |
|||
padding-bottom: 20px; |
|||
} |
|||
|
|||
.pagination a, .pagination button { |
|||
color: #ffffff !important; |
|||
} |
|||
|
|||
.pagination a:hover, |
|||
.pagination button:hover { |
|||
background: #1779ba !important; } |
|||
|
@ -0,0 +1,33 @@ |
|||
/** |
|||
* Here's where everything gets included. You don't need |
|||
* to change anything here, and doing so might break |
|||
* stuff. Here be dragons and all that. |
|||
*/ |
|||
/** |
|||
* Default variables |
|||
* |
|||
* While these can be set with JavaScript, it's probably |
|||
* better and faster to just set them here, compile to |
|||
* CSS and include that instead to use some of that |
|||
* hardware-accelerated goodness. |
|||
*/ |
|||
.unslider-nav ol { |
|||
list-style: none; |
|||
text-align: center; |
|||
} |
|||
.unslider-nav ol li { |
|||
display: inline-block; |
|||
width: 6px; |
|||
height: 6px; |
|||
margin: 0 4px; |
|||
background: transparent; |
|||
border-radius: 5px; |
|||
overflow: hidden; |
|||
text-indent: -999em; |
|||
border: 2px solid #fff; |
|||
cursor: pointer; |
|||
} |
|||
.unslider-nav ol li.unslider-active { |
|||
background: #fff; |
|||
cursor: default; |
|||
} |
@ -0,0 +1 @@ |
|||
.unslider{overflow:auto;margin:0;padding:0}.unslider-wrap{position:relative}.unslider-wrap.unslider-carousel>li{float:left}.unslider-vertical>ul{height:100%}.unslider-vertical li{float:none;width:100%}.unslider-fade{position:relative}.unslider-fade .unslider-wrap li{position:absolute;left:0;top:0;right:0;z-index:8}.unslider-fade .unslider-wrap li.unslider-active{z-index:10}.unslider li,.unslider ol,.unslider ul{list-style:none;margin:0;padding:0;border:none}.unslider-arrow{position:absolute;left:20px;z-index:2;cursor:pointer}.unslider-arrow.next{left:auto;right:20px} |
File diff suppressed because it is too large
@ -0,0 +1 @@ |
|||
(function(e,t){if(!e)return t;var n=function(){this.el=t;this.items=t;this.sizes=[];this.max=[0,0];this.current=0;this.interval=t;this.opts={speed:500,delay:3e3,complete:t,keys:!t,dots:t,fluid:t};var n=this;this.init=function(t,n){this.el=t;this.ul=t.children("ul");this.max=[t.outerWidth(),t.outerHeight()];this.items=this.ul.children("li").each(this.calculate);this.opts=e.extend(this.opts,n);this.setup();return this};this.calculate=function(t){var r=e(this),i=r.outerWidth(),s=r.outerHeight();n.sizes[t]=[i,s];if(i>n.max[0])n.max[0]=i;if(s>n.max[1])n.max[1]=s};this.setup=function(){this.el.css({overflow:"hidden",width:n.max[0],height:this.items.first().outerHeight()});this.ul.css({width:this.items.length*100+"%",position:"relative"});this.items.css("width",100/this.items.length+"%");if(this.opts.delay!==t){this.start();this.el.hover(this.stop,this.start)}this.opts.keys&&e(document).keydown(this.keys);this.opts.dots&&this.dots();if(this.opts.fluid){var r=function(){n.el.css("width",Math.min(Math.round(n.el.outerWidth()/n.el.parent().outerWidth()*100),100)+"%")};r();e(window).resize(r)}if(this.opts.arrows){this.el.parent().append('<p class="arrows"><span class="prev">â†</span><span class="next">→</span></p>').find(".arrows span").click(function(){e.isFunction(n[this.className])&&n[this.className]()})}if(e.event.swipe){this.el.on("swipeleft",n.prev).on("swiperight",n.next)}};this.move=function(t,r){if(!this.items.eq(t).length)t=0;if(t<0)t=this.items.length-1;var i=this.items.eq(t);var s={height:i.outerHeight()};var o=r?5:this.opts.speed;if(!this.ul.is(":animated")){n.el.find(".dot:eq("+t+")").addClass("active").siblings().removeClass("active");this.el.animate(s,o)&&this.ul.animate(e.extend({left:"-"+t+"00%"},s),o,function(i){n.current=t;e.isFunction(n.opts.complete)&&!r&&n.opts.complete(n.el)})}};this.start=function(){n.interval=setInterval(function(){n.move(n.current+1)},n.opts.delay)};this.stop=function(){n.interval=clearInterval(n.interval);return n};this.keys=function(t){var r=t.which;var i={37:n.prev,39:n.next,27:n.stop};if(e.isFunction(i[r])){i[r]()}};this.next=function(){return n.stop().move(n.current+1)};this.prev=function(){return n.stop().move(n.current-1)};this.dots=function(){var t='<ol class="dots">';e.each(this.items,function(e){t+='<li class="dot'+(e<1?" active":"")+'">'+(e+1)+"</li>"});t+="</ol>";this.el.addClass("has-dots").append(t).find(".dot").click(function(){n.move(e(this).index())})}};e.fn.unslider=function(t){var r=this.length;return this.each(function(i){var s=e(this);var u=(new n).init(s,t);s.data("unslider"+(r>1?"-"+(i+1):""),u)})}})(window.jQuery,false) |
@ -0,0 +1,38 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.1 on 2017-06-21 09:15 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import markdownx.models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('content', '0001_initial'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.CreateModel( |
|||
name='MyModel', |
|||
fields=[ |
|||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|||
('myfield', markdownx.models.MarkdownxField()), |
|||
], |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='body', |
|||
field=markdownx.models.MarkdownxField(), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='header', |
|||
field=markdownx.models.MarkdownxField(), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='image', |
|||
name='image', |
|||
field=models.ImageField(upload_to='camp/static/images'), |
|||
), |
|||
] |
@ -0,0 +1,42 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.8 on 2017-12-18 11:03 |
|||
from __future__ import unicode_literals |
|||
|
|||
import django.core.validators |
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('content', '0002_auto_20170621_0915'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AddField( |
|||
model_name='content', |
|||
name='teaser', |
|||
field=models.TextField(blank=True, null=True, validators=[django.core.validators.MaxLengthValidator(200)]), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='dateadded', |
|||
field=models.DateTimeField(auto_now_add=True, db_column='dateAdded'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='datemodified', |
|||
field=models.DateTimeField(auto_now=True, db_column='dateModified', null=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='published', |
|||
field=models.IntegerField(default=0), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='view', |
|||
field=models.ForeignKey(blank=True, db_column='view', editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='content.Views'), |
|||
), |
|||
] |
@ -0,0 +1,31 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.8 on 2017-12-18 11:49 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import markdownx.models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('content', '0003_auto_20171218_1103'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AddField( |
|||
model_name='content', |
|||
name='featured', |
|||
field=models.BooleanField(default=False), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='header', |
|||
field=markdownx.models.MarkdownxField(blank=True, default='', null=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='published', |
|||
field=models.BooleanField(default=False), |
|||
), |
|||
] |
@ -0,0 +1,85 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Generated by Django 1.11.7 on 2017-12-19 10:32 |
|||
from __future__ import unicode_literals |
|||
|
|||
from django.db import migrations, models |
|||
import django.db.models.deletion |
|||
import markdownx.models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('content', '0004_auto_20171218_1149'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.RunSQL( |
|||
[ |
|||
('delete from content_resource where "resourceID" not in (select id from resources);', None), |
|||
('delete from content_resource where "contentID" not in (select id from content);', None), |
|||
('delete from person_content where "personID" not in (select id from people);', None), |
|||
('delete from person_content where "contentID" not in (select id from content);', None), |
|||
] |
|||
), |
|||
migrations.AddField( |
|||
model_name='content', |
|||
name='resources', |
|||
field=models.ManyToManyField(related_name='content', through='content.ContentResource', to='content.Resources'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='people', |
|||
name='content', |
|||
field=models.ManyToManyField(related_name='people', through='content.PersonContent', to='content.Content'), |
|||
), |
|||
migrations.AddField( |
|||
model_name='people', |
|||
name='resources', |
|||
field=models.ManyToManyField(related_name='people', through='content.PersonResource', to='content.Resources'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='body', |
|||
field=markdownx.models.MarkdownxField(blank=True, default='', null=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='content', |
|||
name='parentid', |
|||
field=models.IntegerField(blank=True, db_column='parentID', editable=False, null=True), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='contentresource', |
|||
name='contentid', |
|||
field=models.ForeignKey(db_column='contentID', on_delete=django.db.models.deletion.CASCADE, to='content.Content'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='contentresource', |
|||
name='resourceid', |
|||
field=models.ForeignKey(db_column='resourceID', on_delete=django.db.models.deletion.CASCADE, to='content.Resources'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='personcontent', |
|||
name='contentid', |
|||
field=models.ForeignKey(db_column='contentID', on_delete=django.db.models.deletion.CASCADE, to='content.Content'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='personcontent', |
|||
name='personid', |
|||
field=models.ForeignKey(db_column='personID', on_delete=django.db.models.deletion.CASCADE, to='content.People'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='personresource', |
|||
name='personid', |
|||
field=models.ForeignKey(db_column='personID', on_delete=django.db.models.deletion.CASCADE, to='content.People'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='personresource', |
|||
name='resourceid', |
|||
field=models.ForeignKey(db_column='resourceID', on_delete=django.db.models.deletion.CASCADE, to='content.Resources'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='resources', |
|||
name='type', |
|||
field=models.IntegerField(choices=[(1, 'Resources'), (2, 'Images'), (3, 'Links')]), |
|||
), |
|||
] |
@ -1,92 +0,0 @@ |
|||
body { |
|||
background-color: #ffffff !important; |
|||
font-size: 14px !important; |
|||
} |
|||
|
|||
.content_detail { |
|||
width: 70%; |
|||
padding-left: 5%; |
|||
} |
|||
|
|||
.right-items { |
|||
padding-bottom: 0.5em; |
|||
padding-top: 0.5em; |
|||
} |
|||
|
|||
body, h1, h2, h3, h4, h5, h6 { |
|||
font-family: Open Sans !important; |
|||
} |
|||
|
|||
|
|||
.sidebar-h4 { |
|||
font-weight: 600; |
|||
text-transform: uppercase; |
|||
font-size: 1em; |
|||
} |
|||
|
|||
.sidebar-title { |
|||
text-transform: capitalize; |
|||
font-weight: 800; |
|||
font-style: italic; |
|||
font-size: 1em; |
|||
color: #000000; |
|||
} |
|||
|
|||
.sidebar-date { |
|||
text-transform: uppercase; |
|||
font-size: 0.7em; |
|||
font-weight: bold; |
|||
color: #ef4e5c; |
|||
} |
|||
|
|||
.special-column { |
|||
padding-left: 0em !important; |
|||
} |
|||
|
|||
.index-text { |
|||
padding-left: 3%; |
|||
padding-right: 1%; |
|||
padding-top: 10px; |
|||
} |
|||
|
|||
.index-text p { |
|||
text-align: justify; |
|||
} |
|||
|
|||
.title-bar-right { |
|||
margin-right: 2em; |
|||
margin-top: 1em; |
|||
} |
|||
|
|||
.menu-icon::after{ |
|||
background: #111111 none repeat scroll 0 0 !important; |
|||
box-shadow: 0 7px 0 #111111, 0 14px 0 #111111 !important; |
|||
} |
|||
|
|||
.vertical-menu li { |
|||
list-style: none; |
|||
padding-top: 2em; |
|||
padding-left: 1em; |
|||
font-weight: 600; |
|||
font-size: 1em; |
|||
color: #ef4e5c; |
|||
background-color: #eeeeee; |
|||
} |
|||
|
|||
.off-canvas { |
|||
background-color: #eeeeee !important; |
|||
} |
|||
|
|||
.position-right.is-transition-push::after { |
|||
box-shadow: none !important; |
|||
} |
|||
|
|||
.admin-menu { |
|||
position: absolute; |
|||
top: 45px; |
|||
right: 25px; |
|||
} |
|||
|
|||
.context ul, .links ul { |
|||
list-style: none; |
|||
} |
@ -1,157 +0,0 @@ |
|||
{% extends 'base.html' %} |
|||
|
|||
{% block content %} |
|||
{% if request.user.is_staff %} |
|||
<div class="admin-menu"> |
|||
<a href="{% url 'admin:content_content_change' content.id %}">Edit</a> |
|||
</div> |
|||
{% endif %} |
|||
|
|||
{% if content.image_url %} |
|||
<img src="{{ content.image_url }}" width="75%"> |
|||
{% endif %} |
|||
<div class="content_detail"> |
|||
<h1>{{ content.title }}</h1> |
|||
|
|||
<h4>{{ content.header|safe }} </h4> |
|||
<p>{{ content.body|safe }}</p> |
|||
|
|||
{% if content.optbtn2 and content.opttext2 %} |
|||
<div class="part2"> |
|||
<h4>{{ content.optbtn2|safe }} </h4> |
|||
<p>{{ content.opttext2|safe|linebreaks }}</p> |
|||
</div> |
|||
{% endif %} |
|||
{% if content.optbtn3 and content.opttext3 %} |
|||
<div class="part3"> |
|||
<h4>{{ content.optbtn3|safe }} </h4> |
|||
<p>{{ content.opttext3|safe|linebreaks }}</p> |
|||
</div> |
|||
{% endif %} |
|||
{% if content.schedule %} |
|||
<div class="schedule"> |
|||
<h4>{{content.schedulebutton|default:"Schedule"}}</h4> |
|||
<p>{{ content.schedule|safe|linebreaks }}</p> |
|||
</div> |
|||
{% endif %} |
|||
|
|||
{% if content.parent or content.children.exists %} |
|||
<div class="context"> |
|||
<b>In This Event</b>: |
|||
<ul> |
|||
{% if content.parent and content.parent.title %} |
|||
<li><a href="{{content.parent.get_absolute_url}}">{{content.parent.title}}</a></li> |
|||
<li><ul> |
|||
{% for node in content.parent.children.all %} |
|||
{% if node.shortname and node.published %} |
|||
<li> |
|||
{% if node == content %} |
|||
{{node.title}} |
|||
{% else %} |
|||
<a href="{{node.get_absolute_url}}">{{ node.title }}</a> |
|||
{% endif %} |
|||
</li> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</ul><li> |
|||
{% elif content.children.exists %} |
|||
<li>{{content.title}}</li> |
|||
<li><ul> |
|||
{% for node in content.children.all %} |
|||
{% if node.shortname and node.published %} |
|||
<li> |
|||
<a href="{{node.get_absolute_url}}">{{ node.title }}</a> |
|||
</li> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</ul><li> |
|||
{% else %} |
|||
<li>{{content.title}}</li> |
|||
{% endif %} |
|||
</ul> |
|||
</div> |
|||
{% endif %} |
|||
|
|||
{% if content.resources.exists %} |
|||
{% if content.links.exists %} |
|||
<div class="links"> |
|||
<b>Links:</b> |
|||
<ul> |
|||
{% for res in content.links %} |
|||
<li> |
|||
<a href="{{res.get_absolute_url}}">{{res.description|default:res.href}}</a> |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</div> |
|||
{% endif %} |
|||
|
|||
{% if content.images.exists %} |
|||
<style> |
|||
.images { |
|||
display: grid; |
|||
grid-template-columns: 128px 128px 128px 128px 128px 128px 128px 128px; |
|||
grid-gap: 10px; |
|||
} |
|||
.images > div { |
|||
width: 128px; |
|||
height: 128px; |
|||
padding: 8px; |
|||
display: table-cell; |
|||
text-align: center; |
|||
position: relative; |
|||
} |
|||
.images > div > img { |
|||
transition: width,height 2s; |
|||
max-width: 92%; |
|||
max-height: 92%; |
|||
position: absolute; |
|||
top:0; |
|||
bottom:0; |
|||
left:0; |
|||
right:0; |
|||
margin:auto; |
|||
} |
|||
.images > div > img.active { |
|||
max-width: 92%; |
|||
max-height: 92%; |
|||
position: fixed; |
|||
top:0; |
|||
bottom:0; |
|||
left:0; |
|||
right:0; |
|||
margin:auto; |
|||
z-index: 1; |
|||
} |
|||
</style> |
|||
<b>Images:</b> <br> |
|||
<div class="images"> |
|||
{% for res in content.images %} |
|||
<div> |
|||
{% if res.is_image %} |
|||
<img src="{{res.get_absolute_url}}"> |
|||
{% elif res.is_audio %} |
|||
<audio controls src="{{res.get_absolute_url}}"></audio> |
|||
{% elif res.is_video %} |
|||
<video controls src="{{res.get_absolute_url}}"></video> |
|||
{% else %} |
|||
<a href="{{res.get_absolute_url}}">{{res.description|default:res.href}}</a> |
|||
{% endif %} |
|||
</div> |
|||
{% endfor %} |
|||
</div> |
|||
<script> |
|||
document.querySelectorAll('.images > div > img').forEach(function(img) { |
|||
img.addEventListener('click', function() { |
|||
if (this.classList.contains('active')) { |
|||
this.classList.remove('active'); |
|||
} else { |
|||
this.classList.add('active'); |
|||
} |
|||
}); |
|||
}); |
|||
</script> |
|||
{% endif %} |
|||
{% endif %} |
|||
</div> |
|||
{% endblock %} |
@ -0,0 +1,21 @@ |
|||
|
|||
{% extends 'base.html' %} |
|||
|
|||
{% block content %} |
|||
{% include "featured.html" %} |
|||
<div class="large-4 medium-4 columns"> |
|||
{% if upcoming_events.exists %} |
|||
<h4 class="sidebar-h4"> Upcoming Events </h4> |
|||
{% include "event_preview.html" with events=upcoming_events %} |
|||
{% endif %} |
|||
{% if ongoing_events.exists %} |
|||
<h4 class="sidebar-h4"> Ongoing Events </h4> |
|||
{% include "event_preview.html" with events=ongoing_events %} |
|||
{% endif %} |
|||
{% if past_events.exists %} |
|||
<h4 class="sidebar-h4"> Past Events </h4> |
|||
{% include "event_preview.html" with events=past_events %} |
|||
{% endif %} |
|||
</div> |
|||
</div> |
|||
{% endblock %} |
@ -0,0 +1,38 @@ |
|||
<div class="row"> |
|||
{% for content in events %} |
|||
{% if content.type.name == 'news' %} |
|||
<div class="row right-items"> |
|||
<div class= "small-12 columns"> |
|||
<h6 class="sidebar-date"> |
|||
<font color="#ef4e5c"> <b> {{content.datestart}} </b> |
|||
{{ content.title }} <br /> |
|||
{{ content.formatted_header }} |
|||
</font> |
|||
</h6> |
|||
</div> |
|||
</div> |
|||
{% elif content.type.name == 'events' %} |
|||
<div class="row right-items"> |
|||
{% if content.image_url %} |
|||
<div class="small-6 columns"> |
|||
<a href="{{ content.get_absolute_url }}"> |
|||
<img src="{{ content.image_url }}"> |
|||
</a> |
|||
</div> |
|||
{% endif %} |
|||
<div class="small-6 columns"> |
|||
<a href="{{ content.get_absolute_url }}" class="sidebar-title">{{ content.title }}</a> |
|||
<h6 class="sidebar-date"> |
|||
<font color="#ef4e5c"> |
|||
<b>{{ content.datestart }} {% if content.dateend %} - {{content.dateend}} {% endif %}</b> |
|||
</font> |
|||
{%if content.place %}<br>{{content.place}}{% endif %} |
|||
</h6> |
|||
<p> {{content.formatted_teaser}} </p> |
|||
</div> |
|||
</div> |
|||
{% endif %} |
|||
{% endfor %} |
|||
<br> |
|||
<br> |
|||
</div> |
@ -0,0 +1,52 @@ |
|||
|
|||
|
|||
{% extends 'base.html' %} |
|||
|
|||
{% block content %} |
|||
|
|||
<div class="large-8 medium-8 columns special-column"> |
|||
{% if events.image %} |
|||
<img src="{{events.image_url}}"> |
|||
{% endif %} |
|||
<div class="index-text"> |
|||
<h4><a href="{{ events.get_absolute_url }}/" class="big-title">{{events.title}} </a></h4> |
|||
<p> {{events.formatted_header|safe}} </p> |
|||
<p> {{events.formatted_body|safe}} </p> |
|||
{% include "opt.html" with content=events %} |
|||
{% include "links.html" with content=events %} |
|||
{% include "gallery.html" with gallery=gallery %} |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
|
|||
<div class="large-4 medium-4 columns"> |
|||
{% include "related.html" with related=events.children.all %} |
|||
<h4 class="sidebar-h4">Events </h4> |
|||
<div class="row"> |
|||
|
|||
{% for events in latest_content_list %} |
|||
|
|||
<div class="row right-items"> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ events.get_absolute_url }}/"> <img src="{{ events.image_url }}"> </a> |
|||
</div> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ events.get_absolute_url }}/" class="sidebar-title" >{{ events.title }}</a> |
|||
<h6 class="sidebar-date"> |
|||
<font color="#ef4e5c"> |
|||
<b> {{ events.datestart }} {% if events.dateend %} - {{events.dateend}} {% endif %} </b> |
|||
</font> |
|||
{% if events.place %}<br/>{{events.place}}{% endif%} |
|||
</h6> |
|||
<p> {{ events.formatted_teaser }} </p> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
{% endfor %} |
|||
|
|||
</div> |
|||
</div> |
|||
|
|||
{% endblock %} |
@ -0,0 +1,21 @@ |
|||
{% for content in featured %} |
|||
<div class="large-8 medium-8 columns special-column"> |
|||
{% if content.image %} |
|||
<img src="{{ content.image_url }}"> |
|||
{% endif %} |
|||
<div class="index-text"> |
|||
<h4><a href="{{ content.get_absolute_url }}" class="big-title">{{content.title}} </a></h4> |
|||
{% if content.datestart %} |
|||
<h6 class="big-date"> <font color="#ef4e5c"> <b> {{ content.datestart }} </b></font> |
|||
{% if content.place %}<br/>{{content.place}}{% endif%} |
|||
</h6> |
|||
{% endif %} |
|||
{% if content.header %} |
|||
<p> {{content.formatted_header}} </p> |
|||
{% else %} |
|||
<p> {{content.formatted_body}} </p> |
|||
{% endif %} |
|||
<a href="{{ content.get_absolute_url }}">read more</a> </p> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
@ -0,0 +1,8 @@ |
|||
{% if gallery %} |
|||
<h6><strong>Gallery: {{gallery.title}}</strong></h6> |
|||
<ul class="clearing-thumbs" data-clearing> |
|||
{% for photo in gallery.public %} |
|||
<li><a href="{{ photo.get_absolute_url }}"><img src="{{ photo.get_thumbnail_url }}"></a></li> |
|||
{% endfor %} |
|||
</ul> |
|||
{% endif %} |
@ -0,0 +1,12 @@ |
|||
{% if content.links.exists %} |
|||
<div class="links"> |
|||
<b>Links:</b> |
|||
<ul> |
|||
{% for res in content.links %} |
|||
<li> |
|||
<a href="{{res.get_absolute_url}}">{{res.description|default:res.href}}</a> |
|||
</li> |
|||
{% endfor %} |
|||
</ul> |
|||
</div> |
|||
{% endif %} |
@ -0,0 +1,18 @@ |
|||
{% if content.optbtn2 and content.opttext2 %} |
|||
<div class="part2"> |
|||
<h4>{{ content.optbtn2|safe }} </h4> |
|||
<p>{{ content.opttext2|safe|linebreaks }}</p> |
|||
</div> |
|||
{% endif %} |
|||
{% if content.optbtn3 and content.opttext3 %} |
|||
<div class="part3"> |
|||
<h4>{{ content.optbtn3|safe }} </h4> |
|||
<p>{{ content.opttext3|safe|linebreaks }}</p> |
|||
</div> |
|||
{% endif %} |
|||
{% if content.schedule %} |
|||
<div class="schedule"> |
|||
<h4>{{content.schedulebutton|default:"Schedule"}}</h4> |
|||
<p>{{ content.schedule|safe|linebreaks }}</p> |
|||
</div> |
|||
{% endif %} |
@ -0,0 +1,17 @@ |
|||
{% extends 'base.html' %} |
|||
|
|||
{% block content %} |
|||
<div class="large-8 medium-8 columns special-column"> |
|||
<div class="index-text"> |
|||
<h4>{{content.title}}</h4> |
|||
{% if content.header %} |
|||
<p> |
|||
{{content.formatted_header|safe}} |
|||
</p> |
|||
{% endif %} |
|||
<p> |
|||
{{content.formatted_body|safe}} |
|||
</p> |
|||
</div> |
|||
</div> |
|||
{% endblock %} |
@ -0,0 +1,20 @@ |
|||
{% extends "photologue:photologue/gallery_detail.html" %} |
|||
{% load i18n %} |
|||
|
|||
{% block title %}{{ gallery.title }}{% endblock %} |
|||
|
|||
{% block content %} |
|||
|
|||
<div class="row col-lg-12"> |
|||
<h1 class="page-header">{{ gallery.title }}</h1> |
|||
<p class="muted"><small>{% trans "Published" %} {{ gallery.date_added }}</small>WHYYYYYY</p> |
|||
{% if gallery.description %}{{ gallery.description|safe }}{% endif %} |
|||
{% for photo in gallery.public %} |
|||
<a href="{{ photo.get_absolute_url }}"> |
|||
<img src="{{ photo.get_thumbnail_url }}" class="thumbnail" alt="{{ photo.title }}"> |
|||
</a> |
|||
{% endfor %} |
|||
<div><a href="{% url 'photologue:gallery-list' %}" class="btn btn-default">{% trans "View all galleries" %}</a></div> |
|||
</div> |
|||
|
|||
{% endblock %} |
@ -0,0 +1,46 @@ |
|||
{% extends "photologue:photologue/photo_detail.html" %} |
|||
{% load photologue_tags i18n %} |
|||
|
|||
{% block title %}{{ object.title }}{% endblock %} |
|||
|
|||
{% block content %} |
|||
{% for gallery in object.public_galleries %} |
|||
|
|||
<div class="row"> |
|||
<div class="medium-9 columns"> |
|||
<h5 class="page-header">From gallery {{ gallery.title }}</h5> |
|||
<ul class="slider1"> |
|||
{% for photo.pk in gallery.public %} |
|||
<li> |
|||
<img src="{{ photo.get_display_url }}" alt="{{ photo.title }}"> |
|||
<br /> <p>{{ photo.caption|safe }} <a href="{{ photo.image.url }}"> Link to original file </a> </p> |
|||
</li> |
|||
{% for photo in gallery.public %} |
|||
<li> |
|||
<img src="{{ photo.get_display_url }}" alt="{{ photo.title }}"> |
|||
<br /> <p>{{ photo.caption|safe }} <a href="{{ photo.image.url }}" target="_blank" > Link to original file </a> </p> |
|||
</li> |
|||
{% endfor %} |
|||
{% endfor %} |
|||
</ul> |
|||
</div> |
|||
<div class="medium-3 columns"> |
|||
{% if object.public_galleries %} |
|||
<p>{% trans "Other photos in the gallery" %}:</p> |
|||
<table> |
|||
{% for photo in gallery.public %} |
|||
<tr> |
|||
<td><a href="{{ photo.get_absolute_url }}"> |
|||
<img src="{{ photo.get_thumbnail_url }}" class="thumbnail" alt="{{ photo.title }}"></a></td> |
|||
<td> |
|||
<p>{{ photo.caption|safe }} {{ photo.count }} </p> |
|||
</td> |
|||
</tr> |
|||
{% endfor %} |
|||
</table> |
|||
{% endif %} |
|||
{% endfor %} |
|||
</div> |
|||
</div> |
|||
|
|||
{% endblock %} |
@ -0,0 +1,21 @@ |
|||
<div class="row"> |
|||
<div class="row right-items"> |
|||
<div class="small-6 columns"> |
|||
{% if content.image_url %} |
|||
<img src="{{ content.image_url }}"> |
|||
{% endif %} |
|||
</div> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ content.get_absolute_url }}" class="sidebar-title"> {{content.title}} </a> |
|||
{% if content.type.name == 'events' %} |
|||
<h6 class="sidebar-date"> |
|||
<font color="#ef4e5c"> |
|||
<b> {{ content.datestart }} {% if content.dateend %} - {{content.dateend}} {% endif %} </b> |
|||
</font> |
|||
{% if content.place %}<br/>{{content.place}}{% endif%} |
|||
</h6> |
|||
{% endif %} |
|||
<p> {{ content.formatted_teaser }} </p> |
|||
</div> |
|||
</div> |
|||
</div> |
@ -1,22 +1,45 @@ |
|||
|
|||
|
|||
{% extends 'base.html' %} |
|||
|
|||
{% block content %} |
|||
<div class="large-4 medium-4 columns"> |
|||
<h4 class="sidebar-h4">{{ title }}</h4> |
|||
<div class="row"> |
|||
{% for content in content %} |
|||
<div class="row right-items"> |
|||
<div class="small-6 columns"> |
|||
<img src="{{ content.image_url }}"> |
|||
</div> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ content.get_absolute_url }}" class="sidebar-title">{{ content.title }}</a> |
|||
<h6 class="sidebar-date">{{ content.datestart }}</h6> |
|||
{{content.header|striptags|truncatechars:150|safe}} <a href="{{ content.get_absolute_url }}">read more</a> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
</div> |
|||
</div> |
|||
|
|||
{% endblock %} |
|||
<div class="large-8 medium-8 columns special-column"> |
|||
{% if projects.image %} |
|||
<img src="{{ projects.image_url }}"> |
|||
{% endif %} |
|||
<div class="index-text"> |
|||
<h4><a href="{{ projects.get_absolute_url }}/" class="big-title">{{projects.title}} </a></h4> |
|||
<p> {{projects.formatted_header|safe}} </p> |
|||
<p> {{projects.formatted_body|safe}} </p> |
|||
{% include "opt.html" with content=projects %} |
|||
{% include "links.html" with content=projects %} |
|||
{% include "gallery.html" with gallery=gallery %} |
|||
</div> |
|||
</div> |
|||
|
|||
{% if latest_content_list %} |
|||
|
|||
<div class="large-4 medium-4 columns"> |
|||
{% include "related.html" with related=projects.children.all %} |
|||
<h4 class="sidebar-h4">Projects </h4> |
|||
<div class="row"> |
|||
|
|||
{% for projects in latest_content_list %} |
|||
<div class="row right-items"> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ projects.get_absolute_url }}"> <img src="{{ projects.image_url }}"> </a> |
|||
</div> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ projects.get_absolute_url }}" class="sidebar-title">{{ projects.title }}</a> |
|||
<p> {{projects.formatted_teaser}} </p> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
{% else %} |
|||
<p>No projects.</p> |
|||
{% endif %} |
|||
</div> |
|||
</div> |
|||
|
|||
{% endblock %} |
|||
|
@ -0,0 +1,8 @@ |
|||
{% if related %} |
|||
<h4 class="sidebar-h4"> Related </h4> |
|||
{% for content in related %} |
|||
{% include "preview.html" %} |
|||
{% endfor %} |
|||
<br> |
|||
<br> |
|||
{% endif %} |
@ -0,0 +1,71 @@ |
|||
{% extends 'base.html' %} |
|||
|
|||
|
|||
{% block content %} |
|||
<div class="row"> |
|||
<div class="row"> |
|||
<div class="small-4 small-offset-2 columns results-title"> |
|||
<h3> Search results </h3> |
|||
</div> |
|||
</div> |
|||
{% for content in results %} |
|||
{% if content.type.name == 'news' %} |
|||
<div class="row"> |
|||
<div class= "small-4 small-offset-2 columns"> |
|||
<h6 class="sidebar-date"> <font color="#ef4e5c"> <b> {{content.datestart}} </b> |
|||
{{ content.title }} <br /> |
|||
{{ content.formatted_header|striptags|safe }} </font> |
|||
</h6> |
|||
</div> |
|||
</div> |
|||
{% elif content.type.name == 'events' %} |
|||
<div class="row results"> |
|||
<div class="small-4 small-offset-2 columns"> |
|||
<img src="{{ content.image_url }}"> |
|||
</div> |
|||
<div class="small-4 end columns"> |
|||
<a href="{{ content.get_absolute_url }}" class="sidebar-title">{{ content.title }}</a> |
|||
<h6 class="sidebar-date"> <font color="#ef4e5c"> <b> {{ content.datestart }} {% if content.dateend %} - {{content.dateend}} {% endif %} </b></font> |
|||
{% if content.place %}<br/> {{content.place}} {% endif%}</h6> |
|||
<p> {{content.header|striptags|safe}} </p> |
|||
<a href="{{ content.get_absolute_url }}">read more</a> </p> |
|||
</div> |
|||
</div> |
|||
{% else %} |
|||
<div class="row"> |
|||
<div class="small-4 small-offset-2 columns"> |
|||
Add view for content type: {{content.type}} |
|||
</div> |
|||
</div> |
|||
|
|||
{% endif %} |
|||
{% endfor %} |
|||
<br> |
|||
<br> |
|||
{% if results.has_other_pages %} |
|||
<div class="row"> |
|||
<div class="small-4 small-offset-4 columns"> |
|||
<ul class="pagination"> |
|||
{% if results.has_previous %} |
|||
<li><a href="?q={{ query }}&page={{ results.previous_page_number }}">«</a></li> |
|||
{% else %} |
|||
<li class="disabled"><span>«</span></li> |
|||
{% endif %} |
|||
{% for i in results.paginator.page_range %} |
|||
{% if results.number == i %} |
|||
<li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li> |
|||
{% else %} |
|||
<li><a href="?q={{ query }}&page={{ i }}">{{ i }}</a></li> |
|||
{% endif %} |
|||
{% endfor %} |
|||
{% if results.has_next %} |
|||
<li><a href="?q={{ query }}&page={{ results.next_page_number }}">»</a></li> |
|||
{% else %} |
|||
<li class="disabled"><span>»</span></li> |
|||
{% endif %} |
|||
</ul> |
|||
</div> |
|||
</div> |
|||
{% endif %} |
|||
</div> |
|||
{% endblock %} |
@ -0,0 +1,25 @@ |
|||
{% extends 'base.html' %} |
|||
|
|||
{% block content %} |
|||
{% include "featured.html" %} |
|||
|
|||
<div class="large-4 medium-4 columns"> |
|||
<h4 class="sidebar-h4"> {{ section }} </h4> |
|||
<div class="row"> |
|||
{% for content in content %} |
|||
<div class="row right-items"> |
|||
{% if content.image_url %} |
|||
<div class="small-6 columns"> |
|||
<img src="{{ content.image_url }}"> |
|||
</div> |
|||
{% endif %} |
|||
<div class="small-6 columns"> |
|||
<a href="{{ content.get_absolute_url }}/" class="sidebar-title">{{ content.title }}</a> |
|||
<p> {{content.formatted_teaser}} </p> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
</div> |
|||
</div> |
|||
|
|||
{% endblock %} |
@ -0,0 +1,57 @@ |
|||
{% extends 'base.html' %} |
|||
|
|||
{% block content %} |
|||
|
|||
<div class="large-8 medium-8 columns special-column"> |
|||
{% if texts.image %} |
|||
<img src="{{ texts.image_url }}"> |
|||
{% endif %} |
|||
<div class="index-text"> |
|||
<h4><a href="{{ texts.get_absolute_url }}/" class="big-title">{{texts.title}} </a></h4> |
|||
<p> {{texts.formatted_header|safe}} </p> |
|||
<p> {{texts.formatted_body|safe}} </p> |
|||
{% include "opt.html" with content=texts %} |
|||
</div> |
|||
</div> |
|||
|
|||
{% if latest_content_list %} |
|||
|
|||
<div class="large-4 medium-4 columns"> |
|||
{% if texts.children.all %} |
|||
<h4 class="sidebar-h4"> Related </h4> |
|||
{% for child in texts.children.all %} |
|||
<div class="row related-row"> |
|||
{% if child.image %} |
|||
<div class="small-6 columns"> |
|||
<a href="{{ child.get_absolute_url }}"> <img src="{{ child.image_url }}"> </a> |
|||
</div> |
|||
{% endif %} |
|||
<div class="small-6 columns"> |
|||
<h6><a href="{{ child.get_absolute_url }}" class="sidebar-title"> {{child}} </a> </h6> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
{% endif %} |
|||
<h4 class="sidebar-h4"> Texts </h4> |
|||
<div class="row"> |
|||
|
|||
{% for texts in latest_content_list %} |
|||
<div class="row right-items"> |
|||
{% if texts.image %} |
|||
<div class="small-6 columns"> |
|||
<a href="{{ texts.get_absolute_url }}"> <img src="{{ texts.image_url }}"></a> |
|||
</div> |
|||
{% endif %} |
|||
<div class="small-6 columns"> |
|||
<a href="{{ texts.get_absolute_url }}" class="sidebar-title">{{ texts.title }}</a> |
|||
<p> {{texts.header|striptags|truncatechars:100}} </p> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
{% else %} |
|||
<p>No texts.</p> |
|||
{% endif %} |
|||
</div> |
|||
</div> |
|||
|
|||
{% endblock %} |
@ -0,0 +1,52 @@ |
|||
|
|||
|
|||
{% extends 'base.html' %} |
|||
|
|||
{% block content %} |
|||
|
|||
<div class="large-8 medium-8 columns special-column"> |
|||
<img src="{{ works.image_url }}"> |
|||
<div class="index-text"> |
|||
<h4><a href="{{ works.get_absolute_url }}" class="big-title">{{works.title}} </a></h4> |
|||
<p> {{works.formatted_header|safe}} </p> |
|||
<p> {{works.formatted_body|safe}} </p> |
|||
</div> |
|||
</div> |
|||
|
|||
{% if latest_content_list %} |
|||
|
|||
<div class="large-4 medium-4 columns"> |
|||
{% if works.children.all %} |
|||
<h4 class="sidebar-h4"> Related </h4> |
|||
{% for child in works.children.all %} |
|||
<div class="row related-row"> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ child.get_absolute_url }}"> <img src="{{ child.image_url }}"> </a> |
|||
</div> |
|||
<div class="small-6 columns"> |
|||
<h6><a href="{{ child.get_absolute_url }}" class="sidebar-title"> {{child}} </a> </h6> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
{% endif %} |
|||
<h4 class="sidebar-h4"> Works </h4> |
|||
<div class="row"> |
|||
|
|||
{% for works in latest_content_list %} |
|||
<div class="row right-items"> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ works.get_absolute_url }}"> <img src="{{ works.image_url }}"></a> |
|||
</div> |
|||
<div class="small-6 columns"> |
|||
<a href="{{ works.get_absolute_url }}" class="sidebar-title">{{ works.title }}</a> |
|||
<p> {{works.header|striptags|truncatechars:100}} </p> |
|||
</div> |
|||
</div> |
|||
{% endfor %} |
|||
{% else %} |
|||
<p>No works.</p> |
|||
{% endif %} |
|||
</div> |
|||
</div> |
|||
|
|||
{% endblock %} |
@ -0,0 +1,42 @@ |
|||
<VirtualHost *:80> |
|||
ServerName studio.camp |
|||
Redirect / https://studio.camp/ |
|||
</VirtualHost> |
|||
|
|||
<VirtualHost *:443> |
|||
SSLCertificateFile /etc/letsencrypt/studio.camp/cert.pem |
|||
SSLCertificateKeyFile /etc/letsencrypt/studio.camp/key.pem |
|||
Include /etc/letsencrypt/options-ssl-apache.conf |
|||
SSLCertificateChainFile /etc/letsencrypt/studio.camp/chain.pem |
|||
|
|||
ServerName studio.camp |
|||
|
|||
<Location /> |
|||
Options -Indexes |
|||
</Location> |
|||
<Directory /srv/camp> |
|||
Order deny,allow |
|||
Allow from all |
|||
</Directory> |
|||
|
|||
Alias /static /srv/camp/static |
|||
Alias /static/images /srv/camp/data/images |
|||
|
|||
LogLevel warn |
|||
ErrorLog /var/log/apache2/studio.camp.error.log |
|||
CustomLog /var/log/apache2/studio.camp.log combined |
|||
ServerSignature Off |
|||
|
|||
ProxyRequests Off |
|||
<Proxy *> |
|||
Order deny,allow |
|||
Allow from all |
|||
</Proxy> |
|||
ProxyPass /static ! |
|||
ProxyPass /images ! |
|||
|
|||
RequestHeader unset Proxy |
|||
|
|||
ProxyPass / http://127.0.0.1:8087/ |
|||
ProxyPassReverse / http://127.0.0.1:8087/ |
|||
</VirtualHost> |
@ -0,0 +1,12 @@ |
|||
start on (filesystem and net-device-up IFACE=lo) |
|||
stop on runlevel [!2345] |
|||
|
|||
# give time to send info to trackers |
|||
kill timeout 30 |
|||
|
|||
setuid campdjango |
|||
setgid campdjango |
|||
|
|||
respawn |
|||
chdir /srv/camp |
|||
exec /srv/camp/venv/bin/gunicorn -b 127.0.0.1:8087 camp.wsgi:application |
@ -0,0 +1,14 @@ |
|||
[Unit] |
|||
Description=studio.camp |
|||
After=postgresql.service |
|||
|
|||
[Service] |
|||
Type=simple |
|||
Restart=always |
|||
User=campdjango |
|||
Group=campdjango |
|||
WorkingDirectory=/srv/camp |
|||
ExeccStart=/srv/camp/venv/bin/gunicorn -b 127.0.0.1:8087 camp.wsgi:application |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
@ -1,3 +1,8 @@ |
|||
django<2.0 |
|||
django_extensions |
|||
django-markdownx |
|||
django-photologue |
|||
django-braces |
|||
django-app-namespace-template-loader |
|||
ox |
|||
gunicorn |
|||
django_extensions |
|||
|
Loading…
Reference in new issue