Implements jquery modal popup on thumbnail click

This commit is contained in:
Fred Pauchet 2012-11-16 17:14:01 +01:00
parent ea88751cac
commit 7686176ddd
15 changed files with 6541 additions and 4024 deletions

View File

@ -1,581 +0,0 @@
/*!
* Bootstrap Responsive v2.0.1
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/
.clearfix {
*zoom: 1;
}
.clearfix:before, .clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both;
}
.hidden {
display: none;
visibility: hidden;
}
@media (max-width: 480px) {
.nav-collapse {
-webkit-transform: translate3d(0, 0, 0);
}
.page-header h1 small {
display: block;
line-height: 18px;
}
input[class*="span"],
select[class*="span"],
textarea[class*="span"],
.uneditable-input {
display: block;
width: 100%;
min-height: 28px;
/* Make inputs at least the height of their button counterpart */
/* Makes inputs behave like true block-level elements */
-webkit-box-sizing: border-box;
/* Older Webkit */
-moz-box-sizing: border-box;
/* Older FF */
-ms-box-sizing: border-box;
/* IE8 */
box-sizing: border-box;
/* CSS3 spec*/
}
.input-prepend input[class*="span"], .input-append input[class*="span"] {
width: auto;
}
input[type="checkbox"], input[type="radio"] {
border: 1px solid #ccc;
}
.form-horizontal .control-group > label {
float: none;
width: auto;
padding-top: 0;
text-align: left;
}
.form-horizontal .controls {
margin-left: 0;
}
.form-horizontal .control-list {
padding-top: 0;
}
.form-horizontal .form-actions {
padding-left: 10px;
padding-right: 10px;
}
.modal {
position: absolute;
top: 10px;
left: 10px;
right: 10px;
width: auto;
margin: 0;
}
.modal.fade.in {
top: auto;
}
.modal-header .close {
padding: 10px;
margin: -10px;
}
.carousel-caption {
position: static;
}
}
@media (max-width: 767px) {
.container {
width: auto;
padding: 0 20px;
}
.row-fluid {
width: 100%;
}
.row {
margin-left: 0;
}
.row > [class*="span"], .row-fluid > [class*="span"] {
float: none;
display: block;
width: auto;
margin: 0;
}
}
@media (min-width: 768px) and (max-width: 979px) {
.row {
margin-left: -20px;
*zoom: 1;
}
.row:before, .row:after {
display: table;
content: "";
}
.row:after {
clear: both;
}
[class*="span"] {
float: left;
margin-left: 20px;
}
.span1 {
width: 42px;
}
.span2 {
width: 104px;
}
.span3 {
width: 166px;
}
.span4 {
width: 228px;
}
.span5 {
width: 290px;
}
.span6 {
width: 352px;
}
.span7 {
width: 414px;
}
.span8 {
width: 476px;
}
.span9 {
width: 538px;
}
.span10 {
width: 600px;
}
.span11 {
width: 662px;
}
.span12, .container {
width: 724px;
}
.offset1 {
margin-left: 82px;
}
.offset2 {
margin-left: 144px;
}
.offset3 {
margin-left: 206px;
}
.offset4 {
margin-left: 268px;
}
.offset5 {
margin-left: 330px;
}
.offset6 {
margin-left: 392px;
}
.offset7 {
margin-left: 454px;
}
.offset8 {
margin-left: 516px;
}
.offset9 {
margin-left: 578px;
}
.offset10 {
margin-left: 640px;
}
.offset11 {
margin-left: 702px;
}
.row-fluid {
width: 100%;
*zoom: 1;
}
.row-fluid:before, .row-fluid:after {
display: table;
content: "";
}
.row-fluid:after {
clear: both;
}
.row-fluid > [class*="span"] {
float: left;
margin-left: 2.762430939%;
}
.row-fluid > [class*="span"]:first-child {
margin-left: 0;
}
.row-fluid > .span1 {
width: 5.801104972%;
}
.row-fluid > .span2 {
width: 14.364640883%;
}
.row-fluid > .span3 {
width: 22.928176794%;
}
.row-fluid > .span4 {
width: 31.491712705%;
}
.row-fluid > .span5 {
width: 40.055248616%;
}
.row-fluid > .span6 {
width: 48.618784527%;
}
.row-fluid > .span7 {
width: 57.182320438000005%;
}
.row-fluid > .span8 {
width: 65.74585634900001%;
}
.row-fluid > .span9 {
width: 74.30939226%;
}
.row-fluid > .span10 {
width: 82.87292817100001%;
}
.row-fluid > .span11 {
width: 91.436464082%;
}
.row-fluid > .span12 {
width: 99.999999993%;
}
input.span1, textarea.span1, .uneditable-input.span1 {
width: 32px;
}
input.span2, textarea.span2, .uneditable-input.span2 {
width: 94px;
}
input.span3, textarea.span3, .uneditable-input.span3 {
width: 156px;
}
input.span4, textarea.span4, .uneditable-input.span4 {
width: 218px;
}
input.span5, textarea.span5, .uneditable-input.span5 {
width: 280px;
}
input.span6, textarea.span6, .uneditable-input.span6 {
width: 342px;
}
input.span7, textarea.span7, .uneditable-input.span7 {
width: 404px;
}
input.span8, textarea.span8, .uneditable-input.span8 {
width: 466px;
}
input.span9, textarea.span9, .uneditable-input.span9 {
width: 528px;
}
input.span10, textarea.span10, .uneditable-input.span10 {
width: 590px;
}
input.span11, textarea.span11, .uneditable-input.span11 {
width: 652px;
}
input.span12, textarea.span12, .uneditable-input.span12 {
width: 714px;
}
}
@media (max-width: 979px) {
body {
padding-top: 0;
}
.navbar-fixed-top {
position: static;
margin-bottom: 18px;
}
.navbar-fixed-top .navbar-inner {
padding: 5px;
}
.navbar .container {
width: auto;
padding: 0;
}
.navbar .brand {
padding-left: 10px;
padding-right: 10px;
margin: 0 0 0 -5px;
}
.navbar .nav-collapse {
clear: left;
}
.navbar .nav {
float: none;
margin: 0 0 9px;
}
.navbar .nav > li {
float: none;
}
.navbar .nav > li > a {
margin-bottom: 2px;
}
.navbar .nav > .divider-vertical {
display: none;
}
.navbar .nav .nav-header {
color: #999999;
text-shadow: none;
}
.navbar .nav > li > a, .navbar .dropdown-menu a {
padding: 6px 15px;
font-weight: bold;
color: #999999;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
.navbar .dropdown-menu li + li a {
margin-bottom: 2px;
}
.navbar .nav > li > a:hover, .navbar .dropdown-menu a:hover {
background-color: #222222;
}
.navbar .dropdown-menu {
position: static;
top: auto;
left: auto;
float: none;
display: block;
max-width: none;
margin: 0 15px;
padding: 0;
background-color: transparent;
border: none;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
.navbar .dropdown-menu:before, .navbar .dropdown-menu:after {
display: none;
}
.navbar .dropdown-menu .divider {
display: none;
}
.navbar-form, .navbar-search {
float: none;
padding: 9px 15px;
margin: 9px 0;
border-top: 1px solid #222222;
border-bottom: 1px solid #222222;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
}
.navbar .nav.pull-right {
float: none;
margin-left: 0;
}
.navbar-static .navbar-inner {
padding-left: 10px;
padding-right: 10px;
}
.btn-navbar {
display: block;
}
.nav-collapse {
overflow: hidden;
height: 0;
}
}
@media (min-width: 980px) {
.nav-collapse.collapse {
height: auto !important;
}
}
@media (min-width: 1200px) {
.row {
margin-left: -30px;
*zoom: 1;
}
.row:before, .row:after {
display: table;
content: "";
}
.row:after {
clear: both;
}
[class*="span"] {
float: left;
margin-left: 30px;
}
.span1 {
width: 70px;
}
.span2 {
width: 170px;
}
.span3 {
width: 270px;
}
.span4 {
width: 370px;
}
.span5 {
width: 470px;
}
.span6 {
width: 570px;
}
.span7 {
width: 670px;
}
.span8 {
width: 770px;
}
.span9 {
width: 870px;
}
.span10 {
width: 970px;
}
.span11 {
width: 1070px;
}
.span12, .container {
width: 1170px;
}
.offset1 {
margin-left: 130px;
}
.offset2 {
margin-left: 230px;
}
.offset3 {
margin-left: 330px;
}
.offset4 {
margin-left: 430px;
}
.offset5 {
margin-left: 530px;
}
.offset6 {
margin-left: 630px;
}
.offset7 {
margin-left: 730px;
}
.offset8 {
margin-left: 830px;
}
.offset9 {
margin-left: 930px;
}
.offset10 {
margin-left: 1030px;
}
.offset11 {
margin-left: 1130px;
}
.row-fluid {
width: 100%;
*zoom: 1;
}
.row-fluid:before, .row-fluid:after {
display: table;
content: "";
}
.row-fluid:after {
clear: both;
}
.row-fluid > [class*="span"] {
float: left;
margin-left: 2.564102564%;
}
.row-fluid > [class*="span"]:first-child {
margin-left: 0;
}
.row-fluid > .span1 {
width: 5.982905983%;
}
.row-fluid > .span2 {
width: 14.529914530000001%;
}
.row-fluid > .span3 {
width: 23.076923077%;
}
.row-fluid > .span4 {
width: 31.623931624%;
}
.row-fluid > .span5 {
width: 40.170940171000005%;
}
.row-fluid > .span6 {
width: 48.717948718%;
}
.row-fluid > .span7 {
width: 57.264957265%;
}
.row-fluid > .span8 {
width: 65.81196581200001%;
}
.row-fluid > .span9 {
width: 74.358974359%;
}
.row-fluid > .span10 {
width: 82.905982906%;
}
.row-fluid > .span11 {
width: 91.45299145300001%;
}
.row-fluid > .span12 {
width: 100%;
}
input.span1, textarea.span1, .uneditable-input.span1 {
width: 60px;
}
input.span2, textarea.span2, .uneditable-input.span2 {
width: 160px;
}
input.span3, textarea.span3, .uneditable-input.span3 {
width: 260px;
}
input.span4, textarea.span4, .uneditable-input.span4 {
width: 360px;
}
input.span5, textarea.span5, .uneditable-input.span5 {
width: 460px;
}
input.span6, textarea.span6, .uneditable-input.span6 {
width: 560px;
}
input.span7, textarea.span7, .uneditable-input.span7 {
width: 660px;
}
input.span8, textarea.span8, .uneditable-input.span8 {
width: 760px;
}
input.span9, textarea.span9, .uneditable-input.span9 {
width: 860px;
}
input.span10, textarea.span10, .uneditable-input.span10 {
width: 960px;
}
input.span11, textarea.span11, .uneditable-input.span11 {
width: 1060px;
}
input.span12, textarea.span12, .uneditable-input.span12 {
width: 1160px;
}
.thumbnails {
margin-left: -30px;
}
.thumbnails > li {
margin-left: 30px;
}
}

File diff suppressed because one or more lines are too long

6192
static/css/bootstrap.css vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -15,3 +15,30 @@ header img
margin: auto;
text-align: center;
}
.modal.large{
width: 780px;
margin-left: -390px; /* - width/2 */
}
.modal-body
{
max-height: 600px;
}
.modal.fade.in
{
top: 40%;
}
ul.tags
{
margin: 0;
}
ul.tags li
{
display: inline;
padding: 2px;
margin: 0;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 12 KiB

2494
static/js/bootstrap.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -109,7 +109,7 @@
var currentCssClass = 'w' + weight + " " + custom_class;
word_span = $('<span>').attr(word.html).addClass(currentCssClass);
word_span = $('<span>').attr(word.html).addClass(currentCssClass);
// Append link if word.url attribute was set
if (word.link) {

File diff suppressed because one or more lines are too long

View File

@ -7,30 +7,43 @@
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.css" media="screen" />
<link rel="stylesheet" href="{{ STATIC_URL }}css/custom.css" media="screen" />
<script src="{{ STATIC_URL }}js/jquery-1.8.2.min.js"></script>
<script src="{{ STATIC_URL }}js/bootstrap.min.js"></script>
<title>{% block page_title %}Collec' de cart'{% endblock %}</title>
</head>
<body>
<header class="jumbotron subhead" id="overview">
<a href="/"><img src="{{STATIC_URL}}img/header.png" alt="Ma collection de télécartes" /></a>
</header>
<div class="container-fluid">
<div class="row-fluid">
<div class="row-fluid">
<div class="span3">
{% nav_menu %}
</div>
<div class="span9">
{% block main_container %}{% endblock %}
</div>
</div>
<header>
<div>
<!--<a href="/"><img src="{{STATIC_URL}}img/header.png" alt="Ma collection de télécartes" /></a>-->
</div>
</div>
<div>
<ul class="nav nav-pills pull-right">
<li class="active">
<a href="#">Télécartes</a>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Pays<b class="caret"></b></a>
<ul class="dropdown-menu">
{% nav_menu %}
</ul>
</li>
<li><a href="#">Tags</a>
<li><a href="#">A propos</a></li>
<li><a href="#">Admin</a></li>
<li>
<form action="/query/" method="POST">
{% csrf_token %}
<input id="q" name="q" type="text" class="search-query" placeholder="Recherche">
</form>
</li>
</ul>
</div>
</header>
</div class="clearfix"></div>
{% block main_container %}{% endblock %}
<section id="main_content">
</section>
<footer>
<p>footer</p>
<p>(pied de page)</p>
<footer>
</footer>

View File

@ -1,18 +1,17 @@
{% extends 'base.html' %}
{% load image_tags %}
{% block main_container %}
<div class="span10">
<h2>{{ card.label }}</h2>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3>{{ card.label }}</h3>
</div>
<div class="modal-body">
{% if card.image %}
<div class="thumbnail">
<img src="{{card|scale}}" alt="">
</div>
{% endif %}
<table class="table table-bordered">
<table class="table table-bordered">
<tr>
<td>Pays</td>
<td><a href="{% url list-by-country card.country.id %}">{{card.country}}</a></td>
@ -40,7 +39,7 @@
<tr>
<td>Tags</td>
<td>
<ul>
<ul class="tags">
{% for tag in card.tags.all %}
<li><a href="{% url list-by-tag tag.id %}">{{ tag.label }}</a></li>
{% endfor %}
@ -48,7 +47,7 @@
</td>
</tr>
</table>
<p class="pull-right"><a href="/admin/cards/card/{{card.id}}/" target="_blank" >Modification</a> - Dernière mise-à-jour : {{card.updated_at}}</p>
</div>
{% endblock %}
<div class="modal-footer">
<p class="pull-left">Dernière mise-à-jour: {{card.updated_at}}</p><a href="/admin/cards/card/{{card.id}}/" target="_blank" class="btn btn-primary" >Modification</a>
</div>

View File

@ -5,49 +5,79 @@
{% block main_container %}
<h2>{{title}}</h2>
<ul class="thumbnails">
{% for card in cards.object_list %}
<li class="span2">
<a href="{% url card-details card.id %}" class="thumbnail">
{% if card.image %}
<img src="{{card|crop}}" title="{{card.label}}" />
{% endif %}
</a>
</li>
{% endfor %}
</ul>
<div class="pagination" style="margin: 0 auto; display: inline-block; text-align: center;">
<span class="step-links">
{% if cards.has_previous %}
<a href="?page={{ cards.previous_page_number }}">«</a>
{% else %}
<span class="disabled">
<a href="?page={{ cards.previous_page_number }}">«</a>
</span>
{% endif %}
<script>
$(function() {
// When DOM is ready, select the container element and call the jQCloud method, passing the array of words as the first argument.
$("a.thumbnail").click(function(e) {
e.preventDefault();
{% for page_num in cards.paginator.num_pages|get_range %}
{% if page_num == cards.number %}
<span class="active">
<a class="active" href="?page={{ page_num }}">{{ page_num }}</a>
</span>
{% else %}
<a href="?page={{ page_num }}">{{ page_num }}</a>
{% endif %}
$('#myModal').modal();
var request = $.ajax({
url: $(this).attr('href'),
type: 'GET',
dataType: 'html'
});
request.done(function(result) {
$('#myModal').html(result);
});
request.fail(function(jqxhr, textStatus) {
$('#myModal').html('La requête a foiré: ' + textStatus);
});
});
});
</script>
<div id="myModal" class="modal large hide fade">
{% endfor %}
{% if cards.has_next %}
<a href="?page={{ cards.next_page_number }}">»</a>
{% else %}
<span class="disabled">
<a href="?page={{ cards.next_page_number }}">»</a>
</span>
</div>
<h2>{{title}}</h2>
<ul class="thumbnails">
{% for card in cards.object_list %}
<li class="span2">
<a href="{% url card-details card.id %}" class="thumbnail">
{% if card.image %}
<img src="{{card|crop}}" title="{{card.label}}" />
{% endif %}
</span>
</div>
</a>
</li>
{% endfor %}
</ul>
<div class="pagination" style="margin: 0 auto; display: inline-block; text-align: center;">
<span class="step-links">
{% if cards.has_previous %}
<a href="?page={{ cards.previous_page_number }}">«</a>
{% else %}
<span class="disabled">
<a href="?page={{ cards.previous_page_number }}">«</a>
</span>
{% endif %}
{% for page_num in cards.paginator.num_pages|get_range %}
{% if page_num == cards.number %}
<span class="active">
<a class="active" href="?page={{ page_num }}">{{ page_num }}</a>
</span>
{% else %}
<a href="?page={{ page_num }}">{{ page_num }}</a>
{% endif %}
{% endfor %}
{% if cards.has_next %}
<a href="?page={{ cards.next_page_number }}">»</a>
{% else %}
<span class="disabled">
<a href="?page={{ cards.next_page_number }}">»</a>
</span>
{% endif %}
</span>
</div>
{% endblock %}

View File

@ -1,23 +1,3 @@
<script>
</script>
<div class="well" style="padding: 8px 0;">
<ul class="nav nav-list">
<li>
<form action="/query/" method="POST">
{% csrf_token %}
<input id="q" name="q" type="text" class="search-query" placeholder="Recherche">
</form>
</li>
<li class="pull-right">
<a href="{% url advanced-query %}" title="Recherche avancée">Recherche avancée</a>
</li>
<li class="nav-header">
Pays
</li>
{% for country in countries %}
<li><a href="{% url list-by-country country.id %}">{{country.label}}</a>
{% endfor %}
</ul>
</div>
{% for country in countries %}
<li><a href="{% url list-by-country country.id %}">{{country.label}}</a>
{% endfor %}