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

126 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 && compareVersions(upgradeNoticeInfo.version, xxcCurrentVersion) > 0)
{
$('#noticeGoUpgrade .version').text(upgradeNoticeInfo.version);
$('#noticeGoUpgrade').show();
}
else
{
$.get(versionApiUrl, function(data, status)
{
if(status === 'success')
{
var versionInfo = typeof data === 'string' ? $.parseJSON(data) : data;
var xxcVersion = versionInfo[0]['xxcVersion'];
if(!xxcCurrentVersion || compareVersions(xxcVersion, xxcCurrentVersion) > 0)
{
$('#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();
});
}