wall login in progress

This commit is contained in:
gitlabhq 2011-11-04 09:37:38 -04:00
parent 687290a00d
commit ca1e3d0579
10 changed files with 110 additions and 74 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -20,6 +20,6 @@ $(function(){
$('select#tag').selectmenu({style:'popup', width:200}); $('select#tag').selectmenu({style:'popup', width:200});
}); });
function updatePage(){ function updatePage(data){
$.ajax({type: "GET", url: location.href, dataType: "script"}); $.ajax({type: "GET", url: location.href, data: data, dataType: "script"});
} }

View file

@ -0,0 +1,65 @@
var NoteList = {
first_id: 0,
last_id: 0,
resource_name: null,
init:
function(resource_name, first_id, last_id) {
this.resource_name = resource_name;
this.first_id = first_id;
this.last_id = last_id;
this.initRefresh();
this.initLoadMore();
},
getOld:
function() {
$('.loading').show();
$.ajax({
type: "GET",
url: location.href,
data: "first_id=" + this.first_id,
complete: function(){ $('.loading').hide()},
dataType: "script"});
},
append:
function(id, html) {
this.first_id = id;
$("#notes-list").append(html);
this.initLoadMore();
},
prepend:
function(id, html) {
this.last_id = id;
$("#notes-list").prepend(html);
},
getNew:
function() {
// refersh notes list
$.ajax({
type: "GET",
url: location.href,
data: "last_id=" + this.last_id,
dataType: "script"});
},
initRefresh:
function() {
// init timer
var int = setInterval("NoteList.getNew()", 20000);
},
initLoadMore:
function() {
$(window).bind('scroll', function(){
if($(window).scrollTop() == $(document).height() - $(window).height()){
$(window).unbind('scroll');
NoteList.getOld();
}
});
}
}

View file

@ -421,31 +421,6 @@ input.ssh_project_url {
list-style:none; list-style:none;
margin:0px; margin:0px;
padding:0px; padding:0px;
li {
display:list-item;
padding:8px;
margin:0px;
background: #F7FBFC;
border-top: 1px solid #E2EAEE;
&:first-child {
border-top: none;
}
&:nth-child(2n+1) {
background: white;
}
p {
margin-bottom: 4px;
font-size: 13px;
color:#111;
}
}
cite {
&.ago {
color:#666;
}
}
} }
.notes_count { .notes_count {
@ -460,14 +435,6 @@ input.ssh_project_url {
right: 6px; right: 6px;
top: 6px; top: 6px;
} }
.note_author {
float:left;
width:60px;
}
.note_content {
float:left;
width:650px;
}
.issue_notes { .issue_notes {
.note_content { .note_content {
@ -556,8 +523,7 @@ input.ssh_project_url {
} }
.commit, .commit,
.message, .message{
#notes-list{
.author { .author {
background: #eaeaea; background: #eaeaea;
color: #333; color: #333;
@ -719,3 +685,12 @@ table.highlighttable pre{
.project-refs-select { .project-refs-select {
width:200px; width:200px;
} }
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;}
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;}

View file

@ -86,12 +86,14 @@ class ProjectsController < ApplicationController
def wall def wall
@note = Note.new @note = Note.new
@notes = @project.common_notes.order("created_at DESC") @notes = @project.common_notes.order("created_at DESC")
@notes = @notes.fresh.limit(20)
@notes = case params[:view] respond_to do |format|
when "week" then @notes.since((Date.today - 7.days).at_beginning_of_day) format.html
when "all" then @notes.all format.js do
when "day" then @notes.since(Date.today.at_beginning_of_day) @notes = @notes.where("id > ?", params[:last_id]) if params[:last_id]
else @notes.fresh.limit(10) @notes = @notes.where("id < ?", params[:first_id]) if params[:first_id]
end
end end
end end

View file

@ -20,8 +20,8 @@
$("#submit_note").removeAttr("disabled"); $("#submit_note").removeAttr("disabled");
}) })
- if ["issues", "projects"].include?(controller.controller_name) -#- if ["issues", "projects"].include?(controller.controller_name)
:javascript :javascript
$(function(){ $(function(){
var int =self.setInterval("updatePage()", 20000); var int =self.setInterval("updatePage('ref=#{params[:ref]}')", 20000);
}); });

View file

@ -1,17 +1,15 @@
%li{:id => dom_id(note)} %li{:id => dom_id(note), :class => "note"}
%div.note_author
= image_tag gravatar_icon(note.author.email), :class => "left", :width => 40, :style => "padding-right:5px;" = image_tag gravatar_icon(note.author.email), :class => "left", :width => 40, :style => "padding-right:5px;"
%div.note_content.left %div.note-author
%strong= note.author_name
= time_ago_in_words(note.updated_at)
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
= link_to 'Remove', [@project, note], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "lbutton delete-note right negative"
%div.note-title
= markdown(note.note) = markdown(note.note)
- if note.attachment.url - if note.attachment.url
Attachment: Attachment:
= link_to note.attachment_identifier, note.attachment.url, :target => "_blank" = link_to note.attachment_identifier, note.attachment.url, :target => "_blank"
%br %br
%span.author= note.author.name
%cite.ago
= time_ago_in_words(note.updated_at)
ago
%br
- if(note.author_id == current_user.id) || can?(current_user, :admin_note, @project)
= link_to 'Remove', [@project, note], :confirm => 'Are you sure?', :method => :delete, :remote => true, :class => "lbutton delete-note right negative"
.clear .clear

View file

@ -1,7 +1,6 @@
- if @note.valid? - if @note.valid?
:plain :plain
$("#new_note .errors").remove(); $("#new_note .errors").remove();
updatePage();
$('#note_note').val(""); $('#note_note').val("");
- else - else
:plain :plain

View file

@ -1,29 +1,19 @@
%div.wall_page %div.wall_page
- if can? current_user, :write_note, @project - if can? current_user, :write_note, @project
= render "notes/form" = render "notes/form"
.right
= form_tag wall_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"
.span-2
= radio_button_tag :view, "all", params[:view] == "all", :onclick => "this.form.submit()", :id => "all_view"
= label_tag "all_view","All"
.clear .clear
%br
%hr %hr
= render "notes/notes" = render "notes/notes"
.loading{ :style => "display:none;"}
%center= image_tag "ajax-loader.gif"
:javascript :javascript
$(function(){ $(function(){
$("#note_note").live("click", function(){ $("#note_note").live("click", function(){
$(this).css("height", "100px"); $(this).css("height", "100px");
$('.attach_holder').show(); $('.attach_holder').show();
}); });
NoteList.init("wall", #{@notes.last.id}, #{@notes.first.id});
}); });

View file

@ -1,2 +1,9 @@
:plain - unless @notes.blank?
$("#notes-list").html("#{escape_javascript(render(:partial => 'notes/notes_list'))}");
- if params[:last_id]
:plain
NoteList.prepend(#{@notes.first.id}, "#{escape_javascript(render(:partial => 'notes/notes_list'))}");
- if params[:first_id]
:plain
NoteList.append(#{@notes.last.id}, "#{escape_javascript(render(:partial => 'notes/notes_list'))}");