diff --git a/app/assets/javascripts/note.js b/app/assets/javascripts/note.js index 7acc81e5..ef5330b7 100644 --- a/app/assets/javascripts/note.js +++ b/app/assets/javascripts/note.js @@ -42,8 +42,10 @@ replace: prepend: function(id, html) { - this.last_id = id; - $("#notes-list").prepend(html); + if(id != this.last_id) { + this.last_id = id; + $("#notes-list").prepend(html); + } }, getNew: diff --git a/app/assets/javascripts/projects.js b/app/assets/javascripts/projects.js index 87be2f07..b4521fab 100644 --- a/app/assets/javascripts/projects.js +++ b/app/assets/javascripts/projects.js @@ -40,3 +40,19 @@ $(document).ready(function(){ function focusSearch() { $("#search").focus(); } + +function taggifyForm(){ + var tag_field = $('#tag_field').tagify(); + + tag_field.tagify('inputField').autocomplete({ + source: '/tags.json' + }); + + + $('form').submit( function() { + var tag_field = $('#tag_field') + tag_field.val( tag_field.tagify('serialize') ); + return true; + }); +} + diff --git a/app/assets/stylesheets/projects.css.scss b/app/assets/stylesheets/projects.css.scss index 7dfd8b29..10885d3b 100644 --- a/app/assets/stylesheets/projects.css.scss +++ b/app/assets/stylesheets/projects.css.scss @@ -276,6 +276,9 @@ input.ssh_project_url { /** FORM INPUTS **/ .user_new, +.new_key, +.new_issue, +.new_note, .edit_user, .new_project, .new_snippet, @@ -440,67 +443,6 @@ input.ssh_project_url { padding: 10px; } -.recent_message_parent { - img { - padding-right:10px; - } - - float: left; - margin: 0 20px 20px 0px; - padding: 5px 0px;; - width: 420px; - - &.dash_wall{ - border-bottom: 2px solid orange; - span { - background: orange; - color:black; - } - } - - &.dash_issue{ - border-bottom: 2px solid #ffbbbb; - span { - background: #ffbbbb; - } - } - &.dash_commit{ - border-bottom: 2px solid #bbbbff; - - span{ - background: #bbbbff; - } - } - - &.dash_snippet{ - border-bottom: 2px solid #bbffbb; - - span{ - background: #bbffbb; - } - } - - span{ - border: 1px solid #aaa; - color:black; - padding:1px 4px; - } - - h4 { - margin-bottom:3px; - } - -} -.commit, -.message{ - .author { - background: #eaeaea; - color: #333; - border: 1px solid #aaa; - padding:1px 2px; - margin-right:5px; - } -} /* Note textare */ #note_note { @@ -662,6 +604,8 @@ table.highlighttable pre{ margin-right:15px; } } +.filter .left { margin-right:15px; } + .cgray { color:gray; } .cred { color:#D12F19; } @@ -676,6 +620,30 @@ body.project-page table .commit { } } +#notes-list .note .delete-note { display:none; } +#notes-list .note:hover .delete-note { display:block; } + +#issues-table-holder .issue .action-links { + display:none; + a { + margin-left:10px; + } +} + +.issue-number { + float: left; + border-radius: 5px; + text-shadow: none; + background: rgba(0, 0, 0, 0.12); + text-align: center; + padding: 14px 8px; + width: 40px; + margin-right: 10px; + color: #444; +} + +#issues-table-holder .issue:hover .action-links { display:block; } + body.project-page #notes-list .note {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} body.project-page #notes-list .note {padding: 10px; border-bottom: 1px solid #eee; overflow: hidden; display: block;} body.project-page #notes-list .note img{float: left; margin-right: 10px;} @@ -683,3 +651,33 @@ body.project-page #notes-list .note span.note-title{display: block;} body.project-page #notes-list .note span.note-title{margin-bottom: 10px} body.project-page #notes-list .note span.note-author{color: #999; font-weight: normal; font-style: italic;} body.project-page #notes-list .note span.note-author strong{font-weight: bold; font-style: normal;} + + +/** NEW PROJECT **/ +.new-project-hodler { + .icon span { + background-position: -31px -70px; + } + td { + border-bottom: 1px solid #DEE2E3; + } +} + +//.message .note-title p { margin-bottom:0px; } + +.commit, +.message { + .title { + color:#666; + a { + color:#666 !important; + } + p { + margin-top:0px; + } + } + + .author { + color: #999 + } +} diff --git a/app/assets/stylesheets/style.scss b/app/assets/stylesheets/style.scss index ec403eba..13f26d97 100755 --- a/app/assets/stylesheets/style.scss +++ b/app/assets/stylesheets/style.scss @@ -87,6 +87,17 @@ h2{margin: 1.5em 0} /* Forms */ input[type="text"]:focus, input[type="password"]:focus { outline: none; } input.text{border: 1px solid #ccc; border-radius: 4px; display: block; padding: 10px} + +.form-row{ + padding: 0px 0px 10px 0px; +} + +.form-row label{ + font-weight:bold; + display: inline-block; + padding: 0px 0px 5px 0px; +} + /* eo Forms */ /* Tables */ diff --git a/app/assets/stylesheets/tags.css.css b/app/assets/stylesheets/tags.css.css index afd458fd..e65918ea 100644 --- a/app/assets/stylesheets/tags.css.css +++ b/app/assets/stylesheets/tags.css.css @@ -27,4 +27,18 @@ color: #FFF; text-shadow: none; font-weight: bold; +} + + +.medium-tags a{ + font-size: 12px; + + display: inline-block; + padding: 3px 4px 2px 4px; + margin: 0px 7px 8px 0px; + border-radius: 3px; + background-color: #72bbdf; + color: #FFF; + text-shadow: none; + font-weight: bold; } \ No newline at end of file diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 7ff1ccb3..508cfc39 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -47,6 +47,7 @@ class IssuesController < ApplicationController def create @issue = @project.issues.new(params[:issue]) @issue.author = current_user + if @issue.save && @issue.assignee != current_user Notify.new_issue_email(@issue).deliver end diff --git a/app/helpers/dashboard_helper.rb b/app/helpers/dashboard_helper.rb index 0560af5d..03f6a015 100644 --- a/app/helpers/dashboard_helper.rb +++ b/app/helpers/dashboard_helper.rb @@ -12,7 +12,7 @@ module DashboardHelper when "Commit" then project_commit_path(project, :id => note.noteable_id) else wall_project_path(project) end - else "#" + else wall_project_path(project) end rescue "#" @@ -23,7 +23,7 @@ module DashboardHelper when "Note" then markdown(object.note) when "Issue" then object.title when "Grit::Commit" then object.safe_message - else "" + else return "Project Wall" end "[#{object.class.name}] #{truncate(sanitize(title, :tags => []), :length => 60)} " end diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index bfb9d25e..bdb6c281 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -1,2 +1,12 @@ module IssuesHelper + def sort_class + if can?(current_user, :admin_issue, @project) && (!params[:f] || params[:f] == "0") + "handle" + end + end + + def project_issues_filter_path project, params = {} + params[:f] ||= cookies['issue_filter'] + project_issues_path project, params + end end diff --git a/app/helpers/tags_helper.rb b/app/helpers/tags_helper.rb new file mode 100644 index 00000000..5c1ecc86 --- /dev/null +++ b/app/helpers/tags_helper.rb @@ -0,0 +1,15 @@ +module TagsHelper + def tag_path tag + "/tags/#{tag}" + end + + def tag_list project + html = '' + project.tag_list.each do |tag| + html += link_to tag, tag_path(tag) + end + + html.html_safe + end + +end diff --git a/app/views/admin/projects/_form.html.haml b/app/views/admin/projects/_form.html.haml index 9823e594..f64e10fd 100644 --- a/app/views/admin/projects/_form.html.haml +++ b/app/views/admin/projects/_form.html.haml @@ -1,30 +1,39 @@ = form_for [:admin, @admin_project] do |f| -if @admin_project.errors.any? #error_explanation - %h2= "#{pluralize(@admin_project.errors.count, "error")} prohibited this admin_project from being saved:" + %h2= "#{pluralize(@admin_project.errors.count, "error")} prohibited this admin_project from being saved:" %ul - @admin_project.errors.full_messages.each do |msg| %li= msg - .span-24 - .span-12 - .field - = f.label :name - %br - = f.text_field :name - .field - = f.label :code - %br - = f.text_field :code - .field - = f.label :path - %br - = f.text_field :path - .span-10 - .field - = f.label :description - %br - = f.text_area :description + .form-row + = f.label :name + %br + = f.text_field :name + .form-row + = f.label :code + %br + = f.text_field :code + .form-row + = f.label :path + %br + = f.text_field :path + + + .form-row + = f.label :tag_list + %br + = f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field + + .form-row + = f.label :description + %br + = f.text_area :description .clear .actions = f.submit 'Save', :class => "lbutton" + +:javascript + $(function(){ + taggifyForm(); + }) diff --git a/app/views/admin/users/_form.html.haml b/app/views/admin/users/_form.html.haml index 51b5d5c7..06e5be19 100644 --- a/app/views/admin/users/_form.html.haml +++ b/app/views/admin/users/_form.html.haml @@ -7,44 +7,42 @@ - @admin_user.errors.full_messages.each do |msg| %li= msg - .span-24 - .span-11.colborder - .field - = f.label :name - %br - = f.text_field :name - .field - = f.label :email - %br - = f.text_field :email - .field - = f.label :password - %br - = f.password_field :password - .field - = f.label :password_confirmation - %br - = f.password_field :password_confirmation - .field.prepend-top - = f.check_box :admin - = f.label :admin - .span-11 - .field.prepend-top - = f.text_field :projects_limit, :class => "small_input" - = f.label :projects_limit + .form-row + = f.label :name + %br + = f.text_field :name + .form-row + = f.label :email + %br + = f.text_field :email + .form-row + = f.label :password + %br + = f.password_field :password + .form-row + = f.label :password_confirmation + %br + = f.password_field :password_confirmation + .form-row + = f.check_box :admin + = f.label :admin - .field - = f.label :skype - %br - = f.text_field :skype - .field - = f.label :linkedin - %br - = f.text_field :linkedin - .field - = f.label :twitter - %br - = f.text_field :twitter + .form-row + = f.text_field :projects_limit, :class => "small_input" + = f.label :projects_limit + + .form-row + = f.label :skype + %br + = f.text_field :skype + .form-row + = f.label :linkedin + %br + = f.text_field :linkedin + .form-row + = f.label :twitter + %br + = f.text_field :twitter .clear %br .actions diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml index cbec1060..e12cfc77 100644 --- a/app/views/admin/users/index.html.haml +++ b/app/views/admin/users/index.html.haml @@ -21,4 +21,5 @@ %br = paginate @admin_users + = link_to 'New User', new_admin_user_path diff --git a/app/views/commits/_text_file.html.haml b/app/views/commits/_text_file.html.haml index 1ef4a3c8..ed9adffd 100644 --- a/app/views/commits/_text_file.html.haml +++ b/app/views/commits/_text_file.html.haml @@ -13,10 +13,8 @@ = diff_line(line, line_new, line_old) - if line[0] == "+" - line_new += 1 - - elsif - - line[0] == "-" + - elsif line[0] == "-" - line_old += 1 - else - line_new += 1 - line_old += 1 - diff --git a/app/views/dashboard/index.html.haml b/app/views/dashboard/index.html.haml index eb2122df..8d48d1f7 100644 --- a/app/views/dashboard/index.html.haml +++ b/app/views/dashboard/index.html.haml @@ -23,7 +23,7 @@ .project-box.project-updates.ui-box.ui-box-small.ui-box-big %h3= project.name .data - - project.updates.each do |update| + - project.updates(4).each do |update| %a.project-update{:href => dashboard_feed_path(project, update)} = image_tag gravatar_icon(update.author_email), :class => "left", :width => 40 %span.update-title @@ -34,7 +34,5 @@ = time_ago_in_words(update.created_at) ago %br - / .project-update - / .project-updates / #news-feed / #dashboard-content diff --git a/app/views/issues/_form.html.haml b/app/views/issues/_form.html.haml index 80f19d62..ffcdc028 100644 --- a/app/views/issues/_form.html.haml +++ b/app/views/issues/_form.html.haml @@ -5,24 +5,21 @@ - @issue.errors.full_messages.each do |msg| %li= msg - .span-8 + .form-row = f.label :title = f.text_area :title, :style => "width:450px; height:100px", :maxlength => 255 - -#.span-8 - -#= f.label :content - -#= f.text_area :content, :style => "width:450px; height:130px" - .span-8.append-bottom + .form-row = f.label :assignee_id = f.select(:assignee_id, @project.users.all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }) - .span-1 + .form-row = f.label :critical, "Critical" %br = f.check_box :critical - unless @issue.new_record? - .span-2.right + .form-row = f.label :closed %br = f.check_box :closed %hr - .span-6 + .form-row = f.submit 'Save', :class => "lbutton vm" diff --git a/app/views/issues/_issues.html.haml b/app/views/issues/_issues.html.haml index d758fed5..eb0cae66 100644 --- a/app/views/issues/_issues.html.haml +++ b/app/views/issues/_issues.html.haml @@ -1,14 +1,5 @@ -%table.round-borders#issues-table - %thead - - if can?(current_user, :admin_issue, @project) && !params[:f] || params[:f] == "0" - %th - %th Assignee - %th ID - %th Title - %th Closed? +- @issues.critical.each do |issue| + = render(:partial => 'show', :locals => {:issue => issue}) - - @issues.critical.each do |issue| - = render(:partial => 'show', :locals => {:issue => issue}) - - - @issues.non_critical.each do |issue| - = render(:partial => 'show', :locals => {:issue => issue}) +- @issues.non_critical.each do |issue| + = render(:partial => 'show', :locals => {:issue => issue}) diff --git a/app/views/issues/_show.html.haml b/app/views/issues/_show.html.haml index 72b99b04..de8e8f76 100644 --- a/app/views/issues/_show.html.haml +++ b/app/views/issues/_show.html.haml @@ -1,37 +1,26 @@ %tr{ :id => dom_id(issue), :class => "issue #{issue.critical ? "critical" : ""}", :url => project_issue_path(@project, issue) } - - if can?(current_user, :admin_issue, @project) && (!params[:f] || params[:f] == "0") - %td - = image_tag "move.png" , :class => [:handle, :left] %td - = image_tag gravatar_icon(issue.assignee.email), :class => "left", :width => 40, :style => "padding:0 5px;" - = issue.assignee.name - %td ##{issue.id} - %td - = truncate(html_escape(issue.title), :length => 200) + %strong.issue-number{:class => sort_class}= "##{issue.id}" + %span + = truncate(html_escape(issue.title), :length => fixed_mode? ? 100 : 200) %br %br - - if issue.critical - %span.tag.high critical - - if issue.today? - %span.tag.today today - - .right - - if can?(current_user, :admin_issue, @project) || issue.author == current_user - = link_to 'Edit', edit_project_issue_path(@project, issue), :class => "cgray", :remote => true - - if can?(current_user, :admin_issue, @project) || issue.author == current_user -   - = link_to 'Destroy', [@project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "cred delete-issue negative", :id => "destroy_issue_#{issue.id}" - - -#- if issue.author == current_user - -#%span.tag.yours yours - -#- if issue.notes.count > 0 - -#%span.tag.notes - -#= issue.notes.count - -#notes - %td - - if can? current_user, :write_issue, @project - = form_for([@project, issue], :remote => true) do |f| - = f.check_box :closed, :onclick => "$(this).parent().submit();" - = hidden_field_tag :status_only, true - - else - = check_box_tag "closed", 1, issue.closed, :disabled => true + %div.note-author + %strong= issue.assignee.name + %cite.cgray + = time_ago_in_words(issue.updated_at) + ago + - if issue.critical + %span.tag.high critical + - if issue.today? + %span.tag.today today + .right.action-links + - if can? current_user, :write_issue, issue + - if issue.closed + = link_to 'Reopen', project_issue_path(@project, issue, :issue => {:closed => false }, :status_only => true), :method => :put, :class => "cgray", :remote => true + - else + = link_to 'Resolve', project_issue_path(@project, issue, :issue => {:closed => true }, :status_only => true), :method => :put, :class => "cgray", :remote => true + - if can? current_user, :write_issue, issue + = link_to 'Edit', edit_project_issue_path(@project, issue), :class => "cgray edit-issue-link", :remote => true + - if can?(current_user, :admin_issue, @project) || issue.author == current_user + = link_to 'Destroy', [@project, issue], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "cred delete-issue negative", :id => "destroy_issue_#{issue.id}" diff --git a/app/views/issues/create.js.haml b/app/views/issues/create.js.haml index 3713a8af..b8043290 100644 --- a/app/views/issues/create.js.haml +++ b/app/views/issues/create.js.haml @@ -1,6 +1,7 @@ - if @issue.valid? :plain $("#new_issue_dialog").dialog("close"); + $("#issues-table").prepend("#{escape_javascript(render(:partial => 'show', :locals => {:issue => @issue} ))}"); $.ajax({type: "GET", url: location.href, dataType: "script"}); - else :plain diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index 21e455b9..89b7b2c4 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -1,33 +1,42 @@ -%div - .top_panel_issues - - if can? current_user, :write_issue, @project - %div{:class => "left", :style => "margin-right: 10px;" } - = link_to 'New Issue', new_project_issue_path(@project), :remote => true, :class => "lbutton vm" - = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :class => :left, :id => "issue_search_form" do - = hidden_field_tag :project_id, @project.id, { :id => 'project_id' } - = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } +%div#issues-table-holder + %table.round-borders#issues-table + %thead + %th + .top_panel_issues + - if can? current_user, :write_issue, @project + %div{:class => "left", :style => "margin-right: 10px;" } + = link_to 'New Issue', new_project_issue_path(@project), :remote => true, :class => "lbutton vm" + = form_tag search_project_issues_path(@project), :method => :get, :remote => true, :class => :left, :id => "issue_search_form" do + = hidden_field_tag :project_id, @project.id, { :id => 'project_id' } + = search_field_tag :issue_search, nil, { :placeholder => 'Search', :class => 'issue_search' } - .right.issues_filter - = form_tag project_issues_path(@project), :method => :get do - .left - = radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "this.form.submit()", :id => "open_issues", :class => "status" - = label_tag "open_issues","Open" - .left - = radio_button_tag :f, 2, params[:f] == "2", :onclick => "this.form.submit()", :id => "closed_issues", :class => "status" - = label_tag "closed_issues","Closed" - .left - = radio_button_tag :f, 3, params[:f] == "3", :onclick => "this.form.submit()", :id => "my_issues", :class => "status" - = label_tag "my_issues","To Me" - .left - = radio_button_tag :f, 1, params[:f] == "1", :onclick => "this.form.submit()", :id => "all_issues", :class => "status" - = label_tag "all_issues","All" + .right.issues_filter + = form_tag project_issues_path(@project), :method => :get do + .left + = radio_button_tag :f, 0, (params[:f] || "0") == "0", :onclick => "setIssueFilter(this.form, 0)", :id => "open_issues", :class => "status" + = label_tag "open_issues","Open" + .left + = radio_button_tag :f, 2, params[:f] == "2", :onclick => "setIssueFilter(this.form, 2)", :id => "closed_issues", :class => "status" + = label_tag "closed_issues","Closed" + .left + = radio_button_tag :f, 3, params[:f] == "3", :onclick => "setIssueFilter(this.form, 3)", :id => "my_issues", :class => "status" + = label_tag "my_issues","To Me" + .left + = radio_button_tag :f, 1, params[:f] == "1", :onclick => "setIssueFilter(this.form, 1)", :id => "all_issues", :class => "status" + = label_tag "all_issues","All" - #issues-table-holder= render "issues" + = render "issues" %br :javascript var href = $('.issue_search').parent().attr('action'); var last_terms = ''; + + var setIssueFilter = function(form, value){ + $.cookie('issue_filter', value, { expires: 140 }); + form.submit(); + } + $('.issue_search').keyup(function() { var terms = $(this).val(); var project_id = $('#project_id').val(); @@ -37,7 +46,7 @@ if (terms.length >= 2 || terms.length == 0) { $.get(href, { 'status': status, 'terms': terms, project: project_id }, function(response) { - $('#issues-table').html(response); + $('#issues-table tbody').html(response); setSortable(); }); } diff --git a/app/views/issues/index.js.haml b/app/views/issues/index.js.haml index bc18ac15..a08ffe5a 100644 --- a/app/views/issues/index.js.haml +++ b/app/views/issues/index.js.haml @@ -1,3 +1,3 @@ :plain - $('#issues-table-holder').html("#{escape_javascript(render('issues'))}"); + $('#issues-table tbody').html("#{escape_javascript(render('issues'))}"); setSortable(); diff --git a/app/views/keys/_form.html.haml b/app/views/keys/_form.html.haml index 7d3e14ef..a49164cf 100644 --- a/app/views/keys/_form.html.haml +++ b/app/views/keys/_form.html.haml @@ -5,12 +5,12 @@ - @key.errors.full_messages.each do |msg| %li= msg - .span-6 + .form-row = f.label :title = f.text_field :title, :style => "width:300px" - .span-6 + .form-row = f.label :key = f.text_area :key, :style => "width:300px; height:130px" - .span-6 + .form-row = f.submit 'Save', :class => "lbutton vm" diff --git a/app/views/layouts/project.html.haml b/app/views/layouts/project.html.haml index 984ff4d0..0550d89e 100644 --- a/app/views/layouts/project.html.haml +++ b/app/views/layouts/project.html.haml @@ -25,7 +25,7 @@ Team - if @project.users_projects.count > 0 %span{ :class => "number" }= @project.users_projects.count - = link_to project_issues_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do + = link_to project_issues_filter_path(@project), :class => (controller.controller_name == "issues") ? "current" : nil do Issues - if @project.issues.opened.count > 0 %span{ :class => "number" }= @project.issues.opened.count @@ -40,5 +40,7 @@ - if @commit = link_to truncate(commit_name(@project,@commit), :length => 15), project_commit_path(@project, :id => @commit.id), :class => current_page?(:controller => "commits", :action => "show", :project_id => @project, :id => @commit.id) ? "current" : nil + .medium-tags{:style => 'padding: 10px 0 0 10px; width: 210px;'}= tag_list @project + .project-content = yield diff --git a/app/views/notes/_form.html.haml b/app/views/notes/_form.html.haml index 86f0b779..a0def20b 100644 --- a/app/views/notes/_form.html.haml +++ b/app/views/notes/_form.html.haml @@ -10,13 +10,16 @@ %div = f.label :note - %cite + %cite.cgray markdown supported + %br %br = f.text_area :note, :size => 255 - + %div.attach_holder + %br = f.label :attachment - %cite (less than 10 MB) + %cite.cgray (less than 10 MB) + %br %br = f.file_field :attachment diff --git a/app/views/profile/password.html.haml b/app/views/profile/password.html.haml index f77d3855..3e82143d 100644 --- a/app/views/profile/password.html.haml +++ b/app/views/profile/password.html.haml @@ -7,11 +7,11 @@ - @user.errors.full_messages.each do |msg| %li= msg - .div + .form-row = f.label :password %br = f.password_field :password - .div + .form-row = f.label :password_confirmation %br = f.password_field :password_confirmation diff --git a/app/views/profile/show.html.haml b/app/views/profile/show.html.haml index ef23a169..bf45f440 100644 --- a/app/views/profile/show.html.haml +++ b/app/views/profile/show.html.haml @@ -16,15 +16,15 @@ - @user.errors.full_messages.each do |msg| %li= msg - .div + .form-row = f.label :skype %br = f.text_field :skype - .div + .form-row = f.label :linkedin %br = f.text_field :linkedin - .div + .form-row = f.label :twitter %br = f.text_field :twitter diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml index 2ddfda48..cc7a933b 100644 --- a/app/views/projects/_form.html.haml +++ b/app/views/projects/_form.html.haml @@ -1,7 +1,9 @@ = form_for(@project, :remote => true) do |f| %div.form_content - unless @project.new_record? - %h1 Edit Project + %h2.icon + %span + = @project.name - if @project.errors.any? #error_explanation %h2 @@ -10,7 +12,7 @@ %ul - @project.errors.full_messages.each do |msg| %li= msg - %table.round-borders + %table %tr %td= f.label :name %td= f.text_field :name, :placeholder => "Example Project" @@ -29,15 +31,13 @@ %tr %td= f.label :tag_list %td= f.text_area :tag_list, :placeholder => "project tags", :style => "height:50px", :id => :tag_field + %tr + %td= f.label :description + %td= f.text_area :description, :placeholder => "project description", :style => "height:50px" - .field - = f.label :description - %br/ - = f.text_area :description, :style => "height:140px;width:932px;" - .clear - %hr.prepend-top + %br .actions - = f.submit :class => "lbutton vm" + = f.submit :class => "button" %div{ :class => "ajax_loader", :style => "display:none;height:200px;"} %center @@ -55,16 +55,5 @@ :javascript $(function(){ - var tag_field = $('#tag_field').tagify(); - - tag_field.tagify('inputField').autocomplete({ - source: '/tags.json' - }); - - - $('form').submit( function() { - var tag_field = $('#tag_field') - tag_field.val( tag_field.tagify('serialize') ); - return true; - }); + taggifyForm(); }) diff --git a/app/views/projects/_list.html.haml b/app/views/projects/_list.html.haml index 7976b11f..f41fb3e4 100644 --- a/app/views/projects/_list.html.haml +++ b/app/views/projects/_list.html.haml @@ -12,9 +12,8 @@ %tr{ :class => "project", :url => project_path(project) } %td = project.name - .small-tags - - project.tag_list.each do |tag| - = link_to tag, "/tags/#{tag}" + .small-tags= tag_list project + %td= truncate project.url_to_repo %td= project.code diff --git a/app/views/projects/_recent_commits.html.haml b/app/views/projects/_recent_commits.html.haml index b34470d6..5e9eca8d 100644 --- a/app/views/projects/_recent_commits.html.haml +++ b/app/views/projects/_recent_commits.html.haml @@ -1,18 +1,32 @@ -- @commits.each do |commit| - %div.commit - - if commit.author.email - = image_tag gravatar_icon(commit.author.email), :class => "left", :width => 40, :style => "padding-right:5px;" - - else - = image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;" - %p{:style => "margin-bottom: 3px;"} - %strong - = link_to truncate(commit.safe_message, :length => 60), project_commit_path(@project, :id => commit.id) - - %span - %span.author - = commit.author.name.force_encoding("UTF-8") - %cite - = time_ago_in_words(commit.committed_date) - ago - %br +%table + %thead + %th + Commits + .filter.right + = form_tag project_path(@project), :method => :get, :class => "right" do + .left + = radio_button_tag :view, "recent", (params[:view] || "recent") == "recent", :onclick => "this.form.submit()", :id => "recent_view" + = label_tag "recent_view","Recent" + .left + = radio_button_tag :view, "day", params[:view] == "day", :onclick => "this.form.submit()", :id => "day_view" + = label_tag "day_view","Today" + .left + = radio_button_tag :view, "week", params[:view] == "week", :onclick => "this.form.submit()", :id => "week_view" + = label_tag "week_view","Week" + - @commits.each do |commit| + %tr + %td + %div.commit + - if commit.author.email + = image_tag gravatar_icon(commit.author.email), :class => "left", :width => 40, :style => "padding-right:5px;" + - else + = image_tag "no_avatar.png", :class => "left", :width => 40, :style => "padding-right:5px;" + .title + %p= link_to truncate(commit.safe_message, :length => fixed_mode? ? 40 : 100), project_commit_path(@project, :id => commit.id) + %span + %span.author + %strong= commit.author.name.force_encoding("UTF-8") + %cite.cgray + = time_ago_in_words(commit.committed_date) + ago diff --git a/app/views/projects/_recent_messages.html.haml b/app/views/projects/_recent_messages.html.haml index e5fb28b9..1a8c8c97 100644 --- a/app/views/projects/_recent_messages.html.haml +++ b/app/views/projects/_recent_messages.html.haml @@ -3,50 +3,25 @@ - parent = load_note_parent(id, type, @project) - next unless parent - - case type - - when "Issue" - - css_class = "dash_issue" - - issue = parent - - item_code = issue.author.email - - link_item_name = truncate(issue.title, :length => 50) - - link_to_item = project_issue_path(@project, issue) - - when "Snippet" - - css_class = "dash_snippet" - - item_code = parent.author.email - - link_item_name = parent.title - - link_to_item = project_snippet_path(@project, parent) - - when "Commit" - - css_class = "dash_commit" - - commit = parent - - item_code = commit.author.email - - link_item_name = truncate(commit.safe_message, :length => 50) - - link_to_item = project_commit_path(@project, :id => commit.id) - - else - - css_class = "dash_wall" - - item_code = @project.name - - link_item_name = "Project Wall" - - link_to_item = wall_project_path(@project) - - %div{ :class => "recent_message_parent #{css_class}"} - = image_tag gravatar_icon(item_code), :class => "left", :width => 40 - %h4 - = link_to(link_item_name, link_to_item) - %span - = type - .clear - - notes.sort {|x,y| x.updated_at <=> y.updated_at }.each do |note| - %div.message - = image_tag gravatar_icon(note.author.email), :class => "left", :width => 24, :style => "padding-right:5px;" - %p{:style => "margin-bottom: 3px;"} - %span.author - = note.author.name - = link_to markdown(truncate(note.note, :length => 200)), link_to_item + "#note_#{note.id}" - - if note.attachment.url - %br - Attachment: - = link_to note.attachment_identifier, note.attachment.url - %br - %br - .append-bottom -   - .clear + %table + %thead + %th + %div{ :class => "recent_message_parent"} + = link_to(truncate(dashboard_feed_title(parent), :length => fixed_mode? ? 40 : 100 ), dashboard_feed_path(@project, parent)) + - notes.sort {|x,y| y.updated_at <=> x.updated_at }.each do |note| + %tr + %td + %div.message + = image_tag gravatar_icon(note.author_email), :class => "left", :width => 40, :style => "padding-right:5px;" + %div.title + = link_to markdown(truncate(note.note, :length => fixed_mode? ? 40 : 100)), dashboard_feed_path(@project, parent) + "#note_#{note.id}" + - if note.attachment.url + %br + Attachment: + = link_to note.attachment_identifier, note.attachment.url + %div.author + %strong= note.author_name + %cite.cgray + = time_ago_in_words(note.updated_at) + ago + %br diff --git a/app/views/projects/_tile.html.haml b/app/views/projects/_tile.html.haml index cc891f63..1f2a4a97 100644 --- a/app/views/projects/_tile.html.haml +++ b/app/views/projects/_tile.html.haml @@ -13,9 +13,7 @@ - last_note = project.notes.last = last_note ? last_note.created_at.stamp("24 Aug, 2011") : "Never" - %p.small-tags - - project.tag_list.each do |tag| - = link_to tag, "/tags/#{tag}" + %p.small-tags= tag_list project .buttons %a.browse-code.button.yellow{:href => tree_project_path(project)} Browse code diff --git a/app/views/projects/new.html.erb b/app/views/projects/new.html.erb deleted file mode 100644 index 2d343636..00000000 --- a/app/views/projects/new.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= render 'form' %> diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml new file mode 100644 index 00000000..65639a53 --- /dev/null +++ b/app/views/projects/new.html.haml @@ -0,0 +1,8 @@ +.new-project-hodler + .container_4 + %h2.icon + %span + New Project + + %div.clear + = render 'form' diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index ff352437..f693cb9d 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -1,28 +1,11 @@ -%div - %h2.left History - .right - = form_tag project_path(@project), :method => :get do - .span-2 - = radio_button_tag :view, "recent", (params[:view] || "recent") == "recent", :onclick => "this.form.submit()", :id => "recent_view" - = label_tag "recent_view","Recent" - .span-2 - = radio_button_tag :view, "day", params[:view] == "day", :onclick => "this.form.submit()", :id => "day_view" - = label_tag "day_view","Today" - .span-2 - = radio_button_tag :view, "week", params[:view] == "week", :onclick => "this.form.submit()", :id => "week_view" - = label_tag "week_view","Week" - .clear - %hr .left.width-49p - %h3 Commits =render "projects/recent_commits" .right.width-49p - %h3 Talk =render "projects/recent_messages" :javascript function updateDashboard(){ - $('#content-container').load("#{escape_javascript(project_path(@project))} #content-container>*"); + $('.project-content').load("#{escape_javascript(project_path(@project))} .project-content>*"); } setInterval("updateDashboard()", 300000); diff --git a/app/views/tags/index.html.haml b/app/views/tags/index.html.haml index c83d62c7..ba16b92b 100644 --- a/app/views/tags/index.html.haml +++ b/app/views/tags/index.html.haml @@ -7,5 +7,5 @@ .tags-list - @tags.all.each do |tag| - = link_to "#{tag.name}(#{tag.count})", "/tags/#{tag.name}" + = link_to "#{tag.name}(#{tag.count})", tag_path(name) diff --git a/public/.directory b/public/.directory new file mode 100644 index 00000000..8bb0b816 --- /dev/null +++ b/public/.directory @@ -0,0 +1,4 @@ +[Dolphin] +ShowPreview=true +Timestamp=2011,11,6,21,7,47 +Version=2 diff --git a/spec/requests/issues_spec.rb b/spec/requests/issues_spec.rb index b5d6f1bc..235b0b22 100644 --- a/spec/requests/issues_spec.rb +++ b/spec/requests/issues_spec.rb @@ -158,7 +158,6 @@ describe "Issues" do it "should have valid show page for issue" do page.should have_content @issue.title page.should have_content @user.name - page.should have_content "today" end end @@ -169,6 +168,7 @@ describe "Issues" do :assignee => @user, :project => project visit project_issues_path(project) + page.execute_script("$('.action-links').css('display', 'block');") click_link "Edit" end diff --git a/vendor/assets/stylesheets/jquery-ui/jquery-ui.css b/vendor/assets/stylesheets/jquery-ui/jquery-ui.css index a6b4c363..a94efee4 100644 --- a/vendor/assets/stylesheets/jquery-ui/jquery-ui.css +++ b/vendor/assets/stylesheets/jquery-ui/jquery-ui.css @@ -59,7 +59,7 @@ .ui-widget { font-family: "Helvetica Neue",Arial,Helvetica,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #dddddd; background: #ffffff url(ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } +.ui-widget-content { border: 1px solid #474D57; background: #ffffff url(ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } @@ -445,8 +445,8 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad * http://docs.jquery.com/UI/Dialog#theming */ .ui-dialog { position: absolute; padding: 0; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; background: #F7F7F7; color:#555; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0;} +.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; background: #474D57; color:#eee; } +.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; text-shadow: none;} .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; background:#eaeaea} .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }