144 lines
4.3 KiB
JavaScript
144 lines
4.3 KiB
JavaScript
/**
|
|
* Create file tab.
|
|
*
|
|
* @param string filename
|
|
* @param string filepath
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
function createTab(filename, filepath)
|
|
{
|
|
$('[data-path="' + decodeURIComponent(filepath) + '"]').closest('li').addClass('selected');
|
|
/* encode twice for resolving chinese character. */
|
|
var tabID = Base64.encode(Base64.encode(filepath).replaceAll('=', '-')).replaceAll('=', '-');
|
|
return {
|
|
id: tabID,
|
|
url: createLink('repo', 'ajaxGetEditorContent', urlParams.replace('%s', Base64.encode(encodeURIComponent(filepath)))),
|
|
type: 'iframe',
|
|
title: filename,
|
|
forbidClose: isonlybody
|
|
};
|
|
}
|
|
|
|
$(function()
|
|
{
|
|
$('.btn-left').click(function() {arrowTabs('fileTabs', 1);});
|
|
$('.btn-right').click(function() {arrowTabs('fileTabs', -2);});
|
|
$('#fileTabs').tabs({tabs: [createTab(file['basename'], entry)]});
|
|
if(isonlybody) $('#fileTabs .tab-nav-item .tab-nav-close').hide();
|
|
|
|
/**
|
|
* Set pane height.
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function setHeight()
|
|
{
|
|
var paneHeight = $(window).height() - 120;
|
|
if(isonlybody) paneHeight = 500;
|
|
$('#fileTabs .tab-pane').css('height', paneHeight + 'px')
|
|
$('#filesTree').css('height', paneHeight + 35)
|
|
}
|
|
setHeight();
|
|
$(window).resize(setHeight);
|
|
|
|
$(document).on('click', '.repoFileName', function()
|
|
{
|
|
var path = $(this).data('path');
|
|
var name = $(this).text();
|
|
var $tabs = $('#fileTabs').data('zui.tabs');
|
|
if(openedFiles.indexOf(path) == -1) openedFiles.push(path);
|
|
|
|
$tabs.open(createTab(name, path));
|
|
setHeight();
|
|
arrowTabs('fileTabs', -1);
|
|
});
|
|
|
|
/* Remove file path for opened files. */
|
|
$('#fileTabs').on('onClose', function(event, tab) {
|
|
/* encode twice for resolving chinese character. */
|
|
var filepath = decodeURIComponent(Base64.decode(Base64.decode(tab.id.replaceAll('-', '=')).replaceAll('-', '=')));
|
|
var index = openedFiles.indexOf(filepath);
|
|
if(index > -1)
|
|
{
|
|
openedFiles.splice(index, 1)
|
|
$('[data-path="' + filepath + '"]').closest('li').removeClass('selected');
|
|
}
|
|
|
|
if(index == openedFiles.length) arrowTabs('fileTabs', -2);
|
|
});
|
|
|
|
/* Append file path into the title. */
|
|
$('#fileTabs').on('onLoad', function(event, tab) {
|
|
var filepath = Base64.decode(tab.id.replaceAll('-', '='));
|
|
$('#tab-nav-item-' + tab.id).attr('title', decodeURIComponent(filepath));
|
|
});
|
|
|
|
if(['Git', 'Gitlab', 'Gogs', 'Gitea'].indexOf(repo.SCM) != -1)
|
|
{
|
|
var link = createLink('repo', 'ajaxGetBranchesAndTags', 'repoID=' + repoID + '&oldRevision=' + branchID);
|
|
$.get(link, function(data)
|
|
{
|
|
var result = $.parseJSON(data);
|
|
$('#branchList').empty();
|
|
$('#branchList').append(result.sourceHtml);
|
|
$('#branchList #branchesAndTags').tree({initialState: 'expand'});
|
|
});
|
|
}
|
|
else
|
|
{
|
|
$('#sourceSwapper').hide();
|
|
}
|
|
|
|
/**
|
|
* Refresh files tree.
|
|
*
|
|
* @param string branchOrTag
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function refreshFiles(branchOrTag)
|
|
{
|
|
var link = createLink('repo', 'ajaxGetFileTree', 'repoID=' + repoID + '&branch=' + Base64.encode(branchOrTag));
|
|
$.get(link, function(data)
|
|
{
|
|
$('#modules').remove();
|
|
$('#filesTree').append(data);
|
|
$('#modules').tree();
|
|
$('#filesTree').removeClass('loading');
|
|
});
|
|
}
|
|
|
|
$(document).on('click', '.branch-or-tag', function()
|
|
{
|
|
var branchOrTag = $(this).text();
|
|
if(branchOrTag != $.cookie('repoBranch'))
|
|
{
|
|
$('#filesTree').addClass('loading');
|
|
$.cookie('repoBranch', branchOrTag);
|
|
|
|
$('#fileTabs').data('zui.tabs').closeAll();
|
|
refreshFiles(branchOrTag);
|
|
|
|
$('.branch-or-tag').removeClass('selected');
|
|
$(this).addClass('selected');
|
|
$('.repo-select').attr('title', branchOrTag);
|
|
$('.repo-select .version-name').text(branchOrTag);
|
|
}
|
|
})
|
|
});
|
|
|
|
/**
|
|
* Load link object page.
|
|
*
|
|
* @param string $link
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function loadLinkPage(link)
|
|
{
|
|
$('#linkObject').attr('href', link);
|
|
$('#linkObject').click()
|
|
}
|