Photoalbums can now be linked by users
This commit is contained in:
parent
3cd44959b1
commit
591469799f
@ -26,3 +26,4 @@ admin.site.register(Explorer, ExplorerAdmin)
|
||||
admin.site.register(Voucher, VoucherAdmin)
|
||||
admin.site.register(Place)
|
||||
admin.site.register(PlaceImage)
|
||||
admin.site.register(PhotoAlbum)
|
||||
|
@ -139,3 +139,24 @@ def auto_delete_file_on_change(sender, instance, **kwargs):
|
||||
if not old_file == new_file:
|
||||
if os.path.isfile(old_file.path):
|
||||
os.remove(old_file.path)
|
||||
|
||||
|
||||
class ExternalLink(models.Model):
|
||||
url = models.URLField(max_length=200)
|
||||
label = models.CharField(max_length=100)
|
||||
submitted_by = models.ForeignKey(
|
||||
Explorer,
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name='external_links'
|
||||
)
|
||||
submitted_when = models.DateTimeField(auto_now_add=True, null=True)
|
||||
|
||||
class PhotoAlbum(ExternalLink):
|
||||
place = models.ForeignKey(
|
||||
Place,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='photo_albums',
|
||||
null=True
|
||||
)
|
@ -1,3 +1,424 @@
|
||||
.pink {
|
||||
background-color: pink; }
|
||||
|
||||
.RV-Alignment__Container {
|
||||
display: grid; }
|
||||
.RV-Alignment__Container--top {
|
||||
display: grid;
|
||||
align-content: start; }
|
||||
.RV-Alignment__Container--bottom {
|
||||
display: grid;
|
||||
align-content: end; }
|
||||
.RV-Alignment__Container--left {
|
||||
display: grid;
|
||||
justify-content: start; }
|
||||
.RV-Alignment__Container--right {
|
||||
display: grid;
|
||||
justify-content: end; }
|
||||
.RV-Alignment__Container--horizontalCenter {
|
||||
display: grid;
|
||||
justify-content: center; }
|
||||
.RV-Alignment__Container--verticalCenter {
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.RV-Alignment__Container--center {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
|
||||
.RV-FlexRow__Container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
height: 100%; }
|
||||
.RV-FlexRow__Container--multiRow {
|
||||
flex-wrap: wrap; }
|
||||
.RV-FlexRow__Container--column {
|
||||
display: flex;
|
||||
flex-direction: column; }
|
||||
|
||||
.RV-FlexRow__Item {
|
||||
min-width: min-content;
|
||||
width: 100%; }
|
||||
.RV-FlexRow__Item__Container {
|
||||
display: grid; }
|
||||
.RV-FlexRow__Item__Container--top {
|
||||
display: grid;
|
||||
align-content: start; }
|
||||
.RV-FlexRow__Item__Container--bottom {
|
||||
display: grid;
|
||||
align-content: end; }
|
||||
.RV-FlexRow__Item__Container--left {
|
||||
display: grid;
|
||||
justify-content: start; }
|
||||
.RV-FlexRow__Item__Container--right {
|
||||
display: grid;
|
||||
justify-content: end; }
|
||||
.RV-FlexRow__Item__Container--horizontalCenter {
|
||||
display: grid;
|
||||
justify-content: center; }
|
||||
.RV-FlexRow__Item__Container--verticalCenter {
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.RV-FlexRow__Item__Container--center {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.RV-FlexRow__Item, .RV-FlexRow__Item--normal {
|
||||
flex-grow: 3;
|
||||
flex-shrink: 3; }
|
||||
.RV-FlexRow__Item--narrower {
|
||||
flex-grow: 1;
|
||||
flex-shrink: 5; }
|
||||
.RV-FlexRow__Item--narrow {
|
||||
flex-grow: 2;
|
||||
flex-shrink: 4; }
|
||||
.RV-FlexRow__Item--wide {
|
||||
flex-grow: 4;
|
||||
flex-shrink: 2; }
|
||||
.RV-FlexRow__Item--wider {
|
||||
flex-grow: 5;
|
||||
flex-shrink: 1; }
|
||||
.RV-FlexRow__Item--fixedSize {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: min-content;
|
||||
flex-basis: 100px; }
|
||||
|
||||
.RV-FlexGrid__Container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||
grid-template-rows: repeat(auto-fill, minmax(300px, 1fr));
|
||||
grid-auto-rows: minmax(300px, 1fr); }
|
||||
|
||||
.RV-FlexGrid__Item__Container {
|
||||
display: grid; }
|
||||
.RV-FlexGrid__Item__Container--top {
|
||||
display: grid;
|
||||
align-content: start; }
|
||||
.RV-FlexGrid__Item__Container--bottom {
|
||||
display: grid;
|
||||
align-content: end; }
|
||||
.RV-FlexGrid__Item__Container--left {
|
||||
display: grid;
|
||||
justify-content: start; }
|
||||
.RV-FlexGrid__Item__Container--right {
|
||||
display: grid;
|
||||
justify-content: end; }
|
||||
.RV-FlexGrid__Item__Container--horizontalCenter {
|
||||
display: grid;
|
||||
justify-content: center; }
|
||||
.RV-FlexGrid__Item__Container--verticalCenter {
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.RV-FlexGrid__Item__Container--center {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
|
||||
.RV-ContentCrop__Container, .RV-ContentCrop__Container * {
|
||||
overflow: hidden;
|
||||
word-break: break-all; }
|
||||
|
||||
.RV-ContentCrop__Container img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.RV-ContentCrop__Container--left img {
|
||||
object-position: left; }
|
||||
|
||||
.RV-ContentCrop__Container--center img {
|
||||
object-position: center; }
|
||||
|
||||
.RV-ContentCrop__Container--top img {
|
||||
object-position: top; }
|
||||
|
||||
.RV-ContentCrop__Container--bottom img {
|
||||
object-position: botom; }
|
||||
|
||||
.RV-ContentCrop__Container--center img {
|
||||
object-position: center; }
|
||||
|
||||
.RV-Fan__Container--vertical {
|
||||
flex-direction: column;
|
||||
width: max-content; }
|
||||
|
||||
.RV-Fan__Container--vertical .RV-Fan__Surface {
|
||||
width: 320px;
|
||||
min-height: 280px; }
|
||||
|
||||
.RV-Fan__Container--horizontal {
|
||||
flex-direction: row; }
|
||||
|
||||
.RV-Fan__Container--horizontal .RV-Fan__Surface {
|
||||
min-width: 320px;
|
||||
height: 280px; }
|
||||
|
||||
.RV-Fan__Container--auto {
|
||||
flex-flow: row wrap; }
|
||||
|
||||
.RV-Fan__Container--auto .RV-Fan__Surface {
|
||||
width: calc(100% - 320px);
|
||||
min-width: 320px;
|
||||
height: 280px; }
|
||||
|
||||
.RV-Fan__Container--fullWidth .RV-Fan__Base, .RV-Fan__Container--fullWidth .RV-Fan__Surface {
|
||||
flex-grow: 1; }
|
||||
|
||||
.RV-Fan__Container {
|
||||
display: flex; }
|
||||
|
||||
.RV-Fan__Base {
|
||||
height: 280px;
|
||||
width: 320px;
|
||||
flex: 0 0 auto; }
|
||||
|
||||
.RV-Fan__Surface, .RV-Fan__Surface * {
|
||||
overflow: hidden;
|
||||
word-break: break-all; }
|
||||
|
||||
.RV-Fan__Surface img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.RV-Fan__Surface--left img {
|
||||
object-position: left; }
|
||||
|
||||
.RV-Fan__Surface--center img {
|
||||
object-position: center; }
|
||||
|
||||
.RV-Fan__Surface--top img {
|
||||
object-position: top; }
|
||||
|
||||
.RV-Fan__Surface--bottom img {
|
||||
object-position: botom; }
|
||||
|
||||
.RV-Fan__Surface--center img {
|
||||
object-position: center; }
|
||||
|
||||
.RV-FullWidthContent__Container {
|
||||
width: 100%; }
|
||||
|
||||
.RV-FullWidthContent__Item {
|
||||
width: 100%; }
|
||||
.RV-FullWidthContent__Item, .RV-FullWidthContent__Item * {
|
||||
overflow: hidden;
|
||||
word-break: break-all; }
|
||||
.RV-FullWidthContent__Item img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
.RV-FullWidthContent__Item--left img {
|
||||
object-position: left; }
|
||||
.RV-FullWidthContent__Item--center img {
|
||||
object-position: center; }
|
||||
.RV-FullWidthContent__Item--top img {
|
||||
object-position: top; }
|
||||
.RV-FullWidthContent__Item--bottom img {
|
||||
object-position: botom; }
|
||||
.RV-FullWidthContent__Item--center img {
|
||||
object-position: center; }
|
||||
|
||||
.RV-BoxShadow {
|
||||
position: relative;
|
||||
float: left;
|
||||
width: 40%;
|
||||
margin: 2em 10px 4em;
|
||||
background: #fff;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset; }
|
||||
.RV-BoxShadow:before, .RV-BoxShadow:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
z-index: -2; }
|
||||
.RV-BoxShadow--simple {
|
||||
box-shadow: 0 0 20px #6b5690; }
|
||||
.RV-BoxShadow--raised:after {
|
||||
box-shadow: 0 15px 10px -10px rgba(0, 0, 0, 0.5), 0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset; }
|
||||
.RV-BoxShadow--liftedCorners:before, .RV-BoxShadow--liftedCorners:after {
|
||||
bottom: 15px;
|
||||
left: 10px;
|
||||
width: 50%;
|
||||
height: 20%;
|
||||
max-width: 300px;
|
||||
box-shadow: 0 15px 10px rgba(0, 0, 0, 0.7);
|
||||
transform: rotate(-3deg); }
|
||||
.RV-BoxShadow--liftedCorners:after {
|
||||
right: 10px;
|
||||
left: auto;
|
||||
transform: rotate(3deg); }
|
||||
|
||||
.RV-ElementList__Container {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
|
||||
.RV-ElementList__Item {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
|
||||
.RV-Spacing__Outer--small {
|
||||
margin: 10px; }
|
||||
|
||||
.RV-Spacing__Outer--medium {
|
||||
margin: 25px; }
|
||||
|
||||
.RV-Spacing__Outer--large {
|
||||
margin: 35px; }
|
||||
|
||||
.RV-Spacing__Inner--small {
|
||||
padding: 10px; }
|
||||
.RV-Spacing__Inner--small {
|
||||
gap: 10px; }
|
||||
|
||||
.RV-Spacing__Inner--medium {
|
||||
padding: 25px; }
|
||||
.RV-Spacing__Inner--medium {
|
||||
gap: 25px; }
|
||||
|
||||
.RV-Spacing__Inner--large {
|
||||
padding: 35px; }
|
||||
.RV-Spacing__Inner--large {
|
||||
gap: 35px; }
|
||||
|
||||
.RV-Iconized__Container {
|
||||
position: relative; }
|
||||
.RV-Iconized__Container--medium {
|
||||
top: -.5em; }
|
||||
.RV-Iconized__Container--large {
|
||||
top: -1.03073em; }
|
||||
.RV-Iconized__Container--huge {
|
||||
top: -2.05em; }
|
||||
|
||||
.RV-Iconized__Icon {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
|
||||
.RV-Iconized__Container--small .RV-Iconized__Icon {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
top: .125em; }
|
||||
|
||||
.RV-Iconized__Container--medium .RV-Iconized__Icon {
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
position: relative;
|
||||
top: .625em; }
|
||||
|
||||
.RV-Iconized__Container--large .RV-Iconized__Icon {
|
||||
width: 3em;
|
||||
height: 3em;
|
||||
position: relative;
|
||||
top: 1.15573em; }
|
||||
|
||||
.RV-Iconized__Container--huge .RV-Iconized__Icon {
|
||||
width: 5em;
|
||||
height: 5em;
|
||||
position: relative;
|
||||
top: 2.175em; }
|
||||
|
||||
.RV-ImageGrid__Container {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
|
||||
.RV-ImageGrid__Item {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
|
||||
.RV-ImageGrid__Container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||
grid-template-rows: repeat(auto-fill, minmax(300px, 1fr));
|
||||
grid-auto-rows: minmax(300px, 1fr); }
|
||||
|
||||
.RV-ImageGrid__Item__Container {
|
||||
display: grid; }
|
||||
.RV-ImageGrid__Item__Container--top {
|
||||
display: grid;
|
||||
align-content: start; }
|
||||
.RV-ImageGrid__Item__Container--bottom {
|
||||
display: grid;
|
||||
align-content: end; }
|
||||
.RV-ImageGrid__Item__Container--left {
|
||||
display: grid;
|
||||
justify-content: start; }
|
||||
.RV-ImageGrid__Item__Container--right {
|
||||
display: grid;
|
||||
justify-content: end; }
|
||||
.RV-ImageGrid__Item__Container--horizontalCenter {
|
||||
display: grid;
|
||||
justify-content: center; }
|
||||
.RV-ImageGrid__Item__Container--verticalCenter {
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.RV-ImageGrid__Item__Container--center {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
|
||||
.RV-ImageGrid__Container {
|
||||
padding: 25px; }
|
||||
.RV-ImageGrid__Container__Container {
|
||||
gap: 25px; }
|
||||
|
||||
.RV-ImageGrid__Item, .RV-ImageGrid__Item * {
|
||||
overflow: hidden;
|
||||
word-break: break-all; }
|
||||
|
||||
.RV-ImageGrid__Item img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.RV-ImageGrid__Item--left img {
|
||||
object-position: left; }
|
||||
|
||||
.RV-ImageGrid__Item--center img {
|
||||
object-position: center; }
|
||||
|
||||
.RV-ImageGrid__Item--top img {
|
||||
object-position: top; }
|
||||
|
||||
.RV-ImageGrid__Item--bottom img {
|
||||
object-position: botom; }
|
||||
|
||||
.RV-ImageGrid__Item--center img {
|
||||
object-position: center; }
|
||||
|
||||
.RV-ImageGrid__Item img {
|
||||
object-position: center; }
|
||||
|
||||
@font-face {
|
||||
font-family: Crimson;
|
||||
src: url("fonts/Crimson/CrimsonText-Regular.ttf"), url("fonts/Crimson/CrimsonText-Bold.ttf"), url("fonts/Crimson/CrimsonText-Italic.ttf"); }
|
||||
@ -178,8 +599,9 @@ body {
|
||||
.LP-Input .LP-Input__Field {
|
||||
border: none;
|
||||
border-bottom: 1px solid #565656;
|
||||
padding: 8px;
|
||||
margin-bottom: 30px; }
|
||||
padding: 8px 0;
|
||||
margin-bottom: 30px;
|
||||
width: 100%; }
|
||||
.LP-Input .LP-Input__Field:focus, .LP-Input .LP-Input__Field:active, .LP-Input .LP-Input__Field:invalid {
|
||||
margin-bottom: 29px;
|
||||
border-bottom: 2px solid #76323F;
|
||||
@ -199,14 +621,17 @@ body {
|
||||
color: #f9f9f9; }
|
||||
.LP-Input .LP-Input__Label {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
font-size: 16px; }
|
||||
font-size: 16px;
|
||||
white-space: wrap;
|
||||
overflow: hidden; }
|
||||
.LP-Input .LP-Input__Message {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
font-style: italic;
|
||||
font-size: 13px;
|
||||
padding: 3px;
|
||||
position: relative;
|
||||
top: -30px; }
|
||||
top: -30px;
|
||||
overflow: hidden; }
|
||||
.LP-Input--error .LP-Input__Field {
|
||||
margin-bottom: 25px;
|
||||
border-bottom: 2px solid #76323F;
|
||||
@ -583,44 +1008,161 @@ body {
|
||||
.LP-PlaceList .LP-Pagination {
|
||||
margin-top: 50px; }
|
||||
|
||||
.LP-LinkList__List {
|
||||
list-style-type: none;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
.LP-LinkList__List .LP-LinkList__Item {
|
||||
.LP-LinkList {
|
||||
padding: 10px;
|
||||
align-items: center; }
|
||||
.LP-LinkList__Container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||
grid-template-rows: repeat(auto-fill, minmax(3em, 1fr));
|
||||
grid-auto-rows: minmax(3em, 1fr); }
|
||||
.LP-LinkList__Item__Container {
|
||||
display: grid; }
|
||||
.LP-LinkList__Item__Container--top {
|
||||
display: grid;
|
||||
align-content: start; }
|
||||
.LP-LinkList__Item__Container--bottom {
|
||||
display: grid;
|
||||
align-content: end; }
|
||||
.LP-LinkList__Item__Container--left {
|
||||
display: grid;
|
||||
justify-content: start; }
|
||||
.LP-LinkList__Item__Container--right {
|
||||
display: grid;
|
||||
justify-content: end; }
|
||||
.LP-LinkList__Item__Container--horizontalCenter {
|
||||
display: grid;
|
||||
justify-content: center; }
|
||||
.LP-LinkList__Item__Container--verticalCenter {
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.LP-LinkList__Item__Container--center {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.LP-LinkList__Container {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
.LP-LinkList__Item {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
.LP-LinkList__Container {
|
||||
gap: 10px; }
|
||||
.LP-LinkList .LP-LinkList__Item {
|
||||
border-left: 1px solid #C09F80;
|
||||
width: calc(100% - 1px);
|
||||
margin-top: 12px; }
|
||||
.LP-LinkList__List .LP-LinkList__Item .LP-Link {
|
||||
padding: 1em 0 1em 1em;
|
||||
width: calc(100% - 1em);
|
||||
overflow: hidden;
|
||||
display: grid;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
height: 100%; }
|
||||
.LP-LinkList .LP-LinkList__Item--multiRow {
|
||||
flex-wrap: wrap; }
|
||||
.LP-LinkList .LP-LinkList__Item--column {
|
||||
display: flex;
|
||||
flex-direction: column; }
|
||||
.LP-LinkList .LP-LinkList__Item .LP-LinkList__ItemHover {
|
||||
opacity: 0.5;
|
||||
display: grid;
|
||||
justify-content: end;
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: min-content;
|
||||
flex-basis: min-content; }
|
||||
.LP-LinkList .LP-LinkList__Item:hover {
|
||||
background-color: #f9f9f9; }
|
||||
.LP-LinkList .LP-LinkList__Item:hover .LP-LinkList__ItemHover {
|
||||
opacity: 1; }
|
||||
.LP-LinkList .LP-Link {
|
||||
min-width: min-content;
|
||||
width: 100%;
|
||||
padding: 10px; }
|
||||
.LP-LinkList .LP-Link__Container {
|
||||
display: grid; }
|
||||
.LP-LinkList .LP-Link__Container--top {
|
||||
display: grid;
|
||||
align-content: start; }
|
||||
.LP-LinkList .LP-Link__Container--bottom {
|
||||
display: grid;
|
||||
align-content: end; }
|
||||
.LP-LinkList .LP-Link__Container--left {
|
||||
display: grid;
|
||||
justify-content: start; }
|
||||
.LP-LinkList .LP-Link__Container--right {
|
||||
display: grid;
|
||||
justify-content: end; }
|
||||
.LP-LinkList .LP-Link__Container--horizontalCenter {
|
||||
display: grid;
|
||||
justify-content: center; }
|
||||
.LP-LinkList .LP-Link__Container--verticalCenter {
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.LP-LinkList .LP-Link__Container--center {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.LP-LinkList .LP-Link, .LP-LinkList .LP-Link--normal {
|
||||
flex-grow: 3;
|
||||
flex-shrink: 3; }
|
||||
.LP-LinkList .LP-Link--narrower {
|
||||
flex-grow: 1;
|
||||
flex-shrink: 5; }
|
||||
.LP-LinkList .LP-Link--narrow {
|
||||
flex-grow: 2;
|
||||
flex-shrink: 4; }
|
||||
.LP-LinkList .LP-Link--wide {
|
||||
flex-grow: 4;
|
||||
flex-shrink: 2; }
|
||||
.LP-LinkList .LP-Link--wider {
|
||||
flex-grow: 5;
|
||||
flex-shrink: 1; }
|
||||
.LP-LinkList .LP-Link--fixedSize {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: min-content;
|
||||
flex-basis: 100px; }
|
||||
.LP-LinkList .LP-Link__Container {
|
||||
gap: 10px; }
|
||||
.LP-LinkList .LP-LinkAdd {
|
||||
height: 0; }
|
||||
.LP-LinkList .LP-LinkAdd__Container {
|
||||
position: relative;
|
||||
top: -39px; }
|
||||
.LP-LinkList .LP-LinkAdd__Container .LP-Form__Fieldset {
|
||||
min-width: unset; }
|
||||
.LP-LinkList .LP-LinkAdd__Container .LP-Form {
|
||||
display: block;
|
||||
color: #565656; }
|
||||
.LP-LinkList__List .LP-LinkList__Item .LP-Link--iconized {
|
||||
padding-top: 0;
|
||||
padding-bottom: 1.1em; }
|
||||
.LP-LinkList__List .LP-LinkList__Item .LP-Link--iconized:hover {
|
||||
background-color: #ccc !important; }
|
||||
.LP-LinkList__List .LP-LinkList__Item .LP-Link--iconized .LP-Text {
|
||||
padding-top: .1em; }
|
||||
.LP-LinkList__List .LP-LinkList__Item .LP-Link:hover {
|
||||
background-color: #f9f9f9;
|
||||
color: #76323F; }
|
||||
.LP-LinkList__List .LP-LinkList__Item .LP-Link .LP-Text {
|
||||
color: inherit; }
|
||||
min-width: 0px; }
|
||||
|
||||
.LP-Link__Icon {
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
fill: #76323F;
|
||||
line-height: 5em; }
|
||||
.LP-LinkAdd {
|
||||
display: none; }
|
||||
|
||||
.LP-LinkList__Item .LP-Link__Icon {
|
||||
position: relative;
|
||||
top: .7em;
|
||||
margin-right: .6em; }
|
||||
.LP-LinkAdd__Trigger {
|
||||
display: none; }
|
||||
|
||||
.LP-LinkAdd__TriggerLabel {
|
||||
cursor: pointer;
|
||||
display: contents; }
|
||||
|
||||
.LP-LinkAdd__Trigger:checked, .LP-LinkAdd__Trigger:checked + .LP-LinkAdd__TriggerLabel {
|
||||
display: none; }
|
||||
|
||||
.LP-LinkAdd__Trigger:checked ~ .LP-LinkAdd {
|
||||
display: block; }
|
||||
|
||||
.LP-Footer {
|
||||
margin-top: 75px;
|
||||
@ -643,98 +1185,193 @@ body {
|
||||
.LP-Footer .LP-LinkList__List .LP-LinkList__Item .LP-Link:hover {
|
||||
background-color: inherit; }
|
||||
|
||||
.LP-Form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center; }
|
||||
.LP-Form .LP-Form__Fieldset {
|
||||
border: none;
|
||||
max-width: 1200px;
|
||||
min-width: 750px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Legend {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
font-size: 21px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field {
|
||||
flex: 3 2 100px;
|
||||
padding: 6px 15px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field--wider {
|
||||
flex: 5 2; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field--wide {
|
||||
flex: 4 2; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field--narrow {
|
||||
flex: 2 1; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field--narrower {
|
||||
flex: 1 2; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition--buttons {
|
||||
justify-content: flex-end; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Button {
|
||||
flex-grow: 0;
|
||||
padding-left: 0;
|
||||
min-width: 130px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Button .LP-Link {
|
||||
display: contents; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__InfoText .LP-Paragraph {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
color: #565656; }
|
||||
.LP-Form--inline .LP-Form__Legend, .LP-Form--inline .LP-Input__Label {
|
||||
display: none; }
|
||||
|
||||
@media (max-width: 750px) {
|
||||
.LP-Form .LP-Form__Fieldset {
|
||||
min-width: unset; } }
|
||||
|
||||
@media (max-width: 650px) {
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition--breakable {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between; } }
|
||||
.LP-Form--inline .LP-Form__Button {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: min-content;
|
||||
flex-basis: max-content; }
|
||||
|
||||
@media (max-width: 450px) {
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition {
|
||||
.LP-Form:not(.LP-Form--inline) .LP-Form__Composition {
|
||||
flex-wrap: wrap; } }
|
||||
|
||||
.LP-Form:not(.LP-Form--inline) .LP-Form__Button {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: min-content;
|
||||
flex-basis: 130px; }
|
||||
@media (max-width: 450px) {
|
||||
.LP-Form:not(.LP-Form--inline) .LP-Form__Button {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: min-content;
|
||||
flex-basis: 100%; } }
|
||||
|
||||
.LP-Form .LP-Form__Fieldset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none;
|
||||
max-width: 1200px;
|
||||
min-width: 750px; }
|
||||
@media (max-width: 750px) {
|
||||
.LP-Form .LP-Form__Fieldset {
|
||||
min-width: unset; } }
|
||||
|
||||
.LP-Form .LP-Form__Legend {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
font-size: 21px; }
|
||||
|
||||
.LP-Form .LP-Form__Composition {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
height: 100%;
|
||||
padding: 10px; }
|
||||
.LP-Form .LP-Form__Composition--multiRow {
|
||||
flex-wrap: wrap; }
|
||||
.LP-Form .LP-Form__Composition--column {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Field:not(.LP-Form__Button) {
|
||||
flex: 3 1 100px;
|
||||
padding: 12px 15px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition .LP-Form__Button {
|
||||
padding: 0 15px; }
|
||||
.LP-Form .LP-Form__Fieldset .LP-Form__Composition--buttons {
|
||||
justify-content: flex-end; } }
|
||||
flex-direction: column; }
|
||||
.LP-Form .LP-Form__Composition {
|
||||
gap: 10px; }
|
||||
@media (max-width: 650px) {
|
||||
.LP-Form .LP-Form__Composition--breakable {
|
||||
flex-wrap: wrap; } }
|
||||
.LP-Form .LP-Form__Composition--buttons {
|
||||
justify-content: flex-end;
|
||||
padding: 10px; }
|
||||
.LP-Form .LP-Form__Composition--buttons__Container {
|
||||
gap: 10px; }
|
||||
|
||||
.LP-ImageGrid .LP-ImageGrid__List {
|
||||
list-style-type: none;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, 300px);
|
||||
align-content: space-around;
|
||||
justify-content: center;
|
||||
margin: 0px;
|
||||
padding: 0px; }
|
||||
.LP-Form .LP-Form__Field {
|
||||
min-width: min-content;
|
||||
width: 100%; }
|
||||
.LP-Form .LP-Form__Field__Container {
|
||||
display: grid; }
|
||||
.LP-Form .LP-Form__Field__Container--top {
|
||||
display: grid;
|
||||
align-content: start; }
|
||||
.LP-Form .LP-Form__Field__Container--bottom {
|
||||
display: grid;
|
||||
align-content: end; }
|
||||
.LP-Form .LP-Form__Field__Container--left {
|
||||
display: grid;
|
||||
justify-content: start; }
|
||||
.LP-Form .LP-Form__Field__Container--right {
|
||||
display: grid;
|
||||
justify-content: end; }
|
||||
.LP-Form .LP-Form__Field__Container--horizontalCenter {
|
||||
display: grid;
|
||||
justify-content: center; }
|
||||
.LP-Form .LP-Form__Field__Container--verticalCenter {
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.LP-Form .LP-Form__Field__Container--center {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.LP-Form .LP-Form__Field, .LP-Form .LP-Form__Field--normal {
|
||||
flex-grow: 3;
|
||||
flex-shrink: 3; }
|
||||
.LP-Form .LP-Form__Field--narrower {
|
||||
flex-grow: 1;
|
||||
flex-shrink: 5; }
|
||||
.LP-Form .LP-Form__Field--narrow {
|
||||
flex-grow: 2;
|
||||
flex-shrink: 4; }
|
||||
.LP-Form .LP-Form__Field--wide {
|
||||
flex-grow: 4;
|
||||
flex-shrink: 2; }
|
||||
.LP-Form .LP-Form__Field--wider {
|
||||
flex-grow: 5;
|
||||
flex-shrink: 1; }
|
||||
.LP-Form .LP-Form__Field--fixedSize {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
width: min-content;
|
||||
flex-basis: 100px; }
|
||||
|
||||
.LP-ImageGrid .LP-ImageGrid__Item {
|
||||
margin-top: 10px; }
|
||||
.LP-Form .LP-Form__InfoText .LP-Paragraph {
|
||||
font-family: Montserrat, Helvetica, sans-serif;
|
||||
color: #565656; }
|
||||
|
||||
.LP-ImageGrid .LP-Link {
|
||||
overflow: hidden; }
|
||||
|
||||
.LP-ImageGrid .LP-Image {
|
||||
box-shadow: 0 0 5px #565656;
|
||||
height: 200px;
|
||||
width: 290px;
|
||||
object-fit: cover; }
|
||||
|
||||
@media (max-width: 650px) {
|
||||
.LP-ImageGrid .LP-ImageGrid__List {
|
||||
grid-template-columns: 1fr; }
|
||||
.LP-ImageGrid .LP-ImageGrid__List .LP-Image {
|
||||
box-shadow: 0 0 5px #565656;
|
||||
height: auto;
|
||||
width: 100%;
|
||||
object-fit: cover; } }
|
||||
.LP-ImageGrid {
|
||||
padding: 10px; }
|
||||
.LP-ImageGrid__Container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
|
||||
grid-template-rows: repeat(auto-fill, minmax(200px, 1fr));
|
||||
grid-auto-rows: minmax(200px, 1fr); }
|
||||
.LP-ImageGrid__Item__Container {
|
||||
display: grid; }
|
||||
.LP-ImageGrid__Item__Container--top {
|
||||
display: grid;
|
||||
align-content: start; }
|
||||
.LP-ImageGrid__Item__Container--bottom {
|
||||
display: grid;
|
||||
align-content: end; }
|
||||
.LP-ImageGrid__Item__Container--left {
|
||||
display: grid;
|
||||
justify-content: start; }
|
||||
.LP-ImageGrid__Item__Container--right {
|
||||
display: grid;
|
||||
justify-content: end; }
|
||||
.LP-ImageGrid__Item__Container--horizontalCenter {
|
||||
display: grid;
|
||||
justify-content: center; }
|
||||
.LP-ImageGrid__Item__Container--verticalCenter {
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.LP-ImageGrid__Item__Container--center {
|
||||
display: grid;
|
||||
justify-content: center;
|
||||
display: grid;
|
||||
align-items: center; }
|
||||
.LP-ImageGrid__Container {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
.LP-ImageGrid__Item {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border: none; }
|
||||
.LP-ImageGrid__Container {
|
||||
gap: 10px; }
|
||||
.LP-ImageGrid .LP-ImageGrid__Item, .LP-ImageGrid .LP-ImageGrid__Item * {
|
||||
overflow: hidden;
|
||||
word-break: break-all; }
|
||||
.LP-ImageGrid .LP-ImageGrid__Item img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
.LP-ImageGrid .LP-ImageGrid__Item--left img {
|
||||
object-position: left; }
|
||||
.LP-ImageGrid .LP-ImageGrid__Item--center img {
|
||||
object-position: center; }
|
||||
.LP-ImageGrid .LP-ImageGrid__Item--top img {
|
||||
object-position: top; }
|
||||
.LP-ImageGrid .LP-ImageGrid__Item--bottom img {
|
||||
object-position: botom; }
|
||||
.LP-ImageGrid .LP-ImageGrid__Item--center img {
|
||||
object-position: center; }
|
||||
|
||||
.LP-MainContainer {
|
||||
margin: 0 auto;
|
||||
|
@ -0,0 +1,41 @@
|
||||
{% extends 'global.html'%}
|
||||
|
||||
{% block title %}Submit a photo album{% endblock %}
|
||||
|
||||
{% block additional_menu_items %}
|
||||
<li class="LP-Menu__Item LP-Menu__Item--additional"><a href="{% url 'place_edit' pk=place.pk %}" class="LP-Link"><span
|
||||
class="LP-Link__Text">Edit place</span></a></li>
|
||||
<li class="LP-Menu__Item LP-Menu__Item--additional"><a href="{% url 'place_delete' pk=place.pk %}" class="LP-Link"><span
|
||||
class="LP-Link__Text">Delete place</span></a></li>
|
||||
{% endblock additional_menu_items %}
|
||||
|
||||
{% block maincontent %}
|
||||
<form class="LP-Form" method="POST">
|
||||
<fieldset class="LP-Form__Fieldset">
|
||||
<legend class="LP-Form__Legend">Submit a photo album for {{place.name}}</legend>
|
||||
{% csrf_token %}
|
||||
<div class="LP-Form__Composition">
|
||||
<div class="LP-Form__Field">
|
||||
{% include 'partials/form/inputField.html' with field=form.url %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="LP-Form__Composition">
|
||||
<div class="LP-Form__Field">
|
||||
{% include 'partials/form/inputField.html' with field=form.label %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="LP-Form__Composition LP-Form__Composition--buttons">
|
||||
<div class="LP-Form__Field LP-Form__Button LP-Input">
|
||||
<button class="LP-Button">Create</button>
|
||||
</div>
|
||||
<div class="LP-Form__Field LP-Form__Button LP-Input">
|
||||
<a class="LP-Link" href="{% url 'place_list' %}">
|
||||
<button type="button" class="LP-Button LP-Button--cancel">Cancel</button>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{% endblock maincontent %}
|
@ -1,58 +1,97 @@
|
||||
{% extends 'global.html'%}
|
||||
{% load static %}
|
||||
{% block additional_head %}
|
||||
<link rel="stylesheet" href="{% static 'maps/ol.css' %}" type="text/css">
|
||||
<script src="{% static 'maps/ol.js' %}"></script>
|
||||
<link rel="stylesheet" href="{% static 'maps/ol.css' %}" type="text/css">
|
||||
<script src="{% static 'maps/ol.js' %}"></script>
|
||||
{% endblock additional_head %}
|
||||
{% load thumbnail %}
|
||||
|
||||
{% block title %}{{place.name}}{% endblock %}
|
||||
|
||||
{% block additional_menu_items %}
|
||||
<li class="LP-Menu__Item LP-Menu__Item--additional"><a href="{% url 'place_edit' pk=place.pk %}" class="LP-Link"><span class="LP-Link__Text">Edit place</span></a></li>
|
||||
<li class="LP-Menu__Item LP-Menu__Item--additional"><a href="{% url 'place_delete' pk=place.pk %}" class="LP-Link"><span class="LP-Link__Text">Delete place</span></a></li>
|
||||
<li class="LP-Menu__Item LP-Menu__Item--additional"><a href="{% url 'place_edit' pk=place.pk %}" class="LP-Link"><span
|
||||
class="LP-Link__Text">Edit place</span></a></li>
|
||||
<li class="LP-Menu__Item LP-Menu__Item--additional"><a href="{% url 'place_delete' pk=place.pk %}" class="LP-Link"><span
|
||||
class="LP-Link__Text">Delete place</span></a></li>
|
||||
{% endblock additional_menu_items %}
|
||||
|
||||
|
||||
{% block maincontent %}
|
||||
<article class="LP-PlaceDetail">
|
||||
|
||||
<header class="LP-PlaceDetail__Header">
|
||||
<h1 class="LP-Headline">{{ place.name }}</h1>
|
||||
{% if place.images.first.filename.hero.url %}
|
||||
<figure class="LP-PlaceDetail__Image">
|
||||
<img src="{{ place.images.first.filename.hero.url }}" class="LP-Image" />
|
||||
</figure>
|
||||
{% endif %}
|
||||
</header>
|
||||
<header class="LP-PlaceDetail__Header">
|
||||
<h1 class="LP-Headline">{{ place.name }}</h1>
|
||||
{% if place.images.first.filename.hero.url %}
|
||||
<figure class="LP-PlaceDetail__Image">
|
||||
<img src="{{ place.images.first.filename.hero.url }}" class="LP-Image" />
|
||||
</figure>
|
||||
{% endif %}
|
||||
</header>
|
||||
|
||||
<div class="LP-PlaceDetail__Description">
|
||||
<p class="LP-Paragraph">{{ place.description }}</p>
|
||||
</div>
|
||||
<div class="LP-PlaceDetail__Description">
|
||||
<p class="LP-Paragraph">{{ place.description }}</p>
|
||||
</div>
|
||||
|
||||
<section class="LP-Section">
|
||||
<h1 class="LP-Headline">Map-Links</h1>
|
||||
{% include 'partials/osm_map.html' %}
|
||||
<div class="LP-LinkList">
|
||||
<ul class="LP-LinkList__Container">
|
||||
<li class="LP-LinkList__Item"><a target="_blank"
|
||||
href="https://www.google.com/maps?q={{place.latitude}},{{place.longitude}}"
|
||||
class="LP-Link"><span class="LP-Text">Google Maps</span></a></li>
|
||||
<li class="LP-LinkList__Item"><a target="_blank"
|
||||
href="https://www.tim-online.nrw.de/tim-online2/?center={{place.latitude}},{{place.longitude}}&icon=true&bg=dop"
|
||||
class="LP-Link"><span class="LP-Text">TIM Online</span></a></li>
|
||||
<li class="LP-LinkList__Item"><a target="_blank"
|
||||
href="http://www.openstreetmap.org/?mlat={{place.latitude}}&mlon={{place.longitude}}&zoom=16"
|
||||
class="LP-Link"><span class="LP-Text">OSM</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="LP-Section">
|
||||
<h1 class="LP-Headline">Photoalben</h1>
|
||||
<div class="LP-LinkList">
|
||||
<ul class="LP-LinkList__Container">
|
||||
{% for photo_album in place.photo_albums.all %}
|
||||
<li class="LP-LinkList__Item">
|
||||
<a target="_blank" href="{{photo_album.url}}" class="LP-Link">
|
||||
<span class="LP-Text">{{photo_album.label}}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
<li class="LP-LinkList__Item">
|
||||
<a href="{% url 'photo_album_create' place_id=place.id %}" class="LP-Link">
|
||||
<div class="RV-Iconized__Container RV-Iconized__Container--small">
|
||||
<svg class="RV-Iconized__Icon" version="1.1" id="Capa_1"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve">
|
||||
<g>
|
||||
<path d="M492,236H276V20c0-11.046-8.954-20-20-20c-11.046,0-20,8.954-20,20v216H20c-11.046,0-20,8.954-20,20s8.954,20,20,20h216
|
||||
v216c0,11.046,8.954,20,20,20s20-8.954,20-20V276h216c11.046,0,20-8.954,20-20C512,244.954,503.046,236,492,236z" />
|
||||
</g>
|
||||
</svg>
|
||||
<span class="RV-Iconized__Text">Link hinzufügen</span>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="LP-Section">
|
||||
<h1 class="LP-Headline">Bilder</h1>
|
||||
<div class="LP-ImageGrid">
|
||||
<ul class="LP-ImageGrid__Container">
|
||||
{% for place_image in place.images.all %}
|
||||
<li class="LP-ImageGrid__Item">
|
||||
<a href="{{ place_image.filename.large.url }}" class="LP-Link"><img class="LP-Image"
|
||||
src="{{ place_image.filename.thumbnail.url }}"></a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="LP-Section">
|
||||
<h1 class="LP-Headline">Map-Links</h1>
|
||||
{% include 'partials/osm_map.html' %}
|
||||
<div class="LP-LinkList">
|
||||
<ul class="LP-LinkList__List">
|
||||
<li class="LP-LinkList__Item"><a target="_blank" href="https://www.google.com/maps?q={{place.latitude}},{{place.longitude}}" class="LP-Link"><span class="LP-Text">Google Maps</span></a></li>
|
||||
<li class="LP-LinkList__Item"><a target="_blank" href="https://www.tim-online.nrw.de/tim-online2/?center={{place.latitude}},{{place.longitude}}&icon=true&bg=dop" class="LP-Link"><span class="LP-Text">TIM Online</span></a></li>
|
||||
<li class="LP-LinkList__Item"><a target="_blank" href="http://www.openstreetmap.org/?mlat={{place.latitude}}&mlon={{place.longitude}}&zoom=16" class="LP-Link"><span class="LP-Text">OSM</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="LP-Section">
|
||||
<h1 class="LP-Headline">Bilder</h1>
|
||||
<div class="LP-ImageGrid">
|
||||
<ul class="LP-ImageGrid__List">
|
||||
{% for place_image in place.images.all %}
|
||||
<li class="LP-ImageGrid__Item">
|
||||
<a href="{{ place_image.filename.large.url }}" class="LP-Link"><img class="LP-Image" src="{{ place_image.filename.thumbnail.url }}"></a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</article>
|
||||
{% endblock maincontent %}
|
@ -6,7 +6,8 @@ from .views import (
|
||||
SignUpView,
|
||||
PlaceCreateView,
|
||||
PlaceUpdateView,
|
||||
PlaceDeleteView
|
||||
PlaceDeleteView,
|
||||
PhotoAlbumCreateView
|
||||
)
|
||||
|
||||
urlpatterns = [
|
||||
@ -14,6 +15,7 @@ urlpatterns = [
|
||||
path('signup/', SignUpView.as_view(), name='signup'),
|
||||
path('place/<int:pk>/', PlaceDetailView.as_view(), name='place_detail'),
|
||||
path('place/create/', PlaceCreateView.as_view(), name='place_create'),
|
||||
path('photo_album/create/<int:place_id>', PhotoAlbumCreateView.as_view(), name='photo_album_create'),
|
||||
path('place/update/<int:pk>/', PlaceUpdateView.as_view(), name='place_edit'),
|
||||
path('place/delete/<int:pk>/', PlaceDeleteView.as_view(), name='place_delete'),
|
||||
path('place/', PlaceListView.as_view(), name='place_list')
|
||||
|
@ -18,7 +18,7 @@ from .forms import (
|
||||
PlaceForm,
|
||||
PlaceImageCreateForm
|
||||
)
|
||||
from .models import Place, PlaceImage, Voucher
|
||||
from .models import Place, PlaceImage, Voucher, PhotoAlbum
|
||||
|
||||
# Create your views here.
|
||||
|
||||
@ -155,3 +155,42 @@ class PlaceDeleteView(IsAuthenticated, IsSubmitter, DeleteView):
|
||||
def delete(self, request, *args, **kwargs):
|
||||
messages.success(self.request, self.success_message)
|
||||
return super().delete(request, *args, **kwargs)
|
||||
|
||||
class AlbumCreateView(IsAuthenticated, View):
|
||||
def get(self, request, *args, **kwargs):
|
||||
url = request.GET['url']
|
||||
place_id = request.GET['place_id']
|
||||
place = Place.objects.get(pk=place_id)
|
||||
photo_album = PhotoAlbum()
|
||||
photo_album.url = url
|
||||
photo_album.place = place
|
||||
photo_album.submitted_by = request.user
|
||||
photo_album.save()
|
||||
print(photo_album)
|
||||
return redirect(reverse_lazy('place_detail', kwargs={'pk': place_id}))
|
||||
|
||||
class PhotoAlbumCreateView(IsAuthenticated, CreateView):
|
||||
model = PhotoAlbum
|
||||
fields = ['url', 'label']
|
||||
template_name = 'photo_album/photo_album_create.html'
|
||||
success_message = 'Photo album submitted'
|
||||
|
||||
def get(self, request, place_id, *args, **kwargs):
|
||||
self.place = Place.objects.get(pk=place_id)
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
def post(self, request, place_id, *args, **kwargs):
|
||||
self.place = Place.objects.get(pk=place_id)
|
||||
response = super().post(request, *args, **kwargs)
|
||||
self.object.place = self.place
|
||||
self.object.submitted_by = request.user
|
||||
self.object.save()
|
||||
return response
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['place'] = self.place
|
||||
return context
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy('place_detail', kwargs={'pk': self.place.id})
|
Loading…
Reference in New Issue
Block a user