xxb/module/client/js/index.js
2023-10-23 15:51:36 +08:00

123 lines
3.9 KiB
JavaScript

// index block init.
$(function() {
$('#dashboard').dashboard( {
height : 245,
draggable : false,
resizable : false,
shadowType : false,
afterOrdered : sortBlocks,
sensitive : true,
onResize : resizeBlock,
panelRemovingTip : config.confirmRemoveBlock
});
/**
* refresh index block
* @access public
* @return void
*/
var refreshTimer = 1000 * 60 * 5;
setInterval(function ()
{
$('.refresh-panel').trigger('click');
}, refreshTimer);
});
var versionApiUrl = v.versionApiUrl;
var xxcCurrentVersion = v.currentVersion;
var upgradeNoticeInfo = $.zui.store.get('upgradeNoticeInfo');
var upgradeNoticeStatus = upgradeNoticeInfo ? upgradeNoticeInfo.status : ''; // notice status `hide`|`show`
var upgradeNoticeInfoInit = {
date : new Date().getTime(),
version : xxcCurrentVersion,
status: 'show',
}
$(function ()
{
showNotice(xxcCurrentVersion, upgradeNoticeInfo);
$('#noticeGoUpgrade .close').on('click', function ()
{
upgradeNoticeInfoInit.status = 'hide';
$.zui.store.set('upgradeNoticeInfo', upgradeNoticeInfoInit);
});
});
function showNotice(xxcCurrentVersion, upgradeNoticeInfo)
{
if(upgradeNoticeStatus === 'hide' && (new Date().getTime() - upgradeNoticeInfo.date) < 604800000) return;
// upgradeNoticeInfo && store notice info version > xxc current version
if(upgradeNoticeInfo && window.compareVersions(upgradeNoticeInfo.version, xxcCurrentVersion) === '1')
{
$('#noticeGoUpgrade .version').text(upgradeNoticeInfo.version);
$('#noticeGoUpgrade').show();
}
else
{
$.get(versionApiUrl, function (data, status)
{
if(status === 'success')
{
var versionInfo = typeof data === 'string' ? JSON.parse(data) : data;
var xxcVersion = versionInfo[0]['xxcVersion'];
if(!xxcCurrentVersion || window.compareVersions(xxcVersion, xxcCurrentVersion) === '1')
{
$('#noticeGoUpgrade .version').text(xxcVersion);
upgradeNoticeInfoInit.version = xxcVersion;
$.zui.store.set('upgradeNoticeInfo', upgradeNoticeInfoInit);
$('#noticeGoUpgrade').show();
}
}
});
}
}
/**
* Sort blocks.
*
* @param object $orders format is {'block2' : 1, 'block1' : 2, oldOrder : newOrder}
* @access public
* @return void
*/
function sortBlocks(orders)
{
var oldOrder = new Array();
var newOrder = new Array();
for(i in orders)
{
oldOrder.push(i.replace('block', ''));
newOrder.push(orders[i]);
}
$.getJSON(createLink('block', 'sort', 'oldOrder=' + oldOrder.join(',') + '&newOrder=' + newOrder.join(',')), function(data)
{
if(data.result != 'success') return false;
$('#home .panels-container .panel:not(.panel-dragging-holder)').each(function()
{
var $this = $(this);
var index = $this.data('order');
var url = createLink('entry', 'printBlock', 'index=' + index);
/* Update new index for block id edit and delete. */
$this.attr('id', 'block' + index).data('id', index).attr('data-url', url).data('url', url);
$this.find('.panel-actions .edit-block').attr('href', createLink('block', 'admin', 'index=' + index));
});
});
}
/**
* Resize block
* @param object $event
* @access public
* @return void
*/
function resizeBlock(event)
{
var blockID = event.element.find('.panel').data('blockid');
var data = event.type == 'vertical' ? event.height : event.grid;
$.getJSON(createLink('block', 'resize', 'id=' + blockID + '&type=' + event.type + '&data=' + data), function(data)
{
if(data.result !== 'success') event.revert();
});
}