diff --git a/Gemfile b/Gemfile index 60f30b6e7..f47bdcef5 100644 --- a/Gemfile +++ b/Gemfile @@ -12,15 +12,17 @@ gem 'omniauth', '~> 1.0.3' gem 'omniauth-openid', '~> 1.0.1' gem 'cancan', '~> 1.6.7' -gem 'ancestry', '~> 1.2.4' +gem 'ancestry', '~> 1.2.5' gem 'paperclip', '~> 2.7.0' gem 'delayed_job_active_record', '~> 0.3.2' gem 'russian', '~> 0.6.0' gem 'highline', '~> 1.6.11' gem 'rails-xmlrpc', '~> 0.3.6' # :git => 'git://github.com/chipiga/rails-xmlrpc.git' +# gem 'rugged', '~> 0.16.0' gem 'grack', :git => 'git://github.com/rdblue/grack.git', :require => 'git_http' -gem "grit", :git => 'git://github.com/mojombo/grit.git', :branch => 'master' +gem "grit", :git => 'git://github.com/chipiga/grit.git' +gem 'charlock_holmes', '~> 0.6.8' #, :git => 'git://github.com/brianmario/charlock_holmes.git', :branch => 'bundle-icu' # Wiki gem "gollum", "1.3.1" @@ -31,8 +33,9 @@ gem 'rdiscount' gem 'RedCloth' gem 'wikicloth' -gem 'unicorn', '~> 4.2.0' -gem 'newrelic_rpm', '~> 3.3.2' +gem 'unicorn', '~> 4.2.0', :platforms => [:mri, :rbx] +gem 'trinidad', '~> 1.0.2', :platforms => :jruby +gem 'newrelic_rpm', '~> 3.3.2', :platforms => [:mri, :rbx] gem 'whenever', '~> 0.7.3', :require => false gem 'rails3-jquery-autocomplete', '~> 1.0.6' @@ -42,11 +45,12 @@ gem "haml-rails", '~> 0.3.4' gem 'jquery-rails', '~> 2.0.1' group :assets do - gem 'sass-rails', '~> 3.2.4' + gem 'sass-rails', '~> 3.2.5' gem 'coffee-rails', '~> 3.2.2' - gem 'compass-rails', '~> 1.0.0.rc.3' + gem 'compass-rails', '~> 1.0.1' gem 'uglifier', '~> 1.2.1' - gem 'therubyracer', '~> 0.9.10' + gem 'therubyracer', '~> 0.9.10', :platforms => [:mri, :rbx] + gem 'therubyrhino', '~> 1.73.1', :platforms => :jruby end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index 85277fbef..dea8e6efc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,12 @@ +GIT + remote: git://github.com/chipiga/grit.git + revision: 696b0967cb7e6bac044569d898e5acef431d4f97 + specs: + grit (2.4.1) + diff-lcs (~> 1.1) + mime-types (~> 1.15) + posix-spawn (~> 0.3.6) + GIT remote: git://github.com/chipiga/redhillonrails_core.git revision: 5f58167c41882890c223168b0a5521d99e8d92aa @@ -6,16 +15,6 @@ GIT redhillonrails_core (2.0.0.pre) activerecord (>= 3.1.0.rc) -GIT - remote: git://github.com/mojombo/grit.git - revision: 3fc864f3c637e06e2fa7a81f6b48a5df58a9bc5b - branch: master - specs: - grit (2.4.1) - diff-lcs (~> 1.1) - mime-types (~> 1.15) - posix-spawn (~> 0.3.6) - GIT remote: git://github.com/rdblue/grack.git revision: 020be3fef3fb308b9d214252522aa5945bf6584a @@ -26,6 +25,7 @@ GEM remote: http://rubygems.org/ specs: RedCloth (4.2.9) + RedCloth (4.2.9-java) actionmailer (3.2.2) actionpack (= 3.2.2) mail (~> 2.4.0) @@ -58,10 +58,11 @@ GEM builder albino (1.3.3) posix-spawn (>= 0.3.6) - ancestry (1.2.4) + ancestry (1.2.5) activerecord (>= 2.2.2) arel (3.0.2) bcrypt-ruby (3.0.1) + bcrypt-ruby (3.0.1-java) bluepill (0.0.60) activesupport (>= 3.0.0) daemons (~> 1.1.4, <= 1.1.6) @@ -77,6 +78,7 @@ GEM net-ssh (>= 2.0.14) net-ssh-gateway (>= 1.1.0) capistrano_colors (0.5.5) + charlock_holmes (0.6.8) chronic (0.6.7) chunky_png (1.2.5) cocaine (0.2.1) @@ -87,12 +89,12 @@ GEM coffee-script-source execjs coffee-script-source (1.2.0) - compass (0.12.rc.1) + compass (0.12.1) chunky_png (~> 1.2) fssm (>= 0.2.7) sass (~> 3.1) - compass-rails (1.0.0.rc.3) - compass (~> 0.12.rc.0) + compass-rails (1.0.1) + compass (~> 0.12.0) creole (0.4.2) daemons (1.1.6) delayed_job (3.0.1) @@ -108,10 +110,11 @@ GEM diff-lcs (1.1.3) erubis (2.7.0) eventmachine (0.12.10) + eventmachine (0.12.10-java) execjs (1.3.0) multi_json (~> 1.0) expression_parser (0.9.0) - factory_girl (2.6.1) + factory_girl (2.6.4) activesupport (>= 2.3.9) factory_girl_rails (1.7.0) factory_girl (~> 2.6.0) @@ -136,16 +139,18 @@ GEM hashie (1.2.0) highline (1.6.11) hike (1.2.1) - hirb (0.6.0) + hirb (0.6.2) i18n (0.6.0) journey (1.0.3) jquery-rails (2.0.1) railties (>= 3.2.0, < 5.0) thor (~> 0.14) + jruby-rack (1.1.4) json (1.6.5) - kgio (2.7.2) + json (1.6.5-java) + kgio (2.7.3) libv8 (3.3.10.4) - mail (2.4.3) + mail (2.4.4) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) @@ -160,7 +165,7 @@ GEM thin (~> 1.2) meta-tags (1.2.6) actionpack - mime-types (1.17.2) + mime-types (1.18) multi_json (1.1.0) mustache (0.99.4) net-scp (1.0.4) @@ -170,8 +175,9 @@ GEM net-ssh (2.3.0) net-ssh-gateway (1.1.0) net-ssh (>= 1.99.1) - newrelic_rpm (3.3.2) - nokogiri (1.5.0) + newrelic_rpm (3.3.2.1) + nokogiri (1.5.2) + nokogiri (1.5.2-java) omniauth (1.0.3) hashie (~> 1.2) rack @@ -245,7 +251,7 @@ GEM sanitize (2.0.3) nokogiri (>= 1.4.4, < 1.6) sass (3.1.15) - sass-rails (3.2.4) + sass-rails (3.2.5) railties (~> 3.2.0) sass (>= 3.1.10) tilt (~> 1.3) @@ -271,6 +277,7 @@ GEM state_machine (1.1.2) therubyracer (0.9.10) libv8 (~> 3.3.10) + therubyrhino (1.73.1) thin (1.3.1) daemons (>= 1.0.9) eventmachine (>= 0.12.6) @@ -280,6 +287,10 @@ GEM treetop (1.4.10) polyglot polyglot (>= 0.3.1) + trinidad (1.0.5) + jruby-rack (>= 1.0.2) + trinidad_jars (>= 0.3.0) + trinidad_jars (1.0.2) tzinfo (0.3.32) uglifier (1.2.3) execjs (>= 0.3.0) @@ -299,19 +310,21 @@ GEM will_paginate (3.0.3) PLATFORMS + java ruby DEPENDENCIES RedCloth airbrake (~> 3.0.9) - ancestry (~> 1.2.4) + ancestry (~> 1.2.5) bluepill (~> 0.0.60) cancan (~> 1.6.7) cape capistrano capistrano_colors + charlock_holmes (~> 0.6.8) coffee-rails (~> 3.2.2) - compass-rails (~> 1.0.0.rc.3) + compass-rails (~> 1.0.1) creole daemons (= 1.1.6) delayed_job_active_record (~> 0.3.2) @@ -341,10 +354,12 @@ DEPENDENCIES rr (~> 1.0.4) rspec-rails (~> 2.8.1) russian (~> 0.6.0) - sass-rails (~> 3.2.4) + sass-rails (~> 3.2.5) shotgun shoulda therubyracer (~> 0.9.10) + therubyrhino (~> 1.73.1) + trinidad (~> 1.0.2) uglifier (~> 1.2.1) unicorn (~> 4.2.0) whenever (~> 0.7.3) diff --git a/app/controllers/git/base_controller.rb b/app/controllers/git/base_controller.rb index a3725a9c4..21f761b5d 100644 --- a/app/controllers/git/base_controller.rb +++ b/app/controllers/git/base_controller.rb @@ -1,8 +1,8 @@ # -*- encoding : utf-8 -*- class Git::BaseController < ApplicationController before_filter :authenticate_user! + load_and_authorize_resource :project - before_filter :find_project before_filter :find_git_repository before_filter :find_tags before_filter :find_branches @@ -10,13 +10,7 @@ class Git::BaseController < ApplicationController before_filter :set_current_tag before_filter :set_current_branch - load_and_authorize_resource :project - protected - def find_project - @project = Project.find(params[:project_id] || params[:id]) - end - def find_git_repository @git_repository = @project.git_repository end @@ -30,7 +24,7 @@ class Git::BaseController < ApplicationController end def set_treeish - @treeish = params[:treeish].present? ? params[:treeish] : @project.default_branch + @treeish = params[:treeish].presence || @project.default_branch end def set_current_tag diff --git a/app/controllers/git/blobs_controller.rb b/app/controllers/git/blobs_controller.rb index a355a17c3..0ad168508 100644 --- a/app/controllers/git/blobs_controller.rb +++ b/app/controllers/git/blobs_controller.rb @@ -2,29 +2,25 @@ class Git::BlobsController < Git::BaseController before_filter :find_tree before_filter :find_branch - before_filter :set_commit_hash before_filter :set_path_blob def show redirect_to project_path(@project) and return unless @blob.present? if params[:raw] - image_url = Rails.root.to_s + "/" + @path - response.headers['Cache-Control'] = "public, max-age=#{12.hours.to_i}" response.headers['Content-Type'] = @blob.mime_type response.headers['Content-Disposition'] = 'inline' - - render(:text => open(image_url).read) and return + render(:text => @blob.data) and return end end def edit - redirect_to project_repo_path(@project) and return unless @blob.present? + redirect_to project_path(@project) and return unless @blob.present? authorize! :write, @project end def update - redirect_to project_repo_path(@project) and return unless @blob.present? + redirect_to project_path(@project) and return unless @blob.present? authorize! :write, @project # Here might be callbacks for notification purposes: # @git_repository.after_update_file do |repo, sha| @@ -33,9 +29,9 @@ class Git::BlobsController < Git::BaseController res = @git_repository.update_file(params[:path], params[:content].gsub("\r", ''), :message => params[:message].gsub("\r", ''), :actor => current_user, :head => @treeish) if res - flash[:notice] = t("flash.blob.successfully_updated", :name => params[:path].encode_to_default) + flash[:notice] = t("flash.blob.successfully_updated", :name => params[:path]) else - flash[:notice] = t("flash.blob.updating_error", :name => params[:path].encode_to_default) + flash[:notice] = t("flash.blob.updating_error", :name => params[:path]) end redirect_to :action => :show end @@ -45,40 +41,24 @@ class Git::BlobsController < Git::BaseController end def raw - redirect_to project_repo_path(@project) and return unless @blob.present? + redirect_to project_path(@project) and return unless @blob.present? headers["Content-Disposition"] = %[attachment;filename="#{@blob.name}"] render :text => @blob.data, :content_type => @blob.mime_type end protected - def find_branch - @branch = @project.branch(@treeish) - end - def set_path_blob - @path = params[:path] - @unenc_path = @path.dup - @path.force_encoding(Encoding::ASCII_8BIT) - puts @path.inspect - @blob = @tree / @path - puts @blob.inspect - end + def find_branch + @branch = @project.branch(@treeish) + end - def set_commit_hash - @commit_hash = params[:commit_hash].present? ? params[:commit_hash] : nil - end + def set_path_blob + @path = params[:path] + @blob = @tree / @path + end - def find_tree - if @commit_hash - puts "1" - @tree = @git_repository.tree(@commit_hash) - @commit = @git_repository.commits(@treeish, 1).first - else - puts "2" - @tree = @git_repository.tree(@treeish) - @commit = @git_repository.log(@treeish, @path, :max_count => 1).first # TODO WTF nil ? - end - puts @tree.inspect - puts @commit.inspect - end + def find_tree + @tree = @git_repository.tree(@treeish) + @commit = @git_repository.log(@treeish, @path, :max_count => 1).first # TODO WTF nil ? + end end diff --git a/app/controllers/git/commits_controller.rb b/app/controllers/git/commits_controller.rb index d632acc64..be34f4ad5 100644 --- a/app/controllers/git/commits_controller.rb +++ b/app/controllers/git/commits_controller.rb @@ -1,6 +1,5 @@ # -*- encoding : utf-8 -*- class Git::CommitsController < Git::BaseController - helper_method :split_commits_by_date def index @@ -22,7 +21,7 @@ class Git::CommitsController < Git::BaseController respond_to do |format| format.html - format.diff { render :text => (@commit.diffs.map{|d| d.diff}.join("\n") rescue ''), :content_type => "text/plain" } + format.diff { render :text => (@commit.diffs.map(&:diff).join("\n") rescue ''), :content_type => "text/plain" } format.patch { render :text => (@commit.to_patch rescue ''), :content_type => "text/plain" } end end @@ -40,5 +39,4 @@ class Git::CommitsController < Git::BaseController end return res end - end diff --git a/app/controllers/git/repositories_controller.rb b/app/controllers/git/repositories_controller.rb deleted file mode 100644 index 7b5420c80..000000000 --- a/app/controllers/git/repositories_controller.rb +++ /dev/null @@ -1,11 +0,0 @@ -# -*- encoding : utf-8 -*- -class Git::RepositoriesController < Git::BaseController - - def show - @commit = @git_repository.master - @tree = @commit ? @commit.tree : nil - - render :template => "git/repositories/empty" unless @tree - end - -end diff --git a/app/controllers/git/trees_controller.rb b/app/controllers/git/trees_controller.rb index 5e43a52e6..47cc15392 100644 --- a/app/controllers/git/trees_controller.rb +++ b/app/controllers/git/trees_controller.rb @@ -1,26 +1,18 @@ # -*- encoding : utf-8 -*- class Git::TreesController < Git::BaseController - def show - if params[:treeish].present? and @treeish.dup.encode_to_default == @project.default_branch - redirect_to project_path(@project) and return - end + redirect_to project_path(@project) and return if params[:treeish] == @project.default_branch and params[:path].blank? @path = params[:path] - @tree = @git_repository.tree(@treeish) @branch = @project.branch(@treeish) # @commit = @git_repository.commits(@treeish, 1).first # Raises Grit::Git::GitTimeout @commit = @branch.present? ? @branch.commit() : @git_repository.log(@treeish, @path, :max_count => 1).first - render :template => "git/repositories/empty" and return unless @commit + render :template => "git/trees/empty" and return unless @commit - if @path - @path.force_encoding(Encoding::ASCII_8BIT) - @tree = @tree / @path - end - - render :template => "git/repositories/show" + @tree = @tree / @path if @path + render :template => "git/trees/show" end end diff --git a/app/helpers/commit_helper.rb b/app/helpers/commit_helper.rb index c1ff9402f..d6019a772 100644 --- a/app/helpers/commit_helper.rb +++ b/app/helpers/commit_helper.rb @@ -5,7 +5,7 @@ module CommitHelper res = [""] stats.files.each do |filename, adds, deletes, total| res << "" - res << "".encode_to_default + res << "" res << "
#{h(filename)}#{h(filename)}" res << I18n.t("layout.projects.inline_changes_count", :count => total).strip + " (" + @@ -17,7 +17,7 @@ module CommitHelper end res << "
" - res.join("\n").encode_to_default.html_safe + res.join("\n").html_safe.default_encoding! end # def format_commit_message(message) @@ -38,11 +38,11 @@ module CommitHelper def short_commit_message(message) # Why 42? Because it is the Answer! - truncate(message, :length => 42, :omission => "...").encode_to_default + truncate(message, :length => 42, :omission => "...") end def commit_author_link(author) - name = author.name.encode_to_default + name = author.name email = author.email u = User.where(:email => email).first u.present? ? link_to(name, user_path(u)) : mail_to(email, name) diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb index b3c8b4408..5cd707e1a 100644 --- a/app/helpers/diff_helper.rb +++ b/app/helpers/diff_helper.rb @@ -8,11 +8,11 @@ module DiffHelper res = "" res += "" - res += diff_display.render(Git::Diff::InlineCallback.new).encode_to_default + res += diff_display.render(Git::Diff::InlineCallback.new) res += "" res += "
" - res.html_safe.encode_to_default + res.html_safe end end diff --git a/app/helpers/git_helper.rb b/app/helpers/git_helper.rb index 36dffef40..78af65bda 100644 --- a/app/helpers/git_helper.rb +++ b/app/helpers/git_helper.rb @@ -26,15 +26,7 @@ module GitHelper res = "#{link_to @project.name, tree_path(@project)} /" end - res.encode_to_default.html_safe - end - - def blob_file_path - if @commit_hash.present? - blob_commit_path(@project, @commit_hash, @path) - else - blob_path(@project, @treeish, @path) - end + res.html_safe end def render_line_numbers(n) @@ -45,22 +37,19 @@ module GitHelper end def render_blob(blob) - res = "" - blob.data.encode_to_default.split("\n").collect do |line| - "
#{line.present? ? h(line) : "
"}
" - end.join + blob.data.split("\n").collect do |line| + content_tag :div, line.present? ? h(line) : tag(:br) + end.join.html_safe end def choose_render_way(blob) - return :image if blob.mime_type.match(/image/) - return :binary if blob.binary? - :text -# return :text if blob.mime_type.match(/text|xml|json/) -# :binary - end - - def force_encoding_to_site(string) - string.dup.encode_to_default + case + when blob.mime_type.match(/image/); :image + when blob.binary?; :binary + else + @text = @blob.data.split("\n") + :text + end end def iterate_path(path, &block) @@ -76,21 +65,16 @@ module GitHelper # TODO This is very dirty hack. Maybe need to be changed. def branch_selector_options(project) - tmp = params.dup - unless tmp['treeish'].present? - tmp.merge!('project_id' => project.id, 'treeish' => project.default_branch).delete('id') - end - tmp.delete('treeish') if tmp['commit_hash'].present? - res = {} - current = url_for(tmp).split('?', 2).first - tmp['commit_hash'] = truncate(tmp['commit_hash'], :length => 20) if tmp['commit_hash'] + p = params.dup + p.delete(:path) if p[:path].present? # to root path + p.merge!(:project_id => project.id, :treeish => project.default_branch).delete(:id) unless p[:treeish].present? + current = url_for(p).split('?', 2).first - res = project.branches.inject(res) do |h, branch| - h[truncate(branch.name, :length => 20)] = url_for(tmp.merge('treeish' => branch.name)).split('?', 2).first - h - end - res.merge!(tmp['commit_hash'] || tmp['treeish'] => current) + res = [] + res << [I18n.t('layout.git.repositories.commits'), [truncate(params[:treeish], :length => 20)]] unless (project.branches + project.tags).map(&:name).include?(params[:treeish] || project.default_branch) + res << [I18n.t('layout.git.repositories.branches'), project.branches.map{|b| [truncate(b.name, :length => 20), url_for(p.merge :treeish => b.name).split('?', 2).first]}] + res << [I18n.t('layout.git.repositories.tags'), project.tags.map{|t| [truncate(t.name, :length => 20), url_for(p.merge :treeish => t.name).split('?', 2).first]}] - options_for_select(res.sort, current).html_safe + grouped_options_for_select(res, current) end end diff --git a/app/helpers/wiki_helper.rb b/app/helpers/wiki_helper.rb index c98090d66..98bf7f61f 100644 --- a/app/helpers/wiki_helper.rb +++ b/app/helpers/wiki_helper.rb @@ -82,7 +82,7 @@ module WikiHelper end def author - @page.version.author.name.encode_to_default + @page.version.author.name end def author_email diff --git a/app/models/activity_feed_observer.rb b/app/models/activity_feed_observer.rb index 1c612a0b6..b97d90450 100644 --- a/app/models/activity_feed_observer.rb +++ b/app/models/activity_feed_observer.rb @@ -62,7 +62,7 @@ class ActivityFeedObserver < ActiveRecord::Observer :user => subscribe.user, :kind => 'new_comment_commit_notification', :data => {:user_name => record.user.name, :user_email => record.user.email, :user_id => record.user_id, :comment_body => record.body, - :commit_message => record.commentable.message.encode_to_default, :commit_id => record.commentable.id, + :commit_message => record.commentable.message, :commit_id => record.commentable.id, :project_id => record.project.id, :comment_id => record.id, :project_name => record.project.name, :project_owner => record.project.owner.uname} ) end diff --git a/app/models/git/repository.rb b/app/models/git/repository.rb index 779876de0..057ba4968 100644 --- a/app/models/git/repository.rb +++ b/app/models/git/repository.rb @@ -51,8 +51,6 @@ class Git::Repository # # Returns commits sha if committing was successful and false otherwise def update_file(path, data, options = {}) - path.force_encoding(Encoding::ASCII_8BIT) # some magic - head = options[:head].to_s || 'master' actor = get_actor(options[:actor]) filename = File.split(path).last diff --git a/app/models/project.rb b/app/models/project.rb index eb41ea381..4f1bc02c1 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -118,11 +118,11 @@ class Project < ActiveRecord::Base # ... and add it to result. h[entry] = c # find another files, that linked to this commit and set them their commit - c.diffs.map{|diff| diff.b_path.split(File::SEPARATOR, 2).first}.each do |name| - h.each_pair do |k, v| - h[k] = c if k.name == name and v.nil? - end - end + # c.diffs.map{|diff| diff.b_path.split(File::SEPARATOR, 2).first}.each do |name| + # h.each_pair do |k, v| + # h[k] = c if k.name == name and v.nil? + # end + # end end h end diff --git a/app/presenters/git_presenters/commit_as_message_presenter.rb b/app/presenters/git_presenters/commit_as_message_presenter.rb index e09ad4172..54933746c 100644 --- a/app/presenters/git_presenters/commit_as_message_presenter.rb +++ b/app/presenters/git_presenters/commit_as_message_presenter.rb @@ -64,7 +64,7 @@ class GitPresenters::CommitAsMessagePresenter < ApplicationPresenter @committer_link ||= if committer.is_a? User link_to committer.uname, user_path(committer) else - mail_to committer.email.encode_to_default, committer.name.encode_to_default + mail_to committer.email, committer.name end end @@ -73,7 +73,7 @@ class GitPresenters::CommitAsMessagePresenter < ApplicationPresenter end def prepare_message - (@caption, @content) = @commit.message.encode_to_default.split("\n\n", 2) + (@caption, @content) = @commit.message.split("\n\n", 2) @caption = 'empty message' unless @caption.present? if @caption.length > 72 tmp = '...' + @caption[69..-1] diff --git a/app/views/git/blobs/_blame_table.html.haml b/app/views/git/blobs/_blame_table.html.haml index 79f20113a..fc0a608a8 100644 --- a/app/views/git/blobs/_blame_table.html.haml +++ b/app/views/git/blobs/_blame_table.html.haml @@ -12,7 +12,7 @@ (#{commit_author_link(committer)}) %br %span.date= commit_date(elem[0].committed_date) - %span.message{:title => elem[0].message.encode_to_default}= short_commit_message(elem[0].message) + %span.message{:title => elem[0].message}= short_commit_message(elem[0].message) %td.lines = index @@ -20,7 +20,7 @@ %td.code.cm-s-default %pre - %div= elem[1].first.encode_to_default + %div= elem[1].first - elem[1][1..-1].each do |line| %tr @@ -29,7 +29,7 @@ - index += 1 %td.code.cm-s-default %pre - %div= line.encode_to_default + %div= line :javascript $(document).ready(function() { diff --git a/app/views/git/blobs/_editor.html.haml b/app/views/git/blobs/_editor.html.haml index 64c40b743..d4f727877 100644 --- a/app/views/git/blobs/_editor.html.haml +++ b/app/views/git/blobs/_editor.html.haml @@ -4,43 +4,20 @@ = render :partial => 'git/shared/fork' .both -= form_tag blob_file_path, :name => 'blob-editor', :method => :put do - .file - = text_area_tag :content, @blob.data.encode_to_default, :id => 'code' += form_tag blob_path(@project, @treeish, @path), :name => 'blob-editor', :method => :put do + .file= text_area_tag :content, @blob.data, :id => 'code' .both = t("layout.enter_commit_message") - = text_area_tag :message, "Updated #{@blob.name.encode_to_default}", :class => 'commit-message' + = text_area_tag :message, "Updated #{@blob.name}", :class => 'commit-message' %br %br = submit_tag t("layout.save"), :title => t("layout.save") = t("layout.or") - = link_to t("layout.cancel"), blob_file_path, :class => 'button' - --##gollum-editor.edit{:'data-escaped-name' => @path.encode_to_default} - = form_tag blob_file_path, :name => 'blob-editor', :method => :put do - %fieldset#gollum-editor-fields - - = text_area_tag :content, @blob.data.encode_to_default, :id => "gollum-editor-body" - - #gollum-editor-edit-summary.singleline - = label_tag :message, t("wiki.edit_commit_message"), :class => "jaws" - = text_field_tag :message, t("wiki.commit_message_placeholder"), :id => "editor-commit-message-field" - - %span.jaws - %br - - = submit_tag t("wiki.save_button"), :id => "gollum-editor-submit", :title => t("wiki.save_changes") - = link_to t("layout.cancel"), blob_file_path, :class => 'minibutton', :id => 'gollum-editor-preview' + = link_to t("layout.cancel"), blob_path(@project, @treeish, @path), :class => 'button' :javascript $(function() { var editor = CodeMirror.fromTextArea(document.getElementById('code'), {lineNumbers: true, mode: '#{@blob.raw_mime_type.content_type}', theme: 'eclipse'}); - }); - -/ - content_for :javascripts do -/ = javascript_include_tag 'gollum/gollum.placeholder.js', 'blob.editor.js' -/ -/ - content_for :stylesheets do -/ = stylesheet_link_tag 'gollum/editor.css' + }); \ No newline at end of file diff --git a/app/views/git/blobs/_show.html.haml b/app/views/git/blobs/_show.html.haml index 400efbff6..b1bc94d66 100644 --- a/app/views/git/blobs/_show.html.haml +++ b/app/views/git/blobs/_show.html.haml @@ -6,21 +6,7 @@ - render_way = choose_render_way(@blob) .file - .top - .l - = @blob.mode + ' | ' - - if (render_way == :text) - - text = @blob.data.split("\n") - = "#{text.length} lines (#{text.select{|s| s.strip.length > 0}.length} sloc) | " - = "#{(@blob.size / 1024.0).round(3)} Kb" - .r - - if render_way == :text and can? :write, @project and @treeish.in? @project.branches.map(&:name) - = raw "#{link_to "Edit", edit_blob_path(@project, @treeish, @path) } | " - = raw "#{link_to "Raw", raw_path(@project, @treeish, @path)} | " - - if render_way == :text - = raw "#{link_to "Blame", blame_path(@project, @treeish, @path)} | " - = link_to "History", commits_path(@project, @treeish, @path) - .both + .top= render 'top', :render_way => render_way .data - case render_way - when :image @@ -33,13 +19,12 @@

- when :text - .gutter - = render_line_numbers(text.length) + .gutter= render_line_numbers(@text.length) #output.formatted.cm-s-default %pre#code =#{render_blob(@blob)} :preserve - #{h(@blob.data.encode_to_default).html_safe} + #{h(@blob.data).html_safe} .both - when :binary %table.table.blob @@ -48,7 +33,7 @@ %td.blob :plain
-
#{ link_to @blob.basename.encode_to_default, raw_path(@project, @treeish, @path) }
+
#{ link_to @blob.basename, raw_path(@project, @treeish, @path) }

:javascript $(document).ready(function() { diff --git a/app/views/git/blobs/_top.html.haml b/app/views/git/blobs/_top.html.haml new file mode 100644 index 000000000..8073aa9db --- /dev/null +++ b/app/views/git/blobs/_top.html.haml @@ -0,0 +1,21 @@ +.l + = @blob.mode + \| + - if render_way == :text + #{@text.length} lines (#{@text.select{|s| s.strip.length > 0}.length} sloc) + \| + = number_to_human_size @blob.size +.r + - if render_way == :text and can? :write, @project and @treeish.in? @project.branches.map(&:name) + = link_to "Edit", edit_blob_path(@project, @treeish, @path) + \| + - if render_way == :text and params[:action] != 'show' + = link_to "Normal", blob_path(@project, @treeish, @path) + \| + = link_to "Raw", raw_path(@project, @treeish, @path) + \| + - if render_way == :text and params[:action] != 'blame' + = link_to "Blame", blame_path(@project, @treeish, @path) + \| + = link_to "History", commits_path(@project, @treeish, @path) +.both \ No newline at end of file diff --git a/app/views/git/blobs/blame.html.haml b/app/views/git/blobs/blame.html.haml index 3ab4ab4d2..1eb9109f4 100644 --- a/app/views/git/blobs/blame.html.haml +++ b/app/views/git/blobs/blame.html.haml @@ -16,81 +16,10 @@ #repo-wrapper %h3= t("layout.projects.files_in_project") .files - .l - = render :partial => 'git/shared/whereami' + .l= render :partial => 'git/shared/whereami' .both - render_way = choose_render_way(@blob) .file - .top - .l - = @blob.mode + ' | ' - - if (render_way == :text) - - text = @blob.data.split("\n") - = "#{text.length} lines (#{text.select{|s| s.strip.length > 0}.length} sloc) | " - = "#{(@blob.size / 1024.0).round(3)} Kb" - .r - = raw "#{link_to "Normal", blob_path(@project, @treeish, @path) } | " - = raw "#{link_to "Raw", raw_path(@project, @treeish, @path)} | " - =# raw "#{link_to "Blame", blame_path(@project, @treeish, @path)} | " - = link_to "History", commits_path(@project, @treeish, @path) - .both - .blame_data - = render :partial => 'blame_table' - --#.block - = render :partial => "git/shared/navigation" - - = render :partial => "git/shared/info" - --#- if @commit - .block - .content - .inner - = render :partial => "git/commits/commits", :object => [@commit] - --#.block - .content - .inner - %h3= render_path - - .blob_header - .size #{(@blob.size / 1024.0).round(3)} Kb - .buttons - - if @commit_hash - #{link_to "Raw", raw_commit_path(@project, @commit_hash, @path)} #{link_to "Normal", blob_commit_path(@project, @commit_hash, @path)} #{link_to "History", commits_path(@project, @treeish, @path)} - - else - #{link_to "Raw", raw_path(@project, @treeish, @path)} #{link_to "Normal", blob_path(@project, @treeish, @path)} #{link_to "History", commits_path(@project, @treeish, @path)} - - .clear - .blame_data - %table.table.blame - - index = 1 - - @blame.each do |elem| - %tr - %td.message{ :rowspan => elem[1].length } - .commit - #{link_to shortest_hash_id(elem[0].id), commit_path(@project, elem[0].id)} by - #{elem[0].author.to_s.encode_to_default} #{elem[0].author != elem[0].committer ? "(#{elem[0].committer.to_s.encode_to_default})" : "" } - .message - %span.date= commit_date(elem[0].committed_date) - %span.message= short_commit_message(elem[0].message) - - %td.lines - = index - - index += 1 - - %td.code - %pre - %div= elem[1].first.encode_to_default - - - elem[1][1..-1].each do |line| - %tr - %td.lines - = index - - index += 1 - %td.code - %pre - %div= line.encode_to_default - --#- content_for :sidebar, render(:partial => 'git/shared/sidebar') + .top= render 'top', :render_way => render_way + .blame_data= render 'blame_table' diff --git a/app/views/git/blobs/edit.html.haml b/app/views/git/blobs/edit.html.haml index 37e125fcc..ce9111419 100644 --- a/app/views/git/blobs/edit.html.haml +++ b/app/views/git/blobs/edit.html.haml @@ -1,21 +1 @@ = render :partial => "git/blobs/editor", :layout => 'projects/show' --#.block --# = render :partial => "git/shared/navigation" --# --# = render :partial => "git/shared/info" --# --#- if @commit --# .block --# .content --# .inner --# = render :partial => "git/commits/commits", :object => [@commit] --# --#.block --# .content --# .inner --# %h3 #{render_path} (#{@blob.mime_type}) --# --# = render :partial => 'editor' --# --#- content_for :sidebar, render(:partial => 'git/shared/sidebar') --# diff --git a/app/views/git/commits/_commit_diff.html.haml b/app/views/git/commits/_commit_diff.html.haml index ba37ac8d9..c15055706 100644 --- a/app/views/git/commits/_commit_diff.html.haml +++ b/app/views/git/commits/_commit_diff.html.haml @@ -1,11 +1,10 @@ +- commit_id = commit_diff.deleted_file ? @commit.parents.first.id : @commit.id .file - %a{ :name => h(commit_diff.a_path.encode_to_default) } + %a{:name => h(commit_diff.a_path)} .top - .l= h(commit_diff.a_path.encode_to_default) + .l= h(commit_diff.a_path) - if commit_diff.b_path.present? - .r - = link_to("view file @ #{short_hash_id(@commit.id)}", blob_commit_path(@project, @commit.id, commit_diff.b_path.encode_to_default)) + .r= link_to "view file @ #{short_hash_id(commit_id)}", blob_path(@project, commit_id, commit_diff.b_path) .clear - .diff_data - = render_diff(commit_diff) + .diff_data= render_diff(commit_diff) unless (@git_repository.tree(commit_id) / commit_diff.b_path).binary? \ No newline at end of file diff --git a/app/views/git/commits/_commits.html.haml b/app/views/git/commits/_commits.html.haml index 41d16f6e8..27aa401d5 100644 --- a/app/views/git/commits/_commits.html.haml +++ b/app/views/git/commits/_commits.html.haml @@ -9,37 +9,10 @@ - by_month.each_pair do |month, by_day| - by_day.each_pair do |day, commits| .date-block - .date - = raw l(commits.first.authored_date, :format => :date_block_format) + .date= raw l(commits.first.authored_date, :format => :date_block_format) .messages - commits.each_with_index do |commit| - GitPresenters::CommitAsMessagePresenter.present(commit, :branch => @branch, :project => @project) do |presenter| = render :partial => 'shared/feed_message', :locals => {:presenter => presenter, :item_no => counter} - counter += 1 - .both --#%ul.list.commits - - commits.each do |commit| - %li.commit - %table - %tr - %td.committers - .author #{commit.author.to_s.encode_to_default}, #{commit_date(commit.authored_date)} - - if commit.committer != commit.author - .committer - (committed by: #{commit.committer.to_s.encode_to_default}, #{commit_date(commit.committed_date)}) - %td.message - %p= link_to commit.message.encode_to_default, commit_path(@project, commit.id) - %td.trees - .commit - Commit: - %span{ :style => "float: right;"} - #{link_to short_hash_id(commit.id), commit_path(@project, commit.id)} - .tree - Tree: - %span{ :style => "float: right;"} - #{link_to short_hash_id(commit.tree.id), tree_path(@project, :treeish => commit.tree.id)} - - commit.parents.each do |parent| - .parent - Parent: - %span{ :style => "float: right;"} - #{link_to short_hash_id(parent.id), tree_path(@project, :treeish => parent.id)} + .both \ No newline at end of file diff --git a/app/views/git/commits/_paginate.html.haml b/app/views/git/commits/_paginate.html.haml index 131861bbe..c53177767 100644 --- a/app/views/git/commits/_paginate.html.haml +++ b/app/views/git/commits/_paginate.html.haml @@ -1,10 +1,10 @@ .pagination.tmargin30 - if @page == 1 - %span.previous_page.disabled « Previous + %span.previous_page.disabled= t('will_paginate.previous_label') - else - %a.previous_page{ :rel => "prev", :href => commits_path(@project, :treeish => @treeish, :page => (@page - 1)) } « Previous + %a.previous_page{:rel => "prev", :href => commits_path(@project, :treeish => @treeish, :page => (@page - 1))}= t('will_paginate.previous_label') - if @last_page - %span.next_page.disabled Next » + %span.next_page.disabled= t('will_paginate.next_label') - else - %a.next_page{ :rel => "next", :href => commits_path(@project, :treeish => @treeish, :page => (@page + 1)) } Next » + %a.next_page{:rel => "next", :href => commits_path(@project, :treeish => @treeish, :page => (@page + 1))}= t('will_paginate.next_label') \ No newline at end of file diff --git a/app/views/git/commits/index.html.haml b/app/views/git/commits/index.html.haml index e7226765e..4012cbf46 100644 --- a/app/views/git/commits/index.html.haml +++ b/app/views/git/commits/index.html.haml @@ -2,16 +2,4 @@ = render :partial => 'projects/repo_block', :locals => {:project => @project} = render :partial => 'git/commits/commits', :object => @commits -- if @render_paginate - = render :partial => 'git/commits/paginate' --#.block - .content - .inner - = render :partial => "git/commits/commits", :object => @commits - - - if @render_paginate - .actions-bar.wat-cf - .pagination - = render :partial => "git/commits/paginate" - --# content_for :sidebar, render(:partial => 'git/shared/sidebar') += render 'git/commits/paginate' if @render_paginate diff --git a/app/views/git/commits/show.html.haml b/app/views/git/commits/show.html.haml index 7d612fb83..864fcdd56 100644 --- a/app/views/git/commits/show.html.haml +++ b/app/views/git/commits/show.html.haml @@ -17,43 +17,3 @@ = render :partial => "comments/list", :locals => {:list => Project.commit_comments(@commit, @project), :project => @project, :commentable => @commit} = render :partial => "comments/add", :locals => {:project => @project, :commentable => @commit} --#.block - = render :partial => "git/shared/navigation" - - = render :partial => "git/shared/info" - - --#.block - .content - .inner - = render :partial => "git/commits/commits", :object => [@commit] - --#- begin - .block - .content - .inner - .patch_and_diff - = link_to "raw diff", commit_path(@project, @commit.id, :diff) - \| - = link_to "patch", commit_path(@project, @commit.id, :patch) - .clear - = render_commit_stats(@commit.stats) - - = render :partial => "git/commits/commit_diff", :collection => @commit.diffs --#- rescue Grit::Git::GitTimeout - .block - .content - .inner - %p= t 'layout.git.repositories.commit_diff_too_big' - --#- content_for :sidebar, render(:partial => 'git/shared/sidebar') - --#= render :partial => "comments/list", :locals => {:list => Project.commit_comments(@commit, @project), :project => @project, :commentable => @commit} --#%p - %b - = t('layout.issues.subscribe') - \: - - if Subscribe.subscribed_to_commit?(@project, current_user, @commit) - = link_to t('layout.commits.unsubscribe_btn'), unsubscribe_commit_path(@project, @commit), :method => :delete - - else - = link_to t('layout.commits.subscribe_btn'), subscribe_commit_path(@project, @commit), :method => :post diff --git a/app/views/git/repositories/show.html.haml b/app/views/git/repositories/show.html.haml deleted file mode 100644 index 5fcafec95..000000000 --- a/app/views/git/repositories/show.html.haml +++ /dev/null @@ -1 +0,0 @@ -= render :partial => "git/repositories/show", :layout => 'projects/show' diff --git a/app/views/git/shared/_info.html.haml b/app/views/git/shared/_info.html.haml deleted file mode 100644 index f1ccc0698..000000000 --- a/app/views/git/shared/_info.html.haml +++ /dev/null @@ -1,23 +0,0 @@ -.content - .inner - %p - %b - = t("activerecord.models.project") - \: - = @project.name - - %p - %b - = t("activerecord.attributes.project.repository") - \: - = git_repo_url @project.git_repo_name - - - if @current_tag.present? - %p - %b Tag: - = link_to @current_tag.name, tree_path(@project, :treeish => @current_tag.name) - - - if @current_branch.present? - %p - %b Branch: - = link_to @current_branch.name, tree_path(@project, :treeish => @current_branch.name) diff --git a/app/views/git/shared/_navigation.html.haml b/app/views/git/shared/_navigation.html.haml deleted file mode 100644 index fcd292c06..000000000 --- a/app/views/git/shared/_navigation.html.haml +++ /dev/null @@ -1,29 +0,0 @@ -.secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.projects.list"), projects_path - %li= link_to t("layout.projects.new"), new_project_path - %li= link_to t("layout.projects.show"), project_path(@project) - %li.active= link_to t("layout.git.repositories.source"), project_repo_path(@project) - - if can? :write, @project - %li= link_to t("layout.projects.build"), new_project_build_list_path(@project) - - %ul#git_submenu.sub-wat-cf.wat-cf - %li= link_to t("layout.git.repositories.commits"), commits_path(@project, :treeish => @treeish) - %li - %a{ :href => "#", :onmouseover => "menu.open('branches')", :onmouseout => "menu.close_time()" } Branches - #branches{ :onmouseover => "menu.cancel_close_time()", :onmouseout => "menu.close_time()" } - - @branches.each do |branch| - - if branch.name == @treesh - %span.current= branch.name - - else - = link_to branch.name, tree_path(@project, :treeish => branch.name) - - %li - %a{ :href => "#", :onmouseover => "menu.open('tags')", :onmouseout => "menu.close_time()" } Tags - #tags{ :onmouseover => "menu.cancel_close_time()", :onmouseout => "menu.close_time()" } - - @tags.each do |tag| - - if tag.name == @treeish - %span.current= tag.name - - else - = link_to tag.name, tree_path(@project, :treeish => tag.name) - .clear diff --git a/app/views/git/shared/_sidebar.html.haml b/app/views/git/shared/_sidebar.html.haml deleted file mode 100644 index e3f813feb..000000000 --- a/app/views/git/shared/_sidebar.html.haml +++ /dev/null @@ -1,4 +0,0 @@ -.block.notice - %h3= t("layout.projects.current_project_header") - .content - %p= link_to @project.name, project_path(@project) \ No newline at end of file diff --git a/app/views/git/shared/_whereami.html.haml b/app/views/git/shared/_whereami.html.haml index f01ba7fb0..e54f2ba0f 100644 --- a/app/views/git/shared/_whereami.html.haml +++ b/app/views/git/shared/_whereami.html.haml @@ -1,10 +1,10 @@ %p#file-name1 - = link_to @project.name, tree_path(@project, :treeish => @treeish.encode_to_default) + = link_to @project.name, tree_path(@project, :treeish => @treeish) = File::SEPARATOR - if @path.present? - paths = File.split(@path) - if paths.size > 1 and paths.first != '.' - iterate_path(paths.first) do |path, name| - = link_to(name, tree_path(@project, @treeish, path)).encode_to_default + = link_to(name, tree_path(@project, @treeish, path)) = File::SEPARATOR - = paths.last.encode_to_default + = paths.last diff --git a/app/views/git/repositories/_show.html.haml b/app/views/git/trees/_show.html.haml similarity index 57% rename from app/views/git/repositories/_show.html.haml rename to app/views/git/trees/_show.html.haml index c3f4229d2..ccd21be34 100644 --- a/app/views/git/repositories/_show.html.haml +++ b/app/views/git/trees/_show.html.haml @@ -16,27 +16,22 @@ %tr %td .pic= image_tag 'folder.png' - .name - = link_to "..", tree_path(@project, @treeish, File.join([@path.dup.encode_to_default, ".."].compact).encode_to_default) + .name= link_to "..", tree_path(@project, @treeish, File.join([@path, ".."].compact)) %td==   %td==   %td==   - @project.tree_info(@tree, @treeish, @path).each_pair do |entry, commit| %tr %td - - entry_path = File.join([@path.present? ? @path : nil, entry.name].compact).encode_to_default + - entry_path = File.join([@path.present? ? @path : nil, entry.name].compact) - if entry.is_a? Grit::Blob .pic= image_tag 'code.png' - .name - = link_to(entry.name, blob_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default + .name= link_to(entry.name, blob_path(@project, @treeish, entry_path), :class => 'files-see') - else .pic= image_tag 'folder.png' - .name - = link_to(entry.name, tree_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default + .name= link_to(entry.name, tree_path(@project, @treeish, entry_path), :class => 'files-see') %td - %span{:style => "display: none;"}= commit.committed_date || commit.authored_date#> Dec 31, 2011 - = l(commit.committed_date || commit.authored_date, :format => :short) #31 декабря 2011 - %td - = commit.short_message.encode_to_default #Redo autostart script to start from user - %td - = (commit.committer || commit.author).name.encode_to_default #chipiga + %span{:style => "display: none;"}= commit.committed_date || commit.authored_date + = l(commit.committed_date || commit.authored_date, :format => :short) + %td= commit.short_message + %td= (commit.committer || commit.author).name \ No newline at end of file diff --git a/app/views/git/repositories/empty.html.haml b/app/views/git/trees/empty.html.haml similarity index 92% rename from app/views/git/repositories/empty.html.haml rename to app/views/git/trees/empty.html.haml index 678dc18e9..16472c81d 100644 --- a/app/views/git/repositories/empty.html.haml +++ b/app/views/git/trees/empty.html.haml @@ -12,8 +12,7 @@ %h3= t("layout.projects.files_in_project") .files - .l - = render :partial => 'git/shared/whereami' + .l= render :partial => 'git/shared/whereami' .both %table#myTable.tablesorter.project{:cellpadding => "0", :cellspacing => "0"} diff --git a/app/views/git/trees/show.html.haml b/app/views/git/trees/show.html.haml new file mode 100644 index 000000000..58da1b2ec --- /dev/null +++ b/app/views/git/trees/show.html.haml @@ -0,0 +1 @@ += render :partial => "git/trees/show", :layout => 'projects/show' diff --git a/app/views/projects/_branch_select.html.haml b/app/views/projects/_branch_select.html.haml index 7cb3c150d..2371453bc 100644 --- a/app/views/projects/_branch_select.html.haml +++ b/app/views/projects/_branch_select.html.haml @@ -1,8 +1,8 @@ .lineForm.fork = select_tag :branch, branch_selector_options(project), :id => 'branch_selector', :class => 'sel80' - %form{ :action => '', :method => :get, :id => 'branch_changer', :'data-action' => "#{controller_name}"} + %form{:action => '', :method => :get, :id => 'branch_changer', :'data-action' => "#{controller_name}"} .fork - %p= t("layout.projects.#{params[:commit_hash].present? ? 'current_commit' : 'current_branch'}")+':' + %p #{t('layout.projects.current_branch')}: .both :javascript @@ -12,4 +12,4 @@ $form.attr('action', $(this).val()); $form.submit(); }); - }); + }); \ No newline at end of file diff --git a/app/views/projects/_commit_info.html.haml b/app/views/projects/_commit_info.html.haml deleted file mode 100644 index 61b96ece7..000000000 --- a/app/views/projects/_commit_info.html.haml +++ /dev/null @@ -1,19 +0,0 @@ -.activity - .top - .image - %img{:alt => "avatar", :src => presenter.image} - .text.imaged - %span.name= presenter.header - %br/ - %span.date= presenter.date - %br/ - %span.subject - = presenter.caption - - if presenter.expandable? and presenter.content? - %span.data-expander.collapsed{:id => "expand#{item_no}"}   - / = image_tag 'expand-gray.png', :class => 'activity-full', :id => 'expand1', :onclick => "showActivity(4)" - .both - - if presenter.content? - .fulltext{:class => presenter.expandable? ? "hidden" : '', - :id => presenter.expandable? ? "content-expand#{item_no}" : ''} - = presenter.content diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml index 0c0c1fb58..5642020ee 100644 --- a/app/views/projects/_form.html.haml +++ b/app/views/projects/_form.html.haml @@ -1,18 +1,13 @@ - act = controller.action_name.to_sym - if [:new, :create].include? act - .leftlist - = f.label :name, t("activerecord.attributes.project.name"), :class => :label - .rightlist - = f.text_field :name, :class => 'text_field', :disabled => f.object.try(:persisted?) + .leftlist= f.label :name, t("activerecord.attributes.project.name"), :class => :label + .rightlist= f.text_field :name, :class => 'text_field', :disabled => f.object.try(:persisted?) .both -.leftlist - = f.label :description, t("activerecord.attributes.project.description"), :class => :label -.rightlist - = f.text_area :description, :class => 'text_field', :cols => 80 +.leftlist= f.label :description, t("activerecord.attributes.project.description"), :class => :label +.rightlist= f.text_area :description, :class => 'text_field', :cols => 80 .both - if ['new', 'create'].include? controller.action_name - .leftlist - = f.label :owner_id, t("activerecord.attributes.project.owner"), :class => :label + .leftlist= f.label :owner_id, t("activerecord.attributes.project.owner"), :class => :label .rightlist = label_tag t("activerecord.attributes.project.who_owns.me") - if Group.can_own_project(current_user).count > 0 @@ -27,13 +22,10 @@ = hidden_field_tag :who_owns, :me .both -#- if [:new, :create].include? act --# .leftlist --# = f.label :category_id, t("activerecord.attributes.project.category_id"), :class => :label --# .rightlist --# = f.grouped_collection_select :category_id, Category.roots, :children, :name, :id, :name, :include_blank => true +-# .leftlist= f.label :category_id, t("activerecord.attributes.project.category_id"), :class => :label +-# .rightlist= f.grouped_collection_select :category_id, Category.roots, :children, :name, :id, :name, :include_blank => true -# .both -.leftlist - = f.label :visibility, t("activerecord.attributes.project.visibility"), :class => :label +.leftlist= f.label :visibility, t("activerecord.attributes.project.visibility"), :class => :label .rightlist =# f.select :visibility, Project::VISIBILITIES - Project::VISIBILITIES.each do |visibility| @@ -45,30 +37,23 @@ = t("activerecord.attributes.project.visibilities.#{visibility}") .both - if [:edit, :update].include? act - .leftlist - Ветка по умолчанию: - .rightlist - = f.select :default_branch, options_from_collection_for_select(@project.branches, :name, :name, @project.default_branch), :class => 'sel80', :id => 'branch_selector' + .leftlist= t("activerecord.attributes.project.default_branch") + .rightlist= f.select :default_branch, options_from_collection_for_select(@project.branches, :name, :name, @project.default_branch), :class => 'sel80', :id => 'branch_selector' .both - if [:edit, :update].include? act .leftlist \  .rightlist .check - %span#niceCheckbox1.niceCheck-main - = f.check_box :is_rpm#, :class => 'niceCheckbox1' - .forcheck - Проект является пакетом + %span#niceCheckbox1.niceCheck-main= f.check_box :is_rpm#, :class => 'niceCheckbox1' + .forcheck= t("activerecord.attributes.project.is_rpm") .both .both - if [:new, :create].include? act - .leftlist - = f.label :srpm, t("activerecord.attributes.project.srpm"), :class => :label - .rightlist - = f.file_field :srpm, :class => 'file_field' + .leftlist= f.label :srpm, t("activerecord.attributes.project.srpm"), :class => :label + .rightlist= f.file_field :srpm, :class => 'file_field' .both .leftlist \  -.rightlist - = submit_tag t("layout.save"), :class => 'button' +.rightlist= submit_tag t("layout.save"), :class => 'button' .both diff --git a/app/views/projects/_list.html.haml b/app/views/projects/_list.html.haml deleted file mode 100644 index 6b4ab5c38..000000000 --- a/app/views/projects/_list.html.haml +++ /dev/null @@ -1,13 +0,0 @@ -%table.table - %tr - %th= t("activerecord.attributes.project.name") - %th= t("activerecord.attributes.project.owner") - %th.last   - - @projects.each do |project| - %tr{:class => cycle("odd", "even")} - %td= link_to "#{project.name}", project - %td= link_to "#{project.owner.name} (#{project.owner.uname})", project.owner - %td - = link_to t("layout.edit"), edit_project_path(project) if can? :update, project - | - = link_to t("layout.delete"), project_path(project), :method => :delete, :confirm => t("layout.projects.confirm_delete") if can? :destroy, project diff --git a/app/views/projects/_repo_block.html.haml b/app/views/projects/_repo_block.html.haml index e4592efaf..c2a804139 100644 --- a/app/views/projects/_repo_block.html.haml +++ b/app/views/projects/_repo_block.html.haml @@ -1,8 +1,6 @@ .description-top - = text_field_tag :url, git_repo_url(project.git_repo_name), :class => 'name', - :type => 'text',:spellcheck => 'false', :readonly => true - .role - = t("layout.read_write_access") + = text_field_tag :url, git_repo_url(project.git_repo_name), :class => 'name', :spellcheck => 'false', :readonly => true + .role= t("layout.read_write_access") = render :partial => 'projects/branch_select', :locals => {:project => project} .both :javascript @@ -10,4 +8,4 @@ $('#url').live('click', function() { $(this).select(); }); - }); + }); \ No newline at end of file diff --git a/app/views/projects/_sidebar.html.haml b/app/views/projects/_sidebar.html.haml index b2b9cac07..0f5b9be4f 100644 --- a/app/views/projects/_sidebar.html.haml +++ b/app/views/projects/_sidebar.html.haml @@ -7,61 +7,8 @@ - if can? :edit, @project %li{:class => (act == :edit && contr == :projects) ? 'active' : ''} = link_to t("layout.projects.edit"), edit_project_path(@project) - - if can? :manage_collaborators, @project %li{:class => (act == :sections && contr == :projects) ? 'active' : ''} = link_to t("layout.projects.sections"), sections_project_path(@project) - if can? :manage_collaborators, @project %li{:class => (act == :edit && contr == :collaborators) ? 'active' : ''} - = link_to t("layout.projects.edit_collaborators"), edit_project_collaborators_path(@project) - - --#.block.notice --# %h3= t("layout.projects.members") --# .content --# %p --# %b --# = "#{t("layout.projects.collaborators")}:" --# %ul --# - @project.collaborators.each do |user| --# %li --# - if can? :read, user --# = link_to user.name, user_path(user) --# - else --# = user.name --# - if (@project.owner == user) --# = '(' + t("layout.owner") + ')' --# /%br --# -# if can? :update, @project --# %p --# %b --# = "#{t("layout.projects.groups")}:" --# %ul --# - @project.groups.each do |group| --# %li --# = link_to group.name, group_path(group) --# - if (@project.owner == group) --# = '(' + t("layout.owner") + ')' --# %br --# = link_to t("layout.projects.edit_collaborators"), edit_project_collaborators_path(@project) if can? :manage_collaborators, @project --# --# / %p --# / %b --# / = "#{t("layout.projects.groups")}:" --# / %ul --# / - @project.groups.each do |group| --# / %li --# / = link_to group.name, group_path(group) --# / - if (@project.owner == group) --# / = '(' + t("layout.owner") + ')' --# / %br --# / = link_to t("layout.projects.add_groups"), '#' #add_collaborators_project_path(@project) --# --#/ .block.notice --#/ %h3= t("layout.platforms.current_platform_header") --#/ .content --#/ %p= link_to @platform.name, platform_path(@platform) --#/ --#/ .block.notice --#/ %h3= t("layout.repositories.current_repository_header") --#/ .content --#/ %p= link_to @repository.name + repository_name_postfix(@platform), platform_repository_path(@platform, @repository) + = link_to t("layout.projects.edit_collaborators"), edit_project_collaborators_path(@project) \ No newline at end of file diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index 0333ec68e..755de5ab5 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -4,10 +4,8 @@ = render :partial => "form", :locals => {:f => f} .hr -.leftside - = t("layout.projects.delete_warning") -.rightside - = link_to t("layout.delete"), project_path(@project), :method => :delete, :confirm => t("layout.projects.confirm_delete"), :class => 'button' if can? :destroy, @project +.leftside= t("layout.projects.delete_warning") +.rightside= link_to t("layout.delete"), project_path(@project), :method => :delete, :confirm => t("layout.projects.confirm_delete"), :class => 'button' if can? :destroy, @project .both - content_for :sidebar, render('sidebar') diff --git a/app/views/projects/sections.html.haml b/app/views/projects/sections.html.haml index 381ec0c8f..0b154c058 100644 --- a/app/views/projects/sections.html.haml +++ b/app/views/projects/sections.html.haml @@ -2,25 +2,20 @@ = form_for @project, :url => sections_project_path(@project), :method => :post, :html => { :class => :form, :multipart => true } do |f| .leftside.w25 - %span.niceCheck-main{:onclick => "changeCheck(this)"} - = f.check_box :has_issues + %span.niceCheck-main{:onclick => "changeCheck(this)"}= f.check_box :has_issues .leftside.w420 = t("activerecord.attributes.project.has_issues") %br - %span{:style => "font-size: 11px;"} - = t("layout.projects.has_issue_description") + %span{:style => "font-size: 11px;"}= t("layout.projects.has_issue_description") .both .leftside.w25 - %span.niceCheck-main{:onclick => "changeCheck(this)"} - = f.check_box :has_wiki, :class => 'niceCheck-main' + %span.niceCheck-main{:onclick => "changeCheck(this)"}= f.check_box :has_wiki, :class => 'niceCheck-main' .leftside.w420 = t("activerecord.attributes.project.has_wiki") %br - %span{:style => "font-size: 11px;"} - = t("layout.projects.has_wiki_description") + %span{:style => "font-size: 11px;"}= t("layout.projects.has_wiki_description") .both - .padd25 - = submit_tag t("layout.save"), :class => 'button' + .padd25= submit_tag t("layout.save"), :class => 'button' .both - content_for :sidebar, render('sidebar') diff --git a/app/views/wiki/_diff_data.html.haml b/app/views/wiki/_diff_data.html.haml index d0d09811b..1c00ff781 100644 --- a/app/views/wiki/_diff_data.html.haml +++ b/app/views/wiki/_diff_data.html.haml @@ -1,4 +1,4 @@ .blob_header - .size= h(diff.deleted_file ? diff.a_path : diff.b_path).encode_to_default + .size= h(diff.deleted_file ? diff.a_path : diff.b_path) .clear .diff_data.highlight= render_diff(diff) \ No newline at end of file diff --git a/app/views/wiki/_history.html.haml b/app/views/wiki/_history.html.haml index 1b504d330..09a0781ff 100644 --- a/app/views/wiki/_history.html.haml +++ b/app/views/wiki/_history.html.haml @@ -10,14 +10,14 @@ - user = User.where(:email => v.author.email).first .avatar = link_to user_path_by_user(user) do - %img.mini-gravatar{:src => gravatar_url(v.author.email), :alt => "avatar: #{v.author.name.encode_to_default}"} + = image_tag avatar_url_by_email(v.author.email), :alt => "avatar: #{v.author.name}", :class => 'mini-gravatar' .name = link_to user_path_by_user(user) do - %span.username= user.present? ? "#{user.uname} (#{user.name})" : v.author.name.encode_to_default + %span.username= user.present? ? "#{user.uname} (#{user.name})" : v.author.name .both %td.td3 %span.wiki-gray= "#{l v.committed_date.to_date, :format => :long}:" - = v.message.encode_to_default + = v.message - if @name = raw "[#{link_to v.id[0..6], versioned_project_wiki_path(@project, escaped_name, v.id), :title => t("wiki.view_commit")}]" - else @@ -38,4 +38,4 @@ cbx.removeAttr('checked'); } } - }); + }); \ No newline at end of file diff --git a/app/views/wiki/_project_short.html.haml b/app/views/wiki/_project_short.html.haml deleted file mode 100644 index e3252f1c8..000000000 --- a/app/views/wiki/_project_short.html.haml +++ /dev/null @@ -1,24 +0,0 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.projects.list"), projects_path - %li= link_to t("layout.projects.new"), new_project_path - %li= link_to t("layout.projects.show"), project_path(@project) - %li= link_to t("layout.git.repositories.source"), project_repo_path(@project) - - if can? :write, @project - %li= link_to t("layout.projects.build"), new_project_build_list_path(@project) - %li= link_to t("layout.projects.issues"), project_issues_path(@project) - %li.active= link_to t("layout.projects.wiki"), project_wiki_index_path(@project) - - .content - .inner - %p - %b - = t("activerecord.attributes.project.name") - \: - = @project.name - %p - %b - = t("activerecord.attributes.project.owner") - \: - = link_to @project.owner.try(:name), url_for(@project.owner) \ No newline at end of file diff --git a/config/environment.rb b/config/environment.rb index 521243091..0a6cad37f 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -2,7 +2,5 @@ # Load the rails application require File.expand_path('../application', __FILE__) -Encoding.default_external = Encoding::UTF_8 -Encoding.default_internal = Encoding::UTF_8 # Initialize the rails application Rosa::Application.initialize! diff --git a/config/initializers/gollum.rb b/config/initializers/gollum.rb deleted file mode 100644 index b1339f5d3..000000000 --- a/config/initializers/gollum.rb +++ /dev/null @@ -1,2 +0,0 @@ -# -*- encoding : utf-8 -*- -require './lib/gollum1' diff --git a/config/initializers/grit.rb b/config/initializers/grit.rb deleted file mode 100644 index 01d4857f4..000000000 --- a/config/initializers/grit.rb +++ /dev/null @@ -1,9 +0,0 @@ -# -*- encoding : utf-8 -*- - -require './lib/grit1' - -GAP_REPO_PATH = '/tmp/gap_repo.git' -unless File.directory? GAP_REPO_PATH - Grit::Repo.init_bare(GAP_REPO_PATH) - # FileUtils.chmod "a-w", GAP_REPO_PATH -end diff --git a/config/initializers/load_config.rb b/config/initializers/load_config.rb index a5fa28d3b..dbe36533c 100644 --- a/config/initializers/load_config.rb +++ b/config/initializers/load_config.rb @@ -10,7 +10,13 @@ config = {:project_root => File.join(APP_CONFIG['root_path'], 'git_projects'), : Rosa::Application.config.middleware.insert_after ::Rails::Rack::Logger, ::Grack::Handler, config Rosa::Application.config.middleware.insert_before ::Grack::Handler, ::Grack::Auth -# Grit::Git.git_timeout = 60 +Grit::Git.git_timeout = 60 +# Grit.debug = true +GAP_REPO_PATH = '/tmp/gap_repo.git' +unless File.directory? GAP_REPO_PATH + Grit::Repo.init_bare(GAP_REPO_PATH) + # FileUtils.chmod "a-w", GAP_REPO_PATH +end Dir[Rails.root.join("lib/ext/**/*.rb")].each {|f| require f} diff --git a/config/locales/models/project.en.yml b/config/locales/models/project.en.yml index 22a8657f9..7d840959a 100644 --- a/config/locales/models/project.en.yml +++ b/config/locales/models/project.en.yml @@ -40,7 +40,7 @@ en: message: Message author: Author - current_branch: Current branch + current_branch: Current branch/tag current_commit: Current commit files_in_project: Files in @@ -77,3 +77,5 @@ en: who_owns: me: I group: Group + default_branch: Default branch + is_rpm: Project is a packet diff --git a/config/locales/models/project.ru.yml b/config/locales/models/project.ru.yml index f6eb91bcb..dcc54cb96 100644 --- a/config/locales/models/project.ru.yml +++ b/config/locales/models/project.ru.yml @@ -40,7 +40,7 @@ ru: message: Сообщение author: Автор - current_branch: Текущая ветка + current_branch: Текущая ветка/тег current_commit: Текущий коммит files_in_project: Файлы в @@ -77,3 +77,5 @@ ru: who_owns: me: Я group: Группа + default_branch: Ветка по умолчанию + is_rpm: Проект является пакетом diff --git a/config/locales/ru.yml b/config/locales/ru.yml index f516a5995..ec5375701 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -133,10 +133,10 @@ ru: repositories: empty: "Репозиторий пуст. Если вы клонировали(Fork) проект или импортировали пакет, данные скоро появятся" source: Source - commits: Commits + commits: Коммиты commit_diff_too_big: Извините, коммит слишком большой! - tags: Tags - branches: Branches + tags: Теги + branches: Ветки project_versions: Версии product_build_lists: diff --git a/config/routes.rb b/config/routes.rb index fd0be525a..c9173eb76 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -101,7 +101,6 @@ Rosa::Application.routes.draw do resources :categories, :only => [:index, :show] end - resources :projects, :only => [:new] resources :projects, :except => [:show] do resources :wiki do collection do @@ -137,7 +136,6 @@ Rosa::Application.routes.draw do post "labels/:label_id" => "issues#destroy_label", :as => :issues_delete_label post "labels/:label_id/update" => "issues#update_label", :as => :issues_update_label - resource :repo, :controller => "git/repositories", :only => [:show] resources :build_lists, :only => [:index, :new, :create] do collection { post :search } end @@ -156,7 +154,6 @@ Rosa::Application.routes.draw do member do post :fork - get :show, :controller => 'git/trees', :action => :show get :sections post :sections delete :remove_user @@ -202,36 +199,28 @@ Rosa::Application.routes.draw do match 'product_status', :to => 'product_build_lists#status_build' # Tree - match '/projects/:project_id/git/tree/:treeish(/*path)', :controller => "git/trees", :action => :show, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :tree - + get '/projects/:project_id' => "git/trees#show", :as => :project + get '/projects/:project_id/tree/:treeish(/*path)' => "git/trees#show", :defaults => {:treeish => :master}, :as => :tree # Commits - match '/projects/:project_id/git/commits/:treeish(/*path)', :controller => "git/commits", :action => :index, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :commits, :format => false - match '/projects/:project_id/git/commit/:id(.:format)', :controller => "git/commits", :action => :show, :defaults => { :format => :html }, :as => :commit - # Commit Comments - match '/projects/:project_id/git/commit/:commit_id/comments/:id(.:format)', :controller => "comments", :action => :edit, :as => :edit_project_commit_comment, :via => :get - match '/projects/:project_id/git/commit/:commit_id/comments/:id(.:format)', :controller => "comments", :action => :update, :as => :project_commit_comment, :via => :put - match '/projects/:project_id/git/commit/:commit_id/comments/:id(.:format)', :controller => "comments", :action => :destroy, :via => :delete - match '/projects/:project_id/git/commit/:commit_id/comments(.:format)', :controller => "comments", :action => :create, :as => :project_commit_comments, :via => :post - - # Commits subscribe - match '/projects/:project_id/git/commit/:commit_id/subscribe', :controller => "commit_subscribes", :action => :create, :defaults => { :format => :html }, :as => :subscribe_commit, :via => :post - match '/projects/:project_id/git/commit/:commit_id/unsubscribe', :controller => "commit_subscribes", :action => :destroy, :defaults => { :format => :html }, :as => :unsubscribe_commit, :via => :delete - + get '/projects/:project_id/commits/:treeish(/*path)' => "git/commits#index", :defaults => {:treeish => :master}, :as => :commits, :format => false + get '/projects/:project_id/commit/:id(.:format)' => "git/commits#show", :as => :commit + # Commit comments + post '/projects/:project_id/commit/:commit_id/comments(.:format)' => "comments#create", :as => :project_commit_comments + get '/projects/:project_id/commit/:commit_id/comments/:id(.:format)' => "comments#edit", :as => :edit_project_commit_comment + put '/projects/:project_id/commit/:commit_id/comments/:id(.:format)' => "comments#update", :as => :project_commit_comment + delete '/projects/:project_id/commit/:commit_id/comments/:id(.:format)' => "comments#destroy" + # Commit subscribes + post '/projects/:project_id/commit/:commit_id/subscribe' => "commit_subscribes#create", :as => :subscribe_commit + delete '/projects/:project_id/commit/:commit_id/unsubscribe' => "commit_subscribes#destroy", :as => :unsubscribe_commit # Editing files - match '/projects/:project_id/git/blob/:treeish/*path/edit', :controller => "git/blobs", :action => :edit, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :edit_blob, :via => :get - match '/projects/:project_id/git/blob/:treeish/*path', :controller => "git/blobs", :action => :update, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :via => :put, :format => false - + get '/projects/:project_id/blob/:treeish/*path/edit' => "git/blobs#edit", :defaults => {:treeish => :master}, :as => :edit_blob + put '/projects/:project_id/blob/:treeish/*path' => "git/blobs#update", :defaults => {:treeish => :master}, :format => false # Blobs - match '/projects/:project_id/git/blob/:treeish/*path', :controller => "git/blobs", :action => :show, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :blob, :via => :get, :format => false - match '/projects/:project_id/git/commit/blob/:commit_hash/*path', :controller => "git/blobs", :action => :show, :project_id => /[0-9a-zA-Z_.\-]*/, :as => :blob_commit, :via => :get, :format => false - + get '/projects/:project_id/blob/:treeish/*path' => "git/blobs#show", :defaults => {:treeish => :master}, :as => :blob, :format => false # Blame - match '/projects/:project_id/git/blame/:treeish/*path', :controller => "git/blobs", :action => :blame, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :blame, :format => false - match '/projects/:project_id/git/commit/blame/:commit_hash/*path', :controller => "git/blobs", :action => :blame, :as => :blame_commit - + get '/projects/:project_id/blame/:treeish/*path' => "git/blobs#blame", :defaults => {:treeish => :master}, :as => :blame, :format => false # Raw - match '/projects/:project_id/git/raw/:treeish/*path', :controller => "git/blobs", :action => :raw, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :raw, :format => false - match '/projects/:project_id/git/commit/raw/:commit_hash/*path', :controller => "git/blobs", :action => :raw, :as => :raw_commit + get '/projects/:project_id/raw/:treeish/*path' => "git/blobs#raw", :defaults => {:treeish => :master}, :as => :raw, :format => false root :to => "activity_feeds#index" match '/forbidden', :to => 'platforms#forbidden', :as => 'forbidden' diff --git a/db/schema.rb b/db/schema.rb index 7c7a52e57..b145fe88c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -286,11 +286,11 @@ ActiveRecord::Schema.define(:version => 20120321130436) do t.text "description" t.string "ancestry" t.boolean "has_issues", :default => true - t.boolean "has_wiki", :default => false t.string "srpm_file_name" t.string "srpm_content_type" t.integer "srpm_file_size" t.datetime "srpm_updated_at" + t.boolean "has_wiki", :default => false t.string "default_branch", :default => "master" t.boolean "is_rpm", :default => true end @@ -311,6 +311,7 @@ ActiveRecord::Schema.define(:version => 20120321130436) do end add_index "register_requests", ["email"], :name => "index_register_requests_on_email", :unique => true, :case_sensitive => false + add_index "register_requests", ["token"], :name => "index_register_requests_on_token", :unique => true, :case_sensitive => false create_table "relations", :force => true do |t| t.integer "object_id" @@ -370,7 +371,6 @@ ActiveRecord::Schema.define(:version => 20120321130436) do t.string "email", :default => "", :null => false t.string "encrypted_password", :limit => 128, :default => "", :null => false t.string "reset_password_token" - t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.datetime "created_at" t.datetime "updated_at" @@ -378,6 +378,7 @@ ActiveRecord::Schema.define(:version => 20120321130436) do t.string "uname" t.string "role" t.string "language", :default => "en" + t.datetime "reset_password_sent_at" t.integer "own_projects_count", :default => 0, :null => false t.text "professional_experience" t.string "site" diff --git a/doc/README_FOR_APP b/doc/README_FOR_APP index bbed67ad7..5fcb0c1f8 100644 --- a/doc/README_FOR_APP +++ b/doc/README_FOR_APP @@ -17,4 +17,6 @@ Add to /etc/rc.d/rc.sysinit . /etc/rc.local fi -== +=== Tips +gem install charlock_holmes -- --with-icu-dir=/opt/local +git config --global core.quotepath false diff --git a/lib/ext/core/string.rb b/lib/ext/core/string.rb index 24f78ad59..a8640324f 100644 --- a/lib/ext/core/string.rb +++ b/lib/ext/core/string.rb @@ -1,6 +1,27 @@ # -*- encoding : utf-8 -*- +require 'charlock_holmes/string' +# require 'iconv' + class String - def encode_to_default - force_encoding(Encoding.default_internal || Encoding::UTF_8) + def default_encoding! + if ascii_only? + force_encoding(Encoding.default_internal || Encoding::UTF_8) + else + force_encoding((detected = detect_encoding and detected[:encoding]) || Encoding.default_internal || Encoding::UTF_8).encode! + end end + + # def enforce_utf8(from = nil) + # begin + # is_utf8? ? self : ::Iconv.iconv('utf8', from, self).first + # rescue + # converter = ::Iconv.new('UTF-8//IGNORE//TRANSLIT', 'ASCII//IGNORE//TRANSLIT') + # # If Ruby 1.9, else another RubyEngine (ree, Ruby 1.8) + # begin + # converter.iconv(self).unpack('U*').select{|cp| cp < 127}.pack('U*').force_encoding('utf-8') + # rescue + # converter.iconv(self).unpack('U*').select{|cp| cp < 127}.pack('U*') + # end + # end + # end end diff --git a/lib/gollum/wiki.rb b/lib/ext/gollum.rb similarity index 71% rename from lib/gollum/wiki.rb rename to lib/ext/gollum.rb index 70ef08e46..8109242e9 100644 --- a/lib/gollum/wiki.rb +++ b/lib/ext/gollum.rb @@ -1,27 +1,6 @@ -# -*- encoding : utf-8 -*- +# # -*- encoding : utf-8 -*- module Gollum class Wiki - - def page_with_forced_encoding(name, version = @ref) - page_without_forced_encoding(force_grit_encoding(name), version) - end - alias_method_chain :page, :forced_encoding - - def file_with_forced_encoding(name, version = @ref) - file_without_forced_encoding(force_grit_encoding(name), version) - end - alias_method_chain :file, :forced_encoding - - def write_page_with_forced_encoding(name, format, data, commit = {}) - write_page_without_forced_encoding(force_grit_encoding(name), format, data, commit) - end - alias_method_chain :write_page, :forced_encoding - - def update_page_with_forced_encoding(page, name, format, data, commit = {}) - update_page_without_forced_encoding(page, force_grit_encoding(name), format, data, commit) - end - alias_method_chain :update_page, :forced_encoding - # Public: Applies a reverse diff for a given page. If only 1 SHA is given, # the reverse diff will be taken from its parent (^SHA...SHA). If two SHAs # are given, the reverse diff is taken from SHA1...SHA2. @@ -91,12 +70,5 @@ module Gollum revert_page_with_committer(nil, sha1, sha2, commit) end alias_method_chain :revert_commit, :committer - - private - - def force_grit_encoding(str) - str.dup.force_encoding(Encoding::ASCII_8BIT) - end - end end diff --git a/lib/grit/blob.rb b/lib/ext/grit.rb similarity index 100% rename from lib/grit/blob.rb rename to lib/ext/grit.rb diff --git a/lib/gollum/page.rb b/lib/gollum/page.rb deleted file mode 100644 index 9fb1a31f9..000000000 --- a/lib/gollum/page.rb +++ /dev/null @@ -1,11 +0,0 @@ -# -*- encoding : utf-8 -*- -module Gollum - class Page - def name_with_encoding - name_without_encoding.encode_to_default - end - - alias_method_chain :name, :encoding - - end -end diff --git a/lib/gollum1.rb b/lib/gollum1.rb deleted file mode 100644 index 5a627104c..000000000 --- a/lib/gollum1.rb +++ /dev/null @@ -1,4 +0,0 @@ -# -*- encoding : utf-8 -*- -Dir.glob(File.join('.', 'lib', 'gollum', '*.rb')) do |file| - require file -end diff --git a/lib/grit/diff.rb b/lib/grit/diff.rb deleted file mode 100644 index e2dd04895..000000000 --- a/lib/grit/diff.rb +++ /dev/null @@ -1,56 +0,0 @@ -# -*- encoding : utf-8 -*- -module Grit - class Diff - def self.list_from_string(repo, text) - lines = text.split("\n") - - diffs = [] - - while !lines.empty? - m, a_path, b_path = *lines.shift.match(%r{^diff --git "{0,1}a/(.+?)"{0,1} "{0,1}b/(.+?)"{0,1}$}) - - if lines.first =~ /^old mode/ - m, a_mode = *lines.shift.match(/^old mode (\d+)/) - m, b_mode = *lines.shift.match(/^new mode (\d+)/) - end - - if lines.empty? || lines.first =~ /^diff --git/ - diffs << Diff.new(repo, a_path, b_path, nil, nil, a_mode, b_mode, false, false, nil) - next - end - - sim_index = 0 - new_file = false - deleted_file = false - renamed_file = false - - if lines.first =~ /^new file/ - m, b_mode = lines.shift.match(/^new file mode (.+)$/) - a_mode = nil - new_file = true - elsif lines.first =~ /^deleted file/ - m, a_mode = lines.shift.match(/^deleted file mode (.+)$/) - b_mode = nil - deleted_file = true - elsif lines.first =~ /^similarity index (\d+)\%/ - sim_index = $1.to_i - renamed_file = true - 2.times { lines.shift } # shift away the 2 `rename from/to ...` lines - end - - m, a_blob, b_blob, b_mode = *lines.shift.match(%r{^index ([0-9A-Fa-f]+)\.\.([0-9A-Fa-f]+) ?(.+)?$}) - b_mode.strip! if b_mode - - diff_lines = [] - while lines.first && lines.first !~ /^diff/ - diff_lines << lines.shift - end - diff = diff_lines.join("\n") - - diffs << Diff.new(repo, a_path, b_path, a_blob, b_blob, a_mode, b_mode, new_file, deleted_file, diff, renamed_file, sim_index) - end - - diffs - end - end -end diff --git a/lib/grit/repo.rb b/lib/grit/repo.rb deleted file mode 100644 index 998ff7b30..000000000 --- a/lib/grit/repo.rb +++ /dev/null @@ -1,17 +0,0 @@ -# -*- encoding : utf-8 -*- -module Grit - class Repo - - def diff_with_encoding(a, b, *paths) - diff = self.git.native('diff', {}, a, b, '--', *paths).encode_to_default - if diff =~ /diff --git "{0,1}a/ - diff = diff.sub(/.*?(diff --git "{0,1}a)/m, '\1') - else - diff = '' - end - Diff.list_from_string(self, diff) - end - alias_method_chain :diff, :encoding - - end -end diff --git a/lib/grit1.rb b/lib/grit1.rb deleted file mode 100644 index 110f01613..000000000 --- a/lib/grit1.rb +++ /dev/null @@ -1,4 +0,0 @@ -# -*- encoding : utf-8 -*- -require './lib/grit/repo.rb' -require './lib/grit/diff.rb' -require './lib/grit/blob.rb'