diff options
author | Joubert RedRat <me+github@redrat.com.br> | 2016-11-03 16:31:05 -0200 |
---|---|---|
committer | Joubert RedRat <me+github@redrat.com.br> | 2016-11-04 08:53:18 -0200 |
commit | ff54e4d929722eb28e053b25fd353ea869ec2f45 (patch) | |
tree | 9ecbf93cb841f435ba57d8530971335cbf0f8c3f /public/js/gogs.js | |
parent | fc55182a4c7dc884e64db1a3e1ed045ac3f6bf9b (diff) | |
download | gitea-ff54e4d929722eb28e053b25fd353ea869ec2f45.tar.gz gitea-ff54e4d929722eb28e053b25fd353ea869ec2f45.zip |
Set default less and css to new default name
Diffstat (limited to 'public/js/gogs.js')
-rw-r--r-- | public/js/gogs.js | 1453 |
1 files changed, 0 insertions, 1453 deletions
diff --git a/public/js/gogs.js b/public/js/gogs.js deleted file mode 100644 index d7fca17423..0000000000 --- a/public/js/gogs.js +++ /dev/null @@ -1,1453 +0,0 @@ -'use strict'; - -var csrf; -var suburl; - -function initCommentPreviewTab($form) { - var $tabMenu = $form.find('.tabular.menu'); - $tabMenu.find('.item').tab(); - $tabMenu.find('.item[data-tab="' + $tabMenu.data('preview') + '"]').click(function () { - var $this = $(this); - $.post($this.data('url'), { - "_csrf": csrf, - "mode": "gfm", - "context": $this.data('context'), - "text": $form.find('.tab.segment[data-tab="' + $tabMenu.data('write') + '"] textarea').val() - }, - function (data) { - var $previewPanel = $form.find('.tab.segment[data-tab="' + $tabMenu.data('preview') + '"]'); - $previewPanel.html(data); - emojify.run($previewPanel[0]); - $('pre code', $previewPanel[0]).each(function (i, block) { - hljs.highlightBlock(block); - }); - } - ); - }); - - buttonsClickOnEnter(); -} - -var previewFileModes; - -function initEditPreviewTab($form) { - var $tabMenu = $form.find('.tabular.menu'); - $tabMenu.find('.item').tab(); - var $previewTab = $tabMenu.find('.item[data-tab="' + $tabMenu.data('preview') + '"]'); - if ($previewTab.length) { - previewFileModes = $previewTab.data('preview-file-modes').split(','); - $previewTab.click(function () { - var $this = $(this); - $.post($this.data('url'), { - "_csrf": csrf, - "mode": "gfm", - "context": $this.data('context'), - "text": $form.find('.tab.segment[data-tab="' + $tabMenu.data('write') + '"] textarea').val() - }, - function (data) { - var $previewPanel = $form.find('.tab.segment[data-tab="' + $tabMenu.data('preview') + '"]'); - $previewPanel.html(data); - emojify.run($previewPanel[0]); - $('pre code', $previewPanel[0]).each(function (i, block) { - hljs.highlightBlock(block); - }); - } - ); - }); - } -} - -function initEditDiffTab($form) { - var $tabMenu = $form.find('.tabular.menu'); - $tabMenu.find('.item').tab(); - $tabMenu.find('.item[data-tab="' + $tabMenu.data('diff') + '"]').click(function () { - var $this = $(this); - $.post($this.data('url'), { - "_csrf": csrf, - "context": $this.data('context'), - "content": $form.find('.tab.segment[data-tab="' + $tabMenu.data('write') + '"] textarea').val() - }, - function (data) { - var $diffPreviewPanel = $form.find('.tab.segment[data-tab="' + $tabMenu.data('diff') + '"]'); - $diffPreviewPanel.html(data); - emojify.run($diffPreviewPanel[0]); - } - ); - }); -} - - -function initEditForm() { - if ($('.edit.form').length == 0) { - return; - } - - initEditPreviewTab($('.edit.form')); - initEditDiffTab($('.edit.form')); -} - - -function initCommentForm() { - if ($('.comment.form').length == 0) { - return - } - - initCommentPreviewTab($('.comment.form')); - - // Labels - var $list = $('.ui.labels.list'); - var $noSelect = $list.find('.no-select'); - var $labelMenu = $('.select-label .menu'); - var hasLabelUpdateAction = $labelMenu.data('action') == 'update'; - - function updateIssueMeta(url, action, id) { - $.post(url, { - "_csrf": csrf, - "action": action, - "id": id - }); - } - - $labelMenu.find('.item:not(.no-select)').click(function () { - if ($(this).hasClass('checked')) { - $(this).removeClass('checked'); - $(this).find('.octicon').removeClass('octicon-check'); - if (hasLabelUpdateAction) { - updateIssueMeta($labelMenu.data('update-url'), "detach", $(this).data('id')); - } - } else { - $(this).addClass('checked'); - $(this).find('.octicon').addClass('octicon-check'); - if (hasLabelUpdateAction) { - updateIssueMeta($labelMenu.data('update-url'), "attach", $(this).data('id')); - } - } - - var labelIds = ""; - $(this).parent().find('.item').each(function () { - if ($(this).hasClass('checked')) { - labelIds += $(this).data('id') + ","; - $($(this).data('id-selector')).removeClass('hide'); - } else { - $($(this).data('id-selector')).addClass('hide'); - } - }); - if (labelIds.length == 0) { - $noSelect.removeClass('hide'); - } else { - $noSelect.addClass('hide'); - } - $($(this).parent().data('id')).val(labelIds); - return false; - }); - $labelMenu.find('.no-select.item').click(function () { - if (hasLabelUpdateAction) { - updateIssueMeta($labelMenu.data('update-url'), "clear", ''); - } - - $(this).parent().find('.item').each(function () { - $(this).removeClass('checked'); - $(this).find('.octicon').removeClass('octicon-check'); - }); - - $list.find('.item').each(function () { - $(this).addClass('hide'); - }); - $noSelect.removeClass('hide'); - $($(this).parent().data('id')).val(''); - }); - - function selectItem(select_id, input_id) { - var $menu = $(select_id + ' .menu'); - var $list = $('.ui' + select_id + '.list'); - var hasUpdateAction = $menu.data('action') == 'update'; - - $menu.find('.item:not(.no-select)').click(function () { - $(this).parent().find('.item').each(function () { - $(this).removeClass('selected active') - }); - - $(this).addClass('selected active'); - if (hasUpdateAction) { - updateIssueMeta($menu.data('update-url'), '', $(this).data('id')); - } - switch (input_id) { - case '#milestone_id': - $list.find('.selected').html('<a class="item" href=' + $(this).data('href') + '>' + - $(this).text() + '</a>'); - break; - case '#assignee_id': - $list.find('.selected').html('<a class="item" href=' + $(this).data('href') + '>' + - '<img class="ui avatar image" src=' + $(this).data('avatar') + '>' + - $(this).text() + '</a>'); - } - $('.ui' + select_id + '.list .no-select').addClass('hide'); - $(input_id).val($(this).data('id')); - }); - $menu.find('.no-select.item').click(function () { - $(this).parent().find('.item:not(.no-select)').each(function () { - $(this).removeClass('selected active') - }); - - if (hasUpdateAction) { - updateIssueMeta($menu.data('update-url'), '', ''); - } - - $list.find('.selected').html(''); - $list.find('.no-select').removeClass('hide'); - $(input_id).val(''); - }); - } - - // Milestone and assignee - selectItem('.select-milestone', '#milestone_id'); - selectItem('.select-assignee', '#assignee_id'); -} - -function initInstall() { - if ($('.install').length == 0) { - return; - } - - // Database type change detection. - $("#db_type").change(function () { - var sqliteDefault = 'data/gogs.db'; - var tidbDefault = 'data/gogs_tidb'; - - var dbType = $(this).val(); - if (dbType === "SQLite3" || dbType === "TiDB") { - $('#sql_settings').hide(); - $('#pgsql_settings').hide(); - $('#sqlite_settings').show(); - - if (dbType === "SQLite3" && $('#db_path').val() == tidbDefault) { - $('#db_path').val(sqliteDefault); - } else if (dbType === "TiDB" && $('#db_path').val() == sqliteDefault) { - $('#db_path').val(tidbDefault); - } - return; - } - - var mysqlDefault = '127.0.0.1:3306'; - var postgresDefault = '127.0.0.1:5432'; - - $('#sqlite_settings').hide(); - $('#sql_settings').show(); - if (dbType === "PostgreSQL") { - $('#pgsql_settings').show(); - if ($('#db_host').val() == mysqlDefault) { - $('#db_host').val(postgresDefault); - } - } else { - $('#pgsql_settings').hide(); - if ($('#db_host').val() == postgresDefault) { - $('#db_host').val(mysqlDefault); - } - } - }); - - // TODO: better handling of exclusive relations. - $('#offline-mode input').change(function () { - if ($(this).is(':checked')) { - $('#disable-gravatar').checkbox('check'); - $('#federated-avatar-lookup').checkbox('uncheck'); - } - }); - $('#disable-gravatar input').change(function () { - if ($(this).is(':checked')) { - $('#federated-avatar-lookup').checkbox('uncheck'); - } else { - $('#offline-mode').checkbox('uncheck'); - } - }); - $('#federated-avatar-lookup input').change(function () { - if ($(this).is(':checked')) { - $('#disable-gravatar').checkbox('uncheck'); - $('#offline-mode').checkbox('uncheck'); - } - }); - $('#disable-registration input').change(function () { - if ($(this).is(':checked')) { - $('#enable-captcha').checkbox('uncheck'); - } - }); - $('#enable-captcha input').change(function () { - if ($(this).is(':checked')) { - $('#disable-registration').checkbox('uncheck'); - } - }); -} - -function initRepository() { - if ($('.repository').length == 0) { - return; - } - - function initFilterSearchDropdown(selector) { - var $dropdown = $(selector); - $dropdown.dropdown({ - fullTextSearch: true, - onChange: function (text, value, $choice) { - window.location.href = $choice.data('url'); - console.log($choice.data('url')) - }, - message: {noResults: $dropdown.data('no-results')} - }); - } - - // File list and commits - if ($('.repository.file.list').length > 0 || - ('.repository.commits').length > 0) { - initFilterSearchDropdown('.choose.reference .dropdown'); - - $('.reference.column').click(function () { - $('.choose.reference .scrolling.menu').css('display', 'none'); - $('.choose.reference .text').removeClass('black'); - $($(this).data('target')).css('display', 'block'); - $(this).find('.text').addClass('black'); - return false; - }); - } - - // Wiki - if ($('.repository.wiki.view').length > 0) { - initFilterSearchDropdown('.choose.page .dropdown'); - } - - // Options - if ($('.repository.settings.options').length > 0) { - $('#repo_name').keyup(function () { - var $prompt = $('#repo-name-change-prompt'); - if ($(this).val().toString().toLowerCase() != $(this).data('repo-name').toString().toLowerCase()) { - $prompt.show(); - } else { - $prompt.hide(); - } - }); - - // Enable or select internal/external wiki system and issue tracker. - $('.enable-system').change(function () { - if (this.checked) { - $($(this).data('target')).removeClass('disabled'); - } else { - $($(this).data('target')).addClass('disabled'); - } - }); - $('.enable-system-radio').change(function () { - if (this.value == 'false') { - $($(this).data('target')).addClass('disabled'); - } else if (this.value == 'true') { - $($(this).data('target')).removeClass('disabled'); - } - }); - } - - // Labels - if ($('.repository.labels').length > 0) { - // Create label - var $newLabelPanel = $('.new-label.segment'); - $('.new-label.button').click(function () { - $newLabelPanel.show(); - }); - $('.new-label.segment .cancel').click(function () { - $newLabelPanel.hide(); - }); - - $('.color-picker').each(function () { - $(this).minicolors(); - }); - $('.precolors .color').click(function () { - var color_hex = $(this).data('color-hex'); - $('.color-picker').val(color_hex); - $('.minicolors-swatch-color').css("background-color", color_hex); - }); - $('.edit-label-button').click(function () { - $('#label-modal-id').val($(this).data('id')); - $('.edit-label .new-label-input').val($(this).data('title')); - $('.edit-label .color-picker').val($(this).data('color')); - $('.minicolors-swatch-color').css("background-color", $(this).data('color')); - $('.edit-label.modal').modal({ - onApprove: function () { - $('.edit-label.form').submit(); - } - }).modal('show'); - return false; - }); - } - - // Milestones - if ($('.repository.milestones').length > 0) { - - } - if ($('.repository.new.milestone').length > 0) { - var $datepicker = $('.milestone.datepicker'); - $datepicker.datetimepicker({ - lang: $datepicker.data('lang'), - inline: true, - timepicker: false, - startDate: $datepicker.data('start-date'), - formatDate: 'Y-m-d', - onSelectDate: function (ct) { - $('#deadline').val(ct.dateFormat('Y-m-d')); - } - }); - $('#clear-date').click(function () { - $('#deadline').val(''); - return false; - }); - } - - // Issues - if ($('.repository.view.issue').length > 0) { - // Edit issue title - var $issueTitle = $('#issue-title'); - var $editInput = $('#edit-title-input input'); - var editTitleToggle = function () { - $issueTitle.toggle(); - $('.not-in-edit').toggle(); - $('#edit-title-input').toggle(); - $('.in-edit').toggle(); - $editInput.focus(); - return false; - }; - $('#edit-title').click(editTitleToggle); - $('#cancel-edit-title').click(editTitleToggle); - $('#save-edit-title').click(editTitleToggle).click(function () { - if ($editInput.val().length == 0 || - $editInput.val() == $issueTitle.text()) { - $editInput.val($issueTitle.text()); - return false; - } - - $.post($(this).data('update-url'), { - "_csrf": csrf, - "title": $editInput.val() - }, - function (data) { - $editInput.val(data.title); - $issueTitle.text(data.title); - }); - return false; - }); - - // Edit issue or comment content - $('.edit-content').click(function () { - var $segment = $(this).parent().parent().parent().next(); - var $editContentZone = $segment.find('.edit-content-zone'); - var $renderContent = $segment.find('.render-content'); - var $rawContent = $segment.find('.raw-content'); - var $textarea; - - // Setup new form - if ($editContentZone.html().length == 0) { - $editContentZone.html($('#edit-content-form').html()); - $textarea = $segment.find('textarea'); - - // Give new write/preview data-tab name to distinguish from others - var $editContentForm = $editContentZone.find('.ui.comment.form'); - var $tabMenu = $editContentForm.find('.tabular.menu'); - $tabMenu.attr('data-write', $editContentZone.data('write')); - $tabMenu.attr('data-preview', $editContentZone.data('preview')); - $tabMenu.find('.write.item').attr('data-tab', $editContentZone.data('write')); - $tabMenu.find('.preview.item').attr('data-tab', $editContentZone.data('preview')); - $editContentForm.find('.write.segment').attr('data-tab', $editContentZone.data('write')); - $editContentForm.find('.preview.segment').attr('data-tab', $editContentZone.data('preview')); - - initCommentPreviewTab($editContentForm); - - $editContentZone.find('.cancel.button').click(function () { - $renderContent.show(); - $editContentZone.hide(); - }); - $editContentZone.find('.save.button').click(function () { - $renderContent.show(); - $editContentZone.hide(); - - $.post($editContentZone.data('update-url'), { - "_csrf": csrf, - "content": $textarea.val(), - "context": $editContentZone.data('context') - }, - function (data) { - if (data.length == 0) { - $renderContent.html($('#no-content').html()); - } else { - $renderContent.html(data.content); - emojify.run($renderContent[0]); - $('pre code', $renderContent[0]).each(function (i, block) { - hljs.highlightBlock(block); - }); - } - }); - }); - } else { - $textarea = $segment.find('textarea'); - } - - // Show write/preview tab and copy raw content as needed - $editContentZone.show(); - $renderContent.hide(); - if ($textarea.val().length == 0) { - $textarea.val($rawContent.text()); - } - $textarea.focus(); - return false; - }); - - // Delete comment - $('.delete-comment').click(function () { - var $this = $(this); - if (confirm($this.data('locale'))) { - $.post($this.data('url'), { - "_csrf": csrf - }).success(function () { - $('#' + $this.data('comment-id')).remove(); - }); - } - return false; - }); - - // Change status - var $statusButton = $('#status-button'); - $('#comment-form .edit_area').keyup(function () { - if ($(this).val().length == 0) { - $statusButton.text($statusButton.data('status')) - } else { - $statusButton.text($statusButton.data('status-and-comment')) - } - }); - $statusButton.click(function () { - $('#status').val($statusButton.data('status-val')); - $('#comment-form').submit(); - }); - } - - // Diff - if ($('.repository.diff').length > 0) { - var $counter = $('.diff-counter'); - if ($counter.length >= 1) { - $counter.each(function (i, item) { - var $item = $(item); - var addLine = $item.find('span[data-line].add').data("line"); - var delLine = $item.find('span[data-line].del').data("line"); - var addPercent = parseFloat(addLine) / (parseFloat(addLine) + parseFloat(delLine)) * 100; - $item.find(".bar .add").css("width", addPercent + "%"); - }); - } - } - - // Quick start and repository home - $('#repo-clone-ssh').click(function () { - $('.clone-url').text($(this).data('link')); - $('#repo-clone-url').val($(this).data('link')); - $(this).addClass('blue'); - $('#repo-clone-https').removeClass('blue'); - localStorage.setItem('repo-clone-protocol', 'ssh'); - }); - $('#repo-clone-https').click(function () { - $('.clone-url').text($(this).data('link')); - $('#repo-clone-url').val($(this).data('link')); - $(this).addClass('blue'); - $('#repo-clone-ssh').removeClass('blue'); - localStorage.setItem('repo-clone-protocol', 'https'); - }); - $('#repo-clone-url').click(function () { - $(this).select(); - }); - - // Pull request - if ($('.repository.compare.pull').length > 0) { - initFilterSearchDropdown('.choose.branch .dropdown'); - } -} - -function initRepositoryCollaboration() { - console.log('initRepositoryCollaboration'); - - // Change collaborator access mode - $('.access-mode.menu .item').click(function () { - var $menu = $(this).parent(); - $.post($menu.data('url'), { - "_csrf": csrf, - "uid": $menu.data('uid'), - "mode": $(this).data('value') - }) - }); -} - -function initWikiForm() { - var $editArea = $('.repository.wiki textarea#edit_area'); - if ($editArea.length > 0) { - new SimpleMDE({ - autoDownloadFontAwesome: false, - element: $editArea[0], - forceSync: true, - previewRender: function (plainText, preview) { // Async method - setTimeout(function () { - // FIXME: still send render request when return back to edit mode - $.post($editArea.data('url'), { - "_csrf": csrf, - "mode": "gfm", - "context": $editArea.data('context'), - "text": plainText - }, - function (data) { - preview.innerHTML = '<div class="markdown">' + data + '</div>'; - emojify.run($('.editor-preview')[0]); - } - ); - }, 0); - - return "Loading..."; - }, - renderingConfig: { - singleLineBreaks: false - }, - indentWithTabs: false, - tabSize: 4, - spellChecker: false, - toolbar: ["bold", "italic", "strikethrough", "|", - "heading-1", "heading-2", "heading-3", "heading-bigger", "heading-smaller", "|", - "code", "quote", "|", - "unordered-list", "ordered-list", "|", - "link", "image", "table", "horizontal-rule", "|", - "clean-block", "preview", "fullscreen"] - }) - } -} - -var simpleMDEditor; -var codeMirrorEditor; - -// For IE -String.prototype.endsWith = function (pattern) { - var d = this.length - pattern.length; - return d >= 0 && this.lastIndexOf(pattern) === d; -}; - -// Adding function to get the cursor position in a text field to jQuery object. -(function ($, undefined) { - $.fn.getCursorPosition = function () { - var el = $(this).get(0); - var pos = 0; - if ('selectionStart' in el) { - pos = el.selectionStart; - } else if ('selection' in document) { - el.focus(); - var Sel = document.selection.createRange(); - var SelLength = document.selection.createRange().text.length; - Sel.moveStart('character', -el.value.length); - pos = Sel.text.length - SelLength; - } - return pos; - } -})(jQuery); - - -function setSimpleMDE($editArea) { - if (codeMirrorEditor) { - codeMirrorEditor.toTextArea(); - codeMirrorEditor = null; - } - - if (simpleMDEditor) { - return true; - } - - simpleMDEditor = new SimpleMDE({ - autoDownloadFontAwesome: false, - element: $editArea[0], - forceSync: true, - renderingConfig: { - singleLineBreaks: false - }, - indentWithTabs: false, - tabSize: 4, - spellChecker: false, - previewRender: function (plainText, preview) { // Async method - setTimeout(function () { - // FIXME: still send render request when return back to edit mode - $.post($editArea.data('url'), { - "_csrf": csrf, - "mode": "gfm", - "context": $editArea.data('context'), - "text": plainText - }, - function (data) { - preview.innerHTML = '<div class="markdown">' + data + '</div>'; - emojify.run($('.editor-preview')[0]); - } - ); - }, 0); - - return "Loading..."; - }, - toolbar: ["bold", "italic", "strikethrough", "|", - "heading-1", "heading-2", "heading-3", "heading-bigger", "heading-smaller", "|", - "code", "quote", "|", - "unordered-list", "ordered-list", "|", - "link", "image", "table", "horizontal-rule", "|", - "clean-block", "preview", "fullscreen", "side-by-side"] - }); - - return true; -} - -function setCodeMirror($editArea) { - if (simpleMDEditor) { - simpleMDEditor.toTextArea(); - simpleMDEditor = null; - } - - if (codeMirrorEditor) { - return true; - } - - codeMirrorEditor = CodeMirror.fromTextArea($editArea[0], { - lineNumbers: true - }); - codeMirrorEditor.on("change", function (cm, change) { - $editArea.val(cm.getValue()); - }); - - return true; -} - -function initEditor() { - $('.js-quick-pull-choice-option').change(function () { - if ($(this).val() == 'commit-to-new-branch') { - $('.quick-pull-branch-name').show(); - $('.quick-pull-branch-name input').prop('required',true); - } else { - $('.quick-pull-branch-name').hide(); - $('.quick-pull-branch-name input').prop('required',false); - } - }); - - var $editFilename = $("#file-name"); - $editFilename.keyup(function (e) { - var $section = $('.breadcrumb span.section'); - var $divider = $('.breadcrumb div.divider'); - if (e.keyCode == 8) { - if ($(this).getCursorPosition() == 0) { - if ($section.length > 0) { - var value = $section.last().find('a').text(); - $(this).val(value + $(this).val()); - $(this)[0].setSelectionRange(value.length, value.length); - $section.last().remove(); - $divider.last().remove(); - } - } - } - if (e.keyCode == 191) { - var parts = $(this).val().split('/'); - for (var i = 0; i < parts.length; ++i) { - var value = parts[i]; - if (i < parts.length - 1) { - if (value.length) { - $('<span class="section"><a href="#">' + value + '</a></span>').insertBefore($(this)); - $('<div class="divider"> / </div>').insertBefore($(this)); - } - } - else { - $(this).val(value); - } - $(this)[0].setSelectionRange(0, 0); - } - } - var parts = []; - $('.breadcrumb span.section').each(function (i, element) { - element = $(element); - if (element.find('a').length) { - parts.push(element.find('a').text()); - } else { - parts.push(element.text()); - } - }); - if ($(this).val()) - parts.push($(this).val()); - $('#tree_path').val(parts.join('/')); - }).trigger('keyup'); - - var $editArea = $('.repository.editor textarea#edit_area'); - if (!$editArea.length) - return; - - var markdownFileExts = $editArea.data("markdown-file-exts").split(","); - var lineWrapExtensions = $editArea.data("line-wrap-extensions").split(","); - - $editFilename.on("keyup", function (e) { - var val = $editFilename.val(), m, mode, spec, extension, extWithDot, previewLink, dataUrl, apiCall; - extension = extWithDot = ""; - if (m = /.+\.([^.]+)$/.exec(val)) { - extension = m[1]; - extWithDot = "." + extension; - } - - var info = CodeMirror.findModeByExtension(extension); - previewLink = $('a[data-tab=preview]'); - if (info) { - mode = info.mode; - spec = info.mime; - apiCall = mode; - } - else { - apiCall = extension - } - - if (previewLink.length && apiCall && previewFileModes && previewFileModes.length && previewFileModes.indexOf(apiCall) >= 0) { - dataUrl = previewLink.data('url'); - previewLink.data('url', dataUrl.replace(/(.*)\/.*/i, '$1/' + mode)); - previewLink.show(); - } - else { - previewLink.hide(); - } - - // If this file is a Markdown extensions, we will load that editor and return - if (markdownFileExts.indexOf(extWithDot) >= 0) { - if (setSimpleMDE($editArea)) { - return; - } - } - - // Else we are going to use CodeMirror - if (!codeMirrorEditor && !setCodeMirror($editArea)) { - return; - } - - if (mode) { - codeMirrorEditor.setOption("mode", spec); - CodeMirror.autoLoadMode(codeMirrorEditor, mode); - } - - if (lineWrapExtensions.indexOf(extWithDot) >= 0) { - codeMirrorEditor.setOption("lineWrapping", true); - } - else { - codeMirrorEditor.setOption("lineWrapping", false); - } - - // get the filename without any folder - var value = $editFilename.val(); - if (value.length === 0) { - return; - } - value = value.split('/'); - value = value[value.length - 1]; - - $.getJSON($editFilename.data('ec-url-prefix')+value, function(editorconfig) { - if (editorconfig.indent_style === 'tab') { - codeMirrorEditor.setOption("indentWithTabs", true); - codeMirrorEditor.setOption('extraKeys', {}); - } else { - codeMirrorEditor.setOption("indentWithTabs", false); - // required because CodeMirror doesn't seems to use spaces correctly for {"indentWithTabs": false}: - // - https://github.com/codemirror/CodeMirror/issues/988 - // - https://codemirror.net/doc/manual.html#keymaps - codeMirrorEditor.setOption('extraKeys', { - Tab: function(cm) { - var spaces = Array(parseInt(cm.getOption("indentUnit")) + 1).join(" "); - cm.replaceSelection(spaces); - } - }); - } - codeMirrorEditor.setOption("indentUnit", editorconfig.indent_size || 4); - codeMirrorEditor.setOption("tabSize", editorconfig.tab_width || 4); - }); - }).trigger('keyup'); -} - -function initOrganization() { - if ($('.organization').length == 0) { - return; - } - - // Options - if ($('.organization.settings.options').length > 0) { - $('#org_name').keyup(function () { - var $prompt = $('#org-name-change-prompt'); - if ($(this).val().toString().toLowerCase() != $(this).data('org-name').toString().toLowerCase()) { - $prompt.show(); - } else { - $prompt.hide(); - } - }); - } -} - -function initUserSettings() { - console.log('initUserSettings'); - - // Options - if ($('.user.settings.profile').length > 0) { - $('#username').keyup(function () { - var $prompt = $('#name-change-prompt'); - if ($(this).val().toString().toLowerCase() != $(this).data('name').toString().toLowerCase()) { - $prompt.show(); - } else { - $prompt.hide(); - } - }); - } -} - -function initWebhook() { - if ($('.new.webhook').length == 0) { - return; - } - - $('.events.checkbox input').change(function () { - if ($(this).is(':checked')) { - $('.events.fields').show(); - } - }); - $('.non-events.checkbox input').change(function () { - if ($(this).is(':checked')) { - $('.events.fields').hide(); - } - }); - - // Test delivery - $('#test-delivery').click(function () { - var $this = $(this); - $this.addClass('loading disabled'); - $.post($this.data('link'), { - "_csrf": csrf - }).done( - setTimeout(function () { - window.location.href = $this.data('redirect'); - }, 5000) - ) - }); -} - -function initAdmin() { - if ($('.admin').length == 0) { - return; - } - - // New user - if ($('.admin.new.user').length > 0 || - $('.admin.edit.user').length > 0) { - $('#login_type').change(function () { - if ($(this).val().substring(0, 1) == '0') { - $('#login_name').removeAttr('required'); - $('.non-local').hide(); - $('.local').show(); - $('#user_name').focus(); - - if ($(this).data('password') == "required") { - $('#password').attr('required', 'required'); - } - - } else { - $('#login_name').attr('required', 'required'); - $('.non-local').show(); - $('.local').hide(); - $('#login_name').focus(); - - $('#password').removeAttr('required'); - } - }); - } - - function onSecurityProtocolChange() { - if ($('#security_protocol').val() > 0) { - $('.has-tls').show(); - } else { - $('.has-tls').hide(); - } - } - - // New authentication - if ($('.admin.new.authentication').length > 0) { - $('#auth_type').change(function () { - $('.ldap').hide(); - $('.dldap').hide(); - $('.smtp').hide(); - $('.pam').hide(); - $('.has-tls').hide(); - - var authType = $(this).val(); - switch (authType) { - case '2': // LDAP - $('.ldap').show(); - break; - case '3': // SMTP - $('.smtp').show(); - $('.has-tls').show(); - break; - case '4': // PAM - $('.pam').show(); - break; - case '5': // LDAP - $('.dldap').show(); - break; - } - - if (authType == '2' || authType == '5') { - onSecurityProtocolChange() - } - }); - $('#security_protocol').change(onSecurityProtocolChange) - } - // Edit authentication - if ($('.admin.edit.authentication').length > 0) { - var authType = $('#auth_type').val(); - if (authType == '2' || authType == '5') { - $('#security_protocol').change(onSecurityProtocolChange); - } - } - - // Notice - if ($('.admin.notice')) { - var $detailModal = $('#detail-modal'); - - // Attach view detail modals - $('.view-detail').click(function () { - $detailModal.find('.content p').text($(this).data('content')); - $detailModal.modal('show'); - return false; - }); - - // Select actions - var $checkboxes = $('.select.table .ui.checkbox'); - $('.select.action').click(function () { - switch ($(this).data('action')) { - case 'select-all': - $checkboxes.checkbox('check'); - break; - case 'deselect-all': - $checkboxes.checkbox('uncheck'); - break; - case 'inverse': - $checkboxes.checkbox('toggle'); - break; - } - }); - $('#delete-selection').click(function () { - var $this = $(this); - $this.addClass("loading disabled"); - var ids = []; - $checkboxes.each(function () { - if ($(this).checkbox('is checked')) { - ids.push($(this).data('id')); - } - }); - $.post($this.data('link'), { - "_csrf": csrf, - "ids": ids - }).done(function () { - window.location.href = $this.data('redirect'); - }); - }); - } -} - -function buttonsClickOnEnter() { - $('.ui.button').keypress(function (e) { - if (e.keyCode == 13 || e.keyCode == 32) // enter key or space bar - $(this).click(); - }); -} - -function hideWhenLostFocus(body, parent) { - $(document).click(function (e) { - var target = e.target; - if (!$(target).is(body) && !$(target).parents().is(parent)) { - $(body).hide(); - } - }); -} - -function searchUsers() { - if (!$('#search-user-box .results').length) { - return; - } - - var $searchUserBox = $('#search-user-box'); - var $results = $searchUserBox.find('.results'); - $searchUserBox.keyup(function () { - var $this = $(this); - var keyword = $this.find('input').val(); - if (keyword.length < 2) { - $results.hide(); - return; - } - - $.ajax({ - url: suburl + '/api/v1/users/search?q=' + keyword, - dataType: "json", - success: function (response) { - var notEmpty = function (str) { - return str && str.length > 0; - }; - - $results.html(''); - - if (response.ok && response.data.length) { - var html = ''; - $.each(response.data, function (i, item) { - html += '<div class="item"><img class="ui avatar image" src="' + item.avatar_url + '"><span class="username">' + item.username + '</span>'; - if (notEmpty(item.full_name)) { - html += ' (' + item.full_name + ')'; - } - html += '</div>'; - }); - $results.html(html); - $this.find('.results .item').click(function () { - $this.find('input').val($(this).find('.username').text()); - $results.hide(); - }); - $results.show(); - } else { - $results.hide(); - } - } - }); - }); - $searchUserBox.find('input').focus(function () { - $searchUserBox.keyup(); - }); - hideWhenLostFocus('#search-user-box .results', '#search-user-box'); -} - -// FIXME: merge common parts in two functions -function searchRepositories() { - if (!$('#search-repo-box .results').length) { - return; - } - - var $searchRepoBox = $('#search-repo-box'); - var $results = $searchRepoBox.find('.results'); - $searchRepoBox.keyup(function () { - var $this = $(this); - var keyword = $this.find('input').val(); - if (keyword.length < 2) { - $results.hide(); - return; - } - - $.ajax({ - url: suburl + '/api/v1/repos/search?q=' + keyword + "&uid=" + $searchRepoBox.data('uid'), - dataType: "json", - success: function (response) { - var notEmpty = function (str) { - return str && str.length > 0; - }; - - $results.html(''); - - if (response.ok && response.data.length) { - var html = ''; - $.each(response.data, function (i, item) { - html += '<div class="item"><i class="icon octicon octicon-repo"></i> <span class="fullname">' + item.full_name + '</span></div>'; - }); - $results.html(html); - $this.find('.results .item').click(function () { - $this.find('input').val($(this).find('.fullname').text().split("/")[1]); - $results.hide(); - }); - $results.show(); - } else { - $results.hide(); - } - } - }); - }); - $searchRepoBox.find('input').focus(function () { - $searchRepoBox.keyup(); - }); - hideWhenLostFocus('#search-repo-box .results', '#search-repo-box'); -} - -function initCodeView() { - if ($('.code-view .linenums').length > 0) { - $(document).on('click', '.lines-num span', function (e) { - var $select = $(this); - var $list = $select.parent().siblings('.lines-code').find('ol.linenums > li'); - selectRange($list, $list.filter('[rel=' + $select.attr('id') + ']'), (e.shiftKey ? $list.filter('.active').eq(0) : null)); - deSelect(); - }); - - $(window).on('hashchange', function (e) { - var m = window.location.hash.match(/^#(L\d+)\-(L\d+)$/); - var $list = $('.code-view ol.linenums > li'); - var $first; - if (m) { - $first = $list.filter('.' + m[1]); - selectRange($list, $first, $list.filter('.' + m[2])); - $("html, body").scrollTop($first.offset().top - 200); - return; - } - m = window.location.hash.match(/^#(L\d+)$/); - if (m) { - $first = $list.filter('.' + m[1]); - selectRange($list, $first); - $("html, body").scrollTop($first.offset().top - 200); - } - }).trigger('hashchange'); - } -} - -$(document).ready(function () { - csrf = $('meta[name=_csrf]').attr("content"); - suburl = $('meta[name=_suburl]').attr("content"); - - // Show exact time - $('.time-since').each(function () { - $(this).addClass('poping up').attr('data-content', $(this).attr('title')).attr('data-variation', 'inverted tiny').attr('title', ''); - }); - - // Semantic UI modules. - $('.dropdown').dropdown(); - $('.jump.dropdown').dropdown({ - action: 'hide', - onShow: function () { - $('.poping.up').popup('hide'); - } - }); - $('.slide.up.dropdown').dropdown({ - transition: 'slide up' - }); - $('.upward.dropdown').dropdown({ - direction: 'upward' - }); - $('.ui.accordion').accordion(); - $('.ui.checkbox').checkbox(); - $('.ui.progress').progress({ - showActivity: false - }); - $('.poping.up').popup(); - $('.top.menu .poping.up').popup({ - onShow: function () { - if ($('.top.menu .menu.transition').hasClass('visible')) { - return false; - } - } - }); - $('.tabular.menu .item').tab(); - $('.tabable.menu .item').tab(); - - $('.toggle.button').click(function () { - $($(this).data('target')).slideToggle(100); - }); - - // Highlight JS - if (typeof hljs != 'undefined') { - hljs.initHighlightingOnLoad(); - } - - // Dropzone - var $dropzone = $('#dropzone'); - if ($dropzone.length > 0) { - // Disable auto discover for all elements: - Dropzone.autoDiscover = false; - - var filenameDict = {}; - $dropzone.dropzone({ - url: $dropzone.data('upload-url'), - headers: {"X-Csrf-Token": csrf}, - maxFiles: $dropzone.data('max-file'), - maxFilesize: $dropzone.data('max-size'), - acceptedFiles: ($dropzone.data('accepts') === '*/*') ? null : $dropzone.data('accepts'), - addRemoveLinks: true, - dictDefaultMessage: $dropzone.data('default-message'), - dictInvalidFileType: $dropzone.data('invalid-input-type'), - dictFileTooBig: $dropzone.data('file-too-big'), - dictRemoveFile: $dropzone.data('remove-file'), - init: function () { - this.on("success", function (file, data) { - filenameDict[file.name] = data.uuid; - var input = $('<input id="' + data.uuid + '" name="files" type="hidden">').val(data.uuid); - $('.files').append(input); - }); - this.on("removedfile", function (file) { - if (file.name in filenameDict) { - $('#' + filenameDict[file.name]).remove(); - } - if ($dropzone.data('remove-url') && $dropzone.data('csrf')) { - $.post($dropzone.data('remove-url'), { - file: filenameDict[file.name], - _csrf: $dropzone.data('csrf') - }); - } - }) - } - }); - } - - // Emojify - emojify.setConfig({ - img_dir: suburl + '/img/emoji', - ignore_emoticons: true - }); - var hasEmoji = document.getElementsByClassName('has-emoji'); - for (var i = 0; i < hasEmoji.length; i++) { - emojify.run(hasEmoji[i]); - } - - // Clipboard JS - var clipboard = new Clipboard('.clipboard'); - clipboard.on('success', function (e) { - e.clearSelection(); - - $('#' + e.trigger.getAttribute('id')).popup('destroy'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-success')) - $('#' + e.trigger.getAttribute('id')).popup('show'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')) - }); - - clipboard.on('error', function (e) { - $('#' + e.trigger.getAttribute('id')).popup('destroy'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-error')) - $('#' + e.trigger.getAttribute('id')).popup('show'); - e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')) - }); - - // Helpers. - $('.delete-button').click(function () { - var $this = $(this); - $('.delete.modal').modal({ - closable: false, - onApprove: function () { - if ($this.data('type') == "form") { - $($this.data('form')).submit(); - return; - } - - $.post($this.data('url'), { - "_csrf": csrf, - "id": $this.data("id") - }).done(function (data) { - window.location.href = data.redirect; - }); - } - }).modal('show'); - return false; - }); - $('.show-panel.button').click(function () { - $($(this).data('panel')).show(); - }); - $('.show-modal.button').click(function () { - $($(this).data('modal')).modal('show'); - }); - $('.delete-post.button').click(function () { - var $this = $(this); - $.post($this.data('request-url'), { - "_csrf": csrf - }).done(function () { - window.location.href = $this.data('done-url'); - }); - }); - - // Set anchor. - $('.markdown').each(function () { - var headers = {}; - $(this).find('h1, h2, h3, h4, h5, h6').each(function () { - var node = $(this); - var val = encodeURIComponent(node.text().toLowerCase().replace(/[^\w\- ]/g, '').replace(/[ ]/g, '-')); - var name = val; - if (headers[val] > 0) { - name = val + '-' + headers[val]; - } - if (headers[val] == undefined) { - headers[val] = 1; - } else { - headers[val] += 1; - } - node = node.wrap('<div id="' + name + '" class="anchor-wrap" ></div>'); - node.append('<a class="anchor" href="#' + name + '"><span class="octicon octicon-link"></span></a>'); - }); - }); - - buttonsClickOnEnter(); - searchUsers(); - searchRepositories(); - - initCommentForm(); - initInstall(); - initRepository(); - initWikiForm(); - initEditForm(); - initEditor(); - initOrganization(); - initWebhook(); - initAdmin(); - initCodeView(); - - // Repo clone url. - if ($('#repo-clone-url').length > 0) { - switch (localStorage.getItem('repo-clone-protocol')) { - case 'ssh': - if ($('#repo-clone-ssh').click().length === 0) { - $('#repo-clone-https').click(); - } - break; - default: - $('#repo-clone-https').click(); - break; - } - } - - var routes = { - 'div.user.settings': initUserSettings, - 'div.repository.settings.collaboration': initRepositoryCollaboration - }; - - var selector; - for (selector in routes) { - if ($(selector).length > 0) { - routes[selector](); - break; - } - } -}); - -function changeHash(hash) { - if (history.pushState) { - history.pushState(null, null, hash); - } - else { - location.hash = hash; - } -} - -function deSelect() { - if (window.getSelection) { - window.getSelection().removeAllRanges(); - } else { - document.selection.empty(); - } -} - -function selectRange($list, $select, $from) { - $list.removeClass('active'); - if ($from) { - var a = parseInt($select.attr('rel').substr(1)); - var b = parseInt($from.attr('rel').substr(1)); - var c; - if (a != b) { - if (a > b) { - c = a; - a = b; - b = c; - } - var classes = []; - for (var i = a; i <= b; i++) { - classes.push('.L' + i); - } - $list.filter(classes.join(',')).addClass('active'); - changeHash('#L' + a + '-' + 'L' + b); - return - } - } - $select.addClass('active'); - changeHash('#' + $select.attr('rel')); -} - -$(function () { - if ($('.user.signin').length > 0) return; - $('form').areYouSure(); -}); |