project tile view
This commit is contained in:
parent
94cdafe79a
commit
eefe826f83
13 changed files with 131 additions and 27 deletions
BIN
app/assets/images/list_view_icon.jpg
Normal file
BIN
app/assets/images/list_view_icon.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 357 B |
41
app/assets/javascripts/jquery.cookie.js
Normal file
41
app/assets/javascripts/jquery.cookie.js
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/**
|
||||||
|
* jQuery Cookie plugin
|
||||||
|
*
|
||||||
|
* Copyright (c) 2010 Klaus Hartl (stilbuero.de)
|
||||||
|
* Dual licensed under the MIT and GPL licenses:
|
||||||
|
* http://www.opensource.org/licenses/mit-license.php
|
||||||
|
* http://www.gnu.org/licenses/gpl.html
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
jQuery.cookie = function (key, value, options) {
|
||||||
|
|
||||||
|
// key and at least value given, set cookie...
|
||||||
|
if (arguments.length > 1 && String(value) !== "[object Object]") {
|
||||||
|
options = jQuery.extend({}, options);
|
||||||
|
|
||||||
|
if (value === null || value === undefined) {
|
||||||
|
options.expires = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof options.expires === 'number') {
|
||||||
|
var days = options.expires, t = options.expires = new Date();
|
||||||
|
t.setDate(t.getDate() + days);
|
||||||
|
}
|
||||||
|
|
||||||
|
value = String(value);
|
||||||
|
|
||||||
|
return (document.cookie = [
|
||||||
|
encodeURIComponent(key), '=',
|
||||||
|
options.raw ? value : encodeURIComponent(value),
|
||||||
|
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
|
||||||
|
options.path ? '; path=' + options.path : '',
|
||||||
|
options.domain ? '; domain=' + options.domain : '',
|
||||||
|
options.secure ? '; secure' : ''
|
||||||
|
].join(''));
|
||||||
|
}
|
||||||
|
|
||||||
|
// key and possibly options given, get cookie...
|
||||||
|
options = value || {};
|
||||||
|
var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
|
||||||
|
return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
|
||||||
|
};
|
|
@ -525,3 +525,17 @@ tbody tr:nth-child(2n) td, tbody tr.even td {
|
||||||
#user_projects_limit{
|
#user_projects_limit{
|
||||||
width: 60px;
|
width: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.project_thumb {
|
||||||
|
margin:20px 0;
|
||||||
|
width: 250px;
|
||||||
|
float:left;
|
||||||
|
padding:20px;
|
||||||
|
text-align:center;
|
||||||
|
p, h4 {
|
||||||
|
text-align:left;
|
||||||
|
}
|
||||||
|
.lbutton {
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,2 +1,5 @@
|
||||||
class DashboardController < ApplicationController
|
class DashboardController < ApplicationController
|
||||||
|
def index
|
||||||
|
@projects = current_user.projects.all
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
module ProjectsHelper
|
module ProjectsHelper
|
||||||
|
def view_mode_style(type)
|
||||||
|
cookies["project_view"] ||= "tile"
|
||||||
|
cookies["project_view"] == type ? nil : "display:none"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,6 +33,10 @@ class User < ActiveRecord::Base
|
||||||
def can_create_project?
|
def can_create_project?
|
||||||
projects_limit >= my_own_projects.count
|
projects_limit >= my_own_projects.count
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def last_activity_project
|
||||||
|
projects.first
|
||||||
|
end
|
||||||
end
|
end
|
||||||
# == Schema Information
|
# == Schema Information
|
||||||
#
|
#
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
timeline
|
|
@ -21,6 +21,7 @@
|
||||||
= render :partial => "layouts/head_panel"
|
= render :partial => "layouts/head_panel"
|
||||||
.top_bar.container
|
.top_bar.container
|
||||||
= render :partial => "projects/top_menu" if @project && !@project.new_record?
|
= render :partial => "projects/top_menu" if @project && !@project.new_record?
|
||||||
|
= render :partial => "projects/projects_top_menu" if (controller.controller_name == "projects" && ["index", "new", "create"].include?(controller.action_name)) && !admin_namespace?
|
||||||
= render :partial => "profile/top_menu" if ["keys", "profile"].include?(controller.controller_name)
|
= render :partial => "profile/top_menu" if ["keys", "profile"].include?(controller.controller_name)
|
||||||
= render :partial => "admin/top_menu" if admin_namespace?
|
= render :partial => "admin/top_menu" if admin_namespace?
|
||||||
#content-container.container
|
#content-container.container
|
||||||
|
|
26
app/views/projects/_list.html.haml
Normal file
26
app/views/projects/_list.html.haml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
-#- if current_user.can_create_project?
|
||||||
|
= link_to 'New Project', new_project_path, :class => "lbutton vm"
|
||||||
|
|
||||||
|
%table.round-borders#projects-list
|
||||||
|
%tr
|
||||||
|
%th Name
|
||||||
|
%th Path
|
||||||
|
%th Code
|
||||||
|
%th Web
|
||||||
|
%th Git
|
||||||
|
%th Admin
|
||||||
|
%th Actions
|
||||||
|
|
||||||
|
- @projects.each do |project|
|
||||||
|
%tr{ :class => "project", :url => project_path(project) }
|
||||||
|
%td= project.name
|
||||||
|
%td= truncate project.url_to_repo
|
||||||
|
%td= project.code
|
||||||
|
%td= check_box_tag "read", 1, project.readers.include?(current_user), :disabled => :disabled
|
||||||
|
%td= check_box_tag "commit", 1, project.writers.include?(current_user), :disabled => :disabled
|
||||||
|
%td= check_box_tag "admin", 1, project.admins.include?(current_user), :disabled => :disabled
|
||||||
|
%td
|
||||||
|
-if can? current_user, :admin_project, project
|
||||||
|
= link_to 'Edit', edit_project_path(project), :class => "lbutton positive"
|
||||||
|
%br
|
||||||
|
|
16
app/views/projects/_projects_top_menu.html.haml
Normal file
16
app/views/projects/_projects_top_menu.html.haml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
%div.top_project_menu
|
||||||
|
%span= link_to 'All', projects_path, :class => current_page?(projects_path) ? "current" : nil
|
||||||
|
%span= link_to "New Project", new_project_path, :class => current_page?(:controller => "projects", :action => "new") ? "current" : nil
|
||||||
|
%span.right
|
||||||
|
= link_to_function(image_tag("list_view_icon.jpg"), "switchProjectView()", :style => "border:none;box-shadow:none;")
|
||||||
|
|
||||||
|
:javascript
|
||||||
|
function switchProjectView(){
|
||||||
|
$(".tile").toggle();
|
||||||
|
$(".list").toggle();
|
||||||
|
if($(".tile").is(":visible")){
|
||||||
|
$.cookie('project_view', 'tile', { expires: 14 });
|
||||||
|
} else {
|
||||||
|
$.cookie('project_view', 'list', { expires: 14 });
|
||||||
|
}
|
||||||
|
}
|
16
app/views/projects/_tile.html.haml
Normal file
16
app/views/projects/_tile.html.haml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
- @projects.in_groups_of(3, false) do |projects|
|
||||||
|
- projects.each_with_index do |project, i|
|
||||||
|
%div{ :class => "project_thumb round-borders", :style => i == 2 ? "" : "margin-right:30px;" }
|
||||||
|
%div{ :class => "project", :url => project_path(project) }
|
||||||
|
%h2
|
||||||
|
= image_tag gravatar_icon(project.name), :class => "left", :width => 40, :style => "padding-right:5px;"
|
||||||
|
= "/" + project.code
|
||||||
|
%p= project.name
|
||||||
|
%p= project.url_to_repo
|
||||||
|
-#%p
|
||||||
|
Commit –
|
||||||
|
= last_commit(project)
|
||||||
|
%hr
|
||||||
|
= link_to "Browse Code", tree_project_path(project), :class => "lbutton"
|
||||||
|
= link_to "Commits", project_commits_path(project), :class => "lbutton", :style => "float:right;width:80px;"
|
||||||
|
.clear
|
|
@ -1,5 +1,5 @@
|
||||||
- file = params[:path] ? File.join(params[:path], content.name) : content.name
|
- file = params[:path] ? File.join(params[:path], content.name) : content.name
|
||||||
- content_commit = @repo.log(@branch, file, :max_count => 1).last
|
- content_commit = @project.repo.log(@branch, file, :max_count => 1).last
|
||||||
- return unless content_commit
|
- return unless content_commit
|
||||||
%tr{ :class => "tree-item", :url => tree_file_project_path(@project, @commit.id, file) }
|
%tr{ :class => "tree-item", :url => tree_file_project_path(@project, @commit.id, file) }
|
||||||
%td.tree-item-file-name
|
%td.tree-item-file-name
|
||||||
|
|
|
@ -1,26 +1,4 @@
|
||||||
- if current_user.can_create_project?
|
%div{:class => "tile", :style => view_mode_style("tile")}
|
||||||
= link_to 'New Project', new_project_path, :class => "lbutton vm"
|
= render "tile"
|
||||||
|
%div{:class => "list", :style => view_mode_style("list")}
|
||||||
%table.round-borders#projects-list
|
= render "list"
|
||||||
%tr
|
|
||||||
%th Name
|
|
||||||
%th Path
|
|
||||||
%th Code
|
|
||||||
%th Web
|
|
||||||
%th Git
|
|
||||||
%th Admin
|
|
||||||
%th Actions
|
|
||||||
|
|
||||||
- @projects.each do |project|
|
|
||||||
%tr{ :class => "project", :url => project_path(project) }
|
|
||||||
%td= project.name
|
|
||||||
%td= truncate project.url_to_repo
|
|
||||||
%td= project.code
|
|
||||||
%td= check_box_tag "read", 1, project.readers.include?(current_user), :disabled => :disabled
|
|
||||||
%td= check_box_tag "commit", 1, project.writers.include?(current_user), :disabled => :disabled
|
|
||||||
%td= check_box_tag "admin", 1, project.admins.include?(current_user), :disabled => :disabled
|
|
||||||
%td
|
|
||||||
-if can? current_user, :admin_project, project
|
|
||||||
= link_to 'Edit', edit_project_path(project), :class => "lbutton positive"
|
|
||||||
%br
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue