(function($)
{
/* Tab session */
if(!config.tabSession) return;
/** Store current tab id */
var _tid = '';
/**
* Get current tab id
* @returns {string} Tab id
*/
function getTid(){return _tid;}
/**
* Convert url with tab id
* @param {string} url
* @param {string} [tid]
* @param {boolean} [force]
* @returns {string} Tab id
*/
function convertUrlWithTid(url, tid, force)
{
var link = $.parseLink(url);
if(!link.moduleName) return url;
tid = tid || _tid;
if(!force && link.tid === tid) return url;
link.tid = tid;
return $.createLink(link);
}
/** Init */
function init()
{
/* Check tid */
if(window.parent !== window)
{
if(window.parent.$.tabSession) _tid = window.parent.$.tabSession.getTid();
}
else
{
var isIndexOrLoginPage = (config.currentModule === 'index' && config.currentMethod === 'index') || (config.currentModule === 'user' && config.currentMethod === 'login');
var link = $.parseLink(window.location.href);
_tid = sessionStorage.getItem('TID');
if(!_tid)
{
if(link.tid && isIndexOrLoginPage)
{
_tid = link.tid
}
if(!_tid)
{
_tid = $.zui.uuid();
_tid = _tid.substr(_tid.length - 8);
}
}
sessionStorage.setItem('TID', _tid);
if(isIndexOrLoginPage && !link.tid)
{
window.location.href = convertUrlWithTid(window.location.href, _tid);
}
}
$.tabSession =
{
getTid: getTid,
convertUrlWithTid: convertUrlWithTid,
};
/* Handle all links in page */
$('a').each(function()
{
var $a = $(this);
var url = $a.attr('href');
var urlWithTid = convertUrlWithTid(url);
if(urlWithTid !== url) $a.attr('href', urlWithTid);
});
$('[data-url]').each(function()
{
var $e = $(this);
var url = $e.attr('data-url');
var urlWithTid = convertUrlWithTid(url);
if(urlWithTid !== url) $e.attr('data-url', urlWithTid);
});
if(config.debug > 2)
{
$(function()
{
$('#tid').prepend('localtid=' + _tid + '');
});
}
}
init();
/* Hide context menu when window is scroll. */
$(window).on('scroll', function()
{
$.zui.ContextMenu.hide();
});
}(jQuery));
/**
* Set the ping url.
*
* @access public
* @return void
*/
function setPing()
{
$('#hiddenwin').attr('src', createLink('misc', 'ping'));
}
/**
* Disable the submit button when submit form.
*
* @access public
* @return void
*/
function setForm()
{
var formClicked = false;
$('form').submit(function()
{
submitObj = $(this).find(':submit');
if($(submitObj).size() >= 1)
{
var isBtn = submitObj.prop('tagName') == "BUTTON";
submitLabel = isBtn ? $(submitObj).html() : $(submitObj).attr('value');
$(submitObj).attr('disabled', 'disabled');
var submitting = submitObj.attr('data-submitting') || lang.submitting;
if(isBtn) submitObj.text(submitting);
else $(submitObj).attr('value', submitting);
formClicked = true;
}
});
$("body").click(function()
{
if(formClicked)
{
$(submitObj).removeAttr('disabled');
if(submitObj.prop('tagName') == "BUTTON")
{
submitObj.text(submitLabel);
}
else
{
$(submitObj).attr('value', submitLabel);
}
$(submitObj).removeClass('button-d');
}
formClicked = false;
});
}
/**
* Set form action and submit.
*
* @param url $actionLink
* @param string $hiddenwin 'hiddenwin'
* @access public
* @return void
*/
function setFormAction(actionLink, hiddenwin, obj)
{
$form = typeof(obj) == 'undefined' ? $('form') : $(obj).closest('form');
if(hiddenwin) $form.attr('target', hiddenwin);
else $form.removeAttr('target');
$form.attr('action', actionLink);
// Check safari for bug #1000, see http://pms.zentao.net/bug-view-1000.html
var userAgent = navigator.userAgent;
var isSafari = userAgent.indexOf('AppleWebKit') > -1 && userAgent.indexOf('Safari') > -1 && userAgent.indexOf('Chrome') < 0;
if(isSafari)
{
var idPreffix = 'checkbox-fix-' + $.zui.uuid();
$form.find('[data-fix-checkbox]').remove();
$form.find('input[type="checkbox"]:not(.rows-selector)').each(function()
{
var $checkbox = $(this);
var checkboxId = idPreffix + $checkbox.val();
$checkbox.clone().attr('data-fix-checkbox', checkboxId).css('display', 'none').after('