Делал такое для 2.1.0.2.1.
admin/controller/sale/order.php
public function getNew() {
$this->load->model('sale/order');
$this->response->addHeader('Content-Type: application/json');
$this->response->addHeader('Cache-Control: no-cache, no-store, must-revalidate');
$this->response->addHeader('Pragma: no-cache');
$this->response->addHeader('Expires: 0');
$this->response->addHeader('X-Robots-Tag: noindex, nofollow');
$this->response->setOutput(json_encode($this->model_sale_order->getNewOrdersCount()));
}
admin/model/sale/order.php
public function getNewOrdersCount() {
$result = array();
$query = $this->db->query("SELECT COUNT(*) AS count FROM " . DB_PREFIX . "order WHERE order_status_id = 1");
if($query->num_rows) {
$result['count'] = $query->row['count'];
} else {
$result['count'] = 0;
}
$query = $this->db->query("SELECT order_id FROM " . DB_PREFIX . "order WHERE order_status_id = 1 ORDER BY order_id DESC LIMIT 1");
if($query->num_rows) {
$result['last_id'] = $query->row['order_id'];
} else {
$result['last_id'] = 0;
}
return $result;
}
admin/view/javascript/common.js
вставить в блок $(document).ready(...
// Новые заказы
var new_orders_popup_opened = false,
new_orders_query_pending = false,
notify_sound = new Audio('view/sounds/notify.ogg');
setInterval(function(){
if(new_orders_popup_opened || new_orders_query_pending) {
return;
}
new_orders_query_pending = true;
$.get('index.php', {
route: 'sale/order/getnew',
token: getURLVar('token')
}, function(data){
new_orders_query_pending = false;
if(typeof data !== 'object') {
return;
}
var count = parseInt(data.count),
last_id = parseInt(data.last_id),
current_id = window.sessionStorage && parseInt(sessionStorage.getItem('lastOrderID')) || 0;
// Обновить количество заказов в верхней панели
$('#header .new-orders-count').text(count);
// Всплывающее окно
if(last_id > current_id) {
sessionStorage.setItem('lastOrderID', last_id);
if($('#new-orders-modal').length) {
$('#new-orders-modal .modal-body').html('<p>На сайте был оформлен новый заказ. Всего необработанных заказов: <b>' + count + '</b>.</p>');
} else {
$(document.body).append('\n\
<div id="new-orders-modal" class="modal fade" tabindex="-1" role="dialog">\n\
<div class="modal-dialog" role="document">\n\
<div class="modal-content">\n\
<div class="modal-header">\n\
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>\n\
<h4 class="modal-title">Оформлен новый заказ</h4>\n\
</div>\n\
<div class="modal-body">\n\
<p>На сайте был оформлен новый заказ. Всего необработанных заказов: <b>' + count + '</b>.</p>\n\
</div>\n\
<div class="modal-footer">\n\
<button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>\n\
<a class="btn btn-primary" href="index.php?route=sale/order&token=' + getURLVar('token') + '">Просмотреть заказы</a>\n\
</div>\n\
</div><!-- /.modal-content -->\n\
</div><!-- /.modal-dialog -->\n\
</div><!-- /.modal -->\n\
');
}
$('#new-orders-modal').one('shown.bs.modal', function(){
new_orders_popup_opened = true;
notify_sound.play();
}).one('hidden.bs.modal', function(){
new_orders_popup_opened = false;
}).modal('show');
}
}, 'json');
}, 30000);