diff options
author | Richard Mahn <richard_mahn@wycliffeassociates.org> | 2016-08-11 05:48:08 -0700 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2016-08-14 23:52:24 -0700 |
commit | d0a0239bacf02eb004634dfe1bb0a3f7dfe5adb6 (patch) | |
tree | 8459045909d43af85df2afa34f785a0481ae0b9e /public | |
parent | 7e7613cdecf6ceaf97ac280ae98bb9541679963f (diff) | |
download | gitea-d0a0239bacf02eb004634dfe1bb0a3f7dfe5adb6.tar.gz gitea-d0a0239bacf02eb004634dfe1bb0a3f7dfe5adb6.zip |
Squashed commit of the following:
commit 0afcb843d7ffd596991c4885cab768273a6eb42c
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Sun Jul 31 17:13:29 2016 -0600
Removed Upload stats as the upload table is just a temporary table
commit 7ecd73ff5535612d79d471409173ee7f1fcfa157
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Sun Jul 31 08:42:41 2016 -0600
Fix for CodeMirror mode
commit c29b9ab531e2e7af0fb5db24dc17e51027dd1174
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Sun Jul 31 08:03:33 2016 -0600
Made tabbing in editor use spaces
commit 23af384c53206a8a40e11e45bf49d7a149c4adcd
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Sun Jul 31 07:56:46 2016 -0600
Fix for data-url
commit cfb8a97591cb6fc0a92e49563b7b764c524db0e9
Merge: 7fc8a89 991ce42
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Sun Jul 31 07:42:53 2016 -0600
Merge remote-tracking branch 'gogits/develop' into feature-create-and-edit-repo-file
Conflicts:
modules/bindata/bindata.go
public/js/gogs.js
commit 7fc8a89cb495478225b02d613e647f99a1489634
Merge: fd3d86c c03d040
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Sun Jul 31 07:40:00 2016 -0600
Merge branch 'feature-create-and-edit-repo-file' of github.com:richmahn/gogs into feature-create-and-edit-repo-file
commit fd3d86ca6bbc02cfda566a504ffd6b03db4f75ef
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Sun Jul 31 07:39:44 2016 -0600
Code cleanup
commit c03d0401c1049eeeccc32ab1f9c3303c130be5ee
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Fri Jul 29 15:38:23 2016 -0600
Code cleanup
commit 98e1206ccf9f9a4503c020e3a7830cf9f861dfae
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Thu Jul 28 18:36:01 2016 -0600
Code cleanup and fixes
commit c2895dc742f25f8412879c9fa15e18f27f42f194
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Thu Jul 28 18:24:04 2016 -0600
Fixes per Unknwon's requests
commit 6aa7e46b21ad4c96e562daa2eac26a8fb408f8ef
Merge: 889e9fa ad7ea88
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Thu Jul 28 17:13:43 2016 -0600
Merge remote-tracking branch 'gogits/develop' into feature-create-and-edit-repo-file
Conflicts:
modules/bindata/bindata.go
modules/setting/setting.go
commit 889e9faf1bd8559a4979c8f46005d488c1a234d4
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Fri Jul 22 14:09:18 2016 -0600
Fix in gogs.js
commit 47603edf223f147b114be65f3bd27bc1e88827a5
Merge: bb57912 cf85e9e
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Fri Jul 22 14:07:36 2016 -0600
Merge remote-tracking branch 'gogits/develop' into feature-create-and-edit-repo-file
Conflicts:
modules/bindata/bindata.go
public/js/gogs.js
commit bb5791255867a71c11a77b639db050ad09c597a4
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Fri Jul 22 14:02:18 2016 -0600
Update for using CodeMirror mode addon
commit d10d128c51039be19e2af9c66c63db66a9f2ec6d
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Tue Jul 19 16:12:57 2016 -0600
Update for Edit
commit 34a34982025144e3225e389f7849eb6273c1d576
Merge: fa1b752 1c7dcdd
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Tue Jul 19 11:52:02 2016 -0600
Merge remote-tracking branch 'gogits/develop' into feature-create-and-edit-repo-file
Conflicts:
modules/bindata/bindata.go
commit fa1b752be29cd455c5184ddac2ffe80b3489763e
Author: Richard Mahn <richard_mahn@wycliffeassociates.org>
Date: Fri Jul 15 18:35:42 2016 -0600
Feature for editing, creating, uploading and deleting files
Diffstat (limited to 'public')
-rw-r--r-- | public/css/gogs.css | 251 | ||||
-rw-r--r-- | public/js/gogs.js | 504 |
2 files changed, 647 insertions, 108 deletions
diff --git a/public/css/gogs.css b/public/css/gogs.css index 1eb6472f02..4001f11f95 100644 --- a/public/css/gogs.css +++ b/public/css/gogs.css @@ -255,6 +255,9 @@ code.wrap { .ui.status.buttons .octicon { margin-right: 4px; } +.ui.menu .item .octicon { + margin-right: 4px; +} .ui.inline.delete-button { padding: 8px 15px; font-weight: normal; @@ -1266,57 +1269,57 @@ footer .ui.language .menu { .repository.file.list #file-content .view-raw img { padding: 5px 5px 0 5px; } -.repository.file.list #file-content .code-view * { +#file-content .code-view * { font-size: 12px; font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; line-height: 20px; } -.repository.file.list #file-content .code-view table { +#file-content .code-view table { width: 100%; } -.repository.file.list #file-content .code-view .lines-num { +#file-content .code-view .lines-num { vertical-align: top; text-align: right; color: #999; background: #f5f5f5; width: 1%; } -.repository.file.list #file-content .code-view .lines-num span { +#file-content .code-view .lines-num span { line-height: 20px; padding: 0 10px; cursor: pointer; display: block; } -.repository.file.list #file-content .code-view .lines-num, -.repository.file.list #file-content .code-view .lines-code { +#file-content .code-view .lines-num, +#file-content .code-view .lines-code { padding: 0; } -.repository.file.list #file-content .code-view .lines-num pre, -.repository.file.list #file-content .code-view .lines-code pre, -.repository.file.list #file-content .code-view .lines-num ol, -.repository.file.list #file-content .code-view .lines-code ol, -.repository.file.list #file-content .code-view .lines-num .hljs, -.repository.file.list #file-content .code-view .lines-code .hljs { +#file-content .code-view .lines-num pre, +#file-content .code-view .lines-code pre, +#file-content .code-view .lines-num ol, +#file-content .code-view .lines-code ol, +#file-content .code-view .lines-num .hljs, +#file-content .code-view .lines-code .hljs { background-color: white; margin: 0; padding: 0 !important; } -.repository.file.list #file-content .code-view .lines-num pre li, -.repository.file.list #file-content .code-view .lines-code pre li, -.repository.file.list #file-content .code-view .lines-num ol li, -.repository.file.list #file-content .code-view .lines-code ol li, -.repository.file.list #file-content .code-view .lines-num .hljs li, -.repository.file.list #file-content .code-view .lines-code .hljs li { +#file-content .code-view .lines-num pre li, +#file-content .code-view .lines-code pre li, +#file-content .code-view .lines-num ol li, +#file-content .code-view .lines-code ol li, +#file-content .code-view .lines-num .hljs li, +#file-content .code-view .lines-code .hljs li { padding-left: 5px; display: inline-block; width: 100%; } -.repository.file.list #file-content .code-view .lines-num pre li.active, -.repository.file.list #file-content .code-view .lines-code pre li.active, -.repository.file.list #file-content .code-view .lines-num ol li.active, -.repository.file.list #file-content .code-view .lines-code ol li.active, -.repository.file.list #file-content .code-view .lines-num .hljs li.active, -.repository.file.list #file-content .code-view .lines-code .hljs li.active { +#file-content .code-view .lines-num pre li.active, +#file-content .code-view .lines-code pre li.active, +#file-content .code-view .lines-num ol li.active, +#file-content .code-view .lines-code ol li.active, +#file-content .code-view .lines-num .hljs li.active, +#file-content .code-view .lines-code .hljs li.active { background: #ffffdd; } .repository.file.list .sidebar { @@ -1895,7 +1898,7 @@ footer .ui.language .menu { max-width: 100%; padding: 5px 5px 0 5px; } -.repository .code-view { +#file-content .code-view { overflow: auto; overflow-x: auto; overflow-y: hidden; @@ -2157,13 +2160,13 @@ footer .ui.language .menu { .page.buttons { padding-top: 15px; } -.ui.comments .dropzone { +.ui.comments .dropzone, .ui.upload .dropzone { width: 100%; margin-bottom: 10px; border: 2px dashed #0087F7; box-shadow: none!important; } -.ui.comments .dropzone .dz-error-message { +.ui.comments .dropzone .dz-error-message, .ui.upload .dropzone .dz-error-message { top: 140px; } .settings .content { @@ -2797,3 +2800,197 @@ footer .ui.language .menu { .ui.user.list .item .description a:hover { text-decoration: underline; } +.btn-octicon { + display: inline-block; + padding: 5px; + margin-left: 5px; + line-height: 1; + color: #767676; + vertical-align: middle; + background: transparent; + border: 0; + outline: none; +} +.btn-octicon:hover { + color: #4078c0; +} +.btn-octicon-danger:hover { + color: #bd2c00; +} +.btn-octicon.disabled { + color: #bbb; + cursor: default; +} +.inline-form { + display: inline-block; +} +.ui.form .breadcrumb input { + min-height: 34px; + padding: 7px 8px; + color: #333; + vertical-align: middle; + background-color: #fff; + background-repeat: no-repeat; + background-position: right 8px center; + border: 1px solid #ddd; + border-radius: 3px; + outline: none; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.075); + width: inherit; +} +#file-actions { + padding-left: 20px; +} +.CodeMirror.cm-s-default { + margin-top: 20px; + margin-bottom: 15px; + border: 1px solid #ddd; + border-radius: 3px; + height: 600px; + padding: 0 !important; +} +.commit-form-wrapper { + padding-left: 64px; +} +.commit-form { + position: relative; + padding: 15px; + margin-bottom: 10px; + border: 1px solid #ddd; + border-radius: 3px; +} +.commit-form-wrapper .commit-form-avatar { + float: left; + margin-left: -64px; + border-radius: 4px; +} +.commit-form::before { + border-width: 8px; + border-color: transparent; + border-right-color: #ddd; + position: absolute; + top: 11px; + right: 100%; + left: -16px; + display: block; + width: 0; + height: 0; + pointer-events: none; + content: " "; + border-style: solid solid outset; +} +.form-checkbox input[type=checkbox], .form-checkbox input[type=radio] { + float: left; + margin: 2px 0 0 -20px; + vertical-align: middle; + box-sizing: border-box; + padding: 0; +} +.branch-name { + display: inline-block; + padding: 2px 6px; + font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; + color: rgba(0,0,0,0.5); + background-color: rgba(209,227,237,0.5); + border-radius: 3px; +} +.form-control, .form-select { + min-height: 34px; + padding: 7px 8px; + font-size: 13px; + color: #333; + vertical-align: middle; + background-color: #fff; + background-repeat: no-repeat; + background-position: right 8px center; + border: 1px solid #ddd; + border-radius: 3px; + outline: none; + box-shadow: inset 0 1px 2px rgba(0,0,0,0.075); +} +.form-control.input-contrast { + background-color: #fafafa; +} +.form-control.mr-2 { + margin-right: 6px !important; +} +.quick-pull-choice .new-branch-name-input input { + width: 240px !important; + padding-left: 26px !important; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; +} +.quick-pull-choice .new-branch-name-input .quick-pull-new-branch-icon { + position: absolute; + top: 9px; + left: 10px; + color: #b0c4ce; +} +.text-muted, .text-gray { + color: #767676 !important; +} +.quick-pull-choice .new-branch-name-input { + position: relative; + margin-top: 5px; +} +.quick-pull-choice .quick-pull-branch-name { + display: none; + padding-left: 48px; + margin-top: 5px; +} +.quick-pull-choice.will-create-branch .quick-pull-branch-name { + display: inline-block; +} +.nowrap { + white-space: nowrap; +} +#file-buttons { + padding-right: 15px; +} +.repository .ui.container .ui.breadcrumb { + font-size: 1.5em; + color: #767676; + max-width: 600px; +} +.repository .ui.container .item:first-child .ui.breadcrumb { + max-width: none; +} +.repository .ui.container .ui.breadcrumb.field { + margin-bottom: 10px !important; +} +.repo-edit-file-cancel { + padding-left: 10px; +} +#new-branch-item { + display:none; + margin: 0; + text-align: left; + padding: .71428571em 1.14285714em!important; + background: 0 0!important; + color: rgba(0,0,0,.87)!important; + text-transform: none!important; + box-shadow: none!important; + -webkit-transition: none!important; + transition: none!important; + border-top: none; + padding-right: calc(1.14285714rem + 17px)!important; + font-size: 14px; + font-weight: bold; + line-height: 1.1; +} +#new-branch-item:hover { + background: rgba(0,0,0,.05)!important; + color: rgba(0,0,0,.95)!important; +} +#new-branch-item .icon { + float: left; + margin-left: -15px; +} +#new-branch-item .description { + margin-top: 3px; + font-size: 12px; +} +.repository .ui.container .ui.breadcrumb { + font-size: 1.5em; + color: #767676; + max-width: 600px; +} diff --git a/public/js/gogs.js b/public/js/gogs.js index c6a1b6b624..81425503ba 100644 --- a/public/js/gogs.js +++ b/public/js/gogs.js @@ -28,6 +28,61 @@ function initCommentPreviewTab($form) { buttonsClickOnEnter(); } +var previewTab; +var previewTabApis; + +function initEditPreviewTab($form) { + var $tab_menu = $form.find('.tabular.menu'); + $tab_menu.find('.item').tab(); + previewTab = $tab_menu.find('.item[data-tab="' + $tab_menu.data('preview') + '"]'); + + if (previewTab.length) { + previewTabApis = previewTab.data('preview-apis').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="' + $tab_menu.data('write') + '"] textarea').val() + }, + function (data) { + var $preview_tab = $form.find('.tab.segment[data-tab="' + $tab_menu.data('preview') + '"]'); + $preview_tab.html(data); + emojify.run($preview_tab[0]); + $('pre code', $preview_tab[0]).each(function (i, block) { + hljs.highlightBlock(block); + }); + } + ); + }); + } + + buttonsClickOnEnter(); +} + +function initEditDiffTab($form) { + var $tab_menu = $form.find('.tabular.menu'); + $tab_menu.find('.item').tab(); + $tab_menu.find('.item[data-tab="' + $tab_menu.data('diff') + '"]').click(function () { + var $this = $(this); + $.post($this.data('url'), { + "_csrf": csrf, + "context": $this.data('context'), + "content": $form.find('.tab.segment[data-tab="' + $tab_menu.data('write') + '"] textarea').val() + }, + function (data) { + var $diff_tab = $form.find('.tab.segment[data-tab="' + $tab_menu.data('diff') + '"]'); + $diff_tab.html(data); + emojify.run($diff_tab[0]); + initCodeView() + } + ); + }); + + buttonsClickOnEnter(); +} + function initCommentForm() { if ($('.comment.form').length == 0) { return @@ -145,6 +200,11 @@ function initCommentForm() { selectItem('.select-assignee', '#assignee_id'); } +function initEditForm() { + initEditPreviewTab($('.edit.form')); + initEditDiffTab($('.edit.form')); +} + function initInstall() { if ($('.install').length == 0) { return; @@ -450,7 +510,7 @@ function initRepository() { // Change status var $status_btn = $('#status-button'); - $('#content').keyup(function () { + $('#edit_area').keyup(function () { if ($(this).val().length == 0) { $status_btn.text($status_btn.data('status')) } else { @@ -516,15 +576,10 @@ function initRepositoryCollaboration() { }); } -function initWiki() { - if ($('.repository.wiki').length == 0) { - return; - } - - - if ($('.repository.wiki.new').length > 0) { - var $edit_area = $('#edit-area'); - var simplemde = new SimpleMDE({ +function initWikiForm() { + var $edit_area = $('.repository.wiki textarea#edit_area'); + if ($edit_area.length > 0) { + new SimpleMDE({ autoDownloadFontAwesome: false, element: $edit_area[0], forceSync: true, @@ -549,18 +604,284 @@ function initWiki() { renderingConfig: { singleLineBreaks: false }, - spellChecker: false, + indentWithTabs: false, tabSize: 4, + spellChecker: false, toolbar: ["bold", "italic", "strikethrough", "|", - "heading", "heading-1", "heading-2", "heading-3", "|", + "heading-1", "heading-2", "heading-3", "heading-bigger", "heading-smaller", "|", "code", "quote", "|", "unordered-list", "ordered-list", "|", - "link", "image", "horizontal-rule", "|", - "preview", "fullscreen"] + "link", "image", "table", "horizontal-rule", "|", + "clean-block", "preview", "fullscreen", "side-by-side"] }) } } +function initIssueForm() { + var $edit_area = $('.repository.issue textarea.edit_area'); + if ($edit_area.length > 0) { + $edit_area.each(function (i, edit_area) { + new SimpleMDE({ + autoDownloadFontAwesome: false, + element: edit_area[0], + forceSync: true, + previewRender: function (plainText, preview) { // Async method + setTimeout(function () { + // FIXME: still send render request when return back to edit mode + $.post($edit_area.data('url'), { + "_csrf": csrf, + "mode": "gfm", + "context": $edit_area.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", "|", + "code", "quote", "|", + "unordered-list", "ordered-list", "|", + "link", "image", "table"] + }) + }); + } +} + +var editArea; +var editFilename; +var smdEditor; +var cmEditor; +var mdFileExtensions; +var lineWrapExtensions; + +// 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 objects +(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 initEditor() { + editFilename = $("#file-name"); + editFilename.keyup(function (e) { + var sections = $('.breadcrumb span.section'); + var dividers = $('.breadcrumb div.divider'); + if (e.keyCode == 8) { + if ($(this).getCursorPosition() == 0) { + if (sections.length > 0) { + var value = sections.last().find('a').text(); + $(this).val(value + $(this).val()); + $(this)[0].setSelectionRange(value.length, value.length); + sections.last().remove(); + dividers.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-name').val(parts.join('/')); + }).trigger('keyup'); + + editArea = $('.repository.edit textarea#edit_area'); + + if (!editArea.length) + return; + + mdFileExtensions = editArea.data("md-file-extensions").split(","); + 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 && previewTabApis && previewTabApis.length && previewTabApis.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 (mdFileExtensions.indexOf(extWithDot) >= 0) { + if (setSimpleMDE()) { + return; + } + } + + // Else we are going to use CodeMirror + if (!cmEditor) { + if (!setCodeMirror()) + return; + } + + if (mode) { + cmEditor.setOption("mode", spec); + CodeMirror.autoLoadMode(cmEditor, mode); + } + + if (lineWrapExtensions.indexOf(extWithDot) >= 0) { + cmEditor.setOption("lineWrapping", true); + } + else { + cmEditor.setOption("lineWrapping", false); + } + }).trigger('keyup'); +} + +function setSimpleMDE() { + if (cmEditor) { + cmEditor.toTextArea(); + cmEditor = null; + } + + if (smdEditor) { + return true; + } + + smdEditor = 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() { + if (smdEditor) { + smdEditor.toTextArea(); + smdEditor = null; + } + + if (cmEditor) { + return true; + } + + cmEditor = CodeMirror.fromTextArea(editArea[0], { + lineNumbers: true + }); + cmEditor.on("change", function (cm, change) { + editArea.val(cm.getValue()); + }); + + return true; +} + +function initQuickPull() { + $('.js-quick-pull-choice-option').change(function () { + quickPullChoiceChange(); + }); + quickPullChoiceChange(); +} + +function quickPullChoiceChange() { + var radio = $('.js-quick-pull-choice-option:checked'); + if (radio.val() == 'commit-to-new-branch') + $('.quick-pull-branch-name').show(); + else + $('.quick-pull-branch-name').hide(); +} + function initOrganization() { if ($('.organization').length == 0) { return; @@ -867,6 +1188,37 @@ function searchRepositories() { 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'); + } +} + +var $dropz; + $(document).ready(function () { csrf = $('meta[name=_csrf]').attr("content"); suburl = $('meta[name=_suburl]').attr("content"); @@ -916,12 +1268,12 @@ $(document).ready(function () { } // Dropzone - if ($('#dropzone').length > 0) { + var $dropz = $('#dropzone'); + if ($dropz.length > 0) { // Disable auto discover for all elements: Dropzone.autoDiscover = false; var filenameDict = {}; - var $dropz = $('#dropzone'); $dropz.dropzone({ url: $dropz.data('upload-url'), headers: {"X-Csrf-Token": csrf}, @@ -936,12 +1288,16 @@ $(document).ready(function () { init: function () { this.on("success", function (file, data) { filenameDict[file.name] = data.uuid; - $('.attachments').append('<input id="' + data.uuid + '" name="attachments" type="hidden" value="' + 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 ($dropz.data('remove-url') && $dropz.data('csrf')) { + $.post($dropz.data('remove-url'), {file: filenameDict[file.name], _csrf: $dropz.data('csrf')}); + } }) } }); @@ -975,6 +1331,15 @@ $(document).ready(function () { e.trigger.setAttribute('data-content', e.trigger.getAttribute('data-original')) }); + // Clipboard for copying filename on edit page + if ($('.clipboard-tree-name').length) { + new Clipboard(document.querySelector('.clipboard-tree-name'), { + text: function () { + return $('#tree-name').val(); + } + }); + } + // Helpers. $('.delete-button').click(function () { var $this = $(this); @@ -1038,10 +1403,14 @@ $(document).ready(function () { initCommentForm(); initInstall(); initRepository(); - initWiki(); + initWikiForm(); + initIssueForm(); + initEditForm(); + initEditor(); initOrganization(); initWebhook(); initAdmin(); + initQuickPull(); var routes = { 'div.user.settings': initUserSettings, @@ -1057,76 +1426,50 @@ $(document).ready(function () { } }); -$(window).load(function () { - function changeHash(hash) { - if (history.pushState) { - history.pushState(null, null, hash); - } - else { - location.hash = hash; - } +function changeHash(hash) { + if (history.pushState) { + history.pushState(null, null, hash); } - - function deSelect() { - if (window.getSelection) { - window.getSelection().removeAllRanges(); - } else { - document.selection.empty(); - } + else { + location.hash = hash; } +} - 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 deSelect() { + if (window.getSelection) { + window.getSelection().removeAllRanges(); + } else { + document.selection.empty(); } +} - // Code view. - 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; +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; } - m = window.location.hash.match(/^#(L\d+)$/); - if (m) { - $first = $list.filter('.' + m[1]); - selectRange($list, $first); - $("html, body").scrollTop($first.offset().top - 200); + var classes = []; + for (var i = a; i <= b; i++) { + classes.push('.L' + i); } - }).trigger('hashchange'); + $list.filter(classes.join(',')).addClass('active'); + changeHash('#L' + a + '-' + 'L' + b); + return + } } + $select.addClass('active'); + changeHash('#' + $select.attr('rel')); +} + +$(window).load(function () { + initCodeView(); // Repo clone url. if ($('#repo-clone-url').length > 0) { @@ -1135,7 +1478,6 @@ $(window).load(function () { if ($('#repo-clone-ssh').click().length === 0) { $('#repo-clone-https').click(); } - ; break; default: $('#repo-clone-https').click(); |