diff --git a/app/assets/javascripts/gfm_auto_complete.js.coffee b/app/assets/javascripts/gfm_auto_complete.js.coffee index 203a5b67..6c0c8886 100644 --- a/app/assets/javascripts/gfm_auto_complete.js.coffee +++ b/app/assets/javascripts/gfm_auto_complete.js.coffee @@ -1,57 +1,47 @@ +# Creates the variables for setting up GFM auto-completion -### - Creates the variables for setting up GFM auto-completion -### # Emoji -window.autocompleteEmojiData = []; -window.autocompleteEmojiTemplate = "
  • ${name} ${name}
  • "; +data = [] +template = "
  • ${name} ${name}
  • " +window.autocompleteEmoji = {data, template} # Team Members -window.autocompleteMembersUrl = ""; -window.autocompleteMembersParams = - private_token: "" - page: 1 -window.autocompleteMembersData = []; +url = ''; +params = {private_token: '', page: 1} +window.autocompleteMembers = {data, url, params} - - -### - Add GFM auto-completion to all input fields, that accept GFM input. -### +# Add GFM auto-completion to all input fields, that accept GFM input. window.setupGfmAutoComplete = -> - ### - Emoji - ### - $('.gfm-input').atWho ':', - data: autocompleteEmojiData, - tpl: autocompleteEmojiTemplate + $input = $('.js-gfm-input') - ### - Team Members - ### - $('.gfm-input').atWho '@', (query, callback) -> + # Emoji + $input.atWho ':', + data: autocompleteEmoji.data, + tpl: autocompleteEmoji.template + + # Team Members + $input.atWho '@', (query, callback) -> (getMoreMembers = -> - $.getJSON(autocompleteMembersUrl, autocompleteMembersParams) - .success (members) -> - # pick the data we need - newMembersData = $.map members, (m) -> m.name + $.getJSON(autocompleteMembers.url, autocompleteMembers.params).success (members) -> + # pick the data we need + newMembersData = $.map members, (m) -> m.name - # add the new page of data to the rest - $.merge autocompleteMembersData, newMembersData + # add the new page of data to the rest + $.merge autocompleteMembers.data, newMembersData - # show the pop-up with a copy of the current data - callback autocompleteMembersData[..] + # show the pop-up with a copy of the current data + callback autocompleteMembers.data[..] - # are we past the last page? - if newMembersData.length == 0 - # set static data and stop callbacks - $('.gfm-input').atWho '@', - data: autocompleteMembersData - callback: null - else - # get next page - getMoreMembers() + # are we past the last page? + if newMembersData.length is 0 + # set static data and stop callbacks + $input.atWho '@', + data: autocompleteMembers.data + callback: null + else + # get next page + getMoreMembers() # so the next request gets the next page - autocompleteMembersParams.page += 1; - ).call(); \ No newline at end of file + autocompleteMembers.params.page += 1 + ).call() diff --git a/app/assets/javascripts/graph.js.coffee b/app/assets/javascripts/graph.js.coffee deleted file mode 100644 index 5fe8ae3f..00000000 --- a/app/assets/javascripts/graph.js.coffee +++ /dev/null @@ -1,10 +0,0 @@ -initGraphNav = -> - $('.graph svg').css 'position', 'relative' - - $('body').bind 'keyup', (e) -> - if e.keyCode is 37 # left - $('.graph svg').animate left: '+=400' - else if e.keyCode is 39 # right - $('.graph svg').animate left: '-=400' - -window.initGraphNav = initGraphNav diff --git a/app/assets/javascripts/loader.js.coffee b/app/assets/javascripts/loader.js.coffee deleted file mode 100644 index 66f8e8b1..00000000 --- a/app/assets/javascripts/loader.js.coffee +++ /dev/null @@ -1,5 +0,0 @@ -Loader = - html: (width) -> - $('').attr src: '/assets/ajax-loader.gif', width: width - -window.Loader = Loader diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee index 86b19162..93b122d9 100644 --- a/app/assets/javascripts/main.js.coffee +++ b/app/assets/javascripts/main.js.coffee @@ -7,7 +7,7 @@ window.slugify = (text) -> window.ajaxGet = (url) -> $.ajax({type: "GET", url: url, dataType: "script"}) - # Disable button if text field is empty +# Disable button if text field is empty window.disableButtonIfEmptyField = (field_selector, button_selector) -> field = $(field_selector) closest_submit = field.closest("form").find(button_selector) @@ -15,21 +15,21 @@ window.disableButtonIfEmptyField = (field_selector, button_selector) -> closest_submit.disable() if field.val() is "" field.on "keyup", -> - if $(this).val() is "" + if $(@).val() is "" closest_submit.disable() else closest_submit.enable() $ -> # Click a .one_click_select field, select the contents - $(".one_click_select").live 'click', -> $(this).select() + $(".one_click_select").on 'click', -> $(@).select() # Initialize chosen selects $('select.chosen').chosen() # Disable form buttons while a form is submitting $('body').on 'ajax:complete, ajax:beforeSend, submit', 'form', (e) -> - buttons = $('[type="submit"]', this) + buttons = $('[type="submit"]', @) switch e.type when 'ajax:beforeSend', 'submit' @@ -38,7 +38,7 @@ $ -> buttons.enable() # Show/Hide the profile menu when hovering the account box - $('.account-box').hover -> $(this).toggleClass('hover') + $('.account-box').hover -> $(@).toggleClass('hover') # Focus search field by pressing 's' key $(document).keypress (e) -> @@ -52,22 +52,22 @@ $ -> # Commit show suppressed diff $(".supp_diff_link").bind "click", -> - $(this).next('table').show() - $(this).remove() + $(@).next('table').show() + $(@).remove() # Note markdown preview $(document).on 'click', '#preview-link', (e) -> - $('#preview-note').text('Loading...') + $('#preview-note').text 'Loading...' - previewLinkText = if $(this).text() == 'Preview' then 'Edit' else 'Preview' - $(this).text(previewLinkText) + previewLinkText = if $(@).text() is 'Preview' then 'Edit' else 'Preview' + $(@).text previewLinkText note = $('#note_note').val() - if note.trim().length == 0 - $('#preview-note').text("Nothing to preview.") + if note.trim().length is 0 + $('#preview-note').text 'Nothing to preview.' else - $.post $(this).attr('href'), {note: note}, (data) -> + $.post $(@).attr('href'), {note: note}, (data) -> $('#preview-note').html(data) $('#preview-note, #note_note').toggle() @@ -79,14 +79,14 @@ $ -> $.fn.extend chosen: (options) -> default_options = search_contains: "true" $.extend default_options, options - _chosen.apply this, [default_options] + _chosen.apply @, [default_options] # Disable an element and add the 'disabled' Bootstrap class $.fn.extend disable: -> - $(this).attr('disabled', 'disabled').addClass('disabled') + $(@).attr('disabled', 'disabled').addClass('disabled') # Enable an element and remove the 'disabled' Bootstrap class $.fn.extend enable: -> - $(this).removeAttr('disabled').removeClass('disabled') + $(@).removeAttr('disabled').removeClass('disabled') )(jQuery) diff --git a/app/assets/javascripts/projects.js.coffee b/app/assets/javascripts/projects.js.coffee index 008fa8e9..3059723d 100644 --- a/app/assets/javascripts/projects.js.coffee +++ b/app/assets/javascripts/projects.js.coffee @@ -22,3 +22,10 @@ $ -> # Ref switcher $('.project-refs-select').on 'change', -> $(@).parents('form').submit() + +class @GraphNav + @init: -> + $('.graph svg').css 'position', 'relative' + $('body').bind 'keyup', (e) -> + $('.graph svg').animate(left: '+=400') if e.keyCode is 37 # left + $('.graph svg').animate(left: '-=400') if e.keyCode is 39 # right diff --git a/app/assets/javascripts/snippets.js.coffee b/app/assets/javascripts/snippets.js.coffee deleted file mode 100644 index af4385de..00000000 --- a/app/assets/javascripts/snippets.js.coffee +++ /dev/null @@ -1,6 +0,0 @@ -$ -> - $('#snippets-table .snippet').live 'click', (e) -> - if e.target.nodeName isnt 'A' and e.target.nodeName isnt 'INPUT' - location.href = $(@).attr 'url' - e.stopPropagation() - false diff --git a/app/views/issues/_form.html.haml b/app/views/issues/_form.html.haml index 2ba72975..670b4e05 100644 --- a/app/views/issues/_form.html.haml +++ b/app/views/issues/_form.html.haml @@ -12,7 +12,7 @@ = f.label :title do %strong= "Subject *" .input - = f.text_field :title, maxlength: 255, class: "xxlarge gfm-input", autofocus: true + = f.text_field :title, maxlength: 255, class: "xxlarge js-gfm-input", autofocus: true .issue_middle_block .issue_assignee = f.label :assignee_id do @@ -37,7 +37,7 @@ .clearfix = f.label :description, "Details" .input - = f.text_area :description, maxlength: 2000, class: "xxlarge gfm-input", rows: 14 + = f.text_area :description, maxlength: 2000, class: "xxlarge js-gfm-input", rows: 14 %p.hint Issues are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. diff --git a/app/views/layouts/_init_auto_complete.html.haml b/app/views/layouts/_init_auto_complete.html.haml index 87a74655..9eadc18c 100644 --- a/app/views/layouts/_init_auto_complete.html.haml +++ b/app/views/layouts/_init_auto_complete.html.haml @@ -1,11 +1,11 @@ :javascript $(function() { - autocompleteMembersUrl = "#{ "/api/v2/projects/#{@project.code}/members" if @project }"; - autocompleteMembersParams.private_token = "#{current_user.authentication_token}"; + autocompleteMembers.url = "#{ "/api/v2/projects/#{@project.code}/members" if @project }"; + autocompleteMembers.params.private_token = "#{current_user.private_token}"; - autocompleteEmojiData = #{raw emoji_autocomplete_source}; + autocompleteEmoji.data = #{raw emoji_autocomplete_source}; // convert the list so that the items have the right format for completion - autocompleteEmojiData = $.map(autocompleteEmojiData, function(value) { + autocompleteEmoji.data = $.map(autocompleteEmoji.data, function(value) { return { name: value, insert: value+':', diff --git a/app/views/merge_requests/_form.html.haml b/app/views/merge_requests/_form.html.haml index 30f88102..c420fac2 100644 --- a/app/views/merge_requests/_form.html.haml +++ b/app/views/merge_requests/_form.html.haml @@ -30,12 +30,12 @@ .clearfix .main_box .top_box_content - = f.label :title do + = f.label :title do %strong= "Title *" - .input= f.text_field :title, class: "input-xxlarge pad gfm-input", maxlength: 255, rows: 5 + .input= f.text_field :title, class: "input-xxlarge pad js-gfm-input", maxlength: 255, rows: 5 .middle_box_content - = f.label :assignee_id do - %i.icon-user + = f.label :assignee_id do + %i.icon-user Assign to .input= f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { include_blank: "Select user" }, {class: 'chosen span3'}) diff --git a/app/views/notes/_common_form.html.haml b/app/views/notes/_common_form.html.haml index a9f2907b..0725082d 100644 --- a/app/views/notes/_common_form.html.haml +++ b/app/views/notes/_common_form.html.haml @@ -8,7 +8,7 @@ = f.hidden_field :noteable_id = f.hidden_field :noteable_type - = f.text_area :note, size: 255, class: 'note-text gfm-input' + = f.text_area :note, size: 255, class: 'note-text js-gfm-input' #preview-note.preview_note.hide .hint .right Comments are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. diff --git a/app/views/notes/_per_line_form.html.haml b/app/views/notes/_per_line_form.html.haml index ee0cde4b..c8d79850 100644 --- a/app/views/notes/_per_line_form.html.haml +++ b/app/views/notes/_per_line_form.html.haml @@ -13,7 +13,7 @@ = f.hidden_field :noteable_id = f.hidden_field :noteable_type = f.hidden_field :line_code - = f.text_area :note, size: 255, class: 'line-note-text gfm-input' + = f.text_area :note, size: 255, class: 'line-note-text js-gfm-input' .note_actions .buttons = f.submit 'Add note', class: "btn save-btn submit_note submit_inline_note", id: "submit_note" diff --git a/app/views/projects/graph.html.haml b/app/views/projects/graph.html.haml index 76ada998..07f038d2 100644 --- a/app/views/projects/graph.html.haml +++ b/app/views/projects/graph.html.haml @@ -10,5 +10,5 @@ initGraph(); $(function(){ branchGraph($("#holder")[0]); - initGraphNav(); + GraphNav.init(); }); diff --git a/app/views/wikis/_form.html.haml b/app/views/wikis/_form.html.haml index 89bbe2ea..83b16b13 100644 --- a/app/views/wikis/_form.html.haml +++ b/app/views/wikis/_form.html.haml @@ -21,7 +21,7 @@ .bottom_box_content = f.label :content - .input= f.text_area :content, class: 'span8 gfm-input' + .input= f.text_area :content, class: 'span8 js-gfm-input' .actions = f.submit 'Save', class: "save-btn btn" = link_to "Cancel", project_wiki_path(@project, :index), class: "btn cancel-btn" diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 51526f89..88bd8196 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -239,7 +239,7 @@ describe Gitlab::API do end describe "GET /projects/:id/snippets" do - it "should return a project snippet" do + it "should return an array of project snippets" do get api("/projects/#{project.code}/snippets", user) response.status.should == 200 json_response.should be_an Array