Merge branch 'develop' of http://git.general-servers.com/expomap/expomap
commit
5a4f87f655
39 changed files with 704 additions and 276 deletions
@ -0,0 +1,38 @@ |
||||
{% extends 'base.html' %} |
||||
|
||||
{% block body %} |
||||
|
||||
<div class="box span8"> |
||||
<div class="box-header well"> |
||||
<h2><i class="icon-arrow-down"></i>{{ verbose }}</h2> |
||||
</div> |
||||
<div class="box-content"> |
||||
{% block list_table %} |
||||
<table class="table table-hover"> |
||||
|
||||
<thead> |
||||
<tr> |
||||
<th>Объект</th> |
||||
<th>ссылка для отслеживания</th> |
||||
<th> </th> |
||||
<th> </th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{% for item in object_list %} |
||||
<tr> |
||||
<td>{{ item }}</td> |
||||
<td>{{request.get_host}}{{ item.get_click_link }}</td> |
||||
<td><a href="{% url 'expobanner-update_link' item.id %}">Изменить</a> </td> |
||||
<td><a href="{% url 'expobanner_stat_link' item.id %}">Статистика</a> </td> |
||||
</tr> |
||||
{% endfor %} |
||||
</tbody> |
||||
</table> |
||||
{% endblock %} |
||||
</div> |
||||
{# pagination #} |
||||
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %} |
||||
</div> |
||||
|
||||
{% endblock %} |
||||
@ -0,0 +1,40 @@ |
||||
{% extends 'base.html' %} |
||||
|
||||
{% block body %} |
||||
|
||||
<div class="box span8"> |
||||
<div class="box-header well"> |
||||
<h2><i class="icon-arrow-down"></i>Список выставок на главной</h2> |
||||
</div> |
||||
<div class="box-content"> |
||||
{% block list_table %} |
||||
<a class="btn btn-success" href="{% url 'expobanner-create_main' %}"><i class="icon-plus-sign icon-white"></i> Добавить выставку</a> |
||||
<table class="table table-hover"> |
||||
<thead> |
||||
<tr> |
||||
<th>Выставка</th> |
||||
<th>Позиция</th> |
||||
<th> </th> |
||||
<th> </th> |
||||
<th> </th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{% for item in object_list %} |
||||
<tr> |
||||
<td>{{ item }}</td> |
||||
<td>{{ item.main.position }}</td> |
||||
<td><a href="{% url 'expobanner-update_main' item.main.id %}">Изменить</a> </td> |
||||
<td>{% if item.main.public %}<a href="{% url 'expobanner-main-turn' item.main.id 'off' %}">отключить</a>{% else %}<a href="{% url 'expobanner-main-turn' item.main.id 'on' %}">включить</a>{% endif %} </td> |
||||
<td><a href="{% url 'expobanner_stat_main' item.main.id %}">Статистика</a> </td> |
||||
</tr> |
||||
{% endfor %} |
||||
</tbody> |
||||
</table> |
||||
{% endblock %} |
||||
</div> |
||||
{# pagination #} |
||||
{% include 'admin/includes/admin_pagination.html' with page_obj=object_list %} |
||||
</div> |
||||
|
||||
{% endblock %} |
||||
@ -0,0 +1,48 @@ |
||||
{% extends 'base.html' %} |
||||
{% load static %} |
||||
{% block scripts %} |
||||
<script src="{% static 'js/jquery.dataTables.min.js' %}"></script> |
||||
{% endblock %} |
||||
|
||||
|
||||
{% block body %} |
||||
<div class="row-fluid sortable"> |
||||
<div class="box span12"> |
||||
<div class="box-header well" data-original-title> |
||||
<h2><i class="icon-align-justify"></i> {{ object.get_event }}</h2> |
||||
</div> |
||||
<div class="box-content"> |
||||
<div class="row-fluid"> |
||||
<div class="span8">Линк на статистику: <b>{{ request.get_host }}/expo-b/banner/{{ object.link.id }}/stat/</b></div> |
||||
<div class="span4">Пароль: <b>{{ object.link.stat_pswd }}</b></div> |
||||
</div> |
||||
<table class="table table-striped table-bordered bootstrap-datatable datatable"> |
||||
<thead> |
||||
<tr> |
||||
<th>Дата</th> |
||||
<th>Показы</th> |
||||
<th>Клики</th> |
||||
<th>Уникальные показы</th> |
||||
<th>Уникальные клики</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{% with stats=stats %} |
||||
{% for stat in stats %} |
||||
<tr> |
||||
<td>{{ stat.date|date:"Y-m-d" }}</td> |
||||
<td>{{ stat.view }}</td> |
||||
<td>{{ stat.click }}</td> |
||||
|
||||
<td>{{ stat.unique_view }}</td> |
||||
<td>{{ stat.unique_click }}</td> |
||||
</tr> |
||||
{% endfor %} |
||||
{% endwith %} |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
{% endblock %} |
||||
@ -0,0 +1,2 @@ |
||||
<div id="expo_b_popup" class="popup-window" style="width:900px;"> |
||||
</div> |
||||
@ -1,13 +1,7 @@ |
||||
{% load static %} |
||||
|
||||
<div id="expo_top_events"> |
||||
|
||||
</div> |
||||
<script> |
||||
/* НУЖНО ЛИ??? */ |
||||
window.sendData = { |
||||
"theme": [{{ themes|join:", " }}], |
||||
"country": "{{ country }}", |
||||
"city": "{{ city }}", |
||||
"tag": "{{ tag }}" |
||||
}; |
||||
var url = "/expo-b/get-tops/"; |
||||
</script> |
||||
|
||||
<script type="text/javascript" src="{% static 'client/js/rejs/tops.js' %}"></script> |
||||
@ -0,0 +1,113 @@ |
||||
(function () { |
||||
"use strict"; |
||||
|
||||
var API_URL_ROOT = "/expo-b/get-banners/"; |
||||
|
||||
var getUrl = function () { |
||||
var search = []; |
||||
|
||||
var parts = /^\/([^\/]+)(?:\/|$)/i.exec(location.pathname); |
||||
if (parts) { |
||||
search.push("catalog=" + encodeURIComponent(parts[1])); |
||||
} else { |
||||
search.push("catalog="); |
||||
} |
||||
|
||||
var elements = $("[id^=\"expo_b_\"]"); |
||||
for (var j = 0; j < elements.length; j++) { |
||||
search.push("places=" + encodeURIComponent($(elements[j]).attr("id"))); |
||||
} |
||||
|
||||
var data = window.sendData; |
||||
if (data instanceof Object) { |
||||
for (var key in data) { |
||||
if (data.hasOwnProperty(key)) { |
||||
var value = data[key]; |
||||
|
||||
if (value instanceof Array) { |
||||
for (var i = 0, l = value.length; i < l; i++) { |
||||
search.push(encodeURIComponent(key) + "=" + encodeURIComponent(value[i])); |
||||
} |
||||
} else { |
||||
search.push(encodeURIComponent(key) + "=" + encodeURIComponent(value)); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
return API_URL_ROOT + "?" + search.join("&"); |
||||
}; |
||||
|
||||
var getBanners = function (url, callback) { |
||||
var xhr = new XMLHttpRequest(); |
||||
xhr.open("GET", url, true); |
||||
|
||||
xhr.onreadystatechange = function (event) { |
||||
if (event.target.readyState === 4) { |
||||
if (event.target.status === 200) { |
||||
try { |
||||
callback(JSON.parse(event.target.responseText)); |
||||
} catch (error) { |
||||
// do nothing
|
||||
} |
||||
} |
||||
} |
||||
}; |
||||
|
||||
xhr.send(); |
||||
}; |
||||
|
||||
var addBanner = function (banner) { |
||||
var parent = document.getElementById(banner.id); |
||||
|
||||
if (parent) { |
||||
if (banner.is_popup) { |
||||
if (banner.is_img) { |
||||
parent.innerHTML = |
||||
"<header class=\"clearfix\"><div class=\"pw-title\"></div></header><div class=\"pw-body clearfix\">" + |
||||
"<a href=\""+ banner.url + "\"><img src=\"" + banner.img + "\" alt=\"" + banner.alt + "\" /></a></div>"; |
||||
} else if (banner.is_html) { |
||||
parent.innerHTML = banner.text; |
||||
} |
||||
|
||||
$("#expo-form-popup").on("submit", function(e) { |
||||
e.preventDefault(); |
||||
window.location = $("#expo-form-popup").attr("action"); |
||||
}); |
||||
|
||||
setTimeout(function(){ |
||||
$.fancybox.open([{"href": "#" + banner.id}], {}); |
||||
}, 5000); |
||||
} else { |
||||
if (banner.is_img) { |
||||
var a = document.createElement("a"); |
||||
a.href = banner.url; |
||||
|
||||
var img = document.createElement("img"); |
||||
img.src = banner.img; |
||||
img.alt = banner.alt; |
||||
|
||||
a.appendChild(img); |
||||
parent.appendChild(a); |
||||
} else if (banner.is_html) { |
||||
parent.innerHTML = banner.text; |
||||
} |
||||
} |
||||
} |
||||
|
||||
}; |
||||
|
||||
var insertBanners = function (data) { |
||||
if (data instanceof Array) { |
||||
for (var i = 0, l = data.length; i < l; i++) { |
||||
addBanner(data[i]); |
||||
} |
||||
} |
||||
}; |
||||
|
||||
var main = function () { |
||||
getBanners(getUrl(), insertBanners); |
||||
}; |
||||
|
||||
window.addEventListener("load", main); |
||||
})(); |
||||
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue