Commit f1e6d9be authored by Nihad Abbasov's avatar Nihad Abbasov

Merge branch 'assets-refactoring' into dev

Conflicts:
	app/controllers/issues_controller.rb
	app/views/issues/index.html.haml
parents e0f4a37f f1e25f25
......@@ -5,11 +5,14 @@
// the compiled file.
//
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require jquery.ui.selectmenu
//= require jquery.cookie
//= require_tree .
$(function(){
$(".one_click_select").click(function(){
$(".one_click_select").live("click", function(){
$(this).select();
});
......
This diff is collapsed.
......@@ -8,7 +8,7 @@ $(document).ready(function(){
e.stopPropagation();
$(this).find("td.tree-item-file-name a").click();
return false;
}
}
});
$("#projects-list .project").live('click', function(e){
......
......@@ -2,6 +2,8 @@
* This is a manifest file that'll automatically include all the stylesheets available in this directory
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
* the top of the compiled file, but it's generally better to create a new file per style scope.
*= require jquery-ui/jquery-ui
*= require jquery-ui/jquery.ui.selectmenu
*= require_self
*= require_tree .
*= require_tree .
*/
@mixin round-borders-all($radius) {
@mixin round-borders-all($radius) {
border: 1px solid #eaeaea;
-moz-border-radius: $radius;
-webkit-border-radius: $radius;
......@@ -28,11 +28,11 @@ td.linenos{
.highlight pre{
}
.linenodiv pre {
.linenodiv pre {
white-space:pre-line;
}
td.linenos {
td.linenos {
background:#ECECEC;
color:#777;
padding:10px 0px 0px 10px;
......@@ -42,7 +42,7 @@ td.linenos {
}
td.code .highlight {
td.code .highlight {
overflow: auto;
}
table.highlighttable pre{
......@@ -53,9 +53,8 @@ table.highlighttable pre{
text-align:left;
}
.git-empty .highlight {
@include round-borders-all(4px);
@include round-borders-all(4px);
background:#eee;
padding:5px;
//overflow-x:scroll;
......@@ -71,10 +70,9 @@ table.highlighttable pre{
.shadow{
-webkit-box-shadow:0 5px 15px #000;
-moz-box-shadow:0 5px 15px #000;
box-shadow:0 5px 15px #000;
box-shadow:0 5px 15px #000;
}
.hll { background-color: #ffffff }
.c { color: #888888; font-style: italic } /* Comment */
.err { color: #a61717; background-color: #e3d2d2 } /* Error */
......@@ -105,7 +103,7 @@ table.highlighttable pre{
.highlight .nb{color:#0086B3;} /* Name.Builtin */
.highlight .nc{color:#458;font-weight:bold;} /* Name.Class */
.highlight .no{color:#008080;} /* Name.Constant */
.highlight .ni{color:#800080;}
.highlight .ni{color:#800080;}
.highlight .ne{color:#900;font-weight:bold;} /* Name.Exception */
.highlight .nf{color:#900;font-weight:bold;} /* Name.Function */
.highlight .nn{color:#005;font-weight:bold;} /* Name.Namespace */
......
This diff is collapsed.
......@@ -20,7 +20,7 @@ class Admin::MailerController < ApplicationController
else
render :file => 'notify/note_wall_email.html.haml', :layout => 'notify'
end
rescue
rescue
render :text => "Preview not avaialble"
end
......@@ -29,7 +29,7 @@ class Admin::MailerController < ApplicationController
@password = "DHasJKDHAS!"
render :file => 'notify/new_user_email.html.haml', :layout => 'notify'
rescue
rescue
render :text => "Preview not avaialble"
end
......@@ -38,7 +38,7 @@ class Admin::MailerController < ApplicationController
@user = @issue.assignee
@project = @issue.project
render :file => 'notify/new_issue_email.html.haml', :layout => 'notify'
rescue
rescue
render :text => "Preview not avaialble"
end
end
......@@ -36,7 +36,7 @@ class Admin::UsersController < ApplicationController
def create
admin = params[:user].delete("admin")
@admin_user = User.new(params[:user])
@admin_user = User.new(params[:user])
@admin_user.admin = (admin && admin.to_i > 0)
respond_to do |format|
......@@ -54,8 +54,8 @@ class Admin::UsersController < ApplicationController
def update
admin = params[:user].delete("admin")
if params[:user][:password].empty?
params[:user].delete(:password)
params[:user].delete(:password_confirmation)
params[:user].delete(:password)
params[:user].delete(:password_confirmation)
end
@admin_user = User.find(params[:id])
......
......@@ -8,7 +8,7 @@ class ApplicationController < ActionController::Base
render :file => File.join(Rails.root, "public", "gitosis_error"), :layout => false
end
protected
protected
def abilities
@abilities ||= Six.new
......@@ -18,7 +18,7 @@ class ApplicationController < ActionController::Base
abilities.allowed?(object, action, subject)
end
def project
def project
@project ||= Project.find_by_code(params[:project_id])
end
......@@ -55,7 +55,7 @@ class ApplicationController < ActionController::Base
@tag = unless params[:tag].blank?
params[:tag]
else
else
nil
end
......
class IssuesController < ApplicationController
before_filter :authenticate_user!
before_filter :project
before_filter :project
before_filter :issue, :only => [:edit, :update, :destroy, :show]
# Authorize
before_filter :add_project_abilities
before_filter :authorize_read_issue!
before_filter :authorize_write_issue!, :only => [:new, :create, :close, :edit, :update, :sort]
before_filter :authorize_write_issue!, :only => [:new, :create, :close, :edit, :update, :sort]
respond_to :js
......@@ -57,14 +57,13 @@ class IssuesController < ApplicationController
end
end
def destroy
return access_denied! unless can?(current_user, :admin_issue, @issue)
@issue.destroy
respond_to do |format|
format.js { render :nothing => true }
format.js { render :nothing => true }
end
end
......@@ -94,7 +93,7 @@ class IssuesController < ApplicationController
render :partial => 'issues'
end
protected
protected
def issue
@issue ||= @project.issues.find(params[:id])
......
......@@ -24,7 +24,7 @@ class KeysController < ApplicationController
respond_to do |format|
format.html { redirect_to keys_url }
format.js { render :nothing => true }
format.js { render :nothing => true }
end
end
end
class NotesController < ApplicationController
before_filter :project
before_filter :project
# Authorize
before_filter :add_project_abilities
before_filter :authorize_write_note!, :only => [:create]
before_filter :authorize_write_note!, :only => [:create]
respond_to :js
......@@ -15,10 +15,9 @@ class NotesController < ApplicationController
notify if params[:notify] == '1'
end
respond_to do |format|
format.html {redirect_to :back}
format.js
format.js
end
end
......@@ -30,11 +29,11 @@ class NotesController < ApplicationController
@note.destroy
respond_to do |format|
format.js { render :nothing => true }
format.js { render :nothing => true }
end
end
protected
protected
def notify
@project.users.reject { |u| u.id == current_user.id } .each do |u|
......
......@@ -14,7 +14,7 @@ class ProfileController < ApplicationController
end
def password_update
params[:user].reject!{ |k, v| k != "password" && k != "password_confirmation"}
params[:user].reject!{ |k, v| k != "password" && k != "password_confirmation"}
@user = current_user
if @user.update_attributes(params[:user])
......
class ProjectsController < ApplicationController
before_filter :project, :except => [:index, :new, :create]
before_filter :project, :except => [:index, :new, :create]
# Authorize
before_filter :add_project_abilities
before_filter :authorize_read_project!, :except => [:index, :new, :create]
before_filter :authorize_admin_project!, :only => [:edit, :update, :destroy]
before_filter :authorize_read_project!, :except => [:index, :new, :create]
before_filter :authorize_admin_project!, :only => [:edit, :update, :destroy]
before_filter :require_non_empty_project, :only => [:blob, :tree]
......@@ -23,7 +23,7 @@ class ProjectsController < ApplicationController
@project = Project.new(params[:project])
@project.owner = current_user
Project.transaction do
Project.transaction do
@project.save!
@project.users_projects.create!(:admin => true, :read => true, :write => true, :user => current_user)
end
......@@ -31,7 +31,7 @@ class ProjectsController < ApplicationController
respond_to do |format|
if @project.valid?
format.html { redirect_to @project, notice: 'Project was successfully created.' }
format.js
format.js
else
format.html { render action: "new" }
format.js
......@@ -51,10 +51,10 @@ class ProjectsController < ApplicationController
respond_to do |format|
if project.update_attributes(params[:project])
format.html { redirect_to project, :notice => 'Project was successfully updated.' }
format.js
format.js
else
format.html { render action: "edit" }
format.js
format.js
end
end
end
......@@ -105,7 +105,7 @@ class ProjectsController < ApplicationController
if params[:commit_id]
@commit = @repo.commits(params[:commit_id]).first
else
else
@commit = @repo.commits(@ref || "master").first
end
......@@ -114,7 +114,7 @@ class ProjectsController < ApplicationController
respond_to do |format|
format.html # show.html.erb
format.js do
format.js do
# diasbale cache to allow back button works
response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
response.headers["Pragma"] = "no-cache"
......@@ -132,7 +132,7 @@ class ProjectsController < ApplicationController
if @tree.is_a?(Grit::Blob)
send_data(@tree.data, :type => @tree.mime_type, :disposition => 'inline', :filename => @tree.name)
else
else
head(404)
end
rescue
......@@ -147,9 +147,9 @@ class ProjectsController < ApplicationController
end
end
protected
protected
def project
def project
@project ||= Project.find_by_code(params[:id])
end
end
class SnippetsController < ApplicationController
before_filter :authenticate_user!
before_filter :project
before_filter :project
# Authorize
before_filter :add_project_abilities
before_filter :authorize_read_snippet!
before_filter :authorize_write_snippet!, :only => [:new, :create, :close, :edit, :update, :sort]
before_filter :authorize_write_snippet!, :only => [:new, :create, :close, :edit, :update, :sort]
respond_to :html
......@@ -13,7 +13,7 @@ class SnippetsController < ApplicationController
@snippets = @project.snippets
end
def new
def new
@snippet = @project.snippets.new
end
......
class TeamMembersController < ApplicationController
before_filter :project
before_filter :project
# Authorize
before_filter :add_project_abilities
before_filter :authorize_read_project!
before_filter :authorize_admin_project!, :only => [:new, :create, :destroy, :update]
before_filter :authorize_admin_project!, :only => [:new, :create, :destroy, :update]
def show
@team_member = project.users_projects.find(params[:id])
......@@ -26,7 +26,7 @@ class TeamMembersController < ApplicationController
respond_to do |format|
format.js
format.html do
format.html do
unless @team_member.valid?
flash[:alert] = "User should have at least one role"
end
......@@ -41,7 +41,7 @@ class TeamMembersController < ApplicationController
respond_to do |format|
format.html { redirect_to root_path }
format.js { render :nothing => true }
format.js { render :nothing => true }
end
end
end
......@@ -23,9 +23,9 @@ module ApplicationHelper
end
def last_commit(project)
if project.repo_exists?
if project.repo_exists?
time_ago_in_words(project.commit.committed_date) + " ago"
else
else
"Never"
end
end
......@@ -33,8 +33,8 @@ module ApplicationHelper
def search_autocomplete_source
projects = current_user.projects.map{ |p| { :label => p.name, :url => project_path(p) } }
default_nav = [
{ :label => "Keys", :url => keys_path },
{ :label => "Projects", :url => projects_path },
{ :label => "Keys", :url => keys_path },
{ :label => "Projects", :url => projects_path },
{ :label => "Admin", :url => admin_root_path }
]
......@@ -42,10 +42,10 @@ module ApplicationHelper
if @project && !@project.new_record?
project_nav = [
{ :label => "#{@project.code} / Issues", :url => project_issues_path(@project) },
{ :label => "#{@project.code} / Wall", :url => wall_project_path(@project) },
{ :label => "#{@project.code} / Tree", :url => tree_project_path(@project) },
{ :label => "#{@project.code} / Commits", :url => project_commits_path(@project) },
{ :label => "#{@project.code} / Issues", :url => project_issues_path(@project) },
{ :label => "#{@project.code} / Wall", :url => wall_project_path(@project) },
{ :label => "#{@project.code} / Tree", :url => tree_project_path(@project) },
{ :label => "#{@project.code} / Commits", :url => project_commits_path(@project) },
{ :label => "#{@project.code} / Team", :url => team_project_path(@project) }
]
end
......
module CommitsHelper
def diff_line(line, line_new = 0, line_old = 0)
full_line = html_escape(line.gsub(/\n/, ''))
color = if line[0] == "+"
color = if line[0] == "+"
full_line = "<span class=\"old_line\">&nbsp;</span><span class=\"new_line\">#{line_new}</span> " + full_line
"#DFD"
elsif line[0] == "-"
elsif line[0] == "-"
full_line = "<span class=\"old_line\">#{line_old}</span><span class=\"new_line\">&nbsp;</span> " + full_line
"#FDD"
else
else
full_line = "<span class=\"old_line\">#{line_old}</span><span class=\"new_line\">#{line_new}</span> " + full_line
"none"
end
......
......@@ -12,7 +12,7 @@ module ProjectsHelper
else
true
end
rescue
rescue
nil
end
end
......@@ -17,14 +17,14 @@ class Ability
:read_issue,
:read_snippet,
:read_team_member,
:read_note
:read_note
] if project.readers.include?(user)
rules << [
:write_project,
:write_issue,
:write_snippet,
:write_note
:write_note
] if project.writers.include?(user)
rules << [
......@@ -32,13 +32,13 @@ class Ability
:admin_issue,
:admin_snippet,
:admin_team_member,
:admin_note
:admin_note
] if project.admins.include?(user)
rules.flatten
end
class << self
class << self
[:issue, :note, :snippet].each do |name|
define_method "#{name}_abilities" do |user, subject|
if subject.author == user
......@@ -48,7 +48,7 @@ class Ability
:"admin_#{name}"
]
else
subject.respond_to?(:project) ?
subject.respond_to?(:project) ?
project_abilities(user, subject.project) : []
end
end
......
......@@ -13,7 +13,7 @@ class Issue < ActiveRecord::Base
validates :title,
:presence => true,
:length => { :within => 0..255 }
validates :content,
:presence => true,
:length => { :within => 0..2000 }
......@@ -30,7 +30,7 @@ class Issue < ActiveRecord::Base
def today?
Date.today == created_at.to_date
end
def new?
today? && created_at == updated_at
end
......
......@@ -17,11 +17,11 @@ class Key < ActiveRecord::Base
def set_identifier
self.identifier = "#{user.identifier}_#{Time.now.to_i}"
end
def update_gitosis
Gitosis.new.configure do |c|
c.update_keys(identifier, key)
projects.each do |project|
c.update_project(project.path, project.gitosis_writers)
end
......
......@@ -7,7 +7,7 @@ class Note < ActiveRecord::Base
belongs_to :author,
:class_name => "User"
attr_protected :author, :author_id
attr_protected :author, :author_id
validates_presence_of :project
......@@ -15,10 +15,10 @@ class Note < ActiveRecord::Base
:presence => true,
:length => { :within => 0..255 }
validates :attachment,
:file_size => {
:maximum => 10.megabytes.to_i
}
validates :attachment,
:file_size => {
:maximum => 10.megabytes.to_i
}
scope :common, where(:noteable_id => nil)
......
......@@ -20,7 +20,7 @@ class Project < ActiveRecord::Base
:format => { :with => /^[a-zA-Z0-9_\-]*$/,
:message => "only letters, digits & '_' '-' allowed" },
:length => { :within => 0..255 }
validates :description,
:length => { :within => 0..2000 }
......@@ -57,13 +57,13 @@ class Project < ActiveRecord::Base
c.update_project(path, gitosis_writers)
end
end
def destroy_gitosis_project
Gitosis.new.configure do |c|
c.destroy_project(self)
end
end
def add_access(user, *access)
opts = { :user => user }
access.each { |name| opts.merge!(name => true) }
......@@ -102,12 +102,12 @@ class Project < ActiveRecord::Base
def url_to_repo
"#{GITOSIS["git_user"]}@#{GITOSIS["host"]}:#{path}.git"
end
def path_to_repo
GITOSIS["base_path"] + path + ".git"
end
def repo
def repo
@repo ||= Grit::Repo.new(path_to_repo)
end
......@@ -122,17 +122,17 @@ class Project < ActiveRecord::Base
def commit(commit_id = nil)
if commit_id
repo.commits(commit_id).first
else
else
repo.commits.first
end
end
def heads
def heads
@heads ||= repo.heads
end
def fresh_commits
commits = heads.map do |h|
commits = heads.map do |h|
repo.commits(h.name, 10)
end.flatten.uniq { |c| c.id }
......@@ -144,7 +144,7 @@ class Project < ActiveRecord::Base
end
def commits_since(date)
commits = heads.map do |h|
commits = heads.map do |h|
repo.log(h.name, nil, :since => date)
end.flatten.uniq { |c| c.id }
......@@ -165,7 +165,7 @@ class Project < ActiveRecord::Base
unless owner.can_create_project?
errors[:base] << ("Your own projects limit is #{owner.projects_limit}! Please contact administrator to increase it")
end
rescue
rescue
errors[:base] << ("Cant check your ability to create project")
end
......
......@@ -13,7 +13,7 @@ class Snippet < ActiveRecord::Base
validates :title,
:presence => true,
:length => { :within => 0..255 }
validates :file_name,
:presence => true,
:length => { :within => 0..255 }
......@@ -22,9 +22,8 @@ class Snippet < ActiveRecord::Base
:presence => true,
:length => { :within => 0..10000 }
def self.content_types
[
[
".rb", ".py", ".pl", ".scala", ".c", ".cpp", ".java",
".haml", ".html", ".sass", ".scss", ".xml", ".php", ".erb",
".js", ".sh", ".coffee", ".yml", ".md"
......
......@@ -5,7 +5,7 @@ class User < ActiveRecord::Base
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me,
attr_accessible :email, :password, :password_confirmation, :remember_me,
:name, :projects_limit, :skype, :linkedin, :twitter
has_many :users_projects, :dependent => :destroy
......
%p This is page with preview for all system emails that are sent to user
%p Email previews built based on existing Project/Commit/Issue base - so some preview maybe unavailable unless object appear in system
%p Email previews built based on existing Project/Commit/Issue base - so some preview maybe unavailable unless object appear in system
#accordion
%h3
%a New user
%div
%div
%iframe{ :src=> admin_mailer_preview_user_new_path, :width=>"100%", :height=>"350"}
%h3
%a New issue
%div
%div
%iframe{ :src=> admin_mailer_preview_issue_new_path, :width=>"100%", :height=>"350"}