summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/repo/repo_bundle.js2
-rw-r--r--app/assets/javascripts/repo/repo_editor.js3
-rw-r--r--app/assets/javascripts/repo/repo_file_buttons.js59
-rw-r--r--app/assets/javascripts/repo/repo_helper.js17
-rw-r--r--app/assets/javascripts/repo/repo_store.js12
-rw-r--r--app/assets/stylesheets/pages/repo.scss19
-rw-r--r--app/assets/stylesheets/pages/tree.scss1
-rw-r--r--app/views/projects/tree/_tree_content.html.haml1
-rw-r--r--app/views/projects/tree/_tree_header.html.haml74
9 files changed, 109 insertions, 79 deletions
diff --git a/app/assets/javascripts/repo/repo_bundle.js b/app/assets/javascripts/repo/repo_bundle.js
index 1b4534f138a..062c40333c1 100644
--- a/app/assets/javascripts/repo/repo_bundle.js
+++ b/app/assets/javascripts/repo/repo_bundle.js
@@ -1,6 +1,7 @@
import Tabs from './repo_tabs'
import Sidebar from './repo_sidebar'
import Editor from './repo_editor'
+import FileButtons from './repo_file_buttons'
import BinaryViewer from './repo_binary_viewer'
import ViewToggler from './repo_view_toggler'
import Service from './repo_service'
@@ -15,6 +16,7 @@ export default class RepoBundle {
Store.tabs = new Tabs();
Store.sidebar = new Sidebar(url);
Store.editor = new Editor();
+ Store.buttons = new FileButtons();
// Store.toggler = new ViewToggler();
Store.binaryViewer = new BinaryViewer();
Helper.getContent();
diff --git a/app/assets/javascripts/repo/repo_editor.js b/app/assets/javascripts/repo/repo_editor.js
index 2754371a12e..3a3252668b7 100644
--- a/app/assets/javascripts/repo/repo_editor.js
+++ b/app/assets/javascripts/repo/repo_editor.js
@@ -16,7 +16,8 @@ export default class RepoEditor {
.create(
document.getElementById('ide'), {
model: null,
- readOnly: true
+ readOnly: true,
+ contextmenu: false,
}
)
Helper.monacoInstance = monaco;
diff --git a/app/assets/javascripts/repo/repo_file_buttons.js b/app/assets/javascripts/repo/repo_file_buttons.js
new file mode 100644
index 00000000000..2926a2435e5
--- /dev/null
+++ b/app/assets/javascripts/repo/repo_file_buttons.js
@@ -0,0 +1,59 @@
+import Vue from 'vue'
+import Store from './repo_store'
+import Helper from './repo_helper'
+
+export default class RepoSidebar {
+ constructor(url) {
+ this.url = url;
+ this.initVue();
+ this.el = document.getElementById('repo-file-buttons');
+ }
+
+ initVue() {
+ this.vue = new Vue({
+ el: '#repo-file-buttons',
+ data: () => Store,
+ template: `
+ <div id='repo-file-buttons'>
+ <a :href='rawFileURL' target='_blank' class='btn btn-default'>Download file</a>
+ <div class="btn-group" role="group" aria-label="File actions">
+ <a :href='blameFileUrl' class='btn btn-default'>Blame</a>
+ <a :href='historyFileUrl' class='btn btn-default'>History</a>
+ <a href='#' class='btn btn-default'>Permalink</a>
+ <a href='#' class='btn btn-default'>Lock</a>
+ </div>
+ <a href='#' v-if='canPreview' class='btn btn-default'>{{previewLabel}}</a>
+ <a href='#' class='btn btn-danger'>Delete</a>
+ </div>
+ `,
+ computed: {
+ previewLabel() {
+ return this.activeFile.raw ? 'Preview' : 'Raw'
+ },
+
+ canPreview() {
+ return this.activeFile.extension === 'md';
+ },
+
+ rawFileURL() {
+ console.log(this.activeFile)
+ return Helper.getRawURLFromBlobURL(this.activeFile.url);
+ },
+
+ blameFileUrl() {
+ return Helper.getBlameURLFromBlobURL(this.activeFile.url);
+ },
+
+ historyFileUrl() {
+ return Helper.getHistoryURLFromBlobURL(this.activeFile.url);
+ }
+ },
+
+ methods: {
+ setRawPreviewMode() {
+
+ }
+ }
+ });
+ }
+} \ No newline at end of file
diff --git a/app/assets/javascripts/repo/repo_helper.js b/app/assets/javascripts/repo/repo_helper.js
index 2e01c287681..c49875f4833 100644
--- a/app/assets/javascripts/repo/repo_helper.js
+++ b/app/assets/javascripts/repo/repo_helper.js
@@ -117,6 +117,14 @@ let RepoHelper = {
return url.replace('blob', 'raw');
},
+ getBlameURLFromBlobURL(url) {
+ return url.replace('blob', 'blame');
+ },
+
+ getHistoryURLFromBlobURL(url) {
+ return url.replace('blob', 'commits');
+ },
+
setBinaryDataAsBase64(url, file) {
Service.getBase64Content(url)
.then((response) => {
@@ -156,6 +164,7 @@ let RepoHelper = {
// may be tree or file.
getContent(file) {
+ console.log('file')
const loadingData = this.setLoading(true);
Service.getContent()
.then((response) => {
@@ -176,11 +185,19 @@ let RepoHelper = {
data
);
data.binary = true;
+ console.log('file1', file)
+ if(!file.url) {
+ file.url = location.pathname;
+ }
data.url = file.url;
this.addToOpenedFiles(data);
this.setActiveFile(data);
} else {
Store.blobRaw = data.plain;
+ console.log('file2', file)
+ if(!file.url) {
+ file.url = location.pathname;
+ }
data.url = file.url;
data.binary = false;
this.addToOpenedFiles(data);
diff --git a/app/assets/javascripts/repo/repo_store.js b/app/assets/javascripts/repo/repo_store.js
index 3c0c15076ab..0b1fa28455e 100644
--- a/app/assets/javascripts/repo/repo_store.js
+++ b/app/assets/javascripts/repo/repo_store.js
@@ -10,7 +10,17 @@ let RepoStore = {
blobRaw: '',
blobRendered: '',
openedFiles: [],
- activeFile: {},
+ activeFile: {
+ active: true,
+ binary: false,
+ extension: '',
+ html: '',
+ mime_type: '',
+ name: 'loading...',
+ plain: '',
+ size: 0,
+ url: ''
+ },
files: [],
binary: false,
binaryMimeType: '',
diff --git a/app/assets/stylesheets/pages/repo.scss b/app/assets/stylesheets/pages/repo.scss
index 6c0efdd780a..4610b372efd 100644
--- a/app/assets/stylesheets/pages/repo.scss
+++ b/app/assets/stylesheets/pages/repo.scss
@@ -27,12 +27,17 @@ header {
.panel-right{
display: inline-block;
width: 85%;
+
+ .monaco-editor.vs .cursor {
+ background: rgba(255,255,255,0);
+ border-color: rgba(255,255,255,0);
+ }
+
#tabs {
height: 41px;
- border-bottom: 1px solid #f0f0f0;
+ border-bottom: 1px solid $white-normal;
padding-left: 0;
margin-bottom: 0;
- background: $gray-light;
display: inline-block;
white-space: nowrap;
width: 100%;
@@ -65,13 +70,19 @@ header {
}
#ide {
height: 70vh;
+ }
+
+ #repo-file-buttons {
+ background: $gray-light;
+ padding: 5px;
margin-top: -5px;
- }
+ border-bottom: 1px solid $white-normal;
+ }
#binary-viewer {
height: 70vh;
overflow: auto;
- margin-top: -5px;
+ margin-top: 5px;
margin-left: 10px;
.blob-viewer {
diff --git a/app/assets/stylesheets/pages/tree.scss b/app/assets/stylesheets/pages/tree.scss
index 4ae72e3158f..e3c9d7d45cc 100644
--- a/app/assets/stylesheets/pages/tree.scss
+++ b/app/assets/stylesheets/pages/tree.scss
@@ -132,7 +132,6 @@
}
.tree-ref-holder {
- float: left;
margin-right: 15px;
}
diff --git a/app/views/projects/tree/_tree_content.html.haml b/app/views/projects/tree/_tree_content.html.haml
index df21e989f86..876aa6a182f 100644
--- a/app/views/projects/tree/_tree_content.html.haml
+++ b/app/views/projects/tree/_tree_content.html.haml
@@ -18,6 +18,7 @@
.panel-right>
%ul#tabs{"v-if" => "isMini", ":style" => "{height: 41 + scrollWidth + 'px'}", "v-cloak" => "1"}
%li{ is: "repo-tab", "v-for" => "tab in openedFiles", ":key" => "tab.id", ":tab" => "tab", ":class" => "{'active' : tab.active}" }
+ #repo-file-buttons
#ide{ data: { url: repo_url } }
#binary-viewer{ "v-if" => "binary" }
%img{"v-if" => "binaryTypes.png", ":src" => "pngBlobWithDataURI"}
diff --git a/app/views/projects/tree/_tree_header.html.haml b/app/views/projects/tree/_tree_header.html.haml
index abde2a48587..48d1c6ac479 100644
--- a/app/views/projects/tree/_tree_header.html.haml
+++ b/app/views/projects/tree/_tree_header.html.haml
@@ -1,79 +1,9 @@
.tree-controls
+ %a.btn.btn-default.editable-mode{href='#'}
+ Edit mode
= render 'projects/find_file_link'
- = link_to s_('Commits|History'), namespace_project_commits_path(@project.namespace, @project, @id), class: 'btn btn-grouped'
-
= render 'projects/buttons/download', project: @project, ref: @ref
.tree-ref-holder
= render 'shared/ref_switcher', destination: 'tree', path: @path
-
-%ul.breadcrumb.repo-breadcrumb
- %li
- = link_to namespace_project_tree_path(@project.namespace, @project, @ref) do
- = @project.path
- - path_breadcrumbs do |title, path|
- %li
- = link_to truncate(title, length: 40), namespace_project_tree_path(@project.namespace, @project, tree_join(@ref, path))
-
- - if current_user
- %li
- - if !on_top_of_branch?
- %span.btn.add-to-tree.disabled.has-tooltip{ title: _("You can only add files when you are on a branch"), data: { container: 'body' } }
- = icon('plus')
- - else
- %span.dropdown
- %a.dropdown-toggle.btn.add-to-tree{ href: '#', "data-toggle" => "dropdown" }
- = icon('plus')
- %ul.dropdown-menu
- - if can_edit_tree?
- %li
- = link_to namespace_project_new_blob_path(@project.namespace, @project, @id) do
- = icon('pencil fw')
- #{ _('New file') }
- %li
- = link_to '#modal-upload-blob', { 'data-target' => '#modal-upload-blob', 'data-toggle' => 'modal' } do
- = icon('file fw')
- #{ _('Upload file') }
- %li
- = link_to '#modal-create-new-dir', { 'data-target' => '#modal-create-new-dir', 'data-toggle' => 'modal' } do
- = icon('folder fw')
- #{ _('New directory') }
- - elsif can?(current_user, :fork_project, @project)
- %li
- - continue_params = { to: namespace_project_new_blob_path(@project.namespace, @project, @id),
- notice: edit_in_new_fork_notice,
- notice_now: edit_in_new_fork_notice_now }
- - fork_path = namespace_project_forks_path(@project.namespace, @project, namespace_key: current_user.namespace.id,
- continue: continue_params)
- = link_to fork_path, method: :post do
- = icon('pencil fw')
- #{ _('New file') }
- %li
- - continue_params = { to: request.fullpath,
- notice: edit_in_new_fork_notice + " Try to upload a file again.",
- notice_now: edit_in_new_fork_notice_now }
- - fork_path = namespace_project_forks_path(@project.namespace, @project, namespace_key: current_user.namespace.id,
- continue: continue_params)
- = link_to fork_path, method: :post do
- = icon('file fw')
- #{ _('Upload file') }
- %li
- - continue_params = { to: request.fullpath,
- notice: edit_in_new_fork_notice + " Try to create a new directory again.",
- notice_now: edit_in_new_fork_notice_now }
- - fork_path = namespace_project_forks_path(@project.namespace, @project, namespace_key: current_user.namespace.id,
- continue: continue_params)
- = link_to fork_path, method: :post do
- = icon('folder fw')
- #{ _('New directory') }
-
- %li.divider
- %li
- = link_to new_namespace_project_branch_path(@project.namespace, @project) do
- = icon('code-fork fw')
- #{ _('New branch') }
- %li
- = link_to new_namespace_project_tag_path(@project.namespace, @project) do
- = icon('tags fw')
- #{ _('New tag') }