From 55379ed9c8dd5bb642ac03be00654622ff52714d Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 16 Feb 2012 00:53:58 +0600 Subject: [PATCH 01/87] [refs #194] first steps --- app/views/issues/_sidebar.html.haml | 118 ++++++++++++++++++++++++++++ app/views/issues/index.html.haml | 25 +----- config/application.rb | 2 +- config/locales/en.yml | 47 ----------- config/locales/issues/issues.en.yml | 38 +++++++++ config/locales/issues/issues.ru.yml | 37 +++++++++ config/locales/ru.yml | 30 ------- 7 files changed, 197 insertions(+), 100 deletions(-) create mode 100644 app/views/issues/_sidebar.html.haml create mode 100644 config/locales/issues/issues.en.yml create mode 100644 config/locales/issues/issues.ru.yml diff --git a/app/views/issues/_sidebar.html.haml b/app/views/issues/_sidebar.html.haml new file mode 100644 index 000000000..22070beed --- /dev/null +++ b/app/views/issues/_sidebar.html.haml @@ -0,0 +1,118 @@ +-content_for :sidebar do + .bordered.nopadding + %h3=t("layout.issues.accessory") + %table + %tr + %td.width18 + %input#myradio1.niceRadio{:checked => "checked", :name => "myradio", :tabindex => "1", :type => "radio"} + %td.width135 + =t("layout.issues.all") + %td.width30.right + = @project.issues.count + %tr + %td + %input#myradio2.niceRadio{:name => "myradio", :tabindex => "2", :type => "radio"} + %td + =t("layout.issues.mine") + %td.width30.right + = @project.issues.where(:user_id => current_user).count + .bordered.bpadding20 + %input.gray{:onClick => "if(this.value=='Найти задачу...'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='Найти задачу...';this.className='gray';}", :type => "text", :value => "Найти задачу..."}/ + .bordered.nopadding + %h3.bmargin10 Добавить задачу + %a.button{:href => "#"} Добавить + .block + %h3 Метки + #labels-edit{:style => "display: none;"} + #label-delete1.label.edit + .labeltext.edit{:style => "background: #39b54a;"} + .text 2-3 stable + #delete1.delete + %img{:alt => "x", :src => "pics/x-label.png"}/ + .both + #label-delete2.label.edit + .labeltext.edit{:style => "background: #ed1c24;"} + .text 3-0 stable + #delete2.delete + %img{:alt => "x", :src => "pics/x-label.png"}/ + .both + #label-delete3.label.edit + .labeltext.edit{:style => "background: #ed145b;"} + .text actionpack + #delete3.delete + %img{:alt => "x", :src => "pics/x-label.png"}/ + .both + #label-delete4.label.edit + .labeltext.edit{:style => "background: #92278f;"} + .text activemodel + #delete4.delete + %img{:alt => "x", :src => "pics/x-label.png"}/ + .both + %input.gray{:onClick => "if(this.value=='Название новой метки'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='Название новой метки';this.className='gray';}", :type => "text", :value => "Название новой метки"}/ + .colors + .color{:style => "background: #0054a6;"} + #choose1.choose.selected + .color{:style => "background: #00a651;"} + #choose2.choose + .color{:style => "background: #ed1c24;"} + #choose3.choose + .color{:style => "background: #e65c00;"} + #choose4.choose + .color{:style => "background: #9e005d;"} + #choose5.choose + .color{:style => "background: #464646;"} + #choose6.choose + .color{:style => "background: #8c6239;"} + #choose7.choose + .both + .lefter + %a{:href => "#"} Custom color + .righter + %a.button{:href => "#"} Добавить + .both + #labels-stock + #label-2-3-stable.div-tracker-lables{:name => "label"} + .div-label-left + .label + #flag-2-3-stable.flag{:style => "background-color: #39b54a;"} + .labeltext + 2-3 stable + .both + .div-label-right + 15 + .both + .both + #label-3-0-stable.div-tracker-lables{:name => "label"} + .div-label-left + .label + #flag-3-0-stable.flag{:style => "background-color: #ed1c24;"} + .labeltext + 3-0 stable + .both + .div-label-right + 100 + .both + .both + #label-actionpack.div-tracker-lables{:name => "label"} + .div-label-left + .label + #flag-actionpack.flag{:style => "background-color: #ed145b;"} + .labeltext + actionpack + .both + .div-label-right + 22 + .both + .both + #label-activemodel.div-tracker-lables{:name => "label"} + .div-label-left + .label + #flag-activemodel.flag{:style => "background-color: #92278f;"} + .labeltext + activemodel + .both + .div-label-right + 3 + .both + .both + %a#manage-labels.button.tmargin10{:href => "#"} Manage \ No newline at end of file diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index 9f1c6306d..2b49a31ef 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -1,22 +1,3 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first.active= link_to t("layout.issues.list"), project_issues_path(@project) - %li= link_to t("layout.issues.new"), new_project_issue_path(@project) if can? :new, Issue.new(:project_id => @project.id) - .secondary-navigation - %ul.wat-cf - %li{:class => "first " + (params[:status].blank? ? "active" : "")} - = link_to t("layout.issues.statuses.any"), project_issues_path(@project) - %li{:class => "first " + (params[:status] == 'open' ? "active" : "")} - = link_to t("layout.issues.statuses.open"), project_issues_path(@project, :status => 'open') - %li{:class => "first " + (params[:status] == 'closed' ? "active" : "")} - = link_to t("layout.issues.statuses.closed"), project_issues_path(@project, :status => 'closed') - .content - %h2.title - = t("layout.issues.list_header") - .inner - = render :partial => 'shared/search_form' - = render :partial => 'issues/list' - .actions-bar.wat-cf - .actions - = will_paginate @issues#, :param_name => :issue_page +-render :partial => 'projects/submenu' +-render :partial => 'issues/sidebar' + diff --git a/config/application.rb b/config/application.rb index 7729c9f09..99fbb1300 100644 --- a/config/application.rb +++ b/config/application.rb @@ -37,7 +37,7 @@ module Rosa # config.time_zone = 'Central Time (US & Canada)' # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. - # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**/*.yml').to_s] config.i18n.default_locale = :en config.action_view.javascript_expansions[:defaults] = %w() diff --git a/config/locales/en.yml b/config/locales/en.yml index 8806dd1db..7545e255c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -108,23 +108,6 @@ en: edit_header: Edit category confirm_delete: Are you sure to delete this category? - issues: - list: List - edit: Edit - comments_header: Comments - new: New task - list_header: List - confirm_delete: Are you sure to delete this task? - edit_header: Task edit - new_header: New task - statuses: - open: Opened - closed: Closed - any: Any - subscribe: Subscribe - subscribe_btn: Subscribe - unsubscribe_btn: Unsubscribe - comments: confirm_delete: Are you sure to delete the comment? new_header: New comment @@ -413,23 +396,6 @@ en: edit_header: Edit category confirm_delete: Are you sure to delete this category? - issues: - list: List - edit: Edit - comments_header: Comments - new: New task - list_header: List - confirm_delete: Are you sure to delete this task? - edit_header: Task edit - new_header: New task - statuses: - open: Opened - closed: Closed - any: Any - subscribe: Subscribe - subscribe_btn: Subscribe - unsubscribe_btn: Unsubscribe - commits: subscribe_btn: Subscribe to commit unsubscribe_btn: Unsubscribe from commit @@ -593,11 +559,6 @@ en: save_error: Comment saves error destroyed: Comment deleted - issue: - saved: Task saved - save_error: Task saves error - destroyed: Task deleted - project: saved: Project saved save_error: Project saves error @@ -739,14 +700,6 @@ en: body: Content user: Author - issue: - title: Title - body: Content - user: Assigned - user_id: Assigned - project: Project - status: Status - private_user: login: Login password: Password diff --git a/config/locales/issues/issues.en.yml b/config/locales/issues/issues.en.yml new file mode 100644 index 000000000..5dae44b66 --- /dev/null +++ b/config/locales/issues/issues.en.yml @@ -0,0 +1,38 @@ +en: + activerecord: + attributes: + issue: + title: Title + body: Content + user: Assigned + user_id: Assigned + project: Project + status: Status + + layout: + issues: + accessory: Accessory issues + list: List + all: All + mine: Assigned to me + edit: Edit + comments_header: Comments + new: New task + list_header: List + confirm_delete: Are you sure to delete this task? + edit_header: Task edit + new_header: New task + statuses: + open: Opened + closed: Closed + any: Any + subscribe: Subscribe + subscribe_btn: Subscribe + unsubscribe_btn: Unsubscribe + + flash: + issue: + saved: Task saved + save_error: Task saves error + destroyed: Task deleted + diff --git a/config/locales/issues/issues.ru.yml b/config/locales/issues/issues.ru.yml new file mode 100644 index 000000000..8cc772e75 --- /dev/null +++ b/config/locales/issues/issues.ru.yml @@ -0,0 +1,37 @@ +ru: + activerecord: + attributes: + issue: + title: Заголовок + body: Содержание + user: Назначена + user_id: Назначена + project: Проект + status: Статус + + layout: + issues: + accessory: Принадлежность заданий + list: Список + all: Все + mine: Назначенные мне + edit: Редактировать + comments_header: Комментарии + new: Новая задача + list_header: Список + confirm_delete: Вы уверены, что хотите удалить эту задачу? + edit_header: Редактирование задачи + new_header: Новая задача + statuses: + open: Открытые + closed: Закрытые + any: Все + subscribe: Подписка на уведомления + subscribe_btn: Подписаться + unsubscribe_btn: Отписаться + + flash: + issue: + saved: Задача успешно сохранена + save_error: Не удалось сохранить задачу + destroyed: Задача успешно удалена \ No newline at end of file diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 8c8fac327..0a923a31b 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -108,23 +108,6 @@ ru: edit_header: Редактировать категорию confirm_delete: Вы уверены, что хотите удалить эту категорию? - issues: - list: Список - edit: Редактировать - comments_header: Комментарии - new: Новая задача - list_header: Список - confirm_delete: Вы уверены, что хотите удалить эту задачу? - edit_header: Редактирование задачи - new_header: Новая задача - statuses: - open: Открытые - closed: Закрытые - any: Все - subscribe: Подписка на уведомления - subscribe_btn: Подписаться - unsubscribe_btn: Отписаться - comments: confirm_delete: Вы уверены, что хотите удалить комментарий? new_header: Новый комментарий @@ -465,11 +448,6 @@ ru: save_error: Ошибка сохранения комментария destroyed: Комментарий удален - issue: - saved: Задача успешно сохранена - save_error: Не удалось сохранить задачу - destroyed: Задача успешно удалена - project: saved: Проект успешно сохранен save_error: Не удалось сохранить проект @@ -601,14 +579,6 @@ ru: body: Содержание user: Автор - issue: - title: Заголовок - body: Содержание - user: Назначена - user_id: Назначена - project: Проект - status: Статус - private_user: login: Логин password: Пароль From 76beb6a2776eb7b67d235b5d72afe552fc657e58 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Sun, 19 Feb 2012 23:27:47 +0600 Subject: [PATCH 02/87] [refs #194] add creator to issue --- app/models/issue.rb | 1 + app/models/user.rb | 4 ++++ db/migrate/20120219161749_add_creator_to_issue.rb | 5 +++++ 3 files changed, 10 insertions(+) create mode 100644 db/migrate/20120219161749_add_creator_to_issue.rb diff --git a/app/models/issue.rb b/app/models/issue.rb index be6598f2d..134a617ce 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -4,6 +4,7 @@ class Issue < ActiveRecord::Base belongs_to :project belongs_to :user + belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id' has_many :comments, :as => :commentable, :dependent => :destroy #, :finder_sql => proc { "comments.commentable_id = '#{self.id}' AND comments.commentable_type = '#{self.class.name}'"} has_many :subscribes, :as => :subscribeable, :dependent => :destroy #, :finder_sql => proc { "subscribes.subscribeable_id = '#{self.id}' AND subscribes.subscribeable_type = '#{self.class.name}'"} diff --git a/app/models/user.rb b/app/models/user.rb index 96c63dfb9..a80cbcc38 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -96,6 +96,10 @@ class User < ActiveRecord::Base email.downcase == commit.committer.email.downcase end + def avatar(size) + "https://secure.gravatar.com/avatar/#{Digest::MD5.hexdigest(email.downcase)}?s=#{size}&r=pg" + end + private def create_settings_notifier diff --git a/db/migrate/20120219161749_add_creator_to_issue.rb b/db/migrate/20120219161749_add_creator_to_issue.rb new file mode 100644 index 000000000..54a3ba492 --- /dev/null +++ b/db/migrate/20120219161749_add_creator_to_issue.rb @@ -0,0 +1,5 @@ +class AddCreatorToIssue < ActiveRecord::Migration + def change + add_column :issues, :creator_id, :integer + end +end From 5dcc4eabf823ce1cb648dd00f59c48ab2120f4a3 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Mon, 20 Feb 2012 22:54:45 +0600 Subject: [PATCH 03/87] [refs #194] tracker without tags manage --- app/assets/javascripts/radio.js | 6 +- app/assets/javascripts/tracker.js | 237 ++++++++++++++++----------- app/controllers/issues_controller.rb | 17 +- app/views/issues/_list.html.haml | 42 +++-- app/views/issues/_sidebar.html.haml | 54 +++--- app/views/issues/index.html.haml | 19 +++ app/views/layouts/issues.html.haml | 4 + app/views/platforms/show.html.haml | 112 +++---------- config/locales/issues/issues.en.yml | 8 +- config/locales/issues/issues.ru.yml | 8 +- 10 files changed, 263 insertions(+), 244 deletions(-) create mode 100644 app/views/layouts/issues.html.haml diff --git a/app/assets/javascripts/radio.js b/app/assets/javascripts/radio.js index 2090fedf3..c79a8613a 100644 --- a/app/assets/javascripts/radio.js +++ b/app/assets/javascripts/radio.js @@ -102,7 +102,11 @@ var el = el, el.next().find("input").eq(0).attr("disabled","disabled"); } - el.next().bind("mousedown", function(e) { changeRadio(jQuery(this)) }); + el.next().bind("mousedown", function(e) { + changeRadio(jQuery(this)); + $(this).find("input:radio").change(); + }); + if(jQuery.browser.msie) el.next().find("input").eq(0).bind("click", function(e) { changeVisualRadio(jQuery(this)) }); else el.next().find("input").eq(0).bind("change", function(e) { changeVisualRadio(jQuery(this)) }); el.remove(); diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/tracker.js index 74b75bb65..88c885f65 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/tracker.js @@ -1,37 +1,49 @@ $(document).ready(function() { - $("#closed-switcher").click(function() { - if ($("#blue-switch-select").css("margin-left") != "130px") { - $("#blue-switch-select").animate({"margin-left": "+=130px"}, "fast"); - $("#table1").fadeOut(0); - $("#table2").fadeIn("slow"); - } - else { - $("#blue-switch-select").animate({"margin-left": "-=130px"}, "fast"); - $("#table2").fadeOut(0); - $("#table1").fadeIn("slow"); - } + $("#closed-switcher").live('click', function() { + if ($("#blue-switch-select").css("margin-left") != "130px") { + $("#blue-switch-select").animate({"margin-left": "+=130px"}, "fast"); + $("#table1").fadeOut(0); + $("#table2").fadeIn("slow"); + var status = 'closed' + } + else { + $("#blue-switch-select").animate({"margin-left": "-=130px"}, "fast"); + $("#table2").fadeOut(0); + $("#table1").fadeIn("slow"); + var status = 'open' + } + var form = $('#filter_issues'); + $.ajax({ + type: "GET", + url: form.attr("action"), + data: form.serialize() + '&status=' + status, + success: function(data){ + $('article').html(data); + $(".niceRadio").each(function() { changeRadioStart(jQuery(this)) }); + } + }); }); }); -$(document).ready(function() { -$("#myTable").tablesorter({ - headers: { - 1: { - sorter: false - } - } -}); +$(document).ready(function() { +$("#myTable").tablesorter({ + headers: { + 1: { + sorter: false + } + } +}); }); -$(document).ready(function() { -$("#myTable2").tablesorter({ - headers: { - 1: { - sorter: false +$(document).ready(function() { +$("#myTable2").tablesorter({ + headers: { + 1: { + sorter: false } } -}); +}); }); $(document).ready(function() { @@ -50,73 +62,73 @@ $(document).ready(function() { $(document).ready(function() { $("div.div-tracker-lables").click(function() { - var flag = this.id; - flag = flag.replace("label-","flag-"); - var bg = $("#"+flag).css("background-color"); - if ($(this).css("background-color") != bg) { - $(this).css("background-color",bg); - $(this).css("color","#FFFFFF"); - var labels = document.getElementsByName("label"); - var rows = document.getElementsByName("row"); - var arrayLabels; - var rowState = 0; - for (var r in rows) { - for (var l in labels) { - var ro = document.getElementById(rows[r].id); - var cls = ro.className; - var clsLabel = labels[l].id.split("label-")[1]; - if (($("#"+labels[l].id).css("background-color") != "rgb(247, 247, 247)")&&($("#"+labels[l].id).css("background-color") != "transparent")) { - if (cls.indexOf(clsLabel) != -1) { - rowState = 1; - } - } - } - if (rowState == 1) { - showRow(rows[r].id); - rowState = 0; - } - else { - hideRow(rows[r].id); - } - } - } else { - $(this).css("background-color","rgb(247, 247, 247)"); - $(this).css("color","#565657"); - var labels = document.getElementsByName("label"); - var rows = document.getElementsByName("row"); - var rowState = 0; - var labelState = 0; - for (var l in labels) { - if (($("#"+labels[l].id).css("background-color") != "rgb(247, 247, 247)")&&($("#"+labels[l].id).css("background-color") != "transparent")) { - labelState = 1; - } - } - if (labelState == 1) { - for (var r in rows) { - for (var l in labels) { - var ro = document.getElementById(rows[r].id); - var cls = ro.className; - var clsLabel = labels[l].id.split("label-")[1]; - if (($("#"+labels[l].id).css("background-color") != "rgb(247, 247, 247)")&&($("#"+labels[l].id).css("background-color") != "transparent")) { - if (cls.indexOf(clsLabel) != -1) { - rowState = 1; - } - } - } - if (rowState == 1) { - showRow(rows[r].id); - rowState = 0; - } - else { - hideRow(rows[r].id); - } - } - } else { - for (var r in rows) { - showRow(rows[r].id); - } - } - } + var flag = this.id; + flag = flag.replace("label-","flag-"); + var bg = $("#"+flag).css("background-color"); + if ($(this).css("background-color") != bg) { + $(this).css("background-color",bg); + $(this).css("color","#FFFFFF"); + var labels = document.getElementsByName("label"); + var rows = document.getElementsByName("row"); + var arrayLabels; + var rowState = 0; + for (var r in rows) { + for (var l in labels) { + var ro = document.getElementById(rows[r].id); + var cls = ro.className; + var clsLabel = labels[l].id.split("label-")[1]; + if (($("#"+labels[l].id).css("background-color") != "rgb(247, 247, 247)")&&($("#"+labels[l].id).css("background-color") != "transparent")) { + if (cls.indexOf(clsLabel) != -1) { + rowState = 1; + } + } + } + if (rowState == 1) { + showRow(rows[r].id); + rowState = 0; + } + else { + hideRow(rows[r].id); + } + } + } else { + $(this).css("background-color","rgb(247, 247, 247)"); + $(this).css("color","#565657"); + var labels = document.getElementsByName("label"); + var rows = document.getElementsByName("row"); + var rowState = 0; + var labelState = 0; + for (var l in labels) { + if (($("#"+labels[l].id).css("background-color") != "rgb(247, 247, 247)")&&($("#"+labels[l].id).css("background-color") != "transparent")) { + labelState = 1; + } + } + if (labelState == 1) { + for (var r in rows) { + for (var l in labels) { + var ro = document.getElementById(rows[r].id); + var cls = ro.className; + var clsLabel = labels[l].id.split("label-")[1]; + if (($("#"+labels[l].id).css("background-color") != "rgb(247, 247, 247)")&&($("#"+labels[l].id).css("background-color") != "transparent")) { + if (cls.indexOf(clsLabel) != -1) { + rowState = 1; + } + } + } + if (rowState == 1) { + showRow(rows[r].id); + rowState = 0; + } + else { + hideRow(rows[r].id); + } + } + } else { + for (var r in rows) { + showRow(rows[r].id); + } + } + } }); }); @@ -130,9 +142,38 @@ function showRow(elem) { } function hideRow(elem) { - if ($("#"+elem).css("display") != "none") { - $("#"+elem).fadeOut("fast"); - } else { - //$("#"+elem).fadeOut(0); - } -} \ No newline at end of file + if ($("#"+elem).css("display") != "none") { + $("#"+elem).fadeOut("fast"); + } else { + //$("#"+elem).fadeOut(0); + } +} + +$(document).ready(function() { + $("#myradio1").live('change', function(event) { + var form = $('#filter_issues'); + $.ajax({ + type: "GET", + url: form.attr("action"), + data: form.serialize(), + success: function(data){ + $('article').html(data); + $(".niceRadio").each(function() { changeRadioStart(jQuery(this)) }); + } + }); + return false; + }); + + $('#search_issue').live('submit', function() { + $.ajax({ + type: "GET", + url: $(this).attr("action"), + data: $(this).serialize(), + success: function(data){ + $('article').html(data); + $(".niceRadio").each(function() { changeRadioStart(jQuery(this)) }); + } + }); + return false; + }); +}); diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 466e574db..eb9cc9d46 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -8,16 +8,21 @@ class IssuesController < ApplicationController load_and_authorize_resource :issue, :through => :project, :find_by => :serial_id autocomplete :user, :uname + layout 'application' def index @issues = @project.issues - case params[:status] - when 'open' - @issues = @issues.where(:status => 'open') - when 'closed' - @issues = @issues.where(:status => 'closed') + @is_assigned_to_me = params[:filter] == 'to_me' + @is_all = params[:filter] == 'all' + @issues = @issues.where(:user_id => current_user.id) if @is_assigned_to_me + @status = (params[:status] if ['open', 'closed'].include? params[:status]) || 'open' + + if params[:search] + @is_assigned_to_me = false + @issues = @project.issues.where('issues.title ILIKE ?', "%#{params[:search]}%") end - @issues = @issues.paginate :per_page => 10, :page => params[:page] + @issues = @issues.includes(:creator, :user).paginate :per_page => 10, :page => params[:page] + render :layout => request.format == '*/*' ? 'issues' : 'application' # maybe FIXME '*/*'? end def new diff --git a/app/views/issues/_list.html.haml b/app/views/issues/_list.html.haml index 096558d58..64251d499 100644 --- a/app/views/issues/_list.html.haml +++ b/app/views/issues/_list.html.haml @@ -1,18 +1,24 @@ -%table.table - %tr - %th.first= t("activerecord.attributes.issue.title") - %th.first= t("activerecord.attributes.issue.user") - %th.first= t("activerecord.attributes.issue.status") - %th.last   - - @issues.each do |issue| - %tr{:class => cycle("odd", "even")} - %td - = link_to issue.title, [@project, issue] - %td - = link_to issue.user.uname, user_path(issue.user) if issue.user - %td - = issue.status - %td.last - = link_to t("layout.show"), [@project, issue] - | - = link_to t("layout.delete"), project_issue_path(@project, issue), :method => :delete, :confirm => t("layout.issues.confirm_delete") if can? :destroy, issue +%tr#row1.2-3-stable{:name => "row"} + %td.td0 + %span{:style => "display: none;"}=issue.serial_id + %td.td1=issue.serial_id + %td + %div=issue.title + .smalltext + =issue.created_at.to_s(:long) + =t("layout.issues.by") if issue.creator + =link_to(issue.creator.uname, user_path(issue.creator)) if issue.creator + .label.selected.tracker + .labeltext.selected{:style => "background: #39b54a;"} + 2-3 stable + .both + %td.td3 + .code=link_to '#', [@project, issue] + .avatar + =link_to image_tag(issue.user.avatar(22), :alt => 'avatar'), user_path(issue.user) if issue.user + %a{:href => "#{project_issue_path @project, issue}#block-list"} + .answers + .pic + %img{:alt => '', :src => "/assets/answers.png"} + .count=issue.comments.count + .both \ No newline at end of file diff --git a/app/views/issues/_sidebar.html.haml b/app/views/issues/_sidebar.html.haml index 22070beed..a8bb181cc 100644 --- a/app/views/issues/_sidebar.html.haml +++ b/app/views/issues/_sidebar.html.haml @@ -1,26 +1,28 @@ -content_for :sidebar do + =form_tag project_issues_path(@project), :id => 'filter_issues', :method => :get do + .bordered.nopadding + %h3=t("layout.issues.accessory") + %table + %tr + %td.width18 + =radio_button_tag :myradio, 'all', !@is_assigned_to_me, {:id => 'myradio1', :class => 'niceRadio', :name => 'filter'} + %td.width135 + =t("layout.issues.all") + %td.width30.right + = @project.issues.count + %tr + %td + =radio_button_tag :myradio, 'to_me', @is_assigned_to_me, {:id => 'myradio1', :class => 'niceRadio', :name => 'filter'} + %td + =t("layout.issues.to_me") + %td.width30.right + = @project.issues.where(:user_id => current_user).count + =form_tag project_issues_path(@project), :id => 'search_issue', :method => :get do + .bordered.bpadding20 + =text_field_tag :search, t('layout.issues.search'), :class => 'gray', :onClick => "if(this.value=='#{t('layout.issues.search')}'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='#{t('layout.issues.search')}';this.className='gray';}" .bordered.nopadding - %h3=t("layout.issues.accessory") - %table - %tr - %td.width18 - %input#myradio1.niceRadio{:checked => "checked", :name => "myradio", :tabindex => "1", :type => "radio"} - %td.width135 - =t("layout.issues.all") - %td.width30.right - = @project.issues.count - %tr - %td - %input#myradio2.niceRadio{:name => "myradio", :tabindex => "2", :type => "radio"} - %td - =t("layout.issues.mine") - %td.width30.right - = @project.issues.where(:user_id => current_user).count - .bordered.bpadding20 - %input.gray{:onClick => "if(this.value=='Найти задачу...'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='Найти задачу...';this.className='gray';}", :type => "text", :value => "Найти задачу..."}/ - .bordered.nopadding - %h3.bmargin10 Добавить задачу - %a.button{:href => "#"} Добавить + %h3.bmargin10=t('layout.issues.new') + = link_to t("layout.add"), new_project_issue_path(@project), :class => 'button' if can? :new, Issue.new(:project_id => @project.id) .block %h3 Метки #labels-edit{:style => "display: none;"} @@ -28,25 +30,25 @@ .labeltext.edit{:style => "background: #39b54a;"} .text 2-3 stable #delete1.delete - %img{:alt => "x", :src => "pics/x-label.png"}/ + %img{:alt => "x", :src => "/assets/x-label.png"}/ .both #label-delete2.label.edit .labeltext.edit{:style => "background: #ed1c24;"} .text 3-0 stable #delete2.delete - %img{:alt => "x", :src => "pics/x-label.png"}/ + %img{:alt => "x", :src => "/assets/x-label.png"}/ .both #label-delete3.label.edit .labeltext.edit{:style => "background: #ed145b;"} .text actionpack #delete3.delete - %img{:alt => "x", :src => "pics/x-label.png"}/ + %img{:alt => "x", :src => "/assets/x-label.png"}/ .both #label-delete4.label.edit .labeltext.edit{:style => "background: #92278f;"} .text activemodel #delete4.delete - %img{:alt => "x", :src => "pics/x-label.png"}/ + %img{:alt => "x", :src => "/assets/x-label.png"}/ .both %input.gray{:onClick => "if(this.value=='Название новой метки'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='Название новой метки';this.className='gray';}", :type => "text", :value => "Название новой метки"}/ .colors @@ -115,4 +117,4 @@ 3 .both .both - %a#manage-labels.button.tmargin10{:href => "#"} Manage \ No newline at end of file + %a#manage-labels.button.tmargin10{:href => "#"} Manage diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index 2b49a31ef..0d7efd0e0 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -1,3 +1,22 @@ -render :partial => 'projects/submenu' -render :partial => 'issues/sidebar' +#closed-switcher.blue-switcher + .open + ="#{t('layout.issues.statuses.open')} (#{@issues.where(:status => 'open').count})" + #closed-tasks.closed + ="#{t('layout.issues.statuses.closed')} (#{@issues.where(:status => 'closed').count})" + #blue-switch-select.selected{:style => "margin-left: #{@status == 'open' ? '0' : '130'}px;"} + .both +.both +#table1 + %table#myTable.tablesorter.tracker{:cellpadding => "0", :cellspacing => "0"} + %thead + %tr + %th.th1{:colspan => "2"} + =t('layout.issues.number') + %th{:colspan => "2"} + =t('layout.issues.description') + %tbody + - @issues.where(:status => @status).each do |issue| + = render :partial => 'issues/list', :locals => {:issue => issue} \ No newline at end of file diff --git a/app/views/layouts/issues.html.haml b/app/views/layouts/issues.html.haml new file mode 100644 index 000000000..75987198b --- /dev/null +++ b/app/views/layouts/issues.html.haml @@ -0,0 +1,4 @@ +- if content_for?(:sidebar) + %aside= yield :sidebar + .right= yield +.both \ No newline at end of file diff --git a/app/views/platforms/show.html.haml b/app/views/platforms/show.html.haml index baf917e62..72ab6577a 100644 --- a/app/views/platforms/show.html.haml +++ b/app/views/platforms/show.html.haml @@ -1,119 +1,49 @@ .block .secondary-navigation %ul.wat-cf - %li.first= link_to t("layout.platforms.list"), platforms_path - %li= link_to t("layout.platforms.new"), new_platform_path if can? :create, Platform - %li.active= link_to t("layout.platforms.show"), platform_path - %li= link_to t("layout.platforms.private_users"), platform_private_users_path(@platform) + %li.first= link_to t("layout.repositories.list"), @repositories_path + "#repositories" + %li= link_to t("layout.repositories.new"), @new_repository_path + %li.active= link_to t("layout.repositories.show"), repository_path(@repository) .content .inner %p %b - = t("activerecord.attributes.platform.name") + = t("activerecord.attributes.repository.name") \: - = @platform.name + = @repository.name %p %b - = t("activerecord.attributes.platform.description") + = t("activerecord.attributes.repository.description") \: - = @platform.description - - if @platform.parent - %p - %b - = t("activerecord.attributes.platform.parent") - \: - - if @platform.parent - = link_to @platform.parent.description, platform_path(@platform.parent) + = @repository.description %p %b - = t('layout.platforms.location') + = t("activerecord.attributes.repository.platform") \: - = @platform.path - + = link_to @repository.platform.description, url_for(@repository.platform) %p %b - = t('layout.platforms.owner') + = t("activerecord.attributes.repository.owner") \: - = link_to @platform.owner.try(:name), url_for(@platform.owner) - - %p - %b - = t('layout.platforms.visibility') - \: - = @platform.visibility - - %p - %b - = t('layout.platforms.platform_type') - \: - = @platform.platform_type - - %p - %b - = t('layout.platforms.distrib_type') - \: - = @platform.distrib_type - - + = link_to @repository.owner.try(:name), url_for(@repository.owner) .wat-cf - -#= link_to image_tag("web-app-theme/icons/application_edit.png", :alt => t("layout.edit")) + " " + t("layout.edit"), edit_platform_path(@platform), :class => "button" - = link_to image_tag("web-app-theme/icons/cross.png", :alt => t("layout.delete")) + " " + t("layout.delete"), platform_path(@platform), :method => "delete", :class => "button", :confirm => t("layout.platforms.confirm_delete") if can? :delete, @platform - - if @platform.released? - = link_to t("layout.platforms.unfreeze"), unfreeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_unfreeze"), :method => :post, :class => "button" if can? :unfreeze, @platform - - else - = link_to t("layout.platforms.freeze"), freeze_platform_path(@platform), :confirm => I18n.t("layout.platforms.confirm_freeze"), :method => :post, :class => "button" if can? :freeze, @platform - = link_to "Клонировать", clone_platform_path(@platform), :class => "button" if can? :clone, @platform - = link_to t("layout.platforms.build_all"), build_all_platform_path(@platform), :confirm => I18n.t("layout.confirm"), :method => :post, :class => "button" if can? :build_all, @platform - = link_to t("layout.platforms.edit"), edit_platform_path(@platform), :class => "button" if can? :edit, @platform + = link_to image_tag("web-app-theme/icons/cross.png", :alt => t("layout.delete")) + " " + t("layout.delete"), @repository_path, :method => "delete", :class => "button", :confirm => t("layout.repositories.confirm_delete") if can? :destroy, @repository -%a{ :name => "repositories" } +%a{ :name => "projects" } .block .secondary-navigation %ul.wat-cf - %li.first.active= link_to t("layout.repositories.list"), platform_path(@platform) + "#repositories" - %li= link_to t("layout.repositories.new"), new_platform_repository_path(@platform) if can? :create, Repository.build_stub(@platform) + %li.first.active= link_to t("layout.projects.list"), repository_path(@repository) + "#projects" + %li= link_to t("layout.projects.add"), url_for(:controller => :repositories, :action => :add_project) .content %h2.title - = t("layout.repositories.list_header") + = t("layout.projects.list_header") .inner - %table.table - %tr - %th.first= t("activerecord.attributes.repository.description") - %th.last   - - @platform.repositories.recent.each do |repository| - %tr{:class => cycle("odd", "even")} - %td - = link_to repository.description, platform_repository_path(@platform, repository) - %td.last - = link_to t("layout.show"), platform_repository_path(@platform, repository) - | - = link_to t("layout.delete"), platform_repository_path(@platform, repository), :method => :delete, :confirm => t("layout.repositories.confirm_delete") if can? :destroy, @platform + = render :partial => 'shared/search_form' + = render :partial => 'proj_list1', :object => @projects .actions-bar.wat-cf .actions + = will_paginate @projects, :param_name => :project_page -%a{ :name => "producs" } -.block - .secondary-navigation - %ul.wat-cf - %li.first.active= link_to t("layout.products.list"), platform_path(@platform) + "#products" - %li= link_to t("layout.products.new"), new_platform_product_path(@platform) if can? :create, Product.new(:platform_id => @platform.id) - .content - %h2.title - = t("layout.products.list_header") - .inner - %table.table - %tr - %th.first= t("activerecord.attributes.product.name") - %th.last   - - @platform.products.recent.each do |product| - %tr{:class => cycle("odd", "even")} - %td - = link_to product.name, [@platform, product] - %td.last - = link_to t("layout.edit"), edit_platform_product_path(@platform, product) if can? :update, product - | - = link_to t("layout.delete"), platform_product_path(@platform, product), :method => :delete, :confirm => t("layout.products.confirm_delete") if can? :destroy, product - = (product.can_clone? ? "| #{link_to t("layout.products.clone"), clone_platform_product_path(@platform, product)}" : "").html_safe - .actions-bar.wat-cf - .actions -- content_for :sidebar, render(:partial => 'sidebar') + +-# content_for :sidebar, render(:partial => 'sidebar') diff --git a/config/locales/issues/issues.en.yml b/config/locales/issues/issues.en.yml index 5dae44b66..413be359d 100644 --- a/config/locales/issues/issues.en.yml +++ b/config/locales/issues/issues.en.yml @@ -14,10 +14,11 @@ en: accessory: Accessory issues list: List all: All - mine: Assigned to me + to_me: Assigned to me edit: Edit + search: Search issue... comments_header: Comments - new: New task + new: New issue list_header: List confirm_delete: Are you sure to delete this task? edit_header: Task edit @@ -29,6 +30,9 @@ en: subscribe: Subscribe subscribe_btn: Subscribe unsubscribe_btn: Unsubscribe + number: Number + description: Description + by: by flash: issue: diff --git a/config/locales/issues/issues.ru.yml b/config/locales/issues/issues.ru.yml index 8cc772e75..d7477a4c0 100644 --- a/config/locales/issues/issues.ru.yml +++ b/config/locales/issues/issues.ru.yml @@ -14,10 +14,11 @@ ru: accessory: Принадлежность заданий list: Список all: Все - mine: Назначенные мне + to_me: Назначенные мне edit: Редактировать + search: Найти задачу... comments_header: Комментарии - new: Новая задача + new: Добавить задачу list_header: Список confirm_delete: Вы уверены, что хотите удалить эту задачу? edit_header: Редактирование задачи @@ -29,6 +30,9 @@ ru: subscribe: Подписка на уведомления subscribe_btn: Подписаться unsubscribe_btn: Отписаться + number: Номер + description: Описание + by: flash: issue: From 0ce76207afd42e0a1f93000fa8586f6288aa3c79 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 21 Feb 2012 00:41:40 +0600 Subject: [PATCH 04/87] [refs #194] Add issue tags --- app/models/issue.rb | 1 + app/models/tag.rb | 8 ++++++++ config/locales/issues/issues.en.yml | 3 ++- config/locales/issues/issues.ru.yml | 4 +++- db/migrate/20120220175615_create_tags.rb | 15 +++++++++++++++ spec/models/tag_spec.rb | 5 +++++ 6 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 app/models/tag.rb create mode 100644 db/migrate/20120220175615_create_tags.rb create mode 100644 spec/models/tag_spec.rb diff --git a/app/models/issue.rb b/app/models/issue.rb index 134a617ce..d01063c8d 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -8,6 +8,7 @@ class Issue < ActiveRecord::Base has_many :comments, :as => :commentable, :dependent => :destroy #, :finder_sql => proc { "comments.commentable_id = '#{self.id}' AND comments.commentable_type = '#{self.class.name}'"} has_many :subscribes, :as => :subscribeable, :dependent => :destroy #, :finder_sql => proc { "subscribes.subscribeable_id = '#{self.id}' AND subscribes.subscribeable_type = '#{self.class.name}'"} + has_many :tags, :dependent => :destroy validates :title, :body, :project_id, :presence => true diff --git a/app/models/tag.rb b/app/models/tag.rb new file mode 100644 index 000000000..4f8268ba8 --- /dev/null +++ b/app/models/tag.rb @@ -0,0 +1,8 @@ +class Tag < ActiveRecord::Base + belongs_to :issue + + validates :name, :color, :presence => true + validates :color, :format => { :with => /\A([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\z/, :message => I18n.t('layout.issues.invalid_labels')} + + before_create {|t| t.project_id = t.issue.project_id} +end diff --git a/config/locales/issues/issues.en.yml b/config/locales/issues/issues.en.yml index 413be359d..8b56638d8 100644 --- a/config/locales/issues/issues.en.yml +++ b/config/locales/issues/issues.en.yml @@ -33,10 +33,11 @@ en: number: Number description: Description by: by + labels: Labels + invalid_labels: Invalid hex color code flash: issue: saved: Task saved save_error: Task saves error destroyed: Task deleted - diff --git a/config/locales/issues/issues.ru.yml b/config/locales/issues/issues.ru.yml index d7477a4c0..ae35430c6 100644 --- a/config/locales/issues/issues.ru.yml +++ b/config/locales/issues/issues.ru.yml @@ -33,9 +33,11 @@ ru: number: Номер description: Описание by: + labels: Метки + invalid_labels: Неверный hex код flash: issue: saved: Задача успешно сохранена save_error: Не удалось сохранить задачу - destroyed: Задача успешно удалена \ No newline at end of file + destroyed: Задача успешно удалена diff --git a/db/migrate/20120220175615_create_tags.rb b/db/migrate/20120220175615_create_tags.rb new file mode 100644 index 000000000..e693bbb32 --- /dev/null +++ b/db/migrate/20120220175615_create_tags.rb @@ -0,0 +1,15 @@ +class CreateTags < ActiveRecord::Migration + def change + create_table :tags do |t| + t.string :name, :null => false + t.string :color, :null => false + t.integer :issue_id, :null => false + t.integer :project_id, :null => false + + t.timestamps + end + + add_index :tags, :issue_id + add_index :tags, :project_id + end +end diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb new file mode 100644 index 000000000..af7e7325e --- /dev/null +++ b/spec/models/tag_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe Tag do + pending "add some examples to (or delete) #{__FILE__}" +end From ecb29d17628efc1377f681276c41294e2ca2af11 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 22 Feb 2012 02:28:04 +0600 Subject: [PATCH 05/87] [refs #194] tags -> labels --- app/models/issue.rb | 3 ++- app/models/{tag.rb => label.rb} | 7 +++---- app/models/labeling.rb | 7 +++++++ app/models/project.rb | 4 +++- config/locales/issues/issues.en.yml | 3 +++ config/locales/issues/issues.ru.yml | 3 +++ config/routes.rb | 4 ++++ db/migrate/20120220175615_create_labels.rb | 21 +++++++++++++++++++++ db/migrate/20120220175615_create_tags.rb | 15 --------------- spec/models/labels_spec.rb | 5 +++++ 10 files changed, 51 insertions(+), 21 deletions(-) rename app/models/{tag.rb => label.rb} (62%) create mode 100644 app/models/labeling.rb create mode 100644 db/migrate/20120220175615_create_labels.rb delete mode 100644 db/migrate/20120220175615_create_tags.rb create mode 100644 spec/models/labels_spec.rb diff --git a/app/models/issue.rb b/app/models/issue.rb index d01063c8d..90f01e1b1 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -8,7 +8,8 @@ class Issue < ActiveRecord::Base has_many :comments, :as => :commentable, :dependent => :destroy #, :finder_sql => proc { "comments.commentable_id = '#{self.id}' AND comments.commentable_type = '#{self.class.name}'"} has_many :subscribes, :as => :subscribeable, :dependent => :destroy #, :finder_sql => proc { "subscribes.subscribeable_id = '#{self.id}' AND subscribes.subscribeable_type = '#{self.class.name}'"} - has_many :tags, :dependent => :destroy + has_many :labels, :through => :labelings + has_many :labelings validates :title, :body, :project_id, :presence => true diff --git a/app/models/tag.rb b/app/models/label.rb similarity index 62% rename from app/models/tag.rb rename to app/models/label.rb index 4f8268ba8..16a01c91a 100644 --- a/app/models/tag.rb +++ b/app/models/label.rb @@ -1,8 +1,7 @@ -class Tag < ActiveRecord::Base - belongs_to :issue +class Label < ActiveRecord::Base + has_many :labelings + has_many :issues, :through => :labelings validates :name, :color, :presence => true validates :color, :format => { :with => /\A([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\z/, :message => I18n.t('layout.issues.invalid_labels')} - - before_create {|t| t.project_id = t.issue.project_id} end diff --git a/app/models/labeling.rb b/app/models/labeling.rb new file mode 100644 index 000000000..899853d7d --- /dev/null +++ b/app/models/labeling.rb @@ -0,0 +1,7 @@ +class Labeling < ActiveRecord::Base + belongs_to :issue + belongs_to :project + belongs_to :label + + #before_create {|t| t.project_id = t.issue.project_id} +end diff --git a/app/models/project.rb b/app/models/project.rb index 68bdc9f62..0cc719c2e 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -17,6 +17,8 @@ class Project < ActiveRecord::Base has_many :relations, :as => :target, :dependent => :destroy has_many :collaborators, :through => :relations, :source => :object, :source_type => 'User' has_many :groups, :through => :relations, :source => :object, :source_type => 'Group' + has_many :labelings + has_many :labels, :through => :labelings validates :name, :uniqueness => {:scope => [:owner_id, :owner_type], :case_sensitive => false}, :presence => true, :format => { :with => /^[a-zA-Z0-9_\-\+\.]+$/ } validates :owner, :presence => true @@ -61,7 +63,7 @@ class Project < ActiveRecord::Base end end - def build_for(platform, user) + def build_for(platform, user) build_lists.create do |bl| bl.pl = platform bl.bpl = platform diff --git a/config/locales/issues/issues.en.yml b/config/locales/issues/issues.en.yml index 8b56638d8..def827d15 100644 --- a/config/locales/issues/issues.en.yml +++ b/config/locales/issues/issues.en.yml @@ -35,6 +35,9 @@ en: by: by labels: Labels invalid_labels: Invalid hex color code + new_label: New label name + label_custom_color: Custom color + label_manage: Manage flash: issue: diff --git a/config/locales/issues/issues.ru.yml b/config/locales/issues/issues.ru.yml index ae35430c6..b4bdc595e 100644 --- a/config/locales/issues/issues.ru.yml +++ b/config/locales/issues/issues.ru.yml @@ -35,6 +35,9 @@ ru: by: labels: Метки invalid_labels: Неверный hex код + new_label: Название новой метки + label_custom_color: Свой цвет + label_manage: Управление flash: issue: diff --git a/config/routes.rb b/config/routes.rb index cf410d285..0ece275be 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -119,6 +119,10 @@ Rosa::Application.routes.draw do resources :issues do resources :comments, :only => [:edit, :create, :update, :destroy] resources :subscribes, :only => [:create, :destroy] + collection do + post :create_label + post :delete_label + end end resource :repo, :controller => "git/repositories", :only => [:show] resources :build_lists, :only => [:index, :new, :create] diff --git a/db/migrate/20120220175615_create_labels.rb b/db/migrate/20120220175615_create_labels.rb new file mode 100644 index 000000000..18275962f --- /dev/null +++ b/db/migrate/20120220175615_create_labels.rb @@ -0,0 +1,21 @@ +class CreateLabels < ActiveRecord::Migration + def change + create_table :labels do |t| + t.string :name, :null => false + t.string :color, :null => false + + t.timestamps + end + + create_table :labelings do |t| + t.references :label, :null => false + t.references :issue + t.references :project + + t.timestamps + end + + add_index :labelings, :issue_id + add_index :labelings, :project_id + end +end diff --git a/db/migrate/20120220175615_create_tags.rb b/db/migrate/20120220175615_create_tags.rb deleted file mode 100644 index e693bbb32..000000000 --- a/db/migrate/20120220175615_create_tags.rb +++ /dev/null @@ -1,15 +0,0 @@ -class CreateTags < ActiveRecord::Migration - def change - create_table :tags do |t| - t.string :name, :null => false - t.string :color, :null => false - t.integer :issue_id, :null => false - t.integer :project_id, :null => false - - t.timestamps - end - - add_index :tags, :issue_id - add_index :tags, :project_id - end -end diff --git a/spec/models/labels_spec.rb b/spec/models/labels_spec.rb new file mode 100644 index 000000000..af7e7325e --- /dev/null +++ b/spec/models/labels_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe Tag do + pending "add some examples to (or delete) #{__FILE__}" +end From 9e5e7cd5e48ffe9d901ca8d87e5acbcc8d3b0be2 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 23 Feb 2012 20:48:31 +0600 Subject: [PATCH 06/87] [refs #194] labels manage --- app/assets/images/radio.png | Bin 3317 -> 3501 bytes app/assets/javascripts/radio.js | 6 +- app/assets/javascripts/tracker.js | 255 +++++++++------------ app/assets/stylesheets/custom.scss | 7 + app/assets/stylesheets/main.scss | 2 +- app/controllers/issues_controller.rb | 50 ++-- app/models/label.rb | 4 +- app/models/labeling.rb | 2 - app/models/project.rb | 3 +- app/views/issues/_colors_chooser.html.haml | 6 + app/views/issues/_labels.html.haml | 47 ++++ app/views/issues/_list.html.haml | 6 +- app/views/issues/_sidebar.html.haml | 96 +------- app/views/issues/index.html.haml | 3 +- config/locales/en.yml | 1 + config/locales/issues/issues.en.yml | 1 + config/locales/issues/issues.ru.yml | 1 + config/locales/ru.yml | 1 + config/routes.rb | 8 +- db/migrate/20120220175615_create_labels.rb | 4 +- spec/models/tag_spec.rb | 5 - 21 files changed, 227 insertions(+), 281 deletions(-) create mode 100644 app/views/issues/_colors_chooser.html.haml create mode 100644 app/views/issues/_labels.html.haml delete mode 100644 spec/models/tag_spec.rb diff --git a/app/assets/images/radio.png b/app/assets/images/radio.png index 28f16dfae4866d11328db3493e5dce1fadc97bad..fb43860485724c4ca68f2f7c69e6c38f79ca7fd7 100644 GIT binary patch delta 774 zcmV+h1Nr>*8Lbo_+xK*tEe_m0&xh|gjij7 z9IenMs61P})h15g66CCjqm73+UH zE}|$39}b7_Se6wMMKQ+ne4D0e-!?WjN`Ak;QZAQY%d)JUD3Z-)2STAxcTZ2xNFWeM z9M8D7xA!BL%e|~rDodG6X5r95DFvkz*=+W%s;ZOKYSpe*tF(sMs;W-T&(Gg>?lJ%{ zGc$8d5QM9eBn?waeU9@4^GT94914GhE-H$`12_=jIPOX+m3m;?Hco5lbb2%p2;2t% zR#6mz=lKZBvb=5EIPGCsHXaU#BZ{I3EC3-Ei?v#og?bOq^GQw9;w*q*LqkJdRk*5Y z0>H5V3_^(ZFCv7Hp8yC8pjaxE@}el#Ewa76{T;v-Bg=BJQmO2krm5G{9YTM|mSGq> zvMd)F05DDS%li8IR6QaqD=W_lA=8I*GBh;wPS^F1g+gJ9Qc7!Grj*h`p)j?-zyHi9mIen07iw-X$8q<9!C*8RjkY#6 zHu9!vYPzoH4a3k0A+Ks~@iBif0e}D?2*3bPlx4Z-IWILj_!~d~z&QZF{(j>OO8*I^ z#pN|*#;1{Z_zaoxX)G?Uod_j=M@NUy+}wPgwgP5Ye7$@jboLY6aXil_0eC|xU)*x_6v-EN;f`~l z#JHj4m=tgF6p`Xh$8qoz0AU;`xyu~8mG%@F?Z15FIW?hl<3a)xBYo&f#sC0a$rvU^ z`f&5oc~2;@ZYW8TH0EUO?M$Gz^XSmJ|Hm1WYD4MI0J`5@_0$TDZvX%Q07*qoM6N<$ Ef?HW=`~Uy| delta 589 zcmV-T0ljA6vyB5*}AhVMUm{< zQ7lALi4Bzsfy7#=Vkko58!&b1g7^|_bm+uqU;%c-gajkqD>^x`Wu-%6-JR{T84evz zaMR5FZ}z+Y-8;Yk&)BvttV$^*gpg8FN*QB>khKNa^++kxG_9(NF-9qsQVJm)$BBQU zh*H|)$+C=d9)@AJtT)QC%yr!`3|BnU=@b!zAb=Z`=Q$!qQ3L>%epX8PzTe&~-}gD^ zQp&%c#bPlW4x8H)1VNG{0ALFt5RnklG!1MNAp{YH5Vrm@N-5Yvj^juvZN2)|L%P$m zbyr(@nx-Ly*o?9He7VCOV@QbdpPHD z90Pz206`FxWhsQ9l>Q%C06;`3rRRA%R{!#rrfE?Wx>fTM5dlC5;d!18PEW3rBx&2$ zOpXS11^*VkXaU!Q&HcJ<-(_{Gx)X6~cW$TG}n zz5Dom?IvfRf0}APbC [:show, :edit, :update, :destroy] - load_and_authorize_resource :project - load_and_authorize_resource :issue, :through => :project, :find_by => :serial_id + load_and_authorize_resource :project, :except => [:create_lable, :delete_label] + load_and_authorize_resource :issue, :through => :project, :find_by => :serial_id, :only => [:show, :edit, :update, :destroy] + before_filter :load_and_authorize_label, :only => [:create_label, :update_label, :destroy_label] autocomplete :user, :uname layout 'application' - def index - @issues = @project.issues + def index(status = 200) @is_assigned_to_me = params[:filter] == 'to_me' @is_all = params[:filter] == 'all' - @issues = @issues.where(:user_id => current_user.id) if @is_assigned_to_me @status = (params[:status] if ['open', 'closed'].include? params[:status]) || 'open' + @labels = params[:labels] || [] + + @issues = @project.issues + @issues = @issues.where(:user_id => current_user.id) if @is_assigned_to_me + @issues = @issues.joins(:labels).where(:labels => {:name => @labels}) unless @labels == [] if params[:search] @is_assigned_to_me = false + @is_all = 'all' + @status = 'open' + @labels = [] @issues = @project.issues.where('issues.title ILIKE ?', "%#{params[:search]}%") end - @issues = @issues.includes(:creator, :user).paginate :per_page => 10, :page => params[:page] - render :layout => request.format == '*/*' ? 'issues' : 'application' # maybe FIXME '*/*'? + @issues = @issues.includes(:creator, :user).order('serial_id desc').uniq.paginate :per_page => 10, :page => params[:page] + if status == 200 + render 'index', :layout => request.format == '*/*' ? 'issues' : 'application' # maybe FIXME '*/*'? + else + render :status => status, :nothing => true + end end def new @@ -73,13 +82,26 @@ class IssuesController < ApplicationController redirect_to root_path end + def create_label + status = @project.labels.create(:name => params[:name], :color => params[:color]) ? 200 : 500 + index(status) + end + + def update_label + status = @label.update_attributes( :name => params[:name], :color => params[:color]) ? 200 : 500 + index(status) + end + + def destroy_label + status = (@label && @label_destroy) ? 200 : 500 + index(status) + end + private - def find_project + def load_and_authorize_label @project = Project.find(params[:project_id]) - end - - def find_issue_by_serial_id - @issue = @project.issues.find_by_serial_id!(params[:id]) + @label = Label.find(params[:label_id]) if params[:label_id] + authorize! :write, @project end end diff --git a/app/models/label.rb b/app/models/label.rb index 16a01c91a..3bfbab17d 100644 --- a/app/models/label.rb +++ b/app/models/label.rb @@ -1,7 +1,9 @@ class Label < ActiveRecord::Base - has_many :labelings + has_many :labelings, :dependent => :destroy has_many :issues, :through => :labelings + belongs_to :project + validates :name, :uniqueness => { :scope => :project_id} validates :name, :color, :presence => true validates :color, :format => { :with => /\A([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})\z/, :message => I18n.t('layout.issues.invalid_labels')} end diff --git a/app/models/labeling.rb b/app/models/labeling.rb index 899853d7d..d03b0c6b3 100644 --- a/app/models/labeling.rb +++ b/app/models/labeling.rb @@ -1,7 +1,5 @@ class Labeling < ActiveRecord::Base belongs_to :issue - belongs_to :project belongs_to :label - #before_create {|t| t.project_id = t.issue.project_id} end diff --git a/app/models/project.rb b/app/models/project.rb index 0cc719c2e..53c48bebc 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -17,8 +17,7 @@ class Project < ActiveRecord::Base has_many :relations, :as => :target, :dependent => :destroy has_many :collaborators, :through => :relations, :source => :object, :source_type => 'User' has_many :groups, :through => :relations, :source => :object, :source_type => 'Group' - has_many :labelings - has_many :labels, :through => :labelings + has_many :labels validates :name, :uniqueness => {:scope => [:owner_id, :owner_type], :case_sensitive => false}, :presence => true, :format => { :with => /^[a-zA-Z0-9_\-\+\.]+$/ } validates :owner, :presence => true diff --git a/app/views/issues/_colors_chooser.html.haml b/app/views/issues/_colors_chooser.html.haml new file mode 100644 index 000000000..97eee6499 --- /dev/null +++ b/app/views/issues/_colors_chooser.html.haml @@ -0,0 +1,6 @@ +-current_color ||= '0054a6' +.colors + - ['0054a6', '00a651', 'ed1c24', 'e65c00', '9e005d', '464646', '8c6239'].each do |color| + .color{:style => "background: ##{color};"} + #choose1.choose{:value => color, :class => current_color == color ? 'selected' : ''} + .both diff --git a/app/views/issues/_labels.html.haml b/app/views/issues/_labels.html.haml new file mode 100644 index 000000000..8b06617cf --- /dev/null +++ b/app/views/issues/_labels.html.haml @@ -0,0 +1,47 @@ +.block + %h3=t('layout.issues.labels') + #labels-stock + =form_tag project_issues_path(@project), :id => 'filter_labels', :method => :get do + - @project.labels.each_with_index do |label, index| + .div-tracker-labels{:id => "label-#{label.name}", :style => @labels.include?(label.name) ? "background-color:##{label.color};color:'#FFF'" : ''} + .div-label-left + .label + .flag{:id => "flag-#{label.name}", :style => "background-color: ##{label.color};"} + .labeltext + =label.name + =check_box_tag 'labels[]', label.name, @labels.include?(label.name), :style => 'display:none' + .both + .div-label-right=Labeling.joins(:label).where(:labels => {:name => label.name, :project_id => @project.id}).count + .both + .both + - if can? :write, @project + %a#manage-labels.button.tmargin10{:href => "#labels-stock"}=t('layout.issues.label_manage') + #labels-edit{:style => "display: none;"} + - @project.labels.each_with_index do |label, index| + .label.edit{:id => "label-#{index}"} + .labeltext.edit{:style => "background: ##{label.color};"} + .text=link_to(label.name, project_issues_update_label_path(@project, label.id), :class => 'edit_label') + .delete{:id => "delete#{index}"} + %a{:href => project_issues_delete_label_path(@project, label.id), :class => 'delete_label'} + %img{:alt => "x", :src => "/assets/x-label.png"} + .both + .edit_label_form{:style => 'display:none'} + =form_tag project_issues_update_label_path(@project, label.id), :id => 'update_label', :method => :post do + %input.gray{:name => 'name', :type => "text", :value => label.name} + =render :partial => 'issues/colors_chooser', :locals => {:current_color => label.color} + .lefter + %a{:href => "#custom_color-#{label.name}", :id => "custom_color-#{label.name}", :class => 'custom_color'}=t('layout.issues.label_custom_color') + =text_field_tag :color, label.color, :id => 'label_color', :class => 'gray', :style => 'display:none', :maxlength => 6 + .righter + =link_to t('layout.update'), project_issues_update_label_path(@project, label.id), :id => 'update_label', :class => 'button' + .both + + =form_tag create_label_project_issues_path(@project), :id => 'new_label', :method => :post do + %input.gray{:name => 'name', :onClick => "if(this.value=='#{t('layout.issues.new_label')}'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='#{t('layout.issues.new_label')}';this.className='gray';}", :type => "text", :value => "#{t('layout.issues.new_label')}"} + =render :partial => 'issues/colors_chooser' + .lefter + %a{:href => "#custom_color", :id => 'custom_color', :class => 'custom_color'}=t('layout.issues.label_custom_color') + =text_field_tag :color, '0054a6', :id => 'label_color', :class => 'gray', :style => 'display:none', :maxlength => 6 + .righter + =link_to t('layout.add'), create_label_project_issues_path(@project), :id => 'add_label', :class => 'button' + .both diff --git a/app/views/issues/_list.html.haml b/app/views/issues/_list.html.haml index 64251d499..9b23d23f7 100644 --- a/app/views/issues/_list.html.haml +++ b/app/views/issues/_list.html.haml @@ -1,4 +1,4 @@ -%tr#row1.2-3-stable{:name => "row"} +%tr#row1{:name => "row", :class => issue.labels.map(&:name).compact} %td.td0 %span{:style => "display: none;"}=issue.serial_id %td.td1=issue.serial_id @@ -9,8 +9,8 @@ =t("layout.issues.by") if issue.creator =link_to(issue.creator.uname, user_path(issue.creator)) if issue.creator .label.selected.tracker - .labeltext.selected{:style => "background: #39b54a;"} - 2-3 stable + -issue.labels.each do |label| + .labeltext.selected{:style => "background: ##{label.color};"}=label.name .both %td.td3 .code=link_to '#', [@project, issue] diff --git a/app/views/issues/_sidebar.html.haml b/app/views/issues/_sidebar.html.haml index a8bb181cc..6999abc9d 100644 --- a/app/views/issues/_sidebar.html.haml +++ b/app/views/issues/_sidebar.html.haml @@ -23,98 +23,4 @@ .bordered.nopadding %h3.bmargin10=t('layout.issues.new') = link_to t("layout.add"), new_project_issue_path(@project), :class => 'button' if can? :new, Issue.new(:project_id => @project.id) - .block - %h3 Метки - #labels-edit{:style => "display: none;"} - #label-delete1.label.edit - .labeltext.edit{:style => "background: #39b54a;"} - .text 2-3 stable - #delete1.delete - %img{:alt => "x", :src => "/assets/x-label.png"}/ - .both - #label-delete2.label.edit - .labeltext.edit{:style => "background: #ed1c24;"} - .text 3-0 stable - #delete2.delete - %img{:alt => "x", :src => "/assets/x-label.png"}/ - .both - #label-delete3.label.edit - .labeltext.edit{:style => "background: #ed145b;"} - .text actionpack - #delete3.delete - %img{:alt => "x", :src => "/assets/x-label.png"}/ - .both - #label-delete4.label.edit - .labeltext.edit{:style => "background: #92278f;"} - .text activemodel - #delete4.delete - %img{:alt => "x", :src => "/assets/x-label.png"}/ - .both - %input.gray{:onClick => "if(this.value=='Название новой метки'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='Название новой метки';this.className='gray';}", :type => "text", :value => "Название новой метки"}/ - .colors - .color{:style => "background: #0054a6;"} - #choose1.choose.selected - .color{:style => "background: #00a651;"} - #choose2.choose - .color{:style => "background: #ed1c24;"} - #choose3.choose - .color{:style => "background: #e65c00;"} - #choose4.choose - .color{:style => "background: #9e005d;"} - #choose5.choose - .color{:style => "background: #464646;"} - #choose6.choose - .color{:style => "background: #8c6239;"} - #choose7.choose - .both - .lefter - %a{:href => "#"} Custom color - .righter - %a.button{:href => "#"} Добавить - .both - #labels-stock - #label-2-3-stable.div-tracker-lables{:name => "label"} - .div-label-left - .label - #flag-2-3-stable.flag{:style => "background-color: #39b54a;"} - .labeltext - 2-3 stable - .both - .div-label-right - 15 - .both - .both - #label-3-0-stable.div-tracker-lables{:name => "label"} - .div-label-left - .label - #flag-3-0-stable.flag{:style => "background-color: #ed1c24;"} - .labeltext - 3-0 stable - .both - .div-label-right - 100 - .both - .both - #label-actionpack.div-tracker-lables{:name => "label"} - .div-label-left - .label - #flag-actionpack.flag{:style => "background-color: #ed145b;"} - .labeltext - actionpack - .both - .div-label-right - 22 - .both - .both - #label-activemodel.div-tracker-lables{:name => "label"} - .div-label-left - .label - #flag-activemodel.flag{:style => "background-color: #92278f;"} - .labeltext - activemodel - .both - .div-label-right - 3 - .both - .both - %a#manage-labels.button.tmargin10{:href => "#"} Manage + =render :partial => 'labels' diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index 0d7efd0e0..d1192d717 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -2,6 +2,7 @@ -render :partial => 'issues/sidebar' #closed-switcher.blue-switcher + =hidden_field_tag :issues_status, @status, :id => 'issues_status' .open ="#{t('layout.issues.statuses.open')} (#{@issues.where(:status => 'open').count})" #closed-tasks.closed @@ -18,5 +19,5 @@ %th{:colspan => "2"} =t('layout.issues.description') %tbody - - @issues.where(:status => @status).each do |issue| + - @issues.each do |issue| = render :partial => 'issues/list', :locals => {:issue => issue} \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 7545e255c..236574253 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -23,6 +23,7 @@ en: show: View cancel: Cancel create: Create + update: Update delete: Erase save: Save search: Search diff --git a/config/locales/issues/issues.en.yml b/config/locales/issues/issues.en.yml index def827d15..73003cd2f 100644 --- a/config/locales/issues/issues.en.yml +++ b/config/locales/issues/issues.en.yml @@ -36,6 +36,7 @@ en: labels: Labels invalid_labels: Invalid hex color code new_label: New label name + update_label: Update label label_custom_color: Custom color label_manage: Manage diff --git a/config/locales/issues/issues.ru.yml b/config/locales/issues/issues.ru.yml index b4bdc595e..912509ddb 100644 --- a/config/locales/issues/issues.ru.yml +++ b/config/locales/issues/issues.ru.yml @@ -36,6 +36,7 @@ ru: labels: Метки invalid_labels: Неверный hex код new_label: Название новой метки + update_label: Обновить метку label_custom_color: Свой цвет label_manage: Управление diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 0a923a31b..c8b8df50d 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -37,6 +37,7 @@ ru: false_: Нет publish: Опубликовать add: Добавить + update: Обновить upload: Загрузить not_access: Нет доступа! owner: Владелец diff --git a/config/routes.rb b/config/routes.rb index 0ece275be..6461ddb6c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -119,11 +119,11 @@ Rosa::Application.routes.draw do resources :issues do resources :comments, :only => [:edit, :create, :update, :destroy] resources :subscribes, :only => [:create, :destroy] - collection do - post :create_label - post :delete_label - end + post :create_label, :on => :collection end + 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] diff --git a/db/migrate/20120220175615_create_labels.rb b/db/migrate/20120220175615_create_labels.rb index 18275962f..b10b80ea7 100644 --- a/db/migrate/20120220175615_create_labels.rb +++ b/db/migrate/20120220175615_create_labels.rb @@ -3,6 +3,7 @@ class CreateLabels < ActiveRecord::Migration create_table :labels do |t| t.string :name, :null => false t.string :color, :null => false + t.references :project t.timestamps end @@ -10,12 +11,11 @@ class CreateLabels < ActiveRecord::Migration create_table :labelings do |t| t.references :label, :null => false t.references :issue - t.references :project t.timestamps end add_index :labelings, :issue_id - add_index :labelings, :project_id + add_index :labels, :project_id end end diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb deleted file mode 100644 index af7e7325e..000000000 --- a/spec/models/tag_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'spec_helper' - -describe Tag do - pending "add some examples to (or delete) #{__FILE__}" -end From 027012d3e5fd26aec8712bcc74586c1495fed49b Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 23 Feb 2012 21:57:51 +0600 Subject: [PATCH 07/87] [refs #194] some refactotring --- app/controllers/issues_controller.rb | 6 ++---- .../{_list.html.haml => _issue.html.haml} | 0 app/views/issues/_labels.html.haml | 3 +-- app/views/issues/_sidebar.html.haml | 18 ++++++------------ app/views/issues/index.html.haml | 9 +++------ spec/models/labels_spec.rb | 2 +- 6 files changed, 13 insertions(+), 25 deletions(-) rename app/views/issues/{_list.html.haml => _issue.html.haml} (100%) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 5d50c50fa..0c05340e9 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -11,8 +11,7 @@ class IssuesController < ApplicationController def index(status = 200) @is_assigned_to_me = params[:filter] == 'to_me' - @is_all = params[:filter] == 'all' - @status = (params[:status] if ['open', 'closed'].include? params[:status]) || 'open' + @status = params[:status] == 'closed' ? 'closed' : 'open' @labels = params[:labels] || [] @issues = @project.issues @@ -21,10 +20,9 @@ class IssuesController < ApplicationController if params[:search] @is_assigned_to_me = false - @is_all = 'all' @status = 'open' @labels = [] - @issues = @project.issues.where('issues.title ILIKE ?', "%#{params[:search]}%") + @issues = @project.issues.where('issues.title ILIKE ?', "%#{params[:search].mb_chars.downcase}%") end @issues = @issues.includes(:creator, :user).order('serial_id desc').uniq.paginate :per_page => 10, :page => params[:page] if status == 200 diff --git a/app/views/issues/_list.html.haml b/app/views/issues/_issue.html.haml similarity index 100% rename from app/views/issues/_list.html.haml rename to app/views/issues/_issue.html.haml diff --git a/app/views/issues/_labels.html.haml b/app/views/issues/_labels.html.haml index 8b06617cf..2d29211c8 100644 --- a/app/views/issues/_labels.html.haml +++ b/app/views/issues/_labels.html.haml @@ -7,8 +7,7 @@ .div-label-left .label .flag{:id => "flag-#{label.name}", :style => "background-color: ##{label.color};"} - .labeltext - =label.name + .labeltext=label.name =check_box_tag 'labels[]', label.name, @labels.include?(label.name), :style => 'display:none' .both .div-label-right=Labeling.joins(:label).where(:labels => {:name => label.name, :project_id => @project.id}).count diff --git a/app/views/issues/_sidebar.html.haml b/app/views/issues/_sidebar.html.haml index 6999abc9d..1d8f7ade5 100644 --- a/app/views/issues/_sidebar.html.haml +++ b/app/views/issues/_sidebar.html.haml @@ -4,19 +4,13 @@ %h3=t("layout.issues.accessory") %table %tr - %td.width18 - =radio_button_tag :myradio, 'all', !@is_assigned_to_me, {:id => 'myradio1', :class => 'niceRadio', :name => 'filter'} - %td.width135 - =t("layout.issues.all") - %td.width30.right - = @project.issues.count + %td.width18=radio_button_tag :myradio, 'all', !@is_assigned_to_me, {:id => 'myradio1', :class => 'niceRadio', :name => 'filter'} + %td.width135=t("layout.issues.all") + %td.width30.right=@project.issues.count %tr - %td - =radio_button_tag :myradio, 'to_me', @is_assigned_to_me, {:id => 'myradio1', :class => 'niceRadio', :name => 'filter'} - %td - =t("layout.issues.to_me") - %td.width30.right - = @project.issues.where(:user_id => current_user).count + %td=radio_button_tag :myradio, 'to_me', @is_assigned_to_me, {:id => 'myradio1', :class => 'niceRadio', :name => 'filter'} + %td=t("layout.issues.to_me") + %td.width30.right=@project.issues.where(:user_id => current_user).count =form_tag project_issues_path(@project), :id => 'search_issue', :method => :get do .bordered.bpadding20 =text_field_tag :search, t('layout.issues.search'), :class => 'gray', :onClick => "if(this.value=='#{t('layout.issues.search')}'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='#{t('layout.issues.search')}';this.className='gray';}" diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index d1192d717..f59a83b42 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -14,10 +14,7 @@ %table#myTable.tablesorter.tracker{:cellpadding => "0", :cellspacing => "0"} %thead %tr - %th.th1{:colspan => "2"} - =t('layout.issues.number') - %th{:colspan => "2"} - =t('layout.issues.description') + %th.th1{:colspan => "2"}=t('layout.issues.number') + %th{:colspan => "2"}=t('layout.issues.description') %tbody - - @issues.each do |issue| - = render :partial => 'issues/list', :locals => {:issue => issue} \ No newline at end of file + = render :partial => 'issues/issue', :collection => @issues \ No newline at end of file diff --git a/spec/models/labels_spec.rb b/spec/models/labels_spec.rb index af7e7325e..dd72c1f9f 100644 --- a/spec/models/labels_spec.rb +++ b/spec/models/labels_spec.rb @@ -1,5 +1,5 @@ require 'spec_helper' -describe Tag do +describe Label do pending "add some examples to (or delete) #{__FILE__}" end From a6a51225b874e1b054b9eb3dbbe97294bd026218 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 23 Feb 2012 22:16:04 +0600 Subject: [PATCH 08/87] [refs #194] some js refactoring --- app/assets/javascripts/tracker.js | 47 ++++++---------------------- app/controllers/issues_controller.rb | 2 +- 2 files changed, 10 insertions(+), 39 deletions(-) diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/tracker.js index 2ac35e0e6..b865aec64 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/tracker.js @@ -1,5 +1,4 @@ $(document).ready(function() { - var locale = {}; $("#closed-switcher").live('click', function() { if ($("#blue-switch-select").css("margin-left") != "130px") { @@ -14,35 +13,22 @@ $(document).ready(function() { $("#table1").fadeIn("slow"); $('#issues_status').val('open'); } - var form = $('#filter_issues'); - return send_request('GET', form.attr("action")); + return send_request('GET'); }); - function showEditLabels() { - $("#labels-stock").fadeOut(0); - $("#labels-edit").fadeIn("slow"); - }; - function hideEditLabels() { - $("#labels-edit").fadeOut(0); - $("#labels-stock").fadeIn("slow"); - }; - $("#manage-labels").live('click', function () { var toggled = $(this).data('toggled'); $(this).data('toggled', !toggled); if (!toggled) { - showEditLabels(); + $("#labels-stock").fadeOut(0); + $("#labels-edit").fadeIn("slow"); } else { - hideEditLabels(); + $("#labels-edit").fadeOut(0); + $("#labels-stock").fadeIn("slow"); } }); - $("div.delete").click(function() { - var div = "#label-"+this.id; - $(div).fadeOut("slow"); - }); - $("div.div-tracker-labels").live('click', function() { var flag = this.id; flag = flag.replace("label-","flag-"); @@ -57,27 +43,11 @@ $(document).ready(function() { $(this).css("color","#565657"); checkbox.removeAttr('checked'); } - send_request('GET'); + return send_request('GET'); }); - function showRow(elem) { - if ($("#"+elem).css("display") == "none") { - $("#"+elem).fadeIn("slow"); - } else { - //$("#"+elem).fadeOut(0); - } - } - - function hideRow(elem) { - if ($("#"+elem).css("display") != "none") { - $("#"+elem).fadeOut("fast"); - } else { - //$("#"+elem).fadeOut(0); - } - } - $("#myradio1").live('change', function(event) { - return send_request('GET', $('#filter_issues').attr("action")); + return send_request('GET'); }); $('#search_issue').live('submit', function() { @@ -97,6 +67,7 @@ $(document).ready(function() { parent.find('.choose.selected').removeClass('selected'); $(this).addClass('selected'); parent.siblings('.lefter').find('#label_color').val($(this).attr('value')); + return false; }); $('.custom_color').live('click', function() { @@ -129,7 +100,7 @@ $(document).ready(function() { $(".niceRadio").each(function() { changeRadioStart(jQuery(this)) }); }, error: function(data){ - alert('error') + alert('error') // TODO remove } }); return false; diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 0c05340e9..9c264d863 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -14,7 +14,7 @@ class IssuesController < ApplicationController @status = params[:status] == 'closed' ? 'closed' : 'open' @labels = params[:labels] || [] - @issues = @project.issues + @issues = @project.issues.where(:status => @status) @issues = @issues.where(:user_id => current_user.id) if @is_assigned_to_me @issues = @issues.joins(:labels).where(:labels => {:name => @labels}) unless @labels == [] From 27c85d32dffd070fd6d09a504a053b43a4b18db7 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Mon, 27 Feb 2012 22:10:12 +0600 Subject: [PATCH 09/87] [refs #194] create page; index pagination; some bugs --- app/assets/images/404.png | Bin 0 -> 59676 bytes app/assets/images/ava-big.png | Bin 0 -> 6193 bytes app/assets/images/bg-signup.png | Bin 0 -> 2923 bytes app/assets/images/button-green-disabled.png | Bin 0 -> 2852 bytes app/assets/images/button-green-hover.png | Bin 0 -> 2865 bytes app/assets/images/button-green-normal.png | Bin 0 -> 2853 bytes app/assets/images/button-green-press.png | Bin 0 -> 2830 bytes app/assets/images/checkbox.png | Bin 0 -> 3258 bytes app/assets/images/error-groups.png | Bin 0 -> 4589 bytes app/assets/images/error-message.png | Bin 0 -> 3999 bytes app/assets/images/git.png | Bin 0 -> 3284 bytes app/assets/images/gplus.png | Bin 0 -> 3077 bytes app/assets/images/logo.png | Bin 0 -> 5695 bytes app/assets/images/open.png | Bin 0 -> 3200 bytes app/assets/images/registration.png | Bin 0 -> 4020 bytes app/assets/javascripts/create-issue.js | 35 - app/assets/javascripts/tracker.js | 81 +- app/assets/stylesheets/main.scss | 3044 ++++++++--------- app/controllers/issues_controller.rb | 27 +- app/helpers/issues_helper.rb | 6 + app/models/issue.rb | 3 + app/views/issues/_create_sidebar.html.haml | 14 + app/views/issues/_form.html.haml | 45 +- ...bar.html.haml => _index_sidebar.html.haml} | 2 +- app/views/issues/_issue.html.haml | 3 +- app/views/issues/_labels.html.haml | 2 +- .../issues/_search_collaborators.html.haml | 6 + app/views/issues/_search_labels.html.haml | 5 + app/views/issues/index.html.haml | 5 +- app/views/issues/new.html.haml | 19 +- app/views/layouts/application.html.haml | 2 +- config/application.rb | 2 +- config/locales/{issues => }/issues.en.yml | 11 +- config/locales/{issues => }/issues.ru.yml | 13 +- config/routes.rb | 6 +- 35 files changed, 1693 insertions(+), 1638 deletions(-) create mode 100644 app/assets/images/404.png create mode 100644 app/assets/images/ava-big.png create mode 100644 app/assets/images/bg-signup.png create mode 100644 app/assets/images/button-green-disabled.png create mode 100644 app/assets/images/button-green-hover.png create mode 100644 app/assets/images/button-green-normal.png create mode 100644 app/assets/images/button-green-press.png create mode 100644 app/assets/images/checkbox.png create mode 100644 app/assets/images/error-groups.png create mode 100644 app/assets/images/error-message.png create mode 100644 app/assets/images/git.png create mode 100644 app/assets/images/gplus.png create mode 100644 app/assets/images/logo.png create mode 100644 app/assets/images/open.png create mode 100644 app/assets/images/registration.png delete mode 100644 app/assets/javascripts/create-issue.js create mode 100644 app/views/issues/_create_sidebar.html.haml rename app/views/issues/{_sidebar.html.haml => _index_sidebar.html.haml} (79%) create mode 100644 app/views/issues/_search_collaborators.html.haml create mode 100644 app/views/issues/_search_labels.html.haml rename config/locales/{issues => }/issues.en.yml (78%) rename config/locales/{issues => }/issues.ru.yml (78%) diff --git a/app/assets/images/404.png b/app/assets/images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..0c6ce2f7be26bd9e8e98a1ebc543507a44cfca13 GIT binary patch literal 59676 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%0DtH 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 P00000NkvXXu0mjf7fSf- literal 0 HcmV?d00001 diff --git a/app/assets/images/bg-signup.png b/app/assets/images/bg-signup.png new file mode 100644 index 0000000000000000000000000000000000000000..79676f1614ab0dc45d49e5d4c94789890057ff2a GIT binary patch literal 2923 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 V1R^3gA6@_e002ovPDHLkV1gr$Y>)r| literal 0 HcmV?d00001 diff --git a/app/assets/images/button-green-disabled.png b/app/assets/images/button-green-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..21159cb788e654d65ca07e6cc61f3502fe968818 GIT binary patch literal 2852 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/checkbox.png b/app/assets/images/checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..e17953086fbc9c951190011597274a36114c8a4c GIT binary patch literal 3258 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/error-groups.png b/app/assets/images/error-groups.png new file mode 100644 index 0000000000000000000000000000000000000000..377b18da8af4ba01dc4f18a0086783fa6f651653 GIT binary patch literal 4589 zcmZXXWmMEn+ra;OqtY$iB_Xgh(y^onNJ)1rNGu2nh;)O3bgUpDxq!gp!qVL=f|5%p z9Rd&K(mdSfJnyIX!_03!Tr=nVuDQ-c{Bu1`QX)no002m}wbTp&0OWHwmLqs@*MAUi zX1oKTx0bmt01#9E+dx3>Cwc%N(szSEov)@sycCD={hh&8Ul7h)x@xeDUSp=2q~V%aTLzc7<5sptKVZ9EQrHPN(y^V zV<1S9Ks1ZL#!-|MSsa%zeEB=5*nPScw=s6}ZANjk>NpQMj^9Z@lBp$bAQ?tdp~_16 zD{`Q>|M!}(aySvUH$XvvbmH*6<^lm{A@cH%IXm&&0Z_mXVgjI37v3qt9D7T?qncv{ z3X1}D`lUS4Aqaa2D8EfoEd`V{Kw){=kBoqVdw|`Dqr)ojTnMn^4c+(wgyo&(1c3m{ zbPgI&K?=Z5?Hs2DxXJ-l<1Z4_0W%Tcp^Hwh3@|GMh-jO-XaTj2KqrQRxE>%N0YnVq zqWOV)L4e&L7gqofl>9O~}xlu3th@P8UUt61f z+N)}5KWrL&1MRl$G`;pX50SsZo&IWH;SLwG4%fVQ_N#mJc4$6_U%@v5o(eLR!5PAkiTmw1ZHl0fZCMNm+RP`R}u z-d`PF3NydX6&wH@wZOW5@)6*LxkmmT_rE<*y4Eb<0m59gQ}3$JMvYt8co?ZPKmY)0 z1>pjQH85_5=!0kS7olEt} z>kpi>#Z*j+a}5{E3ymoylPy%M3sHt&4PwiwC0^&sj78FF>y%U%W&B`trE|r(eckeF zrd-Tm)yw*BIythfxs|nrcj8Y%8bcE~5C`RBfYamCLmB+(zh*xxW%!ZEFkmbqExMb% znM0lfGcglD3B038879hjn(-)uNdRnIQCV8KR7q@dY%*e;Tw!ArT%%zkZnRoK_%jn> zQknOB*NDjoS|L{+TL~?P87qAWF~5#~VBYhrM<4RVprFonwY8s}*pUGlAjsiPiimj~ zF4_C2Zfx$|8-bSWYnGNoh02OT8Ho5(aZ{w>ak`5V{%W?**(X0e!cD%itmBY`rH2Rn zEBs8Q63@`0&Q|V~nOT`;2rYyGLUXrGs%Eb&ue43Q#r!gyOl9CHuNAK*G#PV0Z_{Yb zXt9i_j8<1c_OwR0(!GSKutm+k!>epRJHOo~EdLp-Y$>p9^MW}Td~JN~c~N$%Nn-W@ zNy7aAOM;=7@00X_$+Lh5u!jZ^>mFrDiG7BB*6*kk^n`rzl*R`Q^7n52R;%2rp8cNv z#g865;&`N^yQ90GYp9DZ$>Y&u60t{^%iwh7;a&%l=(?JNQ;1X1Ov zCTH#XHH%X7eN?Mgw1td$iJ6IoHBzHGubOANrMjhzvJ9=4riaL%hW6ARqJ~fvjSRKx zvk$N}C{I+dJ=B2?+Spgqv!B+M7Tg^C;aUNoG*!D7J@;@j}*q3jFUrCiLXeWl>O zlgw=})NGt$d{%rFMLojb>y~E(|Dg$`gQ9&SkK+>Kbs|QDvlNBlO#O?4ZEH{cPJOI@ zznwhIgCpVHd*#@#`%?RE`>_k3MzJV6`~K(4~Kr+ z^^Y2_fN)j*T{rQA+ZTGh>_(&64z=Sb+F0t6ivNsx85x zqWUslg`P?ZC{_x;l%JPwmS|S$7j`ipoifWa)ArC|mJt@Hk@E6rU%uKqj$O%HAzlrl z%LWfxdj}R`x=*6ZXe)%N1Z6XopT+4tN&k-ug+Mv&d!8d|f1V_wz;2dqC?|MAY9ekH zVkN+;ccdkt`!@AYN~>fbcb|BP;5s^rx8h^#Gty^^aM^s?+&Ao=VhXZtqLHa7AAM9S zIds!d&>iT8%bSrZ=ji&IKCi?^Flz?>kUR2Y)qQgzB9vBfEYT{>{l_sc9#qLU zC7=X6r}Pnfrdc&1ZI9mSx`*3z4M%i+1G(=Kn-Hx>2k$P->{;uZfz6k{*BpIrQAKXc|avCkCL`d8x5 z6xOm8cdaBqa8WCLvNH+cvCLZnipCLccauW)&*1+H!52$ylJq_XpG-Un6v#{a?gh6Tz3 zeyN&!l&b+Z%DuF7ux!>JRh*dKS$cb=iDe`IBq47e`1II#$ZdW*;zt_vX#9O%MqY4; z@cDurwg?rp>4;f=Ne(+`rttecseYTdDc358u{vtk-tg% zp+C^_sU^1tZRL*Mf7|vg$OX5}lrN20JZTF&q`jS<%9l}CY&(7n!}Z}#muVM6Uh!UI zMq1|ldH1VZ^;>OEl=oETAd9h6N|rYZvj+>IFFXAUjwcp0aSx&+$8S?njf;ucN@M@`_R@567G~CbYVN7@;kvYt z!TLTP2=biEWl^jQp2jv}MNmyK{N5viiDkGmGifr_FacSTzH~aU7~FALybQiZ8P_$P z*8DlwYDde}G-ScrgExE+4sb8G!~>cut(7@F1;)ibwe%C{V=+E2k!9ZZSua0dw0^dZ z@}csEq;7k}@NS^EbyB}o$d6l@)!*dm)!&Fz$wuKZeK^j*et#gk@55`X&8(S;WDZugp8qZjFcu&14a>0eMeZm$a) z#*BtpXTP5%CcysO`1@KnehJYZt=3&Pk770zTt&X4Q8Gw9O%Nu?1&_L(OmOUnpP&5N}KsgAF6OGP6HX z7hptnM^$>m#~JQ){8nZ8`LiZFU}ciO`># zc_Sm59O!_lysMvH%gADC>7_1)V_K+UQ(gVLiw1u2gJ%1qX6*_WFHRdrPn`qHP+6+E z<*9k^KXb9P(_1T)#G(UDADTqx2l2R=#rGGmqyfV*wtL{A;XIStX1?Hw(;tvVo{Q*y zPxWO_k`DAi0Pgp73+f>7xNO<$d#!%(Fgl^nmzX=^nh*yjLg9MTf^bHDPI zg90%hMrJba%J{L3g!mrW=R#$%wk_|DMVsK0h3SjTq|mlQt3C|*Uk|sL@8&Wbnw+b9 zUemP$C|njMXmZF}0ga2joqF=ikVBg1d|Lj{YN>l20prgR-#9GSi`i=)5EX7|`s4Ec!CVJ) zphoG+>6(zVMgC1dr&0Uya2J-=_Oq>pn4IHORDo!GTigic-By)~w%>MIgf5U_r4ZiS zHciX><+Agq19-7Jw^zq7p#?;juXN_}@n30ne&>~+41Kn6rNhFBke>`qllOu(7=u7V z>}%3u`)KLE6h<_LaN*8;GgXUBN<76+>Y3d(se+EK?tHWRd5- zkau~-Lj-Wc`t|}Au9;)j+PJh)&UHk0i(AJ9F)&K$fq?hok6HjA?gB*+W#4idoYo=kB%+En8j#g!&D8Y|O`k&J*p^yOJ^Z<;_IJMNA@3vu{nV;l z5RHgU4FHJ1~t_9((Evg+n4l}d#ysnzJwMqBUdE>%917!rgVFS1|7V3*VttT=o zi#N$zPu3P&xKCx;P+!6+6FG*!{CsW^U)~SR*^UYX7C3lywSslUgKxq-En_^ecK-i# z(u)h^<{bAQz@ literal 0 HcmV?d00001 diff --git a/app/assets/images/error-message.png b/app/assets/images/error-message.png new file mode 100644 index 0000000000000000000000000000000000000000..029d009fe696feae486a53dbc2ef1a181bdbefb7 GIT binary patch literal 3999 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 S+$J{w0000-4_o4 literal 0 HcmV?d00001 diff --git a/app/assets/images/gplus.png b/app/assets/images/gplus.png new file mode 100644 index 0000000000000000000000000000000000000000..80f6155e073f4e9f879516c8b615dd5b3223933c GIT binary patch literal 3077 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 literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/create-issue.js b/app/assets/javascripts/create-issue.js deleted file mode 100644 index c26f4eda0..000000000 --- a/app/assets/javascripts/create-issue.js +++ /dev/null @@ -1,35 +0,0 @@ -function addPeople(num) { - $("#people"+num).fadeOut(0); - $("#people-sections"+num).fadeIn("slow"); - $("#people-sections-list"+num).fadeIn("slow"); - if ($("#people-span").css("display") != "none") { - $("#people-span").fadeOut(0); - } -} - -function remPeople(num) { - $("#people"+num).fadeIn("slow"); - $("#people-sections"+num).fadeOut(0); - $("#people-sections-list"+num).fadeOut(0); - if (($("#people-sections-list1").css("display") == "none") && ($("#people-sections-list2").css("display") == "none") && ($("#people-sections-list3").css("display") == "none") && ($("#people-sections-list4").css("display") == "none")) { - $("#people-span").fadeIn("slow"); - } -} - -function addFlag(num) { - $("#flag"+num).fadeOut(0); - $("#flag-list"+num).fadeIn("slow"); - $("#flag-list-sections"+num).fadeIn("slow"); - if ($("#flag-span").css("display") != "none") { - $("#flag-span").fadeOut(0); - } -} - -function remFlag(num) { - $("#flag"+num).fadeIn("slow"); - $("#flag-list"+num).fadeOut(0); - $("#flag-list-sections"+num).fadeOut(0); - if (($("#flag-list-sections1").css("display") == "none") && ($("#flag-list-sections2").css("display") == "none") && ($("#flag-list-sections3").css("display") == "none") && ($("#flag-list-sections4").css("display") == "none")) { - $("#flag-span").fadeIn("slow"); - } -} diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/tracker.js index b865aec64..8726fe5ac 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/tracker.js @@ -13,7 +13,7 @@ $(document).ready(function() { $("#table1").fadeIn("slow"); $('#issues_status').val('open'); } - return send_request('GET'); + return send_index_tracker_request('GET'); }); $("#manage-labels").live('click', function () { @@ -43,23 +43,23 @@ $(document).ready(function() { $(this).css("color","#565657"); checkbox.removeAttr('checked'); } - return send_request('GET'); + return send_index_tracker_request('GET'); }); $("#myradio1").live('change', function(event) { - return send_request('GET'); + return send_index_tracker_request('GET'); }); $('#search_issue').live('submit', function() { - return send_request('GET', $(this).attr("action"), $(this).serialize()); + return send_index_tracker_request('GET', $(this).attr("action"), $(this).serialize()); }); $('#add_label').live('click', function() { - return send_request('POST', $(this).attr("href"), $('#new_label').serialize()); + return send_index_tracker_request('POST', $(this).attr("href"), $('#new_label').serialize()); }); $('.righter #update_label').live('click', function() { - return send_request('POST', $(this).attr("href"), $(this).parents('#update_label').serialize()); + return send_index_tracker_request('POST', $(this).attr("href"), $(this).parents('#update_label').serialize()); }); $('.colors .choose').live('click', function() { @@ -82,10 +82,10 @@ $(document).ready(function() { }); $('.delete_label').live('click', function() { - return send_request('POST', $(this).attr('href')); + return send_index_tracker_request('POST', $(this).attr('href')); }); - function send_request(type_request, url, data) { + function send_index_tracker_request(type_request, url, data) { data = data || ''; var filter_form = $('#filter_issues'); url = url || filter_form.attr("action"); @@ -106,4 +106,69 @@ $(document).ready(function() { return false; }; + $('#search_user, #search_labels').live('submit', function() { + var id = $(this).attr('id'); + if(id.indexOf('user') != -1) { // FIXME + var which = 'users'; + } + else if (id.indexOf('labels') != -1) { + var which = 'labels'; + } + $.ajax({ + type: 'GET', + url: $(this).attr("action"), + data: $(this).serialize(), + success: function(data){ + var tmp = $('#create_issue_'+ which +'_list'); + $('#create_issue_'+ which +'_list').html(data); + }, + error: function(data){ + alert('error') // TODO remove + } + }); + return false; + }); + + function remExecutor(form) { + var el = form.find('.people.selected.remove_executor'); + var id = el.attr('id'); + $('#'+id+'.add_executor.people.selected').fadeIn('slow'); + el.fadeOut('slow').remove(); + } + + $('.add_executor.people.selected').live('click', function() { + var form = $('.form.issue'); + form.find('#people-span').fadeOut(0); + remExecutor(form); + form.find('#issue_executor').html($(this).clone().removeClass('add_executor').addClass('remove_executor')); + $(this).fadeOut(0); + }); + + $('.remove_executor.people.selected').live('click', function() { + var form = $('.form.issue'); + form.find('#people-span').fadeIn(0); + remExecutor(form); + }); + + function remLabel(form, id) { + var el = form.find('.label.selected.remove_label'+'#'+id); + $('#'+id+'.add_label.label.selected').fadeIn('slow'); + el.fadeOut('slow').remove(); + } + + $('.add_label.label.selected').live('click', function() { + var form = $('.form.issue'); + form.find('#flag-span').fadeOut(0); + form.find('#issue_labels').append($(this).clone().removeClass('add_label').addClass('remove_label')); + $(this).fadeOut(0); + }); + + $('.remove_label.label.selected').live('click', function() { + var form = $('.form.issue'); + if(form.find('.remove_label.label.selected').length == 1) { + form.find('#flag-span').fadeIn(0); + } + remLabel(form, $(this).attr('id')); + }); + }); diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index 633787b64..9ace09ccb 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -1,1708 +1,1682 @@ html, body { - margin: 0; - padding: 0; - font-family: Tahoma, Arial; - color: #565657; - background: #1f60a1 image-url("bg.png") repeat-x; - min-width: 940px; - min-height: 600px; - text-align: center; - height: 100%; -} + margin: 0; + padding: 0; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + color: #565657; + background: #1f60a1 image-url("bg.png") repeat-x; + min-width: 940px; + min-height: 600px; + text-align: center; + height: 100%; } header, section, footer, aside, nav, article, menu { - display: block; -} + display: block; } -input[type="text"]:focus { outline: none; } - -input[type="password"]:focus { outline: none; } - -input:focus { outline: none; } - -select:focus { outline: none; } +input { + &[type="text"]:focus, &[type="password"]:focus, &:focus { + outline: none; } } + +select:focus { + outline: none; } + +a img { + border: none; } -a img { border: none; } - .wrap { - width: 940px; - margin: 0 auto; - text-align: center; - border: 1px solid #3f668c; - -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - background: #FFF; - min-height: 92%; -} - -.wrap.columns { - background: #FFF image-url("page-bg.png") repeat-y; -} + width: 940px; + margin: 0 auto; + text-align: center; + border: 1px solid #3f668c; + -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + background: #FFF; + min-height: 92%; + &.columns { + background: white image-url("page-bg.png") repeat-y; } } .both { - clear: both; -} + clear: both; } /* Top menu */ header { - -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - position: relative; - z-index: 1000; -} - -header div.left { - background: image-url("top-left.png"); - height: 46px; - width: 14px; - float: left; -} - -header div.middle { - background: image-url("top-middle.png"); - float: left; - height: 46px; - width: 912px; -} - -header div.right { - background: image-url("top-right.png"); - height: 46px; - width: 14px; - float: right; -} + -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + position: relative; + z-index: 1000; + div { + &.left { + background: image-url("top-left.png"); + height: 46px; + width: 14px; + float: left; } + &.middle { + background: image-url("top-middle.png"); + float: left; + height: 46px; + width: 912px; } + &.right { + background: image-url("top-right.png"); + height: 46px; + width: 14px; + float: right; } } + menu { + float: left; + margin: 0; + padding: 0; + ul { + list-style: none; + margin: 0; + padding: 10px 0px 0px 0px; + li { + display: inline; + a { + font-size: 12px; + color: #FFF; + text-decoration: none; + height: 43px; + padding: 15px 15px 15px 15px; + &:hover { + color: #cee7ff; } + &.first { + padding-left: 45px; } + &.active { + background: image-url("menu-hover.png") repeat-x; } } } } } + div { + &.logo { + float: left; + margin-top: -25px; + padding-left: 10px; + position: absolute; } + &.information { + float: right; } + &.search { + float: left; + margin: 10px 0px 0px 0px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background: #FFF; + border: 1px solid #7691aa; + div { + &.pic { + background: image-url("search-button.png"); + height: 22px; + width: 24px; + float: left; } + &.field { + float: left; + margin: -1px 0px 0px 0px; + input { + border: none; + height: 18px; + background: none; + width: 132px; + font-size: 12px; + font-family: Arial; + padding: 2px 0px 0px 0px; + &.gray { + color: #cfcfcf; } + &.black { + color: #333333; } } } } } + &.avatar { + float: left; + padding: 6px 10px 10px 10px; } + &.information div { + &.active { + background: image-url("menu-hover.png") repeat-x; } + &.user { + float: left; + margin-left: 14px; } } + &.profile { + float: left; + text-align: right; + color: #FFF; + font-size: 12px; + padding-top: 12px; + a { + color: #FFF; + text-decoration: none; + padding-right: 10px; + &:hover { + text-decoration: underline; } } } + &.droplist-wrap { + margin: -4px 0px 0px 0px; } + &.droplist { + background: image-url("bg-droplist.png") repeat-x; + height: 91px; + width: 151px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin-top: 0px; + margin-left: 138px; + border-radius: 0px 0px 4px 4px; + display: none; + text-align: right; + z-index: 9999; } + &.droplist-wrap div.a { + margin-top: 5px; } + &.droplist a { + position: relative; + padding-left: 15px; + font-size: 12px; + color: #7eb7ed; + text-decoration: none; + padding-right: 15px; + margin-top: 10px; + &:hover { + text-decoration: underline; } } } } /* Left part of top menu*/ -header menu { - float: left; - margin: 0; - padding: 0; -} - -header menu ul { - list-style: none; - margin: 0; - padding: 10px 0px 0px 0px; -} - -header menu ul li { - display: inline; -} - -header menu ul li a { - font-size: 12px; - color: #FFF; - text-decoration: none; - height: 43px; - padding: 15px 15px 15px 15px; -} - -header menu ul li a:hover { - color: #cee7ff; -} - -header menu ul li a.first { - padding-left: 45px; -} - -header menu ul li a.active { - background: image-url("menu-hover.png") repeat-x; -} - -header div.logo { - float: left; - margin-top: -25px; - padding-left: 10px; - position: absolute; -} - /* Right part of top menu */ -header div.information { - float: right; -} - -header div.search { - float: left; - margin: 10px 0px 0px 0px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; - background: #FFF; - border: 1px solid #7691aa; -} - -header div.search div.pic { - background: image-url("search-button.png"); - height: 22px; - width: 24px; - float: left; -} - -header div.search div.field { - float: left; - margin: -1px 0px 0px 0px; -} - -header div.search div.field input { - border: none; - height: 18px; - background: none; - width: 132px; - font-size: 12px; - font-family: Arial; - padding: 2px 0px 0px 0px; -} - -header div.search div.field input.gray { - color: #cfcfcf; -} - -header div.search div.field input.black { - color: #333333; -} - -header div.avatar { - float:left; - padding-top: 6px; - padding-right: 10px; - padding-bottom: 10px; - padding: 6px 10px 10px 24px; -} - -header div.profile { - float: left; - text-align: right; - color: #FFF; - font-size: 12px; - padding-top: 12px; -} - -header div.profile a { - color: #FFF; - text-decoration: none; -} - -header div.profile a:hover { - text-decoration: underline; -} - - -header div.droplist-wrap { - margin: -4px 0px 0px 0px; -} - -header div.droplist { - background: image-url("bg-droplist.png") repeat-x; - height: 91px; - width: 151px; - -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin-top: 0px; - margin-left: 138px; - border-radius: 0px 0px 4px 4px; - display: none; - text-align: right; - z-index: 9999; -} - -header div.droplist-wrap div.a { - margin-top: 5px; -} - -header div.droplist a{ - position: relative; - padding-left: 15px; - font-size: 12px; - color: #7eb7ed; - text-decoration: none; - padding-right: 15px; - margin-top: 10px; -} - -header div.droplist a:hover{ - text-decoration: underline; -} - - /* Submenu */ .sub-menu { - height: 38px; - margin: -7px 0px 0px 0px; - padding: 0px 0px 0px 15px; - background: #ededed; - position: relative; - z-index: 100; - border-bottom: 1px solid #FFF; - -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); -} - -.sub-menu div.left { - float: left; - width: 200px; - border-right: 1px solid #dcdcdc; - font-size: 12px; - text-align: left; - font-weight: 700; - padding: 10px 0px 0px 0px; - height: 21px; -} - -.sub-menu div.right { - float: left; -} - - -.sub-menu nav { /*Äëÿ ïîäìåíþ áåç íàçâàíèÿ*/ - float: left; - margin: 0px 0px 0px 0px; -} - -.sub-menu nav ul { - list-style: none; - text-align: left; - padding: 0; - margin: 0; - padding-top: 5px; -} - -.sub-menu nav ul li { - display: inline; -} - -.sub-menu nav ul li a { - font-size: 12px; - color: #575756; - text-decoration: none; - height: 34px; - padding: 0px 20px 6px 20px; -} - -.sub-menu nav ul li a.active { - background: image-url("submenu-hover.png") repeat-x; -} - -.sub-menu nav ul li a:hover { - color: #2b6daf; -} + height: 38px; + margin: -7px 0px 0px 0px; + padding: 0px 0px 0px 15px; + background: #ededed; + position: relative; + z-index: 100; + border-bottom: 1px solid #FFF; + -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + div { + &.left { + float: left; + width: 200px; + border-right: 1px solid #dcdcdc; + font-size: 12px; + text-align: left; + font-weight: 700; + padding: 10px 0px 0px 0px; + height: 21px; } + &.right { + float: left; } } + nav { + /*Äëÿ ïîäìåíþ áåç íàçâàíèÿ*/ + float: left; + margin: 0px 0px 0px 0px; + ul { + list-style: none; + text-align: left; + padding: 0; + margin: 0; + padding-top: 5px; + li { + display: inline; + a { + font-size: 12px; + color: #575756; + text-decoration: none; + height: 34px; + padding: 0px 20px 6px 20px; + &.active { + background: image-url("submenu-hover.png") repeat-x; } + &:hover { + color: #2b6daf; } } } } } } /* Page markup */ article { - font-size: 12px; -} + font-size: 12px; } aside { - float: left; - width: 215px; -} + float: left; + width: 215px; } -article div.right { - float: right; - width: 645px; - padding: 20px 40px 40px 40px; - text-align: left; -} - -article div.right.bigpadding { - width: 445px; - padding: 20px 140px 40px 140px; -} - -article div.all { - width: 855px; - padding: 20px 40px 20px 40px; - text-align: left; -} - -article div.all.bigpadding { - width: 605px; - padding: 0px 40px 20px 200px; - text-align: left; -} +article div { + &.right { + float: right; + width: 645px; + padding: 20px 40px 40px 40px; + text-align: left; + &.bigpadding { + width: 445px; + padding: 20px 140px 40px 140px; } + &.middlepadding { + width: 510px; + padding: 20px 120px 40px 50px; + div.rightlist { + width: 300px; + input, textarea { + width: 300px; } } } } + &.all { + width: 855px; + padding: 20px 40px 20px 40px; + text-align: left; + &.bigpadding { + width: 605px; + padding: 0px 40px 20px 200px; + text-align: left; } + &.verybigpadding { + width: 545px; + padding: 0px 40px 20px 200px; + text-align: left; + div.left { + float: left; + img { + padding-right: 40px; + margin-top: 20px; } + h3, h4, p { + width: 420px; } + .tmargin5 { + padding-top: 5px; + position: relative; } } } } } /* Left part of page markup */ -aside div.bordered { - border-bottom: 1px solid #dee5eb; - text-align: left; - padding: 20px 0px 30px 15px; -} - -aside div.block { - text-align: left; - padding: 10px 0px 30px 15px; -} +aside div { + &.bordered { + border-bottom: 1px solid #dee5eb; + text-align: left; + padding: 20px 0px 30px 15px; } + &.block { + text-align: left; + padding: 10px 0px 30px 15px; } } /* Common page parts markups */ -article a.button { - display: inline-block; - white-space: nowrap; - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); - border: 1px solid #5084b4; - padding: 4px 20px; - margin: 0; - font-size: 12px; - text-decoration: none; - color: #FFF; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align: center; -} +article { + h4 { + font-size: 12px; + margin-bottom: 0px; + padding-bottom: 2px; } + p { + margin: 0; + padding: 0; } } -article a.button:hover{ - background-color: #34719d; - background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); - background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); - background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); - background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); - background-image: -o-linear-gradient(top, #7fb3e1, #34719d); - background-image: linear-gradient(top, #7fb3e1, #34719d); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); - text-decoration: none; -} +div { + &.expand-gray-down, &.expand-gray-up { + height: 10px; + width: 12px; + float: left; + margin: 3px 0px 0px 3px; + cursor: pointer; } + &.expand-gray-down { + background: image-url("expand-gray.png") no-repeat; } + &.expand-gray-up { + background: image-url("expand-gray2.png") no-repeat; } } - - -article a.button:active{ - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); -} - -article a.disabled { - background-color: #888888; - background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); - background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); - background-image: -moz-linear-gradient(top, #aaaaaa, #888888); - background-image: -ms-linear-gradient(top, #aaaaaa, #888888); - background-image: -o-linear-gradient(top, #aaaaaa, #888888); - background-image: linear-gradient(top, #aaaaaa, #888888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); - cursor: default; - color: #d8d8d8; - border: 1px solid #aaaaaa; - cursor: default; - text-align: center; -} - -article h3{ - font-size: 14px; - color: #575756; - margin-bottom: 0; - padding-bottom: 2px; -} - -article h3.fix { - margin-top: 0px; - padding-top: 0px; -} - -article a{ - color: #7eb7ed; - font-size: 12px; - text-decoration: none; - padding: 0px 0px; -} - -article a:hover{ - text-decoration: underline; -} +article { + a { + &.button { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; + &:hover { + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; } + &:active { + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); } } + &.disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; } } + input { + &[type="file"] {} + &[type="submit"] { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; + height: auto; + width: auto; + &:hover { + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; + cursor: pointer; } + &:active { + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); } + &:disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; } } } + h3 { + font-size: 14px; + color: #575756; + margin-bottom: 0; + padding-bottom: 2px; + &.fix { + margin-top: 0px; + padding-top: 0px; } } + a { + color: #7eb7ed; + font-size: 12px; + text-decoration: none; + padding: 0px 0px; + &:hover { + text-decoration: underline; } } + div { + &.right div.hr { + border-bottom: 1px solid #dedede; + width: 100%; + padding-top: 30px; + margin-bottom: 30px; + &.bottom { + margin-bottom: 10px; + padding-top: 20px; } + &.top { + padding-top: 7px; + margin-bottom: 20px; } } + &.leftside { + float: left; } + &.rightside { + float: right; } + &.all.bigpadding div.rightside { + margin-right: 40px; } } } /* Right part of page markup */ -article div.right div.hr { - border-bottom: 1px solid #dedede; - width: 100%; - padding-top: 30px; - margin-bottom: 30px; -} - -article div.right div.hr.bottom { - margin-bottom: 10px; - padding-top: 20px; -} - -article div.right div.hr.top { - padding-top: 7px; - margin-bottom: 20px; -} - -article div.right div.leftside { - float: left; -} - -article div.right div.rightside { - float: right; -} - .lefter { - float: left; - margin-right: 5px; -} - -.lefter span.gap { - padding-right: 59px; -} - -.lefter.top { - margin-top: -6px; -} + float: left; + margin-right: 5px; + span.gap { + padding-right: 59px; } + &.top { + margin-top: -6px; } } .w25 { - width: 25px; -} + width: 25px; } .w420 { - width: 420px; - padding-bottom: 20px; -} + width: 420px; + padding-bottom: 20px; } .padd25 { - padding-left: 25px; -} + padding-left: 25px; } .width70 { - width: 70px; -} - + width: 70px; } /* Footer */ footer { - height: 32px; - padding-left: 15px; - width: 900px; - margin: 0 auto; - text-align: center; -} - -footer ul { - margin: 0; - padding: 0; - list-style: none; - font-size: 12px; - color: #FFF; - padding-top: 10px; - text-align: left; -} - -footer ul li { - display: inline; -} - -footer ul li a { - font-size: 12px; - color: #FFF; - text-decoration: none; -} - -footer ul li a:hover { - text-decoration: underline; -} + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; + ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: left; + li { + display: inline; + a { + font-size: 12px; + color: #FFF; + text-decoration: none; + &:hover { + text-decoration: underline; } } } } } /* Main page */ -aside div.bordered table{ - padding: 0; - margin: 0; - padding-bottom: 0px; - margin-left: -10px; -} +aside div { + &.bordered table { + padding: 0; + margin: 0; + padding-bottom: 0px; + margin-left: -10px; + td { + font-size: 12px; + padding: 1px 0px 0px 0px; } } + &.block table td { + text-align: right; + padding: 2px 3px 1px 3px; + &.first { + width: 150px; + text-align: left; } } } -aside div.bordered table td{ - font-size: 12px; - padding: 1px 0px 0px 0px; -} - -aside div.block table td { - text-align: right; - padding: 2px 3px 1px 3px; -} - - -aside div.block table td.first{ - width: 150px; - text-align: left; -} - -article div.right div.messages { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 100%; - color: #477cae; - text-align: center; - font-size: 12px; - padding: 4px 0px 4px 0px; - cursor: pointer; - margin: 15px 0px 15px 0px; -} - -article div.right div.messages:hover { - background: #dceffa; -} - -article div.right div.messages p{ - margin: 0; - padding: 0; -} - -article div.right div.activity { - border: 1px solid #d6d6d6; - /*width: 614px;*/ - border-radius: 5px; - padding: 6px; - margin-top: 15px; - color: #333; -} - -article div.right div.activity div.top div.image { - float: left; -} - -article div.right div.activity div.top div.text { - float: left; - padding-left: 10px; - font-size: 12px; -} - -article div.right div.activity div.top div.text span.name { - font-weight: 700; -} - -article div.right div.activity div.top div.text span.date { - font-size: 11px; -} - -article div.right div.activity div.top div.text span.subject img { - cursor: pointer; -} - -article div.right div.activity div.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; -} - -article div.right div.activity div.fulltext.view { - display: block; -} +article div { + &.right div.messages { + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 100%; + color: #477cae; + text-align: center; + font-size: 12px; + padding: 4px 0px 4px 0px; + cursor: pointer; + margin: 15px 0px 15px 0px; + &:hover { + background: #dceffa; } + p { + margin: 0; + padding: 0; } } + &.activity { + border: 1px solid #d6d6d6; + /*width: 614px;*/ + border-radius: 5px; + padding: 6px; + margin-top: 15px; + color: #333; + div.top div { + &.image { + float: left; } + &.text { + float: left; + padding-left: 10px; + font-size: 12px; + span { + &.name { + font-weight: 700; } + &.date { + font-size: 11px; } } } } } + &.text span.subject { + float: left; } + &.activity div { + &.top div.text span.subject img { + cursor: pointer; } + &.fulltext { + font-size: 12px; + padding-top: 10px; + display: none; + &.view { + display: block; } } } } /* Admin page */ .admin-preferences ul { - list-style: none; - margin: 0; - padding: 0; - margin-top: 20px; - width: 215px; - text-align: left; -} - -.admin-preferences ul li{ - padding-top: 5px; - padding-bottom: 5px; - width: 215px; -} - -.admin-preferences ul li.active, .admin-preferences ul li:hover { - background: #dcecfa; -} - -.admin-preferences ul li a{ - color: #575756; - text-decoration: none; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 15px; -} + list-style: none; + margin: 0; + padding: 0; + margin-top: 20px; + width: 215px; + text-align: left; + li { + padding-top: 5px; + padding-bottom: 5px; + width: 215px; + &.active, &:hover { + background: #dcecfa; } + a { + color: #575756; + text-decoration: none; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 15px; } } } .right div.leftlist, .all div.leftlist { - float: left; - width: 200px; - margin: 0px 0px 10px 0px; -} + float: left; + width: 200px; + margin: 0px 0px 10px 0px; } .right div.rightlist, .all div.rightlist { - float: left; - width: 400px; - font-size: 12px; - color: #575756; - margin: 0px 0px 10px 0px; -} + float: left; + width: 400px; + font-size: 12px; + color: #575756; + margin: 0px 0px 10px 0px; } -.right div.rightlist div.check { - float: left; -} +.right div.rightlist div { + &.check { + float: left; } + &.forcheck { + float: left; + margin: 1px 0px 0px 5px; } } -.right div.rightlist div.forcheck { - float: left; - margin: 1px 0px 0px 5px; -} -div.rightlist textarea { - height: 110px; - width: 340px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Arial; - font-size: 12px; -} - -div.rightlist input[type="text"] { - height: 15px; - width: 340px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Arial; - font-size: 12px; -} +div.rightlist { + textarea { + height: 110px; + width: 350px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; } + input { + &[type="text"], &[type="password"] { + height: 15px; + width: 350px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; } } } /* Admin-members page */ -.right table div.img { - float: left; -} +.right { + table { + div { + &.img { + float: left; } + &.radio { + float: left; + margin: 5px 0px 0px 0px; } + &.forimg, &.forradio { + float: left; + margin: 5px 0px 0px 5px; } } + span.niceCheck-main { + margin-top: 3px; } } + div { + &.admin-search, &.admin-role { + float: left; } + &.admin-search input { + width: 300px; + margin-right: 5px; + height: 23px; + border: 1px solid #dedede; + border-radius: 3px; + margin-top: 1px; + font-size: 12px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + padding-left: 5px; } } } -.right table div.radio { - float: left; - margin: 5px 0px 0px 0px; -} - -.right table div.forimg { - float: left; - margin: 5px 0px 0px 5px; -} - -.right table div.forradio { - float: left; - margin: 5px 0px 0px 5px; -} - -.right table span.niceCheck-main { - margin-top: 3px; -} - -.right div.admin-search { - float: left; -} - -.right div.admin-role { - float: left; -} - -.right div.admin-search input { - width: 300px; - margin-right: 5px; - height: 23px; - border: 1px solid #dedede; - border-radius: 3px; - margin-top: 1px; - font-size: 12px; - font-family: Tahoma, Arial; - padding-left: 5px; -} - -.right div.admin-search input.gray { - color: #cfcfcf; -} - -.right div.admin-search input.black { - color: #333333; -} +article input { + &.gray { + color: #cfcfcf; } + &.black { + color: #333333; } } .right div.admin-add { - float: left; - padding-top: 1px; - margin-left: 5px; -} - -.right div.admin-add a { - width: 86px; - text-align: center; - padding-bottom: 5px; -} + float: left; + padding-top: 1px; + margin-left: 5px; + a { + width: 86px; + text-align: center; + padding-bottom: 5px; } } /* Input elements */ .niceRadio { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: image-url("radio.png"); - overflow: hidden; -} + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("radio.png"); + overflow: hidden; } + .radioChecked { - background-position: 0 -17px; -} + background-position: 0 -17px; } + .niceRadio input { - margin-left: -18px; -} + margin-left: -18px; } .sel80 { - width: 200px; - padding-bottom: 4px; - text-align: left; -} -.lineForm, -.lineForm3 { - margin-bottom: 0px; -} + width: 200px; + padding-bottom: 4px; + text-align: left; + &.aside { + width: 185px; } } + +.lineForm, .lineForm3 { + margin-bottom: 0px; } .niceCheck { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: image-url("checkbox.png"); -} -.niceCheck input { - display: none; -} + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox.png"); + input { + display: none; } } .niceCheck-main { - width: 18px; - height: 18px; - display: inline-block; - cursor: pointer; - background: image-url("checkbox-main.png"); -} -.niceCheck-main input { - display: none; -} + width: 18px; + height: 18px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox-main.png"); + input { + display: none; } } /* Admin build project */ -section.left { - float: left; - text-align: left; - width: 230px; - margin-left: 250px; -} - -section.right { - float: right; - text-align: left; - width: 200px; - margin-right: 250px; -} - -section .left { - float: left; - margin-right: 4px; -} +section { + &.left { + float: left; + text-align: left; + width: 230px; + margin-left: 250px; } + &.right { + float: right; + text-align: left; + width: 200px; + margin-right: 250px; } + .left { + float: left; + margin-right: 4px; } } /* Commits history */ -article .fright { - float: right; -} - -article .fright p{ - margin: 0; - padding: 5px 5px 0px 0px; -} - article .date-block { - width: 100%; - margin-top: 17px; -} + width: 100%; + margin-top: 17px; + div { + &.date { + float: left; + background: #bedbf6; + color: #477cae; + border: 1px solid #98bede; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-radius: 4px 0px 0px 4px; + width: 65px; + height: 55px; + padding: 10px; + padding-top: 20px; + -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + font-size: 14px; + text-align: center; } + &.messages { + float: left; + border: 1px solid #cfdde7; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 0px 4px 4px 4px; + border-radius: 0px 4px 4px 4px; + padding: 10px; + padding-bottom: 0px; + width: 746px; } + &.message { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; + div { + &.body { + float: left; + text-align: left; } + &.code { + float: right; + margin: -7px 0px 0px 640px; + position: absolute; } } } + &.code div { + &.top { + width: 90px; + height: 22px; + border: 1px solid #9dbcd5; + background: #cbdeef; } + &.bottom { + width: 90px; + text-align: right; } + &.left { + float: left; + width: 13px; + height: 13px; + padding-left: 2px; + padding-top: 4px; } + &.right { + float: right; + border: 1px solid #bcd5ea; + background: #FFF; + font-size: 12px; + width: 65px; + height: 14px; + margin: 2px; + padding: 0px 2px 2px 0px; + text-align: center; } } + &.image { + float: left; } } } -article .date-block div.date { - float: left; - background: #bedbf6; - color: #477cae; - border: 1px solid #98bede; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 0px 0px 4px; - border-radius: 4px 0px 0px 4px; - width: 65px; - height: 55px; - padding: 10px; - padding-top: 20px; - -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - font-size: 14px; - text-align: center; -} - -article .date-block div.messages { - float: left; - border: 1px solid #cfdde7; - -moz-border-radius-topleft: 0px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 0px 4px 4px 4px; - border-radius: 0px 4px 4px 4px; - padding: 10px; - padding-bottom: 0px; - width: 746px; -} - -article .date-block div.message { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; -} - -article .date-block div.message div.body { - float: left; - text-align: left; -} - -article .date-block div.message div.code { - float: right; - margin: -7px 0px 0px 640px; - position: absolute; -} - -article .date-block div.code div.top { - width: 90px; - height: 22px; - border: 1px solid #9dbcd5; - background: #cbdeef; -} - -article .date-block div.code div.bottom { - width: 90px; - text-align: right; -} - -article .date-block div.code div.left { - float: left; - width: 13px; - height: 13px; - padding-left: 2px; - padding-top: 4px; -} - -article .date-block div.code div.right { - float: right; - border: 1px solid #bcd5ea; - background: #FFF; - font-size: 12px; - width: 65px; - height: 14px; - margin: 2px; - padding: 0px 2px 2px 0px; - text-align: center; -} - -article .date-block div.image, .last-commit div.image { - float: left; -} +.last-commit div.image { + float: left; } article .date-block div.text, .last-commit div.text { - float: left; - padding-left: 10px; - font-size: 12px; -} + float: left; + padding-left: 10px; + font-size: 12px; } article .date-block div.text span.name, .last-commit span.name { - font-weight: 700; -} + font-weight: 700; } article .date-block div.text span.date, .last-commit span.date { - font-size: 11px; -} + font-size: 11px; } article .date-block div.text span.subject img, .last-commit span.subject img { - cursor: pointer; -} + cursor: pointer; } article .date-block div.fulltext, .last-commit div.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; - /*width: 640px;*/ -} - + font-size: 12px; + padding-top: 10px; + display: none; + /*width: 640px;*/ } article div.year { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 760px; - color: 477cae; - text-align: center; - font-size: 12px; - padding: 4px; - margin-left: 87px; - margin-top: 30px; - margin-bottom: 30px; -} + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 760px; + color: 477cae; + text-align: center; + font-size: 12px; + padding: 4px; + margin-left: 87px; + margin-top: 30px; + margin-bottom: 30px; + p { + margin: 0; + padding: 0; + color: #477CAE; } } -article div.year p{ - margin: 0; - padding: 0; - color: #477CAE; -} +div.pagination.tmargin30 { + margin-top: 30px; } /* Create issue */ .bordered.nopadding, .right.nopadding { - padding-top: 0px; -} + padding-top: 0px; } p.tmargin5 { - margin-top: 5px; -} + margin-top: 5px; } aside input { - height: 25px; - width: 170px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 0px 5px; - font-family: Tahoma, Arial; - font-size: 12px; - margin-bottom: 5px; - margin-top: 5px; -} + height: 25px; + width: 170px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 0px 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + margin-bottom: 5px; + margin-top: 5px; + &.gray { + color: #cfcfcf; } + &.black { + color: #333333; } } -aside input.gray { - color: #cfcfcf; -} +div { + &.people { + width: 202px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 10px; + padding-right: 0px; + div.avatar { + float: left; + padding-left: 5px; } } + &.avatar { + float: left; + padding-left: 5px; } + &.people div.name, &.name { + padding-top: 4px; + padding-left: 3px; + float: left; } } -aside input.black { - color: #333333; -} +aside div.select { + background: #dcecfa; } -div.people { - width: 202px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 10px; - padding-right: 0px; -} +div { + &.people:hover { + background: #dcecfa; } + &.label { + &.selected { + width: 196px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + &:hover { + background: #dcecfa; } } + width: 196px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + &:hover { + background: #dcecfa; } } + &.labeltext.selected { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; } + &.label div.flag { + height: 11px; + width: 3px; + background: #39b54a; + float: left; + margin-top: 3px; + margin-right: 3px; + border-radius: 2px; } } -div.people div.avatar, div.avatar { - float: left; - padding-left: 5px; -} - -div.people div.name, div.name { - padding-top: 4px; - padding-left: 3px; - float: left; -} - -aside div.select, div.people:hover { - background: #dcecfa; -} - -div.label.selected, div.label { - width: 196px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 15px; -} - -div.label.selected:hover, div.label:hover { - background: #dcecfa; -} - -div.labeltext.selected { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; -} - -div.label div.flag { - height: 11px; - width: 3px; - background: #39b54a; - float: left; - margin-top: 3px; - margin-right: 3px; - border-radius: 2px; -} - -.right span.small-text { - font-size: 11px; -} - -.right .bpadding10, .all .bpadding10 { - padding-bottom: 10px; -} +.right { + span.small-text { + font-size: 11px; } + .bpadding10 { + padding-bottom: 10px; } } +.all .bpadding10 { + padding-bottom: 10px; } /* Issue page */ -aside div.switcher, aside div.switcher-off { - height: 23px; - width: 194px; - background: image-url("switch-on.png"); - color: #FFF; - font-size: 12px; - cursor: pointer; -} - -aside div.switcher-off { - background: image-url("switch-off.png"); -} - -aside div.switcher div.swleft, aside div.switcher-off div.swleft { - float: left; - width: 96px; - text-align: center; - padding-top: 3px; -} - -aside div.switcher div.swright, aside div.switcher-off div.swright { - float: right; - width: 96px; - text-align: center; - padding-top: 3px; -} +aside div { + &.switcher { + height: 23px; + width: 194px; + background: image-url("switch-on.png"); + color: #FFF; + font-size: 12px; + cursor: pointer; } + &.switcher-off { + height: 23px; + width: 194px; + background: image-url("switch-on.png"); + color: #FFF; + font-size: 12px; + cursor: pointer; + background: image-url("switch-off.png"); } + &.switcher div.swleft, &.switcher-off div.swleft { + float: left; + width: 96px; + text-align: center; + padding-top: 3px; } + &.switcher div.swright, &.switcher-off div.swright { + float: right; + width: 96px; + text-align: center; + padding-top: 3px; } } p.non-view { - display: none; -} + display: none; } -div.non-view { - display: none; -} +div { + &.non-view { + display: none; } + &.view { + display: block; } + &.nopointer { + cursor: default; + &:hover { + background: none; } } } -div.view { - display: block; -} +a.button.tmargin10, input[type="submit"].tmargin10 { + margin-top: 10px; } -div.nopointer { - cursor: default; -} +h3 { + &.tmargin0 { + margin-top: 0px; } + &.bmargin10 { + margin-bottom: 10px; } } -div.nopointer:hover { - background: none; -} +.right div { + &.comment { + text-align: left; + border: 1px solid #b3cce0; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; + width: 631px; + background: #dcecfa; + div { + &.issue-left { + float: left; + font-size: 12px; + margin-top: 4px; } + &.issue-right { + float: right; } } + textarea { + height: 110px; + width: 618px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + color: #575756; + margin: 10px 0px; } } + &.comment-closed { + display: none; + div { + &.state { + float: left; + padding: 2px 0px 2px 0px; + background: #bd4d40; + color: #FFF; + font-size: 12px; + border: 1px solid #924f52; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px 0px 0px 2px; + border-radius: 2px 0px 0px 2px; + width: 80px; + text-align: center; } + &.text { + border: 1px solid #dce6ed; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 2px; + -moz-border-radius-bottomright: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + float: left; + width: 561px; } + &.avatar { + float: left; + padding: 5px; } + &.name { + float: left; + font-size: 12px; + padding-top: 9px; } } } } -a.button.tmargin10 { - margin-top: 10px; -} - -h3.tmargin0 { - margin-top: 0px; -} - -h3.bmargin10 { - margin-bottom: 10px; -} - -.right div.comment { - text-align: left; - border: 1px solid #b3cce0; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; - width: 631px; - background: #dcecfa; -} - -.right div.comment div.issue-left { - float: left; - font-size: 12px; - margin-top: 4px; -} - -.right div.comment div.issue-right { - float: right; -} - -.right div.comment textarea { - height: 110px; - width: 618px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Arial; - font-size: 12px; - color: #575756; - margin: 10px 0px; -} - -.right div.comment-closed { - display: none; -} - -.right div.comment-closed div.state { - float: left; - padding: 2px 0px 2px 0px; - background: #bd4d40; - color: #FFF; - font-size: 12px; - border: 1px solid #924f52; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px 0px 0px 2px; - border-radius: 2px 0px 0px 2px; - width: 80px; - text-align: center; -} - -.right div.comment-closed div.text { - border: 1px solid #dce6ed; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: 2px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - float: left; - width: 561px; -} - -.right div.comment-closed div.avatar { - float: left; - padding: 5px; -} - -.right div.comment-closed div.name { - float: left; - font-size: 12px; - padding-top: 9px; -} - -div.desription-top { - background: #dcecfa; - font-size: 12px; - color: #575756; - border: 1px solid #a9c6dd; - height: 38px; - width: 100%; - margin-bottom: 20px; -} - -div.desription-top div.img { - float: left; - padding-left: 10px; - margin-top: 14px; -} - -div.desription-top div.name { - float: left; - margin-top: 5px; - margin-left: 10px; - background: #FFF; - border: 1px solid #d1deeb; - height: 21px; - width: auto; - color: #575756; - padding-right: 5px; - padding-left: 5px; - padding-top: 5px; -} - -div.desription-top div.role { - float: left; - margin-top: 11px; - margin-left: 10px; - font-size: 11px; -} - -div.desription-top div.fork { - float: right; - margin-top: 5px; - margin-right: 10px; -} -div.desription-top div.fork p { - float: right; - margin-top: 5px; - margin-right: 2px; -} - - - -.all div.description { - text-align: left; -} - -.all div.description h3{ - color: #575756; - font-weight: 700; - font-size: 14px; - margin-bottom: 5px; - margin-top: 5px; -} - -.all div.description p{ - font-size: 12px; - padding: 0; - margin: 0; - color: #575756; -} - -.all div.last-commit { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin: 10px 0px; -} +div { + &.desription-top { + background: #dcecfa; + font-size: 12px; + color: #575756; + border: 1px solid #a9c6dd; + height: 38px; + width: 100%; + margin-bottom: 20px; + div.img { + float: left; + padding-left: 10px; + margin-top: 14px; } + input.name { + float: left; + margin-top: 5px; + margin-left: 10px; + background: #FFF; + border: 1px solid #d1deeb; + height: 21px; + width: auto; + color: #575756; + font-size: 12px; + width: 215px; + padding: 2px 5px 3px; } + div.role { + float: left; + margin-top: 11px; + margin-left: 10px; + font-size: 11px; } } + &.fork { + float: right; + margin-top: 5px; + margin-right: 10px; + p { + float: right; + margin-top: 5px; + margin-right: 2px; } + &.rmargin0 { + margin-right: 0px; } } } +.all div { + &.description { + text-align: left; + h3 { + color: #575756; + font-weight: 700; + font-size: 14px; + margin-bottom: 5px; + margin-top: 5px; } + p { + font-size: 12px; + padding: 0; + margin: 0; + color: #575756; } } + &.last-commit { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin: 10px 0px; } } /* Project main page */ -table.tablesorter.project .th1 { - width: 130px; - padding-left: 17px; -} - -table.tablesorter.project .th2 { - width: 110px; - padding-left: 17px; -} - -table.tablesorter.project .th3 { - width: 450px; -} - -table.tablesorter.project .th4 { - padding-left: 17px; -} - -table.tablesorter.project div.name { - float: left; - margin-top: 0px; -} - -table.tablesorter.project div.pic { - float: left; - padding-right: 5px; -} +table.tablesorter.project { + .th1 { + width: 130px; + /*padding-left: 17px;*/ } + .th2 { + width: 110px; + /*padding-left: 17px;*/ } + .th3 { + width: 450px; } + .th4 { + /*padding-left: 17px;*/ } + div { + &.name { + float: left; + margin-top: 0px; } + &.pic { + float: left; + padding-right: 5px; } } } a.files-see { - color: #565657; - text-decoration: underline; -} + color: #565657; + text-decoration: underline; } -div.file { - border: 1px solid #dddddd; - margin-top: 10px; -} +div { + &.file { + border: 1px solid #dddddd; + margin-top: 10px; + div.top { + height: 28px; + background: #ededed; + -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + position: relative; + z-index: 99; + div { + &.l { + float: left; + margin: 6px 0px 0px 10px; } + &.r { + float: right; + margin: 6px 10px 0px 0px; } } } } + &.files div { + &.l { + float: left; + margin-bottom: 5px; } + &.r { + float: right; + display: none; } } + &.file { + margin-bottom: 10px; } } -div.file div.top { - height: 28px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; -} +textarea.commit-message { + height: 60px; + width: 450px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + margin-top: 5px; } -div.file div.top div.l { - float: left; - margin: 6px 0px 0px 10px; -} +div { + &.files div.l p { + padding: 0; + margin: 5px 0px 0px 0px; } + &.gutter-new { + float: left; + border: 0 !important; + padding: 10px 5px 10px 0px; + font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; + background: #EDEDED; + width: 40px; + text-align: right; } } -div.file div.top div.r { - float: right; - margin: 6px 10px 0px 0px; -} - -div.files div.l { - float: left; - margin-bottom: 5px; -} - -div.files div.r { - float: right; - display: none; -} - -div.files div.l p{ - padding: 0; - margin: 5px 0px 0px 0px; -} +/* Code */ /* Tracker */ -table td.width18 { - width: 18px; -} - -table td.width135 { - width: 135px; -} - -table td.width145 { - width: 145px; -} - -table td.width30 { - width: 30px; -} - -table td.width30.right { - text-align: right; -} +table td { + &.width18 { + width: 18px; } + &.width135 { + width: 135px; } + &.width145 { + width: 145px; } + &.width30 { + width: 30px; + &.right { + text-align: right; } } } div.bordered.bpadding20 { - padding-bottom: 20px; -} + padding-bottom: 20px; } -table.tracker-lables td { - padding: 1px; -} - -table.tracker-lables div.label { - width: auto; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; -} - -table.tracker-lables div.label:hover { - background: none; -} +table.tracker-lables { + td { + padding: 1px; } + div.label { + width: auto; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; + &:hover { + background: none; } } } div.blue-switcher { - height: 19px; - width: 258px; - border: 1px solid #a0a0a1; - border-radius: 3px; - background-color: #575756; - color: #FFF; - -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - float: right; -} + height: 19px; + width: 258px; + border: 1px solid #a0a0a1; + border-radius: 3px; + background-color: #575756; + color: #FFF; + -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + float: right; + div { + &.open { + float: left; + padding: 1px 0px 2px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; } + &.selected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); + background-image: -webkit-linear-gradient(top, #619dd2, #125687); + background-image: -moz-linear-gradient(top, #619dd2, #125687); + background-image: -ms-linear-gradient(top, #619dd2, #125687); + background-image: -o-linear-gradient(top, #619dd2, #125687); + background-image: linear-gradient(top, #619dd2, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); + border-radius: 2px; + height: 18px; + width: 128px; + -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin: 0px; + z-index: 2; } + &.closed { + float: right; + padding: 1px 0px 0px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; } } } -div.blue-switcher div.open { - float: left; - padding: 1px 0px 2px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; -} +table.tablesorter.tracker { + th.th1 { + width: 50px; } + td { + &.td0 { + width: 10px; + padding-right: 0px; } + &.td3 { + width: 120px; + padding-top: 10px; + div { + &.code { + height: 19px; + width: 15px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + padding: 1px 0px 0px 5px; + float: left; + margin-right: 5px; + cursor: pointer; } + &.avatar { + float: left; + margin-right: 5px; + cursor: pointer; } + &.answers { + height: 20px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + float: left; + cursor: pointer; + div { + &.pic { + float: left; + margin: 2px; } + &.count { + float: left; + margin: 0px 5px 0px 2px; } } } } } } + div.smalltext { + font-size: 11px; + color: #b0b0b1; + float: left; + margin-top: 3px; } } -div.blue-switcher div.selected { - background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); - background-image: -webkit-linear-gradient(top, #619dd2, #125687); - background-image: -moz-linear-gradient(top, #619dd2, #125687); - background-image: -ms-linear-gradient(top, #619dd2, #125687); - background-image: -o-linear-gradient(top, #619dd2, #125687); - background-image: linear-gradient(top, #619dd2, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); - border-radius: 2px; - height: 18px; - width: 128px; - -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin: 0px; - z-index: 2; - -} +div { + &.label { + &.selected.tracker { + width: auto; + clear: both; + cursor: default; + margin-left: 0px; + padding: 5px; + float: right; + margin-top: -6px; + &:hover { + background: none; } } + &.edit { + width: 196px; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + &:hover { + background: none; } } } + &.labeltext { + &.edit { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + margin-bottom: 5px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; + width: 175px; + cursor: default; + div { + &.text { + float: left; } + &.delete { + float: right; + cursor: pointer; + margin-top: 1px; } } } + a { + text-decoration: none; + color: #565657; } + &.edit a { + text-decoration: none; + color: #FFF; } } } -div.blue-switcher div.closed { - float: right; - padding: 1px 0px 0px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; -} - -table.tablesorter.tracker th.th1{ - width: 50px; -} - -table.tablesorter.tracker td.td0{ - width: 10px; - padding-right: 0px; -} - -table.tablesorter.tracker td.td3{ - width: 120px; - padding-top: 10px; -} - -table.tablesorter.tracker td.td3 div.code { - height: 19px; - width: 15px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - padding: 1px 0px 0px 5px; - float: left; - margin-right: 5px; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.avatar { - float: left; - margin-right: 5px; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.answers { - height: 20px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - float: left; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.answers div.pic { - float: left; - margin: 2px; -} - -table.tablesorter.tracker td.td3 div.answers div.count { - float: left; - margin: 0px 5px 0px 2px; -} - -table.tablesorter.tracker div.smalltext { - font-size: 11px; - color: #b0b0b1; - float: left; - margin-top: 3px; -} - - -div.label.selected.tracker { - width: auto; - clear: both; - cursor: default; - margin-left: 0px; - padding: 5px; - float: right; - margin-top: -6px; -} - -div.label.selected.tracker:hover { - background: none; -} - - -div.label.edit { - width: 196px; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; -} - -div.label.edit:hover{ - background: none; -} - -div.labeltext.edit { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - margin-bottom: 5px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; - width: 175px; - cursor: default; -} - -div.labeltext.edit div.text { - float: left; -} - -div.labeltext.edit div.delete { - float: right; - cursor: pointer; - margin-top: 1px; -} - -aside div.colors { - margin: 10px 0px; -} - -aside div.colors div.color { - float: left; - width: 22px; - height: 22px; - margin-right: 5px; - border-radius: 4px; - -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - cursor: pointer; -} - -aside div.colors div.choose { - height: 14px; - width: 14px; - padding: 4px; -} - -aside div.colors div.choose.selected, aside div.colors div.choose:hover { - background: image-url("choose.png") no-repeat 50% 50%; - height: 14px; - width: 14px; - padding: 4px; -} - -aside div.lefter { - float: left; -} - -aside div.righter { - float: right; - margin-right: 15px; -} +aside div { + &.colors { + margin: 10px 0px; + div { + &.color { + float: left; + width: 22px; + height: 22px; + margin-right: 5px; + border-radius: 4px; + -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + cursor: pointer; } + &.choose { + height: 14px; + width: 14px; + padding: 4px; + &.selected, &:hover { + background: image-url("choose.png") no-repeat 50% 50%; + height: 14px; + width: 14px; + padding: 4px; } } } } + &.lefter { + float: left; } + &.righter { + float: right; + margin-right: 15px; } } tr.label-active { - background: #DDD; - border-radius: 3px; -} + background: #DDD; + border-radius: 3px; } /* Wiki */ span.wiki-gray { - color: #b0b0b1; -} + color: #b0b0b1; } .right table.wiki { - border: 1px solid #e2e2e2; - border-bottom: none; - margin-top: 10px; -} - -.right table.wiki td { - border-bottom: 1px solid #e2e2e2; - padding: 8px; -} - -.right table.wiki tr.history td.td1{ - width: 5px; -} - -.right table.wiki tr.history td.td2{ - width: 180px; -} + border: 1px solid #e2e2e2; + border-bottom: none; + margin-top: 10px; + td { + border-bottom: 1px solid #e2e2e2; + padding: 8px; } + tr.history td { + &.td1 { + width: 5px; } + &.td2 { + width: 180px; } } } a.button.rigth { - float: right; -} + float: right; } div.r { - float: right; - margin-left: 10px; -} + float: right; + margin-left: 10px; } h3.wiki { - color: #477cae; - font-size: 16px; -} + color: #477cae; + font-size: 16px; } a.button.width100 { - width: 100px; -} + width: 100px; } .div-tracker-labels { - margin: 2px 13px 2px 0px; - cursor: pointer; - border-radius: 4px; -} + margin: 2px 13px 2px 0px; + cursor: pointer; + border-radius: 4px; } .div-label-left { - float: left; - width: 150px; -} + float: left; + width: 150px; } .div-label-right { - float: right; - width: 30px; - text-align: right; - padding-top: 4px; - padding-right: 3px; -} + float: right; + width: 30px; + text-align: right; + padding-top: 4px; + padding-right: 3px; } div.div-label-left div.label { - width: auto; - clear: both; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; -} + width: auto; + clear: both; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; + &:hover { + background: none; } } -div.div-label-left div.label:hover { - background: none; -} +/* Monitoring */ + +aside div.table { + margin-top: 5px; } + +h3.small { + font-size: 12px; + margin: 0px; + padding: 3px 0px; } + +table.tablesorter th.lpadding16 { + padding-left: 16px; } + +div.right.slim { + padding: 5px 14px 40px; + width: 695px; } + +img.delete-row { + cursor: pointer; } + +/* Create group */ + +div { + &.right-error { + float: left; + width: 369px; + height: 59px; + background: image-url("error-groups.png"); + margin: 0px 0px 5px -3px; + text-align: center; + p { + margin: 0; + padding: 27px 0px 0px 0px; } } + &.rightlist.nomargin { + margin: 0; } } + +article div { + &.rightlist input.error { + border: 1px solid #bd4d40; + -webkit-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); + -moz-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); + box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); } + &.groups-profile { + float: left; + a { + margin: 0px 0px 0px 5px; } + img { + margin: 2px 0px 0px 0px; } } } + +/* Group pages */ + +table.tablesorter { + &.group-list th.th2 { + width: 540px; } + &.create-platform th.th1 { + /*padding-left: 17px;*/ + width: 120px; } } + +/* Platform */ + +div.right div.left { + float: left; + margin-right: 5px; } + +table.tablesorter { + &.platform-products { + th.th1 { + /*padding-left: 17px;*/ + width: 560px; } + td.td2 { + text-align: center; } } + &.platform-repos { + th { + &.th1 { + /*padding-left: 17px;*/ + width: 480px; } + &.th2 { + /*padding-left: 17px;*/ + width: 80px; } } + td.td3 { + text-align: center; } } } + +div.new-owner div { + &.field { + float: left; + margin-right: 10px; + input { + width: 230px; } } + &.search { + float: left; } } + +.tpadding10 { + padding-top: 10px; } + +article div.all div.hr { + border-bottom: 1px solid #dedede; + width: 565px; + padding-top: 30px; + margin-bottom: 30px; } + +table.tablesorter.platform-product-main th { + &.th1 { + /*padding-left: 17px;*/ + width: 60px; } + &.th2 { + /*padding-left: 17px;*/ + width: 400px; } + &.th3 { + padding-left: 0px; } + &.th4 { + /*padding-left: 17px;*/ + width: 150px; } } + +div.right.rpadding0 { + padding-right: 0px; } + +article div.loadFile div { + &.btn { + float: left; } + &.name { + float: left; + margin-left: 20px; + padding-top: 4px; } } + +/* Profile */ + +.bpadding10 { + padding-bottom: 10px; } + +article div.rightlist div.load { + float: left; + margin-left: 40px; } + +.notify { + border: 1px solid #c86b60; + background: #f4e1df; + border-radius: 4px; + width: 100%; + margin-top: 20px; + p { + padding: 5px 10px; } } + +/* Pagination */ + +div.pagination { + em { + font-style: normal; + border: 1px solid #dddddd; + border-radius: 1px; + background: #ededed; + padding: 3px 7px; } + span, a { + border: 1px solid #dddddd; + border-radius: 1px; + background: #ededed; + padding: 3px 7px; } + em.current { + background: #d5e7f9; + border: 1px solid #c1daed; } + a { + color: #4c90d0; } } + +/*404*/ + +article div.all.error404 { + background: image-url("404.png") no-repeat 59% 0; + height: 500px; + text-align: center; + h1 { + margin: 0; + padding: 0; + margin-top: 165px; + font-size: 48px; + font-weight: normal; + span { + color: #4496d0; } } + h2 { + margin: 0; + padding: 0; + margin-top: 5px; + font-size: 18px; + font-weight: normal; } + p { + margin: 0 auto; + padding: 0; + text-align: center; + font-size: 14px; + &.pages { + margin-top: 72px; + width: 280px; } + &.search { + margin-top: 80px; + width: 230px; } } } \ No newline at end of file diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 9c264d863..ed058c203 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -1,12 +1,12 @@ # -*- encoding : utf-8 -*- class IssuesController < ApplicationController + NON_RESTFUL_ACTION = [:create_label, :update_label, :destroy_label, :search_collaborators] before_filter :authenticate_user! - load_and_authorize_resource :project, :except => [:create_lable, :delete_label] + load_and_authorize_resource :project, :except => NON_RESTFUL_ACTION load_and_authorize_resource :issue, :through => :project, :find_by => :serial_id, :only => [:show, :edit, :update, :destroy] - before_filter :load_and_authorize_label, :only => [:create_label, :update_label, :destroy_label] + before_filter :load_and_authorize_label, :only => NON_RESTFUL_ACTION - autocomplete :user, :uname layout 'application' def index(status = 200) @@ -18,11 +18,8 @@ class IssuesController < ApplicationController @issues = @issues.where(:user_id => current_user.id) if @is_assigned_to_me @issues = @issues.joins(:labels).where(:labels => {:name => @labels}) unless @labels == [] - if params[:search] - @is_assigned_to_me = false - @status = 'open' - @labels = [] - @issues = @project.issues.where('issues.title ILIKE ?', "%#{params[:search].mb_chars.downcase}%") + if params[:search_issue] + @issues = @issues.where('issues.title ILIKE ?', "%#{params[:search_issue].mb_chars.downcase}%") end @issues = @issues.includes(:creator, :user).order('serial_id desc').uniq.paginate :per_page => 10, :page => params[:page] if status == 200 @@ -41,6 +38,7 @@ class IssuesController < ApplicationController @user_uname = params[:user_uname] @issue = Issue.new(params[:issue]) + @issue.creator_id = current_user.id @issue.user_id = @user_id @issue.project_id = @project.id @@ -95,6 +93,19 @@ class IssuesController < ApplicationController index(status) end + def search_collaborators + search = "%#{params[:search_user]}%" + users = User.joins(:groups => :projects).where(:projects => {:id => @project.id}).where("users.uname ILIKE ?", search) + users2 = @project.collaborators.where("users.uname ILIKE ?", search) + @users = (users + users2).uniq.sort {|x,y| x.uname <=> y.uname}.first(10) + render 'issues/_search_collaborators', :layout => false + end + + def search_labels + @labels = @project.labels.where("labels.name ILIKE ?", "%#{params[:search_labels]}%").order('labels.name').limit(10) + render 'issues/_search_labels', :layout => false + end + private def load_and_authorize_label diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 07236a9d0..de76623a6 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -1,3 +1,9 @@ # -*- encoding : utf-8 -*- module IssuesHelper + def tracker_search_field(name, txt) + str = "" + str.html_safe + end end diff --git a/app/models/issue.rb b/app/models/issue.rb index 90f01e1b1..3ce981df0 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -22,6 +22,9 @@ class Issue < ActiveRecord::Base after_update :deliver_issue_assign_notification after_update :subscribe_issue_assigned_user + attr_accessible :labelings_attributes, :title, :body, :project, :project_id + accepts_nested_attributes_for :labelings, :allow_destroy => true + def assign_uname user.uname if user end diff --git a/app/views/issues/_create_sidebar.html.haml b/app/views/issues/_create_sidebar.html.haml new file mode 100644 index 000000000..bf01f9294 --- /dev/null +++ b/app/views/issues/_create_sidebar.html.haml @@ -0,0 +1,14 @@ +-content_for :sidebar do + .bordered.nopadding + %h3=t('layout.issues.executor') + =form_tag search_collaborators_project_issues_path(@project), :id => 'search_user', :method => :get do + =tracker_search_field(:search_user, t('layout.issues.search_user')) + #create_issue_users_list + =render 'issues/search_collaborators' + + .block + %h3=t('layout.issues.labels') + =form_tag search_labels_project_issues_path(@project), :id => 'search_labels', :method => :get do + =tracker_search_field(:search_labels, t('layout.issues.search_labels')) + #create_issue_labels_list + =render 'issues/search_labels' \ No newline at end of file diff --git a/app/views/issues/_form.html.haml b/app/views/issues/_form.html.haml index 985ff7913..e861deab3 100644 --- a/app/views/issues/_form.html.haml +++ b/app/views/issues/_form.html.haml @@ -1,26 +1,19 @@ -= javascript_include_tag "autocomplete-rails.js" - -.group - = f.label :title, :class => :label - = f.text_field :title, :class => 'text_field' - -.group - = f.label :body, :class => :label - = f.text_area :body, :class => 'text_field', :cols => 80 - -- unless @issue.new_record? - .group - = f.label :status, :class => :label - = f.select :status, Issue::STATUSES, :class => 'text_field' - -.group - = label_tag "", t("activerecord.attributes.issue.user_id"), :class => :label - = autocomplete_field_tag 'user_id', @user_uname, autocomplete_user_uname_platforms_path, :id_element => '#user_id_field' - = hidden_field_tag 'user_id', @user_id, :id => 'user_id_field' - -.group.navform.wat-cf - %button.button{:type => "submit"} - = image_tag("web-app-theme/icons/tick.png", :alt => t("layout.save")) - = t("layout.save") - %span.text_button_padding= t("layout.or") - = link_to t("layout.cancel"), project_path(@project), :class => "text_button_padding link_button" +.leftlist= t('activerecord.attributes.issue.title') + ':' +.rightlist= f.text_field :title +.leftlist= t('activerecord.attributes.issue.body') + ':' +.rightlist= f.text_area :body +.both +.leftlist= t('activerecord.attributes.issue.user') + ':' +.rightlist + %span#people-span.small-text= t('layout.issues.choose_user_on_left') + #issue_executor +.both +.leftlist= t('layout.issues.labels') +.rightlist + %span#flag-span.small-text= t('layout.issues.choose_labels_on_left') + #issue_labels +.both +.leftlist +.rightlist + %input{:type => "submit", :value => t(@issue.new_record? ? 'layout.create' : 'layout.update')} +.both diff --git a/app/views/issues/_sidebar.html.haml b/app/views/issues/_index_sidebar.html.haml similarity index 79% rename from app/views/issues/_sidebar.html.haml rename to app/views/issues/_index_sidebar.html.haml index 1d8f7ade5..8f0401ccc 100644 --- a/app/views/issues/_sidebar.html.haml +++ b/app/views/issues/_index_sidebar.html.haml @@ -13,7 +13,7 @@ %td.width30.right=@project.issues.where(:user_id => current_user).count =form_tag project_issues_path(@project), :id => 'search_issue', :method => :get do .bordered.bpadding20 - =text_field_tag :search, t('layout.issues.search'), :class => 'gray', :onClick => "if(this.value=='#{t('layout.issues.search')}'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='#{t('layout.issues.search')}';this.className='gray';}" + =tracker_search_field(:search_issue, t('layout.issues.search')) .bordered.nopadding %h3.bmargin10=t('layout.issues.new') = link_to t("layout.add"), new_project_issue_path(@project), :class => 'button' if can? :new, Issue.new(:project_id => @project.id) diff --git a/app/views/issues/_issue.html.haml b/app/views/issues/_issue.html.haml index 9b23d23f7..fe9765050 100644 --- a/app/views/issues/_issue.html.haml +++ b/app/views/issues/_issue.html.haml @@ -13,7 +13,8 @@ .labeltext.selected{:style => "background: ##{label.color};"}=label.name .both %td.td3 - .code=link_to '#', [@project, issue] + %a{:href => project_issue_path(@project.id, issue.serial_id)} + .code='#' .avatar =link_to image_tag(issue.user.avatar(22), :alt => 'avatar'), user_path(issue.user) if issue.user %a{:href => "#{project_issue_path @project, issue}#block-list"} diff --git a/app/views/issues/_labels.html.haml b/app/views/issues/_labels.html.haml index 2d29211c8..93883a370 100644 --- a/app/views/issues/_labels.html.haml +++ b/app/views/issues/_labels.html.haml @@ -36,7 +36,7 @@ .both =form_tag create_label_project_issues_path(@project), :id => 'new_label', :method => :post do - %input.gray{:name => 'name', :onClick => "if(this.value=='#{t('layout.issues.new_label')}'){this.value='';this.className='black';}", :onblur => "if(this.value==''){this.value='#{t('layout.issues.new_label')}';this.className='gray';}", :type => "text", :value => "#{t('layout.issues.new_label')}"} + =tracker_search_field(:name, t('layout.issues.new_label')) =render :partial => 'issues/colors_chooser' .lefter %a{:href => "#custom_color", :id => 'custom_color', :class => 'custom_color'}=t('layout.issues.label_custom_color') diff --git a/app/views/issues/_search_collaborators.html.haml b/app/views/issues/_search_collaborators.html.haml new file mode 100644 index 000000000..e5b25dc30 --- /dev/null +++ b/app/views/issues/_search_collaborators.html.haml @@ -0,0 +1,6 @@ +- (@users || []).each_with_index do |user, index| + .people.select{:id => "user-#{index}", :class => 'add_executor'} + .avatar=image_tag(user.avatar(25), :alt => 'avatar') + .name="#{user.uname} (#{user.name})" + =hidden_field_tag "user-#{index}", user.id, :name => 'user_id' + .both diff --git a/app/views/issues/_search_labels.html.haml b/app/views/issues/_search_labels.html.haml new file mode 100644 index 000000000..c535499d6 --- /dev/null +++ b/app/views/issues/_search_labels.html.haml @@ -0,0 +1,5 @@ +- (@labels || []).each_with_index do |label, index| + .add_label.label.selected{:id => "flag#{index}"} + .labeltext.selected{:style => "background: ##{label.color};"}=label.name + =hidden_field_tag "label-#{index}", label.id, :name => "issue[labelings_attributes][#{index}][label_id]" + .both diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index f59a83b42..461fde28a 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -1,5 +1,5 @@ -render :partial => 'projects/submenu' --render :partial => 'issues/sidebar' +-render :partial => 'issues/index_sidebar' #closed-switcher.blue-switcher =hidden_field_tag :issues_status, @status, :id => 'issues_status' @@ -17,4 +17,5 @@ %th.th1{:colspan => "2"}=t('layout.issues.number') %th{:colspan => "2"}=t('layout.issues.description') %tbody - = render :partial => 'issues/issue', :collection => @issues \ No newline at end of file + = render :partial => 'issues/issue', :collection => @issues + = will_paginate @issues \ No newline at end of file diff --git a/app/views/issues/new.html.haml b/app/views/issues/new.html.haml index cb94f0ac4..befc4fb0f 100644 --- a/app/views/issues/new.html.haml +++ b/app/views/issues/new.html.haml @@ -1,11 +1,8 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to "#{t("layout.issues.list")}", project_issues_path(@project) - %li.active= link_to "#{t("layout.issues.new")}", new_project_issue_path(@project) - .content - %h2.title - = t("layout.issues.new_header") - .inner - = form_for :issue, :url => project_issues_path(@project), :html => { :class => :form } do |f| - = render :partial => "form", :locals => {:f => f} +-render :partial => 'projects/submenu' +-render :partial => 'issues/create_sidebar' +-content_for :right_nopadding do + dummy + +%h3.bpadding10= t("layout.issues.create_header") += form_for :issue, :url => project_issues_path(@project), :html => { :class => 'form issue' } do |f| + = render :partial => "form", :locals => {:f => f} diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 7018b8ac0..0a7b3d32e 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -41,7 +41,7 @@ %article - if content_for?(:sidebar) %aside= yield :sidebar - .right= yield + .right{:class => content_for?(:right_nopadding) ? ' nopadding' : ''}= yield - else .all= yield .both diff --git a/config/application.rb b/config/application.rb index 99fbb1300..7729c9f09 100644 --- a/config/application.rb +++ b/config/application.rb @@ -37,7 +37,7 @@ module Rosa # config.time_zone = 'Central Time (US & Canada)' # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. - config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**/*.yml').to_s] + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] config.i18n.default_locale = :en config.action_view.javascript_expansions[:defaults] = %w() diff --git a/config/locales/issues/issues.en.yml b/config/locales/issues.en.yml similarity index 78% rename from config/locales/issues/issues.en.yml rename to config/locales/issues.en.yml index 73003cd2f..37fb8e5fe 100644 --- a/config/locales/issues/issues.en.yml +++ b/config/locales/issues.en.yml @@ -2,8 +2,8 @@ en: activerecord: attributes: issue: - title: Title - body: Content + title: Name + body: Description user: Assigned user_id: Assigned project: Project @@ -22,7 +22,7 @@ en: list_header: List confirm_delete: Are you sure to delete this task? edit_header: Task edit - new_header: New task + create_header: Create task statuses: open: Opened closed: Closed @@ -39,6 +39,11 @@ en: update_label: Update label label_custom_color: Custom color label_manage: Manage + executor: Executor + search_user: Search user... + search_labels: Search labels... + choose_user_on_left: Choose executor on the left + choose_labels_on_left: Choose labels on the left flash: issue: diff --git a/config/locales/issues/issues.ru.yml b/config/locales/issues.ru.yml similarity index 78% rename from config/locales/issues/issues.ru.yml rename to config/locales/issues.ru.yml index 912509ddb..46c21d53c 100644 --- a/config/locales/issues/issues.ru.yml +++ b/config/locales/issues.ru.yml @@ -2,8 +2,8 @@ ru: activerecord: attributes: issue: - title: Заголовок - body: Содержание + title: Название + body: Описание user: Назначена user_id: Назначена project: Проект @@ -22,7 +22,7 @@ ru: list_header: Список confirm_delete: Вы уверены, что хотите удалить эту задачу? edit_header: Редактирование задачи - new_header: Новая задача + create_header: Создать задачу statuses: open: Открытые closed: Закрытые @@ -32,13 +32,18 @@ ru: unsubscribe_btn: Отписаться number: Номер description: Описание - by: + by: ' ' labels: Метки invalid_labels: Неверный hex код new_label: Название новой метки update_label: Обновить метку label_custom_color: Свой цвет label_manage: Управление + executor: Исполнитель + search_user: Найти пользователя... + search_labels: Найти метки... + choose_user_on_left: выберите исполнителя слева + choose_labels_on_left: выберите метки слева flash: issue: diff --git a/config/routes.rb b/config/routes.rb index 6461ddb6c..22af526cc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -119,7 +119,11 @@ Rosa::Application.routes.draw do resources :issues do resources :comments, :only => [:edit, :create, :update, :destroy] resources :subscribes, :only => [:create, :destroy] - post :create_label, :on => :collection + collection do + post :create_label + get :search_collaborators + get :search_labels + end end post "labels/:label_id" => "issues#destroy_label", :as => :issues_delete_label post "labels/:label_id/update" => "issues#update_label", :as => :issues_update_label From 66a08662c2eae201a7efafa6c4a17c1b691a4a64 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 15:23:27 +0600 Subject: [PATCH 10/87] [refs #194] new styles; some changes --- app/assets/javascripts/tracker.js | 31 +++-- app/assets/stylesheets/application.scss | 2 + app/assets/stylesheets/blue/asc.png | Bin 0 -> 2870 bytes app/assets/stylesheets/blue/bg.png | Bin 0 -> 2920 bytes app/assets/stylesheets/blue/desc.png | Bin 0 -> 2874 bytes app/assets/stylesheets/blue/style.css | 118 ++++++++++++++++++ app/controllers/issues_controller.rb | 7 +- .../issues/_search_collaborators.html.haml | 2 +- app/views/issues/_search_labels.html.haml | 5 +- 9 files changed, 148 insertions(+), 17 deletions(-) create mode 100644 app/assets/stylesheets/blue/asc.png create mode 100644 app/assets/stylesheets/blue/bg.png create mode 100644 app/assets/stylesheets/blue/desc.png create mode 100644 app/assets/stylesheets/blue/style.css diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/tracker.js index 8726fe5ac..36c47f534 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/tracker.js @@ -132,8 +132,8 @@ $(document).ready(function() { function remExecutor(form) { var el = form.find('.people.selected.remove_executor'); var id = el.attr('id'); - $('#'+id+'.add_executor.people.selected').fadeIn('slow'); - el.fadeOut('slow').remove(); + $('#'+id+'.add_executor.people.selected').removeClass('select'); + el.remove(); } $('.add_executor.people.selected').live('click', function() { @@ -141,7 +141,7 @@ $(document).ready(function() { form.find('#people-span').fadeOut(0); remExecutor(form); form.find('#issue_executor').html($(this).clone().removeClass('add_executor').addClass('remove_executor')); - $(this).fadeOut(0); + $(this).addClass('select'); }); $('.remove_executor.people.selected').live('click', function() { @@ -151,16 +151,23 @@ $(document).ready(function() { }); function remLabel(form, id) { - var el = form.find('.label.selected.remove_label'+'#'+id); - $('#'+id+'.add_label.label.selected').fadeIn('slow'); + var el = form.find('.label.remove_label'+'#'+id); + var label = $('#'+id+'.remove_label.label.selected'); + label.find('.flag').fadeIn(0); + label.find('.labeltext.selected').removeClass('selected').attr('style', ''); + label.fadeIn('slow'); el.fadeOut('slow').remove(); } - $('.add_label.label.selected').live('click', function() { + $('.add_label.label').live('click', function() { + $(this).addClass('selected').removeClass('add_label').addClass('remove_label'); + $(this).find('.labeltext').addClass('selected'); + var style = $(this).find('.flag').attr('style'); + $(this).find('.flag').fadeOut(0); + $(this).find('.labeltext.selected').attr('style', style); var form = $('.form.issue'); form.find('#flag-span').fadeOut(0); - form.find('#issue_labels').append($(this).clone().removeClass('add_label').addClass('remove_label')); - $(this).fadeOut(0); + form.find('#issue_labels').append($(this).clone()); }); $('.remove_label.label.selected').live('click', function() { @@ -168,7 +175,13 @@ $(document).ready(function() { if(form.find('.remove_label.label.selected').length == 1) { form.find('#flag-span').fadeIn(0); } - remLabel(form, $(this).attr('id')); + var str = '.label.remove_label'+'#'+$(this).attr('id'); + form.find(str).remove(); + var label = $(str); + label.removeClass('selected').addClass('add_label').removeClass('remove_label'); + label.find('.labeltext.selected').attr('style', '').removeClass('selected'); + label.find('.flag').fadeIn(0); + }); }); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index cd763fe80..356e120a7 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -1,7 +1,9 @@ //@import "vendor"; @import "main"; @import "custom"; +@import "blue/style"; //= require main //= require vendor //= require custom + diff --git a/app/assets/stylesheets/blue/asc.png b/app/assets/stylesheets/blue/asc.png new file mode 100644 index 0000000000000000000000000000000000000000..7cea5a1c301cb55f1c97bab5d9575601798cd0d7 GIT binary patch literal 2870 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 literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/blue/style.css b/app/assets/stylesheets/blue/style.css new file mode 100644 index 000000000..aafbf9dd9 --- /dev/null +++ b/app/assets/stylesheets/blue/style.css @@ -0,0 +1,118 @@ +/* tables */ +table.tablesorter { + font-family:arial; + margin:10px 0pt 15px; + font-size: 12px; + width: 100%; + text-align: left; + border: 1px solid #DDD; + border-bottom: none; +} + +table.tablesorter thead th{ + padding-left: 5px; +} + +table.tablesorter thead tr th, table.tablesorter tfoot tr th { + font-size: 12px; + margin: 0px; +} +table.tablesorter thead tr .header { + background-image: url("bg.png"); + background-repeat: no-repeat; + background-position: center left; + cursor: pointer; +} +table.tablesorter tbody td { + color: #3D3D3D; + padding: 5px; + margin: 0px; + background-color: #FFF; + vertical-align: top; + +} +table.tablesorter tbody tr.odd td { + background-color:#F0F0F6; +} +table.tablesorter thead tr .headerSortUp { + background-image: url("asc.png"); +} +table.tablesorter thead tr .headerSortDown { + background-image: url("desc.png"); +} +table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp { + +} + +table.tablesorter thead tr { + height: 38px; + background: #ededed; + -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + position: relative; + z-index: 99; +} + +table.tablesorter thead tr th{ + border-bottom: 1px solid #FFF; +} + +table.tablesorter tr { + position: relative; + z-index: 70; +} + +table.tablesorter tbody tr td { + border-bottom: 1px solid #DDD; +} + +table.tablesorter thead th { + color: #575756; + font-weight: normal; +} + +table.tablesorter tbody td { + color: #58595b; + padding-top: 8px; + padding-bottom: 8px; +} + +table.tablesorter .th1 { + width: 180px; + /*padding-left: 17px;*/ +} + +table.tablesorter .th2 { + width: 390px; +} + +table.tablesorter .th3 { + width: 110px; + /*padding-left: 17px;*/ +} + +table.tablesorter .td2 { + padding-right: 20px; +} + +table.tablesorter .th4 { + width: 120px; +} + +table.tablesorter .td5 { + text-align: center; +} + +table.tablesorter .td5 img{ + cursor: pointer; +} + +.table-sort-left { + float: left; + width: 25px; +} + +.table-sort-right { + float: left; +} \ No newline at end of file diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index ed058c203..9c9a38687 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -10,6 +10,8 @@ class IssuesController < ApplicationController layout 'application' def index(status = 200) + logger.debug "!!!!!!!!!!!!!!!!!!" + logger.debug "request format is #{request.format}" @is_assigned_to_me = params[:filter] == 'to_me' @status = params[:status] == 'closed' ? 'closed' : 'open' @labels = params[:labels] || [] @@ -53,11 +55,6 @@ class IssuesController < ApplicationController end end - def edit - @user_id = @issue.user_id - @user_uname = @issue.assign_uname - end - def update @user_id = params[:user_id].blank? ? @issue.user_id : params[:user_id] @user_uname = params[:user_uname].blank? ? @issue.assign_uname : params[:user_uname] diff --git a/app/views/issues/_search_collaborators.html.haml b/app/views/issues/_search_collaborators.html.haml index e5b25dc30..46d20276a 100644 --- a/app/views/issues/_search_collaborators.html.haml +++ b/app/views/issues/_search_collaborators.html.haml @@ -1,5 +1,5 @@ - (@users || []).each_with_index do |user, index| - .people.select{:id => "user-#{index}", :class => 'add_executor'} + .people.selected{:id => "user-#{index}", :class => 'add_executor'} .avatar=image_tag(user.avatar(25), :alt => 'avatar') .name="#{user.uname} (#{user.name})" =hidden_field_tag "user-#{index}", user.id, :name => 'user_id' diff --git a/app/views/issues/_search_labels.html.haml b/app/views/issues/_search_labels.html.haml index c535499d6..779b3d817 100644 --- a/app/views/issues/_search_labels.html.haml +++ b/app/views/issues/_search_labels.html.haml @@ -1,5 +1,6 @@ - (@labels || []).each_with_index do |label, index| - .add_label.label.selected{:id => "flag#{index}"} - .labeltext.selected{:style => "background: ##{label.color};"}=label.name + .add_label.label{:id => "flag#{index}"} + .flag{:style => "background: ##{label.color};"} + .labeltext=label.name =hidden_field_tag "label-#{index}", label.id, :name => "issue[labelings_attributes][#{index}][label_id]" .both From 0d75a37451337d6e1aff0178e83e44099f7f3056 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 20:05:18 +0600 Subject: [PATCH 11/87] [refs #194] show page beta version --- app/assets/javascripts/switcher.js | 54 ------------------- app/assets/javascripts/tracker.js | 21 ++++++++ app/controllers/issues_controller.rb | 16 +++--- app/models/issue.rb | 19 ++++++- app/views/issues/_create_sidebar.html.haml | 41 +++++++++++--- app/views/issues/_status.html.haml | 9 ++++ app/views/issues/edit.html.haml | 11 ---- app/views/issues/index.html.haml | 4 +- app/views/issues/show.html.haml | 50 +++++++---------- config/locales/issues.en.yml | 4 ++ config/locales/issues.ru.yml | 4 ++ config/routes.rb | 2 +- .../20120228094721_add_closed_at_to_issue.rb | 5 ++ .../20120228100121_add_closed_by_to_issue.rb | 6 +++ 14 files changed, 129 insertions(+), 117 deletions(-) delete mode 100644 app/assets/javascripts/switcher.js create mode 100644 app/views/issues/_status.html.haml delete mode 100644 app/views/issues/edit.html.haml create mode 100644 db/migrate/20120228094721_add_closed_at_to_issue.rb create mode 100644 db/migrate/20120228100121_add_closed_by_to_issue.rb diff --git a/app/assets/javascripts/switcher.js b/app/assets/javascripts/switcher.js deleted file mode 100644 index 4522e7687..000000000 --- a/app/assets/javascripts/switcher.js +++ /dev/null @@ -1,54 +0,0 @@ -function switchThis() { - var doc = document.getElementById("switcher"); - if (doc.className == "switcher") { - doc.className = "switcher-off"; - $("#open-comment").fadeOut(0); - $("#closed-comment").fadeIn("slow"); - } else { - doc.className = "switcher"; - $("#closed-comment").fadeOut(0); - $("#open-comment").fadeIn("slow"); - } -} - -function preload() { - if (document.images) { - var imgsrc = preload.arguments; - arr=new Array(imgsrc.length); - - for (var j=0; j @user_id}) ) - flash[:notice] = I18n.t("flash.issue.saved") - redirect_to [@project, @issue] - else - flash[:error] = I18n.t("flash.issue.save_error") - render :action => :new + if status = params[:issue][:status] + action = 'issues/_status' + @issue.set_close(current_user) if status == 'closed' + @issue.set_open if status == 'open' + status = 200 if @issue.save end + + render action, :status => (status || 500), :layout => false end def destroy diff --git a/app/models/issue.rb b/app/models/issue.rb index 3ce981df0..ba24d7010 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -5,6 +5,7 @@ class Issue < ActiveRecord::Base belongs_to :project belongs_to :user belongs_to :creator, :class_name => 'User', :foreign_key => 'creator_id' + belongs_to :closer, :class_name => 'User', :foreign_key => 'closed_by' has_many :comments, :as => :commentable, :dependent => :destroy #, :finder_sql => proc { "comments.commentable_id = '#{self.id}' AND comments.commentable_type = '#{self.class.name}'"} has_many :subscribes, :as => :subscribeable, :dependent => :destroy #, :finder_sql => proc { "subscribes.subscribeable_id = '#{self.id}' AND subscribes.subscribeable_type = '#{self.class.name}'"} @@ -22,7 +23,7 @@ class Issue < ActiveRecord::Base after_update :deliver_issue_assign_notification after_update :subscribe_issue_assigned_user - attr_accessible :labelings_attributes, :title, :body, :project, :project_id + attr_accessible :labelings_attributes, :title, :body, :project, :project_id, :closed_at, :closed_by accepts_nested_attributes_for :labelings, :allow_destroy => true def assign_uname @@ -39,6 +40,21 @@ class Issue < ActiveRecord::Base end end + def closed? + closed_by && closed_at && status == 'closed' + end + + def set_close(closed_by) + self.closed_at = Time.now + self.closer = closed_by + self.status = 'closed' + end + + def set_open + self.closed_at = self.closed_by = nil + self.status = 'open' + end + protected def set_serial_id @@ -87,4 +103,5 @@ class Issue < ActiveRecord::Base end end end + end diff --git a/app/views/issues/_create_sidebar.html.haml b/app/views/issues/_create_sidebar.html.haml index bf01f9294..908d04f51 100644 --- a/app/views/issues/_create_sidebar.html.haml +++ b/app/views/issues/_create_sidebar.html.haml @@ -1,14 +1,39 @@ -content_for :sidebar do + - if @issue.persisted? + .bordered.nopadding + %h3=t('activerecord.attributes.issue.status') + #switcher.issue_status{:class => "#{@issue.closed? ? 'switcher-off' : 'switcher'} #{can?(:write, @issue.project) ? "switch_issue_status" : ''}"} + .swleft=t('layout.issues.status.open') + .swright=t('layout.issues.status.closed') + - if can? :write, @issue.project + =form_tag [@project, @issue], :id => 'update_issue_status', :method => :put do + =hidden_field_tag "issue_status", @issue.closed? ? 'closed' : 'open', :name => "issue[status]" + .bordered.nopadding %h3=t('layout.issues.executor') - =form_tag search_collaborators_project_issues_path(@project), :id => 'search_user', :method => :get do - =tracker_search_field(:search_user, t('layout.issues.search_user')) - #create_issue_users_list - =render 'issues/search_collaborators' + - if @issue.persisted? && @issue.user + .bordered.nopadding + .people.nopointer + .avatar=image_tag(@issue.user.avatar(25), :alt => 'avatar') + .name="#{@issue.user.uname} (#{@issue.user.name})" + =hidden_field_tag "user-0", @issue.user.id, :name => 'user_id' + .both + - else + =form_tag search_collaborators_project_issues_path(@project), :id => 'search_user', :method => :get do + =tracker_search_field(:search_user, t('layout.issues.search_user')) + #create_issue_users_list + =render 'issues/search_collaborators' .block %h3=t('layout.issues.labels') - =form_tag search_labels_project_issues_path(@project), :id => 'search_labels', :method => :get do - =tracker_search_field(:search_labels, t('layout.issues.search_labels')) - #create_issue_labels_list - =render 'issues/search_labels' \ No newline at end of file + - if @issue.new_record? + =form_tag search_labels_project_issues_path(@project), :id => 'search_labels', :method => :get do + =tracker_search_field(:search_labels, t('layout.issues.search_labels')) + #create_issue_labels_list + =render 'issues/search_labels' + - else + - (@issue.labels || []).each_with_index do |label| + .label.selected.nopointer + .labeltext.selected{:style => "background: ##{label.color};"} + =label.name + .both \ No newline at end of file diff --git a/app/views/issues/_status.html.haml b/app/views/issues/_status.html.haml new file mode 100644 index 000000000..970526d4d --- /dev/null +++ b/app/views/issues/_status.html.haml @@ -0,0 +1,9 @@ +#closed_issue_text + - if @issue.status == 'closed' && @issue.closed_at && @issue.closed_by + #closed-comment.comment-closed{:style => 'display: block;'} + .state=t('layout.issues.status.closed') + .text + .avatar=image_tag(@issue.closer.avatar(25), :alt => 'avatar') + .name="#{@issue.closer.uname} (#{@issue.closer.name}) #{t('layout.issues.at')} #{@issue.closed_at.to_s(:long)}" + .both + %br/ \ No newline at end of file diff --git a/app/views/issues/edit.html.haml b/app/views/issues/edit.html.haml deleted file mode 100644 index aa09ab66f..000000000 --- a/app/views/issues/edit.html.haml +++ /dev/null @@ -1,11 +0,0 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.issues.list"), project_issues_path(@project) - %li= link_to t("layout.issues.new"), new_project_issue_path(@project) - .content - %h2.title - = t("layout.issues.edit_header") - .inner - = form_for @issue, :url => project_issue_path(@project, @issue), :html => { :class => :form } do |f| - = render :partial => "form", :locals => {:f => f} diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index 461fde28a..c14a33bb2 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -4,9 +4,9 @@ #closed-switcher.blue-switcher =hidden_field_tag :issues_status, @status, :id => 'issues_status' .open - ="#{t('layout.issues.statuses.open')} (#{@issues.where(:status => 'open').count})" + ="#{t('layout.issues.statuses.open')} (#{@project.issues.where(:status => 'open').count})" #closed-tasks.closed - ="#{t('layout.issues.statuses.closed')} (#{@issues.where(:status => 'closed').count})" + ="#{t('layout.issues.statuses.closed')} (#{@project.issues.where(:status => 'closed').count})" #blue-switch-select.selected{:style => "margin-left: #{@status == 'open' ? '0' : '130'}px;"} .both .both diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index a8d1c3e6e..fca926f2c 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -1,32 +1,20 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.issues.list"), project_issues_path(@project) - %li= link_to t("layout.issues.edit"), edit_project_issue_path(@project, @issue) if can? :edit, @issue - .content - .inner - %p - %b - = t("activerecord.attributes.issue.title") - \: - = @issue.title - %p - %b - = t("activerecord.attributes.issue.body") - \: - = @issue.body - %p - %b - = t('activerecord.attributes.issue.status') - \: - = @issue.status - %p - %b - = t('layout.issues.subscribe') - \: - - if @issue.subscribes.exists? :user_id => current_user.id - = link_to t('layout.issues.unsubscribe_btn'), project_issue_subscribe_path(@project, @issue, current_user.id), :method => :delete - - else - = link_to t('layout.issues.subscribe_btn'), project_issue_subscribes_path(@project, @issue), :method => :post +-render :partial => 'projects/submenu' +-render :partial => 'issues/create_sidebar' +-content_for :right_nopadding do + dummy +%h3=@issue.title +.activity + .top + .image + =image_tag(@issue.creator.avatar(42), :alt => 'avatar') if @issue.creator + .text + %span.name=link_to(@issue.creator.uname, user_path(@issue.creator)) if @issue.creator + %br/ + %span.date=@issue.created_at.to_s(:long) + %br/ + .both + .fulltext.view=@issue.body +.both +.hr -= render :partial => "comments/list", :locals => {:list => @issue.comments.order(:created_at), :project => @project, :commentable => @issue} +=render :partial => 'issues/status' diff --git a/config/locales/issues.en.yml b/config/locales/issues.en.yml index 37fb8e5fe..39a8dd365 100644 --- a/config/locales/issues.en.yml +++ b/config/locales/issues.en.yml @@ -27,6 +27,9 @@ en: open: Opened closed: Closed any: Any + status: + open: Открыто + closed: Closed subscribe: Subscribe subscribe_btn: Subscribe unsubscribe_btn: Unsubscribe @@ -44,6 +47,7 @@ en: search_labels: Search labels... choose_user_on_left: Choose executor on the left choose_labels_on_left: Choose labels on the left + at: at flash: issue: diff --git a/config/locales/issues.ru.yml b/config/locales/issues.ru.yml index 46c21d53c..827af86bc 100644 --- a/config/locales/issues.ru.yml +++ b/config/locales/issues.ru.yml @@ -27,6 +27,9 @@ ru: open: Открытые closed: Закрытые any: Все + status: + open: Открыто + closed: Закрыто subscribe: Подписка на уведомления subscribe_btn: Подписаться unsubscribe_btn: Отписаться @@ -44,6 +47,7 @@ ru: search_labels: Найти метки... choose_user_on_left: выберите исполнителя слева choose_labels_on_left: выберите метки слева + at: в flash: issue: diff --git a/config/routes.rb b/config/routes.rb index 22af526cc..421283a37 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -116,7 +116,7 @@ Rosa::Application.routes.draw do match 'compare/*versions' => 'wiki#compare', :as => :compare_versions, :via => :get end end - resources :issues do + resources :issues, :except => :edit do resources :comments, :only => [:edit, :create, :update, :destroy] resources :subscribes, :only => [:create, :destroy] collection do diff --git a/db/migrate/20120228094721_add_closed_at_to_issue.rb b/db/migrate/20120228094721_add_closed_at_to_issue.rb new file mode 100644 index 000000000..91948e2af --- /dev/null +++ b/db/migrate/20120228094721_add_closed_at_to_issue.rb @@ -0,0 +1,5 @@ +class AddClosedAtToIssue < ActiveRecord::Migration + def change + add_column :issues, :closed_at, :datetime + end +end diff --git a/db/migrate/20120228100121_add_closed_by_to_issue.rb b/db/migrate/20120228100121_add_closed_by_to_issue.rb new file mode 100644 index 000000000..9da79b29b --- /dev/null +++ b/db/migrate/20120228100121_add_closed_by_to_issue.rb @@ -0,0 +1,6 @@ +class AddClosedByToIssue < ActiveRecord::Migration + def change + add_column :issues, :closed_by, :integer + + end +end From 0abea8ff55e69c5ff0eddf329a7ff80d8a184ac1 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 20:28:11 +0600 Subject: [PATCH 12/87] [refs #194] fix issues count --- app/controllers/issues_controller.rb | 8 ++++++-- app/models/issue.rb | 3 +++ app/views/issues/index.html.haml | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index ecec9cba8..15af3a55d 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -15,14 +15,18 @@ class IssuesController < ApplicationController @is_assigned_to_me = params[:filter] == 'to_me' @status = params[:status] == 'closed' ? 'closed' : 'open' @labels = params[:labels] || [] - - @issues = @project.issues.where(:status => @status) + @issues = @project.issues @issues = @issues.where(:user_id => current_user.id) if @is_assigned_to_me @issues = @issues.joins(:labels).where(:labels => {:name => @labels}) unless @labels == [] if params[:search_issue] @issues = @issues.where('issues.title ILIKE ?', "%#{params[:search_issue].mb_chars.downcase}%") end + @opened_issues = @issues.opened.count + @closed_issues = @issues.closed.count + @issues = @issues.where(:status => @status) + + @issues = @issues.includes(:creator, :user).order('serial_id desc').uniq.paginate :per_page => 10, :page => params[:page] if status == 200 render 'index', :layout => request.format == '*/*' ? 'issues' : 'application' # maybe FIXME '*/*'? diff --git a/app/models/issue.rb b/app/models/issue.rb index ba24d7010..d38095d86 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -26,6 +26,9 @@ class Issue < ActiveRecord::Base attr_accessible :labelings_attributes, :title, :body, :project, :project_id, :closed_at, :closed_by accepts_nested_attributes_for :labelings, :allow_destroy => true + scope :opened, where(:status => 'open', :closed_by => nil, :closed_at => nil) + scope :closed, where(:status => 'closed').where("closed_by is not null and closed_at is not null") + def assign_uname user.uname if user end diff --git a/app/views/issues/index.html.haml b/app/views/issues/index.html.haml index c14a33bb2..b87c63c3a 100644 --- a/app/views/issues/index.html.haml +++ b/app/views/issues/index.html.haml @@ -4,9 +4,9 @@ #closed-switcher.blue-switcher =hidden_field_tag :issues_status, @status, :id => 'issues_status' .open - ="#{t('layout.issues.statuses.open')} (#{@project.issues.where(:status => 'open').count})" + ="#{t('layout.issues.statuses.open')} (#{@opened_issues})" #closed-tasks.closed - ="#{t('layout.issues.statuses.closed')} (#{@project.issues.where(:status => 'closed').count})" + ="#{t('layout.issues.statuses.closed')} (#{@closed_issues})" #blue-switch-select.selected{:style => "margin-left: #{@status == 'open' ? '0' : '130'}px;"} .both .both From 5abdbd4486c7a4291c58012390a6484fb2f924da Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 20:37:30 +0600 Subject: [PATCH 13/87] [refs #194] return main.scss --- app/assets/stylesheets/main.scss | 3048 +++++++++++++++--------------- 1 file changed, 1537 insertions(+), 1511 deletions(-) diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index 9ace09ccb..546de2797 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -1,1682 +1,1708 @@ html, body { - margin: 0; - padding: 0; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - color: #565657; - background: #1f60a1 image-url("bg.png") repeat-x; - min-width: 940px; - min-height: 600px; - text-align: center; - height: 100%; } + margin: 0; + padding: 0; + font-family: Tahoma, Arial; + color: #565657; + background: #1f60a1 image-url("bg.png") repeat-x; + min-width: 940px; + min-height: 600px; + text-align: center; + height: 100%; +} header, section, footer, aside, nav, article, menu { - display: block; } + display: block; +} -input { - &[type="text"]:focus, &[type="password"]:focus, &:focus { - outline: none; } } - -select:focus { - outline: none; } - -a img { - border: none; } +input[type="text"]:focus { outline: none; } + +input[type="password"]:focus { outline: none; } + +input:focus { outline: none; } + +select:focus { outline: none; } +a img { border: none; } + .wrap { - width: 940px; - margin: 0 auto; - text-align: center; - border: 1px solid #3f668c; - -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - background: #FFF; - min-height: 92%; - &.columns { - background: white image-url("page-bg.png") repeat-y; } } + width: 940px; + margin: 0 auto; + text-align: center; + border: 1px solid #3f668c; + -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + background: #FFF; + min-height: 92%; +} + +.wrap.columns { + background: #FFF image-url("page-bg.png") repeat-y; +} .both { - clear: both; } + clear: both; +} /* Top menu */ header { - -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - position: relative; - z-index: 1000; - div { - &.left { - background: image-url("top-left.png"); - height: 46px; - width: 14px; - float: left; } - &.middle { - background: image-url("top-middle.png"); - float: left; - height: 46px; - width: 912px; } - &.right { - background: image-url("top-right.png"); - height: 46px; - width: 14px; - float: right; } } - menu { - float: left; - margin: 0; - padding: 0; - ul { - list-style: none; - margin: 0; - padding: 10px 0px 0px 0px; - li { - display: inline; - a { - font-size: 12px; - color: #FFF; - text-decoration: none; - height: 43px; - padding: 15px 15px 15px 15px; - &:hover { - color: #cee7ff; } - &.first { - padding-left: 45px; } - &.active { - background: image-url("menu-hover.png") repeat-x; } } } } } - div { - &.logo { - float: left; - margin-top: -25px; - padding-left: 10px; - position: absolute; } - &.information { - float: right; } - &.search { - float: left; - margin: 10px 0px 0px 0px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; - background: #FFF; - border: 1px solid #7691aa; - div { - &.pic { - background: image-url("search-button.png"); - height: 22px; - width: 24px; - float: left; } - &.field { - float: left; - margin: -1px 0px 0px 0px; - input { - border: none; - height: 18px; - background: none; - width: 132px; - font-size: 12px; - font-family: Arial; - padding: 2px 0px 0px 0px; - &.gray { - color: #cfcfcf; } - &.black { - color: #333333; } } } } } - &.avatar { - float: left; - padding: 6px 10px 10px 10px; } - &.information div { - &.active { - background: image-url("menu-hover.png") repeat-x; } - &.user { - float: left; - margin-left: 14px; } } - &.profile { - float: left; - text-align: right; - color: #FFF; - font-size: 12px; - padding-top: 12px; - a { - color: #FFF; - text-decoration: none; - padding-right: 10px; - &:hover { - text-decoration: underline; } } } - &.droplist-wrap { - margin: -4px 0px 0px 0px; } - &.droplist { - background: image-url("bg-droplist.png") repeat-x; - height: 91px; - width: 151px; - -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin-top: 0px; - margin-left: 138px; - border-radius: 0px 0px 4px 4px; - display: none; - text-align: right; - z-index: 9999; } - &.droplist-wrap div.a { - margin-top: 5px; } - &.droplist a { - position: relative; - padding-left: 15px; - font-size: 12px; - color: #7eb7ed; - text-decoration: none; - padding-right: 15px; - margin-top: 10px; - &:hover { - text-decoration: underline; } } } } + -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + position: relative; + z-index: 1000; +} + +header div.left { + background: image-url("top-left.png"); + height: 46px; + width: 14px; + float: left; +} + +header div.middle { + background: image-url("top-middle.png"); + float: left; + height: 46px; + width: 912px; +} + +header div.right { + background: image-url("top-right.png"); + height: 46px; + width: 14px; + float: right; +} /* Left part of top menu*/ +header menu { + float: left; + margin: 0; + padding: 0; +} + +header menu ul { + list-style: none; + margin: 0; + padding: 10px 0px 0px 0px; +} + +header menu ul li { + display: inline; +} + +header menu ul li a { + font-size: 12px; + color: #FFF; + text-decoration: none; + height: 43px; + padding: 15px 15px 15px 15px; +} + +header menu ul li a:hover { + color: #cee7ff; +} + +header menu ul li a.first { + padding-left: 45px; +} + +header menu ul li a.active { + background: image-url("menu-hover.png") repeat-x; +} + +header div.logo { + float: left; + margin-top: -25px; + padding-left: 10px; + position: absolute; +} + /* Right part of top menu */ +header div.information { + float: right; +} + +header div.search { + float: left; + margin: 10px 0px 0px 0px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background: #FFF; + border: 1px solid #7691aa; +} + +header div.search div.pic { + background: image-url("search-button.png"); + height: 22px; + width: 24px; + float: left; +} + +header div.search div.field { + float: left; + margin: -1px 0px 0px 0px; +} + +header div.search div.field input { + border: none; + height: 18px; + background: none; + width: 132px; + font-size: 12px; + font-family: Arial; + padding: 2px 0px 0px 0px; +} + +header div.search div.field input.gray { + color: #cfcfcf; +} + +header div.search div.field input.black { + color: #333333; +} + +header div.avatar { + float:left; + padding-top: 6px; + padding-right: 10px; + padding-bottom: 10px; + padding: 6px 10px 10px 24px; +} + +header div.profile { + float: left; + text-align: right; + color: #FFF; + font-size: 12px; + padding-top: 12px; +} + +header div.profile a { + color: #FFF; + text-decoration: none; +} + +header div.profile a:hover { + text-decoration: underline; +} + + +header div.droplist-wrap { + margin: -4px 0px 0px 0px; +} + +header div.droplist { + background: image-url("bg-droplist.png") repeat-x; + height: 91px; + width: 151px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin-top: 0px; + margin-left: 138px; + border-radius: 0px 0px 4px 4px; + display: none; + text-align: right; + z-index: 9999; +} + +header div.droplist-wrap div.a { + margin-top: 5px; +} + +header div.droplist a{ + position: relative; + padding-left: 15px; + font-size: 12px; + color: #7eb7ed; + text-decoration: none; + padding-right: 15px; + margin-top: 10px; +} + +header div.droplist a:hover{ + text-decoration: underline; +} + + /* Submenu */ .sub-menu { - height: 38px; - margin: -7px 0px 0px 0px; - padding: 0px 0px 0px 15px; - background: #ededed; - position: relative; - z-index: 100; - border-bottom: 1px solid #FFF; - -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - div { - &.left { - float: left; - width: 200px; - border-right: 1px solid #dcdcdc; - font-size: 12px; - text-align: left; - font-weight: 700; - padding: 10px 0px 0px 0px; - height: 21px; } - &.right { - float: left; } } - nav { - /*Äëÿ ïîäìåíþ áåç íàçâàíèÿ*/ - float: left; - margin: 0px 0px 0px 0px; - ul { - list-style: none; - text-align: left; - padding: 0; - margin: 0; - padding-top: 5px; - li { - display: inline; - a { - font-size: 12px; - color: #575756; - text-decoration: none; - height: 34px; - padding: 0px 20px 6px 20px; - &.active { - background: image-url("submenu-hover.png") repeat-x; } - &:hover { - color: #2b6daf; } } } } } } + height: 38px; + margin: -7px 0px 0px 0px; + padding: 0px 0px 0px 15px; + background: #ededed; + position: relative; + z-index: 100; + border-bottom: 1px solid #FFF; + -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); +} + +.sub-menu div.left { + float: left; + width: 200px; + border-right: 1px solid #dcdcdc; + font-size: 12px; + text-align: left; + font-weight: 700; + padding: 10px 0px 0px 0px; + height: 21px; +} + +.sub-menu div.right { + float: left; +} + + +.sub-menu nav { /*Äëÿ ïîäìåíþ áåç íàçâàíèÿ*/ + float: left; + margin: 0px 0px 0px 0px; +} + +.sub-menu nav ul { + list-style: none; + text-align: left; + padding: 0; + margin: 0; + padding-top: 5px; +} + +.sub-menu nav ul li { + display: inline; +} + +.sub-menu nav ul li a { + font-size: 12px; + color: #575756; + text-decoration: none; + height: 34px; + padding: 0px 20px 6px 20px; +} + +.sub-menu nav ul li a.active { + background: image-url("submenu-hover.png") repeat-x; +} + +.sub-menu nav ul li a:hover { + color: #2b6daf; +} /* Page markup */ article { - font-size: 12px; } + font-size: 12px; +} aside { - float: left; - width: 215px; } + float: left; + width: 215px; +} -article div { - &.right { - float: right; - width: 645px; - padding: 20px 40px 40px 40px; - text-align: left; - &.bigpadding { - width: 445px; - padding: 20px 140px 40px 140px; } - &.middlepadding { - width: 510px; - padding: 20px 120px 40px 50px; - div.rightlist { - width: 300px; - input, textarea { - width: 300px; } } } } - &.all { - width: 855px; - padding: 20px 40px 20px 40px; - text-align: left; - &.bigpadding { - width: 605px; - padding: 0px 40px 20px 200px; - text-align: left; } - &.verybigpadding { - width: 545px; - padding: 0px 40px 20px 200px; - text-align: left; - div.left { - float: left; - img { - padding-right: 40px; - margin-top: 20px; } - h3, h4, p { - width: 420px; } - .tmargin5 { - padding-top: 5px; - position: relative; } } } } } +article div.right { + float: right; + width: 645px; + padding: 20px 40px 40px 40px; + text-align: left; +} + +article div.right.bigpadding { + width: 445px; + padding: 20px 140px 40px 140px; +} + +article div.all { + width: 855px; + padding: 20px 40px 20px 40px; + text-align: left; +} + +article div.all.bigpadding { + width: 605px; + padding: 0px 40px 20px 200px; + text-align: left; +} /* Left part of page markup */ -aside div { - &.bordered { - border-bottom: 1px solid #dee5eb; - text-align: left; - padding: 20px 0px 30px 15px; } - &.block { - text-align: left; - padding: 10px 0px 30px 15px; } } +aside div.bordered { + border-bottom: 1px solid #dee5eb; + text-align: left; + padding: 20px 0px 30px 15px; +} + +aside div.block { + text-align: left; + padding: 10px 0px 30px 15px; +} /* Common page parts markups */ -article { - h4 { - font-size: 12px; - margin-bottom: 0px; - padding-bottom: 2px; } - p { - margin: 0; - padding: 0; } } +article a.button { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; +} -div { - &.expand-gray-down, &.expand-gray-up { - height: 10px; - width: 12px; - float: left; - margin: 3px 0px 0px 3px; - cursor: pointer; } - &.expand-gray-down { - background: image-url("expand-gray.png") no-repeat; } - &.expand-gray-up { - background: image-url("expand-gray2.png") no-repeat; } } +article a.button:hover{ + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; +} -article { - a { - &.button { - display: inline-block; - white-space: nowrap; - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); - border: 1px solid #5084b4; - padding: 4px 20px; - margin: 0; - font-size: 12px; - text-decoration: none; - color: #FFF; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align: center; - &:hover { - background-color: #34719d; - background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); - background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); - background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); - background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); - background-image: -o-linear-gradient(top, #7fb3e1, #34719d); - background-image: linear-gradient(top, #7fb3e1, #34719d); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); - text-decoration: none; } - &:active { - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); } } - &.disabled { - background-color: #888888; - background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); - background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); - background-image: -moz-linear-gradient(top, #aaaaaa, #888888); - background-image: -ms-linear-gradient(top, #aaaaaa, #888888); - background-image: -o-linear-gradient(top, #aaaaaa, #888888); - background-image: linear-gradient(top, #aaaaaa, #888888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); - cursor: default; - color: #d8d8d8; - border: 1px solid #aaaaaa; - cursor: default; - text-align: center; } } - input { - &[type="file"] {} - &[type="submit"] { - display: inline-block; - white-space: nowrap; - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); - border: 1px solid #5084b4; - padding: 4px 20px; - margin: 0; - font-size: 12px; - text-decoration: none; - color: #FFF; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align: center; - height: auto; - width: auto; - &:hover { - background-color: #34719d; - background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); - background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); - background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); - background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); - background-image: -o-linear-gradient(top, #7fb3e1, #34719d); - background-image: linear-gradient(top, #7fb3e1, #34719d); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); - text-decoration: none; - cursor: pointer; } - &:active { - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); } - &:disabled { - background-color: #888888; - background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); - background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); - background-image: -moz-linear-gradient(top, #aaaaaa, #888888); - background-image: -ms-linear-gradient(top, #aaaaaa, #888888); - background-image: -o-linear-gradient(top, #aaaaaa, #888888); - background-image: linear-gradient(top, #aaaaaa, #888888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); - cursor: default; - color: #d8d8d8; - border: 1px solid #aaaaaa; - cursor: default; - text-align: center; } } } - h3 { - font-size: 14px; - color: #575756; - margin-bottom: 0; - padding-bottom: 2px; - &.fix { - margin-top: 0px; - padding-top: 0px; } } - a { - color: #7eb7ed; - font-size: 12px; - text-decoration: none; - padding: 0px 0px; - &:hover { - text-decoration: underline; } } - div { - &.right div.hr { - border-bottom: 1px solid #dedede; - width: 100%; - padding-top: 30px; - margin-bottom: 30px; - &.bottom { - margin-bottom: 10px; - padding-top: 20px; } - &.top { - padding-top: 7px; - margin-bottom: 20px; } } - &.leftside { - float: left; } - &.rightside { - float: right; } - &.all.bigpadding div.rightside { - margin-right: 40px; } } } + + +article a.button:active{ + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); +} + +article a.disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; +} + +article h3{ + font-size: 14px; + color: #575756; + margin-bottom: 0; + padding-bottom: 2px; +} + +article h3.fix { + margin-top: 0px; + padding-top: 0px; +} + +article a{ + color: #7eb7ed; + font-size: 12px; + text-decoration: none; + padding: 0px 0px; +} + +article a:hover{ + text-decoration: underline; +} /* Right part of page markup */ +article div.right div.hr { + border-bottom: 1px solid #dedede; + width: 100%; + padding-top: 30px; + margin-bottom: 30px; +} + +article div.right div.hr.bottom { + margin-bottom: 10px; + padding-top: 20px; +} + +article div.right div.hr.top { + padding-top: 7px; + margin-bottom: 20px; +} + +article div.right div.leftside { + float: left; +} + +article div.right div.rightside { + float: right; +} + .lefter { - float: left; - margin-right: 5px; - span.gap { - padding-right: 59px; } - &.top { - margin-top: -6px; } } + float: left; + margin-right: 5px; +} + +.lefter span.gap { + padding-right: 59px; +} + +.lefter.top { + margin-top: -6px; +} .w25 { - width: 25px; } + width: 25px; +} .w420 { - width: 420px; - padding-bottom: 20px; } + width: 420px; + padding-bottom: 20px; +} .padd25 { - padding-left: 25px; } + padding-left: 25px; +} .width70 { - width: 70px; } + width: 70px; +} + /* Footer */ footer { - height: 32px; - padding-left: 15px; - width: 900px; - margin: 0 auto; - text-align: center; - ul { - margin: 0; - padding: 0; - list-style: none; - font-size: 12px; - color: #FFF; - padding-top: 10px; - text-align: left; - li { - display: inline; - a { - font-size: 12px; - color: #FFF; - text-decoration: none; - &:hover { - text-decoration: underline; } } } } } + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; +} + +footer ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: left; +} + +footer ul li { + display: inline; +} + +footer ul li a { + font-size: 12px; + color: #FFF; + text-decoration: none; +} + +footer ul li a:hover { + text-decoration: underline; +} /* Main page */ -aside div { - &.bordered table { - padding: 0; - margin: 0; - padding-bottom: 0px; - margin-left: -10px; - td { - font-size: 12px; - padding: 1px 0px 0px 0px; } } - &.block table td { - text-align: right; - padding: 2px 3px 1px 3px; - &.first { - width: 150px; - text-align: left; } } } +aside div.bordered table{ + padding: 0; + margin: 0; + padding-bottom: 0px; + margin-left: -10px; +} -article div { - &.right div.messages { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 100%; - color: #477cae; - text-align: center; - font-size: 12px; - padding: 4px 0px 4px 0px; - cursor: pointer; - margin: 15px 0px 15px 0px; - &:hover { - background: #dceffa; } - p { - margin: 0; - padding: 0; } } - &.activity { - border: 1px solid #d6d6d6; - /*width: 614px;*/ - border-radius: 5px; - padding: 6px; - margin-top: 15px; - color: #333; - div.top div { - &.image { - float: left; } - &.text { - float: left; - padding-left: 10px; - font-size: 12px; - span { - &.name { - font-weight: 700; } - &.date { - font-size: 11px; } } } } } - &.text span.subject { - float: left; } - &.activity div { - &.top div.text span.subject img { - cursor: pointer; } - &.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; - &.view { - display: block; } } } } +aside div.bordered table td{ + font-size: 12px; + padding: 1px 0px 0px 0px; +} + +aside div.block table td { + text-align: right; + padding: 2px 3px 1px 3px; +} + + +aside div.block table td.first{ + width: 150px; + text-align: left; +} + +article div.right div.messages { + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 100%; + color: #477cae; + text-align: center; + font-size: 12px; + padding: 4px 0px 4px 0px; + cursor: pointer; + margin: 15px 0px 15px 0px; +} + +article div.right div.messages:hover { + background: #dceffa; +} + +article div.right div.messages p{ + margin: 0; + padding: 0; +} + +article div.right div.activity { + border: 1px solid #d6d6d6; + /*width: 614px;*/ + border-radius: 5px; + padding: 6px; + margin-top: 15px; + color: #333; +} + +article div.right div.activity div.top div.image { + float: left; +} + +article div.right div.activity div.top div.text { + float: left; + padding-left: 10px; + font-size: 12px; +} + +article div.right div.activity div.top div.text span.name { + font-weight: 700; +} + +article div.right div.activity div.top div.text span.date { + font-size: 11px; +} + +article div.right div.activity div.top div.text span.subject img { + cursor: pointer; +} + +article div.right div.activity div.fulltext { + font-size: 12px; + padding-top: 10px; + display: none; +} + +article div.right div.activity div.fulltext.view { + display: block; +} /* Admin page */ .admin-preferences ul { - list-style: none; - margin: 0; - padding: 0; - margin-top: 20px; - width: 215px; - text-align: left; - li { - padding-top: 5px; - padding-bottom: 5px; - width: 215px; - &.active, &:hover { - background: #dcecfa; } - a { - color: #575756; - text-decoration: none; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 15px; } } } + list-style: none; + margin: 0; + padding: 0; + margin-top: 20px; + width: 215px; + text-align: left; +} + +.admin-preferences ul li{ + padding-top: 5px; + padding-bottom: 5px; + width: 215px; +} + +.admin-preferences ul li.active, .admin-preferences ul li:hover { + background: #dcecfa; +} + +.admin-preferences ul li a{ + color: #575756; + text-decoration: none; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 15px; +} .right div.leftlist, .all div.leftlist { - float: left; - width: 200px; - margin: 0px 0px 10px 0px; } + float: left; + width: 200px; + margin: 0px 0px 10px 0px; +} .right div.rightlist, .all div.rightlist { - float: left; - width: 400px; - font-size: 12px; - color: #575756; - margin: 0px 0px 10px 0px; } + float: left; + width: 400px; + font-size: 12px; + color: #575756; + margin: 0px 0px 10px 0px; +} -.right div.rightlist div { - &.check { - float: left; } - &.forcheck { - float: left; - margin: 1px 0px 0px 5px; } } +.right div.rightlist div.check { + float: left; +} -div.rightlist { - textarea { - height: 110px; - width: 350px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; } - input { - &[type="text"], &[type="password"] { - height: 15px; - width: 350px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; } } } +.right div.rightlist div.forcheck { + float: left; + margin: 1px 0px 0px 5px; +} +div.rightlist textarea { + height: 110px; + width: 340px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Arial; + font-size: 12px; +} + +div.rightlist input[type="text"] { + height: 15px; + width: 340px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Arial; + font-size: 12px; +} /* Admin-members page */ -.right { - table { - div { - &.img { - float: left; } - &.radio { - float: left; - margin: 5px 0px 0px 0px; } - &.forimg, &.forradio { - float: left; - margin: 5px 0px 0px 5px; } } - span.niceCheck-main { - margin-top: 3px; } } - div { - &.admin-search, &.admin-role { - float: left; } - &.admin-search input { - width: 300px; - margin-right: 5px; - height: 23px; - border: 1px solid #dedede; - border-radius: 3px; - margin-top: 1px; - font-size: 12px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - padding-left: 5px; } } } +.right table div.img { + float: left; +} -article input { - &.gray { - color: #cfcfcf; } - &.black { - color: #333333; } } +.right table div.radio { + float: left; + margin: 5px 0px 0px 0px; +} + +.right table div.forimg { + float: left; + margin: 5px 0px 0px 5px; +} + +.right table div.forradio { + float: left; + margin: 5px 0px 0px 5px; +} + +.right table span.niceCheck-main { + margin-top: 3px; +} + +.right div.admin-search { + float: left; +} + +.right div.admin-role { + float: left; +} + +.right div.admin-search input { + width: 300px; + margin-right: 5px; + height: 23px; + border: 1px solid #dedede; + border-radius: 3px; + margin-top: 1px; + font-size: 12px; + font-family: Tahoma, Arial; + padding-left: 5px; +} + +.right div.admin-search input.gray { + color: #cfcfcf; +} + +.right div.admin-search input.black { + color: #333333; +} .right div.admin-add { - float: left; - padding-top: 1px; - margin-left: 5px; - a { - width: 86px; - text-align: center; - padding-bottom: 5px; } } + float: left; + padding-top: 1px; + margin-left: 5px; +} + +.right div.admin-add a { + width: 86px; + text-align: center; + padding-bottom: 5px; +} /* Input elements */ .niceRadio { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: image-url("radio.png"); - overflow: hidden; } - + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("radio.png"); + overflow: hidden; +} .radioChecked { - background-position: 0 -17px; } - + background-position: 0 -17px; +} .niceRadio input { - margin-left: -18px; } + margin-left: -18px; +} .sel80 { - width: 200px; - padding-bottom: 4px; - text-align: left; - &.aside { - width: 185px; } } - -.lineForm, .lineForm3 { - margin-bottom: 0px; } + width: 200px; + padding-bottom: 4px; + text-align: left; +} +.lineForm, +.lineForm3 { + margin-bottom: 0px; +} .niceCheck { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: image-url("checkbox.png"); - input { - display: none; } } + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox.png"); +} +.niceCheck input { + display: none; +} .niceCheck-main { - width: 18px; - height: 18px; - display: inline-block; - cursor: pointer; - background: image-url("checkbox-main.png"); - input { - display: none; } } + width: 18px; + height: 18px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox-main.png"); +} +.niceCheck-main input { + display: none; +} /* Admin build project */ -section { - &.left { - float: left; - text-align: left; - width: 230px; - margin-left: 250px; } - &.right { - float: right; - text-align: left; - width: 200px; - margin-right: 250px; } - .left { - float: left; - margin-right: 4px; } } +section.left { + float: left; + text-align: left; + width: 230px; + margin-left: 250px; +} + +section.right { + float: right; + text-align: left; + width: 200px; + margin-right: 250px; +} + +section .left { + float: left; + margin-right: 4px; +} /* Commits history */ -article .date-block { - width: 100%; - margin-top: 17px; - div { - &.date { - float: left; - background: #bedbf6; - color: #477cae; - border: 1px solid #98bede; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 0px 0px 4px; - border-radius: 4px 0px 0px 4px; - width: 65px; - height: 55px; - padding: 10px; - padding-top: 20px; - -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - font-size: 14px; - text-align: center; } - &.messages { - float: left; - border: 1px solid #cfdde7; - -moz-border-radius-topleft: 0px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 0px 4px 4px 4px; - border-radius: 0px 4px 4px 4px; - padding: 10px; - padding-bottom: 0px; - width: 746px; } - &.message { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; - div { - &.body { - float: left; - text-align: left; } - &.code { - float: right; - margin: -7px 0px 0px 640px; - position: absolute; } } } - &.code div { - &.top { - width: 90px; - height: 22px; - border: 1px solid #9dbcd5; - background: #cbdeef; } - &.bottom { - width: 90px; - text-align: right; } - &.left { - float: left; - width: 13px; - height: 13px; - padding-left: 2px; - padding-top: 4px; } - &.right { - float: right; - border: 1px solid #bcd5ea; - background: #FFF; - font-size: 12px; - width: 65px; - height: 14px; - margin: 2px; - padding: 0px 2px 2px 0px; - text-align: center; } } - &.image { - float: left; } } } +article .fright { + float: right; +} -.last-commit div.image { - float: left; } +article .fright p{ + margin: 0; + padding: 5px 5px 0px 0px; +} + +article .date-block { + width: 100%; + margin-top: 17px; +} + +article .date-block div.date { + float: left; + background: #bedbf6; + color: #477cae; + border: 1px solid #98bede; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-radius: 4px 0px 0px 4px; + width: 65px; + height: 55px; + padding: 10px; + padding-top: 20px; + -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + font-size: 14px; + text-align: center; +} + +article .date-block div.messages { + float: left; + border: 1px solid #cfdde7; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 0px 4px 4px 4px; + border-radius: 0px 4px 4px 4px; + padding: 10px; + padding-bottom: 0px; + width: 746px; +} + +article .date-block div.message { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; +} + +article .date-block div.message div.body { + float: left; + text-align: left; +} + +article .date-block div.message div.code { + float: right; + margin: -7px 0px 0px 640px; + position: absolute; +} + +article .date-block div.code div.top { + width: 90px; + height: 22px; + border: 1px solid #9dbcd5; + background: #cbdeef; +} + +article .date-block div.code div.bottom { + width: 90px; + text-align: right; +} + +article .date-block div.code div.left { + float: left; + width: 13px; + height: 13px; + padding-left: 2px; + padding-top: 4px; +} + +article .date-block div.code div.right { + float: right; + border: 1px solid #bcd5ea; + background: #FFF; + font-size: 12px; + width: 65px; + height: 14px; + margin: 2px; + padding: 0px 2px 2px 0px; + text-align: center; +} + +article .date-block div.image, .last-commit div.image { + float: left; +} article .date-block div.text, .last-commit div.text { - float: left; - padding-left: 10px; - font-size: 12px; } + float: left; + padding-left: 10px; + font-size: 12px; +} article .date-block div.text span.name, .last-commit span.name { - font-weight: 700; } + font-weight: 700; +} article .date-block div.text span.date, .last-commit span.date { - font-size: 11px; } + font-size: 11px; +} article .date-block div.text span.subject img, .last-commit span.subject img { - cursor: pointer; } + cursor: pointer; +} article .date-block div.fulltext, .last-commit div.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; - /*width: 640px;*/ } + font-size: 12px; + padding-top: 10px; + display: none; + /*width: 640px;*/ +} + article div.year { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 760px; - color: 477cae; - text-align: center; - font-size: 12px; - padding: 4px; - margin-left: 87px; - margin-top: 30px; - margin-bottom: 30px; - p { - margin: 0; - padding: 0; - color: #477CAE; } } + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 760px; + color: 477cae; + text-align: center; + font-size: 12px; + padding: 4px; + margin-left: 87px; + margin-top: 30px; + margin-bottom: 30px; +} -div.pagination.tmargin30 { - margin-top: 30px; } +article div.year p{ + margin: 0; + padding: 0; + color: #477CAE; +} /* Create issue */ .bordered.nopadding, .right.nopadding { - padding-top: 0px; } + padding-top: 0px; +} p.tmargin5 { - margin-top: 5px; } + margin-top: 5px; +} aside input { - height: 25px; - width: 170px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 0px 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - margin-bottom: 5px; - margin-top: 5px; - &.gray { - color: #cfcfcf; } - &.black { - color: #333333; } } + height: 25px; + width: 170px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 0px 5px; + font-family: Tahoma, Arial; + font-size: 12px; + margin-bottom: 5px; + margin-top: 5px; +} -div { - &.people { - width: 202px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 10px; - padding-right: 0px; - div.avatar { - float: left; - padding-left: 5px; } } - &.avatar { - float: left; - padding-left: 5px; } - &.people div.name, &.name { - padding-top: 4px; - padding-left: 3px; - float: left; } } +aside input.gray { + color: #cfcfcf; +} -aside div.select { - background: #dcecfa; } +aside input.black { + color: #333333; +} -div { - &.people:hover { - background: #dcecfa; } - &.label { - &.selected { - width: 196px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - &:hover { - background: #dcecfa; } } - width: 196px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - &:hover { - background: #dcecfa; } } - &.labeltext.selected { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; } - &.label div.flag { - height: 11px; - width: 3px; - background: #39b54a; - float: left; - margin-top: 3px; - margin-right: 3px; - border-radius: 2px; } } +div.people { + width: 202px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 10px; + padding-right: 0px; +} -.right { - span.small-text { - font-size: 11px; } - .bpadding10 { - padding-bottom: 10px; } } +div.people div.avatar, div.avatar { + float: left; + padding-left: 5px; +} + +div.people div.name, div.name { + padding-top: 4px; + padding-left: 3px; + float: left; +} + +aside div.select, div.people:hover { + background: #dcecfa; +} + +div.label.selected, div.label { + width: 196px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 15px; +} + +div.label.selected:hover, div.label:hover { + background: #dcecfa; +} + +div.labeltext.selected { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; +} + +div.label div.flag { + height: 11px; + width: 3px; + background: #39b54a; + float: left; + margin-top: 3px; + margin-right: 3px; + border-radius: 2px; +} + +.right span.small-text { + font-size: 11px; +} + +.right .bpadding10, .all .bpadding10 { + padding-bottom: 10px; +} -.all .bpadding10 { - padding-bottom: 10px; } /* Issue page */ -aside div { - &.switcher { - height: 23px; - width: 194px; - background: image-url("switch-on.png"); - color: #FFF; - font-size: 12px; - cursor: pointer; } - &.switcher-off { - height: 23px; - width: 194px; - background: image-url("switch-on.png"); - color: #FFF; - font-size: 12px; - cursor: pointer; - background: image-url("switch-off.png"); } - &.switcher div.swleft, &.switcher-off div.swleft { - float: left; - width: 96px; - text-align: center; - padding-top: 3px; } - &.switcher div.swright, &.switcher-off div.swright { - float: right; - width: 96px; - text-align: center; - padding-top: 3px; } } +aside div.switcher, aside div.switcher-off { + height: 23px; + width: 194px; + background: image-url("switch-on.png"); + color: #FFF; + font-size: 12px; + cursor: pointer; +} + +aside div.switcher-off { + background: image-url("switch-off.png"); +} + +aside div.switcher div.swleft, aside div.switcher-off div.swleft { + float: left; + width: 96px; + text-align: center; + padding-top: 3px; +} + +aside div.switcher div.swright, aside div.switcher-off div.swright { + float: right; + width: 96px; + text-align: center; + padding-top: 3px; +} p.non-view { - display: none; } + display: none; +} -div { - &.non-view { - display: none; } - &.view { - display: block; } - &.nopointer { - cursor: default; - &:hover { - background: none; } } } +div.non-view { + display: none; +} -a.button.tmargin10, input[type="submit"].tmargin10 { - margin-top: 10px; } +div.view { + display: block; +} -h3 { - &.tmargin0 { - margin-top: 0px; } - &.bmargin10 { - margin-bottom: 10px; } } +div.nopointer { + cursor: default; +} -.right div { - &.comment { - text-align: left; - border: 1px solid #b3cce0; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; - width: 631px; - background: #dcecfa; - div { - &.issue-left { - float: left; - font-size: 12px; - margin-top: 4px; } - &.issue-right { - float: right; } } - textarea { - height: 110px; - width: 618px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - color: #575756; - margin: 10px 0px; } } - &.comment-closed { - display: none; - div { - &.state { - float: left; - padding: 2px 0px 2px 0px; - background: #bd4d40; - color: #FFF; - font-size: 12px; - border: 1px solid #924f52; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px 0px 0px 2px; - border-radius: 2px 0px 0px 2px; - width: 80px; - text-align: center; } - &.text { - border: 1px solid #dce6ed; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: 2px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - float: left; - width: 561px; } - &.avatar { - float: left; - padding: 5px; } - &.name { - float: left; - font-size: 12px; - padding-top: 9px; } } } } +div.nopointer:hover { + background: none; +} -div { - &.desription-top { - background: #dcecfa; - font-size: 12px; - color: #575756; - border: 1px solid #a9c6dd; - height: 38px; - width: 100%; - margin-bottom: 20px; - div.img { - float: left; - padding-left: 10px; - margin-top: 14px; } - input.name { - float: left; - margin-top: 5px; - margin-left: 10px; - background: #FFF; - border: 1px solid #d1deeb; - height: 21px; - width: auto; - color: #575756; - font-size: 12px; - width: 215px; - padding: 2px 5px 3px; } - div.role { - float: left; - margin-top: 11px; - margin-left: 10px; - font-size: 11px; } } - &.fork { - float: right; - margin-top: 5px; - margin-right: 10px; - p { - float: right; - margin-top: 5px; - margin-right: 2px; } - &.rmargin0 { - margin-right: 0px; } } } +a.button.tmargin10 { + margin-top: 10px; +} + +h3.tmargin0 { + margin-top: 0px; +} + +h3.bmargin10 { + margin-bottom: 10px; +} + +.right div.comment { + text-align: left; + border: 1px solid #b3cce0; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; + width: 631px; + background: #dcecfa; +} + +.right div.comment div.issue-left { + float: left; + font-size: 12px; + margin-top: 4px; +} + +.right div.comment div.issue-right { + float: right; +} + +.right div.comment textarea { + height: 110px; + width: 618px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Arial; + font-size: 12px; + color: #575756; + margin: 10px 0px; +} + +.right div.comment-closed { + display: none; +} + +.right div.comment-closed div.state { + float: left; + padding: 2px 0px 2px 0px; + background: #bd4d40; + color: #FFF; + font-size: 12px; + border: 1px solid #924f52; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px 0px 0px 2px; + border-radius: 2px 0px 0px 2px; + width: 80px; + text-align: center; +} + +.right div.comment-closed div.text { + border: 1px solid #dce6ed; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 2px; + -moz-border-radius-bottomright: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + float: left; + width: 561px; +} + +.right div.comment-closed div.avatar { + float: left; + padding: 5px; +} + +.right div.comment-closed div.name { + float: left; + font-size: 12px; + padding-top: 9px; +} + +div.desription-top { + background: #dcecfa; + font-size: 12px; + color: #575756; + border: 1px solid #a9c6dd; + height: 38px; + width: 100%; + margin-bottom: 20px; +} + +div.desription-top div.img { + float: left; + padding-left: 10px; + margin-top: 14px; +} + +div.desription-top div.name { + float: left; + margin-top: 5px; + margin-left: 10px; + background: #FFF; + border: 1px solid #d1deeb; + height: 21px; + width: auto; + color: #575756; + padding-right: 5px; + padding-left: 5px; + padding-top: 5px; +} + +div.desription-top div.role { + float: left; + margin-top: 11px; + margin-left: 10px; + font-size: 11px; +} + +div.desription-top div.fork { + float: right; + margin-top: 5px; + margin-right: 10px; +} +div.desription-top div.fork p { + float: right; + margin-top: 5px; + margin-right: 2px; +} + + + +.all div.description { + text-align: left; +} + +.all div.description h3{ + color: #575756; + font-weight: 700; + font-size: 14px; + margin-bottom: 5px; + margin-top: 5px; +} + +.all div.description p{ + font-size: 12px; + padding: 0; + margin: 0; + color: #575756; +} + +.all div.last-commit { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin: 10px 0px; +} -.all div { - &.description { - text-align: left; - h3 { - color: #575756; - font-weight: 700; - font-size: 14px; - margin-bottom: 5px; - margin-top: 5px; } - p { - font-size: 12px; - padding: 0; - margin: 0; - color: #575756; } } - &.last-commit { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin: 10px 0px; } } /* Project main page */ -table.tablesorter.project { - .th1 { - width: 130px; - /*padding-left: 17px;*/ } - .th2 { - width: 110px; - /*padding-left: 17px;*/ } - .th3 { - width: 450px; } - .th4 { - /*padding-left: 17px;*/ } - div { - &.name { - float: left; - margin-top: 0px; } - &.pic { - float: left; - padding-right: 5px; } } } +table.tablesorter.project .th1 { + width: 130px; + padding-left: 17px; +} + +table.tablesorter.project .th2 { + width: 110px; + padding-left: 17px; +} + +table.tablesorter.project .th3 { + width: 450px; +} + +table.tablesorter.project .th4 { + padding-left: 17px; +} + +table.tablesorter.project div.name { + float: left; + margin-top: 0px; +} + +table.tablesorter.project div.pic { + float: left; + padding-right: 5px; +} a.files-see { - color: #565657; - text-decoration: underline; } + color: #565657; + text-decoration: underline; +} -div { - &.file { - border: 1px solid #dddddd; - margin-top: 10px; - div.top { - height: 28px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; - div { - &.l { - float: left; - margin: 6px 0px 0px 10px; } - &.r { - float: right; - margin: 6px 10px 0px 0px; } } } } - &.files div { - &.l { - float: left; - margin-bottom: 5px; } - &.r { - float: right; - display: none; } } - &.file { - margin-bottom: 10px; } } +div.file { + border: 1px solid #dddddd; + margin-top: 10px; +} -textarea.commit-message { - height: 60px; - width: 450px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - margin-top: 5px; } +div.file div.top { + height: 28px; + background: #ededed; + -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + position: relative; + z-index: 99; +} -div { - &.files div.l p { - padding: 0; - margin: 5px 0px 0px 0px; } - &.gutter-new { - float: left; - border: 0 !important; - padding: 10px 5px 10px 0px; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - background: #EDEDED; - width: 40px; - text-align: right; } } +div.file div.top div.l { + float: left; + margin: 6px 0px 0px 10px; +} -/* Code */ +div.file div.top div.r { + float: right; + margin: 6px 10px 0px 0px; +} + +div.files div.l { + float: left; + margin-bottom: 5px; +} + +div.files div.r { + float: right; + display: none; +} + +div.files div.l p{ + padding: 0; + margin: 5px 0px 0px 0px; +} /* Tracker */ -table td { - &.width18 { - width: 18px; } - &.width135 { - width: 135px; } - &.width145 { - width: 145px; } - &.width30 { - width: 30px; - &.right { - text-align: right; } } } +table td.width18 { + width: 18px; +} + +table td.width135 { + width: 135px; +} + +table td.width145 { + width: 145px; +} + +table td.width30 { + width: 30px; +} + +table td.width30.right { + text-align: right; +} div.bordered.bpadding20 { - padding-bottom: 20px; } + padding-bottom: 20px; +} -table.tracker-lables { - td { - padding: 1px; } - div.label { - width: auto; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; - &:hover { - background: none; } } } +table.tracker-lables td { + padding: 1px; +} + +table.tracker-lables div.label { + width: auto; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; +} + +table.tracker-lables div.label:hover { + background: none; +} div.blue-switcher { - height: 19px; - width: 258px; - border: 1px solid #a0a0a1; - border-radius: 3px; - background-color: #575756; - color: #FFF; - -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - float: right; - div { - &.open { - float: left; - padding: 1px 0px 2px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; } - &.selected { - background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); - background-image: -webkit-linear-gradient(top, #619dd2, #125687); - background-image: -moz-linear-gradient(top, #619dd2, #125687); - background-image: -ms-linear-gradient(top, #619dd2, #125687); - background-image: -o-linear-gradient(top, #619dd2, #125687); - background-image: linear-gradient(top, #619dd2, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); - border-radius: 2px; - height: 18px; - width: 128px; - -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin: 0px; - z-index: 2; } - &.closed { - float: right; - padding: 1px 0px 0px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; } } } + height: 19px; + width: 258px; + border: 1px solid #a0a0a1; + border-radius: 3px; + background-color: #575756; + color: #FFF; + -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + float: right; +} -table.tablesorter.tracker { - th.th1 { - width: 50px; } - td { - &.td0 { - width: 10px; - padding-right: 0px; } - &.td3 { - width: 120px; - padding-top: 10px; - div { - &.code { - height: 19px; - width: 15px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - padding: 1px 0px 0px 5px; - float: left; - margin-right: 5px; - cursor: pointer; } - &.avatar { - float: left; - margin-right: 5px; - cursor: pointer; } - &.answers { - height: 20px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - float: left; - cursor: pointer; - div { - &.pic { - float: left; - margin: 2px; } - &.count { - float: left; - margin: 0px 5px 0px 2px; } } } } } } - div.smalltext { - font-size: 11px; - color: #b0b0b1; - float: left; - margin-top: 3px; } } +div.blue-switcher div.open { + float: left; + padding: 1px 0px 2px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; +} -div { - &.label { - &.selected.tracker { - width: auto; - clear: both; - cursor: default; - margin-left: 0px; - padding: 5px; - float: right; - margin-top: -6px; - &:hover { - background: none; } } - &.edit { - width: 196px; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - &:hover { - background: none; } } } - &.labeltext { - &.edit { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - margin-bottom: 5px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; - width: 175px; - cursor: default; - div { - &.text { - float: left; } - &.delete { - float: right; - cursor: pointer; - margin-top: 1px; } } } - a { - text-decoration: none; - color: #565657; } - &.edit a { - text-decoration: none; - color: #FFF; } } } +div.blue-switcher div.selected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); + background-image: -webkit-linear-gradient(top, #619dd2, #125687); + background-image: -moz-linear-gradient(top, #619dd2, #125687); + background-image: -ms-linear-gradient(top, #619dd2, #125687); + background-image: -o-linear-gradient(top, #619dd2, #125687); + background-image: linear-gradient(top, #619dd2, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); + border-radius: 2px; + height: 18px; + width: 128px; + -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin: 0px; + z-index: 2; + +} -aside div { - &.colors { - margin: 10px 0px; - div { - &.color { - float: left; - width: 22px; - height: 22px; - margin-right: 5px; - border-radius: 4px; - -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - cursor: pointer; } - &.choose { - height: 14px; - width: 14px; - padding: 4px; - &.selected, &:hover { - background: image-url("choose.png") no-repeat 50% 50%; - height: 14px; - width: 14px; - padding: 4px; } } } } - &.lefter { - float: left; } - &.righter { - float: right; - margin-right: 15px; } } +div.blue-switcher div.closed { + float: right; + padding: 1px 0px 0px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; +} + +table.tablesorter.tracker th.th1{ + width: 50px; +} + +table.tablesorter.tracker td.td0{ + width: 10px; + padding-right: 0px; +} + +table.tablesorter.tracker td.td3{ + width: 120px; + padding-top: 10px; +} + +table.tablesorter.tracker td.td3 div.code { + height: 19px; + width: 15px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + padding: 1px 0px 0px 5px; + float: left; + margin-right: 5px; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.avatar { + float: left; + margin-right: 5px; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.answers { + height: 20px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + float: left; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.answers div.pic { + float: left; + margin: 2px; +} + +table.tablesorter.tracker td.td3 div.answers div.count { + float: left; + margin: 0px 5px 0px 2px; +} + +table.tablesorter.tracker div.smalltext { + font-size: 11px; + color: #b0b0b1; + float: left; + margin-top: 3px; +} + + +div.label.selected.tracker { + width: auto; + clear: both; + cursor: default; + margin-left: 0px; + padding: 5px; + float: right; + margin-top: -6px; +} + +div.label.selected.tracker:hover { + background: none; +} + + +div.label.edit { + width: 196px; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; +} + +div.label.edit:hover{ + background: none; +} + +div.labeltext.edit { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + margin-bottom: 5px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; + width: 175px; + cursor: default; +} + +div.labeltext.edit div.text { + float: left; +} + +div.labeltext.edit div.delete { + float: right; + cursor: pointer; + margin-top: 1px; +} + +aside div.colors { + margin: 10px 0px; +} + +aside div.colors div.color { + float: left; + width: 22px; + height: 22px; + margin-right: 5px; + border-radius: 4px; + -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + cursor: pointer; +} + +aside div.colors div.choose { + height: 14px; + width: 14px; + padding: 4px; +} + +aside div.colors div.choose.selected, aside div.colors div.choose:hover { + background: image-url("choose.png") no-repeat 50% 50%; + height: 14px; + width: 14px; + padding: 4px; +} + +aside div.lefter { + float: left; +} + +aside div.righter { + float: right; + margin-right: 15px; +} tr.label-active { - background: #DDD; - border-radius: 3px; } + background: #DDD; + border-radius: 3px; +} /* Wiki */ span.wiki-gray { - color: #b0b0b1; } + color: #b0b0b1; +} .right table.wiki { - border: 1px solid #e2e2e2; - border-bottom: none; - margin-top: 10px; - td { - border-bottom: 1px solid #e2e2e2; - padding: 8px; } - tr.history td { - &.td1 { - width: 5px; } - &.td2 { - width: 180px; } } } + border: 1px solid #e2e2e2; + border-bottom: none; + margin-top: 10px; +} + +.right table.wiki td { + border-bottom: 1px solid #e2e2e2; + padding: 8px; +} + +.right table.wiki tr.history td.td1{ + width: 5px; +} + +.right table.wiki tr.history td.td2{ + width: 180px; +} a.button.rigth { - float: right; } + float: right; +} div.r { - float: right; - margin-left: 10px; } + float: right; + margin-left: 10px; +} h3.wiki { - color: #477cae; - font-size: 16px; } + color: #477cae; + font-size: 16px; +} a.button.width100 { - width: 100px; } + width: 100px; +} -.div-tracker-labels { - margin: 2px 13px 2px 0px; - cursor: pointer; - border-radius: 4px; } +.div-tracker-lables { + margin: 2px 13px 2px 0px; + cursor: pointer; + border-radius: 4px; +} .div-label-left { - float: left; - width: 150px; } + float: left; + width: 150px; +} .div-label-right { - float: right; - width: 30px; - text-align: right; - padding-top: 4px; - padding-right: 3px; } + float: right; + width: 30px; + text-align: right; + padding-top: 4px; + padding-right: 3px; +} div.div-label-left div.label { - width: auto; - clear: both; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; - &:hover { - background: none; } } + width: auto; + clear: both; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; +} -/* Monitoring */ - -aside div.table { - margin-top: 5px; } - -h3.small { - font-size: 12px; - margin: 0px; - padding: 3px 0px; } - -table.tablesorter th.lpadding16 { - padding-left: 16px; } - -div.right.slim { - padding: 5px 14px 40px; - width: 695px; } - -img.delete-row { - cursor: pointer; } - -/* Create group */ - -div { - &.right-error { - float: left; - width: 369px; - height: 59px; - background: image-url("error-groups.png"); - margin: 0px 0px 5px -3px; - text-align: center; - p { - margin: 0; - padding: 27px 0px 0px 0px; } } - &.rightlist.nomargin { - margin: 0; } } - -article div { - &.rightlist input.error { - border: 1px solid #bd4d40; - -webkit-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); - -moz-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); - box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); } - &.groups-profile { - float: left; - a { - margin: 0px 0px 0px 5px; } - img { - margin: 2px 0px 0px 0px; } } } - -/* Group pages */ - -table.tablesorter { - &.group-list th.th2 { - width: 540px; } - &.create-platform th.th1 { - /*padding-left: 17px;*/ - width: 120px; } } - -/* Platform */ - -div.right div.left { - float: left; - margin-right: 5px; } - -table.tablesorter { - &.platform-products { - th.th1 { - /*padding-left: 17px;*/ - width: 560px; } - td.td2 { - text-align: center; } } - &.platform-repos { - th { - &.th1 { - /*padding-left: 17px;*/ - width: 480px; } - &.th2 { - /*padding-left: 17px;*/ - width: 80px; } } - td.td3 { - text-align: center; } } } - -div.new-owner div { - &.field { - float: left; - margin-right: 10px; - input { - width: 230px; } } - &.search { - float: left; } } - -.tpadding10 { - padding-top: 10px; } - -article div.all div.hr { - border-bottom: 1px solid #dedede; - width: 565px; - padding-top: 30px; - margin-bottom: 30px; } - -table.tablesorter.platform-product-main th { - &.th1 { - /*padding-left: 17px;*/ - width: 60px; } - &.th2 { - /*padding-left: 17px;*/ - width: 400px; } - &.th3 { - padding-left: 0px; } - &.th4 { - /*padding-left: 17px;*/ - width: 150px; } } - -div.right.rpadding0 { - padding-right: 0px; } - -article div.loadFile div { - &.btn { - float: left; } - &.name { - float: left; - margin-left: 20px; - padding-top: 4px; } } - -/* Profile */ - -.bpadding10 { - padding-bottom: 10px; } - -article div.rightlist div.load { - float: left; - margin-left: 40px; } - -.notify { - border: 1px solid #c86b60; - background: #f4e1df; - border-radius: 4px; - width: 100%; - margin-top: 20px; - p { - padding: 5px 10px; } } - -/* Pagination */ - -div.pagination { - em { - font-style: normal; - border: 1px solid #dddddd; - border-radius: 1px; - background: #ededed; - padding: 3px 7px; } - span, a { - border: 1px solid #dddddd; - border-radius: 1px; - background: #ededed; - padding: 3px 7px; } - em.current { - background: #d5e7f9; - border: 1px solid #c1daed; } - a { - color: #4c90d0; } } - -/*404*/ - -article div.all.error404 { - background: image-url("404.png") no-repeat 59% 0; - height: 500px; - text-align: center; - h1 { - margin: 0; - padding: 0; - margin-top: 165px; - font-size: 48px; - font-weight: normal; - span { - color: #4496d0; } } - h2 { - margin: 0; - padding: 0; - margin-top: 5px; - font-size: 18px; - font-weight: normal; } - p { - margin: 0 auto; - padding: 0; - text-align: center; - font-size: 14px; - &.pages { - margin-top: 72px; - width: 280px; } - &.search { - margin-top: 80px; - width: 230px; } } } \ No newline at end of file +div.div-label-left div.label:hover { + background: none; +} From f9c834cf4db2188e2b1d03edfbabb1c16b30f424 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 20:56:43 +0600 Subject: [PATCH 14/87] Revert "[refs #194] return main.scss" This reverts commit 0b8461a5df9f3d9bbca6e3b377164ff4aa4ac4e6. --- app/assets/stylesheets/main.scss | 3046 +++++++++++++++--------------- 1 file changed, 1510 insertions(+), 1536 deletions(-) diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index 546de2797..9ace09ccb 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -1,1708 +1,1682 @@ html, body { - margin: 0; - padding: 0; - font-family: Tahoma, Arial; - color: #565657; - background: #1f60a1 image-url("bg.png") repeat-x; - min-width: 940px; - min-height: 600px; - text-align: center; - height: 100%; -} + margin: 0; + padding: 0; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + color: #565657; + background: #1f60a1 image-url("bg.png") repeat-x; + min-width: 940px; + min-height: 600px; + text-align: center; + height: 100%; } header, section, footer, aside, nav, article, menu { - display: block; -} + display: block; } -input[type="text"]:focus { outline: none; } - -input[type="password"]:focus { outline: none; } - -input:focus { outline: none; } - -select:focus { outline: none; } +input { + &[type="text"]:focus, &[type="password"]:focus, &:focus { + outline: none; } } + +select:focus { + outline: none; } + +a img { + border: none; } -a img { border: none; } - .wrap { - width: 940px; - margin: 0 auto; - text-align: center; - border: 1px solid #3f668c; - -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - background: #FFF; - min-height: 92%; -} - -.wrap.columns { - background: #FFF image-url("page-bg.png") repeat-y; -} + width: 940px; + margin: 0 auto; + text-align: center; + border: 1px solid #3f668c; + -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + background: #FFF; + min-height: 92%; + &.columns { + background: white image-url("page-bg.png") repeat-y; } } .both { - clear: both; -} + clear: both; } /* Top menu */ header { - -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - position: relative; - z-index: 1000; -} - -header div.left { - background: image-url("top-left.png"); - height: 46px; - width: 14px; - float: left; -} - -header div.middle { - background: image-url("top-middle.png"); - float: left; - height: 46px; - width: 912px; -} - -header div.right { - background: image-url("top-right.png"); - height: 46px; - width: 14px; - float: right; -} + -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + position: relative; + z-index: 1000; + div { + &.left { + background: image-url("top-left.png"); + height: 46px; + width: 14px; + float: left; } + &.middle { + background: image-url("top-middle.png"); + float: left; + height: 46px; + width: 912px; } + &.right { + background: image-url("top-right.png"); + height: 46px; + width: 14px; + float: right; } } + menu { + float: left; + margin: 0; + padding: 0; + ul { + list-style: none; + margin: 0; + padding: 10px 0px 0px 0px; + li { + display: inline; + a { + font-size: 12px; + color: #FFF; + text-decoration: none; + height: 43px; + padding: 15px 15px 15px 15px; + &:hover { + color: #cee7ff; } + &.first { + padding-left: 45px; } + &.active { + background: image-url("menu-hover.png") repeat-x; } } } } } + div { + &.logo { + float: left; + margin-top: -25px; + padding-left: 10px; + position: absolute; } + &.information { + float: right; } + &.search { + float: left; + margin: 10px 0px 0px 0px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background: #FFF; + border: 1px solid #7691aa; + div { + &.pic { + background: image-url("search-button.png"); + height: 22px; + width: 24px; + float: left; } + &.field { + float: left; + margin: -1px 0px 0px 0px; + input { + border: none; + height: 18px; + background: none; + width: 132px; + font-size: 12px; + font-family: Arial; + padding: 2px 0px 0px 0px; + &.gray { + color: #cfcfcf; } + &.black { + color: #333333; } } } } } + &.avatar { + float: left; + padding: 6px 10px 10px 10px; } + &.information div { + &.active { + background: image-url("menu-hover.png") repeat-x; } + &.user { + float: left; + margin-left: 14px; } } + &.profile { + float: left; + text-align: right; + color: #FFF; + font-size: 12px; + padding-top: 12px; + a { + color: #FFF; + text-decoration: none; + padding-right: 10px; + &:hover { + text-decoration: underline; } } } + &.droplist-wrap { + margin: -4px 0px 0px 0px; } + &.droplist { + background: image-url("bg-droplist.png") repeat-x; + height: 91px; + width: 151px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin-top: 0px; + margin-left: 138px; + border-radius: 0px 0px 4px 4px; + display: none; + text-align: right; + z-index: 9999; } + &.droplist-wrap div.a { + margin-top: 5px; } + &.droplist a { + position: relative; + padding-left: 15px; + font-size: 12px; + color: #7eb7ed; + text-decoration: none; + padding-right: 15px; + margin-top: 10px; + &:hover { + text-decoration: underline; } } } } /* Left part of top menu*/ -header menu { - float: left; - margin: 0; - padding: 0; -} - -header menu ul { - list-style: none; - margin: 0; - padding: 10px 0px 0px 0px; -} - -header menu ul li { - display: inline; -} - -header menu ul li a { - font-size: 12px; - color: #FFF; - text-decoration: none; - height: 43px; - padding: 15px 15px 15px 15px; -} - -header menu ul li a:hover { - color: #cee7ff; -} - -header menu ul li a.first { - padding-left: 45px; -} - -header menu ul li a.active { - background: image-url("menu-hover.png") repeat-x; -} - -header div.logo { - float: left; - margin-top: -25px; - padding-left: 10px; - position: absolute; -} - /* Right part of top menu */ -header div.information { - float: right; -} - -header div.search { - float: left; - margin: 10px 0px 0px 0px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; - background: #FFF; - border: 1px solid #7691aa; -} - -header div.search div.pic { - background: image-url("search-button.png"); - height: 22px; - width: 24px; - float: left; -} - -header div.search div.field { - float: left; - margin: -1px 0px 0px 0px; -} - -header div.search div.field input { - border: none; - height: 18px; - background: none; - width: 132px; - font-size: 12px; - font-family: Arial; - padding: 2px 0px 0px 0px; -} - -header div.search div.field input.gray { - color: #cfcfcf; -} - -header div.search div.field input.black { - color: #333333; -} - -header div.avatar { - float:left; - padding-top: 6px; - padding-right: 10px; - padding-bottom: 10px; - padding: 6px 10px 10px 24px; -} - -header div.profile { - float: left; - text-align: right; - color: #FFF; - font-size: 12px; - padding-top: 12px; -} - -header div.profile a { - color: #FFF; - text-decoration: none; -} - -header div.profile a:hover { - text-decoration: underline; -} - - -header div.droplist-wrap { - margin: -4px 0px 0px 0px; -} - -header div.droplist { - background: image-url("bg-droplist.png") repeat-x; - height: 91px; - width: 151px; - -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin-top: 0px; - margin-left: 138px; - border-radius: 0px 0px 4px 4px; - display: none; - text-align: right; - z-index: 9999; -} - -header div.droplist-wrap div.a { - margin-top: 5px; -} - -header div.droplist a{ - position: relative; - padding-left: 15px; - font-size: 12px; - color: #7eb7ed; - text-decoration: none; - padding-right: 15px; - margin-top: 10px; -} - -header div.droplist a:hover{ - text-decoration: underline; -} - - /* Submenu */ .sub-menu { - height: 38px; - margin: -7px 0px 0px 0px; - padding: 0px 0px 0px 15px; - background: #ededed; - position: relative; - z-index: 100; - border-bottom: 1px solid #FFF; - -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); -} - -.sub-menu div.left { - float: left; - width: 200px; - border-right: 1px solid #dcdcdc; - font-size: 12px; - text-align: left; - font-weight: 700; - padding: 10px 0px 0px 0px; - height: 21px; -} - -.sub-menu div.right { - float: left; -} - - -.sub-menu nav { /*Äëÿ ïîäìåíþ áåç íàçâàíèÿ*/ - float: left; - margin: 0px 0px 0px 0px; -} - -.sub-menu nav ul { - list-style: none; - text-align: left; - padding: 0; - margin: 0; - padding-top: 5px; -} - -.sub-menu nav ul li { - display: inline; -} - -.sub-menu nav ul li a { - font-size: 12px; - color: #575756; - text-decoration: none; - height: 34px; - padding: 0px 20px 6px 20px; -} - -.sub-menu nav ul li a.active { - background: image-url("submenu-hover.png") repeat-x; -} - -.sub-menu nav ul li a:hover { - color: #2b6daf; -} + height: 38px; + margin: -7px 0px 0px 0px; + padding: 0px 0px 0px 15px; + background: #ededed; + position: relative; + z-index: 100; + border-bottom: 1px solid #FFF; + -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + div { + &.left { + float: left; + width: 200px; + border-right: 1px solid #dcdcdc; + font-size: 12px; + text-align: left; + font-weight: 700; + padding: 10px 0px 0px 0px; + height: 21px; } + &.right { + float: left; } } + nav { + /*Äëÿ ïîäìåíþ áåç íàçâàíèÿ*/ + float: left; + margin: 0px 0px 0px 0px; + ul { + list-style: none; + text-align: left; + padding: 0; + margin: 0; + padding-top: 5px; + li { + display: inline; + a { + font-size: 12px; + color: #575756; + text-decoration: none; + height: 34px; + padding: 0px 20px 6px 20px; + &.active { + background: image-url("submenu-hover.png") repeat-x; } + &:hover { + color: #2b6daf; } } } } } } /* Page markup */ article { - font-size: 12px; -} + font-size: 12px; } aside { - float: left; - width: 215px; -} + float: left; + width: 215px; } -article div.right { - float: right; - width: 645px; - padding: 20px 40px 40px 40px; - text-align: left; -} - -article div.right.bigpadding { - width: 445px; - padding: 20px 140px 40px 140px; -} - -article div.all { - width: 855px; - padding: 20px 40px 20px 40px; - text-align: left; -} - -article div.all.bigpadding { - width: 605px; - padding: 0px 40px 20px 200px; - text-align: left; -} +article div { + &.right { + float: right; + width: 645px; + padding: 20px 40px 40px 40px; + text-align: left; + &.bigpadding { + width: 445px; + padding: 20px 140px 40px 140px; } + &.middlepadding { + width: 510px; + padding: 20px 120px 40px 50px; + div.rightlist { + width: 300px; + input, textarea { + width: 300px; } } } } + &.all { + width: 855px; + padding: 20px 40px 20px 40px; + text-align: left; + &.bigpadding { + width: 605px; + padding: 0px 40px 20px 200px; + text-align: left; } + &.verybigpadding { + width: 545px; + padding: 0px 40px 20px 200px; + text-align: left; + div.left { + float: left; + img { + padding-right: 40px; + margin-top: 20px; } + h3, h4, p { + width: 420px; } + .tmargin5 { + padding-top: 5px; + position: relative; } } } } } /* Left part of page markup */ -aside div.bordered { - border-bottom: 1px solid #dee5eb; - text-align: left; - padding: 20px 0px 30px 15px; -} - -aside div.block { - text-align: left; - padding: 10px 0px 30px 15px; -} +aside div { + &.bordered { + border-bottom: 1px solid #dee5eb; + text-align: left; + padding: 20px 0px 30px 15px; } + &.block { + text-align: left; + padding: 10px 0px 30px 15px; } } /* Common page parts markups */ -article a.button { - display: inline-block; - white-space: nowrap; - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); - border: 1px solid #5084b4; - padding: 4px 20px; - margin: 0; - font-size: 12px; - text-decoration: none; - color: #FFF; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align: center; -} +article { + h4 { + font-size: 12px; + margin-bottom: 0px; + padding-bottom: 2px; } + p { + margin: 0; + padding: 0; } } -article a.button:hover{ - background-color: #34719d; - background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); - background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); - background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); - background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); - background-image: -o-linear-gradient(top, #7fb3e1, #34719d); - background-image: linear-gradient(top, #7fb3e1, #34719d); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); - text-decoration: none; -} +div { + &.expand-gray-down, &.expand-gray-up { + height: 10px; + width: 12px; + float: left; + margin: 3px 0px 0px 3px; + cursor: pointer; } + &.expand-gray-down { + background: image-url("expand-gray.png") no-repeat; } + &.expand-gray-up { + background: image-url("expand-gray2.png") no-repeat; } } - - -article a.button:active{ - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); -} - -article a.disabled { - background-color: #888888; - background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); - background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); - background-image: -moz-linear-gradient(top, #aaaaaa, #888888); - background-image: -ms-linear-gradient(top, #aaaaaa, #888888); - background-image: -o-linear-gradient(top, #aaaaaa, #888888); - background-image: linear-gradient(top, #aaaaaa, #888888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); - cursor: default; - color: #d8d8d8; - border: 1px solid #aaaaaa; - cursor: default; - text-align: center; -} - -article h3{ - font-size: 14px; - color: #575756; - margin-bottom: 0; - padding-bottom: 2px; -} - -article h3.fix { - margin-top: 0px; - padding-top: 0px; -} - -article a{ - color: #7eb7ed; - font-size: 12px; - text-decoration: none; - padding: 0px 0px; -} - -article a:hover{ - text-decoration: underline; -} +article { + a { + &.button { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; + &:hover { + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; } + &:active { + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); } } + &.disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; } } + input { + &[type="file"] {} + &[type="submit"] { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; + height: auto; + width: auto; + &:hover { + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; + cursor: pointer; } + &:active { + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); } + &:disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; } } } + h3 { + font-size: 14px; + color: #575756; + margin-bottom: 0; + padding-bottom: 2px; + &.fix { + margin-top: 0px; + padding-top: 0px; } } + a { + color: #7eb7ed; + font-size: 12px; + text-decoration: none; + padding: 0px 0px; + &:hover { + text-decoration: underline; } } + div { + &.right div.hr { + border-bottom: 1px solid #dedede; + width: 100%; + padding-top: 30px; + margin-bottom: 30px; + &.bottom { + margin-bottom: 10px; + padding-top: 20px; } + &.top { + padding-top: 7px; + margin-bottom: 20px; } } + &.leftside { + float: left; } + &.rightside { + float: right; } + &.all.bigpadding div.rightside { + margin-right: 40px; } } } /* Right part of page markup */ -article div.right div.hr { - border-bottom: 1px solid #dedede; - width: 100%; - padding-top: 30px; - margin-bottom: 30px; -} - -article div.right div.hr.bottom { - margin-bottom: 10px; - padding-top: 20px; -} - -article div.right div.hr.top { - padding-top: 7px; - margin-bottom: 20px; -} - -article div.right div.leftside { - float: left; -} - -article div.right div.rightside { - float: right; -} - .lefter { - float: left; - margin-right: 5px; -} - -.lefter span.gap { - padding-right: 59px; -} - -.lefter.top { - margin-top: -6px; -} + float: left; + margin-right: 5px; + span.gap { + padding-right: 59px; } + &.top { + margin-top: -6px; } } .w25 { - width: 25px; -} + width: 25px; } .w420 { - width: 420px; - padding-bottom: 20px; -} + width: 420px; + padding-bottom: 20px; } .padd25 { - padding-left: 25px; -} + padding-left: 25px; } .width70 { - width: 70px; -} - + width: 70px; } /* Footer */ footer { - height: 32px; - padding-left: 15px; - width: 900px; - margin: 0 auto; - text-align: center; -} - -footer ul { - margin: 0; - padding: 0; - list-style: none; - font-size: 12px; - color: #FFF; - padding-top: 10px; - text-align: left; -} - -footer ul li { - display: inline; -} - -footer ul li a { - font-size: 12px; - color: #FFF; - text-decoration: none; -} - -footer ul li a:hover { - text-decoration: underline; -} + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; + ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: left; + li { + display: inline; + a { + font-size: 12px; + color: #FFF; + text-decoration: none; + &:hover { + text-decoration: underline; } } } } } /* Main page */ -aside div.bordered table{ - padding: 0; - margin: 0; - padding-bottom: 0px; - margin-left: -10px; -} +aside div { + &.bordered table { + padding: 0; + margin: 0; + padding-bottom: 0px; + margin-left: -10px; + td { + font-size: 12px; + padding: 1px 0px 0px 0px; } } + &.block table td { + text-align: right; + padding: 2px 3px 1px 3px; + &.first { + width: 150px; + text-align: left; } } } -aside div.bordered table td{ - font-size: 12px; - padding: 1px 0px 0px 0px; -} - -aside div.block table td { - text-align: right; - padding: 2px 3px 1px 3px; -} - - -aside div.block table td.first{ - width: 150px; - text-align: left; -} - -article div.right div.messages { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 100%; - color: #477cae; - text-align: center; - font-size: 12px; - padding: 4px 0px 4px 0px; - cursor: pointer; - margin: 15px 0px 15px 0px; -} - -article div.right div.messages:hover { - background: #dceffa; -} - -article div.right div.messages p{ - margin: 0; - padding: 0; -} - -article div.right div.activity { - border: 1px solid #d6d6d6; - /*width: 614px;*/ - border-radius: 5px; - padding: 6px; - margin-top: 15px; - color: #333; -} - -article div.right div.activity div.top div.image { - float: left; -} - -article div.right div.activity div.top div.text { - float: left; - padding-left: 10px; - font-size: 12px; -} - -article div.right div.activity div.top div.text span.name { - font-weight: 700; -} - -article div.right div.activity div.top div.text span.date { - font-size: 11px; -} - -article div.right div.activity div.top div.text span.subject img { - cursor: pointer; -} - -article div.right div.activity div.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; -} - -article div.right div.activity div.fulltext.view { - display: block; -} +article div { + &.right div.messages { + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 100%; + color: #477cae; + text-align: center; + font-size: 12px; + padding: 4px 0px 4px 0px; + cursor: pointer; + margin: 15px 0px 15px 0px; + &:hover { + background: #dceffa; } + p { + margin: 0; + padding: 0; } } + &.activity { + border: 1px solid #d6d6d6; + /*width: 614px;*/ + border-radius: 5px; + padding: 6px; + margin-top: 15px; + color: #333; + div.top div { + &.image { + float: left; } + &.text { + float: left; + padding-left: 10px; + font-size: 12px; + span { + &.name { + font-weight: 700; } + &.date { + font-size: 11px; } } } } } + &.text span.subject { + float: left; } + &.activity div { + &.top div.text span.subject img { + cursor: pointer; } + &.fulltext { + font-size: 12px; + padding-top: 10px; + display: none; + &.view { + display: block; } } } } /* Admin page */ .admin-preferences ul { - list-style: none; - margin: 0; - padding: 0; - margin-top: 20px; - width: 215px; - text-align: left; -} - -.admin-preferences ul li{ - padding-top: 5px; - padding-bottom: 5px; - width: 215px; -} - -.admin-preferences ul li.active, .admin-preferences ul li:hover { - background: #dcecfa; -} - -.admin-preferences ul li a{ - color: #575756; - text-decoration: none; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 15px; -} + list-style: none; + margin: 0; + padding: 0; + margin-top: 20px; + width: 215px; + text-align: left; + li { + padding-top: 5px; + padding-bottom: 5px; + width: 215px; + &.active, &:hover { + background: #dcecfa; } + a { + color: #575756; + text-decoration: none; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 15px; } } } .right div.leftlist, .all div.leftlist { - float: left; - width: 200px; - margin: 0px 0px 10px 0px; -} + float: left; + width: 200px; + margin: 0px 0px 10px 0px; } .right div.rightlist, .all div.rightlist { - float: left; - width: 400px; - font-size: 12px; - color: #575756; - margin: 0px 0px 10px 0px; -} + float: left; + width: 400px; + font-size: 12px; + color: #575756; + margin: 0px 0px 10px 0px; } -.right div.rightlist div.check { - float: left; -} +.right div.rightlist div { + &.check { + float: left; } + &.forcheck { + float: left; + margin: 1px 0px 0px 5px; } } -.right div.rightlist div.forcheck { - float: left; - margin: 1px 0px 0px 5px; -} -div.rightlist textarea { - height: 110px; - width: 340px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Arial; - font-size: 12px; -} - -div.rightlist input[type="text"] { - height: 15px; - width: 340px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Arial; - font-size: 12px; -} +div.rightlist { + textarea { + height: 110px; + width: 350px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; } + input { + &[type="text"], &[type="password"] { + height: 15px; + width: 350px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; } } } /* Admin-members page */ -.right table div.img { - float: left; -} +.right { + table { + div { + &.img { + float: left; } + &.radio { + float: left; + margin: 5px 0px 0px 0px; } + &.forimg, &.forradio { + float: left; + margin: 5px 0px 0px 5px; } } + span.niceCheck-main { + margin-top: 3px; } } + div { + &.admin-search, &.admin-role { + float: left; } + &.admin-search input { + width: 300px; + margin-right: 5px; + height: 23px; + border: 1px solid #dedede; + border-radius: 3px; + margin-top: 1px; + font-size: 12px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + padding-left: 5px; } } } -.right table div.radio { - float: left; - margin: 5px 0px 0px 0px; -} - -.right table div.forimg { - float: left; - margin: 5px 0px 0px 5px; -} - -.right table div.forradio { - float: left; - margin: 5px 0px 0px 5px; -} - -.right table span.niceCheck-main { - margin-top: 3px; -} - -.right div.admin-search { - float: left; -} - -.right div.admin-role { - float: left; -} - -.right div.admin-search input { - width: 300px; - margin-right: 5px; - height: 23px; - border: 1px solid #dedede; - border-radius: 3px; - margin-top: 1px; - font-size: 12px; - font-family: Tahoma, Arial; - padding-left: 5px; -} - -.right div.admin-search input.gray { - color: #cfcfcf; -} - -.right div.admin-search input.black { - color: #333333; -} +article input { + &.gray { + color: #cfcfcf; } + &.black { + color: #333333; } } .right div.admin-add { - float: left; - padding-top: 1px; - margin-left: 5px; -} - -.right div.admin-add a { - width: 86px; - text-align: center; - padding-bottom: 5px; -} + float: left; + padding-top: 1px; + margin-left: 5px; + a { + width: 86px; + text-align: center; + padding-bottom: 5px; } } /* Input elements */ .niceRadio { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: image-url("radio.png"); - overflow: hidden; -} + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("radio.png"); + overflow: hidden; } + .radioChecked { - background-position: 0 -17px; -} + background-position: 0 -17px; } + .niceRadio input { - margin-left: -18px; -} + margin-left: -18px; } .sel80 { - width: 200px; - padding-bottom: 4px; - text-align: left; -} -.lineForm, -.lineForm3 { - margin-bottom: 0px; -} + width: 200px; + padding-bottom: 4px; + text-align: left; + &.aside { + width: 185px; } } + +.lineForm, .lineForm3 { + margin-bottom: 0px; } .niceCheck { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: image-url("checkbox.png"); -} -.niceCheck input { - display: none; -} + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox.png"); + input { + display: none; } } .niceCheck-main { - width: 18px; - height: 18px; - display: inline-block; - cursor: pointer; - background: image-url("checkbox-main.png"); -} -.niceCheck-main input { - display: none; -} + width: 18px; + height: 18px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox-main.png"); + input { + display: none; } } /* Admin build project */ -section.left { - float: left; - text-align: left; - width: 230px; - margin-left: 250px; -} - -section.right { - float: right; - text-align: left; - width: 200px; - margin-right: 250px; -} - -section .left { - float: left; - margin-right: 4px; -} +section { + &.left { + float: left; + text-align: left; + width: 230px; + margin-left: 250px; } + &.right { + float: right; + text-align: left; + width: 200px; + margin-right: 250px; } + .left { + float: left; + margin-right: 4px; } } /* Commits history */ -article .fright { - float: right; -} - -article .fright p{ - margin: 0; - padding: 5px 5px 0px 0px; -} - article .date-block { - width: 100%; - margin-top: 17px; -} + width: 100%; + margin-top: 17px; + div { + &.date { + float: left; + background: #bedbf6; + color: #477cae; + border: 1px solid #98bede; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-radius: 4px 0px 0px 4px; + width: 65px; + height: 55px; + padding: 10px; + padding-top: 20px; + -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + font-size: 14px; + text-align: center; } + &.messages { + float: left; + border: 1px solid #cfdde7; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 0px 4px 4px 4px; + border-radius: 0px 4px 4px 4px; + padding: 10px; + padding-bottom: 0px; + width: 746px; } + &.message { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; + div { + &.body { + float: left; + text-align: left; } + &.code { + float: right; + margin: -7px 0px 0px 640px; + position: absolute; } } } + &.code div { + &.top { + width: 90px; + height: 22px; + border: 1px solid #9dbcd5; + background: #cbdeef; } + &.bottom { + width: 90px; + text-align: right; } + &.left { + float: left; + width: 13px; + height: 13px; + padding-left: 2px; + padding-top: 4px; } + &.right { + float: right; + border: 1px solid #bcd5ea; + background: #FFF; + font-size: 12px; + width: 65px; + height: 14px; + margin: 2px; + padding: 0px 2px 2px 0px; + text-align: center; } } + &.image { + float: left; } } } -article .date-block div.date { - float: left; - background: #bedbf6; - color: #477cae; - border: 1px solid #98bede; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 0px 0px 4px; - border-radius: 4px 0px 0px 4px; - width: 65px; - height: 55px; - padding: 10px; - padding-top: 20px; - -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - font-size: 14px; - text-align: center; -} - -article .date-block div.messages { - float: left; - border: 1px solid #cfdde7; - -moz-border-radius-topleft: 0px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 0px 4px 4px 4px; - border-radius: 0px 4px 4px 4px; - padding: 10px; - padding-bottom: 0px; - width: 746px; -} - -article .date-block div.message { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; -} - -article .date-block div.message div.body { - float: left; - text-align: left; -} - -article .date-block div.message div.code { - float: right; - margin: -7px 0px 0px 640px; - position: absolute; -} - -article .date-block div.code div.top { - width: 90px; - height: 22px; - border: 1px solid #9dbcd5; - background: #cbdeef; -} - -article .date-block div.code div.bottom { - width: 90px; - text-align: right; -} - -article .date-block div.code div.left { - float: left; - width: 13px; - height: 13px; - padding-left: 2px; - padding-top: 4px; -} - -article .date-block div.code div.right { - float: right; - border: 1px solid #bcd5ea; - background: #FFF; - font-size: 12px; - width: 65px; - height: 14px; - margin: 2px; - padding: 0px 2px 2px 0px; - text-align: center; -} - -article .date-block div.image, .last-commit div.image { - float: left; -} +.last-commit div.image { + float: left; } article .date-block div.text, .last-commit div.text { - float: left; - padding-left: 10px; - font-size: 12px; -} + float: left; + padding-left: 10px; + font-size: 12px; } article .date-block div.text span.name, .last-commit span.name { - font-weight: 700; -} + font-weight: 700; } article .date-block div.text span.date, .last-commit span.date { - font-size: 11px; -} + font-size: 11px; } article .date-block div.text span.subject img, .last-commit span.subject img { - cursor: pointer; -} + cursor: pointer; } article .date-block div.fulltext, .last-commit div.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; - /*width: 640px;*/ -} - + font-size: 12px; + padding-top: 10px; + display: none; + /*width: 640px;*/ } article div.year { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 760px; - color: 477cae; - text-align: center; - font-size: 12px; - padding: 4px; - margin-left: 87px; - margin-top: 30px; - margin-bottom: 30px; -} + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 760px; + color: 477cae; + text-align: center; + font-size: 12px; + padding: 4px; + margin-left: 87px; + margin-top: 30px; + margin-bottom: 30px; + p { + margin: 0; + padding: 0; + color: #477CAE; } } -article div.year p{ - margin: 0; - padding: 0; - color: #477CAE; -} +div.pagination.tmargin30 { + margin-top: 30px; } /* Create issue */ .bordered.nopadding, .right.nopadding { - padding-top: 0px; -} + padding-top: 0px; } p.tmargin5 { - margin-top: 5px; -} + margin-top: 5px; } aside input { - height: 25px; - width: 170px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 0px 5px; - font-family: Tahoma, Arial; - font-size: 12px; - margin-bottom: 5px; - margin-top: 5px; -} + height: 25px; + width: 170px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 0px 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + margin-bottom: 5px; + margin-top: 5px; + &.gray { + color: #cfcfcf; } + &.black { + color: #333333; } } -aside input.gray { - color: #cfcfcf; -} +div { + &.people { + width: 202px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 10px; + padding-right: 0px; + div.avatar { + float: left; + padding-left: 5px; } } + &.avatar { + float: left; + padding-left: 5px; } + &.people div.name, &.name { + padding-top: 4px; + padding-left: 3px; + float: left; } } -aside input.black { - color: #333333; -} +aside div.select { + background: #dcecfa; } -div.people { - width: 202px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 10px; - padding-right: 0px; -} +div { + &.people:hover { + background: #dcecfa; } + &.label { + &.selected { + width: 196px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + &:hover { + background: #dcecfa; } } + width: 196px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + &:hover { + background: #dcecfa; } } + &.labeltext.selected { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; } + &.label div.flag { + height: 11px; + width: 3px; + background: #39b54a; + float: left; + margin-top: 3px; + margin-right: 3px; + border-radius: 2px; } } -div.people div.avatar, div.avatar { - float: left; - padding-left: 5px; -} - -div.people div.name, div.name { - padding-top: 4px; - padding-left: 3px; - float: left; -} - -aside div.select, div.people:hover { - background: #dcecfa; -} - -div.label.selected, div.label { - width: 196px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 15px; -} - -div.label.selected:hover, div.label:hover { - background: #dcecfa; -} - -div.labeltext.selected { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; -} - -div.label div.flag { - height: 11px; - width: 3px; - background: #39b54a; - float: left; - margin-top: 3px; - margin-right: 3px; - border-radius: 2px; -} - -.right span.small-text { - font-size: 11px; -} - -.right .bpadding10, .all .bpadding10 { - padding-bottom: 10px; -} +.right { + span.small-text { + font-size: 11px; } + .bpadding10 { + padding-bottom: 10px; } } +.all .bpadding10 { + padding-bottom: 10px; } /* Issue page */ -aside div.switcher, aside div.switcher-off { - height: 23px; - width: 194px; - background: image-url("switch-on.png"); - color: #FFF; - font-size: 12px; - cursor: pointer; -} - -aside div.switcher-off { - background: image-url("switch-off.png"); -} - -aside div.switcher div.swleft, aside div.switcher-off div.swleft { - float: left; - width: 96px; - text-align: center; - padding-top: 3px; -} - -aside div.switcher div.swright, aside div.switcher-off div.swright { - float: right; - width: 96px; - text-align: center; - padding-top: 3px; -} +aside div { + &.switcher { + height: 23px; + width: 194px; + background: image-url("switch-on.png"); + color: #FFF; + font-size: 12px; + cursor: pointer; } + &.switcher-off { + height: 23px; + width: 194px; + background: image-url("switch-on.png"); + color: #FFF; + font-size: 12px; + cursor: pointer; + background: image-url("switch-off.png"); } + &.switcher div.swleft, &.switcher-off div.swleft { + float: left; + width: 96px; + text-align: center; + padding-top: 3px; } + &.switcher div.swright, &.switcher-off div.swright { + float: right; + width: 96px; + text-align: center; + padding-top: 3px; } } p.non-view { - display: none; -} + display: none; } -div.non-view { - display: none; -} +div { + &.non-view { + display: none; } + &.view { + display: block; } + &.nopointer { + cursor: default; + &:hover { + background: none; } } } -div.view { - display: block; -} +a.button.tmargin10, input[type="submit"].tmargin10 { + margin-top: 10px; } -div.nopointer { - cursor: default; -} +h3 { + &.tmargin0 { + margin-top: 0px; } + &.bmargin10 { + margin-bottom: 10px; } } -div.nopointer:hover { - background: none; -} +.right div { + &.comment { + text-align: left; + border: 1px solid #b3cce0; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; + width: 631px; + background: #dcecfa; + div { + &.issue-left { + float: left; + font-size: 12px; + margin-top: 4px; } + &.issue-right { + float: right; } } + textarea { + height: 110px; + width: 618px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + color: #575756; + margin: 10px 0px; } } + &.comment-closed { + display: none; + div { + &.state { + float: left; + padding: 2px 0px 2px 0px; + background: #bd4d40; + color: #FFF; + font-size: 12px; + border: 1px solid #924f52; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px 0px 0px 2px; + border-radius: 2px 0px 0px 2px; + width: 80px; + text-align: center; } + &.text { + border: 1px solid #dce6ed; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 2px; + -moz-border-radius-bottomright: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + float: left; + width: 561px; } + &.avatar { + float: left; + padding: 5px; } + &.name { + float: left; + font-size: 12px; + padding-top: 9px; } } } } -a.button.tmargin10 { - margin-top: 10px; -} - -h3.tmargin0 { - margin-top: 0px; -} - -h3.bmargin10 { - margin-bottom: 10px; -} - -.right div.comment { - text-align: left; - border: 1px solid #b3cce0; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; - width: 631px; - background: #dcecfa; -} - -.right div.comment div.issue-left { - float: left; - font-size: 12px; - margin-top: 4px; -} - -.right div.comment div.issue-right { - float: right; -} - -.right div.comment textarea { - height: 110px; - width: 618px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Arial; - font-size: 12px; - color: #575756; - margin: 10px 0px; -} - -.right div.comment-closed { - display: none; -} - -.right div.comment-closed div.state { - float: left; - padding: 2px 0px 2px 0px; - background: #bd4d40; - color: #FFF; - font-size: 12px; - border: 1px solid #924f52; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px 0px 0px 2px; - border-radius: 2px 0px 0px 2px; - width: 80px; - text-align: center; -} - -.right div.comment-closed div.text { - border: 1px solid #dce6ed; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: 2px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - float: left; - width: 561px; -} - -.right div.comment-closed div.avatar { - float: left; - padding: 5px; -} - -.right div.comment-closed div.name { - float: left; - font-size: 12px; - padding-top: 9px; -} - -div.desription-top { - background: #dcecfa; - font-size: 12px; - color: #575756; - border: 1px solid #a9c6dd; - height: 38px; - width: 100%; - margin-bottom: 20px; -} - -div.desription-top div.img { - float: left; - padding-left: 10px; - margin-top: 14px; -} - -div.desription-top div.name { - float: left; - margin-top: 5px; - margin-left: 10px; - background: #FFF; - border: 1px solid #d1deeb; - height: 21px; - width: auto; - color: #575756; - padding-right: 5px; - padding-left: 5px; - padding-top: 5px; -} - -div.desription-top div.role { - float: left; - margin-top: 11px; - margin-left: 10px; - font-size: 11px; -} - -div.desription-top div.fork { - float: right; - margin-top: 5px; - margin-right: 10px; -} -div.desription-top div.fork p { - float: right; - margin-top: 5px; - margin-right: 2px; -} - - - -.all div.description { - text-align: left; -} - -.all div.description h3{ - color: #575756; - font-weight: 700; - font-size: 14px; - margin-bottom: 5px; - margin-top: 5px; -} - -.all div.description p{ - font-size: 12px; - padding: 0; - margin: 0; - color: #575756; -} - -.all div.last-commit { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin: 10px 0px; -} +div { + &.desription-top { + background: #dcecfa; + font-size: 12px; + color: #575756; + border: 1px solid #a9c6dd; + height: 38px; + width: 100%; + margin-bottom: 20px; + div.img { + float: left; + padding-left: 10px; + margin-top: 14px; } + input.name { + float: left; + margin-top: 5px; + margin-left: 10px; + background: #FFF; + border: 1px solid #d1deeb; + height: 21px; + width: auto; + color: #575756; + font-size: 12px; + width: 215px; + padding: 2px 5px 3px; } + div.role { + float: left; + margin-top: 11px; + margin-left: 10px; + font-size: 11px; } } + &.fork { + float: right; + margin-top: 5px; + margin-right: 10px; + p { + float: right; + margin-top: 5px; + margin-right: 2px; } + &.rmargin0 { + margin-right: 0px; } } } +.all div { + &.description { + text-align: left; + h3 { + color: #575756; + font-weight: 700; + font-size: 14px; + margin-bottom: 5px; + margin-top: 5px; } + p { + font-size: 12px; + padding: 0; + margin: 0; + color: #575756; } } + &.last-commit { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin: 10px 0px; } } /* Project main page */ -table.tablesorter.project .th1 { - width: 130px; - padding-left: 17px; -} - -table.tablesorter.project .th2 { - width: 110px; - padding-left: 17px; -} - -table.tablesorter.project .th3 { - width: 450px; -} - -table.tablesorter.project .th4 { - padding-left: 17px; -} - -table.tablesorter.project div.name { - float: left; - margin-top: 0px; -} - -table.tablesorter.project div.pic { - float: left; - padding-right: 5px; -} +table.tablesorter.project { + .th1 { + width: 130px; + /*padding-left: 17px;*/ } + .th2 { + width: 110px; + /*padding-left: 17px;*/ } + .th3 { + width: 450px; } + .th4 { + /*padding-left: 17px;*/ } + div { + &.name { + float: left; + margin-top: 0px; } + &.pic { + float: left; + padding-right: 5px; } } } a.files-see { - color: #565657; - text-decoration: underline; -} + color: #565657; + text-decoration: underline; } -div.file { - border: 1px solid #dddddd; - margin-top: 10px; -} +div { + &.file { + border: 1px solid #dddddd; + margin-top: 10px; + div.top { + height: 28px; + background: #ededed; + -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + position: relative; + z-index: 99; + div { + &.l { + float: left; + margin: 6px 0px 0px 10px; } + &.r { + float: right; + margin: 6px 10px 0px 0px; } } } } + &.files div { + &.l { + float: left; + margin-bottom: 5px; } + &.r { + float: right; + display: none; } } + &.file { + margin-bottom: 10px; } } -div.file div.top { - height: 28px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; -} +textarea.commit-message { + height: 60px; + width: 450px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + margin-top: 5px; } -div.file div.top div.l { - float: left; - margin: 6px 0px 0px 10px; -} +div { + &.files div.l p { + padding: 0; + margin: 5px 0px 0px 0px; } + &.gutter-new { + float: left; + border: 0 !important; + padding: 10px 5px 10px 0px; + font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; + background: #EDEDED; + width: 40px; + text-align: right; } } -div.file div.top div.r { - float: right; - margin: 6px 10px 0px 0px; -} - -div.files div.l { - float: left; - margin-bottom: 5px; -} - -div.files div.r { - float: right; - display: none; -} - -div.files div.l p{ - padding: 0; - margin: 5px 0px 0px 0px; -} +/* Code */ /* Tracker */ -table td.width18 { - width: 18px; -} - -table td.width135 { - width: 135px; -} - -table td.width145 { - width: 145px; -} - -table td.width30 { - width: 30px; -} - -table td.width30.right { - text-align: right; -} +table td { + &.width18 { + width: 18px; } + &.width135 { + width: 135px; } + &.width145 { + width: 145px; } + &.width30 { + width: 30px; + &.right { + text-align: right; } } } div.bordered.bpadding20 { - padding-bottom: 20px; -} + padding-bottom: 20px; } -table.tracker-lables td { - padding: 1px; -} - -table.tracker-lables div.label { - width: auto; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; -} - -table.tracker-lables div.label:hover { - background: none; -} +table.tracker-lables { + td { + padding: 1px; } + div.label { + width: auto; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; + &:hover { + background: none; } } } div.blue-switcher { - height: 19px; - width: 258px; - border: 1px solid #a0a0a1; - border-radius: 3px; - background-color: #575756; - color: #FFF; - -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - float: right; -} + height: 19px; + width: 258px; + border: 1px solid #a0a0a1; + border-radius: 3px; + background-color: #575756; + color: #FFF; + -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + float: right; + div { + &.open { + float: left; + padding: 1px 0px 2px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; } + &.selected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); + background-image: -webkit-linear-gradient(top, #619dd2, #125687); + background-image: -moz-linear-gradient(top, #619dd2, #125687); + background-image: -ms-linear-gradient(top, #619dd2, #125687); + background-image: -o-linear-gradient(top, #619dd2, #125687); + background-image: linear-gradient(top, #619dd2, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); + border-radius: 2px; + height: 18px; + width: 128px; + -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin: 0px; + z-index: 2; } + &.closed { + float: right; + padding: 1px 0px 0px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; } } } -div.blue-switcher div.open { - float: left; - padding: 1px 0px 2px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; -} +table.tablesorter.tracker { + th.th1 { + width: 50px; } + td { + &.td0 { + width: 10px; + padding-right: 0px; } + &.td3 { + width: 120px; + padding-top: 10px; + div { + &.code { + height: 19px; + width: 15px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + padding: 1px 0px 0px 5px; + float: left; + margin-right: 5px; + cursor: pointer; } + &.avatar { + float: left; + margin-right: 5px; + cursor: pointer; } + &.answers { + height: 20px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + float: left; + cursor: pointer; + div { + &.pic { + float: left; + margin: 2px; } + &.count { + float: left; + margin: 0px 5px 0px 2px; } } } } } } + div.smalltext { + font-size: 11px; + color: #b0b0b1; + float: left; + margin-top: 3px; } } -div.blue-switcher div.selected { - background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); - background-image: -webkit-linear-gradient(top, #619dd2, #125687); - background-image: -moz-linear-gradient(top, #619dd2, #125687); - background-image: -ms-linear-gradient(top, #619dd2, #125687); - background-image: -o-linear-gradient(top, #619dd2, #125687); - background-image: linear-gradient(top, #619dd2, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); - border-radius: 2px; - height: 18px; - width: 128px; - -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin: 0px; - z-index: 2; - -} +div { + &.label { + &.selected.tracker { + width: auto; + clear: both; + cursor: default; + margin-left: 0px; + padding: 5px; + float: right; + margin-top: -6px; + &:hover { + background: none; } } + &.edit { + width: 196px; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + &:hover { + background: none; } } } + &.labeltext { + &.edit { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + margin-bottom: 5px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; + width: 175px; + cursor: default; + div { + &.text { + float: left; } + &.delete { + float: right; + cursor: pointer; + margin-top: 1px; } } } + a { + text-decoration: none; + color: #565657; } + &.edit a { + text-decoration: none; + color: #FFF; } } } -div.blue-switcher div.closed { - float: right; - padding: 1px 0px 0px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; -} - -table.tablesorter.tracker th.th1{ - width: 50px; -} - -table.tablesorter.tracker td.td0{ - width: 10px; - padding-right: 0px; -} - -table.tablesorter.tracker td.td3{ - width: 120px; - padding-top: 10px; -} - -table.tablesorter.tracker td.td3 div.code { - height: 19px; - width: 15px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - padding: 1px 0px 0px 5px; - float: left; - margin-right: 5px; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.avatar { - float: left; - margin-right: 5px; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.answers { - height: 20px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - float: left; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.answers div.pic { - float: left; - margin: 2px; -} - -table.tablesorter.tracker td.td3 div.answers div.count { - float: left; - margin: 0px 5px 0px 2px; -} - -table.tablesorter.tracker div.smalltext { - font-size: 11px; - color: #b0b0b1; - float: left; - margin-top: 3px; -} - - -div.label.selected.tracker { - width: auto; - clear: both; - cursor: default; - margin-left: 0px; - padding: 5px; - float: right; - margin-top: -6px; -} - -div.label.selected.tracker:hover { - background: none; -} - - -div.label.edit { - width: 196px; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; -} - -div.label.edit:hover{ - background: none; -} - -div.labeltext.edit { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - margin-bottom: 5px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; - width: 175px; - cursor: default; -} - -div.labeltext.edit div.text { - float: left; -} - -div.labeltext.edit div.delete { - float: right; - cursor: pointer; - margin-top: 1px; -} - -aside div.colors { - margin: 10px 0px; -} - -aside div.colors div.color { - float: left; - width: 22px; - height: 22px; - margin-right: 5px; - border-radius: 4px; - -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - cursor: pointer; -} - -aside div.colors div.choose { - height: 14px; - width: 14px; - padding: 4px; -} - -aside div.colors div.choose.selected, aside div.colors div.choose:hover { - background: image-url("choose.png") no-repeat 50% 50%; - height: 14px; - width: 14px; - padding: 4px; -} - -aside div.lefter { - float: left; -} - -aside div.righter { - float: right; - margin-right: 15px; -} +aside div { + &.colors { + margin: 10px 0px; + div { + &.color { + float: left; + width: 22px; + height: 22px; + margin-right: 5px; + border-radius: 4px; + -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + cursor: pointer; } + &.choose { + height: 14px; + width: 14px; + padding: 4px; + &.selected, &:hover { + background: image-url("choose.png") no-repeat 50% 50%; + height: 14px; + width: 14px; + padding: 4px; } } } } + &.lefter { + float: left; } + &.righter { + float: right; + margin-right: 15px; } } tr.label-active { - background: #DDD; - border-radius: 3px; -} + background: #DDD; + border-radius: 3px; } /* Wiki */ span.wiki-gray { - color: #b0b0b1; -} + color: #b0b0b1; } .right table.wiki { - border: 1px solid #e2e2e2; - border-bottom: none; - margin-top: 10px; -} - -.right table.wiki td { - border-bottom: 1px solid #e2e2e2; - padding: 8px; -} - -.right table.wiki tr.history td.td1{ - width: 5px; -} - -.right table.wiki tr.history td.td2{ - width: 180px; -} + border: 1px solid #e2e2e2; + border-bottom: none; + margin-top: 10px; + td { + border-bottom: 1px solid #e2e2e2; + padding: 8px; } + tr.history td { + &.td1 { + width: 5px; } + &.td2 { + width: 180px; } } } a.button.rigth { - float: right; -} + float: right; } div.r { - float: right; - margin-left: 10px; -} + float: right; + margin-left: 10px; } h3.wiki { - color: #477cae; - font-size: 16px; -} + color: #477cae; + font-size: 16px; } a.button.width100 { - width: 100px; -} + width: 100px; } -.div-tracker-lables { - margin: 2px 13px 2px 0px; - cursor: pointer; - border-radius: 4px; -} +.div-tracker-labels { + margin: 2px 13px 2px 0px; + cursor: pointer; + border-radius: 4px; } .div-label-left { - float: left; - width: 150px; -} + float: left; + width: 150px; } .div-label-right { - float: right; - width: 30px; - text-align: right; - padding-top: 4px; - padding-right: 3px; -} + float: right; + width: 30px; + text-align: right; + padding-top: 4px; + padding-right: 3px; } div.div-label-left div.label { - width: auto; - clear: both; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; -} + width: auto; + clear: both; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; + &:hover { + background: none; } } -div.div-label-left div.label:hover { - background: none; -} +/* Monitoring */ + +aside div.table { + margin-top: 5px; } + +h3.small { + font-size: 12px; + margin: 0px; + padding: 3px 0px; } + +table.tablesorter th.lpadding16 { + padding-left: 16px; } + +div.right.slim { + padding: 5px 14px 40px; + width: 695px; } + +img.delete-row { + cursor: pointer; } + +/* Create group */ + +div { + &.right-error { + float: left; + width: 369px; + height: 59px; + background: image-url("error-groups.png"); + margin: 0px 0px 5px -3px; + text-align: center; + p { + margin: 0; + padding: 27px 0px 0px 0px; } } + &.rightlist.nomargin { + margin: 0; } } + +article div { + &.rightlist input.error { + border: 1px solid #bd4d40; + -webkit-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); + -moz-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); + box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); } + &.groups-profile { + float: left; + a { + margin: 0px 0px 0px 5px; } + img { + margin: 2px 0px 0px 0px; } } } + +/* Group pages */ + +table.tablesorter { + &.group-list th.th2 { + width: 540px; } + &.create-platform th.th1 { + /*padding-left: 17px;*/ + width: 120px; } } + +/* Platform */ + +div.right div.left { + float: left; + margin-right: 5px; } + +table.tablesorter { + &.platform-products { + th.th1 { + /*padding-left: 17px;*/ + width: 560px; } + td.td2 { + text-align: center; } } + &.platform-repos { + th { + &.th1 { + /*padding-left: 17px;*/ + width: 480px; } + &.th2 { + /*padding-left: 17px;*/ + width: 80px; } } + td.td3 { + text-align: center; } } } + +div.new-owner div { + &.field { + float: left; + margin-right: 10px; + input { + width: 230px; } } + &.search { + float: left; } } + +.tpadding10 { + padding-top: 10px; } + +article div.all div.hr { + border-bottom: 1px solid #dedede; + width: 565px; + padding-top: 30px; + margin-bottom: 30px; } + +table.tablesorter.platform-product-main th { + &.th1 { + /*padding-left: 17px;*/ + width: 60px; } + &.th2 { + /*padding-left: 17px;*/ + width: 400px; } + &.th3 { + padding-left: 0px; } + &.th4 { + /*padding-left: 17px;*/ + width: 150px; } } + +div.right.rpadding0 { + padding-right: 0px; } + +article div.loadFile div { + &.btn { + float: left; } + &.name { + float: left; + margin-left: 20px; + padding-top: 4px; } } + +/* Profile */ + +.bpadding10 { + padding-bottom: 10px; } + +article div.rightlist div.load { + float: left; + margin-left: 40px; } + +.notify { + border: 1px solid #c86b60; + background: #f4e1df; + border-radius: 4px; + width: 100%; + margin-top: 20px; + p { + padding: 5px 10px; } } + +/* Pagination */ + +div.pagination { + em { + font-style: normal; + border: 1px solid #dddddd; + border-radius: 1px; + background: #ededed; + padding: 3px 7px; } + span, a { + border: 1px solid #dddddd; + border-radius: 1px; + background: #ededed; + padding: 3px 7px; } + em.current { + background: #d5e7f9; + border: 1px solid #c1daed; } + a { + color: #4c90d0; } } + +/*404*/ + +article div.all.error404 { + background: image-url("404.png") no-repeat 59% 0; + height: 500px; + text-align: center; + h1 { + margin: 0; + padding: 0; + margin-top: 165px; + font-size: 48px; + font-weight: normal; + span { + color: #4496d0; } } + h2 { + margin: 0; + padding: 0; + margin-top: 5px; + font-size: 18px; + font-weight: normal; } + p { + margin: 0 auto; + padding: 0; + text-align: center; + font-size: 14px; + &.pages { + margin-top: 72px; + width: 280px; } + &.search { + margin-top: 80px; + width: 230px; } } } \ No newline at end of file From 99e3bbb762c9a9c851be69172440bc4e259791b2 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 21:41:47 +0600 Subject: [PATCH 15/87] [refs #194] update issue content --- app/assets/javascripts/tracker.js | 24 ++++++++++++++++++++++++ app/controllers/issues_controller.rb | 8 ++++++-- app/views/issues/show.html.haml | 14 ++++++++++++-- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/tracker.js index 8e9d79940..c2ce9a81d 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/tracker.js @@ -205,4 +205,28 @@ $(document).ready(function() { return false; }); + $('#edit_issue_content').live('click', function() { + $('.edit_form.issue').fadeIn('slow'); + $(this).fadeOut('slow'); + }); + + $('.edit_form.issue').live('submit', function() { + var form = $(this); + $.ajax({ + type: 'POST', + url: form.attr("action"), + data: form.serialize(), + success: function(data){ + form.fadeOut('slow'); + $('#edit_issue_content').fadeIn('slow'); + $('h3.issue_title').html(form.find('#issue_title').attr('value')); + $('.fulltext.view.issue_body').html(form.find('#issue_body').attr('value')); + }, + error: function(data){ + alert('error') // TODO remove + } + }); + return false; + }); + }); diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 15af3a55d..2d3f13cf5 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -65,9 +65,13 @@ class IssuesController < ApplicationController @issue.set_close(current_user) if status == 'closed' @issue.set_open if status == 'open' status = 200 if @issue.save + render action, :status => (status || 500), :layout => false + else + @issue.title = params[:issue][:title] + @issue.body = params[:issue][:body] + status = 200 if @issue.save + render :nothing => true, :status => (status || 500), :layout => false end - - render action, :status => (status || 500), :layout => false end def destroy diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index fca926f2c..e8e508867 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -2,7 +2,7 @@ -render :partial => 'issues/create_sidebar' -content_for :right_nopadding do dummy -%h3=@issue.title +%h3.issue_title=@issue.title .activity .top .image @@ -13,8 +13,18 @@ %span.date=@issue.created_at.to_s(:long) %br/ .both - .fulltext.view=@issue.body + .fulltext.view.issue_body=@issue.body .both +%br +- if can? :write, @issue.project + =link_to t('layout.edit'), '#', :id => 'edit_issue_content', :class => 'button' + =form_for :issue, :url => [@project, @issue], :method => :put, :html => { :class => 'edit_form issue', :style => 'display:none;' } do |f| + .leftlist= t('activerecord.attributes.issue.title') + ':' + .rightlist= f.text_field :title + .leftlist= t('activerecord.attributes.issue.body') + ':' + .rightlist= f.text_area :body + .both + =f.submit t('layout.update'), :id => 'update_issue_content' .hr =render :partial => 'issues/status' From c4719f12daad437430a169c99b012f9328a1ac0d Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 22:32:36 +0600 Subject: [PATCH 16/87] [refs #194] some change in the issue managing --- app/assets/javascripts/tracker.js | 9 +++++-- app/assets/stylesheets/custom.scss | 2 +- app/assets/stylesheets/main.scss | 42 +++++++++++++++--------------- app/views/issues/show.html.haml | 1 + config/locales/issues.en.yml | 1 + config/locales/issues.ru.yml | 1 + 6 files changed, 32 insertions(+), 24 deletions(-) diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/tracker.js index c2ce9a81d..9b6fe05eb 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/tracker.js @@ -206,8 +206,13 @@ $(document).ready(function() { }); $('#edit_issue_content').live('click', function() { - $('.edit_form.issue').fadeIn('slow'); - $(this).fadeOut('slow'); + $('.edit_form.issue').fadeIn('fast'); + $(this).fadeOut('fast'); + }); + + $('#cancel_edit_issue_content').live('click', function() { + $('.edit_form.issue').fadeOut('fast'); + $('#edit_issue_content').fadeIn('fast'); }); $('.edit_form.issue').live('submit', function() { diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index cdfc7af2b..f77220532 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -44,7 +44,7 @@ article div.messages div.activity { } article div.activity .top div.image { - position: absolute; + //position: absolute; // TODO broken issue page float: left; width: 40px; height: 40px; diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index 23180b6cf..c10bc0a48 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -3,7 +3,7 @@ html, body { padding: 0; font-family: Tahoma, Geneva, Helvetica, sans-serif; color: #565657; - background: #1f60a1 url("../pics/bg.png") repeat-x; + background: #1f60a1 image-url("bg.png") repeat-x; min-width: 940px; min-height: 600px; text-align: center; @@ -33,7 +33,7 @@ a img { background: #FFF; min-height: 92%; &.columns { - background: white url("../pics/page-bg.png") repeat-y; } } + background: white image-url("page-bg.png") repeat-y; } } .both { clear: both; } @@ -48,17 +48,17 @@ header { z-index: 1000; div { &.left { - background: url("../pics/top-left.png"); + background: image-url("top-left.png"); height: 46px; width: 14px; float: left; } &.middle { - background: url("../pics/top-middle.png"); + background: image-url("top-middle.png"); float: left; height: 46px; width: 912px; } &.right { - background: url("../pics/top-right.png"); + background: image-url("top-right.png"); height: 46px; width: 14px; float: right; } } @@ -83,7 +83,7 @@ header { &.first { padding-left: 45px; } &.active { - background: url("../pics/menu-hover.png") repeat-x; } } } } } + background: image-url("menu-hover.png") repeat-x; } } } } } div { &.logo { float: left; @@ -105,7 +105,7 @@ header { border: 1px solid #7691aa; div { &.pic { - background: url("../pics/search-button.png"); + background: image-url("search-button.png"); height: 22px; width: 24px; float: left; } @@ -129,7 +129,7 @@ header { padding: 6px 10px 10px 10px; } &.information div { &.active { - background: url("../pics/menu-hover.png") repeat-x; } + background: image-url("menu-hover.png") repeat-x; } &.user { float: left; margin-left: 14px; } } @@ -148,7 +148,7 @@ header { &.droplist-wrap { margin: -4px 0px 0px 0px; } &.droplist { - background: url("../pics/bg-droplist.png") repeat-x; + background: image-url("bg-droplist.png") repeat-x; height: 91px; width: 151px; -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); @@ -222,7 +222,7 @@ header { height: 34px; padding: 0px 20px 6px 20px; &.active { - background: url("../pics/submenu-hover.png") repeat-x; } + background: image-url("submenu-hover.png") repeat-x; } &:hover { color: #2b6daf; } } } } } } @@ -304,9 +304,9 @@ div { margin: 3px 0px 0px 3px; cursor: pointer; } &.expand-gray-down { - background: url("../pics/expand-gray.png") no-repeat; } + background: image-url("expand-gray.png") no-repeat; } &.expand-gray-up { - background: url("../pics/expand-gray2.png") no-repeat; } } + background: image-url("expand-gray2.png") no-repeat; } } article { a { @@ -682,7 +682,7 @@ article input { height: 17px; display: inline-block; cursor: pointer; - background: url("../pics/radio.png"); + background: image-url("radio.png"); overflow: hidden; } .radioChecked { @@ -706,7 +706,7 @@ article input { height: 17px; display: inline-block; cursor: pointer; - background: url("../pics/checkbox.png"); + background: image-url("checkbox.png"); input { display: none; } } @@ -715,7 +715,7 @@ article input { height: 18px; display: inline-block; cursor: pointer; - background: url("../pics/checkbox-main.png"); + background: image-url("checkbox-main.png"); input { display: none; } } @@ -965,18 +965,18 @@ aside div { &.switcher { height: 23px; width: 194px; - background: url("../pics/switch-on.png"); + background: image-url("switch-on.png"); color: #FFF; font-size: 12px; cursor: pointer; } &.switcher-off { height: 23px; width: 194px; - background: url("../pics/switch-on.png"); + background: image-url("switch-on.png"); color: #FFF; font-size: 12px; cursor: pointer; - background: url("../pics/switch-off.png"); } + background: image-url("switch-off.png"); } &.switcher div.swleft, &.switcher-off div.swleft { float: left; width: 96px; @@ -1415,7 +1415,7 @@ aside div { width: 14px; padding: 4px; &.selected, &:hover { - background: url("../pics/choose.png") no-repeat 50% 50%; + background: image-url("choose.png") no-repeat 50% 50%; height: 14px; width: 14px; padding: 4px; } } } } @@ -1514,7 +1514,7 @@ div { float: left; width: 369px; height: 59px; - background: url("../pics/error-groups.png"); + background: image-url("error-groups.png"); margin: 0px 0px 5px -3px; text-align: center; p { @@ -1652,7 +1652,7 @@ div.pagination { /*404*/ article div.all.error404 { - background: url("../pics/404.png") no-repeat 59% 0; + background: image-url("404.png") no-repeat 59% 0; height: 500px; text-align: center; h1 { diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index e8e508867..d50d14417 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -25,6 +25,7 @@ .rightlist= f.text_area :body .both =f.submit t('layout.update'), :id => 'update_issue_content' + =link_to t('layout.issues.cancel_button'), '#', :id => 'cancel_edit_issue_content', :class => 'button' .hr =render :partial => 'issues/status' diff --git a/config/locales/issues.en.yml b/config/locales/issues.en.yml index 39a8dd365..bc42a1092 100644 --- a/config/locales/issues.en.yml +++ b/config/locales/issues.en.yml @@ -48,6 +48,7 @@ en: choose_user_on_left: Choose executor on the left choose_labels_on_left: Choose labels on the left at: at + cancel_button: Cancel flash: issue: diff --git a/config/locales/issues.ru.yml b/config/locales/issues.ru.yml index 827af86bc..fc70030c2 100644 --- a/config/locales/issues.ru.yml +++ b/config/locales/issues.ru.yml @@ -48,6 +48,7 @@ ru: choose_user_on_left: выберите исполнителя слева choose_labels_on_left: выберите метки слева at: в + cancel_button: Отменить flash: issue: From e83e19ea5055be54150cee77a2d271fbdd9a66b8 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 22:36:29 +0600 Subject: [PATCH 17/87] [refs #194] remove duplicates --- app/assets/stylesheets/application.scss | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 28e3caccb..509670963 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -1,8 +1,3 @@ @import "vendor"; @import "main"; @import "custom"; -@import "blue/style"; - -//= require main -//= require vendor -//= require custom From 2cb085992b8501e42989e155b8e4c357ee83472e Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Tue, 28 Feb 2012 22:41:03 +0600 Subject: [PATCH 18/87] [refs #194] fix submenu for issues --- app/views/projects/_submenu.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/projects/_submenu.html.haml b/app/views/projects/_submenu.html.haml index ca8013f89..fe66f5995 100644 --- a/app/views/projects/_submenu.html.haml +++ b/app/views/projects/_submenu.html.haml @@ -8,7 +8,7 @@ %li= link_to t("project_menu.project"), project_path(@project), {:class => (act == :show && contr == :projects) ? 'active' : ''} %li= link_to t("project_menu.commits"), commits_path(@project), {:class => (act == :index && contr == :commits) ? 'active' : ''} %li= link_to t("project_menu.builds"), project_build_lists_path(@project), {:class => (act == :index && contr == :builds) ? 'active' : ''} - %li= link_to t("project_menu.tracker"), project_issues_path(@project), {:class => (act == :index && contr == :issues) ? 'active' : ''} + %li= link_to t("project_menu.tracker"), project_issues_path(@project), {:class => contr == :issues ? 'active' : ''} %li= link_to t("project_menu.wiki"), project_wiki_index_path(@project), {:class => contr == :wiki ? 'active' : ''} %li= link_to t("project_menu.readme"), "#" #pending %li= link_to t("project_menu.settings"), edit_project_path(@project), {:class => (act == :edit && contr == :projects) ? 'active' : ''} From 9860624a0da216b9eb2bc7b5dc10d887f5c36200 Mon Sep 17 00:00:00 2001 From: Pavel Chipiga Date: Tue, 28 Feb 2012 19:00:43 +0200 Subject: [PATCH 19/87] Temporary disable SSL force --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index e815c1410..e0a74b7f8 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -50,7 +50,7 @@ Rosa::Application.configure do config.active_support.deprecation = :notify # Force SSL - config.force_ssl = true + # config.force_ssl = true # Compress JavaScripts and CSS config.assets.compress = true From 91eb30656014632b3ca7d04c019d15b395e42fb1 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 02:43:17 +0600 Subject: [PATCH 20/87] [refs #228] sign_in page --- app/assets/javascripts/login.js | 75 +++++++ app/assets/stylesheets/login.scss | 274 ++++++++++++++++++++++++ app/views/devise/sessions/new.html.haml | 50 +++-- app/views/layouts/sessions.html.haml | 10 +- config/locales/devise.en.yml | 1 + config/locales/devise.ru.yml | 1 + 6 files changed, 384 insertions(+), 27 deletions(-) create mode 100644 app/assets/javascripts/login.js create mode 100644 app/assets/stylesheets/login.scss diff --git a/app/assets/javascripts/login.js b/app/assets/javascripts/login.js new file mode 100644 index 000000000..3cade2375 --- /dev/null +++ b/app/assets/javascripts/login.js @@ -0,0 +1,75 @@ +//= require jquery +//= require jquery_ujs + +$(document).ready(function() { + function logIn() { + $('#new_user').submit(); + //~ $("#hint").fadeIn("slow"); + //~ document.getElementById("user_login").className="registartion-input-error"; + //~ document.getElementById("user_password").className="registartion-input-error"; + } +}); + + function disError(elem) { + $("#hint").fadeOut("fast"); + if (document.getElementById("user_login").className=="registartion-input-error") { + if (this.id=="user_login") { + document.getElementById("user_login").className="registartion-input-focus"; + } else { + document.getElementById("user_login").className="registartion-input-no-focus"; + } + } + if (document.getElementById("user_password").className=="registartion-input-error") { + if (this.id=="user_password") { + document.getElementById("user_password").className="registartion-input-focus"; + } else { + document.getElementById("user_password").className="registartion-input-no-focus"; + } + } + buttonCheck(); + } + + function buttonCheck() { + if ((document.getElementById("user_login").value!="")&&(document.getElementById("user_login").value!="Логин или email")&&(document.getElementById("user_password").value!="")&&(document.getElementById("user_password").value!="Пароль")) { + document.getElementById("btnLogin").className = "button"; + + } else { + document.getElementById("btnLogin").className = "button disabled"; + } + } + +function changeCheck(el) + +{ + var el = el, + input = el.getElementsByTagName("input")[0]; + + if(input.checked) + { + el.style.backgroundPosition="0 0"; + input.checked=false; + } + else + { + el.style.backgroundPosition="0 -17px"; + input.checked=true; + } + return true; +} +function startChangeCheck(el) + +{ + var el = el, + input = el.getElementsByTagName("input")[0]; + if(input.checked) + { + el.style.backgroundPosition="0 -17px"; + } + return true; +} + +function startCheck() +{ + + startChangeCheck(document.getElementById("niceCheckbox1")); +} \ No newline at end of file diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss new file mode 100644 index 000000000..53433c48d --- /dev/null +++ b/app/assets/stylesheets/login.scss @@ -0,0 +1,274 @@ +html, body { + margin: 0; + padding: 0; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + color: #565667; + background: #1f60a1 image-url("bg.png") repeat-x; + min-width: 940px; + min-height: 300px; + text-align: center; + height: 100%; } + +header, section, footer, aside, nav, article, menu { + display: block; } + +input { + &[type="text"]:focus, &[type="password"]:focus, &:focus { + outline: none; } } + +select:focus { + outline: none; } + +a img { + border: none; } + +.wrap { + width: 940px; + margin: 0 auto; + text-align: center; + min-height: 95%; } + +.both { + clear: both; } + +/* Header */ + +header div { + &.logo { + background: image-url("logo.png") no-repeat 50% 100%; + height: 89px; + width: 233px; + margin: 0 auto; + text-align: center; + padding-top: 12%; } + &.text { + color: #FFF; + font-size: 28px; + width: 800px; + text-align: left; + margin-left: 90px; + margin-top: 50px; + font-family: Arial; + text-shadow: 0px 1px 1px #000000; + filter: dropshadow(color = black, offx = 0, offy = 1); + padding-left: 0px; } } + +.niceCheck { + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox.png"); + input { + display: none; } } + +/* Content */ + +article { + width: 257px; + height: 227px; + background: #1c394c image-url("bg-signup.png") repeat-x; + border-radius: 5px; + border: 1px solid #38658c; + margin: 0 auto; + text-align: center; + margin-top: 75px; + -webkit-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); } + +a.button { + background: #125687; + background: image-url("button-green-normal.png"); + border-radius: 3px; + color: #FFF; + font-family: Tahoma; + font-size: 12px; + -webkit-font-smoothing: antialiased; + font-weight: normal; + padding: 5px 25px; + text-align: center; + border: none; + height: 25px; + width: 106px; + text-decoration: none; } + +input.button { + background: #125687; + background: image-url("button-green-normal.png"); + border-radius: 3px; + color: #FFF; + font-family: Tahoma; + font-size: 12px; + -webkit-font-smoothing: antialiased; + font-weight: normal; + padding: 5px 25px; + text-align: center; + border: none; + height: 25px; + width: 106px; + text-decoration: none; + padding: 5px 27px 8px 27px; + height: 28px; + width: 110px; } + +a.button:hover, input.button:hover { + background: #1874b6; + background: image-url("button-green-hover.png"); + cursor: pointer; } + +a.button:active, input.button:active { + background: image-url("button-green-press.png"); } + +a.button { + &:disabled, &.disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } } + +input.button:disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } + +article h1 { + color: #FFF; + font-size: 18px; + font-weight: normal; + font-family: Tahoma; + margin-bottom: 5px; } + +.registartion-input, .registartion-input-focus, .registartion-input-error, .registartion-input-no-focus { + height: 24px; + width: 217px; + border: 1px solid #8199a9; + border-radius: 2px; + color: #cfcfcf; + font-family: Tahoma; + font-size: 12px; + padding-left: 10px; + margin-top: 10px; } + +.registartion-input-focus, .registartion-input-focus-signup { + color: #575756; + -webkit-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); + -moz-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); + box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); } + +.registartion-input-no-focus, .registartion-input-no-focus-signup { + color: #575756; } + +.registartion-input-error, .registartion-input-error-signup { + border: 1px solid #bd4d40; + outline: 1px solid #bd4d40; + outline-offset: -2px; } + +div { + &.registration div { + &.remember { + color: #FFF; + font-size: 12px; + float: left; + padding-left: 15px; + padding-top: 5px; + div { + &.check { + float: left; + margin-top: 15px; + margin-right: 4px; } + &.text { + float: left; + margin-top: 15px; } } } + &.in { + float: right; + padding-right: 15px; + padding-top: 15px; } } + &.hr { + margin-top: 10px; + height: 1px; + width: 100%; + border-bottom: 1px solid #264862; + border-top: 1px solid #264862; } } + +article div.other div { + &.left { + float: left; + font-size: 12px; + color: #FFFFFF; + margin-top: 6px; + margin-left: 15px; } + &.right { + float: right; + margin-right: 15px; + margin-top: 13px; } } + +div { + &.forgot { + width: 257px; + text-align: center; + margin: 0 auto; } + &.password { + float: right; + padding-top: 4px; + p { + margin: 0; + padding: 0; } + a { + color: #FFF; + font-size: 12px; + text-decoration: none; + &:hover { + text-decoration: underline; } } } } + +nav { + width: 96px; + height: 47px; + background: image-url("registration.png") no-repeat; + float: right; + cursor: pointer; + p { + font-size: 14px; + color: #FFF; + margin: 0; + padding: 0; + padding-top: 10px; } } + +div.error { + background: image-url("error-message.png"); + width: 237px; + height: 35px; + font-size: 12px; + position: absolute; + margin-top: -159px; + margin-left: 582px; + display: none; + p { + margin: 0; + padding: 0; + padding-top: 7px; + text-align: center; } } + +/* Footer */ + +footer { + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; + ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: center; + li { + display: inline; + a { + font-size: 12px; + color: #FFF; + text-decoration: none; + &:hover { + text-decoration: underline; } } } } } \ No newline at end of file diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 9dbb1585a..1ab3f7236 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -1,22 +1,30 @@ -#block-login.block - %h2= title t("layout.sessions.sign_in_header") - .content.login - - if flash.present? - .flash - - flash.each do |key, value| - .message{ :title => key.to_s.humanize, :class => (key == :alert ? "error" : key) } - %p= value +.wrap + %nav + %p= link_to t("layout.devise.shared_links.sign_up"), new_register_request_path + / Top block + %header + .logo + / Page + %article + - is_error = flash.first.first == :alert # Trash = form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => "form login" }) do |f| - .group.wat-cf - .left= f.label :login, :class => "label right" - .right= f.text_field :login, :class => "text_field" - .group.wat-cf - .left= f.label :password, :class => "label right" - .right= f.password_field :password, :class => "text_field" - .group.navform.wat-cf - .right - %button.button{:type => "submit"} - = image_tag 'code.png', :alt => "Save" - = t("layout.login") - %span.text_button_padding - = render :partial => "devise/shared/links" + %h1= title t("layout.sessions.sign_in_header") + = f.text_field :login, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='Логин или email';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='Логин или email'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => "Логин или email" + %br/ + = f.password_field :password, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='Пароль';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='Пароль'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "password", :value => "Пароль" + %br/ + .registration + .remember + .check + %span#niceCheckbox1.niceCheck{:onclick => "changeCheck(this)"} + = f.check_box :remember_me + .text=t('devise.sessions.remember_me') + .in=f.submit t('layout.devise.shared_links.sign_in'), :class => 'button disabled', :id => 'btnLogin' + %div{:style => "clear: both;"} + .hr + .both + #hint.error{:style => is_error ? 'display: block;' : ''} + %p=t('devise.failure.invalid') + .forgot + .password + %p= link_to t("layout.devise.shared_links.forgot_password"), new_password_path(resource_name) \ No newline at end of file diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 4b120a493..3984c4fb7 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -3,13 +3,11 @@ %head %meta{:content => "text/html; charset=utf-8", "http-equiv" => "content-type"} = display_meta_tags :site => APP_CONFIG['project_name'] - = stylesheet_link_tag "application" - = javascript_include_tag "application" + = stylesheet_link_tag "login" + = javascript_include_tag "login" = csrf_meta_tag %body - #container - #box - = render :partial => "layouts/flashes" - = yield + -# render :partial => "layouts/flashes" + = yield = render 'layouts/counters' unless current_user.try(:admin?) diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index 8babbd620..66b687629 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -22,6 +22,7 @@ en: sessions: signed_in: 'Signed in successfully.' signed_out: 'Signed out successfully.' + remember_me: 'Remember me' passwords: send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.' updated: 'Your password was changed successfully. You are now signed in.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 3c6762372..72953910d 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -24,6 +24,7 @@ ru: sessions: signed_in: "Вход в систему выполнен." signed_out: "Выход из системы выполнен." + remember_me: 'Запомнить меня' passwords: send_instructions: "В течение нескольких минут вы получите e-mail с инструкциями по восстановлению вашего пароля." updated: "Ваш пароль изменён. Теперь вы вошли в систему." From c55d6d097efa8401c11de8c968cddcfa98d45976 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 10:41:25 +0600 Subject: [PATCH 21/87] [refs #228] fix registration link --- app/assets/stylesheets/login.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss index 53433c48d..7f55b17fa 100644 --- a/app/assets/stylesheets/login.scss +++ b/app/assets/stylesheets/login.scss @@ -226,12 +226,13 @@ nav { background: image-url("registration.png") no-repeat; float: right; cursor: pointer; - p { + a { font-size: 14px; color: #FFF; margin: 0; padding: 0; - padding-top: 10px; } } + padding-top: 10px; + text-decoration: none;} } div.error { background: image-url("error-message.png"); From 8126b4956735cbb3514b6b20e562df1ddc2748a2 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 11:43:40 +0600 Subject: [PATCH 22/87] [refs #228] fix I18n --- app/assets/javascripts/login.js | 116 ++++++++++-------------- app/views/devise/sessions/new.html.haml | 12 ++- config/locales/devise.en.yml | 2 + config/locales/devise.ru.yml | 2 + 4 files changed, 60 insertions(+), 72 deletions(-) diff --git a/app/assets/javascripts/login.js b/app/assets/javascripts/login.js index 3cade2375..975ee33d8 100644 --- a/app/assets/javascripts/login.js +++ b/app/assets/javascripts/login.js @@ -1,75 +1,55 @@ -//= require jquery -//= require jquery_ujs - -$(document).ready(function() { - function logIn() { - $('#new_user').submit(); - //~ $("#hint").fadeIn("slow"); - //~ document.getElementById("user_login").className="registartion-input-error"; - //~ document.getElementById("user_password").className="registartion-input-error"; - } -}); - - function disError(elem) { - $("#hint").fadeOut("fast"); - if (document.getElementById("user_login").className=="registartion-input-error") { - if (this.id=="user_login") { - document.getElementById("user_login").className="registartion-input-focus"; - } else { - document.getElementById("user_login").className="registartion-input-no-focus"; - } - } - if (document.getElementById("user_password").className=="registartion-input-error") { - if (this.id=="user_password") { - document.getElementById("user_password").className="registartion-input-focus"; - } else { - document.getElementById("user_password").className="registartion-input-no-focus"; - } - } - buttonCheck(); - } - - function buttonCheck() { - if ((document.getElementById("user_login").value!="")&&(document.getElementById("user_login").value!="Логин или email")&&(document.getElementById("user_password").value!="")&&(document.getElementById("user_password").value!="Пароль")) { - document.getElementById("btnLogin").className = "button"; - +function disError(elem) { + $("#hint").fadeOut("fast"); + if (document.getElementById("user_login").className=="registartion-input-error") { + if (this.id=="user_login") { + document.getElementById("user_login").className="registartion-input-focus"; } else { - document.getElementById("btnLogin").className = "button disabled"; + document.getElementById("user_login").className="registartion-input-no-focus"; } } - -function changeCheck(el) - -{ - var el = el, - input = el.getElementsByTagName("input")[0]; - - if(input.checked) - { - el.style.backgroundPosition="0 0"; - input.checked=false; - } - else - { - el.style.backgroundPosition="0 -17px"; - input.checked=true; - } - return true; -} -function startChangeCheck(el) - -{ - var el = el, - input = el.getElementsByTagName("input")[0]; - if(input.checked) - { - el.style.backgroundPosition="0 -17px"; - } - return true; + if (document.getElementById("user_password").className=="registartion-input-error") { + if (this.id=="user_password") { + document.getElementById("user_password").className="registartion-input-focus"; + } else { + document.getElementById("user_password").className="registartion-input-no-focus"; + } + } + buttonCheck(); } -function startCheck() -{ +function buttonCheck() { + var login_default = document.getElementById("login_default").value; + var pass_default = document.getElementById("password_default").value; + if ((document.getElementById("user_login").value!="")&&(document.getElementById("user_login").value!=login_default)&& + (document.getElementById("user_password").value!="")&&(document.getElementById("user_password").value!=pass_default)) { + document.getElementById("btnLogin").className = "button"; + } else { + document.getElementById("btnLogin").className = "button disabled"; + } +} - startChangeCheck(document.getElementById("niceCheckbox1")); +function changeCheck(el) { + var el = el, + input = el.getElementsByTagName("input")[0]; + + if(input.checked) { + el.style.backgroundPosition="0 0"; + input.checked=false; + } + else { + el.style.backgroundPosition="0 -17px"; + input.checked=true; + } + return true; +} + +function startChangeCheck(el) { + var el = el, + input = el.getElementsByTagName("input")[0]; + if(input.checked) { el.style.backgroundPosition="0 -17px"; } + return true; +} + +function startCheck() { + startChangeCheck(document.getElementById("niceCheckbox1")); } \ No newline at end of file diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 1ab3f7236..5aebcb2d7 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -1,17 +1,21 @@ .wrap %nav - %p= link_to t("layout.devise.shared_links.sign_up"), new_register_request_path + %a{:href => new_register_request_path} + %p=t("layout.devise.shared_links.sign_up") / Top block %header .logo / Page %article - - is_error = flash.first.first == :alert # Trash + - is_error = flash.try(:first).try(:first) == :alert # Trash + - login = t('devise.sessions.login'); password = t('devise.sessions.password') + =hidden_field_tag :login_default, login + =hidden_field_tag :password_default, password = form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => "form login" }) do |f| %h1= title t("layout.sessions.sign_in_header") - = f.text_field :login, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='Логин или email';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='Логин или email'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => "Логин или email" + = f.text_field :login, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='#{login}';this.className='registartion-input';} else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{login}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => login %br/ - = f.password_field :password, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='Пароль';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='Пароль'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "password", :value => "Пароль" + = f.password_field :password, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='#{password}';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{password}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "password", :value => password %br/ .registration .remember diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index 66b687629..c2925fdc3 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -23,6 +23,8 @@ en: signed_in: 'Signed in successfully.' signed_out: 'Signed out successfully.' remember_me: 'Remember me' + login: 'Login or email' + password: 'Password' passwords: send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.' updated: 'Your password was changed successfully. You are now signed in.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 72953910d..2c533b6b5 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -25,6 +25,8 @@ ru: signed_in: "Вход в систему выполнен." signed_out: "Выход из системы выполнен." remember_me: 'Запомнить меня' + login: 'Логин или email' + password: 'Пароль' passwords: send_instructions: "В течение нескольких минут вы получите e-mail с инструкциями по восстановлению вашего пароля." updated: "Ваш пароль изменён. Теперь вы вошли в систему." From c9067da374d1f664f3634525df735f2f2c139e3b Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 12:40:21 +0600 Subject: [PATCH 23/87] [refs #233] fix users menu toggle --- app/assets/javascripts/all.js | 68 +++++++++++++++-------------------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/app/assets/javascripts/all.js b/app/assets/javascripts/all.js index f8b00c3e4..e62cb613e 100644 --- a/app/assets/javascripts/all.js +++ b/app/assets/javascripts/all.js @@ -1,44 +1,34 @@ +$(document).ready(function() { + var dropbox = $("#droplist"); -var droplist = function() { - $user_menu.slideToggle("slow"); -} + function loadMessages() { + $("#messages-new").fadeOut("slow"); + $("#new-messages").delay(700).fadeIn("slow"); + } -function loadMessages() { - $("#messages-new").fadeOut("slow"); - $("#new-messages").delay(700).fadeIn("slow"); -} -function loadOldMessages() { - $("#old-messages").fadeIn("slow"); -} + function loadOldMessages() { + $("#old-messages").fadeIn("slow"); + } -$(document).ready(function(){ - $user_menu = $('#droplist'); - $user_menu.die('click'); - - $('div.information > div.user').live('click', function() { - if ($user_menu.is(":hidden")) { - droplist(); - } - }); - - $('div.information > div.profile > a').live('click', function(e) { - e.preventDefault(); - }); - -}); - -$(document).click(function(e) { - if (!$user_menu.is(":hidden") && ($(e.target).parent().attr('id') != $user_menu.attr('id'))) { - droplist(); + $(document).click(function() { + var dl = dropbox.css("height"); + var dl2 = dropbox.css("display"); + if ((dl2 == "block")&&(dl == "91px")) { + dropbox.slideUp("slow"); } -}); + }); -function showActivity(elem) { - $("#activity-bottom"+elem).slideToggle("slow"); - var img = $("#expand" + elem).attr("src"); - if (img == "assets/expand-gray.png") { - $("#expand" + elem).attr("src","assets/expand-gray2.png"); - } else { - $("#expand" + elem).attr("src","assets/expand-gray.png"); - } -} + function showActivity(elem) { + $("#activity-bottom"+elem).slideToggle("slow"); + var img = document.getElementById("expand" + elem).className; + if (img == "expand-gray-down") { + document.getElementById("expand" + elem).className = "expand-gray-up"; + } else { + document.getElementById("expand" + elem).className = "expand-gray-down"; + } + } + + $('div.information > div.user').live('click', function() { + dropbox.slideToggle("slow"); + }); +}); From ad7be07f2fc518ccc25a7a08c2e4ab0abc64b9e6 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 12:51:10 +0600 Subject: [PATCH 24/87] [refs #228] fix showing error --- app/views/devise/sessions/new.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 5aebcb2d7..985798573 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -7,7 +7,7 @@ .logo / Page %article - - is_error = flash.try(:first).try(:first) == :alert # Trash + - is_error = (flash.try(:first).try(:first) == :alert && flash.try(:first).try(:last) == t('devise.failure.invalid')) # Trash - login = t('devise.sessions.login'); password = t('devise.sessions.password') =hidden_field_tag :login_default, login =hidden_field_tag :password_default, password From e7187cfc8e37dde88a77fdb0012def6bc07f75a7 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 13:05:55 +0600 Subject: [PATCH 25/87] [refs #228] add logins to precompile array --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index e815c1410..e12d69c88 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -62,7 +62,7 @@ Rosa::Application.configure do config.assets.digest = true # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) - config.assets.precompile += %w() + config.assets.precompile += %w(login.css login.js) end # require 'stub_xml_rpc' From d966c80540c82dbef8ba4af7e4ad23c3992cf225 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 13:27:35 +0600 Subject: [PATCH 26/87] [refs #230] fix devise for undefined method 'render_with_scope' --- lib/preregistration/devise/preregistration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/preregistration/devise/preregistration.rb b/lib/preregistration/devise/preregistration.rb index da2635184..aad34b80e 100644 --- a/lib/preregistration/devise/preregistration.rb +++ b/lib/preregistration/devise/preregistration.rb @@ -19,7 +19,7 @@ module Preregistration resource.email = req.email if resource.respond_to? :email @invitation_token = req.token - respond_with_navigational(resource){ render_with_scope :new } + respond_with_navigational(resource){ render :new } else redirect_to new_register_request_path end From 80b594b986d9d9912510abfd70a4732bdcc05d90 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 14:49:04 +0600 Subject: [PATCH 27/87] [refs #230] fix same bug with devise --- lib/preregistration/devise/preregistration.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/preregistration/devise/preregistration.rb b/lib/preregistration/devise/preregistration.rb index aad34b80e..8b32ffa0c 100644 --- a/lib/preregistration/devise/preregistration.rb +++ b/lib/preregistration/devise/preregistration.rb @@ -46,7 +46,7 @@ module Preregistration end else clean_up_passwords(resource) - respond_with_navigational(resource) { render_with_scope :new } + respond_with_navigational(resource) { render :new } end end From 89a5cf56b2cea65bcad79ef0557260c52868ae80 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 15:23:59 +0600 Subject: [PATCH 28/87] [refs #228] fix submit button style --- app/assets/stylesheets/login.scss | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss index 7f55b17fa..6bd18c38d 100644 --- a/app/assets/stylesheets/login.scss +++ b/app/assets/stylesheets/login.scss @@ -108,9 +108,9 @@ input.button { height: 25px; width: 106px; text-decoration: none; - padding: 5px 27px 8px 27px; - height: 28px; - width: 110px; } + padding: 3px 27px 8px 27px; + height: 25px; + width: auto; } a.button:hover, input.button:hover { background: #1874b6; @@ -126,10 +126,11 @@ a.button { background: image-url("button-green-disabled.png"); cursor: default; } } -input.button:disabled { - background: #125687; - background: image-url("button-green-disabled.png"); - cursor: default; } +input.button { + &:disabled, &.disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } } article h1 { color: #FFF; From 9aa561a591a67c9fd661c78f8ef9266524404c5b Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 13:27:35 +0600 Subject: [PATCH 29/87] [refs #230] fix devise for undefined method 'render_with_scope' --- lib/preregistration/devise/preregistration.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/preregistration/devise/preregistration.rb b/lib/preregistration/devise/preregistration.rb index da2635184..8b32ffa0c 100644 --- a/lib/preregistration/devise/preregistration.rb +++ b/lib/preregistration/devise/preregistration.rb @@ -19,7 +19,7 @@ module Preregistration resource.email = req.email if resource.respond_to? :email @invitation_token = req.token - respond_with_navigational(resource){ render_with_scope :new } + respond_with_navigational(resource){ render :new } else redirect_to new_register_request_path end @@ -46,7 +46,7 @@ module Preregistration end else clean_up_passwords(resource) - respond_with_navigational(resource) { render_with_scope :new } + respond_with_navigational(resource) { render :new } end end From 75a0069f72dfca0b8f09f97e7a5de0939bb3653c Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 17:38:13 +0600 Subject: [PATCH 30/87] [refs #230] add red borders to invalid attributes --- app/assets/stylesheets/registration.scss | 211 +++++++++++++++++++ app/views/devise/registrations/new.html.haml | 88 ++++---- app/views/layouts/sessions.html.haml | 8 +- config/locales/en.yml | 2 + config/locales/ru.yml | 6 +- 5 files changed, 261 insertions(+), 54 deletions(-) create mode 100644 app/assets/stylesheets/registration.scss diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/registration.scss new file mode 100644 index 000000000..178e1299e --- /dev/null +++ b/app/assets/stylesheets/registration.scss @@ -0,0 +1,211 @@ +html, body { + margin: 0; + padding: 0; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + color: #565667; + background: #1f60a1 image-url("bg.png") repeat-x; + min-width: 940px; + min-height: 300px; + text-align: center; + height: 100%; } + +header, section, footer, aside, nav, article, menu { + display: block; } + +input { + &[type="text"]:focus, &[type="password"]:focus, &:focus { + outline: none; } } + +select:focus { + outline: none; } + +a img { + border: none; } + +.wrap { + width: 940px; + margin: 0 auto; + text-align: center; + min-height: 95%; } + +.both { + clear: both; } + +/* Header */ + +header div { + &.logo { + background: image-url("logo.png") no-repeat 50% 100%; + height: 89px; + width: 233px; + margin: 0 auto; + text-align: center; + padding-top: 12%; } + &.text { + color: #FFF; + font-size: 28px; + width: 800px; + text-align: left; + margin-left: 90px; + margin-top: 50px; + font-family: Arial; + text-shadow: 0px 1px 1px #000000; + filter: dropshadow(color = black, offx = 0, offy = 1); + padding-left: 0px; } } + +.niceCheck { + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox.png"); + input { + display: none; } } + +/* Content */ + +article { + width: 380px; + height: 254px; + background: #1c394c image-url("bg-signup.png") repeat-x; + border-radius: 5px; + border: 1px solid #38658c; + margin: 0 auto; + text-align: center; + margin-top: 75px; + -webkit-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); } + +a.button, input.button { + background: #125687; + background: image-url("button-green-normal.png"); + border-radius: 3px; + color: #FFF; + font-family: Tahoma; + font-size: 12px; + -webkit-font-smoothing: antialiased; + font-weight: normal; + padding: 5px 25px; + text-align: center; + border: none; + height: 25px; + width: 106px; + text-decoration: none; } + +article div { + &.left { + float: left; + font-size: 12px; + color: #FFF; + margin-left: 15px; + margin-top: 16px; } + &.right { + float: right; + margin-right: 15px; + padding-bottom: 2px; } } + +.first { + padding-top: 5px; } + +input.button { + padding: 3px 27px 8px 27px; + height: 25px; + width: auto; } + +a.button:hover, input.button:hover { + background: #1874b6; + background: image-url("button-green-hover.png"); + cursor: pointer; } + +a.button:active, input.button:active { + background: image-url("button-green-press.png"); } + +a.button { + &:disabled, &.disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } } + +input.button { + &:disabled, &.disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } } + +article h1 { + color: #FFF; + font-size: 18px; + font-weight: normal; + font-family: Tahoma; + margin-bottom: 5px; } + +.registartion-input, .registartion-input-focus, .registartion-input-error, .registartion-input-no-focus { + height: 24px; + width: 217px; + border: 1px solid #8199a9; + border-radius: 2px; + color: #cfcfcf; + font-family: Tahoma; + font-size: 12px; + padding-left: 10px; + margin-top: 10px; } + +.registartion-input-focus, .registartion-input-focus-signup { + color: #575756; + -webkit-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); + -moz-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); + box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); } + +.registartion-input-no-focus, .registartion-input-no-focus-signup { + color: #575756; } + +.registartion-input-error, .registartion-input-error-signup { + border: 1px solid #bd4d40; + outline: 1px solid #bd4d40; + outline-offset: -2px; } + +div.in { + float: right; + margin-right: 15px; + margin-top: 12px; } + +div.error { + background: image-url("error-message.png"); + width: 237px; + height: 35px; + font-size: 12px; + position: absolute; + margin-top: -159px; + margin-left: 645px; + display: none; + p { + margin: 0; + padding: 0; + padding-top: 7px; + text-align: center; } } + +/* Footer */ + +footer { + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; + ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: center; + li { + display: inline; + a { + font-size: 12px; + color: #FFF; + text-decoration: none; + &:hover { + text-decoration: underline; } } } } } \ No newline at end of file diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index 43a0aed4c..4130f6cef 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -1,52 +1,40 @@ -#block-signup.block - %h2= title t("devise.registrations.sign_up_header") - .content +.wrap + / Top block + %header + .logo + / Page + - uname_error = name_error = email_error = password_error = password_confirm_error = nil + - if resource.errors.present? # Trash + .flash + - resource.errors.each do |attr, array| + -uname_error = array if attr == :uname + -name_error = array if attr == :name + -email_error = array if attr == :email + -password_error = array if attr == :password + -password_confirm_error = array if attr == :password_confirmation + %article = form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => "form" }) do |f| = hidden_field_tag :invitation_token, @invitation_token - - if resource.errors.present? - .flash - .message.error= resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe - - .group.wat-cf - .left - = f.label :uname, :class => "label" - .right - = f.text_field :uname, :class => "text_field" - - .group.wat-cf - .left - = f.label :email, :class => "label" - .right - = f.text_field :email, :class => "text_field", :readonly => 'readonly' - - .group.wat-cf - .left - = f.label :name, :class => "label" - .right - = f.text_field :name, :class => "text_field" - - - if resource.authentications.blank? - .group.wat-cf - .left - = f.label :password, :class => "label" - .right - = f.password_field :password, :class => "text_field" - - .group.wat-cf - .left - = f.label :password_confirmation, :class => "label" - .right - = f.password_field :password_confirmation, :class => "text_field" - - .group.wat-cf - .left - = f.label :language, :class => "label" - .right - = f.select :language, User::LANGUAGES_FOR_SELECT - - .group.navform.wat-cf - %button.button{:type => "submit"} - = image_tag("choose.png", :alt => t("devise.registrations.sign_up_header")) - = t("devise.registrations.sign_up_header") - %span.text_button_padding - = render :partial => "devise/shared/links" + .left.first=t('activerecord.attributes.user.uname') + .right.first + = f.text_field :uname, :id => 'login', :class => "registartion-input #{uname_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .left=t('activerecord.attributes.user.name') + .right + = f.text_field :name, :id => 'name', :class => "registartion-input #{name_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .left=t('activerecord.attributes.user.email') + .right + = f.text_field :email, :id => 'email', :readonly => 'readonly', :class => "registartion-input #{email_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .left=t('activerecord.attributes.user.password') + .right + = f.text_field :password, :id => 'pass', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .left=t('activerecord.attributes.user.password_confirm') + .right + = f.text_field :password_confirmation, :id => 'pass2', :class => "registartion-input #{password_confirm_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .in + =f.submit t("layout.devise.shared_links.sign_up"), :class => 'button', :id => 'btnLogin' + .both diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 3984c4fb7..44bcb5f5c 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -3,11 +3,15 @@ %head %meta{:content => "text/html; charset=utf-8", "http-equiv" => "content-type"} = display_meta_tags :site => APP_CONFIG['project_name'] - = stylesheet_link_tag "login" - = javascript_include_tag "login" + - if controller_name == 'sessions' && action_name == 'new' + = stylesheet_link_tag "login" + = javascript_include_tag "login" + - elsif controller_name == 'registrations' && ['new', 'create'].include?(action_name) + = stylesheet_link_tag "registration" = csrf_meta_tag %body -# render :partial => "layouts/flashes" = yield = render 'layouts/counters' unless current_user.try(:admin?) + %footer= render "layouts/menu/bottom" diff --git a/config/locales/en.yml b/config/locales/en.yml index 1a151c595..ce01048fb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -766,6 +766,8 @@ en: updated_at: Updated role: System role language: Language + password: Password + password_confirm: Confirmation product_build_list: id: Id diff --git a/config/locales/ru.yml b/config/locales/ru.yml index d2f926081..171bb0f23 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -54,7 +54,7 @@ ru: devise: shared_links: sign_in: Войти - sign_up: Зарегистрироваться + sign_up: Регистрация forgot_password: Забыли пароль? confirm_again: Не получили инструкции по подтверждению? unlock: Не получили инструкции по разблокировке? @@ -637,7 +637,7 @@ ru: name: Имя login: Псевдоним или Email email: Email - uname: Псевдоним + uname: Никнейм ssh_key: SSH ключ current_password: Текущий пароль role: Роль @@ -645,6 +645,8 @@ ru: updated_at: Обновлен role: Роль в системе language: Язык + password: Пароль + password_confirm: Повторите пароль product_build_list: id: Id From 6da02b6f4861d33c95b23d917d1615a37bc3345f Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 17:46:19 +0600 Subject: [PATCH 31/87] [refs #230] add registration to precompile list --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 45df24379..d8e51606f 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -62,7 +62,7 @@ Rosa::Application.configure do config.assets.digest = true # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) - config.assets.precompile += %w(login.css login.js) + config.assets.precompile += %w(login.css login.js registration.css) end # require 'stub_xml_rpc' From cefaa902b179f5858bdb1792e11104aa4909e33c Mon Sep 17 00:00:00 2001 From: Pavel Chipiga Date: Wed, 29 Feb 2012 16:04:04 +0200 Subject: [PATCH 32/87] Apply new design for projects build monitoring page. Improve and refactor filters. Improve abilities. Switch off old statuses. Separate build_lists translations. Refactor and remove duplicate translations. Refactor and code cleanup. Fix specs. Apply layout class helper. Refs #223 --- app/assets/stylesheets/custom.scss | 4 + app/controllers/build_lists_controller.rb | 13 +- app/helpers/application_helper.rb | 11 + app/models/ability.rb | 6 +- app/models/build_list.rb | 9 +- app/models/build_list/filter.rb | 8 +- app/views/build_lists/_build_list.html.haml | 9 + app/views/build_lists/_build_lists.html.haml | 25 -- app/views/build_lists/_filter.html.haml | 50 --- app/views/build_lists/_sidebar.html.haml | 61 +++- app/views/build_lists/_sub_menu.html.haml | 6 + app/views/build_lists/index.html.haml | 43 +-- app/views/issues/new.html.haml | 2 - app/views/layouts/application.html.haml | 2 +- config/locales/build_list.en.yml | 107 +++++++ config/locales/build_list.ru.yml | 107 +++++++ config/locales/en.yml | 308 ------------------- config/locales/ru.yml | 98 ------ db/schema.rb | 144 +++++---- 19 files changed, 415 insertions(+), 598 deletions(-) create mode 100644 app/views/build_lists/_build_list.html.haml delete mode 100644 app/views/build_lists/_build_lists.html.haml delete mode 100644 app/views/build_lists/_filter.html.haml create mode 100644 app/views/build_lists/_sub_menu.html.haml create mode 100644 config/locales/build_list.en.yml create mode 100644 config/locales/build_list.ru.yml diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index f77220532..d95773f2b 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -128,3 +128,7 @@ article h3 { article div.date-block div.date { height: 52px; } + +.date_select { + select {margin:3px 0px; padding:0px;} +} diff --git a/app/controllers/build_lists_controller.rb b/app/controllers/build_lists_controller.rb index 9bed99bbf..7b17c4899 100644 --- a/app/controllers/build_lists_controller.rb +++ b/app/controllers/build_lists_controller.rb @@ -19,18 +19,11 @@ class BuildListsController < ApplicationController params[:filter].each do |k,v| new_params[:filter][k] = v unless v.empty? end - redirect_to build_lists_path(new_params) else - filter_params = params[:filter] || {} - if @project - @action_url = project_build_lists_path(@project) - else - @action_url = build_lists_path - end - - @filter = BuildList::Filter.new(@project, filter_params) - @build_lists = @filter.find.accessible_by(current_ability).recent.paginate :page => params[:page] + @action_url = @project ? project_build_lists_path(@project) : build_lists_path + @filter = BuildList::Filter.new(@project, current_user, params[:filter] || {}) + @build_lists = @filter.find.recent.paginate :page => params[:page] @build_server_status = begin BuildServer.get_status diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 05055fa4f..5cd649a41 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -9,4 +9,15 @@ module ApplicationHelper return title end + + def layout_class + case + when params[:controller] == 'issues' && params[:action] == 'new' + 'nopadding' + when params[:controller] == 'build_lists' + 'slim' + else + nil + end + end end diff --git a/app/models/ability.rb b/app/models/ability.rb index bca5689a6..56917791d 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -55,12 +55,14 @@ class Ability #can :create, AutoBuildList #can [:index, :destroy], AutoBuildList, :project_id => user.own_project_ids + can [:read, :owned], BuildList, :user_id => user.id can :read, BuildList, :project => {:visibility => 'open'} - can :read, BuildList, :project => {:owner_type => 'User', :owner_id => user.id} - can :read, BuildList, :project => {:owner_type => 'Group', :owner_id => user.group_ids} + can [:read, :related], BuildList, :project => {:owner_type => 'User', :owner_id => user.id} + can [:read, :related], BuildList, :project => {:owner_type => 'Group', :owner_id => user.group_ids} can(:read, BuildList, read_relations_for('build_lists', 'projects')) {|build_list| can? :read, build_list.project} can(:create, BuildList) {|build_list| can? :write, build_list.project} can(:publish, BuildList) {|build_list| build_list.can_publish? && can?(:write, build_list.project)} + can(:cancel, BuildList) {|build_list| build_list.can_cancel? && can?(:write, build_list.project)} can :read, Platform, :visibility => 'open' can :read, Platform, :owner_type => 'User', :owner_id => user.id diff --git a/app/models/build_list.rb b/app/models/build_list.rb index 4da5118a8..6fdedf10e 100644 --- a/app/models/build_list.rb +++ b/app/models/build_list.rb @@ -35,8 +35,9 @@ class BuildList < ActiveRecord::Base BuildServer::PLATFORM_PENDING, BuildServer::PROJECT_NOT_FOUND, BuildServer::PROJECT_VERSION_NOT_FOUND, - BuildServer::BINARY_TEST_FAILED, - BuildServer::DEPENDENCY_TEST_FAILED ] + # BuildServer::BINARY_TEST_FAILED, + # BuildServer::DEPENDENCY_TEST_FAILED + ] HUMAN_STATUSES = { WAITING_FOR_RESPONSE => :waiting_for_response, BUILD_CANCELED => :build_canceled, @@ -51,8 +52,8 @@ class BuildList < ActiveRecord::Base BuildServer::PLATFORM_PENDING => :platform_pending, BuildServer::PROJECT_NOT_FOUND => :project_not_found, BuildServer::PROJECT_VERSION_NOT_FOUND => :project_version_not_found, - BuildServer::DEPENDENCY_TEST_FAILED => :dependency_test_failed, - BuildServer::BINARY_TEST_FAILED => :binary_test_failed + # BuildServer::DEPENDENCY_TEST_FAILED => :dependency_test_failed, + # BuildServer::BINARY_TEST_FAILED => :binary_test_failed } scope :recent, order("#{table_name}.updated_at DESC") diff --git a/app/models/build_list/filter.rb b/app/models/build_list/filter.rb index 70b491286..2b21aec25 100644 --- a/app/models/build_list/filter.rb +++ b/app/models/build_list/filter.rb @@ -1,7 +1,8 @@ # -*- encoding : utf-8 -*- class BuildList::Filter - def initialize(project, options = {}) + def initialize(project, user, options = {}) @project = project + @user = user set_options(options) end @@ -11,6 +12,7 @@ class BuildList::Filter if @options[:bs_id] build_lists = build_lists.where(:bs_id => @options[:bs_id]) else + build_lists = build_lists.accessible_by(::Ability.new(@user), @options[:ownership].to_sym) if @options[:ownership] build_lists = build_lists.for_status(@options[:status]) if @options[:status] build_lists = build_lists.scoped_to_arch(@options[:arch_id]) if @options[:arch_id] build_lists = build_lists.scoped_to_project_version(@options[:project_version]) if @options[:project_version] @@ -25,7 +27,7 @@ class BuildList::Filter end end - build_lists.recent + build_lists end def respond_to?(name) @@ -41,6 +43,7 @@ class BuildList::Filter def set_options(options) @options = HashWithIndifferentAccess.new(options.reverse_merge({ + :ownership => nil, :status => nil, :created_at_start => nil, :created_at_end => nil, @@ -53,6 +56,7 @@ class BuildList::Filter :project_name => nil })) + @options[:ownership] = @options[:ownership].presence || 'index' @options[:status] = @options[:status].present? ? @options[:status].to_i : nil @options[:created_at_start] = build_date_from_params(:created_at_start, @options) @options[:created_at_end] = build_date_from_params(:created_at_end, @options) diff --git a/app/views/build_lists/_build_list.html.haml b/app/views/build_lists/_build_list.html.haml new file mode 100644 index 000000000..2af6a086e --- /dev/null +++ b/app/views/build_lists/_build_list.html.haml @@ -0,0 +1,9 @@ +%tr{:id => "row#{build_list_counter}"} + %td= link_to (build_list.bs_id.present? ? build_list.bs_id : t("layout.build_lists.bs_id_not_set")), build_list + %td= build_list.human_status + %td= link_to build_list.project_version, "#" + %td= link_to build_list.project.name, build_list.project + %td= build_list.arch.name + %td= link_to build_list.user.fullname, build_list.user + %td= link_to image_tag('x.png', :class => 'delete-row', :id => "delete-row#{build_list_counter}"), cancel_build_list_path(build_list), :method => :put, :confirm => t('layout.confirm') if can?(:cancel, build_list) + %td= build_list.notified_at \ No newline at end of file diff --git a/app/views/build_lists/_build_lists.html.haml b/app/views/build_lists/_build_lists.html.haml deleted file mode 100644 index a51c428f3..000000000 --- a/app/views/build_lists/_build_lists.html.haml +++ /dev/null @@ -1,25 +0,0 @@ -%table.table - %tr - %th.first= t("activerecord.attributes.build_list.bs_id") - %th= t("activerecord.attributes.build_list.status") - %th= t("activerecord.attributes.build_list.project_version") - %th= t("activerecord.attributes.build_list.project") - %th= t("activerecord.attributes.build_list.arch") - %th= t("activerecord.attributes.build_list.user") - - unless @project - %th= t("layout.build_lists.cancel_button_header") - %th.last= t("activerecord.attributes.build_list.notified_at") - - - build_lists.each do |build_list| - %tr{:class => cycle("odd", "even")} - %td= link_to (build_list.bs_id.present? ? build_list.bs_id : t("layout.build_lists.bs_id_not_set")), build_list - %td= build_list.human_status - %td= link_to build_list.project_version, "#" - %td= link_to build_list.project.name, project_path(build_list.project) - %td= build_list.arch.name - %td= build_list.user.try(:fullname) - - unless @project - %td= link_to t("layout.build_lists.cancel_button"), cancel_build_list_path(build_list), :method => "put", :confirm => t("layout.confirm") if build_list.can_cancel? - %td.last= build_list.notified_at - -= will_paginate build_lists diff --git a/app/views/build_lists/_filter.html.haml b/app/views/build_lists/_filter.html.haml deleted file mode 100644 index 928716066..000000000 --- a/app/views/build_lists/_filter.html.haml +++ /dev/null @@ -1,50 +0,0 @@ -%h2.title= t("layout.build_lists.filter_header") - -= form_for :filter, :url => @action_url, :html => { :method => :post, :class => :form } do |f| - .columns.wat-cf - .column.left - .group - = f.label :status, t("activerecord.attributes.build_list.status"), :class => :label - = f.select :status, BuildList::STATUSES.collect{|status| [BuildList.human_status(status), status]}, :include_blank => true, :selected => @filter.status - .group - = f.label :arch_id, t("activerecord.attributes.build_list.arch"), :class => :label - = f.select :arch_id, Arch.recent.collect{|arch| [arch.name, arch.id]}, :include_blank => true, :selected => @filter.arch_id - .column.right - - if @project - .group - = f.label :project_version, t("activerecord.attributes.build_list.project_version"), :class => :label - = f.select :project_version, @project.versions, :include_blank => true, :selected => @filter.project_version - .group - = f.label :is_circle, t("activerecord.attributes.build_list.is_circle"), :class => :label - = f.select :is_circle, [[t("layout.yes_"), 1], [t("layout.no_"), 0]], :include_blank => true, :selected => @filter.is_circle.present? ? (@filter.is_circle ? "1" : "0") : nil - - .columns.wat-cf - .column.left - .group - = f.label :created_at_start, t("layout.build_lists.created_at_start"), :class => :label - = f.date_select(:created_at_start, :include_blank => true, :selected => @filter.created_at_start) - .group - = f.label :notified_at_start, t("layout.build_lists.notified_at_start"), :class => :label - = f.date_select(:notified_at_start, :include_blank => true, :selected => @filter.notified_at_start) - .column.right - .group - = f.label :created_at_end, t("layout.build_lists.created_at_end"), :class => :label - = f.date_select(:created_at_end, :include_blank => true, :selected => @filter.created_at_end) - .group - = f.label :notified_at_end, t("layout.build_lists.notified_at_end"), :class => :label - = f.date_select(:notified_at_end, :include_blank => true, :selected => @filter.notified_at_end) - - .columns.wat-cf - .column.left - .group - = f.label :project_name, t("layout.build_lists.project_name_search"), :class => :label - = f.text_field :project_name, :class => :text_field - .column.right - .group - = f.label :bs_id, t("layout.build_lists.bs_id_search"), :class => :label - = f.text_field :bs_id, :class => :text_field - - .group.navform.wat-cf - %button.button{ :type => "submit" } - = image_tag("choose.png", :alt => "Save") - = t("layout.search") diff --git a/app/views/build_lists/_sidebar.html.haml b/app/views/build_lists/_sidebar.html.haml index 55d964a20..19cc34443 100644 --- a/app/views/build_lists/_sidebar.html.haml +++ b/app/views/build_lists/_sidebar.html.haml @@ -1,10 +1,53 @@ -.block.notice - %h3= t("layout.repositories.current_repository_header") - .content - - project.repositories.each do |repository| - %p= link_to "#{repository.name} (#{repository.platform.name})", platform_repository_path(repository.platform, repository) +- content_for :sidebar do + .bordered.nopadding + %h3= t('layout.build_lists.build_server_status.header') + .table + .lefter= t('layout.build_lists.build_server_status.client_count') + .righter= @build_server_status['client_count'] + .both + .table + .lefter= t('layout.build_lists.build_server_status.count_new_task') + .righter= @build_server_status['count_new_task'] + .both + .table + .lefter= t('layout.build_lists.build_server_status.count_build_task') + .righter= @build_server_status['count_build_task'] + .both -.block.notice - %h3= t("layout.projects.current_project_header") - .content - %p= link_to project.name, project \ No newline at end of file + = form_for :filter, :url => @action_url, :html => { :method => :post, :class => :form } do |f| + .bordered.nopadding + %h3= t("layout.build_lists.ownership.header") + .table + .lefter= f.radio_button :ownership, 'owned', :class => 'niceRadio', :id => 'myradio1' + .lefter= t("layout.build_lists.ownership.owned") + .both + .table + .lefter= f.radio_button :ownership, 'related', :class => 'niceRadio', :id => 'myradio2' + .lefter= t("layout.build_lists.ownership.related") + .both + .table + .lefter= f.radio_button :ownership, 'index', :class => 'niceRadio', :id => 'myradio3' + .lefter= t("layout.build_lists.ownership.index") + .both + .block + %h3.small= t("activerecord.attributes.build_list.status") + .lineForm.aside= f.select :status, BuildList::STATUSES.collect{|status| [BuildList.human_status(status), status]}, {:include_blank => true, :selected => @filter.status}, {:class => 'sel80 aside', :id => 'status', :tabindex => 2} + %h3.small= t("activerecord.attributes.build_list.is_circle") + .lineForm.aside= f.select :is_circle, [[t("layout.yes_"), 1], [t("layout.no_"), 0]], {:include_blank => true, :selected => @filter.is_circle.present? ? (@filter.is_circle ? "1" : "0") : nil}, {:class => 'sel80 aside', :id => 'recurrent', :tabindex => 2} + %h3.small= t("activerecord.attributes.build_list.arch") + .lineForm.aside= f.select :arch_id, Arch.recent.collect{|arch| [arch.name, arch.id]}, {:include_blank => true, :selected => @filter.arch_id}, {:class => 'sel80 aside', :id => 'architecture', :tabindex => 2} + %h3.small= t("layout.build_lists.created_at_start") + .date_select= f.date_select(:created_at_start, :include_blank => true, :selected => @filter.created_at_start) + %h3.small= t("layout.build_lists.created_at_end") + .date_select= f.date_select(:created_at_end, :include_blank => true, :selected => @filter.created_at_end) + %h3.small= t("layout.build_lists.notified_at_start") + .date_select= f.date_select(:notified_at_start, :include_blank => true, :selected => @filter.notified_at_start) + %h3.small= t("layout.build_lists.notified_at_end") + .date_select= f.date_select(:notified_at_end, :include_blank => true, :selected => @filter.notified_at_end) + %h3.small= t("layout.build_lists.project_name_search") + = f.text_field :project_name + %h3.small= t("layout.build_lists.bs_id_search") + = f.text_field :bs_id + %br + %br + = f.submit t("layout.search") \ No newline at end of file diff --git a/app/views/build_lists/_sub_menu.html.haml b/app/views/build_lists/_sub_menu.html.haml new file mode 100644 index 000000000..971b32575 --- /dev/null +++ b/app/views/build_lists/_sub_menu.html.haml @@ -0,0 +1,6 @@ +- content_for :sub_menu do + .left + %nav + %ul + %li= link_to t('layout.projects.list_header'), build_lists_path, :class => current_page?(:controller => 'build_lists') ? 'active' : nil + %li= link_to t('layout.products.list_header'), '#' \ No newline at end of file diff --git a/app/views/build_lists/index.html.haml b/app/views/build_lists/index.html.haml index 97e5375f9..f1f807094 100644 --- a/app/views/build_lists/index.html.haml +++ b/app/views/build_lists/index.html.haml @@ -1,28 +1,19 @@ -.block - - if @project - .secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.build_lists.current"), project_path(@project) + "#build_lists" - %li.active= link_to t("layout.build_lists.all"), project_build_lists_path(@project) +/ #myTable +%table.tablesorter{:cellpadding => "0", :cellspacing => "0"} + %thead + %tr + %th.lpadding16= t("activerecord.attributes.build_list.bs_id") + %th.lpadding16= t("activerecord.attributes.build_list.status") + %th.lpadding16= t("activerecord.attributes.build_list.project_version") + %th.lpadding16= t("activerecord.attributes.build_list.project") + %th.lpadding16= t("activerecord.attributes.build_list.arch") + %th.lpadding16= t("activerecord.attributes.build_list.user") + %th= t("layout.build_lists.action") + %th.lpadding16= t("activerecord.attributes.build_list.notified_at") + %tbody= render @build_lists +.both - .content - - unless @project - .inner - %h2= t('layout.build_lists.build_server_status.header') - .field - %span= t('layout.build_lists.build_server_status.client_count') + ":" - %span= @build_server_status['client_count'] - .field - %span= t('layout.build_lists.build_server_status.count_new_task') + ":" - %span= @build_server_status['count_new_task'] - .field - %span= t('layout.build_lists.build_server_status.count_build_task') + ":" - %span= @build_server_status['count_build_task'] - - .inner - = render :partial => "build_lists/filter", :action_url => @action_url += will_paginate @build_lists - .inner - = render :partial => "build_lists/build_lists", :object => @build_lists - -- content_for :sidebar, render('sidebar', :project => @project) if @project += render 'build_lists/sub_menu' += render 'build_lists/sidebar' diff --git a/app/views/issues/new.html.haml b/app/views/issues/new.html.haml index befc4fb0f..cf1a70fc2 100644 --- a/app/views/issues/new.html.haml +++ b/app/views/issues/new.html.haml @@ -1,7 +1,5 @@ -render :partial => 'projects/submenu' -render :partial => 'issues/create_sidebar' --content_for :right_nopadding do - dummy %h3.bpadding10= t("layout.issues.create_header") = form_for :issue, :url => project_issues_path(@project), :html => { :class => 'form issue' } do |f| diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index fea6143c3..6ad3dfea8 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -43,7 +43,7 @@ %article - if content_for?(:sidebar) %aside= yield :sidebar - .right{:class => content_for?(:right_nopadding) ? ' nopadding' : ''}= yield + .right{:class => layout_class}= yield - else .all= yield .both diff --git a/config/locales/build_list.en.yml b/config/locales/build_list.en.yml new file mode 100644 index 000000000..b01f646ac --- /dev/null +++ b/config/locales/build_list.en.yml @@ -0,0 +1,107 @@ +en: + activerecord: + models: + build_list: Build list + build_list_item: Build list item + attributes: + build_list: + bs_id: Id + name: Name + container_path: Container path + status: Status + project_id: Project + project: Project + arch_id: Architecture + arch: Architecture + is_circle: Recurrent + notified_at: Notified at + additional_repos: Additional repository + include_repos: Includes repository + updated_at: Updated + created_at: Created + pl: Packet list repository + pl_id: Packet list repository + bpl: Platform + bpl_id: Platform + update_type: Update type + build_requires: Dependable build requires + auto_publish: Automated publising + project_version: Version + user: User + + build_list/item: + name: Name + level: Level + status: Status + version: Version + build_list: Build list + + layout: + build_lists: + filter_header: Filter + current: Curent + created_at_start: "Build start from:" + created_at_end: "Build start to:" + notified_at_start: "Last update time by BS from:" + notified_at_end: " Last update time by BS to:" + bs_id_search: 'Id search' + project_name_search: Project name search + bs_id_not_set: Id isn’t set + items_header: Build items + no_items_data: No data + show: Show + cancel_success: 'Build canceled' + cancel_fail: 'Errors on build cancelling!' + publish_success: 'Build on publish queue' + publish_fail: 'Errors on publish queue!' + container_published: 'Container in a repository' + action: Action + + ownership: + header: Build list ownership + owned: My + related: Related + index: All + + build_server_status: + header: Build server status + client_count: Clients count + count_new_task: New task count + count_build_task: Build task count + + items: + statuses: + build_started: Build started + build_error: Build error + dependencies_error: Dependences not found + success: Build complete + unknown: Build waiting + git_error: Git error + + statuses: + build_error: Build error + build_published: Build published + build_publish: Build publishing + failed_publish: Publishing error + dependencies_fail: Dependences not found + waiting_for_response: Waiting for response + build_pending: Build pending + dependency_test_failed: Dependency test failed + binary_test_failed: Binary test failed + build_canceled: Build canceled + success: Build complete + build_started: Build started + platform_not_found: Platform not found + platform_pending: Platforn pending + project_not_found: Project not found + project_version_not_found: Project version not found + + flash: + build_list: + saved: Project version '%{project_version}' build list, platform '%{bpl}', architecture '%{arch}' creation success + save_error: Project version '%{project_version}' build list, platform '%{bpl}', architecture '%{arch}' creation error + no_project_version_selected: Select any version of project + no_project_version_found: Project version '%{project_version}' not found + no_arch_or_platform_selected: At least one of architecture of platform must selected + wrong_platform: For the main repository its mail platform can be chosen only! + can_not_published: Build publishing with status "Build" available only diff --git a/config/locales/build_list.ru.yml b/config/locales/build_list.ru.yml new file mode 100644 index 000000000..6d34d3ac9 --- /dev/null +++ b/config/locales/build_list.ru.yml @@ -0,0 +1,107 @@ +ru: + activerecord: + models: + build_list: Сборочный лист + build_list_item: Элемент сборочного листа + attributes: + build_list: + bs_id: Id + name: Название + container_path: Путь до контейнера + status: Статус + project_id: Проект + project: Проект + arch_id: Архитектура + arch: Архитектура + is_circle: Циклическая сборка + notified_at: Информация получена + additional_repos: Дополнительные репозитории + include_repos: Подключаемые репозитории + updated_at: Обновлен + created_at: Создан + pl: Репозиторий для сохранения пакетов + pl_id: Репозиторий для сохранения пакетов + bpl: Платформа + bpl_id: Платформа + update_type: Критичность обновления + build_requires: Пересборка с зависимостями + auto_publish: Автоматическая публикация + project_version: Версия + user: Пользователь + + build_list/item: + name: Название + level: Уровень + status: Статус + version: Версия + build_list: Сборочный лист + + layout: + build_lists: + filter_header: Фильтр + current: Текущие + created_at_start: "Время постановки на сборку с:" + created_at_end: "Время постановки на сборку по:" + notified_at_start: "Время последнего обновления от BS с:" + notified_at_end: "Время последнего обновления от BS по:" + bs_id_search: 'Поиск по Id' + project_name_search: Поиск по названию проекта + bs_id_not_set: Id еще не присвоен + items_header: Элементы сборки + no_items_data: Данных нет + show: Просмотр + cancel_success: 'Сборка отменена.' + cancel_fail: 'При отмене сборки произошла ошибка!' + publish_success: 'Сборка поставлена в очередь на публикацию.' + publish_fail: 'При публикации сборки произошла ошибка!' + container_published: 'Контейнер размещен в репозитории' + action: Действие + + ownership: + header: Принадлежность заданий + owned: Мне + related: Связанные со мной + index: Все + + build_server_status: + header: Статус сборочного сервера + client_count: Число клиентов + count_new_task: Число заданий в очереди + count_build_task: Число выполняемых заданий + + items: + statuses: + build_started: собирается + build_error: ошибка сборки + dependencies_error: зависимости не найдены + success: собран + unknown: ожидает сборки + git_error: проблема с гит + + statuses: + build_error: ошибка сборки + build_published: опубликован + build_publish: публикуется + failed_publish: ошибка публикации + dependencies_fail: зависимости не найдены + waiting_for_response: ожидает ответа + build_pending: ожидает сборку + dependency_test_failed: тестирование зависимостей не пройдено + binary_test_failed: тестирование бинарной совместимости не пройдено + build_canceled: сборка отменена + success: собран + build_started: собирается + platform_not_found: платформа не найдена + platform_pending: платформа в процессе создания + project_not_found: проект не найден + project_version_not_found: версия не найдена + + flash: + build_list: + saved: Билд лист для версии '%{project_version}', платформы '%{bpl}' и архитектуры '%{arch}' создан успешно + save_error: Не удалось сохранить билд лист для версии '%{project_version}', платформы '%{bpl}' и архитектуры '%{arch}' + no_project_version_selected: Выберите какую-нибудь версию + no_project_version_found: Выбранная версия '%{project_version}' не найдена + no_arch_or_platform_selected: Выберите хотя бы одну ахритектуру и платформу + wrong_platform: Для основного репозитория (main) может быть выбран только его же основная платформа! + can_not_published: Опубликовать сборку можно только со статусом "Собран" diff --git a/config/locales/en.yml b/config/locales/en.yml index 1a151c595..bfaf314bb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -272,122 +272,6 @@ en: filter_header: Filter git: - upload: Upload - not_access: Access denied! - owner: Owner - confirm: Sure? - back: Back - settings: - label: Settings - notifier: Notifier setting - notifiers: - edit_header: Notifier setting - processing: working ... - invalid_content_type: incorrect type - - devise: - shared_links: - sign_in: Sign in - sign_up: Sign up - forgot_password: Forgot your password? - confirm_again: Do not receive the confirmation link? - unlock: Do not receive unlock instructions? - sign_in_through: Sign in by %{provider} - - downloads: - title: Downloads statistic - message: Automatically updated every 5 minutes - refresh_btn: Refresh - - auto_build_lists: - header: Automated build projects - message: All projects build under user repository and architecture i586 - project: Project - action: Action - automate_btn: Automate - cancel_btn: Cancel - not_automated: Not automated - already_automated: Automated - - weekdays: - Monday: Monday - Tuesday: Tuesday - Wednesday: Wednesday - Thursday: Thursday - Friday: Friday - Saturday: Saturday - Sunday: Sunday - - sessions: - sign_in_header: Sign in - - private_users: - list: List - new: New pair - list_header: Pair login/password - confirm_delete: Are you sure to delete this pair login/password? - confirm_regenerate: Are you sure to regenerate this pair login/password? - regenerate_btn: Regenerate - warning_message: Warning - Old data set as invalid when new data obtaining - - categories: - list: List - new: Create - edit: Edit - platforms: By platform - list_header: Catalogue - new_header: New category - edit_header: Edit category - confirm_delete: Are you sure to delete this category? - - commits: - subscribe_btn: Subscribe to commit - unsubscribe_btn: Unsubscribe from commit - - comments: - confirm_delete: Are you sure to delete the comment? - new_header: New comment - edit_header: Editing a comment - - platforms: - admin_id: Owner - build_all: Build all - list: List - new: Create - edit: Edit - new_header: New platform - edit_header: Edit - list_header: Platforms - list_header_main: General - list_header_personal: Personal - list_header_all: All - clone_header: Platform clone - show: Platform - projects: Projects - products: Products - location: Location - repositories: Repositories - back_to_the_list: ⇐To platform list - freeze: Freeze - unfreeze: Unfeeze - confirm_freeze: Are you sure to freeze this platform? - confirm_freeze: Are you sure to clone this platform? - confirm_unfreeze: Are you sure to defrost this platform? - released_suffix: (released) - confirm_delete: Are you sure to delete this platform? - current_platform_header: Current platform - owner: Owner - visibility: Visibility - platform_type: Platform type - distrib_type: Distribution kit type - private_users: Access data - confirm_clone: To clone? - clone: To clone - - event_logs: - list: List - list_header: Event log - repositories: empty: "Repository is empty. You need to wait some time if you have forked project or imported package" source: Source @@ -405,60 +289,6 @@ en: '1': 'build error' '2': 'build in progress' - build_lists: - filter_header: Filter - current: Curent - created_at_start: "Build start from:" - created_at_end: "Build start to:" - notified_at_start: "Last update time by BS from:" - notified_at_end: " Last update time by BS to:" - bs_id_search: 'Id search' - project_name_search: Project name search - bs_id_not_set: Id isn’t set - items_header: Build items - no_items_data: No data - show: Show - cancel_button_header: Action - cancel_button: Cancel - cancel_success: 'Build canceled' - cancel_fail: 'Errors on build cancelling!' - publish_success: 'Build on publish queue' - publish_fail: 'Errors on publish queue!' - container_published: 'Container in a repository' - - build_server_status: - header: Build server status - client_count: Clients count - count_new_task: New task count - count_build_task: Build task count - - items: - statuses: - build_started: Build started - build_error: Build error - dependencies_error: Dependences not found - success: Build complete - unknown: Build waiting - git_error: Git error - - statuses: - build_error: Build error - build_published: Build published - build_publish: Build publishing - failed_publish: Publishing error - dependencies_fail: Dependences not found - waiting_for_response: Waiting for response - build_pending: Build pending - dependency_test_failed: Dependency test failed - binary_test_failed: Binary test failed - build_canceled: Build canceled - success: Build complete - build_started: Build started - platform_not_found: Platform not found - platform_pending: Platforn pending - project_not_found: Project not found - project_version_not_found: Project version not found - flash: settings: saved: Settings saved success @@ -551,15 +381,6 @@ en: build_all_success: All project build in progress clone_success: Cloned successfully - build_list: - saved: Project version '%{project_version}' build list, platform '%{bpl}', architecture '%{arch}' creation success - save_error: Project version '%{project_version}' build list, platform '%{bpl}', architecture '%{arch}' creation error - no_project_version_selected: Select any version of project - no_project_version_found: Project version '%{project_version}' not found - no_arch_or_platform_selected: At least one of architecture of platform must selected - wrong_platform: For the main repository its mail platform can be chosen only! - can_not_published: Build publishing with status "Build" available only - wiki: ref_not_exist: No such version successfully_updated: Page '%{name}' successfully updated @@ -579,7 +400,6 @@ en: remember_me: Remember name: Name parent_platform_id: Parent platform - build_list: Build list activerecord: @@ -604,8 +424,6 @@ en: private_user: Private user product: Product product_build_list: Product build list - build_list: Build list - build_list_item: Build list item download: Statistics auto_build_list: Auto rebuild list settings: @@ -774,38 +592,6 @@ en: status: Status notified_at: Notified at - build_list: - bs_id: Id - name: Name - container_path: Container path - status: Status - project_id: Project - project: Project - arch_id: Architecture - arch: Architecture - is_circle: Recurrent - notified_at: Notified at - additional_repos: Additional repository - include_repos: Includes repository - updated_at: Updated - created_at: Created - pl: Packet list repository - pl_id: Packet list repository - bpl: Platform - bpl_id: Platform - update_type: Update type - build_requires: Dependable build requires - auto_publish: Automated publising - project_version: Version - user: User - - build_list/item: - name: Name - level: Level - status: Status - version: Version - build_list: Build list - download: name: Name version: Version @@ -821,97 +607,3 @@ en: issue_assign_notification: New task assigned new_commit_comment_notification: New comment to commit invite_approve_notification: Invitation to ABF - - project: - category_id: Category - name: Name - description: Descripton - owner: Owner - visibility: Visibility - repository_id: Repository - repository: Repository - created_at: Created - updated_at: Updated - has_issues: Tracker on - srpm: Import code from src.rpm - - rpm: - name: Name - arch_id: Arch - arch: Arch - project_id: Project - project: Project - created_at: Created - updated_at: Updated - - role: - name: Name - on: Slave - to: Master - use_default: By default - use_default_for_owner: Default by owner - - group: - name: Name - uname: Nickname - owner: Owner - created_at: Created - updated_at: Updated - - user: - name: User - login: Nickname or Email - email: Email - uname: Nickname - ssh_key: SSH key - current_password: Current password - role: Role - created_at: Created - updated_at: Updated - role: System role - language: Language - - product_build_list: - id: Id - product: Product - status: Status - notified_at: Notified at - - build_list: - bs_id: Id - name: Name - container_path: Container path - status: Status - project_id: Project - project: Project - arch_id: Architecture - arch: Architecture - is_circle: Recurrent - notified_at: Notified at - additional_repos: Additional repository - include_repos: Includes repository - updated_at: Updated - created_at: Created - pl: Packet list repository - pl_id: Packet list repository - bpl: Platform - bpl_id: Platform - update_type: Update type - build_requires: Dependable build requires - auto_publish: Automated publising - project_version: Version - user: User - - build_list/item: - name: Name - level: Level - status: Status - version: Version - build_list: Build list - - download: - name: Name - version: Version - distro: Source - platform: Platform - counter: Downloads diff --git a/config/locales/ru.yml b/config/locales/ru.yml index d2f926081..d2eea738f 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -289,60 +289,6 @@ ru: '1': 'ошибка сборки' '2': 'собирается' - build_lists: - filter_header: Фильтр - current: Текущие - created_at_start: "Время постановки на сборку с:" - created_at_end: "Время постановки на сборку по:" - notified_at_start: "Время последнего обновления от BS с:" - notified_at_end: "Время последнего обновления от BS по:" - bs_id_search: 'Поиск по Id' - project_name_search: Поиск по названию проекта - bs_id_not_set: Id еще не присвоен - items_header: Элементы сборки - no_items_data: Данных нет - show: Просмотр - cancel_button_header: Действие - cancel_button: Отмена - cancel_success: 'Сборка отменена.' - cancel_fail: 'При отмене сборки произошла ошибка!' - publish_success: 'Сборка поставлена в очередь на публикацию.' - publish_fail: 'При публикации сборки произошла ошибка!' - container_published: 'Контейнер размещен в репозитории' - - build_server_status: - header: Статус сборочного сервера - client_count: Число клиентов - count_new_task: Число заданий в очереди - count_build_task: Число выполняемых заданий - - items: - statuses: - build_started: собирается - build_error: ошибка сборки - dependencies_error: зависимости не найдены - success: собран - unknown: ожидает сборки - git_error: проблема с гит - - statuses: - build_error: ошибка сборки - build_published: опубликован - build_publish: публикуется - failed_publish: ошибка публикации - dependencies_fail: зависимости не найдены - waiting_for_response: ожидает ответа - build_pending: ожидает сборку - dependency_test_failed: тестирование зависимостей не пройдено - binary_test_failed: тестирование бинарной совместимости не пройдено - build_canceled: сборка отменена - success: собран - build_started: собирается - platform_not_found: платформа не найдена - platform_pending: платформа в процессе создания - project_not_found: проект не найден - project_version_not_found: версия не найдена - flash: settings: saved: Настройки успешно сохранены @@ -440,15 +386,6 @@ ru: build_all_success: Все проекты успешно отправлены на сборку clone_success: Клонирование успешно - build_list: - saved: Билд лист для версии '%{project_version}', платформы '%{bpl}' и архитектуры '%{arch}' создан успешно - save_error: Не удалось сохранить билд лист для версии '%{project_version}', платформы '%{bpl}' и архитектуры '%{arch}' - no_project_version_selected: Выберите какую-нибудь версию - no_project_version_found: Выбранная версия '%{project_version}' не найдена - no_arch_or_platform_selected: Выберите хотя бы одну ахритектуру и платформу - wrong_platform: Для основного репозитория (main) может быть выбран только его же основная платформа! - can_not_published: Опубликовать сборку можно только со статусом "Собран" - wiki: ref_not_exist: Версия не существует successfully_updated: Страница '%{name}' успешно обновлена @@ -468,7 +405,6 @@ ru: remember_me: Запомнить name: Название parent_platform_id: Родительская платформа - build_list: Сборочный лист activerecord: @@ -493,8 +429,6 @@ ru: private_user: Приватный пользователь product: Продукт product_build_list: Сборочный лист продукта - build_list: Сборочный лист - build_list_item: Элемент сборочного листа download: Статистика auto_build_list: Автоматическая пересборка пакетов settings: @@ -653,38 +587,6 @@ ru: status: Статус notified_at: Информация получена - build_list: - bs_id: Id - name: Название - container_path: Путь до контейнера - status: Статус - project_id: Проект - project: Проект - arch_id: Архитектура - arch: Архитектура - is_circle: Циклическая сборка - notified_at: Информация получена - additional_repos: Дополнительные репозитории - include_repos: Подключаемые репозитории - updated_at: Обновлен - created_at: Создан - pl: Репозиторий для сохранения пакетов - pl_id: Репозиторий для сохранения пакетов - bpl: Платформа - bpl_id: Платформа - update_type: Критичность обновления - build_requires: Пересборка с зависимостями - auto_publish: Автоматическая публикация - project_version: Версия - user: Пользователь - - build_list/item: - name: Название - level: Уровень - status: Статус - version: Версия - build_list: Сборочный лист - download: name: Название version: Версия diff --git a/db/schema.rb b/db/schema.rb index fd2386dfc..a45190013 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,12 +11,12 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120220185458) do +ActiveRecord::Schema.define(:version => 20120228100121) do create_table "arches", :force => true do |t| t.string "name", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end add_index "arches", ["name"], :name => "index_arches_on_name", :unique => true @@ -25,8 +25,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.integer "user_id" t.string "provider" t.string "uid" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end add_index "authentications", ["provider", "uid"], :name => "index_authentications_on_provider_and_uid", :unique => true @@ -37,8 +37,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.integer "arch_id" t.integer "pl_id" t.integer "bpl_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "build_list_items", :force => true do |t| @@ -46,8 +46,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.integer "level" t.integer "status" t.integer "build_list_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "version" end @@ -61,8 +61,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.integer "project_id" t.integer "arch_id" t.datetime "notified_at" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "is_circle", :default => false t.text "additional_repos" t.string "name" @@ -85,16 +85,16 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "name" t.string "ancestry" t.integer "projects_count", :default => 0, :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "comments", :force => true do |t| t.string "commentable_type" t.integer "user_id" t.text "body" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.decimal "commentable_id", :precision => 50, :scale => 0 end @@ -102,8 +102,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "name", :null => false t.integer "project_id", :null => false t.integer "owner_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "delayed_jobs", :force => true do |t| @@ -115,8 +115,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.datetime "locked_at" t.datetime "failed_at" t.string "locked_by" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "queue" end @@ -128,8 +128,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "distro" t.string "platform" t.integer "counter", :default => 0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "event_logs", :force => true do |t| @@ -144,15 +144,15 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "controller" t.string "action" t.text "message" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "groups", :force => true do |t| t.string "name" t.integer "owner_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "uname" t.integer "own_projects_count", :default => 0, :null => false end @@ -164,18 +164,40 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "title" t.text "body" t.string "status", :default => "open" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "creator_id" + t.datetime "closed_at" + t.integer "closed_by" end add_index "issues", ["project_id", "serial_id"], :name => "index_issues_on_project_id_and_serial_id", :unique => true + create_table "labelings", :force => true do |t| + t.integer "label_id", :null => false + t.integer "issue_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "labelings", ["issue_id"], :name => "index_labelings_on_issue_id" + + create_table "labels", :force => true do |t| + t.string "name", :null => false + t.string "color", :null => false + t.integer "project_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "labels", ["project_id"], :name => "index_labels_on_project_id" + create_table "platforms", :force => true do |t| t.string "description" t.string "name" t.integer "parent_platform_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "released", :default => false t.integer "owner_id" t.string "owner_type" @@ -188,8 +210,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.integer "platform_id" t.string "login" t.string "password" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.integer "user_id" end @@ -197,8 +219,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.integer "product_id" t.integer "status", :default => 2, :null => false t.datetime "notified_at" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end add_index "product_build_lists", ["product_id"], :name => "index_product_build_lists_on_product_id" @@ -208,8 +230,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.integer "platform_id", :null => false t.integer "build_status", :default => 2, :null => false t.string "build_path" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.text "build_script" t.text "counter" t.text "ks" @@ -229,8 +251,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "name" t.string "version" t.datetime "file_mtime" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.integer "platform_id" end @@ -239,14 +261,14 @@ ActiveRecord::Schema.define(:version => 20120220185458) do create_table "project_to_repositories", :force => true do |t| t.integer "project_id" t.integer "repository_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end create_table "projects", :force => true do |t| t.string "name" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.integer "owner_id" t.string "owner_type" t.string "visibility", :default => "open" @@ -254,11 +276,11 @@ ActiveRecord::Schema.define(:version => 20120220185458) 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 end add_index "projects", ["category_id"], :name => "index_projects_on_category_id" @@ -270,8 +292,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "token" t.boolean "approved", :default => false t.boolean "rejected", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "interest" t.text "more" end @@ -284,16 +306,16 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "object_type" t.integer "target_id" t.string "target_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "role" end create_table "repositories", :force => true do |t| t.string "description", :null => false t.integer "platform_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "name", :null => false end @@ -301,8 +323,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.string "name", :null => false t.integer "arch_id", :null => false t.integer "project_id", :null => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" end add_index "rpms", ["project_id", "arch_id"], :name => "index_rpms_on_project_id_and_arch_id" @@ -315,8 +337,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do t.boolean "new_comment_reply", :default => true t.boolean "new_issue", :default => true t.boolean "issue_assign", :default => true - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "new_comment_commit_owner", :default => true t.boolean "new_comment_commit_repo_owner", :default => true t.boolean "new_comment_commit_commentor", :default => true @@ -325,8 +347,8 @@ ActiveRecord::Schema.define(:version => 20120220185458) do create_table "subscribes", :force => true do |t| t.string "subscribeable_type" t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.boolean "status", :default => true t.integer "project_id" t.decimal "subscribeable_id", :precision => 50, :scale => 0 @@ -334,18 +356,18 @@ ActiveRecord::Schema.define(:version => 20120220185458) do create_table "users", :force => true do |t| t.string "name" - t.string "email", :default => "", :null => false - t.string "encrypted_password", :default => "", :null => false + 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", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.text "ssh_key" t.string "uname" t.string "role" - t.string "language", :default => "en" - t.integer "own_projects_count", :default => 0, :null => false + t.string "language", :default => "en" + t.datetime "reset_password_sent_at" + t.integer "own_projects_count", :default => 0, :null => false end add_index "users", ["email"], :name => "index_users_on_email", :unique => true From 19dd58800b4aaea5d185114401ff43a9ef05ebdc Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Wed, 29 Feb 2012 19:04:33 +0400 Subject: [PATCH 33/87] [issue #195] Added comments to commit. --- app/assets/stylesheets/custom.scss | 53 +++++++++++++++ app/presenters/comment_presenter.rb | 64 +++++++++++++++++++ .../commit_as_message_presenter.rb | 4 ++ app/views/comments/_add.html.haml | 20 ++++++ app/views/comments/_form.html.haml | 8 ++- app/views/comments/_list.html.haml | 9 ++- app/views/git/commits/show.html.haml | 3 + app/views/shared/_feed_message.html.haml | 4 +- 8 files changed, 160 insertions(+), 5 deletions(-) create mode 100644 app/presenters/comment_presenter.rb create mode 100644 app/views/comments/_add.html.haml diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index a96dd432d..f89b99573 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -56,6 +56,15 @@ article div.activity .top div.text.imaged { article div.activity .top div.text .name { font-weight: 700; + display: block; + float: left; +} + +article div.activity .top .buttons { + font-weight: 700; + display: block; + position: relative; + float: right; } article div.activity .top div.text .date { @@ -211,3 +220,47 @@ article div.file table { #repo-wrapper table.diff tr td.code.ins .idiff { background-color: #BAFBAD; } + +#repo-wrapper div.comment { + background: none repeat scroll 0 0 #DCECFA; + border: 1px solid #B3CCE0; + border-radius: 4px 4px 4px 4px; + margin-bottom: 10px; + margin-top: 15px; + padding: 6px; + text-align: left; +} + +#repo-wrapper div.view { + display: block; +} + +#repo-wrapper div.comment div.wrapper { + border: 1px solid #DEDEDE; + border-radius: 4px 4px 4px 4px; + color: #575756; + background: #FFFFFF; + font-size: 12px; + height: 110px; + margin: 10px 0; + padding: 5px; +} + +#repo-wrapper div.comment div.wrapper textarea { + border: none; + color: #575756; + font-family: Tahoma,Geneva,Helvetica,sans-serif; + width: 100%; + height: 100%; + resize: none; +} + +#repo-wrapper div.comment div.comment-left { + float: left; + font-size: 12px; + margin-top: 4px; +} + +#repo-wrapper div.comment div.comment-right { + float: right; +} diff --git a/app/presenters/comment_presenter.rb b/app/presenters/comment_presenter.rb new file mode 100644 index 000000000..fe6fb9089 --- /dev/null +++ b/app/presenters/comment_presenter.rb @@ -0,0 +1,64 @@ +# -*- encoding : utf-8 -*- +class CommentPresenter < ApplicationPresenter + + attr_accessor :comment, :options + attr_reader :header, :image, :date, :caption, :content, :buttons + + def initialize(comment, opts = {}) + @comment = comment + @user = comment.user + @options = opts + + @caption = @comment.body + end + + def expandable? + false + end + + def buttons? + true + end + + def content? + false + end + + def buttons + project = options[:project] + commentable = options[:commentable] + puts "PROJECT = " + project.inspect + puts "COMMENTABLE = " + commentable.inspect + puts "COMMENT = " + comment.inspect + (ep, dp) = if commentable.class == Issue + [edit_project_issue_comment_path(project, commentable, comment), + project_issue_comment_path(project, commentable, comment)] + elsif commentable.class == Grit::Commit + [edit_project_commit_comment_path(project, commentable, comment), + project_commit_comment_path(project, commentable, comment)] + end + + res = [] + if controller.can? :update, @comment + res << link_to(t("layout.edit"), ep).html_safe + end + if controller.can? :delete, @comment + res << link_to(t("layout.delete"), dp, :method => "delete", + :confirm => t("layout.comments.confirm_delete")).html_safe + end + end + + def header + res = link_to @user.uname, user_path(@user.uname) + res += ' ' + t("layout.comments.has_commented") + end + + def image + @image ||= "https://secure.gravatar.com/avatar/#{Digest::MD5.hexdigest(@user.email.downcase)}?s=40&r=pg" + end + + def date + @date ||= I18n.l(@comment.updated_at, :format => :long) + end + +end diff --git a/app/presenters/git_presenters/commit_as_message_presenter.rb b/app/presenters/git_presenters/commit_as_message_presenter.rb index 8546333c7..95f117bb0 100644 --- a/app/presenters/git_presenters/commit_as_message_presenter.rb +++ b/app/presenters/git_presenters/commit_as_message_presenter.rb @@ -33,6 +33,10 @@ class GitPresenters::CommitAsMessagePresenter < ApplicationPresenter true end + def buttons? + false + end + def content? !content.blank? end diff --git a/app/views/comments/_add.html.haml b/app/views/comments/_add.html.haml new file mode 100644 index 000000000..223fe2ec6 --- /dev/null +++ b/app/views/comments/_add.html.haml @@ -0,0 +1,20 @@ +#open-comment.comment.view + %h3.tmargin0= t("layout.comments.new_header") + - new_path = project_issue_comments_path(project, commentable) if commentable.class == Issue + - new_path = project_commit_comments_path(project, commentable) if commentable.class == Grit::Commit + = form_for :comment, :url => new_path, :method => :post, :html => { :class => :form } do |f| + = render :partial => "comments/form", :locals => {:f => f} + .comment-left + = t("layout.comments.notification_are") + %span.bold + - if Subscribe.subscribed_to_commit?(@project, current_user, @commit) + = t("layout.turned_on") + - else + = t("layout.turned_off") + \. + + - 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 + .both diff --git a/app/views/comments/_form.html.haml b/app/views/comments/_form.html.haml index acf97b5ce..46e9c6970 100644 --- a/app/views/comments/_form.html.haml +++ b/app/views/comments/_form.html.haml @@ -1,8 +1,12 @@ -.group +.wrapper + = f.text_area :body, :cols => 80 +.comment-right + = submit_tag t("layout.save") +-#.group = f.label :body, t("activerecord.attributes.comment.body"), :class => :label = f.text_area :body, :class => 'text_field', :cols => 80 -.group.navform.wat-cf +-#.group.navform.wat-cf %button.button{:type => "submit"} = image_tag("choose.png", :alt => t("layout.save")) = t("layout.save") diff --git a/app/views/comments/_list.html.haml b/app/views/comments/_list.html.haml index 30ea66d24..d7f752ad4 100644 --- a/app/views/comments/_list.html.haml +++ b/app/views/comments/_list.html.haml @@ -1,5 +1,10 @@ %a{ :name => "comments" } -.block#block-list +.hr +%h3= t("layout.issues.comments_header") +- list.each do |comment| + - CommentPresenter.present(comment, :project => project, :commentable => commentable) do |presenter| + = render :partial => 'shared/feed_message', :locals => {:presenter => presenter} +-#.block#block-list .content %h2.title = t("layout.issues.comments_header") @@ -23,7 +28,7 @@ =# link_to image_tag("x.png", :alt => t("layout.delete")) + " " + t("layout.delete"), delete_path, :method => "delete", :class => "button", :confirm => t("layout.comments.confirm_delete") if can? :delete, comment = link_to t("layout.delete"), delete_path, :method => "delete", :confirm => t("layout.comments.confirm_delete") if can? :delete, comment -.block +-#.block .content %h2.title = t("layout.comments.new_header") diff --git a/app/views/git/commits/show.html.haml b/app/views/git/commits/show.html.haml index 0ff3c5a43..7d612fb83 100644 --- a/app/views/git/commits/show.html.haml +++ b/app/views/git/commits/show.html.haml @@ -14,6 +14,9 @@ #repo-wrapper = render :partial => 'show' + + = 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" diff --git a/app/views/shared/_feed_message.html.haml b/app/views/shared/_feed_message.html.haml index b2b3e717e..bb9893c9b 100644 --- a/app/views/shared/_feed_message.html.haml +++ b/app/views/shared/_feed_message.html.haml @@ -1,10 +1,12 @@ .activity .top + - if presenter.buttons? + %span.buttons= raw presenter.buttons.join(' | ').html_safe .image %img{:alt => "avatar", :src => presenter.image} .text.imaged %span.name= presenter.header - %br/ + .both %span.date= presenter.date %br/ %span.subject From 662ea4018cfe2414086bbdd13ea0de4027082877 Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Wed, 29 Feb 2012 19:08:21 +0400 Subject: [PATCH 34/87] [issue #195] Changed commit header on commit page. --- app/presenters/git_presenters/commit_as_message_presenter.rb | 2 +- config/locales/layout/messages.ru.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/presenters/git_presenters/commit_as_message_presenter.rb b/app/presenters/git_presenters/commit_as_message_presenter.rb index 95f117bb0..100f5529c 100644 --- a/app/presenters/git_presenters/commit_as_message_presenter.rb +++ b/app/presenters/git_presenters/commit_as_message_presenter.rb @@ -16,7 +16,7 @@ class GitPresenters::CommitAsMessagePresenter < ApplicationPresenter I18n.t("layout.messages.commits.header_with_branch", :committer => committer_link, :commit => commit_link, :branch => options[:branch].name) elsif options[:project].present? - I18n.t("layout.messages.commits.header_with_project", + I18n.t("layout.messages.commits.header", :committer => committer_link, :commit => commit_link, :project => options[:project].name) end.html_safe end diff --git a/config/locales/layout/messages.ru.yml b/config/locales/layout/messages.ru.yml index 6b66b06eb..8e02db73b 100644 --- a/config/locales/layout/messages.ru.yml +++ b/config/locales/layout/messages.ru.yml @@ -3,3 +3,4 @@ ru: messages: commits: header_with_branch: "%{committer} добавил коммит %{commit} в ветку %{branch}" + header: "%{committer} добавил коммит %{commit}" From 5b9d20154bcff3be685c8101b70cc0a46113303d Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Wed, 29 Feb 2012 20:27:32 +0400 Subject: [PATCH 35/87] [issue #195] Added translations and maybe missed partials --- app/assets/javascripts/project-page.js | 16 +- app/assets/javascripts/tracker.js | 30 +- app/assets/stylesheets/custom.scss | 1 - app/assets/stylesheets/main.css | 2163 ++++++++++++++++++++ app/assets/stylesheets/main.scss | 22 +- app/views/comments/_add.html.haml | 6 +- app/views/git/blobs/_editor.html.haml | 4 +- app/views/git/blobs/_show.html.haml | 2 +- app/views/git/repositories/_show.html.haml | 8 +- config/locales/date.en.yml | 4 + config/locales/layout.en.yml | 7 + config/locales/layout.ru.yml | 7 + config/locales/layout/comments.en.yml | 5 + config/locales/layout/comments.ru.yml | 5 + config/locales/layout/commits.en.yml | 5 + config/locales/layout/commits.ru.yml | 5 + config/locales/layout/messages.en.yml | 6 + config/locales/layout/projects.en.yml | 14 + config/locales/layout/projects.ru.yml | 12 +- 19 files changed, 2275 insertions(+), 47 deletions(-) create mode 100644 app/assets/stylesheets/main.css create mode 100644 config/locales/date.en.yml create mode 100644 config/locales/layout.en.yml create mode 100644 config/locales/layout.ru.yml create mode 100644 config/locales/layout/comments.en.yml create mode 100644 config/locales/layout/comments.ru.yml create mode 100644 config/locales/layout/commits.en.yml create mode 100644 config/locales/layout/commits.ru.yml create mode 100644 config/locales/layout/messages.en.yml create mode 100644 config/locales/layout/projects.en.yml diff --git a/app/assets/javascripts/project-page.js b/app/assets/javascripts/project-page.js index 20642db47..b81b98545 100644 --- a/app/assets/javascripts/project-page.js +++ b/app/assets/javascripts/project-page.js @@ -1,12 +1,12 @@ $(document).ready(function() { - $("#myTable").tablesorter({ - headers: { - 2: { - sorter: false - } - } - - }); +// $("#myTable").tablesorter({ +// headers: { +// 2: { +// sorter: false +// } +// } +// +// }); }); $(document).ready(function() { diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/tracker.js index 74b75bb65..50d92822b 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/tracker.js @@ -15,23 +15,23 @@ $(document).ready(function() { $(document).ready(function() { -$("#myTable").tablesorter({ - headers: { - 1: { - sorter: false - } - } -}); +//$("#myTable").tablesorter({ +// headers: { +// 1: { +// sorter: false +// } +// } +//}); }); $(document).ready(function() { -$("#myTable2").tablesorter({ - headers: { - 1: { - sorter: false - } - } -}); +//$("#myTable2").tablesorter({ +// headers: { +// 1: { +// sorter: false +// } +// } +//}); }); $(document).ready(function() { @@ -135,4 +135,4 @@ function hideRow(elem) { } else { //$("#"+elem).fadeOut(0); } -} \ No newline at end of file +} diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index f89b99573..47ae13091 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -61,7 +61,6 @@ article div.activity .top div.text .name { } article div.activity .top .buttons { - font-weight: 700; display: block; position: relative; float: right; diff --git a/app/assets/stylesheets/main.css b/app/assets/stylesheets/main.css new file mode 100644 index 000000000..16d9cc7aa --- /dev/null +++ b/app/assets/stylesheets/main.css @@ -0,0 +1,2163 @@ +html, body { + margin: 0; + padding: 0; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + color: #565657; + background: #1f60a1 url("../pics/bg.png") repeat-x; + min-width: 940px; + min-height: 600px; + text-align: center; + height: 100%; +} + +header, section, footer, aside, nav, article, menu { + display: block; +} + +input[type="text"]:focus { outline: none; } + +input[type="password"]:focus { outline: none; } + +input:focus { outline: none; } + +select:focus { outline: none; } + +a img { border: none; } + +.wrap { + width: 940px; + margin: 0 auto; + text-align: center; + border: 1px solid #3f668c; + -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + background: #FFF; + min-height: 92%; +} + +.wrap.columns { + background: #FFF url("../pics/page-bg.png") repeat-y; +} + +.both { + clear: both; +} + +/* Top menu */ + +header { + -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + position: relative; + z-index: 1000; +} + +header div.left { + background: url("../pics/top-left.png"); + height: 46px; + width: 14px; + float: left; +} + +header div.middle { + background: url("../pics/top-middle.png"); + float: left; + height: 46px; + width: 912px; +} + +header div.right { + background: url("../pics/top-right.png"); + height: 46px; + width: 14px; + float: right; +} + +/* Left part of top menu*/ + +header menu { + float: left; + margin: 0; + padding: 0; +} + +header menu ul { + list-style: none; + margin: 0; + padding: 10px 0px 0px 0px; +} + +header menu ul li { + display: inline; +} + +header menu ul li a { + font-size: 12px; + color: #FFF; + text-decoration: none; + height: 43px; + padding: 15px 15px 15px 15px; +} + +header menu ul li a:hover { + color: #cee7ff; +} + +header menu ul li a.first { + padding-left: 45px; +} + +header menu ul li a.active { + background: url("../pics/menu-hover.png") repeat-x; +} + + + +header div.logo { + float: left; + margin-top: -25px; + padding-left: 10px; + position: absolute; +} + +/* Right part of top menu */ + +header div.information { + float: right; +} + +header div.search { + float: left; + margin: 10px 0px 0px 0px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background: #FFF; + border: 1px solid #7691aa; +} + +header div.search div.pic { + background: url("../pics/search-button.png"); + height: 22px; + width: 24px; + float: left; +} + +header div.search div.field { + float: left; + margin: -1px 0px 0px 0px; +} + +header div.search div.field input { + border: none; + height: 18px; + background: none; + width: 132px; + font-size: 12px; + font-family: Arial; + padding: 2px 0px 0px 0px; +} + +header div.search div.field input.gray { + color: #cfcfcf; +} + +header div.search div.field input.black { + color: #333333; +} + +header div.avatar { + float:left; + padding: 6px 10px 10px 10px; + +} + +header div.information div.active { + background: url("../pics/menu-hover.png") repeat-x; +} + +header div.information div.user { + float: left; + margin-left: 14px; +} + +header div.profile { + float: left; + text-align: right; + color: #FFF; + font-size: 12px; + padding-top: 12px; +} + +header div.profile a { + color: #FFF; + text-decoration: none; + padding-right: 10px; +} + +header div.profile a:hover { + text-decoration: underline; +} + + +header div.droplist-wrap { + margin: -4px 0px 0px 0px; + width: 151px; + float: right; +} + +header div.droplist { + background: url("../pics/bg-droplist.png") repeat-x; + height: 91px; + width: 151px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin-top: 0px; + border-radius: 0px 0px 4px 4px; + display: none; + text-align: right; + z-index: 9999; +} + +header div.droplist-wrap div.a { + margin-top: 5px; +} + +header div.droplist a{ + position: relative; + padding-left: 15px; + font-size: 12px; + color: #7eb7ed; + text-decoration: none; + padding-right: 15px; + margin-top: 10px; +} + +header div.droplist a:hover{ + text-decoration: underline; +} + + +/* Submenu */ + +.sub-menu { + height: 38px; + margin: -7px 0px 0px 0px; + padding: 0px 0px 0px 15px; + background: #ededed; + position: relative; + z-index: 100; + border-bottom: 1px solid #FFF; + -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); +} + +.sub-menu div.left { + float: left; + width: 200px; + border-right: 1px solid #dcdcdc; + font-size: 12px; + text-align: left; + font-weight: 700; + padding: 10px 0px 0px 0px; + height: 21px; +} + +.sub-menu div.right { + float: left; +} + + +.sub-menu nav { /* */ + float: left; + margin: 0px 0px 0px 0px; +} + +.sub-menu nav ul { + list-style: none; + text-align: left; + padding: 0; + margin: 0; + padding-top: 5px; +} + +.sub-menu nav ul li { + display: inline; +} + +.sub-menu nav ul li a { + font-size: 12px; + color: #575756; + text-decoration: none; + height: 34px; + padding: 0px 20px 6px 20px; +} + +.sub-menu nav ul li a.active { + background: url("../pics/submenu-hover.png") repeat-x; +} + +.sub-menu nav ul li a:hover { + color: #2b6daf; +} + +/* Page markup */ + +article { + font-size: 12px; +} + +aside { + float: left; + width: 215px; +} + +article div.right { + float: right; + width: 645px; + padding: 20px 40px 40px 40px; + text-align: left; +} + +article div.right.bigpadding { + width: 445px; + padding: 20px 140px 40px 140px; +} + +article div.right.middlepadding { + width: 510px; + padding: 20px 120px 40px 50px; +} + +article div.right.middlepadding div.rightlist{ + width: 300px; +} + +article div.right.middlepadding div.rightlist input{ + width: 300px; +} + +article div.right.middlepadding div.rightlist textarea{ + width: 300px; +} + +article div.all { + width: 855px; + padding: 20px 40px 20px 40px; + text-align: left; +} + +article div.all.bigpadding { + width: 605px; + padding: 0px 40px 20px 200px; + text-align: left; +} + +article div.all.verybigpadding { + width: 545px; + padding: 0px 40px 20px 200px; + text-align: left; +} + +article div.all.verybigpadding div.left { + float: left; +} + +article div.all.verybigpadding div.left img{ + padding-right: 40px; + margin-top: 20px; +} + +article div.all.verybigpadding div.left h3, article div.all.verybigpadding div.left h4, article div.all.verybigpadding div.left p{ + width: 420px; +} + +article div.all.verybigpadding div.left .tmargin5 { + padding-top: 5px; + position: relative; +} + + +/* Left part of page markup */ + +aside div.bordered { + border-bottom: 1px solid #dee5eb; + text-align: left; + padding: 20px 0px 30px 15px; +} + +aside div.block { + text-align: left; + padding: 10px 0px 30px 15px; +} + +/* Common page parts markups */ + +article h4 { + font-size: 12px; + margin-bottom: 0px; + padding-bottom: 2px; +} + +article p { + margin: 0; + padding: 0; +} + +div.expand-gray-down, div.expand-gray-up { + height: 10px; + width: 12px; + float: left; + margin: 3px 0px 0px 3px; + cursor: pointer; +} + +div.expand-gray-down { + background: url("../pics/expand-gray.png") no-repeat; +} + +div.expand-gray-up { + background: url("../pics/expand-gray2.png") no-repeat; +} + +article a.button { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; +} + +article a.button:hover{ + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; +} + + + +article a.button:active{ + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); +} + +article a.disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; +} + +article input[type="file"] { + + +} + +article input[type="submit"] { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; + height: auto; + width: auto; + +} + +article input[type="submit"]:hover{ + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; + cursor: pointer; +} + + + +article input[type="submit"]:active{ + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); +} + +article input[type="submit"]:disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; +} + + +article h3{ + font-size: 14px; + color: #575756; + margin-bottom: 0; + padding-bottom: 2px; +} + +article h3.fix { + margin-top: 0px; + padding-top: 0px; +} + +article a{ + color: #7eb7ed; + font-size: 12px; + text-decoration: none; + padding: 0px 0px; +} + +article a:hover{ + text-decoration: underline; +} + +/* Right part of page markup */ + +article div.right div.hr { + border-bottom: 1px solid #dedede; + width: 100%; + padding-top: 30px; + margin-bottom: 30px; +} + +article div.right div.hr.bottom { + margin-bottom: 10px; + padding-top: 20px; +} + +article div.right div.hr.top { + padding-top: 7px; + margin-bottom: 20px; +} + +article div.leftside { + float: left; +} + +article div.rightside { + float: right; +} + +article div.all.bigpadding div.rightside { + margin-right: 40px; +} + +.lefter { + float: left; + margin-right: 5px; +} + +.lefter span.gap { + padding-right: 59px; +} + +.lefter.top { + margin-top: -6px; +} + +.w25 { + width: 25px; +} + +.w420 { + width: 420px; + padding-bottom: 20px; +} + +.padd25 { + padding-left: 25px; +} + +.width70 { + width: 70px; +} + + +/* Footer */ + +footer { + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; +} + +footer ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: left; +} + +footer ul li { + display: inline; +} + +footer ul li a { + font-size: 12px; + color: #FFF; + text-decoration: none; +} + +footer ul li a:hover { + text-decoration: underline; +} + +/* Main page */ + +aside div.bordered table{ + padding: 0; + margin: 0; + padding-bottom: 0px; + margin-left: -10px; +} + +aside div.bordered table td{ + font-size: 12px; + padding: 1px 0px 0px 0px; +} + +aside div.block table td { + text-align: right; + padding: 2px 3px 1px 3px; +} + + +aside div.block table td.first{ + width: 150px; + text-align: left; +} + +article div.right div.messages { + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 100%; + color: #477cae; + text-align: center; + font-size: 12px; + padding: 4px 0px 4px 0px; + cursor: pointer; + margin: 15px 0px 15px 0px; +} + +article div.right div.messages:hover { + background: #dceffa; +} + +article div.right div.messages p{ + margin: 0; + padding: 0; +} + +article div.activity { + border: 1px solid #d6d6d6; + /*width: 614px;*/ + border-radius: 5px; + padding: 6px; + margin-top: 15px; + color: #333; +} + +article div.activity div.top div.image { + float: left; +} + +article div.activity div.top div.text { + float: left; + padding-left: 10px; + font-size: 12px; +} + +article div.activity div.top div.text span.name { + font-weight: 700; +} + +article div.activity div.top div.text span.date { + font-size: 11px; +} + +article div.text span.subject { + float: left; +} + +article div.activity div.top div.text span.subject img { + cursor: pointer; +} + +article div.activity div.fulltext { + font-size: 12px; + padding-top: 10px; + display: none; +} + +article div.activity div.fulltext.view { + display: block; +} + +/* Admin page */ + +.admin-preferences ul { + list-style: none; + margin: 0; + padding: 0; + margin-top: 20px; + width: 215px; + text-align: left; +} + +.admin-preferences ul li{ + padding-top: 5px; + padding-bottom: 5px; + width: 215px; +} + +.admin-preferences ul li.active, .admin-preferences ul li:hover { + background: #dcecfa; +} + +.admin-preferences ul li a{ + color: #575756; + text-decoration: none; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 15px; +} + +.right div.leftlist, .all div.leftlist { + float: left; + width: 200px; + margin: 0px 0px 10px 0px; +} + +.right div.rightlist, .all div.rightlist { + float: left; + width: 400px; + font-size: 12px; + color: #575756; + margin: 0px 0px 10px 0px; +} + +.right div.rightlist div.check { + float: left; +} + +.right div.rightlist div.forcheck { + float: left; + margin: 1px 0px 0px 5px; +} +div.rightlist textarea { + height: 110px; + width: 350px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; +} + +div.rightlist input[type="text"], div.rightlist input[type="password"] { + height: 15px; + width: 350px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; +} + +/* Admin-members page */ + +.right table div.img { + float: left; +} + +.right table div.radio { + float: left; + margin: 5px 0px 0px 0px; +} + +.right table div.forimg { + float: left; + margin: 5px 0px 0px 5px; +} + +.right table div.forradio { + float: left; + margin: 5px 0px 0px 5px; +} + +.right table span.niceCheck-main { + margin-top: 3px; +} + +.right div.admin-search { + float: left; +} + +.right div.admin-role { + float: left; +} + +.right div.admin-search input { + width: 300px; + margin-right: 5px; + height: 23px; + border: 1px solid #dedede; + border-radius: 3px; + margin-top: 1px; + font-size: 12px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + padding-left: 5px; +} + +article input.gray { + color: #cfcfcf; +} + +article input.black { + color: #333333; +} + +.right div.admin-add { + float: left; + padding-top: 1px; + margin-left: 5px; +} + +.right div.admin-add a { + width: 86px; + text-align: center; + padding-bottom: 5px; +} + +/* Input elements */ + +.niceRadio { + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: url("../pics/radio.png"); + overflow: hidden; +} +.radioChecked { + background-position: 0 -17px; +} +.niceRadio input { + margin-left: -18px; +} + +.sel80 { + width: 200px; + padding-bottom: 4px; + text-align: left; +} + +.sel80.aside { + width: 185px; +} +.lineForm, +.lineForm3 { + margin-bottom: 0px; +} + +.niceCheck { + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: url("../pics/checkbox.png"); +} +.niceCheck input { + display: none; +} + +.niceCheck-main { + width: 18px; + height: 18px; + display: inline-block; + cursor: pointer; + background: url("../pics/checkbox-main.png"); +} +.niceCheck-main input { + display: none; +} + +/* Admin build project */ + +section.left { + float: left; + text-align: left; + width: 230px; + margin-left: 250px; +} + +section.right { + float: right; + text-align: left; + width: 200px; + margin-right: 250px; +} + +section .left { + float: left; + margin-right: 4px; +} + +/* Commits history */ + + +article .date-block { + width: 100%; + margin-top: 17px; +} + +article .date-block div.date { + float: left; + background: #bedbf6; + color: #477cae; + border: 1px solid #98bede; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-radius: 4px 0px 0px 4px; + width: 65px; + height: 55px; + padding: 10px; + padding-top: 20px; + -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + font-size: 14px; + text-align: center; +} + +article .date-block div.messages { + float: left; + border: 1px solid #cfdde7; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 0px 4px 4px 4px; + border-radius: 0px 4px 4px 4px; + padding: 10px; + padding-bottom: 0px; + width: 746px; +} + +article .date-block div.message { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; +} + +article .date-block div.message div.body { + float: left; + text-align: left; +} + +article .date-block div.message div.code { + float: right; + margin: -7px 0px 0px 640px; + position: absolute; +} + +article .date-block div.code div.top { + width: 90px; + height: 22px; + border: 1px solid #9dbcd5; + background: #cbdeef; +} + +article .date-block div.code div.bottom { + width: 90px; + text-align: right; +} + +article .date-block div.code div.left { + float: left; + width: 13px; + height: 13px; + padding-left: 2px; + padding-top: 4px; +} + +article .date-block div.code div.right { + float: right; + border: 1px solid #bcd5ea; + background: #FFF; + font-size: 12px; + width: 65px; + height: 14px; + margin: 2px; + padding: 0px 2px 2px 0px; + text-align: center; +} + +article .date-block div.image, .last-commit div.image { + float: left; +} + +article .date-block div.text, .last-commit div.text { + float: left; + padding-left: 10px; + font-size: 12px; +} + +article .date-block div.text span.name, .last-commit span.name { + font-weight: 700; +} + +article .date-block div.text span.date, .last-commit span.date { + font-size: 11px; +} + +article .date-block div.text span.subject img, .last-commit span.subject img { + cursor: pointer; +} + +article .date-block div.fulltext, .last-commit div.fulltext { + font-size: 12px; + padding-top: 10px; + display: none; + /*width: 640px;*/ +} + + +article div.year { + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 760px; + color: 477cae; + text-align: center; + font-size: 12px; + padding: 4px; + margin-left: 87px; + margin-top: 30px; + margin-bottom: 30px; +} + +article div.year p{ + margin: 0; + padding: 0; + color: #477CAE; +} + +div.pagination.tmargin30 { + margin-top: 30px; +} + +/* Create issue */ + +.bordered.nopadding, .right.nopadding { + padding-top: 0px; +} + +p.tmargin5 { + margin-top: 5px; +} + +aside input { + height: 25px; + width: 170px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 0px 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + margin-bottom: 5px; + margin-top: 5px; +} + +aside input.gray { + color: #cfcfcf; +} + +aside input.black { + color: #333333; +} + +div.people { + width: 202px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 10px; + padding-right: 0px; +} + +div.people div.avatar, div.avatar { + float: left; + padding-left: 5px; +} + +div.people div.name, div.name { + padding-top: 4px; + padding-left: 3px; + float: left; +} + +aside div.select, div.people:hover { + background: #dcecfa; +} + +div.label.selected, div.label { + width: 196px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 15px; +} + +div.label.selected:hover, div.label:hover { + background: #dcecfa; +} + +div.labeltext.selected { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; +} + +div.label div.flag { + height: 11px; + width: 3px; + background: #39b54a; + float: left; + margin-top: 3px; + margin-right: 3px; + border-radius: 2px; +} + +.right span.small-text { + font-size: 11px; +} + +.right .bpadding10, .all .bpadding10 { + padding-bottom: 10px; +} + + +/* Issue page */ + +aside div.switcher, aside div.switcher-off { + height: 23px; + width: 194px; + background: url("../pics/switch-on.png"); + color: #FFF; + font-size: 12px; + cursor: pointer; +} + +aside div.switcher-off { + background: url("../pics/switch-off.png"); +} + +aside div.switcher div.swleft, aside div.switcher-off div.swleft { + float: left; + width: 96px; + text-align: center; + padding-top: 3px; +} + +aside div.switcher div.swright, aside div.switcher-off div.swright { + float: right; + width: 96px; + text-align: center; + padding-top: 3px; +} + +p.non-view { + display: none; +} + +div.non-view { + display: none; +} + +div.view { + display: block; +} + +div.nopointer { + cursor: default; +} + +div.nopointer:hover { + background: none; +} + +a.button.tmargin10, input[type="submit"].tmargin10 { + margin-top: 10px; +} + +h3.tmargin0 { + margin-top: 0px; +} + +h3.bmargin10 { + margin-bottom: 10px; +} + +.right div.comment { + text-align: left; + border: 1px solid #b3cce0; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; + width: 631px; + background: #dcecfa; +} + +.right div.comment div.issue-left { + float: left; + font-size: 12px; + margin-top: 4px; +} + +.right div.comment div.issue-right { + float: right; +} + +.right div.comment textarea { + height: 110px; + width: 618px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + color: #575756; + margin: 10px 0px; +} + +.right div.comment-closed { + display: none; +} + +.right div.comment-closed div.state { + float: left; + padding: 2px 0px 2px 0px; + background: #bd4d40; + color: #FFF; + font-size: 12px; + border: 1px solid #924f52; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px 0px 0px 2px; + border-radius: 2px 0px 0px 2px; + width: 80px; + text-align: center; +} + +.right div.comment-closed div.text { + border: 1px solid #dce6ed; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 2px; + -moz-border-radius-bottomright: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + float: left; + width: 561px; +} + +.right div.comment-closed div.avatar { + float: left; + padding: 5px; +} + +.right div.comment-closed div.name { + float: left; + font-size: 12px; + padding-top: 9px; +} + +div.desription-top { + background: #dcecfa; + font-size: 12px; + color: #575756; + border: 1px solid #a9c6dd; + height: 38px; + width: 100%; + margin-bottom: 20px; +} + +div.desription-top div.img { + float: left; + padding-left: 10px; + margin-top: 14px; +} + +div.desription-top input.name { + float: left; + margin-top: 5px; + margin-left: 10px; + background: #FFF; + border: 1px solid #d1deeb; + height: 21px; + width: auto; + color: #575756; + font-size: 12px; + width: 215px; + padding: 2px 5px 3px; +} + +div.desription-top div.role { + float: left; + margin-top: 11px; + margin-left: 10px; + font-size: 11px; +} + + div.fork { + float: right; + margin-top: 5px; +} + div.fork p { + float: right; + margin-top: 5px; + margin-right: 2px; +} + +div.desription-top div.fork { + margin-right: 10px; +} + +.all div.description { + text-align: left; +} + +.all div.description h3{ + color: #575756; + font-weight: 700; + font-size: 14px; + margin-bottom: 5px; + margin-top: 5px; +} + +.all div.description p{ + font-size: 12px; + padding: 0; + margin: 0; + color: #575756; +} + +.all div.last-commit { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin: 10px 0px; +} + + +/* Project main page */ + +table.tablesorter.project .th1 { + width: 130px; + /*padding-left: 17px;*/ +} + +table.tablesorter.project .th2 { + width: 110px; + /*padding-left: 17px;*/ +} + +table.tablesorter.project .th3 { + width: 450px; +} + +table.tablesorter.project .th4 { + /*padding-left: 17px;*/ +} + +table.tablesorter.project div.name { + float: left; + margin-top: 0px; +} + +table.tablesorter.project div.pic { + float: left; + padding-right: 5px; +} + +a.files-see { + color: #565657; + text-decoration: underline; +} + +div.file { + border: 1px solid #dddddd; + margin-top: 10px; +} + +div.file div.top { + height: 28px; + background: #ededed; + -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + position: relative; + z-index: 99; +} + +div.file div.top div.l { + float: left; + margin: 6px 0px 0px 10px; +} + +div.file div.top div.r { + float: right; + margin: 6px 10px 0px 0px; +} + +div.files div.l { + float: left; + margin-bottom: 5px; +} + +div.files div.r { + float: right; + display: none; +} + +div.file { + margin-bottom: 10px; +} + +textarea.commit-message { + height: 60px; + width: 845px; + resize: none; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + margin-top: 5px; +} + +div.files div.l p{ + padding: 0; + margin: 5px 0px 0px 0px; +} + + +/* Code */ + +div.gutter { + float: left; + border: 0 !important; + padding: 10px 5px 10px 0px; + font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; + background: #EDEDED; + width: 40px; + text-align: right; +} + + +/* Tracker */ + +table td.width18 { + width: 18px; +} + +table td.width135 { + width: 135px; +} + +table td.width145 { + width: 145px; +} + +table td.width30 { + width: 30px; +} + +table td.width30.right { + text-align: right; +} + +div.bordered.bpadding20 { + padding-bottom: 20px; +} + +table.tracker-lables td { + padding: 1px; +} + +table.tracker-lables div.label { + width: auto; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; +} + +table.tracker-lables div.label:hover { + background: none; +} + +div.blue-switcher { + height: 19px; + width: 258px; + border: 1px solid #a0a0a1; + border-radius: 3px; + background-color: #575756; + color: #FFF; + -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + float: right; +} + +div.blue-switcher div.open { + float: left; + padding: 1px 0px 2px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; +} + +div.blue-switcher div.selected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); + background-image: -webkit-linear-gradient(top, #619dd2, #125687); + background-image: -moz-linear-gradient(top, #619dd2, #125687); + background-image: -ms-linear-gradient(top, #619dd2, #125687); + background-image: -o-linear-gradient(top, #619dd2, #125687); + background-image: linear-gradient(top, #619dd2, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); + border-radius: 2px; + height: 18px; + width: 128px; + -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin: 0px; + z-index: 2; + +} + +div.blue-switcher div.closed { + float: right; + padding: 1px 0px 0px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; +} + +table.tablesorter.tracker th.th1{ + width: 50px; +} + +table.tablesorter.tracker td.td0{ + width: 10px; + padding-right: 0px; +} + +table.tablesorter.tracker td.td3{ + width: 120px; + padding-top: 10px; +} + +table.tablesorter.tracker td.td3 div.code { + height: 19px; + width: 15px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + padding: 1px 0px 0px 5px; + float: left; + margin-right: 5px; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.avatar { + float: left; + margin-right: 5px; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.answers { + height: 20px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + float: left; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.answers div.pic { + float: left; + margin: 2px; +} + +table.tablesorter.tracker td.td3 div.answers div.count { + float: left; + margin: 0px 5px 0px 2px; +} + +table.tablesorter.tracker div.smalltext { + font-size: 11px; + color: #b0b0b1; + float: left; + margin-top: 3px; +} + + +div.label.selected.tracker { + width: auto; + clear: both; + cursor: default; + margin-left: 0px; + padding: 5px; + float: right; + margin-top: -6px; +} + +div.label.selected.tracker:hover { + background: none; +} + + +div.label.edit { + width: 196px; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; +} + +div.label.edit:hover{ + background: none; +} + +div.labeltext.edit { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + margin-bottom: 5px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; + width: 175px; + cursor: default; +} + +div.labeltext.edit div.text { + float: left; +} + +div.labeltext.edit div.delete { + float: right; + cursor: pointer; + margin-top: 1px; +} + +div.labeltext a { + text-decoration: none; + color: #565657; +} + +div.labeltext.edit a { + text-decoration: none; + color: #FFF; +} + +aside div.colors { + margin: 10px 0px; +} + +aside div.colors div.color { + float: left; + width: 22px; + height: 22px; + margin-right: 5px; + border-radius: 4px; + -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + cursor: pointer; +} + +aside div.colors div.choose { + height: 14px; + width: 14px; + padding: 4px; +} + +aside div.colors div.choose.selected, aside div.colors div.choose:hover { + background: url("../pics/choose.png") no-repeat 50% 50%; + height: 14px; + width: 14px; + padding: 4px; +} + +aside div.lefter { + float: left; +} + +aside div.righter { + float: right; + margin-right: 15px; +} + +tr.label-active { + background: #DDD; + border-radius: 3px; +} + +/* Wiki */ + +span.wiki-gray { + color: #b0b0b1; +} + +.right table.wiki { + border: 1px solid #e2e2e2; + border-bottom: none; + margin-top: 10px; +} + +.right table.wiki td { + border-bottom: 1px solid #e2e2e2; + padding: 8px; +} + +.right table.wiki tr.history td.td1{ + width: 5px; +} + +.right table.wiki tr.history td.td2{ + width: 180px; +} + +a.button.rigth { + float: right; +} + +div.r { + float: right; + margin-left: 10px; +} + +h3.wiki { + color: #477cae; + font-size: 16px; +} + +a.button.width100 { + width: 100px; +} + +.div-tracker-labels { + margin: 2px 13px 2px 0px; + cursor: pointer; + border-radius: 4px; +} + +.div-label-left { + float: left; + width: 150px; +} + +.div-label-right { + float: right; + width: 30px; + text-align: right; + padding-top: 4px; + padding-right: 3px; +} + +div.div-label-left div.label { + width: auto; + clear: both; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; +} + +div.div-label-left div.label:hover { + background: none; +} + +/* Monitoring */ + +aside div.table { + margin-top: 5px; +} + +h3.small { + font-size: 12px; + margin: 0px; + padding: 3px 0px; +} + +table.tablesorter th.lpadding16 { + padding-left: 16px; +} + +div.right.slim { + padding: 5px 14px 40px; + width: 695px; +} + +img.delete-row { + cursor: pointer; +} + + +/* Create group */ + +div.right-error { + float: left; + width: 369px; + height: 59px; + background: url("../pics/error-groups.png"); + margin: 0px 0px 5px -3px; + text-align: center; +} + +div.right-error p { + margin: 0; + padding: 27px 0px 0px 0px; +} + +div.rightlist.nomargin { + margin: 0; +} + +article div.rightlist input.error { + border: 1px solid #bd4d40; + -webkit-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); + -moz-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); + box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); +} + +/* Group pages */ + +article div.groups-profile { + float: left; +} + +article div.groups-profile a { + margin: 0px 0px 0px 5px; +} + +article div.groups-profile img { + margin: 2px 0px 0px 0px; +} + +table.tablesorter.group-list th.th2 { + width: 540px; +} + +/* Platform */ + +table.tablesorter.create-platform th.th1 { + /*padding-left: 17px;*/ + width: 120px; +} + +div.right div.left { + float: left; + margin-right: 5px; +} +table.tablesorter.platform-products th.th1 { + /*padding-left: 17px;*/ + width: 560px; +} + +table.tablesorter.platform-products td.td2 { + text-align: center; +} + +table.tablesorter.platform-repos th.th1 { + /*padding-left: 17px;*/ + width: 480px; +} + +table.tablesorter.platform-repos th.th2 { + /*padding-left: 17px;*/ + width: 80px; +} + +table.tablesorter.platform-repos td.td3 { + text-align: center; +} + +div.new-owner div.field { + float: left; + margin-right: 10px; +} + +div.new-owner div.field input { + width: 230px; +} + +div.new-owner div.search { + float: left; +} + +.tpadding10 { + padding-top: 10px; +} + +article div.all div.hr { + border-bottom: 1px solid #dedede; + width: 565px; + padding-top: 30px; + margin-bottom: 30px; +} + +table.tablesorter.platform-product-main th.th1 { + /*padding-left: 17px;*/ + width: 60px; +} + +table.tablesorter.platform-product-main th.th2 { + /*padding-left: 17px;*/ + width: 400px; +} + +table.tablesorter.platform-product-main th.th3 { + padding-left: 0px; +} + +table.tablesorter.platform-product-main th.th4 { + /*padding-left: 17px;*/ + width: 150px; +} + +div.right.rpadding0 { + padding-right: 0px; +} + +article div.loadFile div.btn { + float: left; +} + +article div.loadFile div.name { + float: left; + margin-left: 20px; + padding-top: 4px; +} + +/* Profile */ + +.bpadding10 { + padding-bottom: 10px; +} + +article div.rightlist div.load { + float: left; + margin-left: 40px; +} + +.notify { + border: 1px solid #c86b60; + background: #f4e1df; + border-radius: 4px; + width: 100%; + margin-top: 20px; +} + +.notify p { + padding: 5px 10px; +} + +/* Pagination */ + +div.pagination em { + font-style: normal; +} + +div.pagination em, div.pagination span, div.pagination a { + border: 1px solid #dddddd; + border-radius: 1px; + background: #ededed; + padding: 3px 7px; +} + +div.pagination em.current { + background: #d5e7f9; + border: 1px solid #c1daed; +} + +div.pagination a { + color: #4c90d0; +} + +/*404*/ + +article div.all.error404 { + background: url("../pics/404.png") no-repeat 59% 0; + height: 500px; + text-align: center; +} + +article div.all.error404 h1 { + margin: 0; + padding: 0; + margin-top: 165px; + font-size: 48px; + font-weight: normal; +} + +article div.all.error404 h1 span { + color: #4496d0; +} + +article div.all.error404 h2 { + margin: 0; + padding: 0; + margin-top: 5px; + font-size: 18px; + font-weight: normal; +} + +article div.all.error404 p { + margin: 0 auto; + padding: 0; + text-align: center; + font-size: 14px; +} + +article div.all.error404 p.pages { + margin-top: 72px; + width: 280px; +} + +article div.all.error404 p.search { + margin-top: 80px; + width: 230px; +} \ No newline at end of file diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index 3abe2040d..fa11ba82f 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -27,17 +27,15 @@ a img { border: none; } .wrap { width: 940px; margin: 0 auto; -// text-align: center; -// border: 1px solid #3f668c; -// -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); -// -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); -// box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + text-align: center; + border: 1px solid #3f668c; + -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); background: #FFF; min-height: 92%; } -.hui {text-align: center;} - .wrap.columns { background: #FFF image-url("page-bg.png") repeat-y; } @@ -209,6 +207,8 @@ header div.profile a:hover { header div.droplist-wrap { margin: -4px 0px 0px 0px; + width: 151px; + float: right; } header div.droplist { @@ -220,7 +220,6 @@ header div.droplist { box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); position: absolute; margin-top: 0px; - margin-left: 138px; border-radius: 0px 0px 4px 4px; display: none; text-align: right; @@ -1423,7 +1422,6 @@ div.description-top div.role { div.fork { float: right; margin-top: 5px; - margin-right: 10px; } div.fork p { float: right; @@ -1431,8 +1429,8 @@ div.fork p { margin-right: 2px; } -div.fork.rmargin0 { - margin-right: 0px; +div.description-top div.fork { + margin-right: 10px; } .all div.description { @@ -1561,7 +1559,7 @@ div.files div.l p{ /* Code */ -div.gutter-new { +div.gutter { float: left; border: 0 !important; padding: 10px 5px 10px 0px; diff --git a/app/views/comments/_add.html.haml b/app/views/comments/_add.html.haml index 223fe2ec6..f527eb041 100644 --- a/app/views/comments/_add.html.haml +++ b/app/views/comments/_add.html.haml @@ -5,12 +5,12 @@ = form_for :comment, :url => new_path, :method => :post, :html => { :class => :form } do |f| = render :partial => "comments/form", :locals => {:f => f} .comment-left - = t("layout.comments.notification_are") + = t("layout.comments.notifications_are") %span.bold - if Subscribe.subscribed_to_commit?(@project, current_user, @commit) - = t("layout.turned_on") + = t("layout.turned_on")\ - else - = t("layout.turned_off") + = t("layout.turned_off")\ \. - if Subscribe.subscribed_to_commit?(@project, current_user, @commit) diff --git a/app/views/git/blobs/_editor.html.haml b/app/views/git/blobs/_editor.html.haml index 0a4c1faaa..0ca587f22 100644 --- a/app/views/git/blobs/_editor.html.haml +++ b/app/views/git/blobs/_editor.html.haml @@ -9,8 +9,8 @@ = text_area_tag :content, @blob.data.encode_to_default, :id => 'code' .both - = t("enter_commit_message") - = text_area_tag :message, '', :class => 'commit-message' + = t("layout.enter_commit_message") + = text_area_tag :message, "Updated #{@blob.name}", :class => 'commit-message' %br %br diff --git a/app/views/git/blobs/_show.html.haml b/app/views/git/blobs/_show.html.haml index 7ffeb46aa..32be360d9 100644 --- a/app/views/git/blobs/_show.html.haml +++ b/app/views/git/blobs/_show.html.haml @@ -32,7 +32,7 @@

- when :text - .gutter-new + .gutter :plain
#{render_line_numbers(text.length)}
%pre{:class => "brush: #{@blob.mime_type.split('/').last}"} diff --git a/app/views/git/repositories/_show.html.haml b/app/views/git/repositories/_show.html.haml index cc5565637..71e68ff29 100644 --- a/app/views/git/repositories/_show.html.haml +++ b/app/views/git/repositories/_show.html.haml @@ -7,10 +7,10 @@ %table#myTable.tablesorter.project{:cellpadding => "0", :cellspacing => "0"} %thead %tr - %th.th1.header= t("layout.project.filename") - %th.th2.header= t("layout.project.age") - %th.th3= t("layout.project.message") - %th.th4.header= t("layout.project.author") + %th.th1= t("layout.projects.filename") + %th.th2= t("layout.projects.age") + %th.th3= t("layout.projects.message") + %th.th4= t("layout.projects.author") %tbody - if @path.present? %tr diff --git a/config/locales/date.en.yml b/config/locales/date.en.yml new file mode 100644 index 000000000..65af20135 --- /dev/null +++ b/config/locales/date.en.yml @@ -0,0 +1,4 @@ +en: + time: + formats: + date_block_format: "%B
%d" diff --git a/config/locales/layout.en.yml b/config/locales/layout.en.yml new file mode 100644 index 000000000..003e5b46b --- /dev/null +++ b/config/locales/layout.en.yml @@ -0,0 +1,7 @@ +en: + layout: + read_more: Read more + turned_on: on + turned_off: of + + enter_commit_message: Commit message diff --git a/config/locales/layout.ru.yml b/config/locales/layout.ru.yml new file mode 100644 index 000000000..d8c9f9cfa --- /dev/null +++ b/config/locales/layout.ru.yml @@ -0,0 +1,7 @@ +ru: + layout: + read_more: Читать дальше + turned_on: включены + turned_off: выключены + + enter_commit_message: Сопровождающее сообщение diff --git a/config/locales/layout/comments.en.yml b/config/locales/layout/comments.en.yml new file mode 100644 index 000000000..f8b0d0fce --- /dev/null +++ b/config/locales/layout/comments.en.yml @@ -0,0 +1,5 @@ +en: + layout: + comments: + has_commented: "adds a note" + notifications_are: "Notifications for new comments are" diff --git a/config/locales/layout/comments.ru.yml b/config/locales/layout/comments.ru.yml new file mode 100644 index 000000000..1a6f75139 --- /dev/null +++ b/config/locales/layout/comments.ru.yml @@ -0,0 +1,5 @@ +ru: + layout: + comments: + has_commented: "оставил комментарий" + notifications_are: "Уведомления о последующих комментариях" diff --git a/config/locales/layout/commits.en.yml b/config/locales/layout/commits.en.yml new file mode 100644 index 000000000..07e4efd0c --- /dev/null +++ b/config/locales/layout/commits.en.yml @@ -0,0 +1,5 @@ +en: + layout: + commits: + subscribe_btn: Enable notifications. + unsubscribe_btn: Disable notifications. diff --git a/config/locales/layout/commits.ru.yml b/config/locales/layout/commits.ru.yml new file mode 100644 index 000000000..1c5cab245 --- /dev/null +++ b/config/locales/layout/commits.ru.yml @@ -0,0 +1,5 @@ +ru: + layout: + commits: + subscribe_btn: Включить уведомления. + unsubscribe_btn: Выключить уведомления. diff --git a/config/locales/layout/messages.en.yml b/config/locales/layout/messages.en.yml new file mode 100644 index 000000000..014af168f --- /dev/null +++ b/config/locales/layout/messages.en.yml @@ -0,0 +1,6 @@ +en: + layout: + messages: + commits: + header_with_branch: "%{committer} add %{commit} into %{branch} branch" + header: "%{committer} add %{commit}" diff --git a/config/locales/layout/projects.en.yml b/config/locales/layout/projects.en.yml new file mode 100644 index 000000000..64673fae7 --- /dev/null +++ b/config/locales/layout/projects.en.yml @@ -0,0 +1,14 @@ +en: + layout: + projects: + diff_show_header: "%{files} with %{additions} and %{deletions}." + about_subheader: "About project" + last_commit: "Last commit" + + filename: File + age: Modification date + message: Message + author: Author + + current_branch: Current branch + files_in_project: Files in diff --git a/config/locales/layout/projects.ru.yml b/config/locales/layout/projects.ru.yml index 1c11dd029..ff40b9cae 100644 --- a/config/locales/layout/projects.ru.yml +++ b/config/locales/layout/projects.ru.yml @@ -1,4 +1,14 @@ ru: layout: projects: - diff_show_header: "%{files} с %{additions} и %{deletions}." + diff_show_header: "%{files} с %{additions} и %{deletions}." + about_subheader: "О проекте" + last_commit: "Последний коммит" + + filename: Файл + age: Дата модификации + message: Сообщение + author: Автор + + current_branch: Текущий бранч + files_in_project: Файлы в From b759e2b065615414b33b36123bd05cbc5538dc44 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 22:54:44 +0600 Subject: [PATCH 36/87] [refs #230] error messages --- app/assets/stylesheets/registration.scss | 48 +++++++++++++------- app/views/devise/passwords/new.html.haml | 40 ++++++++-------- app/views/devise/registrations/new.html.haml | 23 ++++++++-- app/views/layouts/sessions.html.haml | 6 ++- config/locales/devise.en.yml | 2 + config/locales/devise.ru.yml | 2 + config/locales/en.yml | 10 ++++ config/locales/ru.yml | 14 ++++++ 8 files changed, 103 insertions(+), 42 deletions(-) diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/registration.scss index 178e1299e..0eeac9d73 100644 --- a/app/assets/stylesheets/registration.scss +++ b/app/assets/stylesheets/registration.scss @@ -170,21 +170,6 @@ div.in { margin-right: 15px; margin-top: 12px; } -div.error { - background: image-url("error-message.png"); - width: 237px; - height: 35px; - font-size: 12px; - position: absolute; - margin-top: -159px; - margin-left: 645px; - display: none; - p { - margin: 0; - padding: 0; - padding-top: 7px; - text-align: center; } } - /* Footer */ footer { @@ -208,4 +193,35 @@ footer { color: #FFF; text-decoration: none; &:hover { - text-decoration: underline; } } } } } \ No newline at end of file + text-decoration: underline; } } } } } + +div.error { + background: image-url("error-message.png"); + width: 237px; + height: 35px; + font-size: 12px; + position: absolute; + margin-top: -159px; + margin-left: 582px; + //display: none; + p { + margin: 0; + padding: 0; + padding-top: 7px; + text-align: center; } + &.login { + margin-top: -242px; + margin-left: 650px; } + &.name { + margin-top: -202px; + margin-left: 650px; } + &.email { + margin-top: -161px; + margin-left: 650px; } + &.password { + margin-top: -101px; + margin-left: 650px; } } + +div.error.forgot { + margin-top: 8px; + margin-left: 308px; } \ No newline at end of file diff --git a/app/views/devise/passwords/new.html.haml b/app/views/devise/passwords/new.html.haml index e1d9f8b98..a4308a6d5 100644 --- a/app/views/devise/passwords/new.html.haml +++ b/app/views/devise/passwords/new.html.haml @@ -1,22 +1,22 @@ -.block - %h2= title t('devise.passwords.link') - .content - - if resource.errors.present? - .flash - .message.error - - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe - = messages +.wrap + %nav + %a{:href => new_register_request_path} + %p=t("layout.devise.shared_links.sign_up") + / Top block + %header + .logo + / Page + %article + %h2= title t('devise.passwords.forgot') + .content + - if resource.errors.present? + .flash + .message.error.forgot + - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe + = messages = form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post, :class => "form" }) do |f| - .group.wat-cf - .left - = f.label :email, :class => "label" - .right - = f.text_field :email, :class => "text_field" - - .group.navform.wat-cf - %button.button{:tyle => "submit"} - = image_tag "choose.png", :alt => t("devise.passwords.button") - = t("devise.passwords.button") - %span.text_button_padding - = render :partial => "devise/shared/links" \ No newline at end of file + = f.text_field :login, :name => 'user[email]', :class => "registartion-input", :onblur => "if(this.value==''){this.value='#{t('activerecord.attributes.user.email')}';this.className='registartion-input';} else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{t('activerecord.attributes.user.email')}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => t('activerecord.attributes.user.email') + .both + %br + =f.submit t("devise.passwords.send"), :class => 'button', :id => 'btnLogin' diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index 4130f6cef..957a05c01 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -5,31 +5,31 @@ / Page - uname_error = name_error = email_error = password_error = password_confirm_error = nil - if resource.errors.present? # Trash - .flash - resource.errors.each do |attr, array| -uname_error = array if attr == :uname -name_error = array if attr == :name -email_error = array if attr == :email -password_error = array if attr == :password -password_confirm_error = array if attr == :password_confirmation + %article = form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => "form" }) do |f| = hidden_field_tag :invitation_token, @invitation_token .left.first=t('activerecord.attributes.user.uname') .right.first - = f.text_field :uname, :id => 'login', :class => "registartion-input #{uname_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :uname, :id => 'login', :class => "registartion-input #{uname_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.name') .right - = f.text_field :name, :id => 'name', :class => "registartion-input #{name_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :name, :id => 'name', :class => "registartion-input #{name_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.email') .right - = f.text_field :email, :id => 'email', :readonly => 'readonly', :class => "registartion-input #{email_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :email, :id => 'email', :readonly => 'readonly', :class => "registartion-input #{email_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.password') .right - = f.text_field :password, :id => 'pass', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :password, :id => 'pass', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.password_confirm') .right @@ -38,3 +38,16 @@ .in =f.submit t("layout.devise.shared_links.sign_up"), :class => 'button', :id => 'btnLogin' .both + + -if uname_error + .error.login#hintLogin + %p=uname_error + -if name_error + .error.name#hintName + %p=name_error + -if email_error + .error.email#hintEmail + %p=email_error + -if password_error + .error.password#hintPassword + %p=password_error \ No newline at end of file diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 44bcb5f5c..72d0c92eb 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -6,10 +6,14 @@ - if controller_name == 'sessions' && action_name == 'new' = stylesheet_link_tag "login" = javascript_include_tag "login" - - elsif controller_name == 'registrations' && ['new', 'create'].include?(action_name) + - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create'].include?(action_name) = stylesheet_link_tag "registration" + = javascript_include_tag "registration" = csrf_meta_tag + %body + =controller_name + =action_name -# render :partial => "layouts/flashes" = yield diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index c2925fdc3..d1627aed5 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -30,6 +30,8 @@ en: updated: 'Your password was changed successfully. You are now signed in.' updated_not_active: 'Your password was changed successfully.' send_paranoid_instructions: "If your e-mail exists on our database, you will receive a password recovery link on your e-mail" + forgot: 'Forgot password' + send: 'Send' confirmations: send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.' send_paranoid_instructions: 'If your e-mail exists on our database, you will receive an email with instructions about how to confirm your account in a few minutes.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 2c533b6b5..58a5b5e4b 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -32,6 +32,8 @@ ru: updated: "Ваш пароль изменён. Теперь вы вошли в систему." updated_not_active: 'Ваш пароль успешно изменён.' send_paranoid_instructions: "Если Ваш e-mail существует, в течение нескольких минут вы получите e-mail с инструкциями по восстановлению вашего пароля." + forgot: 'Забыли пароль' + send: 'Послать' confirmations: send_instructions: "В течение нескольких минут вы получите e-mail с инструкциями по подтверждению вашей учётной записи." send_paranoid_instructions: 'Если Ваш e-mail существует, то в течение нескольких минут вы получите e-mail с инструкциями по подтверждению вашей учётной записи.' diff --git a/config/locales/en.yml b/config/locales/en.yml index ce01048fb..822464af5 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -917,3 +917,13 @@ en: distro: Source platform: Platform counter: Downloads + + activerecord: + errors: + messages: + too_long: + one: "maximum is %{count} character" + other: "maximum is %{count} characters" + too_short: + one: "minimum is %{count} character" + other: "minimum is %{count} characters" \ No newline at end of file diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 171bb0f23..8216405a0 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -702,3 +702,17 @@ ru: issue_assign_notification: Вам назначили задачу new_commit_comment_notification: Новый комментарий к коммиту invite_approve_notification: Приглашение в ABF + + activerecord: + errors: + messages: + too_long: + one: "не может быть больше чем %{count} символ" + few: "не может быть больше чем %{count} символа" + many: "не может быть больше чем %{count} символов" + other: "не может быть больше чем %{count} символа" + too_short: + one: "не может быть меньше %{count} символа" + few: "не может быть меньше %{count} символов" + many: "не может быть меньше %{count} символов" + other: "не может быть меньше %{count} символа" \ No newline at end of file From a1bfe66791f3bda2ce468ac18f3256b6f722aa70 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 02:43:17 +0600 Subject: [PATCH 37/87] [refs #228] sign_in page --- app/assets/javascripts/login.js | 75 +++++++ app/assets/stylesheets/login.scss | 274 ++++++++++++++++++++++++ app/views/devise/sessions/new.html.haml | 50 +++-- app/views/layouts/sessions.html.haml | 10 +- config/locales/devise.en.yml | 1 + config/locales/devise.ru.yml | 1 + 6 files changed, 384 insertions(+), 27 deletions(-) create mode 100644 app/assets/javascripts/login.js create mode 100644 app/assets/stylesheets/login.scss diff --git a/app/assets/javascripts/login.js b/app/assets/javascripts/login.js new file mode 100644 index 000000000..3cade2375 --- /dev/null +++ b/app/assets/javascripts/login.js @@ -0,0 +1,75 @@ +//= require jquery +//= require jquery_ujs + +$(document).ready(function() { + function logIn() { + $('#new_user').submit(); + //~ $("#hint").fadeIn("slow"); + //~ document.getElementById("user_login").className="registartion-input-error"; + //~ document.getElementById("user_password").className="registartion-input-error"; + } +}); + + function disError(elem) { + $("#hint").fadeOut("fast"); + if (document.getElementById("user_login").className=="registartion-input-error") { + if (this.id=="user_login") { + document.getElementById("user_login").className="registartion-input-focus"; + } else { + document.getElementById("user_login").className="registartion-input-no-focus"; + } + } + if (document.getElementById("user_password").className=="registartion-input-error") { + if (this.id=="user_password") { + document.getElementById("user_password").className="registartion-input-focus"; + } else { + document.getElementById("user_password").className="registartion-input-no-focus"; + } + } + buttonCheck(); + } + + function buttonCheck() { + if ((document.getElementById("user_login").value!="")&&(document.getElementById("user_login").value!="Логин или email")&&(document.getElementById("user_password").value!="")&&(document.getElementById("user_password").value!="Пароль")) { + document.getElementById("btnLogin").className = "button"; + + } else { + document.getElementById("btnLogin").className = "button disabled"; + } + } + +function changeCheck(el) + +{ + var el = el, + input = el.getElementsByTagName("input")[0]; + + if(input.checked) + { + el.style.backgroundPosition="0 0"; + input.checked=false; + } + else + { + el.style.backgroundPosition="0 -17px"; + input.checked=true; + } + return true; +} +function startChangeCheck(el) + +{ + var el = el, + input = el.getElementsByTagName("input")[0]; + if(input.checked) + { + el.style.backgroundPosition="0 -17px"; + } + return true; +} + +function startCheck() +{ + + startChangeCheck(document.getElementById("niceCheckbox1")); +} \ No newline at end of file diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss new file mode 100644 index 000000000..53433c48d --- /dev/null +++ b/app/assets/stylesheets/login.scss @@ -0,0 +1,274 @@ +html, body { + margin: 0; + padding: 0; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + color: #565667; + background: #1f60a1 image-url("bg.png") repeat-x; + min-width: 940px; + min-height: 300px; + text-align: center; + height: 100%; } + +header, section, footer, aside, nav, article, menu { + display: block; } + +input { + &[type="text"]:focus, &[type="password"]:focus, &:focus { + outline: none; } } + +select:focus { + outline: none; } + +a img { + border: none; } + +.wrap { + width: 940px; + margin: 0 auto; + text-align: center; + min-height: 95%; } + +.both { + clear: both; } + +/* Header */ + +header div { + &.logo { + background: image-url("logo.png") no-repeat 50% 100%; + height: 89px; + width: 233px; + margin: 0 auto; + text-align: center; + padding-top: 12%; } + &.text { + color: #FFF; + font-size: 28px; + width: 800px; + text-align: left; + margin-left: 90px; + margin-top: 50px; + font-family: Arial; + text-shadow: 0px 1px 1px #000000; + filter: dropshadow(color = black, offx = 0, offy = 1); + padding-left: 0px; } } + +.niceCheck { + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox.png"); + input { + display: none; } } + +/* Content */ + +article { + width: 257px; + height: 227px; + background: #1c394c image-url("bg-signup.png") repeat-x; + border-radius: 5px; + border: 1px solid #38658c; + margin: 0 auto; + text-align: center; + margin-top: 75px; + -webkit-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); } + +a.button { + background: #125687; + background: image-url("button-green-normal.png"); + border-radius: 3px; + color: #FFF; + font-family: Tahoma; + font-size: 12px; + -webkit-font-smoothing: antialiased; + font-weight: normal; + padding: 5px 25px; + text-align: center; + border: none; + height: 25px; + width: 106px; + text-decoration: none; } + +input.button { + background: #125687; + background: image-url("button-green-normal.png"); + border-radius: 3px; + color: #FFF; + font-family: Tahoma; + font-size: 12px; + -webkit-font-smoothing: antialiased; + font-weight: normal; + padding: 5px 25px; + text-align: center; + border: none; + height: 25px; + width: 106px; + text-decoration: none; + padding: 5px 27px 8px 27px; + height: 28px; + width: 110px; } + +a.button:hover, input.button:hover { + background: #1874b6; + background: image-url("button-green-hover.png"); + cursor: pointer; } + +a.button:active, input.button:active { + background: image-url("button-green-press.png"); } + +a.button { + &:disabled, &.disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } } + +input.button:disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } + +article h1 { + color: #FFF; + font-size: 18px; + font-weight: normal; + font-family: Tahoma; + margin-bottom: 5px; } + +.registartion-input, .registartion-input-focus, .registartion-input-error, .registartion-input-no-focus { + height: 24px; + width: 217px; + border: 1px solid #8199a9; + border-radius: 2px; + color: #cfcfcf; + font-family: Tahoma; + font-size: 12px; + padding-left: 10px; + margin-top: 10px; } + +.registartion-input-focus, .registartion-input-focus-signup { + color: #575756; + -webkit-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); + -moz-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); + box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); } + +.registartion-input-no-focus, .registartion-input-no-focus-signup { + color: #575756; } + +.registartion-input-error, .registartion-input-error-signup { + border: 1px solid #bd4d40; + outline: 1px solid #bd4d40; + outline-offset: -2px; } + +div { + &.registration div { + &.remember { + color: #FFF; + font-size: 12px; + float: left; + padding-left: 15px; + padding-top: 5px; + div { + &.check { + float: left; + margin-top: 15px; + margin-right: 4px; } + &.text { + float: left; + margin-top: 15px; } } } + &.in { + float: right; + padding-right: 15px; + padding-top: 15px; } } + &.hr { + margin-top: 10px; + height: 1px; + width: 100%; + border-bottom: 1px solid #264862; + border-top: 1px solid #264862; } } + +article div.other div { + &.left { + float: left; + font-size: 12px; + color: #FFFFFF; + margin-top: 6px; + margin-left: 15px; } + &.right { + float: right; + margin-right: 15px; + margin-top: 13px; } } + +div { + &.forgot { + width: 257px; + text-align: center; + margin: 0 auto; } + &.password { + float: right; + padding-top: 4px; + p { + margin: 0; + padding: 0; } + a { + color: #FFF; + font-size: 12px; + text-decoration: none; + &:hover { + text-decoration: underline; } } } } + +nav { + width: 96px; + height: 47px; + background: image-url("registration.png") no-repeat; + float: right; + cursor: pointer; + p { + font-size: 14px; + color: #FFF; + margin: 0; + padding: 0; + padding-top: 10px; } } + +div.error { + background: image-url("error-message.png"); + width: 237px; + height: 35px; + font-size: 12px; + position: absolute; + margin-top: -159px; + margin-left: 582px; + display: none; + p { + margin: 0; + padding: 0; + padding-top: 7px; + text-align: center; } } + +/* Footer */ + +footer { + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; + ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: center; + li { + display: inline; + a { + font-size: 12px; + color: #FFF; + text-decoration: none; + &:hover { + text-decoration: underline; } } } } } \ No newline at end of file diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 9dbb1585a..1ab3f7236 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -1,22 +1,30 @@ -#block-login.block - %h2= title t("layout.sessions.sign_in_header") - .content.login - - if flash.present? - .flash - - flash.each do |key, value| - .message{ :title => key.to_s.humanize, :class => (key == :alert ? "error" : key) } - %p= value +.wrap + %nav + %p= link_to t("layout.devise.shared_links.sign_up"), new_register_request_path + / Top block + %header + .logo + / Page + %article + - is_error = flash.first.first == :alert # Trash = form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => "form login" }) do |f| - .group.wat-cf - .left= f.label :login, :class => "label right" - .right= f.text_field :login, :class => "text_field" - .group.wat-cf - .left= f.label :password, :class => "label right" - .right= f.password_field :password, :class => "text_field" - .group.navform.wat-cf - .right - %button.button{:type => "submit"} - = image_tag 'code.png', :alt => "Save" - = t("layout.login") - %span.text_button_padding - = render :partial => "devise/shared/links" + %h1= title t("layout.sessions.sign_in_header") + = f.text_field :login, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='Логин или email';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='Логин или email'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => "Логин или email" + %br/ + = f.password_field :password, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='Пароль';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='Пароль'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "password", :value => "Пароль" + %br/ + .registration + .remember + .check + %span#niceCheckbox1.niceCheck{:onclick => "changeCheck(this)"} + = f.check_box :remember_me + .text=t('devise.sessions.remember_me') + .in=f.submit t('layout.devise.shared_links.sign_in'), :class => 'button disabled', :id => 'btnLogin' + %div{:style => "clear: both;"} + .hr + .both + #hint.error{:style => is_error ? 'display: block;' : ''} + %p=t('devise.failure.invalid') + .forgot + .password + %p= link_to t("layout.devise.shared_links.forgot_password"), new_password_path(resource_name) \ No newline at end of file diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 4b120a493..3984c4fb7 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -3,13 +3,11 @@ %head %meta{:content => "text/html; charset=utf-8", "http-equiv" => "content-type"} = display_meta_tags :site => APP_CONFIG['project_name'] - = stylesheet_link_tag "application" - = javascript_include_tag "application" + = stylesheet_link_tag "login" + = javascript_include_tag "login" = csrf_meta_tag %body - #container - #box - = render :partial => "layouts/flashes" - = yield + -# render :partial => "layouts/flashes" + = yield = render 'layouts/counters' unless current_user.try(:admin?) diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index 8babbd620..66b687629 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -22,6 +22,7 @@ en: sessions: signed_in: 'Signed in successfully.' signed_out: 'Signed out successfully.' + remember_me: 'Remember me' passwords: send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.' updated: 'Your password was changed successfully. You are now signed in.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 3c6762372..72953910d 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -24,6 +24,7 @@ ru: sessions: signed_in: "Вход в систему выполнен." signed_out: "Выход из системы выполнен." + remember_me: 'Запомнить меня' passwords: send_instructions: "В течение нескольких минут вы получите e-mail с инструкциями по восстановлению вашего пароля." updated: "Ваш пароль изменён. Теперь вы вошли в систему." From 71d90790030b3ad7e5c1e050457410555787f586 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 10:41:25 +0600 Subject: [PATCH 38/87] [refs #228] fix registration link --- app/assets/stylesheets/login.scss | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss index 53433c48d..7f55b17fa 100644 --- a/app/assets/stylesheets/login.scss +++ b/app/assets/stylesheets/login.scss @@ -226,12 +226,13 @@ nav { background: image-url("registration.png") no-repeat; float: right; cursor: pointer; - p { + a { font-size: 14px; color: #FFF; margin: 0; padding: 0; - padding-top: 10px; } } + padding-top: 10px; + text-decoration: none;} } div.error { background: image-url("error-message.png"); From ee84ac84cff77500928f620aea00f3041e0e4300 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 11:43:40 +0600 Subject: [PATCH 39/87] [refs #228] fix I18n --- app/assets/javascripts/login.js | 116 ++++++++++-------------- app/views/devise/sessions/new.html.haml | 12 ++- config/locales/devise.en.yml | 2 + config/locales/devise.ru.yml | 2 + 4 files changed, 60 insertions(+), 72 deletions(-) diff --git a/app/assets/javascripts/login.js b/app/assets/javascripts/login.js index 3cade2375..975ee33d8 100644 --- a/app/assets/javascripts/login.js +++ b/app/assets/javascripts/login.js @@ -1,75 +1,55 @@ -//= require jquery -//= require jquery_ujs - -$(document).ready(function() { - function logIn() { - $('#new_user').submit(); - //~ $("#hint").fadeIn("slow"); - //~ document.getElementById("user_login").className="registartion-input-error"; - //~ document.getElementById("user_password").className="registartion-input-error"; - } -}); - - function disError(elem) { - $("#hint").fadeOut("fast"); - if (document.getElementById("user_login").className=="registartion-input-error") { - if (this.id=="user_login") { - document.getElementById("user_login").className="registartion-input-focus"; - } else { - document.getElementById("user_login").className="registartion-input-no-focus"; - } - } - if (document.getElementById("user_password").className=="registartion-input-error") { - if (this.id=="user_password") { - document.getElementById("user_password").className="registartion-input-focus"; - } else { - document.getElementById("user_password").className="registartion-input-no-focus"; - } - } - buttonCheck(); - } - - function buttonCheck() { - if ((document.getElementById("user_login").value!="")&&(document.getElementById("user_login").value!="Логин или email")&&(document.getElementById("user_password").value!="")&&(document.getElementById("user_password").value!="Пароль")) { - document.getElementById("btnLogin").className = "button"; - +function disError(elem) { + $("#hint").fadeOut("fast"); + if (document.getElementById("user_login").className=="registartion-input-error") { + if (this.id=="user_login") { + document.getElementById("user_login").className="registartion-input-focus"; } else { - document.getElementById("btnLogin").className = "button disabled"; + document.getElementById("user_login").className="registartion-input-no-focus"; } } - -function changeCheck(el) - -{ - var el = el, - input = el.getElementsByTagName("input")[0]; - - if(input.checked) - { - el.style.backgroundPosition="0 0"; - input.checked=false; - } - else - { - el.style.backgroundPosition="0 -17px"; - input.checked=true; - } - return true; -} -function startChangeCheck(el) - -{ - var el = el, - input = el.getElementsByTagName("input")[0]; - if(input.checked) - { - el.style.backgroundPosition="0 -17px"; - } - return true; + if (document.getElementById("user_password").className=="registartion-input-error") { + if (this.id=="user_password") { + document.getElementById("user_password").className="registartion-input-focus"; + } else { + document.getElementById("user_password").className="registartion-input-no-focus"; + } + } + buttonCheck(); } -function startCheck() -{ +function buttonCheck() { + var login_default = document.getElementById("login_default").value; + var pass_default = document.getElementById("password_default").value; + if ((document.getElementById("user_login").value!="")&&(document.getElementById("user_login").value!=login_default)&& + (document.getElementById("user_password").value!="")&&(document.getElementById("user_password").value!=pass_default)) { + document.getElementById("btnLogin").className = "button"; + } else { + document.getElementById("btnLogin").className = "button disabled"; + } +} - startChangeCheck(document.getElementById("niceCheckbox1")); +function changeCheck(el) { + var el = el, + input = el.getElementsByTagName("input")[0]; + + if(input.checked) { + el.style.backgroundPosition="0 0"; + input.checked=false; + } + else { + el.style.backgroundPosition="0 -17px"; + input.checked=true; + } + return true; +} + +function startChangeCheck(el) { + var el = el, + input = el.getElementsByTagName("input")[0]; + if(input.checked) { el.style.backgroundPosition="0 -17px"; } + return true; +} + +function startCheck() { + startChangeCheck(document.getElementById("niceCheckbox1")); } \ No newline at end of file diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 1ab3f7236..5aebcb2d7 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -1,17 +1,21 @@ .wrap %nav - %p= link_to t("layout.devise.shared_links.sign_up"), new_register_request_path + %a{:href => new_register_request_path} + %p=t("layout.devise.shared_links.sign_up") / Top block %header .logo / Page %article - - is_error = flash.first.first == :alert # Trash + - is_error = flash.try(:first).try(:first) == :alert # Trash + - login = t('devise.sessions.login'); password = t('devise.sessions.password') + =hidden_field_tag :login_default, login + =hidden_field_tag :password_default, password = form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => "form login" }) do |f| %h1= title t("layout.sessions.sign_in_header") - = f.text_field :login, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='Логин или email';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='Логин или email'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => "Логин или email" + = f.text_field :login, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='#{login}';this.className='registartion-input';} else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{login}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => login %br/ - = f.password_field :password, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='Пароль';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='Пароль'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "password", :value => "Пароль" + = f.password_field :password, :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='#{password}';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{password}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "password", :value => password %br/ .registration .remember diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index 66b687629..c2925fdc3 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -23,6 +23,8 @@ en: signed_in: 'Signed in successfully.' signed_out: 'Signed out successfully.' remember_me: 'Remember me' + login: 'Login or email' + password: 'Password' passwords: send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.' updated: 'Your password was changed successfully. You are now signed in.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 72953910d..2c533b6b5 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -25,6 +25,8 @@ ru: signed_in: "Вход в систему выполнен." signed_out: "Выход из системы выполнен." remember_me: 'Запомнить меня' + login: 'Логин или email' + password: 'Пароль' passwords: send_instructions: "В течение нескольких минут вы получите e-mail с инструкциями по восстановлению вашего пароля." updated: "Ваш пароль изменён. Теперь вы вошли в систему." From f4954557b38b641c334cd907d65cc47aab21c925 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 12:51:10 +0600 Subject: [PATCH 40/87] [refs #228] fix showing error --- app/views/devise/sessions/new.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/devise/sessions/new.html.haml b/app/views/devise/sessions/new.html.haml index 5aebcb2d7..985798573 100644 --- a/app/views/devise/sessions/new.html.haml +++ b/app/views/devise/sessions/new.html.haml @@ -7,7 +7,7 @@ .logo / Page %article - - is_error = flash.try(:first).try(:first) == :alert # Trash + - is_error = (flash.try(:first).try(:first) == :alert && flash.try(:first).try(:last) == t('devise.failure.invalid')) # Trash - login = t('devise.sessions.login'); password = t('devise.sessions.password') =hidden_field_tag :login_default, login =hidden_field_tag :password_default, password From 632e908442612038953383faac7bbd88b8a2cef6 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 13:05:55 +0600 Subject: [PATCH 41/87] [refs #228] add logins to precompile array --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index e0a74b7f8..45df24379 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -62,7 +62,7 @@ Rosa::Application.configure do config.assets.digest = true # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) - config.assets.precompile += %w() + config.assets.precompile += %w(login.css login.js) end # require 'stub_xml_rpc' From 3136159777990d143fbd3ab5332970160f801d36 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 17:38:13 +0600 Subject: [PATCH 42/87] [refs #230] add red borders to invalid attributes --- app/assets/stylesheets/registration.scss | 211 +++++++++++++++++++ app/views/devise/registrations/new.html.haml | 88 ++++---- app/views/layouts/sessions.html.haml | 8 +- config/locales/en.yml | 2 + config/locales/ru.yml | 6 +- 5 files changed, 261 insertions(+), 54 deletions(-) create mode 100644 app/assets/stylesheets/registration.scss diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/registration.scss new file mode 100644 index 000000000..178e1299e --- /dev/null +++ b/app/assets/stylesheets/registration.scss @@ -0,0 +1,211 @@ +html, body { + margin: 0; + padding: 0; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + color: #565667; + background: #1f60a1 image-url("bg.png") repeat-x; + min-width: 940px; + min-height: 300px; + text-align: center; + height: 100%; } + +header, section, footer, aside, nav, article, menu { + display: block; } + +input { + &[type="text"]:focus, &[type="password"]:focus, &:focus { + outline: none; } } + +select:focus { + outline: none; } + +a img { + border: none; } + +.wrap { + width: 940px; + margin: 0 auto; + text-align: center; + min-height: 95%; } + +.both { + clear: both; } + +/* Header */ + +header div { + &.logo { + background: image-url("logo.png") no-repeat 50% 100%; + height: 89px; + width: 233px; + margin: 0 auto; + text-align: center; + padding-top: 12%; } + &.text { + color: #FFF; + font-size: 28px; + width: 800px; + text-align: left; + margin-left: 90px; + margin-top: 50px; + font-family: Arial; + text-shadow: 0px 1px 1px #000000; + filter: dropshadow(color = black, offx = 0, offy = 1); + padding-left: 0px; } } + +.niceCheck { + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox.png"); + input { + display: none; } } + +/* Content */ + +article { + width: 380px; + height: 254px; + background: #1c394c image-url("bg-signup.png") repeat-x; + border-radius: 5px; + border: 1px solid #38658c; + margin: 0 auto; + text-align: center; + margin-top: 75px; + -webkit-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.5); } + +a.button, input.button { + background: #125687; + background: image-url("button-green-normal.png"); + border-radius: 3px; + color: #FFF; + font-family: Tahoma; + font-size: 12px; + -webkit-font-smoothing: antialiased; + font-weight: normal; + padding: 5px 25px; + text-align: center; + border: none; + height: 25px; + width: 106px; + text-decoration: none; } + +article div { + &.left { + float: left; + font-size: 12px; + color: #FFF; + margin-left: 15px; + margin-top: 16px; } + &.right { + float: right; + margin-right: 15px; + padding-bottom: 2px; } } + +.first { + padding-top: 5px; } + +input.button { + padding: 3px 27px 8px 27px; + height: 25px; + width: auto; } + +a.button:hover, input.button:hover { + background: #1874b6; + background: image-url("button-green-hover.png"); + cursor: pointer; } + +a.button:active, input.button:active { + background: image-url("button-green-press.png"); } + +a.button { + &:disabled, &.disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } } + +input.button { + &:disabled, &.disabled { + background: #125687; + background: image-url("button-green-disabled.png"); + cursor: default; } } + +article h1 { + color: #FFF; + font-size: 18px; + font-weight: normal; + font-family: Tahoma; + margin-bottom: 5px; } + +.registartion-input, .registartion-input-focus, .registartion-input-error, .registartion-input-no-focus { + height: 24px; + width: 217px; + border: 1px solid #8199a9; + border-radius: 2px; + color: #cfcfcf; + font-family: Tahoma; + font-size: 12px; + padding-left: 10px; + margin-top: 10px; } + +.registartion-input-focus, .registartion-input-focus-signup { + color: #575756; + -webkit-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); + -moz-box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); + box-shadow: 0px 0px 7px 2px rgba(126, 183, 237, 0.75); } + +.registartion-input-no-focus, .registartion-input-no-focus-signup { + color: #575756; } + +.registartion-input-error, .registartion-input-error-signup { + border: 1px solid #bd4d40; + outline: 1px solid #bd4d40; + outline-offset: -2px; } + +div.in { + float: right; + margin-right: 15px; + margin-top: 12px; } + +div.error { + background: image-url("error-message.png"); + width: 237px; + height: 35px; + font-size: 12px; + position: absolute; + margin-top: -159px; + margin-left: 645px; + display: none; + p { + margin: 0; + padding: 0; + padding-top: 7px; + text-align: center; } } + +/* Footer */ + +footer { + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; + ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: center; + li { + display: inline; + a { + font-size: 12px; + color: #FFF; + text-decoration: none; + &:hover { + text-decoration: underline; } } } } } \ No newline at end of file diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index 43a0aed4c..4130f6cef 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -1,52 +1,40 @@ -#block-signup.block - %h2= title t("devise.registrations.sign_up_header") - .content +.wrap + / Top block + %header + .logo + / Page + - uname_error = name_error = email_error = password_error = password_confirm_error = nil + - if resource.errors.present? # Trash + .flash + - resource.errors.each do |attr, array| + -uname_error = array if attr == :uname + -name_error = array if attr == :name + -email_error = array if attr == :email + -password_error = array if attr == :password + -password_confirm_error = array if attr == :password_confirmation + %article = form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => "form" }) do |f| = hidden_field_tag :invitation_token, @invitation_token - - if resource.errors.present? - .flash - .message.error= resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe - - .group.wat-cf - .left - = f.label :uname, :class => "label" - .right - = f.text_field :uname, :class => "text_field" - - .group.wat-cf - .left - = f.label :email, :class => "label" - .right - = f.text_field :email, :class => "text_field", :readonly => 'readonly' - - .group.wat-cf - .left - = f.label :name, :class => "label" - .right - = f.text_field :name, :class => "text_field" - - - if resource.authentications.blank? - .group.wat-cf - .left - = f.label :password, :class => "label" - .right - = f.password_field :password, :class => "text_field" - - .group.wat-cf - .left - = f.label :password_confirmation, :class => "label" - .right - = f.password_field :password_confirmation, :class => "text_field" - - .group.wat-cf - .left - = f.label :language, :class => "label" - .right - = f.select :language, User::LANGUAGES_FOR_SELECT - - .group.navform.wat-cf - %button.button{:type => "submit"} - = image_tag("choose.png", :alt => t("devise.registrations.sign_up_header")) - = t("devise.registrations.sign_up_header") - %span.text_button_padding - = render :partial => "devise/shared/links" + .left.first=t('activerecord.attributes.user.uname') + .right.first + = f.text_field :uname, :id => 'login', :class => "registartion-input #{uname_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .left=t('activerecord.attributes.user.name') + .right + = f.text_field :name, :id => 'name', :class => "registartion-input #{name_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .left=t('activerecord.attributes.user.email') + .right + = f.text_field :email, :id => 'email', :readonly => 'readonly', :class => "registartion-input #{email_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .left=t('activerecord.attributes.user.password') + .right + = f.text_field :password, :id => 'pass', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .left=t('activerecord.attributes.user.password_confirm') + .right + = f.text_field :password_confirmation, :id => 'pass2', :class => "registartion-input #{password_confirm_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + .in + =f.submit t("layout.devise.shared_links.sign_up"), :class => 'button', :id => 'btnLogin' + .both diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 3984c4fb7..44bcb5f5c 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -3,11 +3,15 @@ %head %meta{:content => "text/html; charset=utf-8", "http-equiv" => "content-type"} = display_meta_tags :site => APP_CONFIG['project_name'] - = stylesheet_link_tag "login" - = javascript_include_tag "login" + - if controller_name == 'sessions' && action_name == 'new' + = stylesheet_link_tag "login" + = javascript_include_tag "login" + - elsif controller_name == 'registrations' && ['new', 'create'].include?(action_name) + = stylesheet_link_tag "registration" = csrf_meta_tag %body -# render :partial => "layouts/flashes" = yield = render 'layouts/counters' unless current_user.try(:admin?) + %footer= render "layouts/menu/bottom" diff --git a/config/locales/en.yml b/config/locales/en.yml index bfaf314bb..d1e712d37 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -584,6 +584,8 @@ en: updated_at: Updated role: System role language: Language + password: Password + password_confirm: Confirmation product_build_list: id: Id diff --git a/config/locales/ru.yml b/config/locales/ru.yml index d2eea738f..9697cdf4c 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -54,7 +54,7 @@ ru: devise: shared_links: sign_in: Войти - sign_up: Зарегистрироваться + sign_up: Регистрация forgot_password: Забыли пароль? confirm_again: Не получили инструкции по подтверждению? unlock: Не получили инструкции по разблокировке? @@ -571,7 +571,7 @@ ru: name: Имя login: Псевдоним или Email email: Email - uname: Псевдоним + uname: Никнейм ssh_key: SSH ключ current_password: Текущий пароль role: Роль @@ -579,6 +579,8 @@ ru: updated_at: Обновлен role: Роль в системе language: Язык + password: Пароль + password_confirm: Повторите пароль product_build_list: id: Id From 322e68212f1dda26280101d08c8c398032b9e32d Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 17:46:19 +0600 Subject: [PATCH 43/87] [refs #230] add registration to precompile list --- config/environments/production.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/environments/production.rb b/config/environments/production.rb index 45df24379..d8e51606f 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -62,7 +62,7 @@ Rosa::Application.configure do config.assets.digest = true # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) - config.assets.precompile += %w(login.css login.js) + config.assets.precompile += %w(login.css login.js registration.css) end # require 'stub_xml_rpc' From ba4fae071f3cf12b1a1ed010f7742ac70de3030f Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Wed, 29 Feb 2012 22:54:44 +0600 Subject: [PATCH 44/87] [refs #230] error messages --- app/assets/stylesheets/registration.scss | 48 +++++++++++++------- app/views/devise/passwords/new.html.haml | 40 ++++++++-------- app/views/devise/registrations/new.html.haml | 23 ++++++++-- app/views/layouts/sessions.html.haml | 6 ++- config/locales/devise.en.yml | 2 + config/locales/devise.ru.yml | 2 + config/locales/en.yml | 10 ++++ config/locales/ru.yml | 14 ++++++ 8 files changed, 103 insertions(+), 42 deletions(-) diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/registration.scss index 178e1299e..0eeac9d73 100644 --- a/app/assets/stylesheets/registration.scss +++ b/app/assets/stylesheets/registration.scss @@ -170,21 +170,6 @@ div.in { margin-right: 15px; margin-top: 12px; } -div.error { - background: image-url("error-message.png"); - width: 237px; - height: 35px; - font-size: 12px; - position: absolute; - margin-top: -159px; - margin-left: 645px; - display: none; - p { - margin: 0; - padding: 0; - padding-top: 7px; - text-align: center; } } - /* Footer */ footer { @@ -208,4 +193,35 @@ footer { color: #FFF; text-decoration: none; &:hover { - text-decoration: underline; } } } } } \ No newline at end of file + text-decoration: underline; } } } } } + +div.error { + background: image-url("error-message.png"); + width: 237px; + height: 35px; + font-size: 12px; + position: absolute; + margin-top: -159px; + margin-left: 582px; + //display: none; + p { + margin: 0; + padding: 0; + padding-top: 7px; + text-align: center; } + &.login { + margin-top: -242px; + margin-left: 650px; } + &.name { + margin-top: -202px; + margin-left: 650px; } + &.email { + margin-top: -161px; + margin-left: 650px; } + &.password { + margin-top: -101px; + margin-left: 650px; } } + +div.error.forgot { + margin-top: 8px; + margin-left: 308px; } \ No newline at end of file diff --git a/app/views/devise/passwords/new.html.haml b/app/views/devise/passwords/new.html.haml index e1d9f8b98..a4308a6d5 100644 --- a/app/views/devise/passwords/new.html.haml +++ b/app/views/devise/passwords/new.html.haml @@ -1,22 +1,22 @@ -.block - %h2= title t('devise.passwords.link') - .content - - if resource.errors.present? - .flash - .message.error - - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe - = messages +.wrap + %nav + %a{:href => new_register_request_path} + %p=t("layout.devise.shared_links.sign_up") + / Top block + %header + .logo + / Page + %article + %h2= title t('devise.passwords.forgot') + .content + - if resource.errors.present? + .flash + .message.error.forgot + - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe + = messages = form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post, :class => "form" }) do |f| - .group.wat-cf - .left - = f.label :email, :class => "label" - .right - = f.text_field :email, :class => "text_field" - - .group.navform.wat-cf - %button.button{:tyle => "submit"} - = image_tag "choose.png", :alt => t("devise.passwords.button") - = t("devise.passwords.button") - %span.text_button_padding - = render :partial => "devise/shared/links" \ No newline at end of file + = f.text_field :login, :name => 'user[email]', :class => "registartion-input", :onblur => "if(this.value==''){this.value='#{t('activerecord.attributes.user.email')}';this.className='registartion-input';} else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{t('activerecord.attributes.user.email')}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => t('activerecord.attributes.user.email') + .both + %br + =f.submit t("devise.passwords.send"), :class => 'button', :id => 'btnLogin' diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index 4130f6cef..957a05c01 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -5,31 +5,31 @@ / Page - uname_error = name_error = email_error = password_error = password_confirm_error = nil - if resource.errors.present? # Trash - .flash - resource.errors.each do |attr, array| -uname_error = array if attr == :uname -name_error = array if attr == :name -email_error = array if attr == :email -password_error = array if attr == :password -password_confirm_error = array if attr == :password_confirmation + %article = form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :class => "form" }) do |f| = hidden_field_tag :invitation_token, @invitation_token .left.first=t('activerecord.attributes.user.uname') .right.first - = f.text_field :uname, :id => 'login', :class => "registartion-input #{uname_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :uname, :id => 'login', :class => "registartion-input #{uname_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.name') .right - = f.text_field :name, :id => 'name', :class => "registartion-input #{name_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :name, :id => 'name', :class => "registartion-input #{name_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.email') .right - = f.text_field :email, :id => 'email', :readonly => 'readonly', :class => "registartion-input #{email_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :email, :id => 'email', :readonly => 'readonly', :class => "registartion-input #{email_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.password') .right - = f.text_field :password, :id => 'pass', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :password, :id => 'pass', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.password_confirm') .right @@ -38,3 +38,16 @@ .in =f.submit t("layout.devise.shared_links.sign_up"), :class => 'button', :id => 'btnLogin' .both + + -if uname_error + .error.login#hintLogin + %p=uname_error + -if name_error + .error.name#hintName + %p=name_error + -if email_error + .error.email#hintEmail + %p=email_error + -if password_error + .error.password#hintPassword + %p=password_error \ No newline at end of file diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 44bcb5f5c..72d0c92eb 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -6,10 +6,14 @@ - if controller_name == 'sessions' && action_name == 'new' = stylesheet_link_tag "login" = javascript_include_tag "login" - - elsif controller_name == 'registrations' && ['new', 'create'].include?(action_name) + - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create'].include?(action_name) = stylesheet_link_tag "registration" + = javascript_include_tag "registration" = csrf_meta_tag + %body + =controller_name + =action_name -# render :partial => "layouts/flashes" = yield diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index c2925fdc3..d1627aed5 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -30,6 +30,8 @@ en: updated: 'Your password was changed successfully. You are now signed in.' updated_not_active: 'Your password was changed successfully.' send_paranoid_instructions: "If your e-mail exists on our database, you will receive a password recovery link on your e-mail" + forgot: 'Forgot password' + send: 'Send' confirmations: send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.' send_paranoid_instructions: 'If your e-mail exists on our database, you will receive an email with instructions about how to confirm your account in a few minutes.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 2c533b6b5..58a5b5e4b 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -32,6 +32,8 @@ ru: updated: "Ваш пароль изменён. Теперь вы вошли в систему." updated_not_active: 'Ваш пароль успешно изменён.' send_paranoid_instructions: "Если Ваш e-mail существует, в течение нескольких минут вы получите e-mail с инструкциями по восстановлению вашего пароля." + forgot: 'Забыли пароль' + send: 'Послать' confirmations: send_instructions: "В течение нескольких минут вы получите e-mail с инструкциями по подтверждению вашей учётной записи." send_paranoid_instructions: 'Если Ваш e-mail существует, то в течение нескольких минут вы получите e-mail с инструкциями по подтверждению вашей учётной записи.' diff --git a/config/locales/en.yml b/config/locales/en.yml index d1e712d37..83d246487 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -609,3 +609,13 @@ en: issue_assign_notification: New task assigned new_commit_comment_notification: New comment to commit invite_approve_notification: Invitation to ABF + + activerecord: + errors: + messages: + too_long: + one: "maximum is %{count} character" + other: "maximum is %{count} characters" + too_short: + one: "minimum is %{count} character" + other: "minimum is %{count} characters" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 9697cdf4c..a92aa7bde 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -604,3 +604,17 @@ ru: issue_assign_notification: Вам назначили задачу new_commit_comment_notification: Новый комментарий к коммиту invite_approve_notification: Приглашение в ABF + + activerecord: + errors: + messages: + too_long: + one: "не может быть больше чем %{count} символ" + few: "не может быть больше чем %{count} символа" + many: "не может быть больше чем %{count} символов" + other: "не может быть больше чем %{count} символа" + too_short: + one: "не может быть меньше %{count} символа" + few: "не может быть меньше %{count} символов" + many: "не может быть меньше %{count} символов" + other: "не может быть меньше %{count} символа" From c3d7221f97d34853ae2af9da0fff2649bfa4bc96 Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Wed, 29 Feb 2012 21:51:44 +0400 Subject: [PATCH 45/87] [issue #195] Fixed bugs * Highlighting in submenu * File history --- app/views/git/commits/index.html.haml | 3 ++- app/views/projects/_submenu.html.haml | 4 ++-- config/routes.rb | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/views/git/commits/index.html.haml b/app/views/git/commits/index.html.haml index dbba73fb6..e7226765e 100644 --- a/app/views/git/commits/index.html.haml +++ b/app/views/git/commits/index.html.haml @@ -2,7 +2,8 @@ = render :partial => 'projects/repo_block', :locals => {:project => @project} = render :partial => 'git/commits/commits', :object => @commits -= render :partial => 'git/commits/paginate' +- if @render_paginate + = render :partial => 'git/commits/paginate' -#.block .content .inner diff --git a/app/views/projects/_submenu.html.haml b/app/views/projects/_submenu.html.haml index 0038fd5ca..974fe68f3 100644 --- a/app/views/projects/_submenu.html.haml +++ b/app/views/projects/_submenu.html.haml @@ -5,8 +5,8 @@ = @project.name %nav %ul - %li= link_to t("project_menu.project"), project_path(@project), {:class => (act == :show && contr.in?([:trees, :blobs])) ? 'active' : ''} - %li= link_to t("project_menu.commits"), commits_path(@project), {:class => (act == :index && contr == :commits) ? 'active' : ''} + %li= link_to t("project_menu.project"), project_path(@project), {:class => (act.in?([:show, :edit]) && contr.in?([:trees, :blobs])) ? 'active' : ''} + %li= link_to t("project_menu.commits"), commits_path(@project), {:class => (act.in?([:index, :show]) && contr == :commits) ? 'active' : ''} - if @project.is_rpm %li= link_to t("project_menu.builds"), project_build_lists_path(@project), {:class => (act == :index && contr == :builds) ? 'active' : ''} %li= link_to t("project_menu.tracker"), project_issues_path(@project), {:class => (act == :index && contr == :issues) ? 'active' : ''} diff --git a/config/routes.rb b/config/routes.rb index 1c54d5d8c..c6d803d18 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -195,7 +195,7 @@ Rosa::Application.routes.draw do match '/projects/:project_id/git/tree/:treeish(/*path)', :controller => "git/trees", :action => :show, :treeish => /[0-9a-zA-Z_.\-]*/, :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 + 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 From fe0eba8e61af809233ba42839555b2b030596247 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 00:23:19 +0600 Subject: [PATCH 46/87] [refs #194] fix index page --- app/assets/stylesheets/custom.scss | 4 ++++ app/views/issues/_issue.html.haml | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index 82a4a153a..6aab4ed77 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -140,3 +140,7 @@ article div.date-block div.date { .date_select { select {margin:3px 0px; padding:0px;} } + +table.tablesorter tbody td a { + color: #58595B; +} diff --git a/app/views/issues/_issue.html.haml b/app/views/issues/_issue.html.haml index fe9765050..d2202ef7b 100644 --- a/app/views/issues/_issue.html.haml +++ b/app/views/issues/_issue.html.haml @@ -3,7 +3,8 @@ %span{:style => "display: none;"}=issue.serial_id %td.td1=issue.serial_id %td - %div=issue.title + %a{:href => project_issue_path(@project.id, issue.serial_id)} + %div=issue.title .smalltext =issue.created_at.to_s(:long) =t("layout.issues.by") if issue.creator @@ -13,8 +14,6 @@ .labeltext.selected{:style => "background: ##{label.color};"}=label.name .both %td.td3 - %a{:href => project_issue_path(@project.id, issue.serial_id)} - .code='#' .avatar =link_to image_tag(issue.user.avatar(22), :alt => 'avatar'), user_path(issue.user) if issue.user %a{:href => "#{project_issue_path @project, issue}#block-list"} From 5b25ea221b22b7719ae782297084101c44490f89 Mon Sep 17 00:00:00 2001 From: "konstantin.grabar" Date: Wed, 29 Feb 2012 22:25:57 +0400 Subject: [PATCH 47/87] [refs #195] Add default value to is_rpm field for projects --- app/views/collaborators/edit.html.haml | 2 +- app/views/projects/_submenu.html.haml | 6 ++-- ...d_default_values_to_is_rpm_for_projects.rb | 5 ++++ db/schema.rb | 28 +++++++++++++------ 4 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 db/migrate/20120229182356_add_default_values_to_is_rpm_for_projects.rb diff --git a/app/views/collaborators/edit.html.haml b/app/views/collaborators/edit.html.haml index 0b0256c54..6190e4f1e 100644 --- a/app/views/collaborators/edit.html.haml +++ b/app/views/collaborators/edit.html.haml @@ -20,7 +20,7 @@ %td .img = image_tag(gravatar_url(user.email)) - .forimg= link_to user.name, user_path(user) + .forimg= link_to "#{user.uname} (#{user.name})", user_path(user) - Relation::ROLES.each_with_index do |role, i| %td .radio diff --git a/app/views/projects/_submenu.html.haml b/app/views/projects/_submenu.html.haml index 974fe68f3..9f7576422 100644 --- a/app/views/projects/_submenu.html.haml +++ b/app/views/projects/_submenu.html.haml @@ -9,7 +9,9 @@ %li= link_to t("project_menu.commits"), commits_path(@project), {:class => (act.in?([:index, :show]) && contr == :commits) ? 'active' : ''} - if @project.is_rpm %li= link_to t("project_menu.builds"), project_build_lists_path(@project), {:class => (act == :index && contr == :builds) ? 'active' : ''} - %li= link_to t("project_menu.tracker"), project_issues_path(@project), {:class => (act == :index && contr == :issues) ? 'active' : ''} - %li= link_to t("project_menu.wiki"), project_wiki_index_path(@project), {:class => contr == :wiki ? 'active' : ''} + - if @project.has_issues + %li= link_to t("project_menu.tracker"), project_issues_path(@project), {:class => (act == :index && contr == :issues) ? 'active' : ''} + - if @project.has_wiki + %li= link_to t("project_menu.wiki"), project_wiki_index_path(@project), {:class => contr == :wiki ? 'active' : ''} %li= link_to t("project_menu.readme"), "#" #pending %li= link_to t("project_menu.settings"), edit_project_path(@project), {:class => (act == :edit && contr == :projects) ? 'active' : ''} diff --git a/db/migrate/20120229182356_add_default_values_to_is_rpm_for_projects.rb b/db/migrate/20120229182356_add_default_values_to_is_rpm_for_projects.rb new file mode 100644 index 000000000..4c223d2db --- /dev/null +++ b/db/migrate/20120229182356_add_default_values_to_is_rpm_for_projects.rb @@ -0,0 +1,5 @@ +class AddDefaultValuesToIsRpmForProjects < ActiveRecord::Migration + def change + Project.update_all(:is_rpm => true) + end +end diff --git a/db/schema.rb b/db/schema.rb index f86aaa75b..6b826a049 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,15 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120228100121) do +ActiveRecord::Schema.define(:version => 20120229182356) do + + create_table "activity_feeds", :force => true do |t| + t.integer "user_id", :null => false + t.string "kind" + t.text "data" + t.datetime "created_at" + t.datetime "updated_at" + end create_table "arches", :force => true do |t| t.string "name", :null => false @@ -155,6 +163,7 @@ ActiveRecord::Schema.define(:version => 20120228100121) do t.datetime "updated_at" t.string "uname" t.integer "own_projects_count", :default => 0, :null => false + t.text "description" end create_table "issues", :force => true do |t| @@ -276,31 +285,29 @@ ActiveRecord::Schema.define(:version => 20120228100121) 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.string "default_branch", :default => "master" t.boolean "is_rpm", :default => true - t.boolean "has_wiki", :default => false end - add_index "projects", ["category_id"], :name => "index_projects_on_category_id" - add_index "projects", ["owner_id"], :name => "index_projects_on_name_and_owner_id_and_owner_type", :unique => true, :case_sensitive => false - create_table "register_requests", :force => true do |t| t.string "name" t.string "email" t.string "token" t.boolean "approved", :default => false t.boolean "rejected", :default => false - t.datetime "created_at" - t.datetime "updated_at" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.string "interest" t.text "more" 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" @@ -359,6 +366,7 @@ ActiveRecord::Schema.define(:version => 20120228100121) do t.string "name" t.string "email", :default => "", :null => false t.string "encrypted_password", :limit => 128, :default => "", :null => false + t.string "password_salt", :default => "", :null => false t.string "reset_password_token" t.datetime "remember_created_at" t.datetime "created_at" @@ -367,10 +375,14 @@ ActiveRecord::Schema.define(:version => 20120228100121) do t.string "uname" t.string "role" t.string "language", :default => "en" - t.datetime "reset_password_sent_at" + t.string "confirmation_token" + t.datetime "confirmed_at" + t.datetime "confirmation_sent_at" t.integer "own_projects_count", :default => 0, :null => false + t.datetime "reset_password_sent_at" end + add_index "users", ["confirmation_token"], :name => "index_users_on_confirmation_token", :unique => true add_index "users", ["email"], :name => "index_users_on_email", :unique => true add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true add_index "users", ["uname"], :name => "index_users_on_uname", :unique => true From 3a10ed91b2ed91c4cd45129d8f84317c43e78541 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 00:33:01 +0600 Subject: [PATCH 48/87] [refs #194] more uniq --- app/assets/stylesheets/custom.scss | 2 +- app/views/issues/_issue.html.haml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index 6aab4ed77..802bbb364 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -141,6 +141,6 @@ article div.date-block div.date { select {margin:3px 0px; padding:0px;} } -table.tablesorter tbody td a { +table.tablesorter tbody td a .issue_title { color: #58595B; } diff --git a/app/views/issues/_issue.html.haml b/app/views/issues/_issue.html.haml index d2202ef7b..46a940249 100644 --- a/app/views/issues/_issue.html.haml +++ b/app/views/issues/_issue.html.haml @@ -4,7 +4,7 @@ %td.td1=issue.serial_id %td %a{:href => project_issue_path(@project.id, issue.serial_id)} - %div=issue.title + %div.issue_title=issue.title .smalltext =issue.created_at.to_s(:long) =t("layout.issues.by") if issue.creator From aea631824f4afcf9e172f4fe4588d99c79f3bba0 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 00:39:12 +0600 Subject: [PATCH 49/87] [refs #230] remove debug messages --- app/views/layouts/sessions.html.haml | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 72d0c92eb..7987eefb9 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -12,8 +12,6 @@ = csrf_meta_tag %body - =controller_name - =action_name -# render :partial => "layouts/flashes" = yield From fd03f3deabedb2b501237bf61a455324f317df4b Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 00:45:37 +0600 Subject: [PATCH 50/87] [refs #230] remove wrong js --- app/views/layouts/sessions.html.haml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 7987eefb9..0dea127f5 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -8,7 +8,6 @@ = javascript_include_tag "login" - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create'].include?(action_name) = stylesheet_link_tag "registration" - = javascript_include_tag "registration" = csrf_meta_tag %body From 5f71d430fcfb23655bc31f8277bb42c97958b732 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 00:45:37 +0600 Subject: [PATCH 51/87] [refs #230] remove wrong js --- app/views/layouts/sessions.html.haml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 72d0c92eb..d32991963 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -8,7 +8,6 @@ = javascript_include_tag "login" - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create'].include?(action_name) = stylesheet_link_tag "registration" - = javascript_include_tag "registration" = csrf_meta_tag %body From ceae6730d8c3d5b03859eddc35aac1ffa0d01bb8 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 01:14:46 +0600 Subject: [PATCH 52/87] [refs #230] fix I18n --- config/locales/en.yml | 19 +++++++++---------- config/locales/ru.yml | 19 +++++++++---------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 83d246487..9be3f9bd8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -601,16 +601,6 @@ en: platform: Platform counter: Downloads - notifications: - subjects: - new_comment_notification: New comment to your task - new_issue_notification: New task added to project - new_user_notification: Registered on project «%{ project_name }» - issue_assign_notification: New task assigned - new_commit_comment_notification: New comment to commit - invite_approve_notification: Invitation to ABF - - activerecord: errors: messages: too_long: @@ -619,3 +609,12 @@ en: too_short: one: "minimum is %{count} character" other: "minimum is %{count} characters" + + notifications: + subjects: + new_comment_notification: New comment to your task + new_issue_notification: New task added to project + new_user_notification: Registered on project «%{ project_name }» + issue_assign_notification: New task assigned + new_commit_comment_notification: New comment to commit + invite_approve_notification: Invitation to ABF diff --git a/config/locales/ru.yml b/config/locales/ru.yml index a92aa7bde..0753ae736 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -596,16 +596,6 @@ ru: platform: Архитектура counter: Закачки - notifications: - subjects: - new_comment_notification: Новый комментарий к Вашей задаче - new_issue_notification: Новая задача добавлена к проекту - new_user_notification: Регистрация на проекте «%{ project_name }» - issue_assign_notification: Вам назначили задачу - new_commit_comment_notification: Новый комментарий к коммиту - invite_approve_notification: Приглашение в ABF - - activerecord: errors: messages: too_long: @@ -618,3 +608,12 @@ ru: few: "не может быть меньше %{count} символов" many: "не может быть меньше %{count} символов" other: "не может быть меньше %{count} символа" + + notifications: + subjects: + new_comment_notification: Новый комментарий к Вашей задаче + new_issue_notification: Новая задача добавлена к проекту + new_user_notification: Регистрация на проекте «%{ project_name }» + issue_assign_notification: Вам назначили задачу + new_commit_comment_notification: Новый комментарий к коммиту + invite_approve_notification: Приглашение в ABF From cadd1995d1f984b522aeddb95dd66ecc142825f3 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 01:50:08 +0600 Subject: [PATCH 53/87] [refs #230] fix forgot password SignUp style --- app/assets/stylesheets/reg_session.scss | 15 +++++++++++++++ app/assets/stylesheets/registration.scss | 2 +- app/views/layouts/sessions.html.haml | 2 +- config/environments/production.rb | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 app/assets/stylesheets/reg_session.scss diff --git a/app/assets/stylesheets/reg_session.scss b/app/assets/stylesheets/reg_session.scss new file mode 100644 index 000000000..224481094 --- /dev/null +++ b/app/assets/stylesheets/reg_session.scss @@ -0,0 +1,15 @@ +@import "registration"; + +nav { + width: 96px; + height: 47px; + background: image-url("registration.png") no-repeat; + float: right; + cursor: pointer; + a { + font-size: 14px; + color: #FFF; + margin: 0; + padding: 0; + padding-top: 10px; + text-decoration: none;} } \ No newline at end of file diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/registration.scss index 0eeac9d73..a7834dadc 100644 --- a/app/assets/stylesheets/registration.scss +++ b/app/assets/stylesheets/registration.scss @@ -224,4 +224,4 @@ div.error { div.error.forgot { margin-top: 8px; - margin-left: 308px; } \ No newline at end of file + margin-left: 308px; } diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 0dea127f5..7593d1b50 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -7,7 +7,7 @@ = stylesheet_link_tag "login" = javascript_include_tag "login" - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create'].include?(action_name) - = stylesheet_link_tag "registration" + = stylesheet_link_tag "reg_session" = csrf_meta_tag %body diff --git a/config/environments/production.rb b/config/environments/production.rb index d8e51606f..8c711ab81 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -62,7 +62,7 @@ Rosa::Application.configure do config.assets.digest = true # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) - config.assets.precompile += %w(login.css login.js registration.css) + config.assets.precompile += %w(login.css login.js reg_session.css) end # require 'stub_xml_rpc' From bcef3052281045453c5b6b379f91d4d9c64b5192 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 02:19:39 +0600 Subject: [PATCH 54/87] [refs #230] change title style; remove unused js --- app/views/devise/passwords/new.html.haml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/views/devise/passwords/new.html.haml b/app/views/devise/passwords/new.html.haml index a4308a6d5..6f0733103 100644 --- a/app/views/devise/passwords/new.html.haml +++ b/app/views/devise/passwords/new.html.haml @@ -7,7 +7,9 @@ .logo / Page %article - %h2= title t('devise.passwords.forgot') + %br + %h1= title t('devise.passwords.forgot') + %br .content - if resource.errors.present? .flash @@ -16,7 +18,7 @@ = messages = form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post, :class => "form" }) do |f| - = f.text_field :login, :name => 'user[email]', :class => "registartion-input", :onblur => "if(this.value==''){this.value='#{t('activerecord.attributes.user.email')}';this.className='registartion-input';} else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value=='#{t('activerecord.attributes.user.email')}'){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();", :type => "text", :value => t('activerecord.attributes.user.email') + = f.text_field :login, :name => 'user[email]', :class => "registartion-input", :onblur => "if(this.value==''){this.value='#{t('activerecord.attributes.user.email')}';this.className='registartion-input';} else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value=='#{t('activerecord.attributes.user.email')}'){this.value='';this.className='registartion-input-focus';};", :value => t('activerecord.attributes.user.email') .both %br =f.submit t("devise.passwords.send"), :class => 'button', :id => 'btnLogin' From dedd64f976928613d4303f40d0fbbfadad8774ac Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Thu, 1 Mar 2012 03:29:16 +0400 Subject: [PATCH 55/87] [issue #195] Returned lost files. --- app/assets/stylesheets/custom.scss | 135 + app/assets/stylesheets/main.css | 2163 ------------ app/assets/stylesheets/main.scss | 3883 ++++++++++++---------- app/views/shared/_feed_message.html.haml | 3 +- db/schema.rb | 24 +- 5 files changed, 2344 insertions(+), 3864 deletions(-) delete mode 100644 app/assets/stylesheets/main.css diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index 82a4a153a..bf3d48eb5 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -140,3 +140,138 @@ article div.date-block div.date { .date_select { select {margin:3px 0px; padding:0px;} } + +article div#repo-wrapper div.hr { + width: 100%; +} + +article table.commit_stats { + line-height: 1.4em; + margin-top: 12px; + width: 100%; + border-spacing: 0; + border-top: 1px solid #DDDDDD; + margin: 10px 0; + padding: 0; + font-size: 90%; + border-collapse: collapse; +} + +article table.commit_stats td { + border-bottom: 1px solid #DDDDDD; + padding: 0.4em 5px; +} + +article table.commit_stats .diffstat { + text-align: right; + white-space: nowrap; + padding-right: 0; + width: 1%; +} + +article div.file div.diff_data { + overflow-x: auto; +} + +article div.file table { + border-spacing: 0; + border-collapse: collapse; +} + +#repo-wrapper table.diff td.line_numbers { + -moz-user-select: none; + font-size: 12px; + padding: 0 0.5em; + background-color: #ECECEC; + border-right: 1px solid #DDDDDD; + color: #999999; + text-align: right; +} + +#repo-wrapper table.diff td.line_numbers, +#repo-wrapper table.diff td.header, +#repo-wrapper table.diff td.code { + font-family: 'Bitstream Vera Sans Mono','Courier',monospace; +} + +#repo-wrapper table.diff td.header { + background-color: #ECECEC; + color: #999999; + width: 100%; + line-height: 1.4em; + font-size: 90%; +} + +#repo-wrapper table.diff td.code, #repo-wrapper table.diff td.header { + padding-left: 10px; +} + +#repo-wrapper table.diff pre { + padding: 0; + margin: 0; +} + +#repo-wrapper table.diff .diff-content { + padding: 0; + margin: 0; +} + +#repo-wrapper table.diff tr td.code.del { + background-color: #FFDDDD; +} + +#repo-wrapper table.diff tr td.code.del .idiff { + background-color: #F2ACAD; +} + +#repo-wrapper table.diff tr td.code.ins { + background-color: #DDFFDD; +} + +#repo-wrapper table.diff tr td.code.ins .idiff { + background-color: #BAFBAD; +} + +#repo-wrapper div.comment { + background: none repeat scroll 0 0 #DCECFA; + border: 1px solid #B3CCE0; + border-radius: 4px 4px 4px 4px; + margin-bottom: 10px; + margin-top: 15px; + padding: 6px; + text-align: left; +} + +#repo-wrapper div.view { + display: block; +} + +#repo-wrapper div.comment div.wrapper { + border: 1px solid #DEDEDE; + border-radius: 4px 4px 4px 4px; + color: #575756; + background: #FFFFFF; + font-size: 12px; + height: 110px; + margin: 10px 0; + padding: 5px; +} + +#repo-wrapper div.comment div.wrapper textarea { + border: none; + color: #575756; + font-family: Tahoma,Geneva,Helvetica,sans-serif; + width: 100%; + height: 100%; + resize: none; +} + +#repo-wrapper div.comment div.comment-left { + float: left; + font-size: 12px; + margin-top: 4px; +} + +#repo-wrapper div.comment div.comment-right { + float: right; +} diff --git a/app/assets/stylesheets/main.css b/app/assets/stylesheets/main.css deleted file mode 100644 index 16d9cc7aa..000000000 --- a/app/assets/stylesheets/main.css +++ /dev/null @@ -1,2163 +0,0 @@ -html, body { - margin: 0; - padding: 0; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - color: #565657; - background: #1f60a1 url("../pics/bg.png") repeat-x; - min-width: 940px; - min-height: 600px; - text-align: center; - height: 100%; -} - -header, section, footer, aside, nav, article, menu { - display: block; -} - -input[type="text"]:focus { outline: none; } - -input[type="password"]:focus { outline: none; } - -input:focus { outline: none; } - -select:focus { outline: none; } - -a img { border: none; } - -.wrap { - width: 940px; - margin: 0 auto; - text-align: center; - border: 1px solid #3f668c; - -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - background: #FFF; - min-height: 92%; -} - -.wrap.columns { - background: #FFF url("../pics/page-bg.png") repeat-y; -} - -.both { - clear: both; -} - -/* Top menu */ - -header { - -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - position: relative; - z-index: 1000; -} - -header div.left { - background: url("../pics/top-left.png"); - height: 46px; - width: 14px; - float: left; -} - -header div.middle { - background: url("../pics/top-middle.png"); - float: left; - height: 46px; - width: 912px; -} - -header div.right { - background: url("../pics/top-right.png"); - height: 46px; - width: 14px; - float: right; -} - -/* Left part of top menu*/ - -header menu { - float: left; - margin: 0; - padding: 0; -} - -header menu ul { - list-style: none; - margin: 0; - padding: 10px 0px 0px 0px; -} - -header menu ul li { - display: inline; -} - -header menu ul li a { - font-size: 12px; - color: #FFF; - text-decoration: none; - height: 43px; - padding: 15px 15px 15px 15px; -} - -header menu ul li a:hover { - color: #cee7ff; -} - -header menu ul li a.first { - padding-left: 45px; -} - -header menu ul li a.active { - background: url("../pics/menu-hover.png") repeat-x; -} - - - -header div.logo { - float: left; - margin-top: -25px; - padding-left: 10px; - position: absolute; -} - -/* Right part of top menu */ - -header div.information { - float: right; -} - -header div.search { - float: left; - margin: 10px 0px 0px 0px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; - background: #FFF; - border: 1px solid #7691aa; -} - -header div.search div.pic { - background: url("../pics/search-button.png"); - height: 22px; - width: 24px; - float: left; -} - -header div.search div.field { - float: left; - margin: -1px 0px 0px 0px; -} - -header div.search div.field input { - border: none; - height: 18px; - background: none; - width: 132px; - font-size: 12px; - font-family: Arial; - padding: 2px 0px 0px 0px; -} - -header div.search div.field input.gray { - color: #cfcfcf; -} - -header div.search div.field input.black { - color: #333333; -} - -header div.avatar { - float:left; - padding: 6px 10px 10px 10px; - -} - -header div.information div.active { - background: url("../pics/menu-hover.png") repeat-x; -} - -header div.information div.user { - float: left; - margin-left: 14px; -} - -header div.profile { - float: left; - text-align: right; - color: #FFF; - font-size: 12px; - padding-top: 12px; -} - -header div.profile a { - color: #FFF; - text-decoration: none; - padding-right: 10px; -} - -header div.profile a:hover { - text-decoration: underline; -} - - -header div.droplist-wrap { - margin: -4px 0px 0px 0px; - width: 151px; - float: right; -} - -header div.droplist { - background: url("../pics/bg-droplist.png") repeat-x; - height: 91px; - width: 151px; - -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin-top: 0px; - border-radius: 0px 0px 4px 4px; - display: none; - text-align: right; - z-index: 9999; -} - -header div.droplist-wrap div.a { - margin-top: 5px; -} - -header div.droplist a{ - position: relative; - padding-left: 15px; - font-size: 12px; - color: #7eb7ed; - text-decoration: none; - padding-right: 15px; - margin-top: 10px; -} - -header div.droplist a:hover{ - text-decoration: underline; -} - - -/* Submenu */ - -.sub-menu { - height: 38px; - margin: -7px 0px 0px 0px; - padding: 0px 0px 0px 15px; - background: #ededed; - position: relative; - z-index: 100; - border-bottom: 1px solid #FFF; - -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); -} - -.sub-menu div.left { - float: left; - width: 200px; - border-right: 1px solid #dcdcdc; - font-size: 12px; - text-align: left; - font-weight: 700; - padding: 10px 0px 0px 0px; - height: 21px; -} - -.sub-menu div.right { - float: left; -} - - -.sub-menu nav { /* */ - float: left; - margin: 0px 0px 0px 0px; -} - -.sub-menu nav ul { - list-style: none; - text-align: left; - padding: 0; - margin: 0; - padding-top: 5px; -} - -.sub-menu nav ul li { - display: inline; -} - -.sub-menu nav ul li a { - font-size: 12px; - color: #575756; - text-decoration: none; - height: 34px; - padding: 0px 20px 6px 20px; -} - -.sub-menu nav ul li a.active { - background: url("../pics/submenu-hover.png") repeat-x; -} - -.sub-menu nav ul li a:hover { - color: #2b6daf; -} - -/* Page markup */ - -article { - font-size: 12px; -} - -aside { - float: left; - width: 215px; -} - -article div.right { - float: right; - width: 645px; - padding: 20px 40px 40px 40px; - text-align: left; -} - -article div.right.bigpadding { - width: 445px; - padding: 20px 140px 40px 140px; -} - -article div.right.middlepadding { - width: 510px; - padding: 20px 120px 40px 50px; -} - -article div.right.middlepadding div.rightlist{ - width: 300px; -} - -article div.right.middlepadding div.rightlist input{ - width: 300px; -} - -article div.right.middlepadding div.rightlist textarea{ - width: 300px; -} - -article div.all { - width: 855px; - padding: 20px 40px 20px 40px; - text-align: left; -} - -article div.all.bigpadding { - width: 605px; - padding: 0px 40px 20px 200px; - text-align: left; -} - -article div.all.verybigpadding { - width: 545px; - padding: 0px 40px 20px 200px; - text-align: left; -} - -article div.all.verybigpadding div.left { - float: left; -} - -article div.all.verybigpadding div.left img{ - padding-right: 40px; - margin-top: 20px; -} - -article div.all.verybigpadding div.left h3, article div.all.verybigpadding div.left h4, article div.all.verybigpadding div.left p{ - width: 420px; -} - -article div.all.verybigpadding div.left .tmargin5 { - padding-top: 5px; - position: relative; -} - - -/* Left part of page markup */ - -aside div.bordered { - border-bottom: 1px solid #dee5eb; - text-align: left; - padding: 20px 0px 30px 15px; -} - -aside div.block { - text-align: left; - padding: 10px 0px 30px 15px; -} - -/* Common page parts markups */ - -article h4 { - font-size: 12px; - margin-bottom: 0px; - padding-bottom: 2px; -} - -article p { - margin: 0; - padding: 0; -} - -div.expand-gray-down, div.expand-gray-up { - height: 10px; - width: 12px; - float: left; - margin: 3px 0px 0px 3px; - cursor: pointer; -} - -div.expand-gray-down { - background: url("../pics/expand-gray.png") no-repeat; -} - -div.expand-gray-up { - background: url("../pics/expand-gray2.png") no-repeat; -} - -article a.button { - display: inline-block; - white-space: nowrap; - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); - border: 1px solid #5084b4; - padding: 4px 20px; - margin: 0; - font-size: 12px; - text-decoration: none; - color: #FFF; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align: center; -} - -article a.button:hover{ - background-color: #34719d; - background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); - background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); - background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); - background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); - background-image: -o-linear-gradient(top, #7fb3e1, #34719d); - background-image: linear-gradient(top, #7fb3e1, #34719d); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); - text-decoration: none; -} - - - -article a.button:active{ - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); -} - -article a.disabled { - background-color: #888888; - background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); - background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); - background-image: -moz-linear-gradient(top, #aaaaaa, #888888); - background-image: -ms-linear-gradient(top, #aaaaaa, #888888); - background-image: -o-linear-gradient(top, #aaaaaa, #888888); - background-image: linear-gradient(top, #aaaaaa, #888888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); - cursor: default; - color: #d8d8d8; - border: 1px solid #aaaaaa; - cursor: default; - text-align: center; -} - -article input[type="file"] { - - -} - -article input[type="submit"] { - display: inline-block; - white-space: nowrap; - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); - border: 1px solid #5084b4; - padding: 4px 20px; - margin: 0; - font-size: 12px; - text-decoration: none; - color: #FFF; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align: center; - height: auto; - width: auto; - -} - -article input[type="submit"]:hover{ - background-color: #34719d; - background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); - background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); - background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); - background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); - background-image: -o-linear-gradient(top, #7fb3e1, #34719d); - background-image: linear-gradient(top, #7fb3e1, #34719d); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); - text-decoration: none; - cursor: pointer; -} - - - -article input[type="submit"]:active{ - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); -} - -article input[type="submit"]:disabled { - background-color: #888888; - background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); - background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); - background-image: -moz-linear-gradient(top, #aaaaaa, #888888); - background-image: -ms-linear-gradient(top, #aaaaaa, #888888); - background-image: -o-linear-gradient(top, #aaaaaa, #888888); - background-image: linear-gradient(top, #aaaaaa, #888888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); - cursor: default; - color: #d8d8d8; - border: 1px solid #aaaaaa; - cursor: default; - text-align: center; -} - - -article h3{ - font-size: 14px; - color: #575756; - margin-bottom: 0; - padding-bottom: 2px; -} - -article h3.fix { - margin-top: 0px; - padding-top: 0px; -} - -article a{ - color: #7eb7ed; - font-size: 12px; - text-decoration: none; - padding: 0px 0px; -} - -article a:hover{ - text-decoration: underline; -} - -/* Right part of page markup */ - -article div.right div.hr { - border-bottom: 1px solid #dedede; - width: 100%; - padding-top: 30px; - margin-bottom: 30px; -} - -article div.right div.hr.bottom { - margin-bottom: 10px; - padding-top: 20px; -} - -article div.right div.hr.top { - padding-top: 7px; - margin-bottom: 20px; -} - -article div.leftside { - float: left; -} - -article div.rightside { - float: right; -} - -article div.all.bigpadding div.rightside { - margin-right: 40px; -} - -.lefter { - float: left; - margin-right: 5px; -} - -.lefter span.gap { - padding-right: 59px; -} - -.lefter.top { - margin-top: -6px; -} - -.w25 { - width: 25px; -} - -.w420 { - width: 420px; - padding-bottom: 20px; -} - -.padd25 { - padding-left: 25px; -} - -.width70 { - width: 70px; -} - - -/* Footer */ - -footer { - height: 32px; - padding-left: 15px; - width: 900px; - margin: 0 auto; - text-align: center; -} - -footer ul { - margin: 0; - padding: 0; - list-style: none; - font-size: 12px; - color: #FFF; - padding-top: 10px; - text-align: left; -} - -footer ul li { - display: inline; -} - -footer ul li a { - font-size: 12px; - color: #FFF; - text-decoration: none; -} - -footer ul li a:hover { - text-decoration: underline; -} - -/* Main page */ - -aside div.bordered table{ - padding: 0; - margin: 0; - padding-bottom: 0px; - margin-left: -10px; -} - -aside div.bordered table td{ - font-size: 12px; - padding: 1px 0px 0px 0px; -} - -aside div.block table td { - text-align: right; - padding: 2px 3px 1px 3px; -} - - -aside div.block table td.first{ - width: 150px; - text-align: left; -} - -article div.right div.messages { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 100%; - color: #477cae; - text-align: center; - font-size: 12px; - padding: 4px 0px 4px 0px; - cursor: pointer; - margin: 15px 0px 15px 0px; -} - -article div.right div.messages:hover { - background: #dceffa; -} - -article div.right div.messages p{ - margin: 0; - padding: 0; -} - -article div.activity { - border: 1px solid #d6d6d6; - /*width: 614px;*/ - border-radius: 5px; - padding: 6px; - margin-top: 15px; - color: #333; -} - -article div.activity div.top div.image { - float: left; -} - -article div.activity div.top div.text { - float: left; - padding-left: 10px; - font-size: 12px; -} - -article div.activity div.top div.text span.name { - font-weight: 700; -} - -article div.activity div.top div.text span.date { - font-size: 11px; -} - -article div.text span.subject { - float: left; -} - -article div.activity div.top div.text span.subject img { - cursor: pointer; -} - -article div.activity div.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; -} - -article div.activity div.fulltext.view { - display: block; -} - -/* Admin page */ - -.admin-preferences ul { - list-style: none; - margin: 0; - padding: 0; - margin-top: 20px; - width: 215px; - text-align: left; -} - -.admin-preferences ul li{ - padding-top: 5px; - padding-bottom: 5px; - width: 215px; -} - -.admin-preferences ul li.active, .admin-preferences ul li:hover { - background: #dcecfa; -} - -.admin-preferences ul li a{ - color: #575756; - text-decoration: none; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 15px; -} - -.right div.leftlist, .all div.leftlist { - float: left; - width: 200px; - margin: 0px 0px 10px 0px; -} - -.right div.rightlist, .all div.rightlist { - float: left; - width: 400px; - font-size: 12px; - color: #575756; - margin: 0px 0px 10px 0px; -} - -.right div.rightlist div.check { - float: left; -} - -.right div.rightlist div.forcheck { - float: left; - margin: 1px 0px 0px 5px; -} -div.rightlist textarea { - height: 110px; - width: 350px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; -} - -div.rightlist input[type="text"], div.rightlist input[type="password"] { - height: 15px; - width: 350px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; -} - -/* Admin-members page */ - -.right table div.img { - float: left; -} - -.right table div.radio { - float: left; - margin: 5px 0px 0px 0px; -} - -.right table div.forimg { - float: left; - margin: 5px 0px 0px 5px; -} - -.right table div.forradio { - float: left; - margin: 5px 0px 0px 5px; -} - -.right table span.niceCheck-main { - margin-top: 3px; -} - -.right div.admin-search { - float: left; -} - -.right div.admin-role { - float: left; -} - -.right div.admin-search input { - width: 300px; - margin-right: 5px; - height: 23px; - border: 1px solid #dedede; - border-radius: 3px; - margin-top: 1px; - font-size: 12px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - padding-left: 5px; -} - -article input.gray { - color: #cfcfcf; -} - -article input.black { - color: #333333; -} - -.right div.admin-add { - float: left; - padding-top: 1px; - margin-left: 5px; -} - -.right div.admin-add a { - width: 86px; - text-align: center; - padding-bottom: 5px; -} - -/* Input elements */ - -.niceRadio { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: url("../pics/radio.png"); - overflow: hidden; -} -.radioChecked { - background-position: 0 -17px; -} -.niceRadio input { - margin-left: -18px; -} - -.sel80 { - width: 200px; - padding-bottom: 4px; - text-align: left; -} - -.sel80.aside { - width: 185px; -} -.lineForm, -.lineForm3 { - margin-bottom: 0px; -} - -.niceCheck { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: url("../pics/checkbox.png"); -} -.niceCheck input { - display: none; -} - -.niceCheck-main { - width: 18px; - height: 18px; - display: inline-block; - cursor: pointer; - background: url("../pics/checkbox-main.png"); -} -.niceCheck-main input { - display: none; -} - -/* Admin build project */ - -section.left { - float: left; - text-align: left; - width: 230px; - margin-left: 250px; -} - -section.right { - float: right; - text-align: left; - width: 200px; - margin-right: 250px; -} - -section .left { - float: left; - margin-right: 4px; -} - -/* Commits history */ - - -article .date-block { - width: 100%; - margin-top: 17px; -} - -article .date-block div.date { - float: left; - background: #bedbf6; - color: #477cae; - border: 1px solid #98bede; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 0px 0px 4px; - border-radius: 4px 0px 0px 4px; - width: 65px; - height: 55px; - padding: 10px; - padding-top: 20px; - -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - font-size: 14px; - text-align: center; -} - -article .date-block div.messages { - float: left; - border: 1px solid #cfdde7; - -moz-border-radius-topleft: 0px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 0px 4px 4px 4px; - border-radius: 0px 4px 4px 4px; - padding: 10px; - padding-bottom: 0px; - width: 746px; -} - -article .date-block div.message { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; -} - -article .date-block div.message div.body { - float: left; - text-align: left; -} - -article .date-block div.message div.code { - float: right; - margin: -7px 0px 0px 640px; - position: absolute; -} - -article .date-block div.code div.top { - width: 90px; - height: 22px; - border: 1px solid #9dbcd5; - background: #cbdeef; -} - -article .date-block div.code div.bottom { - width: 90px; - text-align: right; -} - -article .date-block div.code div.left { - float: left; - width: 13px; - height: 13px; - padding-left: 2px; - padding-top: 4px; -} - -article .date-block div.code div.right { - float: right; - border: 1px solid #bcd5ea; - background: #FFF; - font-size: 12px; - width: 65px; - height: 14px; - margin: 2px; - padding: 0px 2px 2px 0px; - text-align: center; -} - -article .date-block div.image, .last-commit div.image { - float: left; -} - -article .date-block div.text, .last-commit div.text { - float: left; - padding-left: 10px; - font-size: 12px; -} - -article .date-block div.text span.name, .last-commit span.name { - font-weight: 700; -} - -article .date-block div.text span.date, .last-commit span.date { - font-size: 11px; -} - -article .date-block div.text span.subject img, .last-commit span.subject img { - cursor: pointer; -} - -article .date-block div.fulltext, .last-commit div.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; - /*width: 640px;*/ -} - - -article div.year { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 760px; - color: 477cae; - text-align: center; - font-size: 12px; - padding: 4px; - margin-left: 87px; - margin-top: 30px; - margin-bottom: 30px; -} - -article div.year p{ - margin: 0; - padding: 0; - color: #477CAE; -} - -div.pagination.tmargin30 { - margin-top: 30px; -} - -/* Create issue */ - -.bordered.nopadding, .right.nopadding { - padding-top: 0px; -} - -p.tmargin5 { - margin-top: 5px; -} - -aside input { - height: 25px; - width: 170px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 0px 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - margin-bottom: 5px; - margin-top: 5px; -} - -aside input.gray { - color: #cfcfcf; -} - -aside input.black { - color: #333333; -} - -div.people { - width: 202px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 10px; - padding-right: 0px; -} - -div.people div.avatar, div.avatar { - float: left; - padding-left: 5px; -} - -div.people div.name, div.name { - padding-top: 4px; - padding-left: 3px; - float: left; -} - -aside div.select, div.people:hover { - background: #dcecfa; -} - -div.label.selected, div.label { - width: 196px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 15px; -} - -div.label.selected:hover, div.label:hover { - background: #dcecfa; -} - -div.labeltext.selected { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; -} - -div.label div.flag { - height: 11px; - width: 3px; - background: #39b54a; - float: left; - margin-top: 3px; - margin-right: 3px; - border-radius: 2px; -} - -.right span.small-text { - font-size: 11px; -} - -.right .bpadding10, .all .bpadding10 { - padding-bottom: 10px; -} - - -/* Issue page */ - -aside div.switcher, aside div.switcher-off { - height: 23px; - width: 194px; - background: url("../pics/switch-on.png"); - color: #FFF; - font-size: 12px; - cursor: pointer; -} - -aside div.switcher-off { - background: url("../pics/switch-off.png"); -} - -aside div.switcher div.swleft, aside div.switcher-off div.swleft { - float: left; - width: 96px; - text-align: center; - padding-top: 3px; -} - -aside div.switcher div.swright, aside div.switcher-off div.swright { - float: right; - width: 96px; - text-align: center; - padding-top: 3px; -} - -p.non-view { - display: none; -} - -div.non-view { - display: none; -} - -div.view { - display: block; -} - -div.nopointer { - cursor: default; -} - -div.nopointer:hover { - background: none; -} - -a.button.tmargin10, input[type="submit"].tmargin10 { - margin-top: 10px; -} - -h3.tmargin0 { - margin-top: 0px; -} - -h3.bmargin10 { - margin-bottom: 10px; -} - -.right div.comment { - text-align: left; - border: 1px solid #b3cce0; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; - width: 631px; - background: #dcecfa; -} - -.right div.comment div.issue-left { - float: left; - font-size: 12px; - margin-top: 4px; -} - -.right div.comment div.issue-right { - float: right; -} - -.right div.comment textarea { - height: 110px; - width: 618px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - color: #575756; - margin: 10px 0px; -} - -.right div.comment-closed { - display: none; -} - -.right div.comment-closed div.state { - float: left; - padding: 2px 0px 2px 0px; - background: #bd4d40; - color: #FFF; - font-size: 12px; - border: 1px solid #924f52; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px 0px 0px 2px; - border-radius: 2px 0px 0px 2px; - width: 80px; - text-align: center; -} - -.right div.comment-closed div.text { - border: 1px solid #dce6ed; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: 2px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - float: left; - width: 561px; -} - -.right div.comment-closed div.avatar { - float: left; - padding: 5px; -} - -.right div.comment-closed div.name { - float: left; - font-size: 12px; - padding-top: 9px; -} - -div.desription-top { - background: #dcecfa; - font-size: 12px; - color: #575756; - border: 1px solid #a9c6dd; - height: 38px; - width: 100%; - margin-bottom: 20px; -} - -div.desription-top div.img { - float: left; - padding-left: 10px; - margin-top: 14px; -} - -div.desription-top input.name { - float: left; - margin-top: 5px; - margin-left: 10px; - background: #FFF; - border: 1px solid #d1deeb; - height: 21px; - width: auto; - color: #575756; - font-size: 12px; - width: 215px; - padding: 2px 5px 3px; -} - -div.desription-top div.role { - float: left; - margin-top: 11px; - margin-left: 10px; - font-size: 11px; -} - - div.fork { - float: right; - margin-top: 5px; -} - div.fork p { - float: right; - margin-top: 5px; - margin-right: 2px; -} - -div.desription-top div.fork { - margin-right: 10px; -} - -.all div.description { - text-align: left; -} - -.all div.description h3{ - color: #575756; - font-weight: 700; - font-size: 14px; - margin-bottom: 5px; - margin-top: 5px; -} - -.all div.description p{ - font-size: 12px; - padding: 0; - margin: 0; - color: #575756; -} - -.all div.last-commit { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin: 10px 0px; -} - - -/* Project main page */ - -table.tablesorter.project .th1 { - width: 130px; - /*padding-left: 17px;*/ -} - -table.tablesorter.project .th2 { - width: 110px; - /*padding-left: 17px;*/ -} - -table.tablesorter.project .th3 { - width: 450px; -} - -table.tablesorter.project .th4 { - /*padding-left: 17px;*/ -} - -table.tablesorter.project div.name { - float: left; - margin-top: 0px; -} - -table.tablesorter.project div.pic { - float: left; - padding-right: 5px; -} - -a.files-see { - color: #565657; - text-decoration: underline; -} - -div.file { - border: 1px solid #dddddd; - margin-top: 10px; -} - -div.file div.top { - height: 28px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; -} - -div.file div.top div.l { - float: left; - margin: 6px 0px 0px 10px; -} - -div.file div.top div.r { - float: right; - margin: 6px 10px 0px 0px; -} - -div.files div.l { - float: left; - margin-bottom: 5px; -} - -div.files div.r { - float: right; - display: none; -} - -div.file { - margin-bottom: 10px; -} - -textarea.commit-message { - height: 60px; - width: 845px; - resize: none; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - margin-top: 5px; -} - -div.files div.l p{ - padding: 0; - margin: 5px 0px 0px 0px; -} - - -/* Code */ - -div.gutter { - float: left; - border: 0 !important; - padding: 10px 5px 10px 0px; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - background: #EDEDED; - width: 40px; - text-align: right; -} - - -/* Tracker */ - -table td.width18 { - width: 18px; -} - -table td.width135 { - width: 135px; -} - -table td.width145 { - width: 145px; -} - -table td.width30 { - width: 30px; -} - -table td.width30.right { - text-align: right; -} - -div.bordered.bpadding20 { - padding-bottom: 20px; -} - -table.tracker-lables td { - padding: 1px; -} - -table.tracker-lables div.label { - width: auto; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; -} - -table.tracker-lables div.label:hover { - background: none; -} - -div.blue-switcher { - height: 19px; - width: 258px; - border: 1px solid #a0a0a1; - border-radius: 3px; - background-color: #575756; - color: #FFF; - -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - float: right; -} - -div.blue-switcher div.open { - float: left; - padding: 1px 0px 2px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; -} - -div.blue-switcher div.selected { - background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); - background-image: -webkit-linear-gradient(top, #619dd2, #125687); - background-image: -moz-linear-gradient(top, #619dd2, #125687); - background-image: -ms-linear-gradient(top, #619dd2, #125687); - background-image: -o-linear-gradient(top, #619dd2, #125687); - background-image: linear-gradient(top, #619dd2, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); - border-radius: 2px; - height: 18px; - width: 128px; - -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin: 0px; - z-index: 2; - -} - -div.blue-switcher div.closed { - float: right; - padding: 1px 0px 0px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; -} - -table.tablesorter.tracker th.th1{ - width: 50px; -} - -table.tablesorter.tracker td.td0{ - width: 10px; - padding-right: 0px; -} - -table.tablesorter.tracker td.td3{ - width: 120px; - padding-top: 10px; -} - -table.tablesorter.tracker td.td3 div.code { - height: 19px; - width: 15px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - padding: 1px 0px 0px 5px; - float: left; - margin-right: 5px; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.avatar { - float: left; - margin-right: 5px; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.answers { - height: 20px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - float: left; - cursor: pointer; -} - -table.tablesorter.tracker td.td3 div.answers div.pic { - float: left; - margin: 2px; -} - -table.tablesorter.tracker td.td3 div.answers div.count { - float: left; - margin: 0px 5px 0px 2px; -} - -table.tablesorter.tracker div.smalltext { - font-size: 11px; - color: #b0b0b1; - float: left; - margin-top: 3px; -} - - -div.label.selected.tracker { - width: auto; - clear: both; - cursor: default; - margin-left: 0px; - padding: 5px; - float: right; - margin-top: -6px; -} - -div.label.selected.tracker:hover { - background: none; -} - - -div.label.edit { - width: 196px; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; -} - -div.label.edit:hover{ - background: none; -} - -div.labeltext.edit { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - margin-bottom: 5px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; - width: 175px; - cursor: default; -} - -div.labeltext.edit div.text { - float: left; -} - -div.labeltext.edit div.delete { - float: right; - cursor: pointer; - margin-top: 1px; -} - -div.labeltext a { - text-decoration: none; - color: #565657; -} - -div.labeltext.edit a { - text-decoration: none; - color: #FFF; -} - -aside div.colors { - margin: 10px 0px; -} - -aside div.colors div.color { - float: left; - width: 22px; - height: 22px; - margin-right: 5px; - border-radius: 4px; - -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - cursor: pointer; -} - -aside div.colors div.choose { - height: 14px; - width: 14px; - padding: 4px; -} - -aside div.colors div.choose.selected, aside div.colors div.choose:hover { - background: url("../pics/choose.png") no-repeat 50% 50%; - height: 14px; - width: 14px; - padding: 4px; -} - -aside div.lefter { - float: left; -} - -aside div.righter { - float: right; - margin-right: 15px; -} - -tr.label-active { - background: #DDD; - border-radius: 3px; -} - -/* Wiki */ - -span.wiki-gray { - color: #b0b0b1; -} - -.right table.wiki { - border: 1px solid #e2e2e2; - border-bottom: none; - margin-top: 10px; -} - -.right table.wiki td { - border-bottom: 1px solid #e2e2e2; - padding: 8px; -} - -.right table.wiki tr.history td.td1{ - width: 5px; -} - -.right table.wiki tr.history td.td2{ - width: 180px; -} - -a.button.rigth { - float: right; -} - -div.r { - float: right; - margin-left: 10px; -} - -h3.wiki { - color: #477cae; - font-size: 16px; -} - -a.button.width100 { - width: 100px; -} - -.div-tracker-labels { - margin: 2px 13px 2px 0px; - cursor: pointer; - border-radius: 4px; -} - -.div-label-left { - float: left; - width: 150px; -} - -.div-label-right { - float: right; - width: 30px; - text-align: right; - padding-top: 4px; - padding-right: 3px; -} - -div.div-label-left div.label { - width: auto; - clear: both; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; -} - -div.div-label-left div.label:hover { - background: none; -} - -/* Monitoring */ - -aside div.table { - margin-top: 5px; -} - -h3.small { - font-size: 12px; - margin: 0px; - padding: 3px 0px; -} - -table.tablesorter th.lpadding16 { - padding-left: 16px; -} - -div.right.slim { - padding: 5px 14px 40px; - width: 695px; -} - -img.delete-row { - cursor: pointer; -} - - -/* Create group */ - -div.right-error { - float: left; - width: 369px; - height: 59px; - background: url("../pics/error-groups.png"); - margin: 0px 0px 5px -3px; - text-align: center; -} - -div.right-error p { - margin: 0; - padding: 27px 0px 0px 0px; -} - -div.rightlist.nomargin { - margin: 0; -} - -article div.rightlist input.error { - border: 1px solid #bd4d40; - -webkit-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); - -moz-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); - box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); -} - -/* Group pages */ - -article div.groups-profile { - float: left; -} - -article div.groups-profile a { - margin: 0px 0px 0px 5px; -} - -article div.groups-profile img { - margin: 2px 0px 0px 0px; -} - -table.tablesorter.group-list th.th2 { - width: 540px; -} - -/* Platform */ - -table.tablesorter.create-platform th.th1 { - /*padding-left: 17px;*/ - width: 120px; -} - -div.right div.left { - float: left; - margin-right: 5px; -} -table.tablesorter.platform-products th.th1 { - /*padding-left: 17px;*/ - width: 560px; -} - -table.tablesorter.platform-products td.td2 { - text-align: center; -} - -table.tablesorter.platform-repos th.th1 { - /*padding-left: 17px;*/ - width: 480px; -} - -table.tablesorter.platform-repos th.th2 { - /*padding-left: 17px;*/ - width: 80px; -} - -table.tablesorter.platform-repos td.td3 { - text-align: center; -} - -div.new-owner div.field { - float: left; - margin-right: 10px; -} - -div.new-owner div.field input { - width: 230px; -} - -div.new-owner div.search { - float: left; -} - -.tpadding10 { - padding-top: 10px; -} - -article div.all div.hr { - border-bottom: 1px solid #dedede; - width: 565px; - padding-top: 30px; - margin-bottom: 30px; -} - -table.tablesorter.platform-product-main th.th1 { - /*padding-left: 17px;*/ - width: 60px; -} - -table.tablesorter.platform-product-main th.th2 { - /*padding-left: 17px;*/ - width: 400px; -} - -table.tablesorter.platform-product-main th.th3 { - padding-left: 0px; -} - -table.tablesorter.platform-product-main th.th4 { - /*padding-left: 17px;*/ - width: 150px; -} - -div.right.rpadding0 { - padding-right: 0px; -} - -article div.loadFile div.btn { - float: left; -} - -article div.loadFile div.name { - float: left; - margin-left: 20px; - padding-top: 4px; -} - -/* Profile */ - -.bpadding10 { - padding-bottom: 10px; -} - -article div.rightlist div.load { - float: left; - margin-left: 40px; -} - -.notify { - border: 1px solid #c86b60; - background: #f4e1df; - border-radius: 4px; - width: 100%; - margin-top: 20px; -} - -.notify p { - padding: 5px 10px; -} - -/* Pagination */ - -div.pagination em { - font-style: normal; -} - -div.pagination em, div.pagination span, div.pagination a { - border: 1px solid #dddddd; - border-radius: 1px; - background: #ededed; - padding: 3px 7px; -} - -div.pagination em.current { - background: #d5e7f9; - border: 1px solid #c1daed; -} - -div.pagination a { - color: #4c90d0; -} - -/*404*/ - -article div.all.error404 { - background: url("../pics/404.png") no-repeat 59% 0; - height: 500px; - text-align: center; -} - -article div.all.error404 h1 { - margin: 0; - padding: 0; - margin-top: 165px; - font-size: 48px; - font-weight: normal; -} - -article div.all.error404 h1 span { - color: #4496d0; -} - -article div.all.error404 h2 { - margin: 0; - padding: 0; - margin-top: 5px; - font-size: 18px; - font-weight: normal; -} - -article div.all.error404 p { - margin: 0 auto; - padding: 0; - text-align: center; - font-size: 14px; -} - -article div.all.error404 p.pages { - margin-top: 72px; - width: 280px; -} - -article div.all.error404 p.search { - margin-top: 80px; - width: 230px; -} \ No newline at end of file diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index a1b312154..d26df02be 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -1,1682 +1,2201 @@ -html, body { - margin: 0; - padding: 0; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - color: #565657; - background: #1f60a1 image-url("bg.png") repeat-x; - min-width: 940px; - min-height: 600px; - text-align: center; - height: 100%; } - -header, section, footer, aside, nav, article, menu { - display: block; } - -input { - &[type="text"]:focus, &[type="password"]:focus, &:focus { - outline: none; } } - -select:focus { - outline: none; } - -a img { - border: none; } - -.wrap { - width: 940px; - margin: 0 auto; - text-align: center; - border: 1px solid #3f668c; - -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); - background: #FFF; - min-height: 92%; - &.columns { - background: white image-url("page-bg.png") repeat-y; } } - -.both { - clear: both; } - -/* Top menu */ - -header { - -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); - position: relative; - z-index: 1000; - div { - &.left { - background: image-url("top-left.png"); - height: 46px; - width: 14px; - float: left; } - &.middle { - background: image-url("top-middle.png"); - float: left; - height: 46px; - width: 912px; } - &.right { - background: image-url("top-right.png"); - height: 46px; - width: 14px; - float: right; } } - menu { - float: left; - margin: 0; - padding: 0; - ul { - list-style: none; - margin: 0; - padding: 10px 0px 0px 0px; - li { - display: inline; - a { - font-size: 12px; - color: #FFF; - text-decoration: none; - height: 43px; - padding: 15px 15px 15px 15px; - &:hover { - color: #cee7ff; } - &.first { - padding-left: 45px; } - &.active { - background: image-url("menu-hover.png") repeat-x; } } } } } - div { - &.logo { - float: left; - margin-top: -25px; - padding-left: 10px; - position: absolute; } - &.information { - float: right; } - &.search { - float: left; - margin: 10px 0px 0px 0px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; - -moz-border-radius-bottomleft: 3px; - -webkit-border-radius: 3px 3px 3px 3px; - border-radius: 3px 3px 3px 3px; - background: #FFF; - border: 1px solid #7691aa; - div { - &.pic { - background: image-url("search-button.png"); - height: 22px; - width: 24px; - float: left; } - &.field { - float: left; - margin: -1px 0px 0px 0px; - input { - border: none; - height: 18px; - background: none; - width: 132px; - font-size: 12px; - font-family: Arial; - padding: 2px 0px 0px 0px; - &.gray { - color: #cfcfcf; } - &.black { - color: #333333; } } } } } - &.avatar { - float: left; - padding: 6px 10px 10px 10px; } - &.information div { - &.active { - background: image-url("menu-hover.png") repeat-x; } - &.user { - float: left; - margin-left: 14px; } } - &.profile { - float: left; - text-align: right; - color: #FFF; - font-size: 12px; - padding-top: 12px; - a { - color: #FFF; - text-decoration: none; - padding-right: 10px; - &:hover { - text-decoration: underline; } } } - &.droplist-wrap { - margin: -4px 0px 0px 0px; } - &.droplist { - background: image-url("bg-droplist.png") repeat-x; - height: 91px; - width: 151px; - -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin-top: 0px; - margin-left: 138px; - border-radius: 0px 0px 4px 4px; - display: none; - text-align: right; - z-index: 9999; } - &.droplist-wrap div.a { - margin-top: 5px; } - &.droplist a { - position: relative; - padding-left: 15px; - font-size: 12px; - color: #7eb7ed; - text-decoration: none; - padding-right: 15px; - margin-top: 10px; - &:hover { - text-decoration: underline; } } } } - -/* Left part of top menu*/ - -/* Right part of top menu */ - -/* Submenu */ - -.sub-menu { - height: 38px; - margin: -7px 0px 0px 0px; - padding: 0px 0px 0px 15px; - background: #ededed; - position: relative; - z-index: 100; - border-bottom: 1px solid #FFF; - -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); - div { - &.left { - float: left; - width: 200px; - border-right: 1px solid #dcdcdc; - font-size: 12px; - text-align: left; - font-weight: 700; - padding: 10px 0px 0px 0px; - height: 21px; } - &.right { - float: left; } } - nav { - /*Äëÿ ïîäìåíþ áåç íàçâàíèÿ*/ - float: left; - margin: 0px 0px 0px 0px; - ul { - list-style: none; - text-align: left; - padding: 0; - margin: 0; - padding-top: 5px; - li { - display: inline; - a { - font-size: 12px; - color: #575756; - text-decoration: none; - height: 34px; - padding: 0px 20px 6px 20px; - &.active { - background: image-url("submenu-hover.png") repeat-x; } - &:hover { - color: #2b6daf; } } } } } } - -/* Page markup */ - -article { - font-size: 12px; } - -aside { - float: left; - width: 215px; } - -article div { - &.right { - float: right; - width: 645px; - padding: 20px 40px 40px 40px; - text-align: left; - &.bigpadding { - width: 445px; - padding: 20px 140px 40px 140px; } - &.middlepadding { - width: 510px; - padding: 20px 120px 40px 50px; - div.rightlist { - width: 300px; - input, textarea { - width: 300px; } } } } - &.all { - width: 855px; - padding: 20px 40px 20px 40px; - text-align: left; - &.bigpadding { - width: 605px; - padding: 0px 40px 20px 200px; - text-align: left; } - &.verybigpadding { - width: 545px; - padding: 0px 40px 20px 200px; - text-align: left; - div.left { - float: left; - img { - padding-right: 40px; - margin-top: 20px; } - h3, h4, p { - width: 420px; } - .tmargin5 { - padding-top: 5px; - position: relative; } } } } } - -/* Left part of page markup */ - -aside div { - &.bordered { - border-bottom: 1px solid #dee5eb; - text-align: left; - padding: 20px 0px 30px 15px; } - &.block { - text-align: left; - padding: 10px 0px 30px 15px; } } - -/* Common page parts markups */ - -article { - h4 { - font-size: 12px; - margin-bottom: 0px; - padding-bottom: 2px; } - p { - margin: 0; - padding: 0; } } - -div { - &.expand-gray-down, &.expand-gray-up { - height: 10px; - width: 12px; - float: left; - margin: 3px 0px 0px 3px; - cursor: pointer; } - &.expand-gray-down { - background: image-url("expand-gray.png") no-repeat; } - &.expand-gray-up { - background: image-url("expand-gray2.png") no-repeat; } } - -article { - a { - &.button { - display: inline-block; - white-space: nowrap; - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); - border: 1px solid #5084b4; - padding: 4px 20px; - margin: 0; - font-size: 12px; - text-decoration: none; - color: #FFF; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align: center; - &:hover { - background-color: #34719d; - background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); - background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); - background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); - background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); - background-image: -o-linear-gradient(top, #7fb3e1, #34719d); - background-image: linear-gradient(top, #7fb3e1, #34719d); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); - text-decoration: none; } - &:active { - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); } } - &.disabled { - background-color: #888888; - background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); - background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); - background-image: -moz-linear-gradient(top, #aaaaaa, #888888); - background-image: -ms-linear-gradient(top, #aaaaaa, #888888); - background-image: -o-linear-gradient(top, #aaaaaa, #888888); - background-image: linear-gradient(top, #aaaaaa, #888888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); - cursor: default; - color: #d8d8d8; - border: 1px solid #aaaaaa; - cursor: default; - text-align: center; } } - input { - &[type="file"] {} - &[type="submit"] { - display: inline-block; - white-space: nowrap; - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); - border: 1px solid #5084b4; - padding: 4px 20px; - margin: 0; - font-size: 12px; - text-decoration: none; - color: #FFF; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - text-align: center; - height: auto; - width: auto; - &:hover { - background-color: #34719d; - background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); - background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); - background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); - background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); - background-image: -o-linear-gradient(top, #7fb3e1, #34719d); - background-image: linear-gradient(top, #7fb3e1, #34719d); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); - text-decoration: none; - cursor: pointer; } - &:active { - background-color: #125687; - background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); - background-image: -webkit-linear-gradient(top, #68a3d8, #125687); - background-image: -moz-linear-gradient(top, #68a3d8, #125687); - background-image: -ms-linear-gradient(top, #68a3d8, #125687); - background-image: -o-linear-gradient(top, #68a3d8, #125687); - background-image: linear-gradient(top, #68a3d8, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); } - &:disabled { - background-color: #888888; - background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); - background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); - background-image: -moz-linear-gradient(top, #aaaaaa, #888888); - background-image: -ms-linear-gradient(top, #aaaaaa, #888888); - background-image: -o-linear-gradient(top, #aaaaaa, #888888); - background-image: linear-gradient(top, #aaaaaa, #888888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); - cursor: default; - color: #d8d8d8; - border: 1px solid #aaaaaa; - cursor: default; - text-align: center; } } } - h3 { - font-size: 14px; - color: #575756; - margin-bottom: 0; - padding-bottom: 2px; - &.fix { - margin-top: 0px; - padding-top: 0px; } } - a { - color: #7eb7ed; - font-size: 12px; - text-decoration: none; - padding: 0px 0px; - &:hover { - text-decoration: underline; } } - div { - &.right div.hr { - border-bottom: 1px solid #dedede; - width: 100%; - padding-top: 30px; - margin-bottom: 30px; - &.bottom { - margin-bottom: 10px; - padding-top: 20px; } - &.top { - padding-top: 7px; - margin-bottom: 20px; } } - &.leftside { - float: left; } - &.rightside { - float: right; } - &.all.bigpadding div.rightside { - margin-right: 40px; } } } - -/* Right part of page markup */ - -.lefter { - float: left; - margin-right: 5px; - span.gap { - padding-right: 59px; } - &.top { - margin-top: -6px; } } - -.w25 { - width: 25px; } - -.w420 { - width: 420px; - padding-bottom: 20px; } - -.padd25 { - padding-left: 25px; } - -.width70 { - width: 70px; } - -/* Footer */ - -footer { - height: 32px; - padding-left: 15px; - width: 900px; - margin: 0 auto; - text-align: center; - ul { - margin: 0; - padding: 0; - list-style: none; - font-size: 12px; - color: #FFF; - padding-top: 10px; - text-align: left; - li { - display: inline; - a { - font-size: 12px; - color: #FFF; - text-decoration: none; - &:hover { - text-decoration: underline; } } } } } - -/* Main page */ - -aside div { - &.bordered table { - padding: 0; - margin: 0; - padding-bottom: 0px; - margin-left: -10px; - td { - font-size: 12px; - padding: 1px 0px 0px 0px; } } - &.block table td { - text-align: right; - padding: 2px 3px 1px 3px; - &.first { - width: 150px; - text-align: left; } } } - -article div { - &.right div.messages { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 100%; - color: #477cae; - text-align: center; - font-size: 12px; - padding: 4px 0px 4px 0px; - cursor: pointer; - margin: 15px 0px 15px 0px; - &:hover { - background: #dceffa; } - p { - margin: 0; - padding: 0; } } - &.activity { - border: 1px solid #d6d6d6; - /*width: 614px;*/ - border-radius: 5px; - padding: 6px; - margin-top: 15px; - color: #333; - div.top div { - &.image { - float: left; } - &.text { - float: left; - padding-left: 10px; - font-size: 12px; - span { - &.name { - font-weight: 700; } - &.date { - font-size: 11px; } } } } } - &.text span.subject { - float: left; } - &.activity div { - &.top div.text span.subject img { - cursor: pointer; } - &.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; - &.view { - display: block; } } } } - -/* Admin page */ - -.admin-preferences ul { - list-style: none; - margin: 0; - padding: 0; - margin-top: 20px; - width: 215px; - text-align: left; - li { - padding-top: 5px; - padding-bottom: 5px; - width: 215px; - &.active, &:hover { - background: #dcecfa; } - a { - color: #575756; - text-decoration: none; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 15px; } } } - -.right div.leftlist, .all div.leftlist { - float: left; - width: 200px; - margin: 0px 0px 10px 0px; } - -.right div.rightlist, .all div.rightlist { - float: left; - width: 400px; - font-size: 12px; - color: #575756; - margin: 0px 0px 10px 0px; } - -.right div.rightlist div { - &.check { - float: left; } - &.forcheck { - float: left; - margin: 1px 0px 0px 5px; } } - -div.rightlist { - textarea { - height: 110px; - width: 350px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; } - input { - &[type="text"], &[type="password"] { - height: 15px; - width: 350px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; } } } - -/* Admin-members page */ - -.right { - table { - div { - &.img { - float: left; } - &.radio { - float: left; - margin: 5px 0px 0px 0px; } - &.forimg, &.forradio { - float: left; - margin: 5px 0px 0px 5px; } } - span.niceCheck-main { - margin-top: 3px; } } - div { - &.admin-search, &.admin-role { - float: left; } - &.admin-search input { - width: 300px; - margin-right: 5px; - height: 23px; - border: 1px solid #dedede; - border-radius: 3px; - margin-top: 1px; - font-size: 12px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - padding-left: 5px; } } } - -article input { - &.gray { - color: #cfcfcf; } - &.black { - color: #333333; } } - -.right div.admin-add { - float: left; - padding-top: 1px; - margin-left: 5px; - a { - width: 86px; - text-align: center; - padding-bottom: 5px; } } - -/* Input elements */ - -.niceRadio { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: image-url("radio.png"); - overflow: hidden; } - -.radioChecked { - background-position: 0 -17px; } - -.niceRadio input { - margin-left: -18px; } - -.sel80 { - width: 200px; - padding-bottom: 4px; - text-align: left; - &.aside { - width: 185px; } } - -.lineForm, .lineForm3 { - margin-bottom: 0px; } - -.niceCheck { - width: 17px; - height: 17px; - display: inline-block; - cursor: pointer; - background: image-url("checkbox.png"); - input { - display: none; } } - -.niceCheck-main { - width: 18px; - height: 18px; - display: inline-block; - cursor: pointer; - background: image-url("checkbox-main.png"); - input { - display: none; } } - -/* Admin build project */ - -section { - &.left { - float: left; - text-align: left; - width: 230px; - margin-left: 250px; } - &.right { - float: right; - text-align: left; - width: 200px; - margin-right: 250px; } - .left { - float: left; - margin-right: 4px; } } - -/* Commits history */ - -article .date-block { - width: 100%; - margin-top: 17px; - div { - &.date { - float: left; - background: #bedbf6; - color: #477cae; - border: 1px solid #98bede; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 0px 0px 4px; - border-radius: 4px 0px 0px 4px; - width: 65px; - height: 55px; - padding: 10px; - padding-top: 20px; - -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); - font-size: 14px; - text-align: center; } - &.messages { - float: left; - border: 1px solid #cfdde7; - -moz-border-radius-topleft: 0px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 0px 4px 4px 4px; - border-radius: 0px 4px 4px 4px; - padding: 10px; - padding-bottom: 0px; - width: 746px; } - &.message { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; - div { - &.body { - float: left; - text-align: left; } - &.code { - float: right; - margin: -7px 0px 0px 640px; - position: absolute; } } } - &.code div { - &.top { - width: 90px; - height: 22px; - border: 1px solid #9dbcd5; - background: #cbdeef; } - &.bottom { - width: 90px; - text-align: right; } - &.left { - float: left; - width: 13px; - height: 13px; - padding-left: 2px; - padding-top: 4px; } - &.right { - float: right; - border: 1px solid #bcd5ea; - background: #FFF; - font-size: 12px; - width: 65px; - height: 14px; - margin: 2px; - padding: 0px 2px 2px 0px; - text-align: center; } } - &.image { - float: left; } } } - -.last-commit div.image { - float: left; } - -article .date-block div.text, .last-commit div.text { - float: left; - padding-left: 10px; - font-size: 12px; } - -article .date-block div.text span.name, .last-commit span.name { - font-weight: 700; } - -article .date-block div.text span.date, .last-commit span.date { - font-size: 11px; } - -article .date-block div.text span.subject img, .last-commit span.subject img { - cursor: pointer; } - -article .date-block div.fulltext, .last-commit div.fulltext { - font-size: 12px; - padding-top: 10px; - display: none; - /*width: 640px;*/ } - -article div.year { - background: #e9f4fb; - border: 1px solid #dfeefa; - border-radius: 5px; - width: 760px; - color: 477cae; - text-align: center; - font-size: 12px; - padding: 4px; - margin-left: 87px; - margin-top: 30px; - margin-bottom: 30px; - p { - margin: 0; - padding: 0; - color: #477CAE; } } - -div.pagination.tmargin30 { - margin-top: 30px; } - -/* Create issue */ - -.bordered.nopadding, .right.nopadding { - padding-top: 0px; } - -p.tmargin5 { - margin-top: 5px; } - -aside input { - height: 25px; - width: 170px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 0px 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - margin-bottom: 5px; - margin-top: 5px; - &.gray { - color: #cfcfcf; } - &.black { - color: #333333; } } - -div { - &.people { - width: 202px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 10px; - padding-right: 0px; - div.avatar { - float: left; - padding-left: 5px; } } - &.avatar { - float: left; - padding-left: 5px; } - &.people div.name, &.name { - padding-top: 4px; - padding-left: 3px; - float: left; } } - -aside div.select { - background: #dcecfa; } - -div { - &.people:hover { - background: #dcecfa; } - &.label { - &.selected { - width: 196px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - &:hover { - background: #dcecfa; } } - width: 196px; - clear: both; - cursor: pointer; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - &:hover { - background: #dcecfa; } } - &.labeltext.selected { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; } - &.label div.flag { - height: 11px; - width: 3px; - background: #39b54a; - float: left; - margin-top: 3px; - margin-right: 3px; - border-radius: 2px; } } - -.right { - span.small-text { - font-size: 11px; } - .bpadding10 { - padding-bottom: 10px; } } - -.all .bpadding10 { - padding-bottom: 10px; } - -/* Issue page */ - -aside div { - &.switcher { - height: 23px; - width: 194px; - background: image-url("switch-on.png"); - color: #FFF; - font-size: 12px; - cursor: pointer; } - &.switcher-off { - height: 23px; - width: 194px; - background: image-url("switch-on.png"); - color: #FFF; - font-size: 12px; - cursor: pointer; - background: image-url("switch-off.png"); } - &.switcher div.swleft, &.switcher-off div.swleft { - float: left; - width: 96px; - text-align: center; - padding-top: 3px; } - &.switcher div.swright, &.switcher-off div.swright { - float: right; - width: 96px; - text-align: center; - padding-top: 3px; } } - -p.non-view { - display: none; } - -div { - &.non-view { - display: none; } - &.view { - display: block; } - &.nopointer { - cursor: default; - &:hover { - background: none; } } } - -a.button.tmargin10, input[type="submit"].tmargin10 { - margin-top: 10px; } - -h3 { - &.tmargin0 { - margin-top: 0px; } - &.bmargin10 { - margin-bottom: 10px; } } - -.right div { - &.comment { - text-align: left; - border: 1px solid #b3cce0; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin-bottom: 10px; - width: 631px; - background: #dcecfa; - div { - &.issue-left { - float: left; - font-size: 12px; - margin-top: 4px; } - &.issue-right { - float: right; } } - textarea { - height: 110px; - width: 618px; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - color: #575756; - margin: 10px 0px; } } - &.comment-closed { - display: none; - div { - &.state { - float: left; - padding: 2px 0px 2px 0px; - background: #bd4d40; - color: #FFF; - font-size: 12px; - border: 1px solid #924f52; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 0px; - -moz-border-radius-bottomright: 0px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px 0px 0px 2px; - border-radius: 2px 0px 0px 2px; - width: 80px; - text-align: center; } - &.text { - border: 1px solid #dce6ed; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: 2px; - -moz-border-radius-bottomleft: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - float: left; - width: 561px; } - &.avatar { - float: left; - padding: 5px; } - &.name { - float: left; - font-size: 12px; - padding-top: 9px; } } } } - -div { - &.desription-top { - background: #dcecfa; - font-size: 12px; - color: #575756; - border: 1px solid #a9c6dd; - height: 38px; - width: 100%; - margin-bottom: 20px; - div.img { - float: left; - padding-left: 10px; - margin-top: 14px; } - input.name { - float: left; - margin-top: 5px; - margin-left: 10px; - background: #FFF; - border: 1px solid #d1deeb; - height: 21px; - width: auto; - color: #575756; - font-size: 12px; - width: 215px; - padding: 2px 5px 3px; } - div.role { - float: left; - margin-top: 11px; - margin-left: 10px; - font-size: 11px; } } - &.fork { - float: right; - margin-top: 5px; - p { - float: right; - margin-top: 5px; - margin-right: 2px; } } - &.desription-top div.fork { - margin-right: 10px; } } - -.all div { - &.description { - text-align: left; - h3 { - color: #575756; - font-weight: 700; - font-size: 14px; - margin-bottom: 5px; - margin-top: 5px; } - p { - font-size: 12px; - padding: 0; - margin: 0; - color: #575756; } } - &.last-commit { - border: 1px solid #d6d6d6; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-radius: 4px 4px 4px 4px; - border-radius: 4px 4px 4px 4px; - padding: 6px; - margin: 10px 0px; } } - -/* Project main page */ - -table.tablesorter.project { - .th1 { - width: 130px; - /*padding-left: 17px;*/ } - .th2 { - width: 110px; - /*padding-left: 17px;*/ } - .th3 { - width: 450px; } - .th4 { - /*padding-left: 17px;*/ } - div { - &.name { - float: left; - margin-top: 0px; } - &.pic { - float: left; - padding-right: 5px; } } } - -a.files-see { - color: #565657; - text-decoration: underline; } - -div { - &.file { - border: 1px solid #dddddd; - margin-top: 10px; - div.top { - height: 28px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; - div { - &.l { - float: left; - margin: 6px 0px 0px 10px; } - &.r { - float: right; - margin: 6px 10px 0px 0px; } } } } - &.files div { - &.l { - float: left; - margin-bottom: 5px; } - &.r { - float: right; - display: none; } } - &.file { - margin-bottom: 10px; } } - -textarea.commit-message { - height: 60px; - width: 845px; - resize: none; - border: 1px solid #dedede; - border-radius: 4px; - padding: 5px; - font-family: Tahoma, Geneva, Helvetica, sans-serif; - font-size: 12px; - margin-top: 5px; } - -div { - &.files div.l p { - padding: 0; - margin: 5px 0px 0px 0px; } - &.gutter { - float: left; - border: 0 !important; - padding: 10px 5px 10px 0px; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - background: #EDEDED; - width: 40px; - text-align: right; } } - -/* Code */ - -/* Tracker */ - -table td { - &.width18 { - width: 18px; } - &.width135 { - width: 135px; } - &.width145 { - width: 145px; } - &.width30 { - width: 30px; - &.right { - text-align: right; } } } - -div.bordered.bpadding20 { - padding-bottom: 20px; } - -table.tracker-lables { - td { - padding: 1px; } - div.label { - width: auto; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; - &:hover { - background: none; } } } - -div.blue-switcher { - height: 19px; - width: 258px; - border: 1px solid #a0a0a1; - border-radius: 3px; - background-color: #575756; - color: #FFF; - -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); - float: right; - div { - &.open { - float: left; - padding: 1px 0px 2px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; } - &.selected { - background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); - background-image: -webkit-linear-gradient(top, #619dd2, #125687); - background-image: -moz-linear-gradient(top, #619dd2, #125687); - background-image: -ms-linear-gradient(top, #619dd2, #125687); - background-image: -o-linear-gradient(top, #619dd2, #125687); - background-image: linear-gradient(top, #619dd2, #125687); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); - border-radius: 2px; - height: 18px; - width: 128px; - -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); - position: absolute; - margin: 0px; - z-index: 2; } - &.closed { - float: right; - padding: 1px 0px 0px 0px; - width: 128px; - text-align: center; - cursor: pointer; - position: relative; - z-index: 3; } } } - -table.tablesorter.tracker { - th.th1 { - width: 50px; } - td { - &.td0 { - width: 10px; - padding-right: 0px; } - &.td3 { - width: 120px; - padding-top: 10px; - div { - &.code { - height: 19px; - width: 15px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - padding: 1px 0px 0px 5px; - float: left; - margin-right: 5px; - cursor: pointer; } - &.avatar { - float: left; - margin-right: 5px; - cursor: pointer; } - &.answers { - height: 20px; - background: #FFF; - color: #009fe3; - border: 1px solid #83d1f2; - font-size: 16px; - float: left; - cursor: pointer; - div { - &.pic { - float: left; - margin: 2px; } - &.count { - float: left; - margin: 0px 5px 0px 2px; } } } } } } - div.smalltext { - font-size: 11px; - color: #b0b0b1; - float: left; - margin-top: 3px; } } - -div { - &.label { - &.selected.tracker { - width: auto; - clear: both; - cursor: default; - margin-left: 0px; - padding: 5px; - float: right; - margin-top: -6px; - &:hover { - background: none; } } - &.edit { - width: 196px; - clear: both; - cursor: default; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - &:hover { - background: none; } } } - &.labeltext { - &.edit { - float: left; - margin-left: 2px; - font-size: 12px; - margin-top: 0px; - margin-bottom: 5px; - padding-left: 3px; - padding-right: 3px; - color: #FFF; - padding-top: 1px; - padding-bottom: 1px; - border-radius: 2px; - width: 175px; - cursor: default; - div { - &.text { - float: left; } - &.delete { - float: right; - cursor: pointer; - margin-top: 1px; } } } - a { - text-decoration: none; - color: #565657; } - &.edit a { - text-decoration: none; - color: #FFF; } } } - -aside div { - &.colors { - margin: 10px 0px; - div { - &.color { - float: left; - width: 22px; - height: 22px; - margin-right: 5px; - border-radius: 4px; - -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); - cursor: pointer; } - &.choose { - height: 14px; - width: 14px; - padding: 4px; - &.selected, &:hover { - background: image-url("choose.png") no-repeat 50% 50%; - height: 14px; - width: 14px; - padding: 4px; } } } } - &.lefter { - float: left; } - &.righter { - float: right; - margin-right: 15px; } } - -tr.label-active { - background: #DDD; - border-radius: 3px; } - -/* Wiki */ - -span.wiki-gray { - color: #b0b0b1; } - -.right table.wiki { - border: 1px solid #e2e2e2; - border-bottom: none; - margin-top: 10px; - td { - border-bottom: 1px solid #e2e2e2; - padding: 8px; } - tr.history td { - &.td1 { - width: 5px; } - &.td2 { - width: 180px; } } } - -a.button.rigth { - float: right; } - -div.r { - float: right; - margin-left: 10px; } - -h3.wiki { - color: #477cae; - font-size: 16px; } - -a.button.width100 { - width: 100px; } - -.div-tracker-labels { - margin: 2px 13px 2px 0px; - cursor: pointer; - border-radius: 4px; } - -.div-label-left { - float: left; - width: 150px; } - -.div-label-right { - float: right; - width: 30px; - text-align: right; - padding-top: 4px; - padding-right: 3px; } - -div.div-label-left div.label { - width: auto; - clear: both; - margin-left: -15px; - padding: 5px; - padding-left: 15px; - text-align: left; - &:hover { - background: none; } } - -/* Monitoring */ - -aside div.table { - margin-top: 5px; } - -h3.small { - font-size: 12px; - margin: 0px; - padding: 3px 0px; } - -table.tablesorter th.lpadding16 { - padding-left: 16px; } - -div.right.slim { - padding: 5px 14px 40px; - width: 695px; } - -img.delete-row { - cursor: pointer; } - -/* Create group */ - -div { - &.right-error { - float: left; - width: 369px; - height: 59px; - background: image-url("error-groups.png"); - margin: 0px 0px 5px -3px; - text-align: center; - p { - margin: 0; - padding: 27px 0px 0px 0px; } } - &.rightlist.nomargin { - margin: 0; } } - -article div { - &.rightlist input.error { - border: 1px solid #bd4d40; - -webkit-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); - -moz-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); - box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); } - &.groups-profile { - float: left; - a { - margin: 0px 0px 0px 5px; } - img { - margin: 2px 0px 0px 0px; } } } - -/* Group pages */ - -table.tablesorter { - &.group-list th.th2 { - width: 540px; } - &.create-platform th.th1 { - /*padding-left: 17px;*/ - width: 120px; } } - -/* Platform */ - -div.right div.left { - float: left; - margin-right: 5px; } - -table.tablesorter { - &.platform-products { - th.th1 { - /*padding-left: 17px;*/ - width: 560px; } - td.td2 { - text-align: center; } } - &.platform-repos { - th { - &.th1 { - /*padding-left: 17px;*/ - width: 480px; } - &.th2 { - /*padding-left: 17px;*/ - width: 80px; } } - td.td3 { - text-align: center; } } } - -div.new-owner div { - &.field { - float: left; - margin-right: 10px; - input { - width: 230px; } } - &.search { - float: left; } } - -.tpadding10 { - padding-top: 10px; } - -article div.all div.hr { - border-bottom: 1px solid #dedede; - width: 565px; - padding-top: 30px; - margin-bottom: 30px; } - -table.tablesorter.platform-product-main th { - &.th1 { - /*padding-left: 17px;*/ - width: 60px; } - &.th2 { - /*padding-left: 17px;*/ - width: 400px; } - &.th3 { - padding-left: 0px; } - &.th4 { - /*padding-left: 17px;*/ - width: 150px; } } - -div.right.rpadding0 { - padding-right: 0px; } - -article div.loadFile div { - &.btn { - float: left; } - &.name { - float: left; - margin-left: 20px; - padding-top: 4px; } } - -/* Profile */ - -.bpadding10 { - padding-bottom: 10px; } - -article div.rightlist div.load { - float: left; - margin-left: 40px; } - -.notify { - border: 1px solid #c86b60; - background: #f4e1df; - border-radius: 4px; - width: 100%; - margin-top: 20px; - p { - padding: 5px 10px; } } - -/* Pagination */ - -div.pagination { - em { - font-style: normal; - border: 1px solid #dddddd; - border-radius: 1px; - background: #ededed; - padding: 3px 7px; } - span, a { - border: 1px solid #dddddd; - border-radius: 1px; - background: #ededed; - padding: 3px 7px; } - em.current { - background: #d5e7f9; - border: 1px solid #c1daed; } - a { - color: #4c90d0; } } - -/*404*/ - -article div.all.error404 { - background: image-url("404.png") no-repeat 59% 0; - height: 500px; - text-align: center; - h1 { - margin: 0; - padding: 0; - margin-top: 165px; - font-size: 48px; - font-weight: normal; - span { - color: #4496d0; } } - h2 { - margin: 0; - padding: 0; - margin-top: 5px; - font-size: 18px; - font-weight: normal; } - p { - margin: 0 auto; - padding: 0; - text-align: center; - font-size: 14px; - &.pages { - margin-top: 72px; - width: 280px; } - &.search { - margin-top: 80px; - width: 230px; } } } +html, body { + margin: 0; + padding: 0; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + color: #565657; + background: #1f60a1 image-url("bg.png") repeat-x; + min-width: 940px; + min-height: 600px; + text-align: center; + height: 100%; +} + +header, section, footer, aside, nav, article, menu { + display: block; +} + +input[type="text"]:focus { outline: none; } + +input[type="password"]:focus { outline: none; } + +input:focus { outline: none; } + +select:focus { outline: none; } + +a img { border: none; } + +.wrap { + width: 940px; + margin: 0 auto; + text-align: center; + border: 1px solid #3f668c; + -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 7px 0px rgba(0, 0, 0, 0.5); + background: #FFF; + min-height: 92%; +} + +.wrap.columns { + background: #FFF image-url("page-bg.png") repeat-y; +} + +.both { + clear: both; +} + +/* Top menu */ + +header { + -webkit-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.4); + position: relative; + z-index: 1000; +} + +header div.left { + background: image-url("top-left.png"); + height: 46px; + width: 14px; + float: left; +} + +header div.middle { + background: image-url("top-middle.png"); + float: left; + height: 46px; + width: 912px; +} + +header div.right { + background: image-url("top-right.png"); + height: 46px; + width: 14px; + float: right; +} + +/* Left part of top menu*/ + +header menu { + float: left; + margin: 0; + padding: 0; +} + +header menu ul { + list-style: none; + margin: 0; + padding: 10px 0px 0px 0px; +} + +header menu ul li { + display: inline; +} + +header menu ul li a { + font-size: 12px; + color: #FFF; + text-decoration: none; + height: 43px; + padding: 15px 15px 15px 15px; +} + +header menu ul li a:hover { + color: #cee7ff; +} + +header menu ul li a.first { + padding-left: 45px; +} + +header menu ul li a.active { + background: image-url("menu-hover.png") repeat-x; +} + + + +header div.logo { + float: left; + margin-top: -25px; + padding-left: 10px; + position: absolute; +} + +/* Right part of top menu */ + +header div.information { + float: right; +} + +header div.search { + float: left; + margin: 10px 0px 0px 0px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background: #FFF; + border: 1px solid #7691aa; +} + +header div.search div.pic { + background: image-url("search-button.png"); + height: 22px; + width: 24px; + float: left; +} + +header div.search div.field { + float: left; + margin: -1px 0px 0px 0px; +} + +header div.search div.field input { + border: none; + height: 18px; + background: none; + width: 132px; + font-size: 12px; + font-family: Arial; + padding: 2px 0px 0px 0px; +} + +header div.search div.field input.gray { + color: #cfcfcf; +} + +header div.search div.field input.black { + color: #333333; +} + +header div.avatar { + float:left; + padding: 6px 10px 10px 10px; + +} + +header div.information div.active { + background: image-url("menu-hover.png") repeat-x; +} + +header div.information div.user { + float: left; + margin-left: 14px; +} + +header div.profile { + float: left; + text-align: right; + color: #FFF; + font-size: 12px; + padding-top: 12px; +} + +header div.profile a { + color: #FFF; + text-decoration: none; + padding-right: 10px; +} + +header div.profile a:hover { + text-decoration: underline; +} + + +header div.droplist-wrap { + margin: -4px 0px 0px 0px; + width: 151px; + float: right; +} + +header div.droplist { + background: image-url("bg-droplist.png") repeat-x; + height: 91px; + width: 151px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin-top: 0px; + border-radius: 0px 0px 4px 4px; + display: none; + text-align: right; + z-index: 9999; +} + +header div.droplist-wrap div.a { + margin-top: 5px; +} + +header div.droplist a{ + position: relative; + padding-left: 15px; + font-size: 12px; + color: #7eb7ed; + text-decoration: none; + padding-right: 15px; + margin-top: 10px; +} + +header div.droplist a:hover{ + text-decoration: underline; +} + + +/* Submenu */ + +.sub-menu { + height: 38px; + margin: -7px 0px 0px 0px; + padding: 0px 0px 0px 15px; + background: #ededed; + position: relative; + z-index: 100; + border-bottom: 1px solid #FFF; + -webkit-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); + box-shadow: 0px 5px 3px -3px rgba(18, 86, 135, 0.2); +} + +.sub-menu div.left { + float: left; + width: 200px; + border-right: 1px solid #dcdcdc; + font-size: 12px; + text-align: left; + font-weight: 700; + padding: 10px 0px 0px 0px; + height: 21px; +} + +.sub-menu div.right { + float: left; +} + + +.sub-menu nav { /*Для подменю без названия*/ + float: left; + margin: 0px 0px 0px 0px; +} + +.sub-menu nav ul { + list-style: none; + text-align: left; + padding: 0; + margin: 0; + padding-top: 5px; +} + +.sub-menu nav ul li { + display: inline; +} + +.sub-menu nav ul li a { + font-size: 12px; + color: #575756; + text-decoration: none; + height: 34px; + padding: 0px 20px 6px 20px; +} + +.sub-menu nav ul li a.active { + background: image-url("submenu-hover.png") repeat-x; +} + +.sub-menu nav ul li a:hover { + color: #2b6daf; +} + +/* Page markup */ + +article { + font-size: 12px; +} + +aside { + float: left; + width: 215px; +} + +article div.right { + float: right; + width: 645px; + padding: 20px 40px 40px 40px; + text-align: left; +} + +article div.right.bigpadding { + width: 445px; + padding: 20px 140px 40px 140px; +} + +article div.right.middlepadding { + width: 510px; + padding: 20px 120px 40px 50px; +} + +article div.right.middlepadding div.rightlist{ + width: 300px; +} + +article div.right.middlepadding div.rightlist input{ + width: 300px; +} + +article div.right.middlepadding div.rightlist textarea{ + width: 300px; +} + +article div.all { + width: 855px; + padding: 20px 40px 20px 40px; + text-align: left; +} + +article div.all.bigpadding { + width: 605px; + padding: 0px 40px 20px 200px; + text-align: left; +} + +article div.all.verybigpadding { + width: 545px; + padding: 0px 40px 20px 200px; + text-align: left; +} + +article div.all.verybigpadding div.left { + float: left; +} + +article div.all.verybigpadding div.left img{ + padding-right: 40px; + margin-top: 20px; +} + +article div.all.verybigpadding div.left h3, article div.all.verybigpadding div.left h4, article div.all.verybigpadding div.left p{ + width: 420px; +} + +article div.all.verybigpadding div.left .tmargin5 { + padding-top: 5px; + position: relative; +} + + +/* Left part of page markup */ + +aside div.bordered { + border-bottom: 1px solid #dee5eb; + text-align: left; + padding: 20px 0px 30px 15px; +} + +aside div.block { + text-align: left; + padding: 10px 0px 30px 15px; +} + +/* Common page parts markups */ + +article h4 { + font-size: 12px; + margin-bottom: 0px; + padding-bottom: 2px; +} + +article p { + margin: 0; + padding: 0; +} + +div.expand-gray-down, div.expand-gray-up { + height: 10px; + width: 12px; + float: left; + margin: 3px 0px 0px 3px; + cursor: pointer; +} + +div.expand-gray-down { + background: image-url("expand-gray.png") no-repeat; +} + +div.expand-gray-up { + background: image-url("expand-gray2.png") no-repeat; +} + +article a.button { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; +} + +article a.button:hover{ + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; +} + + + +article a.button:active{ + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); +} + +article a.disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; +} + +article input[type="file"] { + + +} + +article input[type="submit"] { + display: inline-block; + white-space: nowrap; + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); + border: 1px solid #5084b4; + padding: 4px 20px; + margin: 0; + font-size: 12px; + text-decoration: none; + color: #FFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + text-align: center; + height: auto; + width: auto; + +} + +article input[type="submit"]:hover{ + background-color: #34719d; + background-image: -webkit-gradient(linear, left top, left bottom, from(#7fb3e1), to(#34719d)); + background-image: -webkit-linear-gradient(top, #7fb3e1, #34719d); + background-image: -moz-linear-gradient(top, #7fb3e1, #34719d); + background-image: -ms-linear-gradient(top, #7fb3e1, #34719d); + background-image: -o-linear-gradient(top, #7fb3e1, #34719d); + background-image: linear-gradient(top, #7fb3e1, #34719d); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#7fb3e1', EndColorStr='#34719d'); + text-decoration: none; + cursor: pointer; +} + + + +article input[type="submit"]:active{ + background-color: #125687; + background-image: -webkit-gradient(linear, left top, left bottom, from(#68a3d8), to(#125687)); + background-image: -webkit-linear-gradient(top, #68a3d8, #125687); + background-image: -moz-linear-gradient(top, #68a3d8, #125687); + background-image: -ms-linear-gradient(top, #68a3d8, #125687); + background-image: -o-linear-gradient(top, #68a3d8, #125687); + background-image: linear-gradient(top, #68a3d8, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); +} + +article input[type="submit"]:disabled { + background-color: #888888; + background-image: -webkit-gradient(linear, left top, left bottom, from(#aaaaaa), to(#888888)); + background-image: -webkit-linear-gradient(top, #aaaaaa, #888888); + background-image: -moz-linear-gradient(top, #aaaaaa, #888888); + background-image: -ms-linear-gradient(top, #aaaaaa, #888888); + background-image: -o-linear-gradient(top, #aaaaaa, #888888); + background-image: linear-gradient(top, #aaaaaa, #888888); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#aaaaaa', EndColorStr='#888888'); + cursor: default; + color: #d8d8d8; + border: 1px solid #aaaaaa; + cursor: default; + text-align: center; +} + + +article h3{ + font-size: 14px; + color: #575756; + margin-bottom: 0; + padding-bottom: 2px; +} + +article h3.fix { + margin-top: 0px; + padding-top: 0px; +} + +article a{ + color: #7eb7ed; + font-size: 12px; + text-decoration: none; + padding: 0px 0px; +} + +article a:hover{ + text-decoration: underline; +} + +/* Right part of page markup */ + +article div.right div.hr { + border-bottom: 1px solid #dedede; + width: 100%; + padding-top: 30px; + margin-bottom: 30px; +} + +article div.right div.hr.bottom { + margin-bottom: 10px; + padding-top: 20px; +} + +article div.right div.hr.top { + padding-top: 7px; + margin-bottom: 20px; +} + +article div.leftside { + float: left; +} + +article div.rightside { + float: right; +} + +article div.all.bigpadding div.rightside { + margin-right: 40px; +} + +.lefter { + float: left; + margin-right: 5px; +} + +.lefter span.gap { + padding-right: 59px; +} + +.lefter.top { + margin-top: -6px; +} + +.w25 { + width: 25px; +} + +.w420 { + width: 420px; + padding-bottom: 20px; +} + +.padd25 { + padding-left: 25px; +} + +.width70 { + width: 70px; +} + + +/* Footer */ + +footer { + height: 32px; + padding-left: 15px; + width: 900px; + margin: 0 auto; + text-align: center; +} + +footer ul { + margin: 0; + padding: 0; + list-style: none; + font-size: 12px; + color: #FFF; + padding-top: 10px; + text-align: left; +} + +footer ul li { + display: inline; +} + +footer ul li a { + font-size: 12px; + color: #FFF; + text-decoration: none; +} + +footer ul li a:hover { + text-decoration: underline; +} + +/* Main page */ + +aside div.bordered table{ + padding: 0; + margin: 0; + padding-bottom: 0px; + margin-left: -10px; +} + +aside div.bordered table td{ + font-size: 12px; + padding: 1px 0px 0px 0px; +} + +aside div.block table td { + text-align: right; + padding: 2px 3px 1px 3px; +} + + +aside div.block table td.first{ + width: 150px; + text-align: left; +} + +article div.right div.messages { + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 100%; + color: #477cae; + text-align: center; + font-size: 12px; + padding: 4px 0px 4px 0px; + cursor: pointer; + margin: 15px 0px 15px 0px; +} + +article div.right div.messages:hover { + background: #dceffa; +} + +article div.right div.messages p{ + margin: 0; + padding: 0; +} + +article div.activity { + border: 1px solid #d6d6d6; + /*width: 614px;*/ + border-radius: 5px; + padding: 6px; + margin-top: 15px; + color: #333; +} + +article div.activity div.top div.image { + float: left; +} + +article div.activity div.top div.text { + float: left; + padding-left: 10px; + font-size: 12px; +} + +article div.activity div.top div.text span.name { + font-weight: 700; +} + +article div.activity div.top div.text span.date { + font-size: 11px; +} + +article div.text span.subject { + float: left; +} + +article div.activity div.top div.text span.subject img { + cursor: pointer; +} + +article div.activity div.fulltext { + font-size: 12px; + padding-top: 10px; + display: none; +} + +article div.activity div.fulltext.view { + display: block; +} + +/* Admin page */ + +.admin-preferences ul { + list-style: none; + margin: 0; + padding: 0; + margin-top: 20px; + width: 215px; + text-align: left; +} + +.admin-preferences ul li{ + padding-top: 5px; + padding-bottom: 5px; + width: 215px; +} + +.admin-preferences ul li.active, .admin-preferences ul li:hover { + background: #dcecfa; +} + +.admin-preferences ul li a{ + color: #575756; + text-decoration: none; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 15px; +} + +.right div.leftlist, .all div.leftlist { + float: left; + width: 200px; + margin: 0px 0px 10px 0px; +} + +.right div.rightlist, .all div.rightlist { + float: left; + width: 400px; + font-size: 12px; + color: #575756; + margin: 0px 0px 10px 0px; +} + +.right div.rightlist div.check { + float: left; +} + +.right div.rightlist div.forcheck { + float: left; + margin: 1px 0px 0px 5px; +} +div.rightlist textarea { + height: 110px; + width: 350px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; +} + +div.rightlist input[type="text"], div.rightlist input[type="password"] { + height: 15px; + width: 350px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; +} + +/* Admin-members page */ + +div.img { + float: left; +} + + table div.radio { + float: left; + margin: 5px 0px 0px 0px; +} + +div.forimg { + float: left; + margin: 5px 0px 0px 5px; +} + +table div.forradio { + float: left; + margin: 5px 0px 0px 5px; +} + +table span.niceCheck-main { + margin-top: 3px; +} + +div.admin-search { + float: left; +} + +.right div.admin-role { + float: left; +} + +.right div.admin-search input { + width: 300px; + margin-right: 5px; + height: 23px; + border: 1px solid #dedede; + border-radius: 3px; + margin-top: 1px; + font-size: 12px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + padding-left: 5px; +} + +article input.gray { + color: #cfcfcf; +} + +article input.black { + color: #333333; +} + +.right div.admin-add { + float: left; + padding-top: 1px; + margin-left: 5px; +} + +.right div.admin-add a { + width: 86px; + text-align: center; + padding-bottom: 5px; +} + +/* Input elements */ + +.niceRadio { + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("radio.png"); + overflow: hidden; +} +.radioChecked { + background-position: 0 -17px; +} +.niceRadio input { + margin-left: -18px; +} + +.sel80 { + width: 200px; + padding-bottom: 4px; + text-align: left; +} + +.sel80.aside { + width: 185px; +} +.lineForm, +.lineForm3 { + margin-bottom: 0px; +} + +.niceCheck { + width: 17px; + height: 17px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox.png"); +} +.niceCheck input { + display: none; +} + +.niceCheck-main { + width: 18px; + height: 18px; + display: inline-block; + cursor: pointer; + background: image-url("checkbox-main.png"); +} +.niceCheck-main input { + display: none; +} + +/* Admin build project */ + +section.left { + float: left; + text-align: left; + width: 230px; + margin-left: 250px; +} + +section.right { + float: right; + text-align: left; + width: 200px; + margin-right: 250px; +} + +section .left { + float: left; + margin-right: 4px; +} + +/* Commits history */ + + +article .date-block { + width: 100%; + margin-top: 17px; +} + +article .date-block div.date { + float: left; + background: #bedbf6; + color: #477cae; + border: 1px solid #98bede; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 0px 0px 4px; + border-radius: 4px 0px 0px 4px; + width: 65px; + height: 55px; + padding: 10px; + padding-top: 20px; + -webkit-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + box-shadow: -1px 0px 0px 1px rgba(0, 0, 0, 0.1); + font-size: 14px; + text-align: center; +} + +article .date-block div.messages { + float: left; + border: 1px solid #cfdde7; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 0px 4px 4px 4px; + border-radius: 0px 4px 4px 4px; + padding: 10px; + padding-bottom: 0px; + width: 746px; +} + +article .date-block div.message { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; +} + +article .date-block div.message div.body { + float: left; + text-align: left; +} + +article .date-block div.message div.code { + float: right; + margin: -7px 0px 0px 640px; + position: absolute; +} + +article .date-block div.code div.top { + width: 90px; + height: 22px; + border: 1px solid #9dbcd5; + background: #cbdeef; +} + +article .date-block div.code div.bottom { + width: 90px; + text-align: right; +} + +article .date-block div.code div.left { + float: left; + width: 13px; + height: 13px; + padding-left: 2px; + padding-top: 4px; +} + +article .date-block div.code div.right { + float: right; + border: 1px solid #bcd5ea; + background: #FFF; + font-size: 12px; + width: 65px; + height: 14px; + margin: 2px; + padding: 0px 2px 2px 0px; + text-align: center; +} + +article .date-block div.image, .last-commit div.image { + float: left; +} + +article .date-block div.text, .last-commit div.text { + float: left; + padding-left: 10px; + font-size: 12px; +} + +article .date-block div.text span.name, .last-commit span.name { + font-weight: 700; +} + +article .date-block div.text span.date, .last-commit span.date { + font-size: 11px; +} + +article .date-block div.text span.subject img, .last-commit span.subject img { + cursor: pointer; +} + +article .date-block div.fulltext, .last-commit div.fulltext { + font-size: 12px; + padding-top: 10px; + display: none; + /*width: 640px;*/ +} + + +article div.year { + background: #e9f4fb; + border: 1px solid #dfeefa; + border-radius: 5px; + width: 760px; + color: 477cae; + text-align: center; + font-size: 12px; + padding: 4px; + margin-left: 87px; + margin-top: 30px; + margin-bottom: 30px; +} + +article div.year p{ + margin: 0; + padding: 0; + color: #477CAE; +} + +div.pagination.tmargin30 { + margin-top: 30px; +} + +/* Create issue */ + +.bordered.nopadding, .right.nopadding { + padding-top: 0px; +} + +p.tmargin5 { + margin-top: 5px; +} + +aside input { + height: 25px; + width: 170px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 0px 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + margin-bottom: 5px; + margin-top: 5px; +} + +aside input.gray { + color: #cfcfcf; +} + +aside input.black { + color: #333333; +} + +div.people { + width: 202px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 10px; + padding-right: 0px; +} + +div.people div.avatar, div.avatar { + float: left; + padding-left: 5px; +} + +div.people div.name, div.name { + padding-top: 4px; + padding-left: 3px; + float: left; +} + +aside div.select, div.people:hover { + background: #dcecfa; +} + +div.label.selected, div.label { + width: 196px; + clear: both; + cursor: pointer; + margin-left: -15px; + padding: 5px; + padding-left: 15px; +} + +div.label.selected:hover, div.label:hover { + background: #dcecfa; +} + +div.labeltext.selected { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; +} + +div.label div.flag { + height: 11px; + width: 3px; + background: #39b54a; + float: left; + margin-top: 3px; + margin-right: 3px; + border-radius: 2px; +} + +.right span.small-text { + font-size: 11px; +} + +.right .bpadding10, .all .bpadding10 { + padding-bottom: 10px; +} + + +/* Issue page */ + +aside div.switcher, aside div.switcher-off { + height: 23px; + width: 194px; + background: image-url("switch-on.png"); + color: #FFF; + font-size: 12px; + cursor: pointer; +} + +aside div.switcher-off { + background: image-url("switch-off.png"); +} + +aside div.switcher div.swleft, aside div.switcher-off div.swleft { + float: left; + width: 96px; + text-align: center; + padding-top: 3px; +} + +aside div.switcher div.swright, aside div.switcher-off div.swright { + float: right; + width: 96px; + text-align: center; + padding-top: 3px; +} + +p.non-view { + display: none; +} + +div.non-view { + display: none; +} + +div.view { + display: block; +} + +div.nopointer { + cursor: default; +} + +div.nopointer:hover { + background: none; +} + +a.button.tmargin10, input[type="submit"].tmargin10 { + margin-top: 10px; +} + +h3.tmargin0 { + margin-top: 0px; +} + +h3.bmargin10 { + margin-bottom: 10px; +} + +.right div.comment { + text-align: left; + border: 1px solid #b3cce0; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin-bottom: 10px; + width: 631px; + background: #dcecfa; +} + +.right div.comment div.issue-left { + float: left; + font-size: 12px; + margin-top: 4px; +} + +.right div.comment div.issue-right { + float: right; +} + +.right div.comment textarea { + height: 110px; + width: 618px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + color: #575756; + margin: 10px 0px; +} + +.right div.comment-closed { + display: none; +} + +.right div.comment-closed div.state { + float: left; + padding: 2px 0px 2px 0px; + background: #bd4d40; + color: #FFF; + font-size: 12px; + border: 1px solid #924f52; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 0px; + -moz-border-radius-bottomright: 0px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px 0px 0px 2px; + border-radius: 2px 0px 0px 2px; + width: 80px; + text-align: center; +} + +.right div.comment-closed div.text { + border: 1px solid #dce6ed; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 2px; + -moz-border-radius-bottomright: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + float: left; + width: 561px; +} + +.right div.comment-closed div.avatar { + float: left; + padding: 5px; +} + +.right div.comment-closed div.name { + float: left; + font-size: 12px; + padding-top: 9px; +} + +div.description-top { + background: #dcecfa; + font-size: 12px; + color: #575756; + border: 1px solid #a9c6dd; + height: 38px; + width: 100%; + margin-bottom: 20px; +} + +div.description-top div.img { + float: left; + padding-left: 10px; + margin-top: 14px; +} + +div.description-top input.name { + float: left; + margin-top: 5px; + margin-left: 10px; + background: #FFF; + border: 1px solid #d1deeb; + height: 21px; + width: auto; + color: #575756; + font-size: 12px; + width: 215px; + padding: 2px 5px 3px; +} + +div.description-top div.role { + float: left; + margin-top: 11px; + margin-left: 10px; + font-size: 11px; +} + + div.fork { + float: right; + margin-top: 5px; +} + div.fork p { + float: right; + margin-top: 5px; + margin-right: 2px; +} + +div.description-top div.fork { + margin-right: 10px; +} + +.all div.description { + text-align: left; +} + +.all div.description h3{ + color: #575756; + font-weight: 700; + font-size: 14px; + margin-bottom: 5px; + margin-top: 5px; +} + +.all div.description p{ + font-size: 12px; + padding: 0; + margin: 0; + color: #575756; +} + +.all div.last-commit { + border: 1px solid #d6d6d6; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -webkit-border-radius: 4px 4px 4px 4px; + border-radius: 4px 4px 4px 4px; + padding: 6px; + margin: 10px 0px; +} + + +/* Project main page */ + +table.tablesorter.project .th1 { + width: 130px; + /*padding-left: 17px;*/ +} + +table.tablesorter.project .th2 { + width: 110px; + /*padding-left: 17px;*/ +} + +table.tablesorter.project .th3 { + width: 450px; +} + +table.tablesorter.project .th4 { + /*padding-left: 17px;*/ +} + +table.tablesorter.project div.name { + float: left; + margin-top: 0px; +} + +table.tablesorter.project div.pic { + float: left; + padding-right: 5px; +} + +a.files-see { + color: #565657; + text-decoration: underline; +} + +div.file { + border: 1px solid #dddddd; + margin-top: 10px; +} + +div.file div.top { + height: 28px; + background: #ededed; + -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); + position: relative; + z-index: 99; +} + +div.file div.top div.l { + float: left; + margin: 6px 0px 0px 10px; +} + +div.file div.top div.r { + float: right; + margin: 6px 10px 0px 0px; +} + +div.files div.l { + float: left; + margin-bottom: 5px; +} + +div.files div.r { + float: right; + display: none; +} + +div.file { + margin-bottom: 10px; +} + +textarea.commit-message { + height: 60px; + width: 845px; + resize: none; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + margin-top: 5px; +} + +div.files div.l p{ + padding: 0; + margin: 5px 0px 0px 0px; +} + + +/* Code */ + +div.gutter { + float: left; + border: 0 !important; + padding: 10px 5px 10px 0px; + font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; + background: #EDEDED; + width: 40px; + text-align: right; +} + + +/* Tracker */ + +table td.width18 { + width: 18px; +} + +table td.width135 { + width: 135px; +} + +table td.width145 { + width: 145px; +} + +table td.width30 { + width: 30px; +} + +table td.width30.right { + text-align: right; +} + +div.bordered.bpadding20 { + padding-bottom: 20px; +} + +table.tracker-lables td { + padding: 1px; +} + +table.tracker-lables div.label { + width: auto; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; +} + +table.tracker-lables div.label:hover { + background: none; +} + +div.blue-switcher { + height: 19px; + width: 258px; + border: 1px solid #a0a0a1; + border-radius: 3px; + background-color: #575756; + color: #FFF; + -webkit-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + box-shadow: inset 0px 2px 5px 0px rgba(0, 0, 0, 0.3); + float: right; +} + +div.blue-switcher div.open { + float: left; + padding: 1px 0px 2px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; +} + +div.blue-switcher div.selected { + background-image: -webkit-gradient(linear, left top, left bottom, from(#619dd2), to(#125687)); + background-image: -webkit-linear-gradient(top, #619dd2, #125687); + background-image: -moz-linear-gradient(top, #619dd2, #125687); + background-image: -ms-linear-gradient(top, #619dd2, #125687); + background-image: -o-linear-gradient(top, #619dd2, #125687); + background-image: linear-gradient(top, #619dd2, #125687); + filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#619dd2', EndColorStr='#125687'); + border-radius: 2px; + height: 18px; + width: 128px; + -webkit-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.5); + position: absolute; + margin: 0px; + z-index: 2; + +} + +div.blue-switcher div.closed { + float: right; + padding: 1px 0px 0px 0px; + width: 128px; + text-align: center; + cursor: pointer; + position: relative; + z-index: 3; +} + +table.tablesorter.tracker th.th1{ + width: 50px; +} + +table.tablesorter.tracker td.td0{ + width: 10px; + padding-right: 0px; +} + +table.tablesorter.tracker td.td3{ + width: 120px; + padding-top: 10px; +} + +table.tablesorter.tracker td.td3 div.code { + height: 19px; + width: 15px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + padding: 1px 0px 0px 5px; + float: left; + margin-right: 5px; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.avatar { + float: left; + margin-right: 5px; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.answers { + height: 20px; + background: #FFF; + color: #009fe3; + border: 1px solid #83d1f2; + font-size: 16px; + float: left; + cursor: pointer; +} + +table.tablesorter.tracker td.td3 div.answers div.pic { + float: left; + margin: 2px; +} + +table.tablesorter.tracker td.td3 div.answers div.count { + float: left; + margin: 0px 5px 0px 2px; +} + +table.tablesorter.tracker div.smalltext { + font-size: 11px; + color: #b0b0b1; + float: left; + margin-top: 3px; +} + + +div.label.selected.tracker { + width: auto; + clear: both; + cursor: default; + margin-left: 0px; + padding: 5px; + float: right; + margin-top: -6px; +} + +div.label.selected.tracker:hover { + background: none; +} + + +div.label.edit { + width: 196px; + clear: both; + cursor: default; + margin-left: -15px; + padding: 5px; + padding-left: 15px; +} + +div.label.edit:hover{ + background: none; +} + +div.labeltext.edit { + float: left; + margin-left: 2px; + font-size: 12px; + margin-top: 0px; + margin-bottom: 5px; + padding-left: 3px; + padding-right: 3px; + color: #FFF; + padding-top: 1px; + padding-bottom: 1px; + border-radius: 2px; + width: 175px; + cursor: default; +} + +div.labeltext.edit div.text { + float: left; +} + +div.labeltext.edit div.delete { + float: right; + cursor: pointer; + margin-top: 1px; +} + +div.labeltext a { + text-decoration: none; + color: #565657; +} + +div.labeltext.edit a { + text-decoration: none; + color: #FFF; +} + +aside div.colors { + margin: 10px 0px; +} + +aside div.colors div.color { + float: left; + width: 22px; + height: 22px; + margin-right: 5px; + border-radius: 4px; + -webkit-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + -moz-box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + box-shadow: 0px 1px 1px 0px rgba(0, 0, 0, 0.8); + cursor: pointer; +} + +aside div.colors div.choose { + height: 14px; + width: 14px; + padding: 4px; +} + +aside div.colors div.choose.selected, aside div.colors div.choose:hover { + background: image-url("choose.png") no-repeat 50% 50%; + height: 14px; + width: 14px; + padding: 4px; +} + +aside div.lefter { + float: left; +} + +aside div.righter { + float: right; + margin-right: 15px; +} + +tr.label-active { + background: #DDD; + border-radius: 3px; +} + +/* Wiki */ + +span.wiki-gray { + color: #b0b0b1; +} + +.right table.wiki { + border: 1px solid #e2e2e2; + border-bottom: none; + margin-top: 10px; +} + +.right table.wiki td { + border-bottom: 1px solid #e2e2e2; + padding: 8px; +} + +.right table.wiki tr.history td.td1{ + width: 5px; +} + +.right table.wiki tr.history td.td2{ + width: 180px; +} + +a.button.rigth { + float: right; +} + +div.r { + float: right; + margin-left: 10px; +} + +h3.wiki { + color: #477cae; + font-size: 16px; +} + +a.button.width100 { + width: 100px; +} + +.div-tracker-labels { + margin: 2px 13px 2px 0px; + cursor: pointer; + border-radius: 4px; +} + +.div-label-left { + float: left; + width: 150px; +} + +.div-label-right { + float: right; + width: 30px; + text-align: right; + padding-top: 4px; + padding-right: 3px; +} + +div.div-label-left div.label { + width: auto; + clear: both; + margin-left: -15px; + padding: 5px; + padding-left: 15px; + text-align: left; +} + +div.div-label-left div.label:hover { + background: none; +} + +/* Monitoring */ + +aside div.table { + margin-top: 5px; +} + +h3.small { + font-size: 12px; + margin: 0px; + padding: 3px 0px; +} + +table.tablesorter th.lpadding16 { + padding-left: 16px; +} + +div.right.slim { + padding: 5px 14px 40px; + width: 695px; +} + +img.delete-row { + cursor: pointer; +} + + +/* Create group */ + +div.right-error { + float: left; + width: 369px; + height: 59px; + background: image-url("error-groups.png"); + margin: 0px 0px 5px -3px; + text-align: center; +} + +div.right-error p { + margin: 0; + padding: 27px 0px 0px 0px; +} + +div.rightlist.nomargin { + margin: 0; +} + +article div.rightlist input.error { + border: 1px solid #bd4d40; + -webkit-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); + -moz-box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); + box-shadow: 0px 0px 2px 0px rgba(189, 77, 64, 1); +} + +/* Group pages */ + +article div.groups-profile { + float: left; +} + +article div.groups-profile a { + margin: 0px 0px 0px 5px; +} + +article div.groups-profile img { + margin: 2px 0px 0px 0px; +} + +table.tablesorter.group-list th.th2 { + width: 540px; +} + +/* Platform */ + +table.tablesorter.create-platform th.th1 { + /*padding-left: 17px;*/ + width: 120px; +} + +div.right div.left { + float: left; + margin-right: 5px; +} +table.tablesorter.platform-products th.th1 { + /*padding-left: 17px;*/ + width: 560px; +} + +table.tablesorter.platform-products td.td2 { + text-align: center; +} + +table.tablesorter.platform-repos th.th1 { + /*padding-left: 17px;*/ + width: 480px; +} + +table.tablesorter.platform-repos th.th2 { + /*padding-left: 17px;*/ + width: 80px; +} + +table.tablesorter.platform-repos td.td3 { + text-align: center; +} + +div.new-owner div.field { + float: left; + margin-right: 10px; +} + +div.new-owner div.field input { + width: 230px; +} + +div.new-owner div.search { + float: left; +} + +.tpadding10 { + padding-top: 10px; +} + +article div.all div.hr { + border-bottom: 1px solid #dedede; + width: 565px; + padding-top: 30px; + margin-bottom: 30px; +} + +table.tablesorter.platform-product-main th.th1 { + /*padding-left: 17px;*/ + width: 60px; +} + +table.tablesorter.platform-product-main th.th2 { + /*padding-left: 17px;*/ + width: 400px; +} + +table.tablesorter.platform-product-main th.th3 { + padding-left: 0px; +} + +table.tablesorter.platform-product-main th.th4 { + /*padding-left: 17px;*/ + width: 150px; +} + +div.right.rpadding0 { + padding-right: 0px; +} + +article div.loadFile div.btn { + float: left; +} + +article div.loadFile div.name { + float: left; + margin-left: 20px; + padding-top: 4px; +} + +/* Profile */ + +.bpadding10 { + padding-bottom: 10px; +} + +article div.rightlist div.load { + float: left; + margin-left: 40px; +} + +.notify { + border: 1px solid #c86b60; + background: #f4e1df; + border-radius: 4px; + width: 100%; + margin-top: 20px; +} + +.notify p { + padding: 5px 10px; +} + +/* Pagination */ + +div.pagination em { + font-style: normal; +} + +div.pagination em, div.pagination span, div.pagination a { + border: 1px solid #dddddd; + border-radius: 1px; + background: #ededed; + padding: 3px 7px; +} + +div.pagination em.current { + background: #d5e7f9; + border: 1px solid #c1daed; +} + +div.pagination a { + color: #4c90d0; +} + +/*404*/ + +article div.all.error404 { + background: image-url("404.png") no-repeat 59% 0; + height: 500px; + text-align: center; +} + +article div.all.error404 h1 { + margin: 0; + padding: 0; + margin-top: 165px; + font-size: 48px; + font-weight: normal; +} + +article div.all.error404 h1 span { + color: #4496d0; +} + +article div.all.error404 h2 { + margin: 0; + padding: 0; + margin-top: 5px; + font-size: 18px; + font-weight: normal; +} + +article div.all.error404 p { + margin: 0 auto; + padding: 0; + text-align: center; + font-size: 14px; +} + +article div.all.error404 p.pages { + margin-top: 72px; + width: 280px; +} + +article div.all.error404 p.search { + margin-top: 80px; + width: 230px; +} + +/*search*/ + +input.button.width100 { + width: 100px; +} + +input[type="text"].exsearch { + height: 15px; + border: 1px solid #dedede; + border-radius: 4px; + padding: 5px; + font-family: Tahoma, Geneva, Helvetica, sans-serif; + font-size: 12px; + width: 520px; + margin-right: 10px; +} + +div.lineForm.leftside.rmargin10 { + margin-right: 10px; +} + +table.tablesorter.bmargin5 { + margin-bottom: 1px; +} + +div.width400 { + width: 400px; + float: left; +} + +div.width400.rmargin55 { + margin-right: 55px; +} + +div.tmargin10 { + margin-top: 10px; +} diff --git a/app/views/shared/_feed_message.html.haml b/app/views/shared/_feed_message.html.haml index bb9893c9b..fe648d49c 100644 --- a/app/views/shared/_feed_message.html.haml +++ b/app/views/shared/_feed_message.html.haml @@ -4,7 +4,8 @@ %span.buttons= raw presenter.buttons.join(' | ').html_safe .image %img{:alt => "avatar", :src => presenter.image} - .text.imaged + .text + -#.imaged move up a line. %span.name= presenter.header .both %span.date= presenter.date diff --git a/db/schema.rb b/db/schema.rb index 6b826a049..f24cfaefc 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -13,14 +13,6 @@ ActiveRecord::Schema.define(:version => 20120229182356) do - create_table "activity_feeds", :force => true do |t| - t.integer "user_id", :null => false - t.string "kind" - t.text "data" - t.datetime "created_at" - t.datetime "updated_at" - end - create_table "arches", :force => true do |t| t.string "name", :null => false t.datetime "created_at" @@ -163,7 +155,6 @@ ActiveRecord::Schema.define(:version => 20120229182356) do t.datetime "updated_at" t.string "uname" t.integer "own_projects_count", :default => 0, :null => false - t.text "description" end create_table "issues", :force => true do |t| @@ -294,20 +285,22 @@ ActiveRecord::Schema.define(:version => 20120229182356) do t.boolean "is_rpm", :default => true end + add_index "projects", ["category_id"], :name => "index_projects_on_category_id" + add_index "projects", ["owner_id"], :name => "index_projects_on_name_and_owner_id_and_owner_type", :unique => true, :case_sensitive => false + create_table "register_requests", :force => true do |t| t.string "name" t.string "email" t.string "token" t.boolean "approved", :default => false t.boolean "rejected", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at" + t.datetime "updated_at" t.string "interest" t.text "more" 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" @@ -366,8 +359,8 @@ ActiveRecord::Schema.define(:version => 20120229182356) do t.string "name" t.string "email", :default => "", :null => false t.string "encrypted_password", :limit => 128, :default => "", :null => false - t.string "password_salt", :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" @@ -375,14 +368,9 @@ ActiveRecord::Schema.define(:version => 20120229182356) do t.string "uname" t.string "role" t.string "language", :default => "en" - t.string "confirmation_token" - t.datetime "confirmed_at" - t.datetime "confirmation_sent_at" t.integer "own_projects_count", :default => 0, :null => false - t.datetime "reset_password_sent_at" end - add_index "users", ["confirmation_token"], :name => "index_users_on_confirmation_token", :unique => true add_index "users", ["email"], :name => "index_users_on_email", :unique => true add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true add_index "users", ["uname"], :name => "index_users_on_uname", :unique => true From bc96fcdcc3783af116bbb6d0f178a19d02ca3b30 Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Thu, 1 Mar 2012 03:34:36 +0400 Subject: [PATCH 56/87] [issue #195] Added missed translation. --- app/views/comments/_list.html.haml | 2 +- config/locales/layout/comments.en.yml | 1 + config/locales/layout/comments.ru.yml | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/views/comments/_list.html.haml b/app/views/comments/_list.html.haml index d7f752ad4..d4bd73309 100644 --- a/app/views/comments/_list.html.haml +++ b/app/views/comments/_list.html.haml @@ -1,6 +1,6 @@ %a{ :name => "comments" } .hr -%h3= t("layout.issues.comments_header") +%h3= t("layout.comments.comments_header") - list.each do |comment| - CommentPresenter.present(comment, :project => project, :commentable => commentable) do |presenter| = render :partial => 'shared/feed_message', :locals => {:presenter => presenter} diff --git a/config/locales/layout/comments.en.yml b/config/locales/layout/comments.en.yml index f8b0d0fce..ee6bf5304 100644 --- a/config/locales/layout/comments.en.yml +++ b/config/locales/layout/comments.en.yml @@ -3,3 +3,4 @@ en: comments: has_commented: "adds a note" notifications_are: "Notifications for new comments are" + comments_header: "Comments" diff --git a/config/locales/layout/comments.ru.yml b/config/locales/layout/comments.ru.yml index 1a6f75139..0d680c2b2 100644 --- a/config/locales/layout/comments.ru.yml +++ b/config/locales/layout/comments.ru.yml @@ -3,3 +3,4 @@ ru: comments: has_commented: "оставил комментарий" notifications_are: "Уведомления о последующих комментариях" + comments_header: "Комментарии" From fe5ad9ebf36522db87d4479e5865852bbc46b7e8 Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Thu, 1 Mar 2012 05:07:31 +0400 Subject: [PATCH 57/87] [issue #195] Added missed js. Some changes. --- app/assets/javascripts/all.js | 10 ++++++++++ app/assets/stylesheets/custom.scss | 5 +++++ app/helpers/commit_helper.rb | 2 +- .../git_presenters/commit_as_message_presenter.rb | 3 ++- config/locales/layout/comments.en.yml | 4 ++-- 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/all.js b/app/assets/javascripts/all.js index e62cb613e..2f9896da8 100644 --- a/app/assets/javascripts/all.js +++ b/app/assets/javascripts/all.js @@ -16,8 +16,18 @@ $(document).ready(function() { if ((dl2 == "block")&&(dl == "91px")) { dropbox.slideUp("slow"); } + }); + $('.data-expander').live('click', function(e) { + var $button = $(e.target); + var id = "#content-" + $button.attr('id'); + var $slider = $(id); + $slider.slideToggle("slow", function(){ + $button.toggleClass('expanded collapsed'); + }); + }); + function showActivity(elem) { $("#activity-bottom"+elem).slideToggle("slow"); var img = document.getElementById("expand" + elem).className; diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index bf3d48eb5..452d5a57c 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -107,6 +107,11 @@ div.activity .data-expander.expanded { background-position: 0 2px; } +div.activity .fulltext p { + margin: 5px; + line-height: 1.3em; +} + table.blob td.lines pre { background-color: #ECECEC; border-right: 1px solid #DDDDDD; diff --git a/app/helpers/commit_helper.rb b/app/helpers/commit_helper.rb index c0cc77c57..238b0a800 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 << "" + res << "".encode_to_default res << "
#{h(filename)}#{h(filename)}" res << I18n.t("layout.projects.inline_changes_count", :count => total).strip + " (" + diff --git a/app/presenters/git_presenters/commit_as_message_presenter.rb b/app/presenters/git_presenters/commit_as_message_presenter.rb index 100f5529c..44bf35264 100644 --- a/app/presenters/git_presenters/commit_as_message_presenter.rb +++ b/app/presenters/git_presenters/commit_as_message_presenter.rb @@ -67,6 +67,7 @@ class GitPresenters::CommitAsMessagePresenter < ApplicationPresenter @content = (@content.present?) ? tmp + @content : tmp @caption = @caption[0..68] + '...' end - @content = @content.gsub("\n", "
").html_safe if @content +# @content = @content.gsub("\n", "
").html_safe if @content + @content = simple_format(@content, {}, :sanitize => true).html_safe if @content end end diff --git a/config/locales/layout/comments.en.yml b/config/locales/layout/comments.en.yml index ee6bf5304..19fd7c6ea 100644 --- a/config/locales/layout/comments.en.yml +++ b/config/locales/layout/comments.en.yml @@ -1,6 +1,6 @@ en: layout: comments: - has_commented: "adds a note" + has_commented: "adds a note" notifications_are: "Notifications for new comments are" - comments_header: "Comments" + comments_header: "Comments" From 55ff2c7f6bcba573a2459b8b90fd6bedf3803914 Mon Sep 17 00:00:00 2001 From: "konstantin.grabar" Date: Thu, 1 Mar 2012 15:41:57 +0400 Subject: [PATCH 58/87] [refs #195] Change new project route and some other changes --- app/controllers/projects_controller.rb | 6 +- app/views/projects/_form.html.haml | 11 +- .../projects/project-edit-main.html.haml | 56 -------- .../projects/project-show-page.html.haml | 120 ------------------ app/views/users/show.html.haml | 2 +- config/routes.rb | 2 +- 6 files changed, 10 insertions(+), 187 deletions(-) delete mode 100644 app/views/projects/project-edit-main.html.haml delete mode 100644 app/views/projects/project-show-page.html.haml diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index df2b0ba0c..ecc700762 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -45,9 +45,7 @@ class ProjectsController < ApplicationController @project = Project.new params[:project] #@project.owner = get_owner @project.owner = choose_owner - puts "OWNER_TYPE: " + @project.owner_type @who_owns = (@project.owner_type == 'User' ? :me : :group) - puts "WHO_OWNS: " + @who_owns.to_s if @project.save flash[:notice] = t('flash.project.saved') @@ -118,11 +116,11 @@ class ProjectsController < ApplicationController if params[:user_id] @user = User.find params[:user_id] @projects_path = user_path(@user) # user_projects_path @user - @new_project_path = new_user_project_path @user + @new_project_path = new_project_path elsif params[:group_id] @group = Group.find params[:group_id] @projects_path = group_path(@group) # group_projects_path @group - @new_projects_path = new_group_project_path @group + @new_projects_path = new_project_path else @projects_path = projects_path @new_projects_path = new_project_path diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml index 80aab60ae..fe9d5a284 100644 --- a/app/views/projects/_form.html.haml +++ b/app/views/projects/_form.html.haml @@ -15,11 +15,12 @@ = f.label :owner_id, t("activerecord.attributes.project.owner"), :class => :label .rightlist = label_tag t("activerecord.attributes.project.who_owns.me") - = radio_button_tag :who_owns, 'me'#, {}.merge( (@who_owns == :me ? {:checked => 'checked'} : {}) ) - = label_tag t("activerecord.attributes.project.who_owns.group") - = radio_button_tag :who_owns, 'group'#, {}.merge( (@who_owns == :group ? {:checked => 'checked'} : {}) ) - -# TODO: Make our own select_box helper with new design, blackjack and bitches! - = select_tag :owner_id, options_for_select( Group.can_own_project(current_user) ) + - if Group.can_own_project(User.find(6)).count > 0 + = radio_button_tag :who_owns, 'me'#, {}.merge( (@who_owns == :me ? {:checked => 'checked'} : {}) ) + = label_tag t("activerecord.attributes.project.who_owns.group") + = radio_button_tag :who_owns, 'group'#, {}.merge( (@who_owns == :group ? {:checked => 'checked'} : {}) ) + -# TODO: Make our own select_box helper with new design, blackjack and bitches! + = select_tag :owner_id, options_for_select( Group.can_own_project(current_user) ) .both -#- if [:new, :create].include? act -# .leftlist diff --git a/app/views/projects/project-edit-main.html.haml b/app/views/projects/project-edit-main.html.haml deleted file mode 100644 index da260067b..000000000 --- a/app/views/projects/project-edit-main.html.haml +++ /dev/null @@ -1,56 +0,0 @@ -= render :partial => 'submenu' -- content_for :sidebar do - .admin-preferences - %ul - %li.active - %a{:href => "#"} Основное - %li - %a{:href => "#"} Разделы - %li - %a{:href => "#"} Участники - -.leftlist - Описание проекта: -.rightlist - %textarea -.both -.leftlist - Видимость проекта: -.rightlist - %input#myradio1.niceRadio{:checked => "checked", :name => "myradio", :tabindex => "1", :type => "radio"}/ - %img{:alt => "public", :src => "pics/unlock.png"}/ - Публичный - %input#myradio2.niceRadio{:name => "myradio", :tabindex => "2", :type => "radio"}/ - %img{:alt => "private", :src => "pics/lock.png"}/ - Приватный -.both -.leftlist - Ветка по умолчанию: -.rightlist - .lineForm - %select#ext.sel80{:name => "ext", :tabindex => "2"} - %option{:selected => "selected", :value => "1000"} Master - %option{:value => "1"} Extend - %option{:value => "2"} Fork4Driver -.both -.leftlist - \  -.rightlist - .check - %span#niceCheckbox1.niceCheck-main{:onclick => "changeCheck(this)"} - %input{:name => "ch1", :type => "checkbox"}/ - .forcheck - Проект является пакетом - .both -.both -.leftlist - \  -.rightlist - %a.button{:href => "#"} Сохранить -.both -.hr -.leftside - Внимание! Удаленный проект восстановлению не подлежит. -.rightside - %a.button{:href => "#"} Удалить -.both diff --git a/app/views/projects/project-show-page.html.haml b/app/views/projects/project-show-page.html.haml deleted file mode 100644 index 4da40c187..000000000 --- a/app/views/projects/project-show-page.html.haml +++ /dev/null @@ -1,120 +0,0 @@ -%h3 Файлы проекта -.files - .l - %p#file-name1 rails/actionpack/lib - %p#file-name2.non-view rails/actionpack/lib/Gemfile - #fork-and-edit.r - %a.button{:href => "#"} Fork and edit -.both -#file1 - %table#myTable.tablesorter.project{:cellpadding => "0", :cellspacing => "0"} - %thead - %tr - %th.th1 - Имя - %th.th2 - Дата - %th.th3 - Сообщение - %th.th4 - Автор сообщения - %tbody - %tr - %td - .pic - %img{:src => "pics/folder.png"}/ - .name - %a.files-see{:href => "#"} app/ - %td - %span{:style => "display: none;"}> Dec 31, 2011 - 31 декабря 2011 - %td - Merger issues with Master - %td - santaux - %tr - %td - .pic - %img{:src => "pics/folder.png"}/ - .name - %a.files-see{:href => "#"} bin/ - %td - %span{:style => "display: none;"}> Dec 31, 2011 - 31 декабря 2011 - %td - Redo autostart script to start from user - %td - chipiga - %tr - %td - .pic - %img{:src => "pics/folder.png"}/ - .name - %a.files-see{:href => "#"} config/ - %td - %span{:style => "display: none;"}> Jan 01, 2012 - 01 января 2012 - %td - Remove some unnessacary comments - %td - latromni - %tr - %td - .pic - %img{:src => "pics/folder.png"}/ - .name - %a.files-see{:href => "#"} db/ - %td - %span{:style => "display: none;"}> Jan 02, 2012 - 02 января 2012 - %td - Merger issues with Master - %td - santaux - %tr - %td - .pic - %img{:src => "pics/folder.png"}/ - .name - %a.files-see{:href => "#"} .rspec - %td - %span{:style => "display: none;"}> Jan 04, 2012 - 04 января 2012 - %td - Add pretty view for test listing - %td - santaux - %tr - %td - .pic - %img{:src => "pics/folder.png"}/ - .name - %a.files-see{:href => "#"} README - %td - %span{:style => "display: none;"}> Jan 05, 2012 - 05 января 2012 - %td - Initial commit - %td - chipiga -#file2.non-view - .file - .top - .l - 100644 | 94 lines (75 sloc) | 2.18kb - .r - %a{:href => "#"} raw - | - %a{:href => "#"} blame - | - %a{:href => "#"} history - %pre{:class => "brush: ruby;"} - :preserve - - source 'https//rubygems.org' - gemspec - if ENV[ 'AREL'] - gem 'arel', :path => ENV['AREL'] - else - gem 'arel' - .both diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml index 18b02c3b7..876c3c34c 100644 --- a/app/views/users/show.html.haml +++ b/app/views/users/show.html.haml @@ -71,7 +71,7 @@ .secondary-navigation %ul.wat-cf %li.first.active= link_to t("layout.projects.list"), projects_path - %li= link_to t("layout.projects.new"), new_user_project_path(@user) + %li= link_to t("layout.projects.new"), new_project_path .content %h2.title = t("layout.projects.list_header") diff --git a/config/routes.rb b/config/routes.rb index c6d803d18..7a3d8f5bf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -182,7 +182,7 @@ Rosa::Application.routes.draw do resources :users, :groups do resources :platforms, :only => [:new, :create] - resources :projects, :only => [:new, :create, :index] + resources :projects, :only => [:index] # resources :repositories, :only => [:new, :create] end From 6eb239385a50841298e3b48ea1290b75e228ec69 Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Thu, 1 Mar 2012 17:37:35 +0400 Subject: [PATCH 59/87] [issue #195] Fixed bug with creating project --- app/views/projects/new.html.haml | 2 +- config/routes.rb | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml index 4b03c2896..f723a1960 100644 --- a/app/views/projects/new.html.haml +++ b/app/views/projects/new.html.haml @@ -3,7 +3,7 @@ %h3.bpadding10 = t("layout.projects.new_header") -= form_for [get_owner, @project], :html => { :class => :form, :multipart => true } do |f| += form_for @project, :html => { :class => :form, :multipart => true } do |f| = render :partial => "form", :locals => {:f => f} -# content_for :sidebar, render('sidebar') diff --git a/config/routes.rb b/config/routes.rb index 7a3d8f5bf..459f4c229 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -94,7 +94,7 @@ Rosa::Application.routes.draw do resources :categories, :only => [:index, :show] end - resources :projects do + resources :projects, :except => [:new, :show] do resources :wiki do collection do match '_history' => 'wiki#wiki_history', :as => :history, :via => :get @@ -146,15 +146,17 @@ Rosa::Application.routes.draw do # resources :groups, :controller => 'project_groups' do # end - member do - post :fork - get 'show', :controller => 'git/trees', :action => :show, :as => :show - get :sections - post :sections - end + #match 'new' => "projects#new", :as => :new collection do get :auto_build end + member do + post :fork + get :new, :controller => 'projects', :action => 'new', :id => /new/, :as => :new + get :show, :controller => 'git/trees', :action => :show + get :sections + post :sections + end end resources :repositories do From 7d112d0524fca61479f3ebbfed1d76447cc34141 Mon Sep 17 00:00:00 2001 From: Pavel Chipiga Date: Thu, 1 Mar 2012 19:33:46 +0200 Subject: [PATCH 60/87] Fix build_lists bugs. Add build list display and new build list pages design, apply compass. Refactor and cleanup assets. Refactor abilities. Refactor build_list search. Improve layout_class helper. Change defaul build_lists index filter and fix specs. Fix assets path. Refs #223 --- app/assets/javascripts/application.js | 69 ++-- app/assets/javascripts/{ => design}/all.js | 0 .../javascripts/{ => design}/checkbox-main.js | 0 .../javascripts/{ => design}/checkbox.js | 0 .../javascripts/{ => design}/cusel-init.js | 0 .../javascripts/{ => design}/myprojects.js | 0 .../javascripts/{ => design}/project-page.js | 0 app/assets/javascripts/{ => design}/radio.js | 0 .../javascripts/{ => extra}/admin-members.js | 0 .../javascripts/{ => extra}/blob.editor.js | 0 app/assets/javascripts/extra/build_list.js | 23 ++ .../{ => extra}/syntax.highlighter-init.js | 0 app/assets/javascripts/{ => extra}/tracker.js | 2 +- app/assets/stylesheets/application.scss | 33 +- app/assets/stylesheets/blue/asc.png | Bin 2870 -> 0 bytes app/assets/stylesheets/blue/bg.png | Bin 2920 -> 0 bytes app/assets/stylesheets/blue/desc.png | Bin 2874 -> 0 bytes app/assets/stylesheets/blue/style.css | 118 ------ app/assets/stylesheets/blue/style.scss | 113 ------ app/assets/stylesheets/design/common.scss | 16 + .../stylesheets/{ => design}/custom.scss | 0 .../assets/stylesheets/design/git.scss | 0 app/assets/stylesheets/{ => design}/main.scss | 0 .../{ => devise}/registration.scss | 0 app/assets/stylesheets/hl/my.scss | 8 - app/assets/stylesheets/hl/shCore.scss | 226 ------------ app/assets/stylesheets/hl/shCoreDefault.scss | 328 ----------------- app/assets/stylesheets/hl/shCoreDjango.scss | 331 ----------------- app/assets/stylesheets/hl/shCoreEclipse.scss | 348 ------------------ app/assets/stylesheets/hl/shCoreEmacs.scss | 324 ---------------- .../stylesheets/hl/shCoreFadeToGrey.scss | 328 ----------------- app/assets/stylesheets/hl/shCoreMDUltra.scss | 324 ---------------- app/assets/stylesheets/hl/shCoreMidnight.scss | 324 ---------------- app/assets/stylesheets/hl/shCoreRDark.scss | 324 ---------------- app/assets/stylesheets/hl/shThemeDefault.scss | 117 ------ app/assets/stylesheets/hl/shThemeDjango.scss | 120 ------ app/assets/stylesheets/hl/shThemeEclipse.scss | 128 ------- app/assets/stylesheets/hl/shThemeEmacs.scss | 113 ------ .../stylesheets/hl/shThemeFadeToGrey.scss | 117 ------ app/assets/stylesheets/hl/shThemeMDUltra.scss | 113 ------ .../stylesheets/hl/shThemeMidnight.scss | 113 ------ app/assets/stylesheets/hl/shThemeRDark.scss | 113 ------ app/assets/stylesheets/reg_session.scss | 2 +- app/controllers/build_lists_controller.rb | 34 +- app/helpers/application_helper.rb | 10 +- app/models/ability.rb | 62 ++-- app/models/build_list/filter.rb | 2 +- app/models/user.rb | 6 +- app/views/build_lists/_build_list.html.haml | 2 +- .../{_sidebar.html.haml => _filter.html.haml} | 0 .../build_lists/_include_repos.html.haml | 5 +- app/views/build_lists/_sub_menu.html.haml | 6 - app/views/build_lists/_submenu.html.haml | 7 + app/views/build_lists/index.html.haml | 6 +- app/views/build_lists/new.html.haml | 95 ++--- app/views/build_lists/show.html.haml | 192 ++++------ app/views/git/repositories/_show.html.haml | 9 +- app/views/issues/_issue.html.haml | 3 +- app/views/issues/_labels.html.haml | 3 +- app/views/layouts/application.html.haml | 8 +- app/views/projects/_commit_info.html.haml | 2 +- app/views/projects/_repo_block.html.haml | 3 +- app/views/projects/_submenu.html.haml | 23 +- app/views/projects/show.html.haml | 9 +- config/application.rb | 3 + config/locales/build_list.en.yml | 2 + config/locales/build_list.ru.yml | 2 + config/routes.rb | 7 +- db/schema.rb | 5 +- .../build_lists_controller_spec.rb | 8 +- vendor/assets/stylesheets/vendor.scss | 27 +- 71 files changed, 314 insertions(+), 4402 deletions(-) rename app/assets/javascripts/{ => design}/all.js (100%) rename app/assets/javascripts/{ => design}/checkbox-main.js (100%) rename app/assets/javascripts/{ => design}/checkbox.js (100%) rename app/assets/javascripts/{ => design}/cusel-init.js (100%) rename app/assets/javascripts/{ => design}/myprojects.js (100%) rename app/assets/javascripts/{ => design}/project-page.js (100%) rename app/assets/javascripts/{ => design}/radio.js (100%) rename app/assets/javascripts/{ => extra}/admin-members.js (100%) rename app/assets/javascripts/{ => extra}/blob.editor.js (100%) create mode 100644 app/assets/javascripts/extra/build_list.js rename app/assets/javascripts/{ => extra}/syntax.highlighter-init.js (100%) rename app/assets/javascripts/{ => extra}/tracker.js (96%) delete mode 100644 app/assets/stylesheets/blue/asc.png delete mode 100644 app/assets/stylesheets/blue/bg.png delete mode 100644 app/assets/stylesheets/blue/desc.png delete mode 100644 app/assets/stylesheets/blue/style.css delete mode 100644 app/assets/stylesheets/blue/style.scss create mode 100644 app/assets/stylesheets/design/common.scss rename app/assets/stylesheets/{ => design}/custom.scss (100%) rename vendor/assets/stylesheets/git/style.css => app/assets/stylesheets/design/git.scss (100%) rename app/assets/stylesheets/{ => design}/main.scss (100%) rename app/assets/stylesheets/{ => devise}/registration.scss (100%) delete mode 100644 app/assets/stylesheets/hl/my.scss delete mode 100644 app/assets/stylesheets/hl/shCore.scss delete mode 100644 app/assets/stylesheets/hl/shCoreDefault.scss delete mode 100644 app/assets/stylesheets/hl/shCoreDjango.scss delete mode 100644 app/assets/stylesheets/hl/shCoreEclipse.scss delete mode 100644 app/assets/stylesheets/hl/shCoreEmacs.scss delete mode 100644 app/assets/stylesheets/hl/shCoreFadeToGrey.scss delete mode 100644 app/assets/stylesheets/hl/shCoreMDUltra.scss delete mode 100644 app/assets/stylesheets/hl/shCoreMidnight.scss delete mode 100644 app/assets/stylesheets/hl/shCoreRDark.scss delete mode 100644 app/assets/stylesheets/hl/shThemeDefault.scss delete mode 100644 app/assets/stylesheets/hl/shThemeDjango.scss delete mode 100644 app/assets/stylesheets/hl/shThemeEclipse.scss delete mode 100644 app/assets/stylesheets/hl/shThemeEmacs.scss delete mode 100644 app/assets/stylesheets/hl/shThemeFadeToGrey.scss delete mode 100644 app/assets/stylesheets/hl/shThemeMDUltra.scss delete mode 100644 app/assets/stylesheets/hl/shThemeMidnight.scss delete mode 100644 app/assets/stylesheets/hl/shThemeRDark.scss rename app/views/build_lists/{_sidebar.html.haml => _filter.html.haml} (100%) delete mode 100644 app/views/build_lists/_sub_menu.html.haml create mode 100644 app/views/build_lists/_submenu.html.haml diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index c7b8341e8..bf7550183 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -3,9 +3,9 @@ //= require jquery-ui //= require autocomplete-rails //= require vendor -//= require_tree . -// -// require_self +//= require_tree ./design +//= require_tree ./extra +//= require_self // function disableNotifierCbx(global_cbx) { // if ($(global_cbx).attr('checked')) { @@ -18,47 +18,24 @@ // } // // $(document).ready(function() { -// $('select#build_list_pl_id').change(function() { -// var platform_id = $(this).val(); -// var base_platforms = $('.base_platforms input[type=checkbox]'); -// -// $('#include_repos').html($('.preloaded_include_repos .include_repos_' + platform_id).html()); -// -// base_platforms.each(function(){ -// if ($.inArray(platform_id, base_platforms.map(function(){ return $(this).val() }).get()) >= 0) { -// if ($(this).val() == platform_id) { -// $(this).attr('checked', 'checked'); -// $(this).removeAttr('disabled'); -// } else { -// $(this).removeAttr('checked'); -// $(this).attr('disabled', 'disabled'); -// } -// } else { -// $(this).removeAttr('disabled'); -// } -// }); -// }); -// $('select#build_list_pl_id').trigger('change'); -// -// $('input.user_role_chbx').click(function() { -// var current = $(this); -// current.parent().find('input.user_role_chbx').each(function(i,el) { -// if ($(el).attr('id') != current.attr('id')) { -// $(el).removeAttr('checked'); -// } -// }); -// }); -// -// $('#settings_notifier_can_notify').click(function() { -// disableNotifierCbx($(this)); -// }); -// -// $('div.information > div.user').live('click', function() { -// droplist(); -// }); -// -// $('div.information > div.profile > a').live('click', function(e) { -// e.preventDefault(); -// }); -// +// $('input.user_role_chbx').click(function() { +// var current = $(this); +// current.parent().find('input.user_role_chbx').each(function(i,el) { +// if ($(el).attr('id') != current.attr('id')) { +// $(el).removeAttr('checked'); +// } +// }); +// }); +// +// $('#settings_notifier_can_notify').click(function() { +// disableNotifierCbx($(this)); +// }); +// +// $('div.information > div.user').live('click', function() { +// droplist(); +// }); +// +// $('div.information > div.profile > a').live('click', function(e) { +// e.preventDefault(); +// }); // }); diff --git a/app/assets/javascripts/all.js b/app/assets/javascripts/design/all.js similarity index 100% rename from app/assets/javascripts/all.js rename to app/assets/javascripts/design/all.js diff --git a/app/assets/javascripts/checkbox-main.js b/app/assets/javascripts/design/checkbox-main.js similarity index 100% rename from app/assets/javascripts/checkbox-main.js rename to app/assets/javascripts/design/checkbox-main.js diff --git a/app/assets/javascripts/checkbox.js b/app/assets/javascripts/design/checkbox.js similarity index 100% rename from app/assets/javascripts/checkbox.js rename to app/assets/javascripts/design/checkbox.js diff --git a/app/assets/javascripts/cusel-init.js b/app/assets/javascripts/design/cusel-init.js similarity index 100% rename from app/assets/javascripts/cusel-init.js rename to app/assets/javascripts/design/cusel-init.js diff --git a/app/assets/javascripts/myprojects.js b/app/assets/javascripts/design/myprojects.js similarity index 100% rename from app/assets/javascripts/myprojects.js rename to app/assets/javascripts/design/myprojects.js diff --git a/app/assets/javascripts/project-page.js b/app/assets/javascripts/design/project-page.js similarity index 100% rename from app/assets/javascripts/project-page.js rename to app/assets/javascripts/design/project-page.js diff --git a/app/assets/javascripts/radio.js b/app/assets/javascripts/design/radio.js similarity index 100% rename from app/assets/javascripts/radio.js rename to app/assets/javascripts/design/radio.js diff --git a/app/assets/javascripts/admin-members.js b/app/assets/javascripts/extra/admin-members.js similarity index 100% rename from app/assets/javascripts/admin-members.js rename to app/assets/javascripts/extra/admin-members.js diff --git a/app/assets/javascripts/blob.editor.js b/app/assets/javascripts/extra/blob.editor.js similarity index 100% rename from app/assets/javascripts/blob.editor.js rename to app/assets/javascripts/extra/blob.editor.js diff --git a/app/assets/javascripts/extra/build_list.js b/app/assets/javascripts/extra/build_list.js new file mode 100644 index 000000000..3f6fa3316 --- /dev/null +++ b/app/assets/javascripts/extra/build_list.js @@ -0,0 +1,23 @@ +$(document).ready(function() { + $('select#build_list_pl_id').change(function() { + var platform_id = $(this).val(); + var base_platforms = $('.base_platforms input[type=checkbox]'); + + $('#include_repos').html($('.preloaded_include_repos .include_repos_' + platform_id).html()); + + base_platforms.each(function(){ + if ($.inArray(platform_id, base_platforms.map(function(){ return $(this).val() }).get()) >= 0) { + if ($(this).val() == platform_id) { + $(this).attr('checked', 'checked'); + $(this).removeAttr('disabled'); + } else { + $(this).removeAttr('checked'); + $(this).attr('disabled', 'disabled'); + } + } else { + $(this).removeAttr('disabled'); + } + }); + }); + $('select#build_list_pl_id').trigger('change'); +}); diff --git a/app/assets/javascripts/syntax.highlighter-init.js b/app/assets/javascripts/extra/syntax.highlighter-init.js similarity index 100% rename from app/assets/javascripts/syntax.highlighter-init.js rename to app/assets/javascripts/extra/syntax.highlighter-init.js diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/extra/tracker.js similarity index 96% rename from app/assets/javascripts/tracker.js rename to app/assets/javascripts/extra/tracker.js index 9b6fe05eb..e0d645645 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/extra/tracker.js @@ -46,7 +46,7 @@ $(document).ready(function() { return send_index_tracker_request('GET'); }); - $("#myradio1").live('change', function(event) { + $("#filter_issues #myradio1").live('change', function(event) { return send_index_tracker_request('GET'); }); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 18d93de5f..3236ff5ef 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -1,30 +1,5 @@ @import "vendor"; -@import "main"; -@import "custom"; -@import "blue/style"; -@import "hl/my"; -@import "hl/shCore"; -//@import "hl/shCoreDefault"; -//@import "hl/shCoreDjango"; -@import "hl/shCoreEclipse"; -//@import "hl/shCoreEmacs"; -//@import "hl/shCoreFadeToGrey"; -//@import "hl/shCoreMDUltra"; -//@import "hl/shCoreMidnight"; -//@import "hl/shCoreRDark"; -//@import "hl/shThemeDefault"; -//@import "hl/shThemeDjango"; -@import "hl/shThemeEclipse"; -//@import "hl/shThemeEmacs"; -//@import "hl/shThemeFadeToGrey"; -//@import "hl/shThemeMDUltra"; -//@import "hl/shThemeMidnight"; -//@import "hl/shThemeRDark"; - -/* -*= require main -*= require blue/style -*= require_tree hl/ -*= require vendor -*= require custom -*/ +@import "design/main"; +@import "design/git"; +@import "design/common"; +@import "design/custom"; diff --git a/app/assets/stylesheets/blue/asc.png b/app/assets/stylesheets/blue/asc.png deleted file mode 100644 index 7cea5a1c301cb55f1c97bab5d9575601798cd0d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2870 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 diff --git a/app/assets/stylesheets/blue/style.css b/app/assets/stylesheets/blue/style.css deleted file mode 100644 index aafbf9dd9..000000000 --- a/app/assets/stylesheets/blue/style.css +++ /dev/null @@ -1,118 +0,0 @@ -/* tables */ -table.tablesorter { - font-family:arial; - margin:10px 0pt 15px; - font-size: 12px; - width: 100%; - text-align: left; - border: 1px solid #DDD; - border-bottom: none; -} - -table.tablesorter thead th{ - padding-left: 5px; -} - -table.tablesorter thead tr th, table.tablesorter tfoot tr th { - font-size: 12px; - margin: 0px; -} -table.tablesorter thead tr .header { - background-image: url("bg.png"); - background-repeat: no-repeat; - background-position: center left; - cursor: pointer; -} -table.tablesorter tbody td { - color: #3D3D3D; - padding: 5px; - margin: 0px; - background-color: #FFF; - vertical-align: top; - -} -table.tablesorter tbody tr.odd td { - background-color:#F0F0F6; -} -table.tablesorter thead tr .headerSortUp { - background-image: url("asc.png"); -} -table.tablesorter thead tr .headerSortDown { - background-image: url("desc.png"); -} -table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp { - -} - -table.tablesorter thead tr { - height: 38px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; -} - -table.tablesorter thead tr th{ - border-bottom: 1px solid #FFF; -} - -table.tablesorter tr { - position: relative; - z-index: 70; -} - -table.tablesorter tbody tr td { - border-bottom: 1px solid #DDD; -} - -table.tablesorter thead th { - color: #575756; - font-weight: normal; -} - -table.tablesorter tbody td { - color: #58595b; - padding-top: 8px; - padding-bottom: 8px; -} - -table.tablesorter .th1 { - width: 180px; - /*padding-left: 17px;*/ -} - -table.tablesorter .th2 { - width: 390px; -} - -table.tablesorter .th3 { - width: 110px; - /*padding-left: 17px;*/ -} - -table.tablesorter .td2 { - padding-right: 20px; -} - -table.tablesorter .th4 { - width: 120px; -} - -table.tablesorter .td5 { - text-align: center; -} - -table.tablesorter .td5 img{ - cursor: pointer; -} - -.table-sort-left { - float: left; - width: 25px; -} - -.table-sort-right { - float: left; -} \ No newline at end of file diff --git a/app/assets/stylesheets/blue/style.scss b/app/assets/stylesheets/blue/style.scss deleted file mode 100644 index b3dc78e17..000000000 --- a/app/assets/stylesheets/blue/style.scss +++ /dev/null @@ -1,113 +0,0 @@ -/* tables */ -table.tablesorter { - font-family:arial; - margin:10px 0pt 15px; - font-size: 12px; - width: 100%; - text-align: left; - border: 1px solid #DDD; - border-bottom: none; -} -table.tablesorter thead tr th, table.tablesorter tfoot tr th { - font-size: 12px; - margin: 0px; -} -table.tablesorter thead tr .header { - background-image: image-url("bg-sortable.png"); - background-repeat: no-repeat; - background-position: center left; - cursor: pointer; -} -table.tablesorter tbody td { - color: #3D3D3D; - padding: 5px; - margin: 0px; - background-color: #FFF; - vertical-align: top; - -} -table.tablesorter tbody tr.odd td { - background-color:#F0F0F6; -} -table.tablesorter thead tr .headerSortUp { - background-image: image-url("asc.png"); -} -table.tablesorter thead tr .headerSortDown { - background-image: image-url("desc.png"); -} -table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp { - -} - -table.tablesorter thead tr { - height: 38px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; -} - -table.tablesorter thead tr th{ - border-bottom: 1px solid #FFF; -} - -table.tablesorter tr { - position: relative; - z-index: 70; -} - -table.tablesorter tbody tr td { - border-bottom: 1px solid #DDD; -} - -table.tablesorter thead th { - color: #575756; - font-weight: normal; -} - -table.tablesorter tbody td { - color: #58595b; - padding-top: 8px; - padding-bottom: 8px; -} - -table.tablesorter .th1 { - width: 180px; - padding-left: 17px; -} - -table.tablesorter .th2 { - width: 390px; -} - -table.tablesorter .th3 { - width: 110px; - padding-left: 17px; -} - -table.tablesorter .td2 { - padding-right: 20px; -} - -table.tablesorter .th4 { - width: 120px; -} - -table.tablesorter .td5 { - text-align: center; -} - -table.tablesorter .td5 img{ - cursor: pointer; -} - -.table-sort-left { - float: left; - width: 25px; -} - -.table-sort-right { - float: left; -} diff --git a/app/assets/stylesheets/design/common.scss b/app/assets/stylesheets/design/common.scss new file mode 100644 index 000000000..ea53f9aba --- /dev/null +++ b/app/assets/stylesheets/design/common.scss @@ -0,0 +1,16 @@ +@import 'compass/utilities/tables'; + +table.info { + width: 100%; + td {padding: 5px;} +} + +table.columns2 { + @include inner-table-borders; + th.first, td.first {width: 50%;} +} + +table.columns3 { + @include alternating-rows-and-columns(#eee, #ccc, #000); + th.first, td.first, th.last, td.last {width: 30%;} +} diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/design/custom.scss similarity index 100% rename from app/assets/stylesheets/custom.scss rename to app/assets/stylesheets/design/custom.scss diff --git a/vendor/assets/stylesheets/git/style.css b/app/assets/stylesheets/design/git.scss similarity index 100% rename from vendor/assets/stylesheets/git/style.css rename to app/assets/stylesheets/design/git.scss diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/design/main.scss similarity index 100% rename from app/assets/stylesheets/main.scss rename to app/assets/stylesheets/design/main.scss diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/devise/registration.scss similarity index 100% rename from app/assets/stylesheets/registration.scss rename to app/assets/stylesheets/devise/registration.scss diff --git a/app/assets/stylesheets/hl/my.scss b/app/assets/stylesheets/hl/my.scss deleted file mode 100644 index 1c0167aec..000000000 --- a/app/assets/stylesheets/hl/my.scss +++ /dev/null @@ -1,8 +0,0 @@ -td.gutter { - background: #ededed; - color: #575756; -} - -div.syntaxhighlighter { - margin: 0; -} \ No newline at end of file diff --git a/app/assets/stylesheets/hl/shCore.scss b/app/assets/stylesheets/hl/shCore.scss deleted file mode 100644 index 34f6864a1..000000000 --- a/app/assets/stylesheets/hl/shCore.scss +++ /dev/null @@ -1,226 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} diff --git a/app/assets/stylesheets/hl/shCoreDefault.scss b/app/assets/stylesheets/hl/shCoreDefault.scss deleted file mode 100644 index 08f9e10e4..000000000 --- a/app/assets/stylesheets/hl/shCoreDefault.scss +++ /dev/null @@ -1,328 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: white !important; -} -.syntaxhighlighter .line.alt1 { - background-color: white !important; -} -.syntaxhighlighter .line.alt2 { - background-color: white !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #e0e0e0 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: black !important; -} -.syntaxhighlighter table caption { - color: black !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #6ce26c !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #6ce26c !important; - color: white !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: blue !important; - background: white !important; - border: 1px solid #6ce26c !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: blue !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: red !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #6ce26c !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: black !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: black !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #008200 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: blue !important; -} -.syntaxhighlighter .keyword { - color: #006699 !important; -} -.syntaxhighlighter .preprocessor { - color: gray !important; -} -.syntaxhighlighter .variable { - color: #aa7700 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ff1493 !important; -} -.syntaxhighlighter .constants { - color: #0066cc !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #006699 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: gray !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: red !important; -} - -.syntaxhighlighter .keyword { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shCoreDjango.scss b/app/assets/stylesheets/hl/shCoreDjango.scss deleted file mode 100644 index 1db1f70cb..000000000 --- a/app/assets/stylesheets/hl/shCoreDjango.scss +++ /dev/null @@ -1,331 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #233729 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: #f8f8f8 !important; -} -.syntaxhighlighter .gutter { - color: #497958 !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #41a83e !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #41a83e !important; - color: #0a2b1d !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #96dd3b !important; - background: black !important; - border: 1px solid #41a83e !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #96dd3b !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: white !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #41a83e !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #ffe862 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #f8f8f8 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #336442 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #9df39f !important; -} -.syntaxhighlighter .keyword { - color: #96dd3b !important; -} -.syntaxhighlighter .preprocessor { - color: #91bb9e !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #96dd3b !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #eb939a !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #91bb9e !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #edef7d !important; -} - -.syntaxhighlighter .comments { - font-style: italic !important; -} -.syntaxhighlighter .keyword { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shCoreEclipse.scss b/app/assets/stylesheets/hl/shCoreEclipse.scss deleted file mode 100644 index 1e6897f52..000000000 --- a/app/assets/stylesheets/hl/shCoreEclipse.scss +++ /dev/null @@ -1,348 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0; - /*padding-left: 5px;*/ - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - - - -.syntaxhighlighter { - width: auto; - margin: 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: auto; -} - -.syntaxhighlighter table tr td{ - padding: 10px 5px; -} - -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: auto; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: auto; - height: 100% !important; - border: none !important; - - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: white !important; -} -.syntaxhighlighter .line.alt1 { - -} -.syntaxhighlighter .line.alt2 { - background-color: none; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #c3defe !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: black !important; -} -.syntaxhighlighter .gutter { - color: #565657 !important; - background: #ededed; -} -.syntaxhighlighter .gutter .line { - border-right: none !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #d4d0c8 !important; - color: white !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #3f5fbf !important; - background: white !important; - border: 1px solid #d4d0c8 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #3f5fbf !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #aa7700 !important; -} -.syntaxhighlighter .toolbar { - color: #a0a0a0 !important; - background: #d4d0c8 !important; - border: none !important; - -} -.syntaxhighlighter .toolbar a { - color: #a0a0a0 !important; -} -.syntaxhighlighter .toolbar a:hover { - color: red !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: black !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #3f5fbf !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #2a00ff !important; -} -.syntaxhighlighter .keyword { - color: #7f0055 !important; -} -.syntaxhighlighter .preprocessor { - color: #646464 !important; -} -.syntaxhighlighter .variable { - color: #aa7700 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ff1493 !important; -} -.syntaxhighlighter .constants { - color: #0066cc !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #7f0055 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: gray !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: red !important; -} - -.syntaxhighlighter .keyword { - font-weight: bold !important; -} -.syntaxhighlighter .xml .keyword { - color: #3f7f7f !important; - font-weight: normal !important; -} -.syntaxhighlighter .xml .color1, .syntaxhighlighter .xml .color1 a { - color: #7f007f !important; -} -.syntaxhighlighter .xml .string { - font-style: italic !important; - color: #2a00ff !important; -} diff --git a/app/assets/stylesheets/hl/shCoreEmacs.scss b/app/assets/stylesheets/hl/shCoreEmacs.scss deleted file mode 100644 index 706c77a0a..000000000 --- a/app/assets/stylesheets/hl/shCoreEmacs.scss +++ /dev/null @@ -1,324 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: black !important; -} -.syntaxhighlighter .line.alt1 { - background-color: black !important; -} -.syntaxhighlighter .line.alt2 { - background-color: black !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #2a3133 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: #d3d3d3 !important; -} -.syntaxhighlighter .gutter { - color: #d3d3d3 !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #990000 !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #990000 !important; - color: black !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #ebdb8d !important; - background: black !important; - border: 1px solid #990000 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #ebdb8d !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #ff7d27 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #990000 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #9ccff4 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #d3d3d3 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #ff7d27 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #ff9e7b !important; -} -.syntaxhighlighter .keyword { - color: aqua !important; -} -.syntaxhighlighter .preprocessor { - color: #aec4de !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #81cef9 !important; -} -.syntaxhighlighter .constants { - color: #ff9e7b !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: aqua !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #ebdb8d !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff7d27 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #aec4de !important; -} diff --git a/app/assets/stylesheets/hl/shCoreFadeToGrey.scss b/app/assets/stylesheets/hl/shCoreFadeToGrey.scss deleted file mode 100644 index 6101eba51..000000000 --- a/app/assets/stylesheets/hl/shCoreFadeToGrey.scss +++ /dev/null @@ -1,328 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #121212 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #121212 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #121212 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #2c2c29 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: white !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #3185b9 !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #3185b9 !important; - color: #121212 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #3185b9 !important; - background: black !important; - border: 1px solid #3185b9 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #3185b9 !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #d01d33 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #3185b9 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #96daff !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: white !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #696854 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #e3e658 !important; -} -.syntaxhighlighter .keyword { - color: #d01d33 !important; -} -.syntaxhighlighter .preprocessor { - color: #435a5f !important; -} -.syntaxhighlighter .variable { - color: #898989 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #aaaaaa !important; -} -.syntaxhighlighter .constants { - color: #96daff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #d01d33 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #ffc074 !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #4a8cdb !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #96daff !important; -} - -.syntaxhighlighter .functions { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shCoreMDUltra.scss b/app/assets/stylesheets/hl/shCoreMDUltra.scss deleted file mode 100644 index 2923ce736..000000000 --- a/app/assets/stylesheets/hl/shCoreMDUltra.scss +++ /dev/null @@ -1,324 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #222222 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #222222 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #222222 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #253e5a !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: lime !important; -} -.syntaxhighlighter .gutter { - color: #38566f !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #222222 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #428bdd !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #428bdd !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: lime !important; -} -.syntaxhighlighter .toolbar { - color: #aaaaff !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #aaaaff !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #9ccff4 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: lime !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #428bdd !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: lime !important; -} -.syntaxhighlighter .keyword { - color: #aaaaff !important; -} -.syntaxhighlighter .preprocessor { - color: #8aa6c1 !important; -} -.syntaxhighlighter .variable { - color: aqua !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ff8000 !important; -} -.syntaxhighlighter .constants { - color: yellow !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #aaaaff !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: red !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: yellow !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shCoreMidnight.scss b/app/assets/stylesheets/hl/shCoreMidnight.scss deleted file mode 100644 index e3733eed5..000000000 --- a/app/assets/stylesheets/hl/shCoreMidnight.scss +++ /dev/null @@ -1,324 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #253e5a !important; -} -.syntaxhighlighter .line.highlighted.number { - color: #38566f !important; -} -.syntaxhighlighter table caption { - color: #d1edff !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #0f192a !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #428bdd !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #428bdd !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #1dc116 !important; -} -.syntaxhighlighter .toolbar { - color: #d1edff !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #d1edff !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #8aa6c1 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #d1edff !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #428bdd !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #1dc116 !important; -} -.syntaxhighlighter .keyword { - color: #b43d3d !important; -} -.syntaxhighlighter .preprocessor { - color: #8aa6c1 !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #b43d3d !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #f8bb00 !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: white !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shCoreRDark.scss b/app/assets/stylesheets/hl/shCoreRDark.scss deleted file mode 100644 index d09368384..000000000 --- a/app/assets/stylesheets/hl/shCoreRDark.scss +++ /dev/null @@ -1,324 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #323e41 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: #b9bdb6 !important; -} -.syntaxhighlighter table caption { - color: #b9bdb6 !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #1b2426 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #5ba1cf !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #5ba1cf !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #5ce638 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #e0e8ff !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #b9bdb6 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #878a85 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #5ce638 !important; -} -.syntaxhighlighter .keyword { - color: #5ba1cf !important; -} -.syntaxhighlighter .preprocessor { - color: #435a5f !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #5ba1cf !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #e0e8ff !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: white !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shThemeDefault.scss b/app/assets/stylesheets/hl/shThemeDefault.scss deleted file mode 100644 index 136541172..000000000 --- a/app/assets/stylesheets/hl/shThemeDefault.scss +++ /dev/null @@ -1,117 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: white !important; -} -.syntaxhighlighter .line.alt1 { - background-color: white !important; -} -.syntaxhighlighter .line.alt2 { - background-color: white !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #e0e0e0 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: black !important; -} -.syntaxhighlighter table caption { - color: black !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #6ce26c !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #6ce26c !important; - color: white !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: blue !important; - background: white !important; - border: 1px solid #6ce26c !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: blue !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: red !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #6ce26c !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: black !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: black !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #008200 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: blue !important; -} -.syntaxhighlighter .keyword { - color: #006699 !important; -} -.syntaxhighlighter .preprocessor { - color: gray !important; -} -.syntaxhighlighter .variable { - color: #aa7700 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ff1493 !important; -} -.syntaxhighlighter .constants { - color: #0066cc !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #006699 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: gray !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: red !important; -} - -.syntaxhighlighter .keyword { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shThemeDjango.scss b/app/assets/stylesheets/hl/shThemeDjango.scss deleted file mode 100644 index d8b431343..000000000 --- a/app/assets/stylesheets/hl/shThemeDjango.scss +++ /dev/null @@ -1,120 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #233729 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: #f8f8f8 !important; -} -.syntaxhighlighter .gutter { - color: #497958 !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #41a83e !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #41a83e !important; - color: #0a2b1d !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #96dd3b !important; - background: black !important; - border: 1px solid #41a83e !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #96dd3b !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: white !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #41a83e !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #ffe862 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #f8f8f8 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #336442 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #9df39f !important; -} -.syntaxhighlighter .keyword { - color: #96dd3b !important; -} -.syntaxhighlighter .preprocessor { - color: #91bb9e !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #96dd3b !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #eb939a !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #91bb9e !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #edef7d !important; -} - -.syntaxhighlighter .comments { - font-style: italic !important; -} -.syntaxhighlighter .keyword { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shThemeEclipse.scss b/app/assets/stylesheets/hl/shThemeEclipse.scss deleted file mode 100644 index c64e2b65b..000000000 --- a/app/assets/stylesheets/hl/shThemeEclipse.scss +++ /dev/null @@ -1,128 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: white !important; -} -.syntaxhighlighter .line.alt1 { - -} -.syntaxhighlighter .line.alt2 { - background-color: none !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #c3defe !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: black !important; -} -.syntaxhighlighter .gutter { - -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #ededed !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #d4d0c8 !important; - color: white !important; -} -.syntaxhighlighter.printing .line .content { - border: 3px solid #ededed !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #3f5fbf !important; - background: white !important; - border: 1px solid #d4d0c8 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #3f5fbf !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #aa7700 !important; -} -.syntaxhighlighter .toolbar { - color: #a0a0a0 !important; - background: #d4d0c8 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #a0a0a0 !important; -} -.syntaxhighlighter .toolbar a:hover { - color: red !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: black !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #3f5fbf !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #2a00ff !important; -} -.syntaxhighlighter .keyword { - color: #7f0055 !important; -} -.syntaxhighlighter .preprocessor { - color: #646464 !important; -} -.syntaxhighlighter .variable { - color: #aa7700 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ff1493 !important; -} -.syntaxhighlighter .constants { - color: #0066cc !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #7f0055 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: gray !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: red !important; -} - -.syntaxhighlighter .keyword { - font-weight: bold !important; -} -.syntaxhighlighter .xml .keyword { - color: #3f7f7f !important; - font-weight: normal !important; -} -.syntaxhighlighter .xml .color1, .syntaxhighlighter .xml .color1 a { - color: #7f007f !important; -} -.syntaxhighlighter .xml .string { - font-style: italic !important; - color: #2a00ff !important; -} diff --git a/app/assets/stylesheets/hl/shThemeEmacs.scss b/app/assets/stylesheets/hl/shThemeEmacs.scss deleted file mode 100644 index dae5053fe..000000000 --- a/app/assets/stylesheets/hl/shThemeEmacs.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: black !important; -} -.syntaxhighlighter .line.alt1 { - background-color: black !important; -} -.syntaxhighlighter .line.alt2 { - background-color: black !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #2a3133 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: #d3d3d3 !important; -} -.syntaxhighlighter .gutter { - color: #d3d3d3 !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #990000 !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #990000 !important; - color: black !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #ebdb8d !important; - background: black !important; - border: 1px solid #990000 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #ebdb8d !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #ff7d27 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #990000 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #9ccff4 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #d3d3d3 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #ff7d27 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #ff9e7b !important; -} -.syntaxhighlighter .keyword { - color: aqua !important; -} -.syntaxhighlighter .preprocessor { - color: #aec4de !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #81cef9 !important; -} -.syntaxhighlighter .constants { - color: #ff9e7b !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: aqua !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #ebdb8d !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff7d27 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #aec4de !important; -} diff --git a/app/assets/stylesheets/hl/shThemeFadeToGrey.scss b/app/assets/stylesheets/hl/shThemeFadeToGrey.scss deleted file mode 100644 index 8fbd871fb..000000000 --- a/app/assets/stylesheets/hl/shThemeFadeToGrey.scss +++ /dev/null @@ -1,117 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #121212 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #121212 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #121212 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #2c2c29 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: white !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #3185b9 !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #3185b9 !important; - color: #121212 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #3185b9 !important; - background: black !important; - border: 1px solid #3185b9 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #3185b9 !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #d01d33 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #3185b9 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #96daff !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: white !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #696854 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #e3e658 !important; -} -.syntaxhighlighter .keyword { - color: #d01d33 !important; -} -.syntaxhighlighter .preprocessor { - color: #435a5f !important; -} -.syntaxhighlighter .variable { - color: #898989 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #aaaaaa !important; -} -.syntaxhighlighter .constants { - color: #96daff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #d01d33 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #ffc074 !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #4a8cdb !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #96daff !important; -} - -.syntaxhighlighter .functions { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shThemeMDUltra.scss b/app/assets/stylesheets/hl/shThemeMDUltra.scss deleted file mode 100644 index f4db39cd8..000000000 --- a/app/assets/stylesheets/hl/shThemeMDUltra.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #222222 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #222222 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #222222 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #253e5a !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: lime !important; -} -.syntaxhighlighter .gutter { - color: #38566f !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #222222 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #428bdd !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #428bdd !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: lime !important; -} -.syntaxhighlighter .toolbar { - color: #aaaaff !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #aaaaff !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #9ccff4 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: lime !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #428bdd !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: lime !important; -} -.syntaxhighlighter .keyword { - color: #aaaaff !important; -} -.syntaxhighlighter .preprocessor { - color: #8aa6c1 !important; -} -.syntaxhighlighter .variable { - color: aqua !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ff8000 !important; -} -.syntaxhighlighter .constants { - color: yellow !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #aaaaff !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: red !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: yellow !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shThemeMidnight.scss b/app/assets/stylesheets/hl/shThemeMidnight.scss deleted file mode 100644 index c49563cc9..000000000 --- a/app/assets/stylesheets/hl/shThemeMidnight.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #253e5a !important; -} -.syntaxhighlighter .line.highlighted.number { - color: #38566f !important; -} -.syntaxhighlighter table caption { - color: #d1edff !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #0f192a !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #428bdd !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #428bdd !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #1dc116 !important; -} -.syntaxhighlighter .toolbar { - color: #d1edff !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #d1edff !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #8aa6c1 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #d1edff !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #428bdd !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #1dc116 !important; -} -.syntaxhighlighter .keyword { - color: #b43d3d !important; -} -.syntaxhighlighter .preprocessor { - color: #8aa6c1 !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #b43d3d !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #f8bb00 !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: white !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shThemeRDark.scss b/app/assets/stylesheets/hl/shThemeRDark.scss deleted file mode 100644 index 6305a10e4..000000000 --- a/app/assets/stylesheets/hl/shThemeRDark.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #323e41 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: #b9bdb6 !important; -} -.syntaxhighlighter table caption { - color: #b9bdb6 !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #1b2426 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #5ba1cf !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #5ba1cf !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #5ce638 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #e0e8ff !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #b9bdb6 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #878a85 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #5ce638 !important; -} -.syntaxhighlighter .keyword { - color: #5ba1cf !important; -} -.syntaxhighlighter .preprocessor { - color: #435a5f !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #5ba1cf !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #e0e8ff !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: white !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/reg_session.scss b/app/assets/stylesheets/reg_session.scss index 224481094..88ca94688 100644 --- a/app/assets/stylesheets/reg_session.scss +++ b/app/assets/stylesheets/reg_session.scss @@ -1,4 +1,4 @@ -@import "registration"; +@import "devise/registration"; nav { width: 96px; diff --git a/app/controllers/build_lists_controller.rb b/app/controllers/build_lists_controller.rb index 7b17c4899..fb4d7e1a2 100644 --- a/app/controllers/build_lists_controller.rb +++ b/app/controllers/build_lists_controller.rb @@ -1,7 +1,7 @@ # -*- encoding : utf-8 -*- class BuildListsController < ApplicationController CALLBACK_ACTIONS = [:publish_build, :status_build, :pre_build, :post_build, :circle_build, :new_bbdt] - NESTED_ACTIONS = [:index, :new, :create] + NESTED_ACTIONS = [:search, :index, :new, :create] before_filter :authenticate_user!, :except => CALLBACK_ACTIONS before_filter :authenticate_build_service!, :only => CALLBACK_ACTIONS @@ -13,23 +13,23 @@ class BuildListsController < ApplicationController load_and_authorize_resource :build_list, :through => :project, :only => NESTED_ACTIONS, :shallow => true load_and_authorize_resource :except => CALLBACK_ACTIONS.concat(NESTED_ACTIONS) - def index - if request.post? - new_params = {:filter => {}} - params[:filter].each do |k,v| - new_params[:filter][k] = v unless v.empty? - end - redirect_to build_lists_path(new_params) - else - @action_url = @project ? project_build_lists_path(@project) : build_lists_path - @filter = BuildList::Filter.new(@project, current_user, params[:filter] || {}) - @build_lists = @filter.find.recent.paginate :page => params[:page] + def search + new_params = {:filter => {}} + params[:filter].each do |k,v| + new_params[:filter][k] = v unless v.empty? + end + redirect_to @project ? project_build_lists_path(@project, new_params) : build_lists_path(new_params) + end - @build_server_status = begin - BuildServer.get_status - rescue Exception # Timeout::Error - {} - end + def index + @action_url = @project ? search_project_build_lists_path(@project) : search_build_lists_path + @filter = BuildList::Filter.new(@project, current_user, params[:filter] || {}) + @build_lists = @filter.find.recent.paginate :page => params[:page] + + @build_server_status = begin + BuildServer.get_status + rescue Exception # Timeout::Error + {} end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 5cd649a41..b3a9ca42a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -13,11 +13,13 @@ module ApplicationHelper def layout_class case when params[:controller] == 'issues' && params[:action] == 'new' - 'nopadding' - when params[:controller] == 'build_lists' - 'slim' - else + 'right nopadding' + when params[:controller] == 'build_lists' && params[:action] == 'index' + 'right slim' + when params[:controller] == 'build_lists' && ['new', 'create'].include?(params[:action]) nil + else + content_for?(:sidebar) ? 'right' : 'all' end end end diff --git a/app/models/ability.rb b/app/models/ability.rb index de9ac0f5c..eaf71d097 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -12,25 +12,27 @@ class Ability user ||= User.new # guest user (not logged in) @user = user - if user.admin? - can :manage, :all - cannot :destroy, Subscribe - cannot :create, Subscribe - cannot :create, RegisterRequest - cannot :approve, RegisterRequest, :approved => true - cannot :reject, RegisterRequest, :rejected => true - else - # Shared rights between guests and registered users - can :forbidden, Platform + # Shared rights between guests and registered users + can :forbidden, Platform + # TODO remove because auth callbacks skipped + can :auto_build, Project + can [:publish_build, :status_build, :pre_build, :post_build, :circle_build, :new_bbdt], BuildList - # TODO remove because auth callbacks skipped - can :auto_build, Project - can [:publish_build, :status_build, :pre_build, :post_build, :circle_build, :new_bbdt], BuildList + if user.guest? # Guest rights + can :create, User + can [:create, :show_message], RegisterRequest + else # Registered user rights + if user.admin? + can :manage, :all + cannot :destroy, Subscribe + cannot :create, Subscribe + cannot :create, RegisterRequest + cannot :approve, RegisterRequest, :approved => true + cannot :reject, RegisterRequest, :rejected => true + cannot [:owned, :related], BuildList + end - if user.guest? # Guest rights - can :create, User - can [:create, :show_message], RegisterRequest - else # Registered user rights + if user.user? can [:show, :autocomplete_user_uname], User can [:show, :update], Settings::Notifier, :user_id => user.id @@ -60,7 +62,7 @@ class Ability can [:read, :related], BuildList, :project => {:owner_type => 'User', :owner_id => user.id} can [:read, :related], BuildList, :project => {:owner_type => 'Group', :owner_id => user.group_ids} can(:read, BuildList, read_relations_for('build_lists', 'projects')) {|build_list| can? :read, build_list.project} - can(:create, BuildList) {|build_list| can? :write, build_list.project} + can(:create, BuildList) {|build_list| build_list.project.is_rpm && can?(:write, build_list.project)} can(:publish, BuildList) {|build_list| build_list.can_publish? && can?(:write, build_list.project)} can(:cancel, BuildList) {|build_list| build_list.can_cancel? && can?(:write, build_list.project)} @@ -84,7 +86,7 @@ class Ability can(:manage, Product, read_relations_for('products', 'platforms')) {|product| local_admin? product.platform} can(:create, ProductBuildList) {|pbl| pbl.product.can_build? and can?(:update, pbl.product)} can(:destroy, ProductBuildList) {|pbl| can?(:destroy, pbl.product)} - + can [:read, :platforms], Category can [:read, :create], PrivateUser, :platform => {:owner_type => 'User', :owner_id => user.id} @@ -105,19 +107,19 @@ class Ability cannot(:manage, Comment) {|comment| comment.commentable_type == 'Issue' && !comment.commentable.project.has_issues} # switch off issues cannot :manage, RegisterRequest end - end - # Shared cannot rights for all users (guests, registered, admin) - cannot :destroy, Platform, :platform_type => 'personal' - cannot :destroy, Repository, :platform => {:platform_type => 'personal'} - cannot :fork, Project, :owner_id => user.id, :owner_type => user.class.to_s - cannot :destroy, Issue + # Shared cannot rights for all users (registered, admin) + cannot :destroy, Platform, :platform_type => 'personal' + cannot :destroy, Repository, :platform => {:platform_type => 'personal'} + cannot :fork, Project, :owner_id => user.id, :owner_type => user.class.to_s + cannot :destroy, Issue - can :create, Subscribe do |subscribe| - !subscribe.subscribeable.subscribes.exists?(:user_id => user.id) - end - can :destroy, Subscribe do |subscribe| - subscribe.subscribeable.subscribes.exists?(:user_id => user.id) && user.id == subscribe.user_id + can :create, Subscribe do |subscribe| + !subscribe.subscribeable.subscribes.exists?(:user_id => user.id) + end + can :destroy, Subscribe do |subscribe| + subscribe.subscribeable.subscribes.exists?(:user_id => user.id) && user.id == subscribe.user_id + end end end diff --git a/app/models/build_list/filter.rb b/app/models/build_list/filter.rb index 2b21aec25..bc76ee73e 100644 --- a/app/models/build_list/filter.rb +++ b/app/models/build_list/filter.rb @@ -56,7 +56,7 @@ class BuildList::Filter :project_name => nil })) - @options[:ownership] = @options[:ownership].presence || 'index' + @options[:ownership] = @options[:ownership].presence || 'owned' @options[:status] = @options[:status].present? ? @options[:status].to_i : nil @options[:created_at_start] = build_date_from_params(:created_at_start, @options) @options[:created_at_end] = build_date_from_params(:created_at_end, @options) diff --git a/app/models/user.rb b/app/models/user.rb index 9a1b029e3..20906dc5c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -44,8 +44,12 @@ class User < ActiveRecord::Base role == 'admin' end + def user? + persisted? + end + def guest? - self.id.blank? # persisted? + new_record? end def fullname diff --git a/app/views/build_lists/_build_list.html.haml b/app/views/build_lists/_build_list.html.haml index 2af6a086e..d0d65fb58 100644 --- a/app/views/build_lists/_build_list.html.haml +++ b/app/views/build_lists/_build_list.html.haml @@ -4,6 +4,6 @@ %td= link_to build_list.project_version, "#" %td= link_to build_list.project.name, build_list.project %td= build_list.arch.name - %td= link_to build_list.user.fullname, build_list.user + %td= link_to build_list.user.try(:fullname), build_list.user %td= link_to image_tag('x.png', :class => 'delete-row', :id => "delete-row#{build_list_counter}"), cancel_build_list_path(build_list), :method => :put, :confirm => t('layout.confirm') if can?(:cancel, build_list) %td= build_list.notified_at \ No newline at end of file diff --git a/app/views/build_lists/_sidebar.html.haml b/app/views/build_lists/_filter.html.haml similarity index 100% rename from app/views/build_lists/_sidebar.html.haml rename to app/views/build_lists/_filter.html.haml diff --git a/app/views/build_lists/_include_repos.html.haml b/app/views/build_lists/_include_repos.html.haml index 55902b2f9..7d99581c1 100644 --- a/app/views/build_lists/_include_repos.html.haml +++ b/app/views/build_lists/_include_repos.html.haml @@ -1,3 +1,4 @@ - platform.repositories.each do |repo| - = check_box_tag "build_list[include_repos][]", repo.id, repo.name == 'main' || @project.repositories.map(&:id).include?(repo.id), :id => "include_repos_#{repo.id}" # (params[:build_list]||[]).fetch(:include_repos, []).include?(repo.id.to_s) - = label_tag "include_repos_#{repo.id}", repo.name \ No newline at end of file + .both + = check_box_tag "build_list[include_repos][]", repo.id, repo.name == 'main' || @project.repositories.map(&:id).include?(repo.id), :id => "include_repos_#{repo.id}" # (params[:build_list]||[]).fetch(:include_repos, []).include?(repo.id.to_s) + = label_tag "include_repos_#{repo.id}", repo.name \ No newline at end of file diff --git a/app/views/build_lists/_sub_menu.html.haml b/app/views/build_lists/_sub_menu.html.haml deleted file mode 100644 index 971b32575..000000000 --- a/app/views/build_lists/_sub_menu.html.haml +++ /dev/null @@ -1,6 +0,0 @@ -- content_for :sub_menu do - .left - %nav - %ul - %li= link_to t('layout.projects.list_header'), build_lists_path, :class => current_page?(:controller => 'build_lists') ? 'active' : nil - %li= link_to t('layout.products.list_header'), '#' \ No newline at end of file diff --git a/app/views/build_lists/_submenu.html.haml b/app/views/build_lists/_submenu.html.haml new file mode 100644 index 000000000..06ade1465 --- /dev/null +++ b/app/views/build_lists/_submenu.html.haml @@ -0,0 +1,7 @@ +- content_for :submenu do + - if content_for?(:sidebar) + .left + %nav + %ul + %li= link_to t('layout.projects.list_header'), build_lists_path, :class => (params[:controller] == 'build_lists' ? 'active' : nil) + %li= link_to t('layout.products.list_header'), '#' \ No newline at end of file diff --git a/app/views/build_lists/index.html.haml b/app/views/build_lists/index.html.haml index f1f807094..df42ed0ad 100644 --- a/app/views/build_lists/index.html.haml +++ b/app/views/build_lists/index.html.haml @@ -15,5 +15,7 @@ = will_paginate @build_lists -= render 'build_lists/sub_menu' -= render 'build_lists/sidebar' += link_to t('layout.build_lists.new_header'), new_project_build_list_path(@project), :class => 'button' if @project and can?(:create, @project => BuildList) + += render 'build_lists/filter' += render @project ? 'projects/submenu' : 'build_lists/submenu' diff --git a/app/views/build_lists/new.html.haml b/app/views/build_lists/new.html.haml index 0294c2b99..6d34bda9d 100644 --- a/app/views/build_lists/new.html.haml +++ b/app/views/build_lists/new.html.haml @@ -1,66 +1,37 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first=# link_to t("layout.projects.list"), platform_repository_path(@platform, @repository) + "#projects" - %li= link_to t("layout.projects.new"), new_project_path - %li= link_to t("layout.projects.show"), project_path(@project) - %li=# link_to "git-repo", project_repo_path(@platform, @repository, @project) - %li.active= link_to t("layout.projects.build"), new_project_build_list_path(@project) - - .content - %h2.title= t("layout.projects.new_build", :project_name => @project.name) - - .inner - = form_for [@project, @build_list], :html => { :class => :form, :method => :post } do |f| - .columns.wat-cf - .column.left - .group - = f.label :project_version, t("activerecord.attributes.build_list.project_version"), :class => :label - = f.select :project_version, @project.versions - - .group.base_platforms - = f.label :bpl, t("activerecord.attributes.build_list.bpl"), :class => :label - - Platform.main.each do |bpl| - = check_box_tag "bpls[]", bpl.id, (params[:bpls]||[]).include?(bpl.id.to_s), :class => 'build_bpl_ids', :id => "bpls_#{bpl.id}" - = label_tag "bpls_#{bpl.id}", bpl.name - %br - - .group - = f.label :update_type, t("activerecord.attributes.build_list.update_type"), :class => :label - = f.select :update_type, BuildList::UPDATE_TYPES - - .group - = f.check_box :build_requires - = f.label :build_requires, t("activerecord.attributes.build_list.build_requires") - - - .column.right - .group - = f.label :arches, t("activerecord.attributes.build_list.arch"), :class => :label - - Arch.recent.each do |arch| - = check_box_tag "arches[]", arch.id, (params[:arches]||[]).include?(arch.id.to_s), :id => "arches_#{arch.id}" - = label_tag "arches_#{arch.id}", arch.name - %br - - .group - = f.label :pl_id, t("activerecord.attributes.build_list.pl"), :class => :label - = f.select :pl_id, @project.repositories.collect{|r| ["#{r.platform.name}/#{r.name}", r.platform.id]} - - .group - = f.label :include_repos, t("activerecord.attributes.build_list.include_repos"), :class => :label - #include_repos - - .group - = f.check_box :auto_publish - = f.label :auto_publish, t("activerecord.attributes.build_list.auto_publish") - - .group.navform.wat-cf - %button.button{:type => "submit"} - = image_tag("choose.png", :alt => t("layout.projects.build_button")) - = t("layout.projects.build_button") - %span.text_button_padding= t("layout.or") - = link_to t("layout.cancel"), root_path, :class => "text_button_padding link_button" += form_for [@project, @build_list], :html => { :class => :form, :method => :post } do |f| + %section.left + %h3= t("activerecord.attributes.build_list.project_version") + .lineForm= f.select :project_version, @project.versions + %h3= t("activerecord.attributes.build_list.bpl") + .base_platforms + - Platform.main.each do |bpl| + .both + = check_box_tag "bpls[]", bpl.id, (params[:bpls]||[]).include?(bpl.id.to_s), :class => 'build_bpl_ids', :id => "bpls_#{bpl.id}" + = label_tag "bpls_#{bpl.id}", bpl.name + %h3= t("activerecord.attributes.build_list.update_type") + .lineForm= f.select :update_type, BuildList::UPDATE_TYPES + %h3= t("activerecord.attributes.build_list.preferences") + .both + = f.check_box :auto_publish + = f.label :auto_publish + .both + = f.check_box :build_requires + = f.label :build_requires + %br + = f.submit t("layout.projects.build_button") + %section.right + %h3= t("activerecord.attributes.build_list.arch") + - Arch.recent.each do |arch| + .both + = check_box_tag "arches[]", arch.id, (params[:arches]||[]).include?(arch.id.to_s), :id => "arches_#{arch.id}" + = label_tag "arches_#{arch.id}", arch.name + %h3= t("activerecord.attributes.build_list.pl") + .lineForm= f.select :pl_id, @project.repositories.collect{|r| ["#{r.platform.name}/#{r.name}", r.platform.id]} + %h3= t("activerecord.attributes.build_list.include_repos") + #include_repos .preloaded_include_repos{:style => 'display: none'} - @project.platforms.each do |p| %div{:class => "include_repos_#{p.id}"}= render 'include_repos', :platform => p + += render 'projects/submenu' diff --git a/app/views/build_lists/show.html.haml b/app/views/build_lists/show.html.haml index 1e4c8dd2d..36d7eaa50 100644 --- a/app/views/build_lists/show.html.haml +++ b/app/views/build_lists/show.html.haml @@ -1,121 +1,81 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.build_lists.current"), project_path(@build_list.project) + "#build_lists" - %li= link_to t("layout.build_lists.all"), project_build_lists_path(@build_list.project) - %li.active= link_to t("layout.build_lists.show"), @build_list +%table.columns2.info + %tr + %td.first= t("activerecord.attributes.build_list.name") + %td= @build_list.present? ? @build_list.name : t("layout.build_lists.name_not_yet_defined") + %tr + %td= t("activerecord.attributes.build_list.bs_id") + %td= @build_list.bs_id + %tr + %td= t("activerecord.attributes.build_list.container_path") + %td + - if @build_list.status == BuildList::BUILD_PUBLISHED + = t("layout.build_lists.container_published") + - elsif @build_list.container_path.present? + - container_url = "http://#{request.host_with_port}/downloads#{@build_list.container_path}" + = link_to container_url, container_url + %tr + %td= t("activerecord.attributes.build_list.bpl") + %td= link_to @build_list.bpl.name, @build_list.bpl + %tr + %td= t("activerecord.attributes.build_list.pl") + %td= link_to @build_list.pl.name, @build_list.pl + %tr + %td= t("activerecord.attributes.build_list.include_repos") + %td= (@build_list.include_repos||[]).map{|r| Repository.find(r).name}.join(', ') + %tr + %td= t("activerecord.attributes.build_list.update_type") + %td= @build_list.update_type + %tr + %td= t("activerecord.attributes.build_list.build_requires") + %td= @build_list.build_requires + %tr + %td= t("activerecord.attributes.build_list.auto_publish") + %td= @build_list.auto_publish + %tr + %td= t("activerecord.attributes.build_list.status") + %td= @build_list.human_status + %tr + %td= t("activerecord.attributes.build_list.project_version") + %td= @build_list.project_version + %tr + %td= t("activerecord.attributes.build_list.project") + %td= link_to @build_list.project.name, project_path(@build_list.project) + %tr + %td= t("activerecord.attributes.build_list.arch") + %td= @build_list.arch.name + %tr + %td= t("activerecord.attributes.build_list.user") + %td= link_to @build_list.user.try(:fullname), @build_list.user + %tr + %td= t("activerecord.attributes.build_list.notified_at") + %td= @build_list.notified_at + %tr + %td= t("activerecord.attributes.build_list.is_circle") + %td= t("layout.#{@build_list.is_circle?}_") - .content - .inner - %p - %b - = t("activerecord.attributes.build_list.name") - \: - = @build_list.present? ? @build_list.name : t("layout.build_lists.name_not_yet_defined") - %p - %b - = t("activerecord.attributes.build_list.bs_id") - \: - = @build_list.bs_id - %p - %b - = t("activerecord.attributes.build_list.container_path") - \: - - if @build_list.status == BuildList::BUILD_PUBLISHED - = t("layout.build_lists.container_published") - - elsif @build_list.container_path.present? - - container_url = "http://#{request.host_with_port}/downloads#{@build_list.container_path}" - = link_to container_url, container_url - %p - %b - = t("activerecord.attributes.build_list.bpl") - \: - = @build_list.bpl.name - %p - %b - = t("activerecord.attributes.build_list.pl") - \: - = @build_list.pl.name - %p - %b - = t("activerecord.attributes.build_list.include_repos") - \: - = (@build_list.include_repos||[]).map{|r| Repository.find(r).name}.join(', ') - %p - %b - = t("activerecord.attributes.build_list.update_type") - \: - = @build_list.update_type - %p - %b - = t("activerecord.attributes.build_list.build_requires") - \: - = @build_list.build_requires - %p - %b - = t("activerecord.attributes.build_list.auto_publish") - \: - = @build_list.auto_publish - %p - %b - = t("activerecord.attributes.build_list.status") - \: - = @build_list.human_status - %p - %b - = t("activerecord.attributes.build_list.project_version") - \: - = @build_list.project_version - %p - %b - = t("activerecord.attributes.build_list.project") - \: - = link_to @build_list.project.name, project_path(@build_list.project) - %p - %b - = t("activerecord.attributes.build_list.arch") - \: - = @build_list.arch.name - %p - %b - = t("activerecord.attributes.build_list.user") - \: - = @build_list.user.try(:fullname) - %p - %b - = t("activerecord.attributes.build_list.notified_at") - \: - = @build_list.notified_at - %p - %b - = t("activerecord.attributes.build_list.is_circle") - \: - = t("layout.#{@build_list.is_circle?}_") +%br +%br - - if @build_list.can_publish? - .wat-cf - = link_to image_tag("choose.png", :alt => t("layout.publish")) + " " + t("layout.publish"), publish_build_list_path(@build_list), :method => "put", :class => "button", :confirm => t("layout.confirm") += link_to t("layout.publish"), publish_build_list_path(@build_list), :method => "put", :confirm => t("layout.confirm"), :class => "button" if can? :publish, @build_list -.block - .content - %h2= t("layout.build_lists.items_header") - - .inner - - if @item_groups.blank? - = t("layout.build_lists.no_items_data") - - - @item_groups.each_with_index do |group, level| - %h3.title Level ##{level} - %table.table - %tr - %th.first= t("activerecord.attributes.build_list/item.name") - %th= t("activerecord.attributes.build_list/item.version") - %th.last= t("activerecord.attributes.build_list/item.status") +%br +%br - - group.each do |item| - %tr{:class => cycle("odd", "even")} - %td= item.name - %td= item.version - %td.last= item.human_status +%h2= t("layout.build_lists.items_header") += t("layout.build_lists.no_items_data") if @item_groups.blank? -- content_for :sidebar, render('sidebar', :project => @build_list.project) +- @item_groups.each_with_index do |group, level| + %h3.title Level ##{level} + %table.columns3.info + %tr + %th.first= t("activerecord.attributes.build_list/item.name") + %th= t("activerecord.attributes.build_list/item.version") + %th.last= t("activerecord.attributes.build_list/item.status") + + - group.each do |item| + %tr{:class => cycle("odd", "even")} + %td= item.name + %td= item.version + %td= item.human_status + += render 'build_lists/submenu' diff --git a/app/views/git/repositories/_show.html.haml b/app/views/git/repositories/_show.html.haml index 71e68ff29..11a1e92f4 100644 --- a/app/views/git/repositories/_show.html.haml +++ b/app/views/git/repositories/_show.html.haml @@ -15,8 +15,7 @@ - if @path.present? %tr %td - .pic - %img{:src => "/assets/folder.png"}/ + .pic= image_tag 'folder.png' .name = link_to "..", tree_path(@project, @treeish, File.join([@path.dup.encode_to_default, ".."].compact).encode_to_default) %td==   @@ -27,13 +26,11 @@ %td - entry_path = File.join([@path.present? ? @path : nil, entry.name].compact).encode_to_default - if entry.is_a? Grit::Blob - .pic - %img{:src => "/assets/code.png"}/ + .pic= image_tag 'code.png' .name = link_to(entry.name, blob_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default - else - .pic - %img{:src => "/assets/folder.png"}/ + .pic= image_tag 'folder.png' .name = link_to(entry.name, tree_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default %td diff --git a/app/views/issues/_issue.html.haml b/app/views/issues/_issue.html.haml index 46a940249..61d1d7a46 100644 --- a/app/views/issues/_issue.html.haml +++ b/app/views/issues/_issue.html.haml @@ -18,7 +18,6 @@ =link_to image_tag(issue.user.avatar(22), :alt => 'avatar'), user_path(issue.user) if issue.user %a{:href => "#{project_issue_path @project, issue}#block-list"} .answers - .pic - %img{:alt => '', :src => "/assets/answers.png"} + .pic= image_tag 'answers.png' .count=issue.comments.count .both \ No newline at end of file diff --git a/app/views/issues/_labels.html.haml b/app/views/issues/_labels.html.haml index 93883a370..e9e518be9 100644 --- a/app/views/issues/_labels.html.haml +++ b/app/views/issues/_labels.html.haml @@ -21,8 +21,7 @@ .labeltext.edit{:style => "background: ##{label.color};"} .text=link_to(label.name, project_issues_update_label_path(@project, label.id), :class => 'edit_label') .delete{:id => "delete#{index}"} - %a{:href => project_issues_delete_label_path(@project, label.id), :class => 'delete_label'} - %img{:alt => "x", :src => "/assets/x-label.png"} + %a{:href => project_issues_delete_label_path(@project, label.id), :class => 'delete_label'}= image_tag 'x-label.png' .both .edit_label_form{:style => 'display:none'} =form_tag project_issues_update_label_path(@project, label.id), :id => 'update_label', :method => :post do diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 6ad3dfea8..e1c8d2fcb 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -36,16 +36,14 @@ .a= link_to t('layout.logout'), destroy_user_session_path, :method => :delete .right .both - - if content_for?(:sub_menu) - .sub-menu= yield :sub_menu + - if content_for?(:submenu) + .sub-menu= yield :submenu .both = render "layouts/flashes" %article - if content_for?(:sidebar) %aside= yield :sidebar - .right{:class => layout_class}= yield - - else - .all= yield + %div{:class => layout_class}= yield .both %footer= render "layouts/menu/bottom" diff --git a/app/views/projects/_commit_info.html.haml b/app/views/projects/_commit_info.html.haml index 451f6aacc..61b96ece7 100644 --- a/app/views/projects/_commit_info.html.haml +++ b/app/views/projects/_commit_info.html.haml @@ -11,7 +11,7 @@ = presenter.caption - if presenter.expandable? and presenter.content? %span.data-expander.collapsed{:id => "expand#{item_no}"}   - -#%img#expand1.activity-full{:alt => "expand", :onclick => "showActivity(4)", :src => "/assets/expand-gray.png"}/ + / = image_tag 'expand-gray.png', :class => 'activity-full', :id => 'expand1', :onclick => "showActivity(4)" .both - if presenter.content? .fulltext{:class => presenter.expandable? ? "hidden" : '', diff --git a/app/views/projects/_repo_block.html.haml b/app/views/projects/_repo_block.html.haml index ea589e657..ec90d124b 100644 --- a/app/views/projects/_repo_block.html.haml +++ b/app/views/projects/_repo_block.html.haml @@ -1,6 +1,5 @@ .description-top - .img - %img{:alt => "pic", :src => "/assets/code.png"}/ + .img= image_tag 'code.png' = text_field_tag :url, git_repo_url(project.git_repo_name), :class => 'name', :type => 'text',:spellcheck => 'false', :disabled => 'disabled' .role diff --git a/app/views/projects/_submenu.html.haml b/app/views/projects/_submenu.html.haml index 9f7576422..ba18837c0 100644 --- a/app/views/projects/_submenu.html.haml +++ b/app/views/projects/_submenu.html.haml @@ -1,17 +1,16 @@ -- content_for :sub_menu do - - act = action_name.to_sym - - contr = controller_name.to_sym - .left - = @project.name +- content_for :submenu do + - act = action_name.to_sym; contr = controller_name.to_sym + .left= @project.name %nav %ul - %li= link_to t("project_menu.project"), project_path(@project), {:class => (act.in?([:show, :edit]) && contr.in?([:trees, :blobs])) ? 'active' : ''} - %li= link_to t("project_menu.commits"), commits_path(@project), {:class => (act.in?([:index, :show]) && contr == :commits) ? 'active' : ''} - - if @project.is_rpm - %li= link_to t("project_menu.builds"), project_build_lists_path(@project), {:class => (act == :index && contr == :builds) ? 'active' : ''} + %li= link_to t("project_menu.project"), project_path(@project), :class => (act.in?([:show, :edit]) && contr.in?([:trees, :blobs]) ? 'active' : nil) + %li= link_to t("project_menu.commits"), commits_path(@project), :class => (act.in?([:index, :show]) && contr == :commits ? 'active' : nil) + - if @project.is_rpm and can?(:create, @project => BuildList) + %li= link_to t("project_menu.builds"), project_build_lists_path(@project), :class => (contr == :build_lists ? 'active' : nil) - if @project.has_issues - %li= link_to t("project_menu.tracker"), project_issues_path(@project), {:class => (act == :index && contr == :issues) ? 'active' : ''} + %li= link_to t("project_menu.tracker"), project_issues_path(@project), :class => (act == :index && contr == :issues ? 'active' : nil) - if @project.has_wiki - %li= link_to t("project_menu.wiki"), project_wiki_index_path(@project), {:class => contr == :wiki ? 'active' : ''} + %li= link_to t("project_menu.wiki"), project_wiki_index_path(@project), :class => (contr == :wiki ? 'active' : nil) %li= link_to t("project_menu.readme"), "#" #pending - %li= link_to t("project_menu.settings"), edit_project_path(@project), {:class => (act == :edit && contr == :projects) ? 'active' : ''} + - if can? :update, @project + %li= link_to t("project_menu.settings"), edit_project_path(@project), :class => (act == :edit && contr == :projects ? 'active' : nil) diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 952af2c56..e5c696f5f 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -32,8 +32,7 @@ - if @path.present? %tr %td - .pic - %img{:src => "/assets/folder.png"}/ + .pic= image_tag 'folder.png' .name = link_to "..", tree_path(@project, @treeish, File.join([@path.dup.encode_to_default, ".."].compact).encode_to_default) %td==   @@ -44,13 +43,11 @@ %td - entry_path = File.join([@path.present? ? @path : nil, entry.name].compact).encode_to_default - if entry.is_a? Grit::Blob - .pic - %img{:src => "/assets/code.png"}/ + .pic= image_tag 'code.png' .name = link_to(entry.name, blob_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default - else - .pic - %img{:src => "/assets/folder.png"}/ + .pic= image_tag 'folder.png' .name = link_to(entry.name, tree_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default %td diff --git a/config/application.rb b/config/application.rb index 5e1c3504d..6a537ab65 100644 --- a/config/application.rb +++ b/config/application.rb @@ -55,5 +55,8 @@ module Rosa # Version of your assets, change this if you want to expire all your assets config.assets.version = '1.0' + + # Compass + config.sass.load_paths << Compass::Frameworks['compass'].stylesheets_directory if config.respond_to?(:sass) end end diff --git a/config/locales/build_list.en.yml b/config/locales/build_list.en.yml index b01f646ac..517cc53d5 100644 --- a/config/locales/build_list.en.yml +++ b/config/locales/build_list.en.yml @@ -28,6 +28,7 @@ en: auto_publish: Automated publising project_version: Version user: User + preferences: Preferences build_list/item: name: Name @@ -56,6 +57,7 @@ en: publish_fail: 'Errors on publish queue!' container_published: 'Container in a repository' action: Action + new_header: New build ownership: header: Build list ownership diff --git a/config/locales/build_list.ru.yml b/config/locales/build_list.ru.yml index 6d34d3ac9..531448717 100644 --- a/config/locales/build_list.ru.yml +++ b/config/locales/build_list.ru.yml @@ -28,6 +28,7 @@ ru: auto_publish: Автоматическая публикация project_version: Версия user: Пользователь + preferences: Настройки build_list/item: name: Название @@ -56,6 +57,7 @@ ru: publish_fail: 'При публикации сборки произошла ошибка!' container_published: 'Контейнер размещен в репозитории' action: Действие + new_header: Новая сборка ownership: header: Принадлежность заданий diff --git a/config/routes.rb b/config/routes.rb index c6d803d18..3ab25aa1f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -50,10 +50,9 @@ Rosa::Application.routes.draw do put :cancel put :publish end + collection { post :search } end - post 'build_lists' => 'build_lists#index', :as => 'build_lists' - resources :auto_build_lists, :only => [:index, :create, :destroy] resources :personal_repositories, :only => [:show] do @@ -130,7 +129,9 @@ Rosa::Application.routes.draw do 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] + resources :build_lists, :only => [:index, :new, :create] do + collection { post :search } + end resources :collaborators, :only => [:index, :edit, :update, :add] do collection do diff --git a/db/schema.rb b/db/schema.rb index f24cfaefc..20af53ccd 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -276,11 +276,11 @@ ActiveRecord::Schema.define(:version => 20120229182356) 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 @@ -301,6 +301,7 @@ ActiveRecord::Schema.define(:version => 20120229182356) 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" @@ -360,7 +361,6 @@ ActiveRecord::Schema.define(:version => 20120229182356) 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" @@ -368,6 +368,7 @@ ActiveRecord::Schema.define(:version => 20120229182356) 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 end diff --git a/spec/controllers/build_lists_controller_spec.rb b/spec/controllers/build_lists_controller_spec.rb index fc4a3b134..fced83574 100644 --- a/spec/controllers/build_lists_controller_spec.rb +++ b/spec/controllers/build_lists_controller_spec.rb @@ -118,7 +118,7 @@ describe BuildListsController do end it 'should show only accessible build_lists' do - get :index + get :index, :filter => {:ownership => 'index'} assigns(:build_lists).should include(@build_list1) assigns(:build_lists).should_not include(@build_list2) assigns(:build_lists).should include(@build_list3) @@ -203,7 +203,7 @@ describe BuildListsController do end it 'should show only accessible build_lists' do - get :index + get :index, :filter => {:ownership => 'index'} assigns(:build_lists).should include(@build_list1) assigns(:build_lists).should_not include(@build_list2) assigns(:build_lists).should include(@build_list3) @@ -290,14 +290,14 @@ describe BuildListsController do it 'should filter by project_name' do # Project.where(:id => build_list2.project.id).update_all(:name => 'project_name') - get :index, :filter => {:project_name => @build_list2.project.name} + get :index, :filter => {:project_name => @build_list2.project.name, :ownership => 'index'} assigns[:build_lists].should_not include(@build_list1) assigns[:build_lists].should include(@build_list2) assigns[:build_lists].should_not include(@build_list3) end it 'should filter by project_name and start_date' do - get :index, :filter => {:project_name => @build_list3.project.name, + get :index, :filter => {:project_name => @build_list3.project.name, :ownership => 'index', "created_at_start(1i)" => @build_list3.created_at.year.to_s, "created_at_start(2i)" => @build_list3.created_at.month.to_s, "created_at_start(3i)" => @build_list3.created_at.day.to_s} diff --git a/vendor/assets/stylesheets/vendor.scss b/vendor/assets/stylesheets/vendor.scss index 849f0414e..53360f6b6 100644 --- a/vendor/assets/stylesheets/vendor.scss +++ b/vendor/assets/stylesheets/vendor.scss @@ -1,10 +1,3 @@ -//= require_tree ./hl -/* -*= require codemirror -*= require codemirror/themes/night -*/ - - @import "tablesorter"; @import "cusel"; @import "jquery.dataTables"; @@ -16,4 +9,22 @@ @import "codemirror"; @import "codemirror/themes/eclipse"; -@import "git/style"; + +@import "hl/my"; +@import "hl/shCore"; +//@import "hl/shCoreDefault"; +//@import "hl/shCoreDjango"; +@import "hl/shCoreEclipse"; +//@import "hl/shCoreEmacs"; +//@import "hl/shCoreFadeToGrey"; +//@import "hl/shCoreMDUltra"; +//@import "hl/shCoreMidnight"; +//@import "hl/shCoreRDark"; +//@import "hl/shThemeDefault"; +//@import "hl/shThemeDjango"; +@import "hl/shThemeEclipse"; +//@import "hl/shThemeEmacs"; +//@import "hl/shThemeFadeToGrey"; +//@import "hl/shThemeMDUltra"; +//@import "hl/shThemeMidnight"; +//@import "hl/shThemeRDark"; From 4b024d17280f722e5791367b64a188c24e81f0f1 Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Thu, 1 Mar 2012 21:37:24 +0400 Subject: [PATCH 61/87] [issue #195] Fixes. * Fixed translations * Fixed blob display * Fixed routes --- .../javascripts/syntax.highlighter-init.js | 6 +- app/assets/stylesheets/application.scss | 9 +- app/assets/stylesheets/custom.scss | 24 ++ app/assets/stylesheets/main.scss | 9 +- app/helpers/git_helper.rb | 4 +- app/views/git/blobs/_show.html.haml | 17 +- app/views/git/commits/_commits.html.haml | 2 +- app/views/projects/_repo_block.html.haml | 2 +- config/locales/layout.en.yml | 6 +- config/locales/layout.ru.yml | 4 + config/routes.rb | 10 +- vendor/assets/javascripts/codemirror.js | 242 ++++++++++++------ .../assets/javascripts/codemirror/runmode.js | 38 ++- vendor/assets/javascripts/vendor.js | 5 +- vendor/assets/stylesheets/vendor.scss | 9 +- 15 files changed, 265 insertions(+), 122 deletions(-) diff --git a/app/assets/javascripts/syntax.highlighter-init.js b/app/assets/javascripts/syntax.highlighter-init.js index 86cc23f79..6a48fcaac 100644 --- a/app/assets/javascripts/syntax.highlighter-init.js +++ b/app/assets/javascripts/syntax.highlighter-init.js @@ -1,5 +1,5 @@ $(document).ready(function() { - SyntaxHighlighter.defaults.toolbar = false; - SyntaxHighlighter.defaults.gutter = false; - SyntaxHighlighter.all(); +// SyntaxHighlighter.defaults.toolbar = false; +// SyntaxHighlighter.defaults.gutter = false; +// SyntaxHighlighter.all(); }); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 18d93de5f..9c3529740 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -2,11 +2,10 @@ @import "main"; @import "custom"; @import "blue/style"; -@import "hl/my"; -@import "hl/shCore"; +//@import "hl/shCore"; //@import "hl/shCoreDefault"; //@import "hl/shCoreDjango"; -@import "hl/shCoreEclipse"; +//@import "hl/shCoreEclipse"; //@import "hl/shCoreEmacs"; //@import "hl/shCoreFadeToGrey"; //@import "hl/shCoreMDUltra"; @@ -14,17 +13,17 @@ //@import "hl/shCoreRDark"; //@import "hl/shThemeDefault"; //@import "hl/shThemeDjango"; -@import "hl/shThemeEclipse"; +//@import "hl/shThemeEclipse"; //@import "hl/shThemeEmacs"; //@import "hl/shThemeFadeToGrey"; //@import "hl/shThemeMDUltra"; //@import "hl/shThemeMidnight"; //@import "hl/shThemeRDark"; +//@import "hl/my"; /* *= require main *= require blue/style -*= require_tree hl/ *= require vendor *= require custom */ diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index 8c8c8e98b..ac4e85584 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -281,6 +281,30 @@ article div.file table { float: right; } +#repo-wrapper div.file div.data .formatted { + overflow-x: auto; + overflow-y: none; +} + table.tablesorter tbody td a .issue_title { color: #58595B; } + +.syntaxhighlighter { + padding: 11px; +} + +#output.formatted { + width: auto; + font-family: "Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace; + padding: 10px; + margin-left: 45px; +} + +#output.formatted pre { + font-family: "Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace; + padding: 0; + margin: 0; +} + + diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index d26df02be..ca43add8e 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -509,7 +509,7 @@ article input[type="submit"] { background-image: linear-gradient(top, #68a3d8, #125687); filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#68a3d8', EndColorStr='#125687'); border: 1px solid #5084b4; - padding: 4px 20px; + padding: 0px 20px 0px; margin: 0; font-size: 12px; text-decoration: none; @@ -519,8 +519,9 @@ article input[type="submit"] { border-radius: 5px; text-align: center; height: auto; + height: 28px; width: auto; - + font-family: Tahoma; } article input[type="submit"]:hover{ @@ -839,7 +840,7 @@ div.rightlist textarea { } div.rightlist input[type="text"], div.rightlist input[type="password"] { - height: 15px; + height: 16px; width: 350px; border: 1px solid #dedede; border-radius: 4px; @@ -2169,7 +2170,7 @@ input.button.width100 { } input[type="text"].exsearch { - height: 15px; + height: 16px; border: 1px solid #dedede; border-radius: 4px; padding: 5px; diff --git a/app/helpers/git_helper.rb b/app/helpers/git_helper.rb index cbaacb562..45b8cd030 100644 --- a/app/helpers/git_helper.rb +++ b/app/helpers/git_helper.rb @@ -39,9 +39,9 @@ module GitHelper def render_line_numbers(n) res = "" - 1.upto(n) {|i| res += "#{i}\n" } + 1.upto(n) {|i| res += "#{i}
" } - res + res.html_safe end def render_blob(blob) diff --git a/app/views/git/blobs/_show.html.haml b/app/views/git/blobs/_show.html.haml index 32be360d9..8209ca7cb 100644 --- a/app/views/git/blobs/_show.html.haml +++ b/app/views/git/blobs/_show.html.haml @@ -33,11 +33,13 @@
- when :text .gutter - :plain -
#{render_line_numbers(text.length)}
- %pre{:class => "brush: #{@blob.mime_type.split('/').last}"} - =#{render_blob(@blob)} - = @blob.data.encode_to_default.html_safe + = render_line_numbers(text.length) + #output.formatted + %pre#code + =#{render_blob(@blob)} + :preserve + #{@blob.data.encode_to_default.html_safe} + .both - when :binary %table.table.blob %tr @@ -47,3 +49,8 @@
#{ link_to @blob.basename.encode_to_default, raw_path(@project, @treeish, @path) }

+:javascript + $(document).ready(function() { + //CodeMirror.runMode(document.getElementById("code").innerHTML, "#{@blob.mime_type}", + // document.getElementById("output")); + }); diff --git a/app/views/git/commits/_commits.html.haml b/app/views/git/commits/_commits.html.haml index 205f9f976..41d16f6e8 100644 --- a/app/views/git/commits/_commits.html.haml +++ b/app/views/git/commits/_commits.html.haml @@ -4,7 +4,7 @@ - commits.each_pair do |year, by_month| - if year != cur_year - .year= "#{year} #{t("year")}" + .year= "#{year} #{t("layout.year")}" - by_month.each_pair do |month, by_day| - by_day.each_pair do |day, commits| diff --git a/app/views/projects/_repo_block.html.haml b/app/views/projects/_repo_block.html.haml index ea589e657..45e8929d5 100644 --- a/app/views/projects/_repo_block.html.haml +++ b/app/views/projects/_repo_block.html.haml @@ -4,6 +4,6 @@ = text_field_tag :url, git_repo_url(project.git_repo_name), :class => 'name', :type => 'text',:spellcheck => 'false', :disabled => 'disabled' .role - чтение и запись + = t("layout.read_write_access") = render :partial => 'projects/branch_select', :locals => {:project => project} .both diff --git a/config/locales/layout.en.yml b/config/locales/layout.en.yml index 003e5b46b..3aed28b0e 100644 --- a/config/locales/layout.en.yml +++ b/config/locales/layout.en.yml @@ -2,6 +2,10 @@ en: layout: read_more: Read more turned_on: on - turned_off: of + turned_off: off + + year: year enter_commit_message: Commit message + + read_write_access: read & write diff --git a/config/locales/layout.ru.yml b/config/locales/layout.ru.yml index d8c9f9cfa..a0445ddb7 100644 --- a/config/locales/layout.ru.yml +++ b/config/locales/layout.ru.yml @@ -4,4 +4,8 @@ ru: turned_on: включены turned_off: выключены + year: год + enter_commit_message: Сопровождающее сообщение + + read_write_access: чтение и запись diff --git a/config/routes.rb b/config/routes.rb index 459f4c229..de1927e23 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -94,7 +94,8 @@ Rosa::Application.routes.draw do resources :categories, :only => [:index, :show] end - resources :projects, :except => [:new, :show] do + resources :projects, :only => [:new] + resources :projects, :except => [:show] do resources :wiki do collection do match '_history' => 'wiki#wiki_history', :as => :history, :via => :get @@ -146,13 +147,12 @@ Rosa::Application.routes.draw do # resources :groups, :controller => 'project_groups' do # end - #match 'new' => "projects#new", :as => :new collection do get :auto_build end member do post :fork - get :new, :controller => 'projects', :action => 'new', :id => /new/, :as => :new +# get :new, :controller => 'projects', :action => 'new', :id => /new/, :as => :new get :show, :controller => 'git/trees', :action => :show get :sections post :sections @@ -218,11 +218,11 @@ Rosa::Application.routes.draw do 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 # Blame - match '/projects/:project_id/git/blame/:treeish/*path', :controller => "git/blobs", :action => :blame, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :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 # Raw - match '/projects/:project_id/git/raw/:treeish/*path', :controller => "git/blobs", :action => :raw, :treeish => /[0-9a-zA-Z_.\-]*/, :defaults => { :treeish => :master }, :as => :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 root :to => "platforms#index" diff --git a/vendor/assets/javascripts/codemirror.js b/vendor/assets/javascripts/codemirror.js index 3635eef9d..9c6e65e41 100644 --- a/vendor/assets/javascripts/codemirror.js +++ b/vendor/assets/javascripts/codemirror.js @@ -1,4 +1,4 @@ -// CodeMirror version 2.21 +// CodeMirror version 2.22 // // All functions that need access to the editor's state live inside // the CodeMirror function. Below that, at the bottom of the file, @@ -6,7 +6,7 @@ // CodeMirror is the only global var we claim var CodeMirror = (function() { - // This is the function that produces an editor instance. It's + // This is the function that produces an editor instance. Its // closure is used to store the editor state. function CodeMirror(place, givenOptions) { // Determine effective options based on given values and defaults. @@ -30,7 +30,7 @@ var CodeMirror = (function() { '
' + // Provides positioning relative to (visible) text origin '
' + - '
' + + '
' + '
 
' + // Absolutely positioned blinky cursor '
' + // DIVs containing the selection and the actual code '
'; @@ -86,7 +86,7 @@ var CodeMirror = (function() { var bracketHighlighted; // Tracks the maximum line length so that the horizontal scrollbar // can be kept static when scrolling. - var maxLine = "", maxWidth, tabText = computeTabText(); + var maxLine = "", maxWidth; // Initialize the content. operation(function(){setValue(options.value || ""); updateInput = false;})(); @@ -141,7 +141,7 @@ var CodeMirror = (function() { setValue: operation(setValue), getSelection: getSelection, replaceSelection: operation(replaceSelection), - focus: function(){focusInput(); onFocus(); fastPoll();}, + focus: function(){window.focus(); focusInput(); onFocus(); fastPoll();}, setOption: function(option, value) { var oldVal = options[option]; options[option] = value; @@ -150,9 +150,11 @@ var CodeMirror = (function() { else if (option == "readOnly" && !value) {resetInput(true);} else if (option == "theme") themeChanged(); else if (option == "lineWrapping" && oldVal != value) operation(wrappingChanged)(); - else if (option == "tabSize") operation(tabsChanged)(); - if (option == "lineNumbers" || option == "gutter" || option == "firstLineNumber" || option == "theme") + else if (option == "tabSize") updateDisplay(true); + if (option == "lineNumbers" || option == "gutter" || option == "firstLineNumber" || option == "theme") { + gutterChanged(); updateDisplay(true); + } }, getOption: function(option) {return options[option];}, undo: operation(undo), @@ -259,7 +261,15 @@ var CodeMirror = (function() { moveH: operation(moveH), deleteH: operation(deleteH), moveV: operation(moveV), - toggleOverwrite: function() {overwrite = !overwrite;}, + toggleOverwrite: function() { + if(overwrite){ + overwrite = false; + cursor.className = cursor.className.replace(" CodeMirror-overwrite", ""); + } else { + overwrite = true; + cursor.className += " CodeMirror-overwrite"; + } + }, posFromIndex: function(off) { var lineNo = 0, ch; @@ -280,8 +290,8 @@ var CodeMirror = (function() { return index; }, scrollTo: function(x, y) { - if (x != null) scroller.scrollTop = x; - if (y != null) scroller.scrollLeft = y; + if (x != null) scroller.scrollLeft = x; + if (y != null) scroller.scrollTop = y; updateDisplay([]); }, @@ -454,51 +464,69 @@ var CodeMirror = (function() { } function onDragStart(e) { var txt = getSelection(); - // This will reset escapeElement - htmlEscape(txt); - e.dataTransfer.setDragImage(escapeElement, 0, 0); + // Disabled until further notice. Doesn't work on most browsers, + // and crashes Safari (issue #332). + //htmlEscape(txt); + //e.dataTransfer.setDragImage(escapeElement, 0, 0); e.dataTransfer.setData("Text", txt); } - function handleKeyBinding(e) { - var name = keyNames[e_prop(e, "keyCode")], next = keyMap[options.keyMap].auto, bound, dropShift; - function handleNext() { - return next.call ? next.call(null, instance) : next; - } - if (name == null || e.altGraphKey) { - if (next) options.keyMap = handleNext(); - return null; - } - if (e_prop(e, "altKey")) name = "Alt-" + name; - if (e_prop(e, "ctrlKey")) name = "Ctrl-" + name; - if (e_prop(e, "metaKey")) name = "Cmd-" + name; - if (e_prop(e, "shiftKey") && - (bound = lookupKey("Shift-" + name, options.extraKeys, options.keyMap))) { - dropShift = true; - } else { - bound = lookupKey(name, options.extraKeys, options.keyMap); - } + + function doHandleBinding(bound, dropShift) { if (typeof bound == "string") { - if (commands.propertyIsEnumerable(bound)) bound = commands[bound]; - else bound = null; + bound = commands[bound]; + if (!bound) return false; } - if (next && (bound || !isModifierKey(e))) options.keyMap = handleNext(); - if (!bound) return false; var prevShift = shiftSelecting; try { if (options.readOnly) suppressEdits = true; if (dropShift) shiftSelecting = null; bound(instance); + } catch(e) { + if (e != Pass) throw e; + return false; } finally { shiftSelecting = prevShift; suppressEdits = false; } - e_preventDefault(e); return true; } - var lastStoppedKey = null; + function handleKeyBinding(e) { + // Handle auto keymap transitions + var startMap = getKeyMap(options.keyMap), next = startMap.auto; + clearTimeout(maybeTransition); + if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() { + if (getKeyMap(options.keyMap) == startMap) { + options.keyMap = (next.call ? next.call(null, instance) : next); + } + }, 50); + + var name = keyNames[e_prop(e, "keyCode")], handled = false; + if (name == null || e.altGraphKey) return false; + if (e_prop(e, "altKey")) name = "Alt-" + name; + if (e_prop(e, "ctrlKey")) name = "Ctrl-" + name; + if (e_prop(e, "metaKey")) name = "Cmd-" + name; + + if (e_prop(e, "shiftKey")) + handled = lookupKey("Shift-" + name, options.extraKeys, options.keyMap, + function(b) {return doHandleBinding(b, true);}); + if (!handled) + handled = lookupKey(name, options.extraKeys, options.keyMap, doHandleBinding); + + if (handled) e_preventDefault(e); + return handled; + } + function handleCharBinding(e, ch) { + var handled = lookupKey("'" + ch + "'", options.extraKeys, + options.keyMap, doHandleBinding); + if (handled) e_preventDefault(e); + return handled; + } + + var lastStoppedKey = null, maybeTransition; function onKeyDown(e) { if (!focused) onFocus(); if (ie && e.keyCode == 27) { e.returnValue = false; } + if (pollingFast) { if (readInput()) pollingFast = false; } if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; var code = e_prop(e, "keyCode"); // IE does strange things with escape. @@ -513,15 +541,17 @@ var CodeMirror = (function() { } } function onKeyPress(e) { + if (pollingFast) readInput(); + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; var keyCode = e_prop(e, "keyCode"), charCode = e_prop(e, "charCode"); if (window.opera && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} - if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; if (window.opera && !e.which && handleKeyBinding(e)) return; + var ch = String.fromCharCode(charCode == null ? keyCode : charCode); if (options.electricChars && mode.electricChars && options.smartIndent && !options.readOnly) { - var ch = String.fromCharCode(charCode == null ? keyCode : charCode); if (mode.electricChars.indexOf(ch) > -1) setTimeout(operation(function() {indentLine(sel.to.line, "smart");}), 75); } + if (handleCharBinding(e, ch)) return; fastPoll(); } function onKeyUp(e) { @@ -567,9 +597,10 @@ var CodeMirror = (function() { } updateLinesNoUndo(from, to, newText, selFrom, selTo); } - function unredoHelper(from, to, dir) { - var set = from.pop(), len = set ? set.length : 0, out = []; - for (var i = dir > 0 ? 0 : len - 1, e = dir > 0 ? len : -1; i != e; i += dir) { + function unredoHelper(from, to) { + if (!from.length) return; + var set = from.pop(), out = []; + for (var i = set.length - 1; i >= 0; i -= 1) { var change = set[i]; var replaced = [], end = change.start + change.added; doc.iter(change.start, end, function(line) { replaced.push(line.text); }); @@ -581,8 +612,8 @@ var CodeMirror = (function() { updateInput = true; to.push(out); } - function undo() {unredoHelper(history.done, history.undone, -1);} - function redo() {unredoHelper(history.undone, history.done, 1);} + function undo() {unredoHelper(history.done, history.undone);} + function redo() {unredoHelper(history.undone, history.done);} function updateLinesNoUndo(from, to, newText, selFrom, selTo) { if (suppressEdits) return; @@ -784,7 +815,7 @@ var CodeMirror = (function() { if (!posEq(sel.from, sel.to)) { prevInput = ""; input.value = getSelection(); - input.select(); + selectInput(input); } else if (user) prevInput = input.value = ""; } @@ -971,7 +1002,7 @@ var CodeMirror = (function() { if (!nextIntact || nextIntact.from > j) { if (line.hidden) var html = scratch.innerHTML = "
";
           else {
-            var html = '
' + line.getHTML(tabText) + '
'; + var html = '
' + line.getHTML(makeTab) + '
'; // Kludge to make sure the styled element lies behind the selection (by z-index) if (line.className) html = '
";
-    }
-    function tabsChanged() {
-      tabText = computeTabText();
-      updateDisplay(true);
+    function makeTab(col) {
+      var w = options.tabSize - col % options.tabSize;
+      for (var str = '', i = 0; i < w; ++i) str += " ";
+      return {html: str + "", width: w};
     }
     function themeChanged() {
       scroller.className = scroller.className.replace(/\s*cm-s-\w+/g, "") +
@@ -1392,7 +1434,7 @@ var CodeMirror = (function() {
       if (x <= 0) return 0;
       var lineObj = getLine(line), text = lineObj.text;
       function getX(len) {
-        measure.innerHTML = "
" + lineObj.getHTML(tabText, len) + "
"; + measure.innerHTML = "
" + lineObj.getHTML(makeTab, len) + "
"; return measure.firstChild.firstChild.offsetWidth; } var from = 0, fromX = 0, to = text.length, toX; @@ -1425,7 +1467,7 @@ var CodeMirror = (function() { var end = line.text.indexOf(" ", ch + 2); extra = htmlEscape(line.text.slice(ch + 1, end < 0 ? line.text.length : end + (ie ? 5 : 0))); } - measure.innerHTML = "
" + line.getHTML(tabText, ch) +
+      measure.innerHTML = "
" + line.getHTML(makeTab, ch) +
         '' + htmlEscape(line.text.charAt(ch) || " ") + "" +
         extra + "
"; var elt = document.getElementById("CodeMirror-temp-" + tempId); @@ -1528,7 +1570,7 @@ var CodeMirror = (function() { return coordsChar(x - offL.left, y - offL.top); } function onContextMenu(e) { - var pos = posFromMouse(e); + var pos = posFromMouse(e), scrollPos = scroller.scrollTop; if (!pos || window.opera) return; // Opera is difficult. if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to)) operation(setCursor)(pos.line, pos.ch); @@ -1541,12 +1583,13 @@ var CodeMirror = (function() { leaveInputAlone = true; var val = input.value = getSelection(); focusInput(); - input.select(); + selectInput(input); function rehide() { var newVal = splitLines(input.value).join("\n"); if (newVal != val) operation(replaceSelection)(newVal, "end"); inputDiv.style.position = "relative"; input.style.cssText = oldCSS; + if (ie_lt9) scroller.scrollTop = scrollPos; leaveInputAlone = false; resetInput(true); slowPoll(); @@ -1558,8 +1601,7 @@ var CodeMirror = (function() { mouseup(); setTimeout(rehide, 20); }, true); - } - else { + } else { setTimeout(rehide, 50); } } @@ -1761,6 +1803,7 @@ var CodeMirror = (function() { keyMap: "default", extraKeys: null, electricChars: true, + autoClearEmptyLines: false, onKeyEvent: null, lineWrapping: false, lineNumbers: false, @@ -1796,19 +1839,20 @@ var CodeMirror = (function() { CodeMirror.defineMIME = function(mime, spec) { mimeModes[mime] = spec; }; - CodeMirror.getMode = function(options, spec) { + CodeMirror.resolveMode = function(spec) { if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) spec = mimeModes[spec]; - if (typeof spec == "string") - var mname = spec, config = {}; - else if (spec != null) - var mname = spec.name, config = spec; - var mfactory = modes[mname]; + if (typeof spec == "string") return {name: spec}; + else return spec || {name: "null"}; + }; + CodeMirror.getMode = function(options, spec) { + var spec = CodeMirror.resolveMode(spec); + var mfactory = modes[spec.name]; if (!mfactory) { - if (window.console) console.warn("No mode " + mname + " found, falling back to plain text."); + if (window.console) console.warn("No mode " + spec.name + " found, falling back to plain text."); return CodeMirror.getMode(options, "text/plain"); } - return mfactory(options, config || {}); + return mfactory(options, spec); }; CodeMirror.listModes = function() { var list = []; @@ -1911,20 +1955,27 @@ var CodeMirror = (function() { "Alt-D": "delWordRight", "Alt-Backspace": "delWordLeft", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" }; - function lookupKey(name, extraMap, map) { - function lookup(name, map, ft) { + function getKeyMap(val) { + if (typeof val == "string") return keyMap[val]; + else return val; + } + function lookupKey(name, extraMap, map, handle) { + function lookup(map) { + map = getKeyMap(map); var found = map[name]; - if (found != null) return found; - if (ft == null) ft = map.fallthrough; - if (ft == null) return map.catchall; - if (typeof ft == "string") return lookup(name, keyMap[ft]); - for (var i = 0, e = ft.length; i < e; ++i) { - found = lookup(name, keyMap[ft[i]]); - if (found != null) return found; + if (found != null && handle(found)) return true; + if (map.catchall) return handle(map.catchall); + var fallthrough = map.fallthrough; + if (fallthrough == null) return false; + if (Object.prototype.toString.call(fallthrough) != "[object Array]") + return lookup(fallthrough); + for (var i = 0, e = fallthrough.length; i < e; ++i) { + if (lookup(fallthrough[i])) return true; } - return null; + return false; } - return extraMap ? lookup(name, extraMap, map) : lookup(name, keyMap[map]); + if (extraMap && lookup(extraMap)) return true; + return lookup(map); } function isModifierKey(event) { var name = keyNames[e_prop(event, "keyCode")]; @@ -2272,15 +2323,35 @@ var CodeMirror = (function() { indentation: function(tabSize) {return countColumn(this.text, null, tabSize);}, // Produces an HTML fragment for the line, taking selection, // marking, and highlighting into account. - getHTML: function(tabText, endAt) { - var html = [], first = true; + getHTML: function(makeTab, endAt) { + var html = [], first = true, col = 0; function span(text, style) { if (!text) return; // Work around a bug where, in some compat modes, IE ignores leading spaces if (first && ie && text.charAt(0) == " ") text = "\u00a0" + text.slice(1); first = false; - if (style) html.push('', htmlEscape(text).replace(/\t/g, tabText), ""); - else html.push(htmlEscape(text).replace(/\t/g, tabText)); + if (text.indexOf("\t") == -1) { + col += text.length; + var escaped = htmlEscape(text); + } else { + var escaped = ""; + for (var pos = 0;;) { + var idx = text.indexOf("\t", pos); + if (idx == -1) { + escaped += htmlEscape(text.slice(pos)); + col += text.length - pos; + break; + } else { + col += idx - pos; + var tab = makeTab(col); + escaped += htmlEscape(text.slice(pos, idx)) + tab.html; + col += tab.width; + pos = idx + 1; + } + } + } + if (style) html.push('', escaped, ""); + else html.push(escaped); } var st = this.styles, allText = this.text, marked = this.marked; var len = allText.length; @@ -2559,7 +2630,7 @@ var CodeMirror = (function() { var dtime = time - this.time; if (dtime > 400 || !last) { this.done.push([{start: start, added: added, old: old}]); - } else if (last.start > start + added || last.start + last.added < start - last.added + last.old.length) { + } else if (last.start > start + old.length || last.start + last.added < start - last.added + last.old.length) { cur.push({start: start, added: added, old: old}); } else { var oldoff = 0; @@ -2634,6 +2705,8 @@ var CodeMirror = (function() { function Delayed() {this.id = null;} Delayed.prototype = {set: function(ms, f) {clearTimeout(this.id); this.id = setTimeout(f, ms);}}; + var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; + // Detect drag-and-drop var dragAndDrop = function() { // IE8 has ondragstart and ondrop properties, but doesn't seem to @@ -2645,6 +2718,7 @@ var CodeMirror = (function() { var gecko = /gecko\/\d{7}/i.test(navigator.userAgent); var ie = /MSIE \d/.test(navigator.userAgent); + var ie_lt9 = /MSIE [1-8]\b/.test(navigator.userAgent); var webkit = /WebKit\//.test(navigator.userAgent); var lineSep = "\n"; diff --git a/vendor/assets/javascripts/codemirror/runmode.js b/vendor/assets/javascripts/codemirror/runmode.js index de4a76020..fc58d857d 100644 --- a/vendor/assets/javascripts/codemirror/runmode.js +++ b/vendor/assets/javascripts/codemirror/runmode.js @@ -1,15 +1,37 @@ -CodeMirror.runMode = function(string, modespec, callback) { - var mode = CodeMirror.getMode({indentUnit: 2}, modespec); +CodeMirror.runMode = function(string, modespec, callback, options) { + var mode = CodeMirror.getMode(CodeMirror.defaults, modespec); var isNode = callback.nodeType == 1; + var tabSize = (options && options.tabSize) || CodeMirror.defaults.tabSize; if (isNode) { - var node = callback, accum = []; - callback = function(string, style) { - if (string == "\n") + var node = callback, accum = [], col = 0; + callback = function(text, style) { + if (text == "\n") { accum.push("
"); - else if (style) - accum.push("" + CodeMirror.htmlEscape(string) + ""); + col = 0; + return; + } + var escaped = ""; + // HTML-escape and replace tabs + for (var pos = 0;;) { + var idx = text.indexOf("\t", pos); + if (idx == -1) { + escaped += CodeMirror.htmlEscape(text.slice(pos)); + col += text.length - pos; + break; + } else { + col += idx - pos; + escaped += CodeMirror.htmlEscape(text.slice(pos, idx)); + var size = tabSize - col % tabSize; + col += size; + for (var i = 0; i < size; ++i) escaped += " "; + pos = idx + 1; + } + } + + if (style) + accum.push("" + escaped + ""); else - accum.push(CodeMirror.htmlEscape(string)); + accum.push(escaped); } } var lines = CodeMirror.splitLines(string), state = CodeMirror.startState(mode); diff --git a/vendor/assets/javascripts/vendor.js b/vendor/assets/javascripts/vendor.js index db645244f..dca14c203 100644 --- a/vendor/assets/javascripts/vendor.js +++ b/vendor/assets/javascripts/vendor.js @@ -2,9 +2,10 @@ //= require gollum/gollum.dialog //= require gollum/gollum.placeholder //= require gollum/editor/gollum.editor -//= require hl/shCore +// require hl/shCore //= require codemirror +//= require codemirror/runmode //= require_tree ./codemirror/modes -//= require_tree . +// require_tree . diff --git a/vendor/assets/stylesheets/vendor.scss b/vendor/assets/stylesheets/vendor.scss index 849f0414e..9f8506b2e 100644 --- a/vendor/assets/stylesheets/vendor.scss +++ b/vendor/assets/stylesheets/vendor.scss @@ -1,5 +1,8 @@ -//= require_tree ./hl /* +*= require hl/shCore +*= require hl/shCoreEclipse +*= require hl/shThemeEclipse + *= require codemirror *= require codemirror/themes/night */ @@ -14,6 +17,10 @@ //@import "gollum/template"; @import "gollum/editor"; +@import "hl/shCore"; +@import "hl/shCoreEclipse"; +@import "hl/shThemeEclipse"; + @import "codemirror"; @import "codemirror/themes/eclipse"; @import "git/style"; From 20417241a82009424d3efdca693fb8b4ae752c92 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 00:35:18 +0600 Subject: [PATCH 62/87] [refs 194] fix comments --- app/presenters/comment_presenter.rb | 1 + app/views/comments/_add.html.haml | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/presenters/comment_presenter.rb b/app/presenters/comment_presenter.rb index fe6fb9089..22f77b542 100644 --- a/app/presenters/comment_presenter.rb +++ b/app/presenters/comment_presenter.rb @@ -46,6 +46,7 @@ class CommentPresenter < ApplicationPresenter res << link_to(t("layout.delete"), dp, :method => "delete", :confirm => t("layout.comments.confirm_delete")).html_safe end + res end def header diff --git a/app/views/comments/_add.html.haml b/app/views/comments/_add.html.haml index f527eb041..efc5436a2 100644 --- a/app/views/comments/_add.html.haml +++ b/app/views/comments/_add.html.haml @@ -1,20 +1,27 @@ #open-comment.comment.view %h3.tmargin0= t("layout.comments.new_header") - - new_path = project_issue_comments_path(project, commentable) if commentable.class == Issue - - new_path = project_commit_comments_path(project, commentable) if commentable.class == Grit::Commit + - if commentable.class == Issue + - new_path = project_issue_comments_path(project, commentable) + - is_subscribed = commentable.subscribes.exists?(:user_id => current_user.id) + - subscribe_path = is_subscribed ? project_issue_subscribe_path(project, commentable, current_user.id) : project_issue_subscribes_path(project, commentable) + - else commentable.class == Grit::Commit + - new_path = project_commit_comments_path(project, commentable) + - is_subscribed = Subscribe.subscribed_to_commit?(project, current_user, commentable) + - subscribe_path = is_subscribed ? unsubscribe_commit_path(project, commentable) : subscribe_commit_path(project, commentable) + = form_for :comment, :url => new_path, :method => :post, :html => { :class => :form } do |f| = render :partial => "comments/form", :locals => {:f => f} .comment-left = t("layout.comments.notifications_are") %span.bold - - if Subscribe.subscribed_to_commit?(@project, current_user, @commit) + - if is_subscribed = t("layout.turned_on")\ - else = t("layout.turned_off")\ \. - - if Subscribe.subscribed_to_commit?(@project, current_user, @commit) - = link_to t('layout.commits.unsubscribe_btn'), unsubscribe_commit_path(@project, @commit), :method => :delete + - if is_subscribed + = link_to t('layout.commits.unsubscribe_btn'), subscribe_path, :method => :delete - else - = link_to t('layout.commits.subscribe_btn'), subscribe_commit_path(@project, @commit), :method => :post + = link_to t('layout.commits.subscribe_btn'), subscribe_path, :method => :post .both From ecc2e1f1818b9ed4c2d28edef6d13fde46ed8aa0 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 00:56:24 +0600 Subject: [PATCH 63/87] [refs #194] add comments to issues --- app/views/comments/edit.html.haml | 4 ++-- app/views/issues/show.html.haml | 7 +++++-- config/locales/layout/comments.en.yml | 1 + config/locales/layout/comments.ru.yml | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/views/comments/edit.html.haml b/app/views/comments/edit.html.haml index eb586af80..feded5cb2 100644 --- a/app/views/comments/edit.html.haml +++ b/app/views/comments/edit.html.haml @@ -1,10 +1,10 @@ .block .secondary-navigation %ul.wat-cf - %li.first= link_to t(@comment.commentable_type == 'Grit::Commit' ? "layout.git.repositories.commits" : "layout.issues.list"), @commentable_path + %li.first= link_to t("layout.comments.back"), @commentable_path .content %h2.title - = t("layout.#{@comment.commentable_type == 'Grit::Commit' ? 'comments' : 'issues'}.edit_header") + = t("layout.comments.edit_header") .inner = form_for @comment, :url => @update_url, :html => { :class => :form } do |f| = render :partial => "form", :locals => {:f => f} diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index d50d14417..4904dc0eb 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -26,6 +26,9 @@ .both =f.submit t('layout.update'), :id => 'update_issue_content' =link_to t('layout.issues.cancel_button'), '#', :id => 'cancel_edit_issue_content', :class => 'button' -.hr - + %br +%br =render :partial => 'issues/status' + += render :partial => "comments/list", :locals => {:list => @issue.comments, :project => @project, :commentable => @issue} += render :partial => "comments/add", :locals => {:project => @project, :commentable => @issue} \ No newline at end of file diff --git a/config/locales/layout/comments.en.yml b/config/locales/layout/comments.en.yml index 19fd7c6ea..b309be256 100644 --- a/config/locales/layout/comments.en.yml +++ b/config/locales/layout/comments.en.yml @@ -4,3 +4,4 @@ en: has_commented: "adds a note" notifications_are: "Notifications for new comments are" comments_header: "Comments" + back: 'Back' diff --git a/config/locales/layout/comments.ru.yml b/config/locales/layout/comments.ru.yml index 0d680c2b2..4a8723d17 100644 --- a/config/locales/layout/comments.ru.yml +++ b/config/locales/layout/comments.ru.yml @@ -4,3 +4,4 @@ ru: has_commented: "оставил комментарий" notifications_are: "Уведомления о последующих комментариях" comments_header: "Комментарии" + back: 'Назад' From 56b9371ee21d19ac87a35d26645b11d757069736 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 01:10:12 +0600 Subject: [PATCH 64/87] [refs #194] add default scope for comments --- app/models/comment.rb | 2 ++ app/models/project.rb | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 4dbb8f3b6..1e5f22530 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -6,6 +6,8 @@ class Comment < ActiveRecord::Base validates :body, :user_id, :commentable_id, :commentable_type, :presence => true + default_scope order('created_at') + after_create :invoke_helper, :if => "commentable_type == 'Grit::Commit'" after_create :subscribe_users after_create {|c| Subscribe.new_comment_notification(c)} diff --git a/app/models/project.rb b/app/models/project.rb index fe8c8d68d..a77dada77 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -193,7 +193,7 @@ class Project < ActiveRecord::Base class << self def commit_comments(commit, project) - comments = Comment.where(:commentable_id => commit.id.hex, :commentable_type => 'Grit::Commit').order(:created_at) + comments = Comment.where(:commentable_id => commit.id.hex, :commentable_type => 'Grit::Commit') comments.each {|x| x.project = project; x.helper} end end From b8b68e8ad2583b8d5c67611c6323a565565989a7 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 01:11:21 +0600 Subject: [PATCH 65/87] [refs #194] add space between list and create form --- app/views/issues/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index 4904dc0eb..76c74fdb2 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -26,9 +26,9 @@ .both =f.submit t('layout.update'), :id => 'update_issue_content' =link_to t('layout.issues.cancel_button'), '#', :id => 'cancel_edit_issue_content', :class => 'button' - %br %br =render :partial => 'issues/status' = render :partial => "comments/list", :locals => {:list => @issue.comments, :project => @project, :commentable => @issue} +%br = render :partial => "comments/add", :locals => {:project => @project, :commentable => @issue} \ No newline at end of file From 4931dc773b10636390085558cc6eb0df713e3ff6 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 22:05:00 +0600 Subject: [PATCH 66/87] [refs #230] edit password page --- .../stylesheets/devise/registration.scss | 4 -- app/assets/stylesheets/reg_session.scss | 10 +++- app/views/devise/passwords/edit.html.haml | 50 ++++++++++--------- app/views/layouts/sessions.html.haml | 2 +- config/locales/devise.en.yml | 1 + config/locales/devise.ru.yml | 1 + config/locales/en.yml | 9 ---- config/locales/pluralization.en.yml | 10 ++++ config/locales/pluralization.ru.yml | 14 ++++++ config/locales/ru.yml | 13 ----- 10 files changed, 62 insertions(+), 52 deletions(-) diff --git a/app/assets/stylesheets/devise/registration.scss b/app/assets/stylesheets/devise/registration.scss index a7834dadc..098b9021b 100644 --- a/app/assets/stylesheets/devise/registration.scss +++ b/app/assets/stylesheets/devise/registration.scss @@ -221,7 +221,3 @@ div.error { &.password { margin-top: -101px; margin-left: 650px; } } - -div.error.forgot { - margin-top: 8px; - margin-left: 308px; } diff --git a/app/assets/stylesheets/reg_session.scss b/app/assets/stylesheets/reg_session.scss index 88ca94688..025ea5b34 100644 --- a/app/assets/stylesheets/reg_session.scss +++ b/app/assets/stylesheets/reg_session.scss @@ -12,4 +12,12 @@ nav { margin: 0; padding: 0; padding-top: 10px; - text-decoration: none;} } \ No newline at end of file + text-decoration: none;} } + +div.error.forgot { + margin-top: 8px; + margin-left: 308px; } + +div.error.reset { + margin-top: -141px; + margin-left: 645px; } diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index 267e855bf..0eff4ec82 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -1,28 +1,30 @@ -.block - %h2= title t('devise.passwords.edit') - .content - - if resource.errors.present? - .flash - .message.error - - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe - = messages +.wrap + %nav + %a{:href => new_register_request_path} + %p=t("layout.devise.shared_links.sign_up") + / Top block + %header + .logo + / Page + %article + %br + %h1= title t('devise.passwords.edit') + %br + .content + - is_error = resource.errors.present? = form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put, :class => "form" }) do |f| = f.hidden_field :reset_password_token - .group.wat-cf - .left - = f.label :password, :class => "label" - .right - = f.text_field :password, :class => "text_field" - .group.wat-cf - .left - = f.label :password_confirmation, :class => "label" - .right - = f.text_field :password_confirmation, :class => "text_field" + .left.first=t('activerecord.attributes.user.password') + .right.first + = f.text_field :password, :id => 'pass', :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" + .both + .left=t('activerecord.attributes.user.password_confirm') + .right + = f.text_field :password_confirmation, :id => 'pass2', :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + %br + =f.submit t("devise.passwords.edit_button"), :class => 'button', :id => 'btnLogin' - .group.navform.wat-cf - %button.button{:tyle => "submit"} - = image_tag("code.png", :alt => t("devise.passwords.edit_button")) - = t("devise.passwords.edit_button") - %span.text_button_padding - = render :partial => "devise/shared/links" + #hint.error.reset{:style => is_error ? 'display: block;' : ''} + %p=resource.errors.full_messages.first \ No newline at end of file diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 7593d1b50..6bf94f40e 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -6,7 +6,7 @@ - if controller_name == 'sessions' && action_name == 'new' = stylesheet_link_tag "login" = javascript_include_tag "login" - - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create'].include?(action_name) + - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create', 'edit', 'update'].include?(action_name) = stylesheet_link_tag "reg_session" = csrf_meta_tag diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index d1627aed5..bc4385e28 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -32,6 +32,7 @@ en: send_paranoid_instructions: "If your e-mail exists on our database, you will receive a password recovery link on your e-mail" forgot: 'Forgot password' send: 'Send' + edit_button: 'Change' confirmations: send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.' send_paranoid_instructions: 'If your e-mail exists on our database, you will receive an email with instructions about how to confirm your account in a few minutes.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 58a5b5e4b..19a9ed1ae 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -34,6 +34,7 @@ ru: send_paranoid_instructions: "Если Ваш e-mail существует, в течение нескольких минут вы получите e-mail с инструкциями по восстановлению вашего пароля." forgot: 'Забыли пароль' send: 'Послать' + edit_button: 'Изменить' confirmations: send_instructions: "В течение нескольких минут вы получите e-mail с инструкциями по подтверждению вашей учётной записи." send_paranoid_instructions: 'Если Ваш e-mail существует, то в течение нескольких минут вы получите e-mail с инструкциями по подтверждению вашей учётной записи.' diff --git a/config/locales/en.yml b/config/locales/en.yml index 29f4f7bdc..50e88d31d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -617,15 +617,6 @@ en: platform: Platform counter: Downloads - errors: - messages: - too_long: - one: "maximum is %{count} character" - other: "maximum is %{count} characters" - too_short: - one: "minimum is %{count} character" - other: "minimum is %{count} characters" - notifications: subjects: new_comment_notification: New comment to your task diff --git a/config/locales/pluralization.en.yml b/config/locales/pluralization.en.yml index dcf1efb12..5baff28e7 100644 --- a/config/locales/pluralization.en.yml +++ b/config/locales/pluralization.en.yml @@ -20,3 +20,13 @@ en: inline_changes_count: one: "%{count} change" other: "%{count} changes" + + activerecord: + errors: + messages: + too_long: + one: "maximum is %{count} character" + other: "maximum is %{count} characters" + too_short: + one: "minimum is %{count} character" + other: "minimum is %{count} characters" diff --git a/config/locales/pluralization.ru.yml b/config/locales/pluralization.ru.yml index 117eb525b..2ec2d215c 100644 --- a/config/locales/pluralization.ru.yml +++ b/config/locales/pluralization.ru.yml @@ -26,3 +26,17 @@ ru: one: "%{count} изменение" few: "%{count} изменения" many: "%{count} изменений" + + activerecord: + errors: + messages: + too_long: + one: "не может быть больше чем %{count} символ" + few: "не может быть больше чем %{count} символа" + many: "не может быть больше чем %{count} символов" + other: "не может быть больше чем %{count} символа" + too_short: + one: "не может быть меньше %{count} символа" + few: "не может быть меньше %{count} символов" + many: "не может быть меньше %{count} символов" + other: "не может быть меньше %{count} символа" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 24b1e6a87..b243ce5da 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -612,19 +612,6 @@ ru: platform: Архитектура counter: Закачки - errors: - messages: - too_long: - one: "не может быть больше чем %{count} символ" - few: "не может быть больше чем %{count} символа" - many: "не может быть больше чем %{count} символов" - other: "не может быть больше чем %{count} символа" - too_short: - one: "не может быть меньше %{count} символа" - few: "не может быть меньше %{count} символов" - many: "не может быть меньше %{count} символов" - other: "не может быть меньше %{count} символа" - notifications: subjects: new_comment_notification: Новый комментарий к Вашей задаче From b0b53edf48b68e90fca9f4992102ea355a167ede Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 23:26:42 +0600 Subject: [PATCH 67/87] [refs #230] shorter error messages --- app/views/devise/passwords/edit.html.haml | 15 +++++++++------ config/locales/devise.en.yml | 5 +++++ config/locales/devise.ru.yml | 5 +++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index 0eff4ec82..84463652a 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -11,20 +11,23 @@ %h1= title t('devise.passwords.edit') %br .content - - is_error = resource.errors.present? + -password_error = nil + - if resource.errors.present? + - resource.errors.each do |attr, array| + -password_error = array if attr == :password = form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put, :class => "form" }) do |f| = f.hidden_field :reset_password_token .left.first=t('activerecord.attributes.user.password') .right.first - = f.text_field :password, :id => 'pass', :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" + = f.text_field :password, :id => 'pass', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.password_confirm') .right - = f.text_field :password_confirmation, :id => 'pass2', :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :password_confirmation, :id => 'pass2', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" .both %br =f.submit t("devise.passwords.edit_button"), :class => 'button', :id => 'btnLogin' - - #hint.error.reset{:style => is_error ? 'display: block;' : ''} - %p=resource.errors.full_messages.first \ No newline at end of file + - if password_error + #hint.error.reset{:style => 'display: block;'} + %p=password_error diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index bc4385e28..46d859830 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -9,6 +9,11 @@ en: one: "1 error prohibited this %{resource} from being saved:" other: "%{count} errors prohibited this %{resource} from being saved:" + activerecord: + errors: + messages: + confirmation: "passwords doesn't match" + devise: failure: already_authenticated: 'You are already signed in.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 19a9ed1ae..06261d0e4 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -11,6 +11,11 @@ ru: many: "%{resource}: сохранение не удалось из-за %{count} ошибок" other: "%{resource}: сохранение не удалось из-за %{count} ошибки" + activerecord: + errors: + messages: + confirmation: "пароли не совпадают" + devise: failure: already_authenticated: 'Вы уже вошли в систему.' From 2f0981c12ff63b712113d502bf23dc65cad2b689 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 01:32:42 +0600 Subject: [PATCH 68/87] [refs #194] fix notification line style --- app/assets/stylesheets/design/custom.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/design/custom.scss b/app/assets/stylesheets/design/custom.scss index 8c8c8e98b..95731f3ae 100644 --- a/app/assets/stylesheets/design/custom.scss +++ b/app/assets/stylesheets/design/custom.scss @@ -271,13 +271,13 @@ article div.file table { resize: none; } -#repo-wrapper div.comment div.comment-left { +div.comment div.comment-left { float: left; font-size: 12px; margin-top: 4px; } -#repo-wrapper div.comment div.comment-right { +div.comment div.comment-right { float: right; } From 4e4130257fc8f141580719b6974431ff6a83a30f Mon Sep 17 00:00:00 2001 From: Vladimir Sharshov Date: Fri, 2 Mar 2012 00:17:10 +0400 Subject: [PATCH 69/87] Update Rails to 3.2.2 for security fixes --- Gemfile | 2 +- Gemfile.lock | 58 ++++++++++++++++++++++++++-------------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Gemfile b/Gemfile index 80af20173..9a62ff6fb 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'http://rubygems.org' -gem 'rails', '3.2.1' #, :git => 'git://github.com/rails/rails.git' +gem 'rails', '3.2.2' #, :git => 'git://github.com/rails/rails.git' gem 'pg', '~> 0.13.1' # gem 'silent-postgres', :git => 'git://github.com/dolzenko/silent-postgres.git' #'~> 0.1.1' diff --git a/Gemfile.lock b/Gemfile.lock index 6d441fdb0..cd48ab286 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -26,12 +26,12 @@ GEM remote: http://rubygems.org/ specs: RedCloth (4.2.9) - actionmailer (3.2.1) - actionpack (= 3.2.1) + actionmailer (3.2.2) + actionpack (= 3.2.2) mail (~> 2.4.0) - actionpack (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) + actionpack (3.2.2) + activemodel (= 3.2.2) + activesupport (= 3.2.2) builder (~> 3.0.0) erubis (~> 2.7.0) journey (~> 1.0.1) @@ -39,18 +39,18 @@ GEM rack-cache (~> 1.1) rack-test (~> 0.6.1) sprockets (~> 2.1.2) - activemodel (3.2.1) - activesupport (= 3.2.1) + activemodel (3.2.2) + activesupport (= 3.2.2) builder (~> 3.0.0) - activerecord (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) - arel (~> 3.0.0) + activerecord (3.2.2) + activemodel (= 3.2.2) + activesupport (= 3.2.2) + arel (~> 3.0.2) tzinfo (~> 0.3.29) - activeresource (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) - activesupport (3.2.1) + activeresource (3.2.2) + activemodel (= 3.2.2) + activesupport (= 3.2.2) + activesupport (3.2.2) i18n (~> 0.6) multi_json (~> 1.0) airbrake (3.0.9) @@ -60,7 +60,7 @@ GEM posix-spawn (>= 0.3.6) ancestry (1.2.4) activerecord (>= 2.2.2) - arel (3.0.0) + arel (3.0.2) bcrypt-ruby (3.0.1) bluepill (0.0.55) activesupport (>= 3.0.0) @@ -138,7 +138,7 @@ GEM hike (1.2.1) hirb (0.6.0) i18n (0.6.0) - journey (1.0.1) + journey (1.0.3) jquery-rails (2.0.0) railties (>= 3.2.0.beta, < 5.0) thor (~> 0.14) @@ -161,7 +161,7 @@ GEM meta-tags (1.2.4) actionpack mime-types (1.17.2) - multi_json (1.0.4) + multi_json (1.1.0) mustache (0.99.4) net-scp (1.0.4) net-ssh (>= 1.99.1) @@ -199,22 +199,22 @@ GEM rack rack-test (0.6.1) rack (>= 1.0) - rails (3.2.1) - actionmailer (= 3.2.1) - actionpack (= 3.2.1) - activerecord (= 3.2.1) - activeresource (= 3.2.1) - activesupport (= 3.2.1) + rails (3.2.2) + actionmailer (= 3.2.2) + actionpack (= 3.2.2) + activerecord (= 3.2.2) + activeresource (= 3.2.2) + activesupport (= 3.2.2) bundler (~> 1.0) - railties (= 3.2.1) + railties (= 3.2.2) rails-xmlrpc (0.3.6) rails3-generators (0.17.4) railties (>= 3.0.0) rails3-jquery-autocomplete (1.0.6) rails (~> 3.0) - railties (3.2.1) - actionpack (= 3.2.1) - activesupport (= 3.2.1) + railties (3.2.2) + actionpack (= 3.2.2) + activesupport (= 3.2.2) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) @@ -327,7 +327,7 @@ DEPENDENCIES omniauth-openid (~> 1.0.1) paperclip (~> 2.5.2) pg (~> 0.13.1) - rails (= 3.2.1) + rails (= 3.2.2) rails-xmlrpc (~> 0.3.6) rails3-generators rails3-jquery-autocomplete (~> 1.0.6) From 43c10ee812dc4395a2e101d835e4fb95900d6919 Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Fri, 2 Mar 2012 00:33:48 +0400 Subject: [PATCH 70/87] [issue #195] Fixed long comments displaying. --- app/assets/stylesheets/custom.scss | 26 ++++++++++--------- app/presenters/comment_presenter.rb | 7 +++-- .../commit_as_message_presenter.rb | 4 +++ app/views/shared/_feed_message.html.haml | 14 +++++----- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index ac4e85584..45896beb7 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -52,13 +52,19 @@ article div.activity .top div.image { margin-top: 2px; } +article div.activity .top .buttons { + display: block; + position: relative; + float: right; +} + article div.activity .top div.text { float: left; font-size: 12px; padding-left: 10px; } -article div.activity .top div.text.imaged { +article div.activity .top .imaged { margin-left: 44px; } @@ -68,23 +74,19 @@ article div.activity .top div.text .name { float: left; } -article div.activity .top .buttons { - display: block; - position: relative; - float: right; -} - article div.activity .top div.text .date { font-size: 11px; + float: left; } -article div.activity .top div.text { - font-size: 12px; -} - -article div.activity .fulltext { +article div.activity div.fulltext { font-size: 12px; padding-top: 10px; + display: block; +} + +article div.activity div.fulltext.alone { + padding-top: 0px; } article div.activity .fulltext.hidden { diff --git a/app/presenters/comment_presenter.rb b/app/presenters/comment_presenter.rb index fe6fb9089..d4a01e144 100644 --- a/app/presenters/comment_presenter.rb +++ b/app/presenters/comment_presenter.rb @@ -9,7 +9,7 @@ class CommentPresenter < ApplicationPresenter @user = comment.user @options = opts - @caption = @comment.body + @content = simple_format(@comment.body, {}, :sanitize => true).html_safe end def expandable? @@ -21,9 +21,12 @@ class CommentPresenter < ApplicationPresenter end def content? - false + true end + def caption? + false + end def buttons project = options[:project] commentable = options[:commentable] diff --git a/app/presenters/git_presenters/commit_as_message_presenter.rb b/app/presenters/git_presenters/commit_as_message_presenter.rb index 44bf35264..51c9cc4bb 100644 --- a/app/presenters/git_presenters/commit_as_message_presenter.rb +++ b/app/presenters/git_presenters/commit_as_message_presenter.rb @@ -41,6 +41,10 @@ class GitPresenters::CommitAsMessagePresenter < ApplicationPresenter !content.blank? end + def caption? + true + end + protected def committer diff --git a/app/views/shared/_feed_message.html.haml b/app/views/shared/_feed_message.html.haml index fe648d49c..7ad47c51f 100644 --- a/app/views/shared/_feed_message.html.haml +++ b/app/views/shared/_feed_message.html.haml @@ -9,13 +9,15 @@ %span.name= presenter.header .both %span.date= presenter.date - %br/ - %span.subject - = presenter.caption - - if presenter.expandable? and presenter.content? - %span.data-expander.collapsed{:id => "expand#{item_no}"}   + .both + - if presenter.caption? + %span.subject= presenter.caption + - if presenter.expandable? and presenter.content? + %span.data-expander.collapsed{:id => "expand#{item_no}"}   + .both .both - if presenter.content? - .fulltext{:class => presenter.expandable? ? "hidden" : '', + .fulltext{:class => "#{presenter.expandable? ? "hidden" : ''} #{presenter.caption? ? "" : "alone"}", :id => presenter.expandable? ? "content-expand#{item_no}" : ''} = presenter.content + .both From 318dc72d2995fe8ce49575cb73bcc92943105a7a Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Fri, 2 Mar 2012 02:23:53 +0400 Subject: [PATCH 71/87] [issue #195] Fixes. * Added border to gutter in file preview * Added "empty repo" message * Fixed one of bugs with tree/branch selector --- app/assets/stylesheets/custom.scss | 8 +++++- app/controllers/git/trees_controller.rb | 1 + app/views/git/repositories/empty.html.haml | 30 ++++++++++++++++++++- app/views/projects/_branch_select.html.haml | 6 ++--- 4 files changed, 40 insertions(+), 5 deletions(-) diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index 45896beb7..9df5d5e3d 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -299,7 +299,7 @@ table.tablesorter tbody td a .issue_title { #output.formatted { width: auto; font-family: "Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace; - padding: 10px; + padding: 10px 5px; margin-left: 45px; } @@ -309,4 +309,10 @@ table.tablesorter tbody td a .issue_title { margin: 0; } +div.gutter { + border-right: 1px solid #CCCCCC !important; +} +table.tablesorter tr td.centered { + text-align: center; +} diff --git a/app/controllers/git/trees_controller.rb b/app/controllers/git/trees_controller.rb index bedede1d9..5e43a52e6 100644 --- a/app/controllers/git/trees_controller.rb +++ b/app/controllers/git/trees_controller.rb @@ -14,6 +14,7 @@ class Git::TreesController < Git::BaseController # @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 if @path @path.force_encoding(Encoding::ASCII_8BIT) diff --git a/app/views/git/repositories/empty.html.haml b/app/views/git/repositories/empty.html.haml index 39bb5f9fe..678dc18e9 100644 --- a/app/views/git/repositories/empty.html.haml +++ b/app/views/git/repositories/empty.html.haml @@ -1 +1,29 @@ -%h3= I18n.t("layout.git.repositories.empty") \ No newline at end of file += render :partial => 'projects/submenu' += render :partial => 'projects/repo_block', :locals => {:project => @project} + +.description + %h3= t("layout.projects.about_subheader") + %p + = @project.description + = link_to t('layout.read_more'), '#' +.both + +#repo-wrapper + + %h3= t("layout.projects.files_in_project") + .files + .l + = render :partial => 'git/shared/whereami' + .both + + %table#myTable.tablesorter.project{:cellpadding => "0", :cellspacing => "0"} + %thead + %tr + %th.th1= t("layout.projects.filename") + %th.th2= t("layout.projects.age") + %th.th3= t("layout.projects.message") + %th.th4= t("layout.projects.author") + %tbody + %tr + %td.centered{:colspan => 4} + %h3= I18n.t("layout.git.repositories.empty") diff --git a/app/views/projects/_branch_select.html.haml b/app/views/projects/_branch_select.html.haml index b4ca3b8ef..78d8f6a33 100644 --- a/app/views/projects/_branch_select.html.haml +++ b/app/views/projects/_branch_select.html.haml @@ -1,7 +1,7 @@ .lineForm.fork - = form_tag '', :id => 'branch_changer', :'data-action' => controller_name do - = select_tag :branch, branch_selector_options(project), - :class => 'sel80', :id => 'branch_selector' + = select_tag :branch, branch_selector_options(project), + :class => 'sel80', :id => 'branch_selector' + %form{ :action => '', :method => :get, :id => 'branch_changer', :'data-action' => "#{controller_name}"} .fork %p= t('layout.projects.current_branch')+':' .both From c177662e4121d3696f82356dfee33ded8a545e3d Mon Sep 17 00:00:00 2001 From: Pavel Chipiga Date: Fri, 2 Mar 2012 01:26:42 +0200 Subject: [PATCH 72/87] Upgrade gems. Hide uncancelable and unpublishable lins. Add duplicate build_list search link. Fix build_list display. Refs #223 --- Gemfile | 18 +++---- Gemfile.lock | 52 ++++++++++----------- app/views/build_lists/_build_list.html.haml | 2 +- app/views/build_lists/_filter.html.haml | 2 + app/views/build_lists/show.html.haml | 8 ++-- 5 files changed, 42 insertions(+), 40 deletions(-) diff --git a/Gemfile b/Gemfile index 9a62ff6fb..7fd1a784b 100644 --- a/Gemfile +++ b/Gemfile @@ -2,18 +2,18 @@ source 'http://rubygems.org' gem 'rails', '3.2.2' #, :git => 'git://github.com/rails/rails.git' -gem 'pg', '~> 0.13.1' +gem 'pg', '~> 0.13.2' # gem 'silent-postgres', :git => 'git://github.com/dolzenko/silent-postgres.git' #'~> 0.1.1' gem 'redhillonrails_core', :git => 'git://github.com/chipiga/redhillonrails_core.git', :branch => 'rails31' # '~> 2.0.0.pre' # deprecated # gem 'schema_plus', '~> 0.2.1' # buggy shit! -gem 'devise', '~> 2.0.1' +gem 'devise', '~> 2.0.4' gem 'omniauth', '~> 1.0.2' gem 'omniauth-openid', '~> 1.0.1' gem 'cancan', '~> 1.6.7' gem 'ancestry', '~> 1.2.4' -gem 'paperclip', '~> 2.5.2' +gem 'paperclip', '~> 2.7.0' gem 'delayed_job_active_record', '~> 0.3.2' gem 'russian', '~> 0.6.0' gem 'highline', '~> 1.6.11' @@ -32,26 +32,26 @@ gem 'RedCloth' gem 'wikicloth' gem 'unicorn', '~> 4.2.0' -gem 'newrelic_rpm', '~> 3.3.1' +gem 'newrelic_rpm', '~> 3.3.2' gem 'rails3-jquery-autocomplete', '~> 1.0.6' gem 'will_paginate', '~> 3.0.3' gem 'meta-tags', '~> 1.2.4', :require => 'meta_tags' gem "haml-rails", '~> 0.3.4' -gem 'jquery-rails', '~> 2.0.0' +gem 'jquery-rails', '~> 2.0.1' group :assets do gem 'sass-rails', '~> 3.2.4' gem 'coffee-rails', '~> 3.2.2' gem 'uglifier', '~> 1.2.1' gem 'compass', '~> 0.12.rc.1' # :git => 'git://github.com/chriseppstein/compass.git', :branch => 'rails31' - gem 'therubyracer', '~> 0.9.9' + gem 'therubyracer', '~> 0.9.10' end group :production do gem "airbrake", '~> 3.0.9' - gem 'bluepill', '~> 0.0.55', :require => false - gem 'daemons', '~> 1.1.8' # for DJ + gem 'bluepill', '~> 0.0.59', :require => false + gem 'daemons', '1.1.6' # for DJ end group :development do @@ -69,6 +69,6 @@ end group :test do gem 'rspec-rails', '~> 2.8.1' - gem 'factory_girl_rails', '~> 1.6.0' + gem 'factory_girl_rails', '~> 1.7.0' gem 'rr', '~> 1.0.4' end diff --git a/Gemfile.lock b/Gemfile.lock index cd48ab286..e8ae4e140 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -62,15 +62,15 @@ GEM activerecord (>= 2.2.2) arel (3.0.2) bcrypt-ruby (3.0.1) - bluepill (0.0.55) + bluepill (0.0.59) activesupport (>= 3.0.0) - daemons (~> 1.1.4) + daemons (~> 1.1.4, <= 1.1.6) i18n (>= 0.5.0) state_machine (~> 1.1.0) builder (3.0.0) cancan (1.6.7) cape (1.4.0) - capistrano (2.9.0) + capistrano (2.11.2) highline net-scp (>= 1.0.0) net-sftp (>= 2.0.0) @@ -94,27 +94,27 @@ GEM fssm (>= 0.2.7) sass (~> 3.1) creole (0.4.2) - daemons (1.1.8) + daemons (1.1.6) delayed_job (3.0.1) activesupport (~> 3.0) delayed_job_active_record (0.3.2) activerecord (> 2.1.0) delayed_job (~> 3.0.0) - devise (2.0.1) + devise (2.0.4) bcrypt-ruby (~> 3.0) orm_adapter (~> 0.0.3) railties (~> 3.1) - warden (~> 1.1) + warden (~> 1.1.1) diff-lcs (1.1.3) erubis (2.7.0) eventmachine (0.12.10) execjs (1.3.0) multi_json (~> 1.0) expression_parser (0.9.0) - factory_girl (2.5.2) + factory_girl (2.6.0) activesupport (>= 2.3.9) - factory_girl_rails (1.6.0) - factory_girl (~> 2.5.0) + factory_girl_rails (1.7.0) + factory_girl (~> 2.6.0) railties (>= 3.0.0) fssm (0.2.8.1) github-markup (0.7.1) @@ -139,8 +139,8 @@ GEM hirb (0.6.0) i18n (0.6.0) journey (1.0.3) - jquery-rails (2.0.0) - railties (>= 3.2.0.beta, < 5.0) + jquery-rails (2.0.1) + railties (>= 3.2.0, < 5.0) thor (~> 0.14) json (1.6.5) kgio (2.7.2) @@ -170,7 +170,7 @@ GEM net-ssh (2.3.0) net-ssh-gateway (1.1.0) net-ssh (>= 1.99.1) - newrelic_rpm (3.3.1) + newrelic_rpm (3.3.2) nokogiri (1.5.0) omniauth (1.0.2) hashie (~> 1.2) @@ -179,12 +179,12 @@ GEM omniauth (~> 1.0) rack-openid (~> 1.3.1) orm_adapter (0.0.6) - paperclip (2.5.2) + paperclip (2.7.0) activerecord (>= 2.3.0) activesupport (>= 2.3.2) cocaine (>= 0.0.2) mime-types - pg (0.13.1) + pg (0.13.2) polyglot (0.3.3) posix-spawn (0.3.6) rack (1.4.1) @@ -264,7 +264,7 @@ GEM tilt (~> 1.1, != 1.3.0) sqlite3 (1.3.5) state_machine (1.1.2) - therubyracer (0.9.9) + therubyracer (0.9.10) libv8 (~> 3.3.10) thin (1.3.1) daemons (>= 1.0.9) @@ -283,9 +283,9 @@ GEM kgio (~> 2.6) rack raindrops (~> 0.7) - warden (1.1.0) + warden (1.1.1) rack (>= 1.0) - whenever (0.7.2) + whenever (0.7.3) activesupport (>= 2.3.4) chronic (~> 0.6.3) wikicloth (0.7.1) @@ -300,7 +300,7 @@ DEPENDENCIES RedCloth airbrake (~> 3.0.9) ancestry (~> 1.2.4) - bluepill (~> 0.0.55) + bluepill (~> 0.0.59) cancan (~> 1.6.7) cape capistrano @@ -309,24 +309,24 @@ DEPENDENCIES coffee-rails (~> 3.2.2) compass (~> 0.12.rc.1) creole - daemons (~> 1.1.8) + daemons (= 1.1.6) delayed_job_active_record (~> 0.3.2) - devise (~> 2.0.1) - factory_girl_rails (~> 1.6.0) + devise (~> 2.0.4) + factory_girl_rails (~> 1.7.0) gollum (= 1.3.1) grack! grit! haml-rails (~> 0.3.4) highline (~> 1.6.11) hirb - jquery-rails (~> 2.0.0) + jquery-rails (~> 2.0.1) mailcatcher meta-tags (~> 1.2.4) - newrelic_rpm (~> 3.3.1) + newrelic_rpm (~> 3.3.2) omniauth (~> 1.0.2) omniauth-openid (~> 1.0.1) - paperclip (~> 2.5.2) - pg (~> 0.13.1) + paperclip (~> 2.7.0) + pg (~> 0.13.2) rails (= 3.2.2) rails-xmlrpc (~> 0.3.6) rails3-generators @@ -339,7 +339,7 @@ DEPENDENCIES russian (~> 0.6.0) sass-rails (~> 3.2.4) shotgun - therubyracer (~> 0.9.9) + therubyracer (~> 0.9.10) uglifier (~> 1.2.1) unicorn (~> 4.2.0) whenever diff --git a/app/views/build_lists/_build_list.html.haml b/app/views/build_lists/_build_list.html.haml index d0d65fb58..9d4f24f2a 100644 --- a/app/views/build_lists/_build_list.html.haml +++ b/app/views/build_lists/_build_list.html.haml @@ -5,5 +5,5 @@ %td= link_to build_list.project.name, build_list.project %td= build_list.arch.name %td= link_to build_list.user.try(:fullname), build_list.user - %td= link_to image_tag('x.png', :class => 'delete-row', :id => "delete-row#{build_list_counter}"), cancel_build_list_path(build_list), :method => :put, :confirm => t('layout.confirm') if can?(:cancel, build_list) + %td= link_to image_tag('x.png', :class => 'delete-row', :id => "delete-row#{build_list_counter}"), cancel_build_list_path(build_list), :method => :put, :confirm => t('layout.confirm') if build_list.can_cancel? and can?(:cancel, build_list) %td= build_list.notified_at \ No newline at end of file diff --git a/app/views/build_lists/_filter.html.haml b/app/views/build_lists/_filter.html.haml index 19cc34443..f1ccd74cf 100644 --- a/app/views/build_lists/_filter.html.haml +++ b/app/views/build_lists/_filter.html.haml @@ -29,6 +29,8 @@ .lefter= f.radio_button :ownership, 'index', :class => 'niceRadio', :id => 'myradio3' .lefter= t("layout.build_lists.ownership.index") .both + %br + = f.submit t("layout.search") .block %h3.small= t("activerecord.attributes.build_list.status") .lineForm.aside= f.select :status, BuildList::STATUSES.collect{|status| [BuildList.human_status(status), status]}, {:include_blank => true, :selected => @filter.status}, {:class => 'sel80 aside', :id => 'status', :tabindex => 2} diff --git a/app/views/build_lists/show.html.haml b/app/views/build_lists/show.html.haml index 36d7eaa50..486d3afd6 100644 --- a/app/views/build_lists/show.html.haml +++ b/app/views/build_lists/show.html.haml @@ -34,12 +34,12 @@ %tr %td= t("activerecord.attributes.build_list.status") %td= @build_list.human_status - %tr - %td= t("activerecord.attributes.build_list.project_version") - %td= @build_list.project_version %tr %td= t("activerecord.attributes.build_list.project") %td= link_to @build_list.project.name, project_path(@build_list.project) + %tr + %td= t("activerecord.attributes.build_list.project_version") + %td= @build_list.project_version %tr %td= t("activerecord.attributes.build_list.arch") %td= @build_list.arch.name @@ -56,7 +56,7 @@ %br %br -= link_to t("layout.publish"), publish_build_list_path(@build_list), :method => "put", :confirm => t("layout.confirm"), :class => "button" if can? :publish, @build_list += link_to t("layout.publish"), publish_build_list_path(@build_list), :method => "put", :confirm => t("layout.confirm"), :class => "button" if @build_list.can_publish? and can?(:publish, @build_list) %br %br From 84a7a9fe2d23b24e2dc75d89562d8cffaef0e6c9 Mon Sep 17 00:00:00 2001 From: Pavel Chipiga Date: Fri, 2 Mar 2012 01:37:05 +0200 Subject: [PATCH 73/87] Fix build_list display width. Refs #223 --- app/assets/stylesheets/design/common.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/design/common.scss b/app/assets/stylesheets/design/common.scss index ea53f9aba..a44081d1d 100644 --- a/app/assets/stylesheets/design/common.scss +++ b/app/assets/stylesheets/design/common.scss @@ -7,7 +7,7 @@ table.info { table.columns2 { @include inner-table-borders; - th.first, td.first {width: 50%;} + th.first, td.first {width: 30%;} } table.columns3 { From 036dfb6dd57b67b14c8e2cf5884a20b8b29aaa39 Mon Sep 17 00:00:00 2001 From: Pavel Chipiga Date: Thu, 1 Mar 2012 19:33:46 +0200 Subject: [PATCH 74/87] Fix build_lists bugs. Add build list display and new build list pages design, apply compass. Refactor and cleanup assets. Refactor abilities. Refactor build_list search. Improve layout_class helper. Change defaul build_lists index filter and fix specs. Fix assets path. Refs #223 --- app/assets/javascripts/application.js | 69 ++-- app/assets/javascripts/{ => design}/all.js | 0 .../javascripts/{ => design}/checkbox-main.js | 0 .../javascripts/{ => design}/checkbox.js | 0 .../javascripts/{ => design}/cusel-init.js | 0 .../javascripts/{ => design}/myprojects.js | 0 .../javascripts/{ => design}/project-page.js | 0 app/assets/javascripts/{ => design}/radio.js | 0 .../javascripts/{ => extra}/admin-members.js | 0 .../javascripts/{ => extra}/blob.editor.js | 0 app/assets/javascripts/extra/build_list.js | 23 ++ .../{ => extra}/syntax.highlighter-init.js | 0 app/assets/javascripts/{ => extra}/tracker.js | 2 +- app/assets/stylesheets/application.scss | 32 +- app/assets/stylesheets/blue/asc.png | Bin 2870 -> 0 bytes app/assets/stylesheets/blue/bg.png | Bin 2920 -> 0 bytes app/assets/stylesheets/blue/desc.png | Bin 2874 -> 0 bytes app/assets/stylesheets/blue/style.css | 118 ------ app/assets/stylesheets/blue/style.scss | 113 ------ app/assets/stylesheets/design/common.scss | 16 + .../stylesheets/{ => design}/custom.scss | 0 .../assets/stylesheets/design/git.scss | 0 app/assets/stylesheets/{ => design}/main.scss | 0 .../{ => devise}/registration.scss | 0 app/assets/stylesheets/hl/my.scss | 8 - app/assets/stylesheets/hl/shCore.scss | 226 ------------ app/assets/stylesheets/hl/shCoreDefault.scss | 328 ----------------- app/assets/stylesheets/hl/shCoreDjango.scss | 331 ----------------- app/assets/stylesheets/hl/shCoreEclipse.scss | 348 ------------------ app/assets/stylesheets/hl/shCoreEmacs.scss | 324 ---------------- .../stylesheets/hl/shCoreFadeToGrey.scss | 328 ----------------- app/assets/stylesheets/hl/shCoreMDUltra.scss | 324 ---------------- app/assets/stylesheets/hl/shCoreMidnight.scss | 324 ---------------- app/assets/stylesheets/hl/shCoreRDark.scss | 324 ---------------- app/assets/stylesheets/hl/shThemeDefault.scss | 117 ------ app/assets/stylesheets/hl/shThemeDjango.scss | 120 ------ app/assets/stylesheets/hl/shThemeEclipse.scss | 128 ------- app/assets/stylesheets/hl/shThemeEmacs.scss | 113 ------ .../stylesheets/hl/shThemeFadeToGrey.scss | 117 ------ app/assets/stylesheets/hl/shThemeMDUltra.scss | 113 ------ .../stylesheets/hl/shThemeMidnight.scss | 113 ------ app/assets/stylesheets/hl/shThemeRDark.scss | 113 ------ app/assets/stylesheets/reg_session.scss | 2 +- app/controllers/build_lists_controller.rb | 34 +- app/helpers/application_helper.rb | 10 +- app/models/ability.rb | 62 ++-- app/models/build_list/filter.rb | 2 +- app/models/user.rb | 6 +- app/views/build_lists/_build_list.html.haml | 2 +- .../{_sidebar.html.haml => _filter.html.haml} | 0 .../build_lists/_include_repos.html.haml | 5 +- app/views/build_lists/_sub_menu.html.haml | 6 - app/views/build_lists/_submenu.html.haml | 7 + app/views/build_lists/index.html.haml | 6 +- app/views/build_lists/new.html.haml | 95 ++--- app/views/build_lists/show.html.haml | 192 ++++------ app/views/git/repositories/_show.html.haml | 9 +- app/views/issues/_issue.html.haml | 3 +- app/views/issues/_labels.html.haml | 3 +- app/views/layouts/application.html.haml | 8 +- app/views/projects/_commit_info.html.haml | 2 +- app/views/projects/_repo_block.html.haml | 3 +- app/views/projects/_submenu.html.haml | 23 +- app/views/projects/show.html.haml | 9 +- config/application.rb | 3 + config/locales/build_list.en.yml | 2 + config/locales/build_list.ru.yml | 2 + config/routes.rb | 7 +- db/schema.rb | 5 +- .../build_lists_controller_spec.rb | 8 +- vendor/assets/stylesheets/vendor.scss | 15 - 71 files changed, 295 insertions(+), 4408 deletions(-) rename app/assets/javascripts/{ => design}/all.js (100%) rename app/assets/javascripts/{ => design}/checkbox-main.js (100%) rename app/assets/javascripts/{ => design}/checkbox.js (100%) rename app/assets/javascripts/{ => design}/cusel-init.js (100%) rename app/assets/javascripts/{ => design}/myprojects.js (100%) rename app/assets/javascripts/{ => design}/project-page.js (100%) rename app/assets/javascripts/{ => design}/radio.js (100%) rename app/assets/javascripts/{ => extra}/admin-members.js (100%) rename app/assets/javascripts/{ => extra}/blob.editor.js (100%) create mode 100644 app/assets/javascripts/extra/build_list.js rename app/assets/javascripts/{ => extra}/syntax.highlighter-init.js (100%) rename app/assets/javascripts/{ => extra}/tracker.js (96%) delete mode 100644 app/assets/stylesheets/blue/asc.png delete mode 100644 app/assets/stylesheets/blue/bg.png delete mode 100644 app/assets/stylesheets/blue/desc.png delete mode 100644 app/assets/stylesheets/blue/style.css delete mode 100644 app/assets/stylesheets/blue/style.scss create mode 100644 app/assets/stylesheets/design/common.scss rename app/assets/stylesheets/{ => design}/custom.scss (100%) rename vendor/assets/stylesheets/git/style.css => app/assets/stylesheets/design/git.scss (100%) rename app/assets/stylesheets/{ => design}/main.scss (100%) rename app/assets/stylesheets/{ => devise}/registration.scss (100%) delete mode 100644 app/assets/stylesheets/hl/my.scss delete mode 100644 app/assets/stylesheets/hl/shCore.scss delete mode 100644 app/assets/stylesheets/hl/shCoreDefault.scss delete mode 100644 app/assets/stylesheets/hl/shCoreDjango.scss delete mode 100644 app/assets/stylesheets/hl/shCoreEclipse.scss delete mode 100644 app/assets/stylesheets/hl/shCoreEmacs.scss delete mode 100644 app/assets/stylesheets/hl/shCoreFadeToGrey.scss delete mode 100644 app/assets/stylesheets/hl/shCoreMDUltra.scss delete mode 100644 app/assets/stylesheets/hl/shCoreMidnight.scss delete mode 100644 app/assets/stylesheets/hl/shCoreRDark.scss delete mode 100644 app/assets/stylesheets/hl/shThemeDefault.scss delete mode 100644 app/assets/stylesheets/hl/shThemeDjango.scss delete mode 100644 app/assets/stylesheets/hl/shThemeEclipse.scss delete mode 100644 app/assets/stylesheets/hl/shThemeEmacs.scss delete mode 100644 app/assets/stylesheets/hl/shThemeFadeToGrey.scss delete mode 100644 app/assets/stylesheets/hl/shThemeMDUltra.scss delete mode 100644 app/assets/stylesheets/hl/shThemeMidnight.scss delete mode 100644 app/assets/stylesheets/hl/shThemeRDark.scss rename app/views/build_lists/{_sidebar.html.haml => _filter.html.haml} (100%) delete mode 100644 app/views/build_lists/_sub_menu.html.haml create mode 100644 app/views/build_lists/_submenu.html.haml diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index c7b8341e8..bf7550183 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -3,9 +3,9 @@ //= require jquery-ui //= require autocomplete-rails //= require vendor -//= require_tree . -// -// require_self +//= require_tree ./design +//= require_tree ./extra +//= require_self // function disableNotifierCbx(global_cbx) { // if ($(global_cbx).attr('checked')) { @@ -18,47 +18,24 @@ // } // // $(document).ready(function() { -// $('select#build_list_pl_id').change(function() { -// var platform_id = $(this).val(); -// var base_platforms = $('.base_platforms input[type=checkbox]'); -// -// $('#include_repos').html($('.preloaded_include_repos .include_repos_' + platform_id).html()); -// -// base_platforms.each(function(){ -// if ($.inArray(platform_id, base_platforms.map(function(){ return $(this).val() }).get()) >= 0) { -// if ($(this).val() == platform_id) { -// $(this).attr('checked', 'checked'); -// $(this).removeAttr('disabled'); -// } else { -// $(this).removeAttr('checked'); -// $(this).attr('disabled', 'disabled'); -// } -// } else { -// $(this).removeAttr('disabled'); -// } -// }); -// }); -// $('select#build_list_pl_id').trigger('change'); -// -// $('input.user_role_chbx').click(function() { -// var current = $(this); -// current.parent().find('input.user_role_chbx').each(function(i,el) { -// if ($(el).attr('id') != current.attr('id')) { -// $(el).removeAttr('checked'); -// } -// }); -// }); -// -// $('#settings_notifier_can_notify').click(function() { -// disableNotifierCbx($(this)); -// }); -// -// $('div.information > div.user').live('click', function() { -// droplist(); -// }); -// -// $('div.information > div.profile > a').live('click', function(e) { -// e.preventDefault(); -// }); -// +// $('input.user_role_chbx').click(function() { +// var current = $(this); +// current.parent().find('input.user_role_chbx').each(function(i,el) { +// if ($(el).attr('id') != current.attr('id')) { +// $(el).removeAttr('checked'); +// } +// }); +// }); +// +// $('#settings_notifier_can_notify').click(function() { +// disableNotifierCbx($(this)); +// }); +// +// $('div.information > div.user').live('click', function() { +// droplist(); +// }); +// +// $('div.information > div.profile > a').live('click', function(e) { +// e.preventDefault(); +// }); // }); diff --git a/app/assets/javascripts/all.js b/app/assets/javascripts/design/all.js similarity index 100% rename from app/assets/javascripts/all.js rename to app/assets/javascripts/design/all.js diff --git a/app/assets/javascripts/checkbox-main.js b/app/assets/javascripts/design/checkbox-main.js similarity index 100% rename from app/assets/javascripts/checkbox-main.js rename to app/assets/javascripts/design/checkbox-main.js diff --git a/app/assets/javascripts/checkbox.js b/app/assets/javascripts/design/checkbox.js similarity index 100% rename from app/assets/javascripts/checkbox.js rename to app/assets/javascripts/design/checkbox.js diff --git a/app/assets/javascripts/cusel-init.js b/app/assets/javascripts/design/cusel-init.js similarity index 100% rename from app/assets/javascripts/cusel-init.js rename to app/assets/javascripts/design/cusel-init.js diff --git a/app/assets/javascripts/myprojects.js b/app/assets/javascripts/design/myprojects.js similarity index 100% rename from app/assets/javascripts/myprojects.js rename to app/assets/javascripts/design/myprojects.js diff --git a/app/assets/javascripts/project-page.js b/app/assets/javascripts/design/project-page.js similarity index 100% rename from app/assets/javascripts/project-page.js rename to app/assets/javascripts/design/project-page.js diff --git a/app/assets/javascripts/radio.js b/app/assets/javascripts/design/radio.js similarity index 100% rename from app/assets/javascripts/radio.js rename to app/assets/javascripts/design/radio.js diff --git a/app/assets/javascripts/admin-members.js b/app/assets/javascripts/extra/admin-members.js similarity index 100% rename from app/assets/javascripts/admin-members.js rename to app/assets/javascripts/extra/admin-members.js diff --git a/app/assets/javascripts/blob.editor.js b/app/assets/javascripts/extra/blob.editor.js similarity index 100% rename from app/assets/javascripts/blob.editor.js rename to app/assets/javascripts/extra/blob.editor.js diff --git a/app/assets/javascripts/extra/build_list.js b/app/assets/javascripts/extra/build_list.js new file mode 100644 index 000000000..3f6fa3316 --- /dev/null +++ b/app/assets/javascripts/extra/build_list.js @@ -0,0 +1,23 @@ +$(document).ready(function() { + $('select#build_list_pl_id').change(function() { + var platform_id = $(this).val(); + var base_platforms = $('.base_platforms input[type=checkbox]'); + + $('#include_repos').html($('.preloaded_include_repos .include_repos_' + platform_id).html()); + + base_platforms.each(function(){ + if ($.inArray(platform_id, base_platforms.map(function(){ return $(this).val() }).get()) >= 0) { + if ($(this).val() == platform_id) { + $(this).attr('checked', 'checked'); + $(this).removeAttr('disabled'); + } else { + $(this).removeAttr('checked'); + $(this).attr('disabled', 'disabled'); + } + } else { + $(this).removeAttr('disabled'); + } + }); + }); + $('select#build_list_pl_id').trigger('change'); +}); diff --git a/app/assets/javascripts/syntax.highlighter-init.js b/app/assets/javascripts/extra/syntax.highlighter-init.js similarity index 100% rename from app/assets/javascripts/syntax.highlighter-init.js rename to app/assets/javascripts/extra/syntax.highlighter-init.js diff --git a/app/assets/javascripts/tracker.js b/app/assets/javascripts/extra/tracker.js similarity index 96% rename from app/assets/javascripts/tracker.js rename to app/assets/javascripts/extra/tracker.js index 9b6fe05eb..e0d645645 100644 --- a/app/assets/javascripts/tracker.js +++ b/app/assets/javascripts/extra/tracker.js @@ -46,7 +46,7 @@ $(document).ready(function() { return send_index_tracker_request('GET'); }); - $("#myradio1").live('change', function(event) { + $("#filter_issues #myradio1").live('change', function(event) { return send_index_tracker_request('GET'); }); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 9c3529740..3236ff5ef 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -1,29 +1,5 @@ @import "vendor"; -@import "main"; -@import "custom"; -@import "blue/style"; -//@import "hl/shCore"; -//@import "hl/shCoreDefault"; -//@import "hl/shCoreDjango"; -//@import "hl/shCoreEclipse"; -//@import "hl/shCoreEmacs"; -//@import "hl/shCoreFadeToGrey"; -//@import "hl/shCoreMDUltra"; -//@import "hl/shCoreMidnight"; -//@import "hl/shCoreRDark"; -//@import "hl/shThemeDefault"; -//@import "hl/shThemeDjango"; -//@import "hl/shThemeEclipse"; -//@import "hl/shThemeEmacs"; -//@import "hl/shThemeFadeToGrey"; -//@import "hl/shThemeMDUltra"; -//@import "hl/shThemeMidnight"; -//@import "hl/shThemeRDark"; -//@import "hl/my"; - -/* -*= require main -*= require blue/style -*= require vendor -*= require custom -*/ +@import "design/main"; +@import "design/git"; +@import "design/common"; +@import "design/custom"; diff --git a/app/assets/stylesheets/blue/asc.png b/app/assets/stylesheets/blue/asc.png deleted file mode 100644 index 7cea5a1c301cb55f1c97bab5d9575601798cd0d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2870 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 diff --git a/app/assets/stylesheets/blue/style.css b/app/assets/stylesheets/blue/style.css deleted file mode 100644 index aafbf9dd9..000000000 --- a/app/assets/stylesheets/blue/style.css +++ /dev/null @@ -1,118 +0,0 @@ -/* tables */ -table.tablesorter { - font-family:arial; - margin:10px 0pt 15px; - font-size: 12px; - width: 100%; - text-align: left; - border: 1px solid #DDD; - border-bottom: none; -} - -table.tablesorter thead th{ - padding-left: 5px; -} - -table.tablesorter thead tr th, table.tablesorter tfoot tr th { - font-size: 12px; - margin: 0px; -} -table.tablesorter thead tr .header { - background-image: url("bg.png"); - background-repeat: no-repeat; - background-position: center left; - cursor: pointer; -} -table.tablesorter tbody td { - color: #3D3D3D; - padding: 5px; - margin: 0px; - background-color: #FFF; - vertical-align: top; - -} -table.tablesorter tbody tr.odd td { - background-color:#F0F0F6; -} -table.tablesorter thead tr .headerSortUp { - background-image: url("asc.png"); -} -table.tablesorter thead tr .headerSortDown { - background-image: url("desc.png"); -} -table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp { - -} - -table.tablesorter thead tr { - height: 38px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; -} - -table.tablesorter thead tr th{ - border-bottom: 1px solid #FFF; -} - -table.tablesorter tr { - position: relative; - z-index: 70; -} - -table.tablesorter tbody tr td { - border-bottom: 1px solid #DDD; -} - -table.tablesorter thead th { - color: #575756; - font-weight: normal; -} - -table.tablesorter tbody td { - color: #58595b; - padding-top: 8px; - padding-bottom: 8px; -} - -table.tablesorter .th1 { - width: 180px; - /*padding-left: 17px;*/ -} - -table.tablesorter .th2 { - width: 390px; -} - -table.tablesorter .th3 { - width: 110px; - /*padding-left: 17px;*/ -} - -table.tablesorter .td2 { - padding-right: 20px; -} - -table.tablesorter .th4 { - width: 120px; -} - -table.tablesorter .td5 { - text-align: center; -} - -table.tablesorter .td5 img{ - cursor: pointer; -} - -.table-sort-left { - float: left; - width: 25px; -} - -.table-sort-right { - float: left; -} \ No newline at end of file diff --git a/app/assets/stylesheets/blue/style.scss b/app/assets/stylesheets/blue/style.scss deleted file mode 100644 index b3dc78e17..000000000 --- a/app/assets/stylesheets/blue/style.scss +++ /dev/null @@ -1,113 +0,0 @@ -/* tables */ -table.tablesorter { - font-family:arial; - margin:10px 0pt 15px; - font-size: 12px; - width: 100%; - text-align: left; - border: 1px solid #DDD; - border-bottom: none; -} -table.tablesorter thead tr th, table.tablesorter tfoot tr th { - font-size: 12px; - margin: 0px; -} -table.tablesorter thead tr .header { - background-image: image-url("bg-sortable.png"); - background-repeat: no-repeat; - background-position: center left; - cursor: pointer; -} -table.tablesorter tbody td { - color: #3D3D3D; - padding: 5px; - margin: 0px; - background-color: #FFF; - vertical-align: top; - -} -table.tablesorter tbody tr.odd td { - background-color:#F0F0F6; -} -table.tablesorter thead tr .headerSortUp { - background-image: image-url("asc.png"); -} -table.tablesorter thead tr .headerSortDown { - background-image: image-url("desc.png"); -} -table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp { - -} - -table.tablesorter thead tr { - height: 38px; - background: #ededed; - -webkit-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - -moz-box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - box-shadow: 0px 3px 3px -1px rgba(18, 86, 135, 0.2); - position: relative; - z-index: 99; -} - -table.tablesorter thead tr th{ - border-bottom: 1px solid #FFF; -} - -table.tablesorter tr { - position: relative; - z-index: 70; -} - -table.tablesorter tbody tr td { - border-bottom: 1px solid #DDD; -} - -table.tablesorter thead th { - color: #575756; - font-weight: normal; -} - -table.tablesorter tbody td { - color: #58595b; - padding-top: 8px; - padding-bottom: 8px; -} - -table.tablesorter .th1 { - width: 180px; - padding-left: 17px; -} - -table.tablesorter .th2 { - width: 390px; -} - -table.tablesorter .th3 { - width: 110px; - padding-left: 17px; -} - -table.tablesorter .td2 { - padding-right: 20px; -} - -table.tablesorter .th4 { - width: 120px; -} - -table.tablesorter .td5 { - text-align: center; -} - -table.tablesorter .td5 img{ - cursor: pointer; -} - -.table-sort-left { - float: left; - width: 25px; -} - -.table-sort-right { - float: left; -} diff --git a/app/assets/stylesheets/design/common.scss b/app/assets/stylesheets/design/common.scss new file mode 100644 index 000000000..ea53f9aba --- /dev/null +++ b/app/assets/stylesheets/design/common.scss @@ -0,0 +1,16 @@ +@import 'compass/utilities/tables'; + +table.info { + width: 100%; + td {padding: 5px;} +} + +table.columns2 { + @include inner-table-borders; + th.first, td.first {width: 50%;} +} + +table.columns3 { + @include alternating-rows-and-columns(#eee, #ccc, #000); + th.first, td.first, th.last, td.last {width: 30%;} +} diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/design/custom.scss similarity index 100% rename from app/assets/stylesheets/custom.scss rename to app/assets/stylesheets/design/custom.scss diff --git a/vendor/assets/stylesheets/git/style.css b/app/assets/stylesheets/design/git.scss similarity index 100% rename from vendor/assets/stylesheets/git/style.css rename to app/assets/stylesheets/design/git.scss diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/design/main.scss similarity index 100% rename from app/assets/stylesheets/main.scss rename to app/assets/stylesheets/design/main.scss diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/devise/registration.scss similarity index 100% rename from app/assets/stylesheets/registration.scss rename to app/assets/stylesheets/devise/registration.scss diff --git a/app/assets/stylesheets/hl/my.scss b/app/assets/stylesheets/hl/my.scss deleted file mode 100644 index 1c0167aec..000000000 --- a/app/assets/stylesheets/hl/my.scss +++ /dev/null @@ -1,8 +0,0 @@ -td.gutter { - background: #ededed; - color: #575756; -} - -div.syntaxhighlighter { - margin: 0; -} \ No newline at end of file diff --git a/app/assets/stylesheets/hl/shCore.scss b/app/assets/stylesheets/hl/shCore.scss deleted file mode 100644 index 34f6864a1..000000000 --- a/app/assets/stylesheets/hl/shCore.scss +++ /dev/null @@ -1,226 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} diff --git a/app/assets/stylesheets/hl/shCoreDefault.scss b/app/assets/stylesheets/hl/shCoreDefault.scss deleted file mode 100644 index 08f9e10e4..000000000 --- a/app/assets/stylesheets/hl/shCoreDefault.scss +++ /dev/null @@ -1,328 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: white !important; -} -.syntaxhighlighter .line.alt1 { - background-color: white !important; -} -.syntaxhighlighter .line.alt2 { - background-color: white !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #e0e0e0 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: black !important; -} -.syntaxhighlighter table caption { - color: black !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #6ce26c !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #6ce26c !important; - color: white !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: blue !important; - background: white !important; - border: 1px solid #6ce26c !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: blue !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: red !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #6ce26c !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: black !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: black !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #008200 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: blue !important; -} -.syntaxhighlighter .keyword { - color: #006699 !important; -} -.syntaxhighlighter .preprocessor { - color: gray !important; -} -.syntaxhighlighter .variable { - color: #aa7700 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ff1493 !important; -} -.syntaxhighlighter .constants { - color: #0066cc !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #006699 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: gray !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: red !important; -} - -.syntaxhighlighter .keyword { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shCoreDjango.scss b/app/assets/stylesheets/hl/shCoreDjango.scss deleted file mode 100644 index 1db1f70cb..000000000 --- a/app/assets/stylesheets/hl/shCoreDjango.scss +++ /dev/null @@ -1,331 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #233729 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: #f8f8f8 !important; -} -.syntaxhighlighter .gutter { - color: #497958 !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #41a83e !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #41a83e !important; - color: #0a2b1d !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #96dd3b !important; - background: black !important; - border: 1px solid #41a83e !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #96dd3b !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: white !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #41a83e !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #ffe862 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #f8f8f8 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #336442 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #9df39f !important; -} -.syntaxhighlighter .keyword { - color: #96dd3b !important; -} -.syntaxhighlighter .preprocessor { - color: #91bb9e !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #96dd3b !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #eb939a !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #91bb9e !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #edef7d !important; -} - -.syntaxhighlighter .comments { - font-style: italic !important; -} -.syntaxhighlighter .keyword { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shCoreEclipse.scss b/app/assets/stylesheets/hl/shCoreEclipse.scss deleted file mode 100644 index 1e6897f52..000000000 --- a/app/assets/stylesheets/hl/shCoreEclipse.scss +++ /dev/null @@ -1,348 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0; - /*padding-left: 5px;*/ - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - - - -.syntaxhighlighter { - width: auto; - margin: 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: auto; -} - -.syntaxhighlighter table tr td{ - padding: 10px 5px; -} - -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: auto; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: auto; - height: 100% !important; - border: none !important; - - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: white !important; -} -.syntaxhighlighter .line.alt1 { - -} -.syntaxhighlighter .line.alt2 { - background-color: none; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #c3defe !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: black !important; -} -.syntaxhighlighter .gutter { - color: #565657 !important; - background: #ededed; -} -.syntaxhighlighter .gutter .line { - border-right: none !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #d4d0c8 !important; - color: white !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #3f5fbf !important; - background: white !important; - border: 1px solid #d4d0c8 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #3f5fbf !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #aa7700 !important; -} -.syntaxhighlighter .toolbar { - color: #a0a0a0 !important; - background: #d4d0c8 !important; - border: none !important; - -} -.syntaxhighlighter .toolbar a { - color: #a0a0a0 !important; -} -.syntaxhighlighter .toolbar a:hover { - color: red !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: black !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #3f5fbf !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #2a00ff !important; -} -.syntaxhighlighter .keyword { - color: #7f0055 !important; -} -.syntaxhighlighter .preprocessor { - color: #646464 !important; -} -.syntaxhighlighter .variable { - color: #aa7700 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ff1493 !important; -} -.syntaxhighlighter .constants { - color: #0066cc !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #7f0055 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: gray !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: red !important; -} - -.syntaxhighlighter .keyword { - font-weight: bold !important; -} -.syntaxhighlighter .xml .keyword { - color: #3f7f7f !important; - font-weight: normal !important; -} -.syntaxhighlighter .xml .color1, .syntaxhighlighter .xml .color1 a { - color: #7f007f !important; -} -.syntaxhighlighter .xml .string { - font-style: italic !important; - color: #2a00ff !important; -} diff --git a/app/assets/stylesheets/hl/shCoreEmacs.scss b/app/assets/stylesheets/hl/shCoreEmacs.scss deleted file mode 100644 index 706c77a0a..000000000 --- a/app/assets/stylesheets/hl/shCoreEmacs.scss +++ /dev/null @@ -1,324 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: black !important; -} -.syntaxhighlighter .line.alt1 { - background-color: black !important; -} -.syntaxhighlighter .line.alt2 { - background-color: black !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #2a3133 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: #d3d3d3 !important; -} -.syntaxhighlighter .gutter { - color: #d3d3d3 !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #990000 !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #990000 !important; - color: black !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #ebdb8d !important; - background: black !important; - border: 1px solid #990000 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #ebdb8d !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #ff7d27 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #990000 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #9ccff4 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #d3d3d3 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #ff7d27 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #ff9e7b !important; -} -.syntaxhighlighter .keyword { - color: aqua !important; -} -.syntaxhighlighter .preprocessor { - color: #aec4de !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #81cef9 !important; -} -.syntaxhighlighter .constants { - color: #ff9e7b !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: aqua !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #ebdb8d !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff7d27 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #aec4de !important; -} diff --git a/app/assets/stylesheets/hl/shCoreFadeToGrey.scss b/app/assets/stylesheets/hl/shCoreFadeToGrey.scss deleted file mode 100644 index 6101eba51..000000000 --- a/app/assets/stylesheets/hl/shCoreFadeToGrey.scss +++ /dev/null @@ -1,328 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #121212 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #121212 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #121212 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #2c2c29 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: white !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #3185b9 !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #3185b9 !important; - color: #121212 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #3185b9 !important; - background: black !important; - border: 1px solid #3185b9 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #3185b9 !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #d01d33 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #3185b9 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #96daff !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: white !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #696854 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #e3e658 !important; -} -.syntaxhighlighter .keyword { - color: #d01d33 !important; -} -.syntaxhighlighter .preprocessor { - color: #435a5f !important; -} -.syntaxhighlighter .variable { - color: #898989 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #aaaaaa !important; -} -.syntaxhighlighter .constants { - color: #96daff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #d01d33 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #ffc074 !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #4a8cdb !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #96daff !important; -} - -.syntaxhighlighter .functions { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shCoreMDUltra.scss b/app/assets/stylesheets/hl/shCoreMDUltra.scss deleted file mode 100644 index 2923ce736..000000000 --- a/app/assets/stylesheets/hl/shCoreMDUltra.scss +++ /dev/null @@ -1,324 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #222222 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #222222 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #222222 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #253e5a !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: lime !important; -} -.syntaxhighlighter .gutter { - color: #38566f !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #222222 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #428bdd !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #428bdd !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: lime !important; -} -.syntaxhighlighter .toolbar { - color: #aaaaff !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #aaaaff !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #9ccff4 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: lime !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #428bdd !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: lime !important; -} -.syntaxhighlighter .keyword { - color: #aaaaff !important; -} -.syntaxhighlighter .preprocessor { - color: #8aa6c1 !important; -} -.syntaxhighlighter .variable { - color: aqua !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ff8000 !important; -} -.syntaxhighlighter .constants { - color: yellow !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #aaaaff !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: red !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: yellow !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shCoreMidnight.scss b/app/assets/stylesheets/hl/shCoreMidnight.scss deleted file mode 100644 index e3733eed5..000000000 --- a/app/assets/stylesheets/hl/shCoreMidnight.scss +++ /dev/null @@ -1,324 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #253e5a !important; -} -.syntaxhighlighter .line.highlighted.number { - color: #38566f !important; -} -.syntaxhighlighter table caption { - color: #d1edff !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #0f192a !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #428bdd !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #428bdd !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #1dc116 !important; -} -.syntaxhighlighter .toolbar { - color: #d1edff !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #d1edff !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #8aa6c1 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #d1edff !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #428bdd !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #1dc116 !important; -} -.syntaxhighlighter .keyword { - color: #b43d3d !important; -} -.syntaxhighlighter .preprocessor { - color: #8aa6c1 !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #b43d3d !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #f8bb00 !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: white !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shCoreRDark.scss b/app/assets/stylesheets/hl/shCoreRDark.scss deleted file mode 100644 index d09368384..000000000 --- a/app/assets/stylesheets/hl/shCoreRDark.scss +++ /dev/null @@ -1,324 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter a, -.syntaxhighlighter div, -.syntaxhighlighter code, -.syntaxhighlighter table, -.syntaxhighlighter table td, -.syntaxhighlighter table tr, -.syntaxhighlighter table tbody, -.syntaxhighlighter table thead, -.syntaxhighlighter table caption, -.syntaxhighlighter textarea { - -moz-border-radius: 0 0 0 0 !important; - -webkit-border-radius: 0 0 0 0 !important; - background: none !important; - border: 0 !important; - bottom: auto !important; - float: none !important; - height: auto !important; - left: auto !important; - line-height: 1.1em !important; - margin: 0 !important; - outline: 0 !important; - overflow: visible !important; - padding: 0 !important; - position: static !important; - right: auto !important; - text-align: left !important; - top: auto !important; - vertical-align: baseline !important; - width: auto !important; - box-sizing: content-box !important; - font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; - font-weight: normal !important; - font-style: normal !important; - font-size: 1em !important; - min-height: inherit !important; - min-height: auto !important; -} - -.syntaxhighlighter { - width: 100% !important; - margin: 1em 0 1em 0 !important; - position: relative !important; - overflow: auto !important; - font-size: 1em !important; -} -.syntaxhighlighter.source { - overflow: hidden !important; -} -.syntaxhighlighter .bold { - font-weight: bold !important; -} -.syntaxhighlighter .italic { - font-style: italic !important; -} -.syntaxhighlighter .line { - white-space: pre !important; -} -.syntaxhighlighter table { - width: 100% !important; -} -.syntaxhighlighter table caption { - text-align: left !important; - padding: .5em 0 0.5em 1em !important; -} -.syntaxhighlighter table td.code { - width: 100% !important; -} -.syntaxhighlighter table td.code .container { - position: relative !important; -} -.syntaxhighlighter table td.code .container textarea { - box-sizing: border-box !important; - position: absolute !important; - left: 0 !important; - top: 0 !important; - width: 100% !important; - height: 100% !important; - border: none !important; - background: white !important; - padding-left: 1em !important; - overflow: hidden !important; - white-space: pre !important; -} -.syntaxhighlighter table td.gutter .line { - text-align: right !important; - padding: 0 0.5em 0 1em !important; -} -.syntaxhighlighter table td.code .line { - padding: 0 1em !important; -} -.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line { - padding-left: 0em !important; -} -.syntaxhighlighter.show { - display: block !important; -} -.syntaxhighlighter.collapsed table { - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar { - padding: 0.1em 0.8em 0em 0.8em !important; - font-size: 1em !important; - position: static !important; - width: auto !important; - height: auto !important; -} -.syntaxhighlighter.collapsed .toolbar span { - display: inline !important; - margin-right: 1em !important; -} -.syntaxhighlighter.collapsed .toolbar span a { - padding: 0 !important; - display: none !important; -} -.syntaxhighlighter.collapsed .toolbar span a.expandSource { - display: inline !important; -} -.syntaxhighlighter .toolbar { - position: absolute !important; - right: 1px !important; - top: 1px !important; - width: 11px !important; - height: 11px !important; - font-size: 10px !important; - z-index: 10 !important; -} -.syntaxhighlighter .toolbar span.title { - display: inline !important; -} -.syntaxhighlighter .toolbar a { - display: block !important; - text-align: center !important; - text-decoration: none !important; - padding-top: 1px !important; -} -.syntaxhighlighter .toolbar a.expandSource { - display: none !important; -} -.syntaxhighlighter.ie { - font-size: .9em !important; - padding: 1px 0 1px 0 !important; -} -.syntaxhighlighter.ie .toolbar { - line-height: 8px !important; -} -.syntaxhighlighter.ie .toolbar a { - padding-top: 0px !important; -} -.syntaxhighlighter.printing .line.alt1 .content, -.syntaxhighlighter.printing .line.alt2 .content, -.syntaxhighlighter.printing .line.highlighted .number, -.syntaxhighlighter.printing .line.highlighted.alt1 .content, -.syntaxhighlighter.printing .line.highlighted.alt2 .content { - background: none !important; -} -.syntaxhighlighter.printing .line .number { - color: #bbbbbb !important; -} -.syntaxhighlighter.printing .line .content { - color: black !important; -} -.syntaxhighlighter.printing .toolbar { - display: none !important; -} -.syntaxhighlighter.printing a { - text-decoration: none !important; -} -.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a { - color: black !important; -} -.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a { - color: #008200 !important; -} -.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a { - color: blue !important; -} -.syntaxhighlighter.printing .keyword { - color: #006699 !important; - font-weight: bold !important; -} -.syntaxhighlighter.printing .preprocessor { - color: gray !important; -} -.syntaxhighlighter.printing .variable { - color: #aa7700 !important; -} -.syntaxhighlighter.printing .value { - color: #009900 !important; -} -.syntaxhighlighter.printing .functions { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .constants { - color: #0066cc !important; -} -.syntaxhighlighter.printing .script { - font-weight: bold !important; -} -.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a { - color: gray !important; -} -.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a { - color: red !important; -} -.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a { - color: black !important; -} - -.syntaxhighlighter { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #323e41 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: #b9bdb6 !important; -} -.syntaxhighlighter table caption { - color: #b9bdb6 !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #1b2426 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #5ba1cf !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #5ba1cf !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #5ce638 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #e0e8ff !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #b9bdb6 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #878a85 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #5ce638 !important; -} -.syntaxhighlighter .keyword { - color: #5ba1cf !important; -} -.syntaxhighlighter .preprocessor { - color: #435a5f !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #5ba1cf !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #e0e8ff !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: white !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shThemeDefault.scss b/app/assets/stylesheets/hl/shThemeDefault.scss deleted file mode 100644 index 136541172..000000000 --- a/app/assets/stylesheets/hl/shThemeDefault.scss +++ /dev/null @@ -1,117 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: white !important; -} -.syntaxhighlighter .line.alt1 { - background-color: white !important; -} -.syntaxhighlighter .line.alt2 { - background-color: white !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #e0e0e0 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: black !important; -} -.syntaxhighlighter table caption { - color: black !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #6ce26c !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #6ce26c !important; - color: white !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: blue !important; - background: white !important; - border: 1px solid #6ce26c !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: blue !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: red !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #6ce26c !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: black !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: black !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #008200 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: blue !important; -} -.syntaxhighlighter .keyword { - color: #006699 !important; -} -.syntaxhighlighter .preprocessor { - color: gray !important; -} -.syntaxhighlighter .variable { - color: #aa7700 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ff1493 !important; -} -.syntaxhighlighter .constants { - color: #0066cc !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #006699 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: gray !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: red !important; -} - -.syntaxhighlighter .keyword { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shThemeDjango.scss b/app/assets/stylesheets/hl/shThemeDjango.scss deleted file mode 100644 index d8b431343..000000000 --- a/app/assets/stylesheets/hl/shThemeDjango.scss +++ /dev/null @@ -1,120 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #0a2b1d !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #233729 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: #f8f8f8 !important; -} -.syntaxhighlighter .gutter { - color: #497958 !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #41a83e !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #41a83e !important; - color: #0a2b1d !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #96dd3b !important; - background: black !important; - border: 1px solid #41a83e !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #96dd3b !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: white !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #41a83e !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #ffe862 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #f8f8f8 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #336442 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #9df39f !important; -} -.syntaxhighlighter .keyword { - color: #96dd3b !important; -} -.syntaxhighlighter .preprocessor { - color: #91bb9e !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #96dd3b !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #eb939a !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #91bb9e !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #edef7d !important; -} - -.syntaxhighlighter .comments { - font-style: italic !important; -} -.syntaxhighlighter .keyword { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shThemeEclipse.scss b/app/assets/stylesheets/hl/shThemeEclipse.scss deleted file mode 100644 index c64e2b65b..000000000 --- a/app/assets/stylesheets/hl/shThemeEclipse.scss +++ /dev/null @@ -1,128 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: white !important; -} -.syntaxhighlighter .line.alt1 { - -} -.syntaxhighlighter .line.alt2 { - background-color: none !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #c3defe !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: black !important; -} -.syntaxhighlighter .gutter { - -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #ededed !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #d4d0c8 !important; - color: white !important; -} -.syntaxhighlighter.printing .line .content { - border: 3px solid #ededed !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #3f5fbf !important; - background: white !important; - border: 1px solid #d4d0c8 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #3f5fbf !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #aa7700 !important; -} -.syntaxhighlighter .toolbar { - color: #a0a0a0 !important; - background: #d4d0c8 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #a0a0a0 !important; -} -.syntaxhighlighter .toolbar a:hover { - color: red !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: black !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #3f5fbf !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #2a00ff !important; -} -.syntaxhighlighter .keyword { - color: #7f0055 !important; -} -.syntaxhighlighter .preprocessor { - color: #646464 !important; -} -.syntaxhighlighter .variable { - color: #aa7700 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ff1493 !important; -} -.syntaxhighlighter .constants { - color: #0066cc !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #7f0055 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: gray !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff1493 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: red !important; -} - -.syntaxhighlighter .keyword { - font-weight: bold !important; -} -.syntaxhighlighter .xml .keyword { - color: #3f7f7f !important; - font-weight: normal !important; -} -.syntaxhighlighter .xml .color1, .syntaxhighlighter .xml .color1 a { - color: #7f007f !important; -} -.syntaxhighlighter .xml .string { - font-style: italic !important; - color: #2a00ff !important; -} diff --git a/app/assets/stylesheets/hl/shThemeEmacs.scss b/app/assets/stylesheets/hl/shThemeEmacs.scss deleted file mode 100644 index dae5053fe..000000000 --- a/app/assets/stylesheets/hl/shThemeEmacs.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: black !important; -} -.syntaxhighlighter .line.alt1 { - background-color: black !important; -} -.syntaxhighlighter .line.alt2 { - background-color: black !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #2a3133 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: #d3d3d3 !important; -} -.syntaxhighlighter .gutter { - color: #d3d3d3 !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #990000 !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #990000 !important; - color: black !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #ebdb8d !important; - background: black !important; - border: 1px solid #990000 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #ebdb8d !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #ff7d27 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #990000 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #9ccff4 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #d3d3d3 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #ff7d27 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #ff9e7b !important; -} -.syntaxhighlighter .keyword { - color: aqua !important; -} -.syntaxhighlighter .preprocessor { - color: #aec4de !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #81cef9 !important; -} -.syntaxhighlighter .constants { - color: #ff9e7b !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: aqua !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #ebdb8d !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #ff7d27 !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #aec4de !important; -} diff --git a/app/assets/stylesheets/hl/shThemeFadeToGrey.scss b/app/assets/stylesheets/hl/shThemeFadeToGrey.scss deleted file mode 100644 index 8fbd871fb..000000000 --- a/app/assets/stylesheets/hl/shThemeFadeToGrey.scss +++ /dev/null @@ -1,117 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #121212 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #121212 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #121212 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #2c2c29 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: white !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #3185b9 !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #3185b9 !important; - color: #121212 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #3185b9 !important; - background: black !important; - border: 1px solid #3185b9 !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #3185b9 !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #d01d33 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #3185b9 !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #96daff !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: white !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #696854 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #e3e658 !important; -} -.syntaxhighlighter .keyword { - color: #d01d33 !important; -} -.syntaxhighlighter .preprocessor { - color: #435a5f !important; -} -.syntaxhighlighter .variable { - color: #898989 !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #aaaaaa !important; -} -.syntaxhighlighter .constants { - color: #96daff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #d01d33 !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #ffc074 !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: #4a8cdb !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #96daff !important; -} - -.syntaxhighlighter .functions { - font-weight: bold !important; -} diff --git a/app/assets/stylesheets/hl/shThemeMDUltra.scss b/app/assets/stylesheets/hl/shThemeMDUltra.scss deleted file mode 100644 index f4db39cd8..000000000 --- a/app/assets/stylesheets/hl/shThemeMDUltra.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #222222 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #222222 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #222222 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #253e5a !important; -} -.syntaxhighlighter .line.highlighted.number { - color: white !important; -} -.syntaxhighlighter table caption { - color: lime !important; -} -.syntaxhighlighter .gutter { - color: #38566f !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #222222 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #428bdd !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #428bdd !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: lime !important; -} -.syntaxhighlighter .toolbar { - color: #aaaaff !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #aaaaff !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #9ccff4 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: lime !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #428bdd !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: lime !important; -} -.syntaxhighlighter .keyword { - color: #aaaaff !important; -} -.syntaxhighlighter .preprocessor { - color: #8aa6c1 !important; -} -.syntaxhighlighter .variable { - color: aqua !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ff8000 !important; -} -.syntaxhighlighter .constants { - color: yellow !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #aaaaff !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: red !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: yellow !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shThemeMidnight.scss b/app/assets/stylesheets/hl/shThemeMidnight.scss deleted file mode 100644 index c49563cc9..000000000 --- a/app/assets/stylesheets/hl/shThemeMidnight.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #0f192a !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #253e5a !important; -} -.syntaxhighlighter .line.highlighted.number { - color: #38566f !important; -} -.syntaxhighlighter table caption { - color: #d1edff !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #0f192a !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #428bdd !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #428bdd !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #1dc116 !important; -} -.syntaxhighlighter .toolbar { - color: #d1edff !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: #d1edff !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #8aa6c1 !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #d1edff !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #428bdd !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #1dc116 !important; -} -.syntaxhighlighter .keyword { - color: #b43d3d !important; -} -.syntaxhighlighter .preprocessor { - color: #8aa6c1 !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #f7e741 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #b43d3d !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #f8bb00 !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: white !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/hl/shThemeRDark.scss b/app/assets/stylesheets/hl/shThemeRDark.scss deleted file mode 100644 index 6305a10e4..000000000 --- a/app/assets/stylesheets/hl/shThemeRDark.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -.syntaxhighlighter { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.alt1 { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.alt2 { - background-color: #1b2426 !important; -} -.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 { - background-color: #323e41 !important; -} -.syntaxhighlighter .line.highlighted.number { - color: #b9bdb6 !important; -} -.syntaxhighlighter table caption { - color: #b9bdb6 !important; -} -.syntaxhighlighter .gutter { - color: #afafaf !important; -} -.syntaxhighlighter .gutter .line { - border-right: 3px solid #435a5f !important; -} -.syntaxhighlighter .gutter .line.highlighted { - background-color: #435a5f !important; - color: #1b2426 !important; -} -.syntaxhighlighter.printing .line .content { - border: none !important; -} -.syntaxhighlighter.collapsed { - overflow: visible !important; -} -.syntaxhighlighter.collapsed .toolbar { - color: #5ba1cf !important; - background: black !important; - border: 1px solid #435a5f !important; -} -.syntaxhighlighter.collapsed .toolbar a { - color: #5ba1cf !important; -} -.syntaxhighlighter.collapsed .toolbar a:hover { - color: #5ce638 !important; -} -.syntaxhighlighter .toolbar { - color: white !important; - background: #435a5f !important; - border: none !important; -} -.syntaxhighlighter .toolbar a { - color: white !important; -} -.syntaxhighlighter .toolbar a:hover { - color: #e0e8ff !important; -} -.syntaxhighlighter .plain, .syntaxhighlighter .plain a { - color: #b9bdb6 !important; -} -.syntaxhighlighter .comments, .syntaxhighlighter .comments a { - color: #878a85 !important; -} -.syntaxhighlighter .string, .syntaxhighlighter .string a { - color: #5ce638 !important; -} -.syntaxhighlighter .keyword { - color: #5ba1cf !important; -} -.syntaxhighlighter .preprocessor { - color: #435a5f !important; -} -.syntaxhighlighter .variable { - color: #ffaa3e !important; -} -.syntaxhighlighter .value { - color: #009900 !important; -} -.syntaxhighlighter .functions { - color: #ffaa3e !important; -} -.syntaxhighlighter .constants { - color: #e0e8ff !important; -} -.syntaxhighlighter .script { - font-weight: bold !important; - color: #5ba1cf !important; - background-color: none !important; -} -.syntaxhighlighter .color1, .syntaxhighlighter .color1 a { - color: #e0e8ff !important; -} -.syntaxhighlighter .color2, .syntaxhighlighter .color2 a { - color: white !important; -} -.syntaxhighlighter .color3, .syntaxhighlighter .color3 a { - color: #ffaa3e !important; -} diff --git a/app/assets/stylesheets/reg_session.scss b/app/assets/stylesheets/reg_session.scss index 224481094..88ca94688 100644 --- a/app/assets/stylesheets/reg_session.scss +++ b/app/assets/stylesheets/reg_session.scss @@ -1,4 +1,4 @@ -@import "registration"; +@import "devise/registration"; nav { width: 96px; diff --git a/app/controllers/build_lists_controller.rb b/app/controllers/build_lists_controller.rb index 7b17c4899..fb4d7e1a2 100644 --- a/app/controllers/build_lists_controller.rb +++ b/app/controllers/build_lists_controller.rb @@ -1,7 +1,7 @@ # -*- encoding : utf-8 -*- class BuildListsController < ApplicationController CALLBACK_ACTIONS = [:publish_build, :status_build, :pre_build, :post_build, :circle_build, :new_bbdt] - NESTED_ACTIONS = [:index, :new, :create] + NESTED_ACTIONS = [:search, :index, :new, :create] before_filter :authenticate_user!, :except => CALLBACK_ACTIONS before_filter :authenticate_build_service!, :only => CALLBACK_ACTIONS @@ -13,23 +13,23 @@ class BuildListsController < ApplicationController load_and_authorize_resource :build_list, :through => :project, :only => NESTED_ACTIONS, :shallow => true load_and_authorize_resource :except => CALLBACK_ACTIONS.concat(NESTED_ACTIONS) - def index - if request.post? - new_params = {:filter => {}} - params[:filter].each do |k,v| - new_params[:filter][k] = v unless v.empty? - end - redirect_to build_lists_path(new_params) - else - @action_url = @project ? project_build_lists_path(@project) : build_lists_path - @filter = BuildList::Filter.new(@project, current_user, params[:filter] || {}) - @build_lists = @filter.find.recent.paginate :page => params[:page] + def search + new_params = {:filter => {}} + params[:filter].each do |k,v| + new_params[:filter][k] = v unless v.empty? + end + redirect_to @project ? project_build_lists_path(@project, new_params) : build_lists_path(new_params) + end - @build_server_status = begin - BuildServer.get_status - rescue Exception # Timeout::Error - {} - end + def index + @action_url = @project ? search_project_build_lists_path(@project) : search_build_lists_path + @filter = BuildList::Filter.new(@project, current_user, params[:filter] || {}) + @build_lists = @filter.find.recent.paginate :page => params[:page] + + @build_server_status = begin + BuildServer.get_status + rescue Exception # Timeout::Error + {} end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 5cd649a41..b3a9ca42a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -13,11 +13,13 @@ module ApplicationHelper def layout_class case when params[:controller] == 'issues' && params[:action] == 'new' - 'nopadding' - when params[:controller] == 'build_lists' - 'slim' - else + 'right nopadding' + when params[:controller] == 'build_lists' && params[:action] == 'index' + 'right slim' + when params[:controller] == 'build_lists' && ['new', 'create'].include?(params[:action]) nil + else + content_for?(:sidebar) ? 'right' : 'all' end end end diff --git a/app/models/ability.rb b/app/models/ability.rb index de9ac0f5c..eaf71d097 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -12,25 +12,27 @@ class Ability user ||= User.new # guest user (not logged in) @user = user - if user.admin? - can :manage, :all - cannot :destroy, Subscribe - cannot :create, Subscribe - cannot :create, RegisterRequest - cannot :approve, RegisterRequest, :approved => true - cannot :reject, RegisterRequest, :rejected => true - else - # Shared rights between guests and registered users - can :forbidden, Platform + # Shared rights between guests and registered users + can :forbidden, Platform + # TODO remove because auth callbacks skipped + can :auto_build, Project + can [:publish_build, :status_build, :pre_build, :post_build, :circle_build, :new_bbdt], BuildList - # TODO remove because auth callbacks skipped - can :auto_build, Project - can [:publish_build, :status_build, :pre_build, :post_build, :circle_build, :new_bbdt], BuildList + if user.guest? # Guest rights + can :create, User + can [:create, :show_message], RegisterRequest + else # Registered user rights + if user.admin? + can :manage, :all + cannot :destroy, Subscribe + cannot :create, Subscribe + cannot :create, RegisterRequest + cannot :approve, RegisterRequest, :approved => true + cannot :reject, RegisterRequest, :rejected => true + cannot [:owned, :related], BuildList + end - if user.guest? # Guest rights - can :create, User - can [:create, :show_message], RegisterRequest - else # Registered user rights + if user.user? can [:show, :autocomplete_user_uname], User can [:show, :update], Settings::Notifier, :user_id => user.id @@ -60,7 +62,7 @@ class Ability can [:read, :related], BuildList, :project => {:owner_type => 'User', :owner_id => user.id} can [:read, :related], BuildList, :project => {:owner_type => 'Group', :owner_id => user.group_ids} can(:read, BuildList, read_relations_for('build_lists', 'projects')) {|build_list| can? :read, build_list.project} - can(:create, BuildList) {|build_list| can? :write, build_list.project} + can(:create, BuildList) {|build_list| build_list.project.is_rpm && can?(:write, build_list.project)} can(:publish, BuildList) {|build_list| build_list.can_publish? && can?(:write, build_list.project)} can(:cancel, BuildList) {|build_list| build_list.can_cancel? && can?(:write, build_list.project)} @@ -84,7 +86,7 @@ class Ability can(:manage, Product, read_relations_for('products', 'platforms')) {|product| local_admin? product.platform} can(:create, ProductBuildList) {|pbl| pbl.product.can_build? and can?(:update, pbl.product)} can(:destroy, ProductBuildList) {|pbl| can?(:destroy, pbl.product)} - + can [:read, :platforms], Category can [:read, :create], PrivateUser, :platform => {:owner_type => 'User', :owner_id => user.id} @@ -105,19 +107,19 @@ class Ability cannot(:manage, Comment) {|comment| comment.commentable_type == 'Issue' && !comment.commentable.project.has_issues} # switch off issues cannot :manage, RegisterRequest end - end - # Shared cannot rights for all users (guests, registered, admin) - cannot :destroy, Platform, :platform_type => 'personal' - cannot :destroy, Repository, :platform => {:platform_type => 'personal'} - cannot :fork, Project, :owner_id => user.id, :owner_type => user.class.to_s - cannot :destroy, Issue + # Shared cannot rights for all users (registered, admin) + cannot :destroy, Platform, :platform_type => 'personal' + cannot :destroy, Repository, :platform => {:platform_type => 'personal'} + cannot :fork, Project, :owner_id => user.id, :owner_type => user.class.to_s + cannot :destroy, Issue - can :create, Subscribe do |subscribe| - !subscribe.subscribeable.subscribes.exists?(:user_id => user.id) - end - can :destroy, Subscribe do |subscribe| - subscribe.subscribeable.subscribes.exists?(:user_id => user.id) && user.id == subscribe.user_id + can :create, Subscribe do |subscribe| + !subscribe.subscribeable.subscribes.exists?(:user_id => user.id) + end + can :destroy, Subscribe do |subscribe| + subscribe.subscribeable.subscribes.exists?(:user_id => user.id) && user.id == subscribe.user_id + end end end diff --git a/app/models/build_list/filter.rb b/app/models/build_list/filter.rb index 2b21aec25..bc76ee73e 100644 --- a/app/models/build_list/filter.rb +++ b/app/models/build_list/filter.rb @@ -56,7 +56,7 @@ class BuildList::Filter :project_name => nil })) - @options[:ownership] = @options[:ownership].presence || 'index' + @options[:ownership] = @options[:ownership].presence || 'owned' @options[:status] = @options[:status].present? ? @options[:status].to_i : nil @options[:created_at_start] = build_date_from_params(:created_at_start, @options) @options[:created_at_end] = build_date_from_params(:created_at_end, @options) diff --git a/app/models/user.rb b/app/models/user.rb index 9a1b029e3..20906dc5c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -44,8 +44,12 @@ class User < ActiveRecord::Base role == 'admin' end + def user? + persisted? + end + def guest? - self.id.blank? # persisted? + new_record? end def fullname diff --git a/app/views/build_lists/_build_list.html.haml b/app/views/build_lists/_build_list.html.haml index 2af6a086e..d0d65fb58 100644 --- a/app/views/build_lists/_build_list.html.haml +++ b/app/views/build_lists/_build_list.html.haml @@ -4,6 +4,6 @@ %td= link_to build_list.project_version, "#" %td= link_to build_list.project.name, build_list.project %td= build_list.arch.name - %td= link_to build_list.user.fullname, build_list.user + %td= link_to build_list.user.try(:fullname), build_list.user %td= link_to image_tag('x.png', :class => 'delete-row', :id => "delete-row#{build_list_counter}"), cancel_build_list_path(build_list), :method => :put, :confirm => t('layout.confirm') if can?(:cancel, build_list) %td= build_list.notified_at \ No newline at end of file diff --git a/app/views/build_lists/_sidebar.html.haml b/app/views/build_lists/_filter.html.haml similarity index 100% rename from app/views/build_lists/_sidebar.html.haml rename to app/views/build_lists/_filter.html.haml diff --git a/app/views/build_lists/_include_repos.html.haml b/app/views/build_lists/_include_repos.html.haml index 55902b2f9..7d99581c1 100644 --- a/app/views/build_lists/_include_repos.html.haml +++ b/app/views/build_lists/_include_repos.html.haml @@ -1,3 +1,4 @@ - platform.repositories.each do |repo| - = check_box_tag "build_list[include_repos][]", repo.id, repo.name == 'main' || @project.repositories.map(&:id).include?(repo.id), :id => "include_repos_#{repo.id}" # (params[:build_list]||[]).fetch(:include_repos, []).include?(repo.id.to_s) - = label_tag "include_repos_#{repo.id}", repo.name \ No newline at end of file + .both + = check_box_tag "build_list[include_repos][]", repo.id, repo.name == 'main' || @project.repositories.map(&:id).include?(repo.id), :id => "include_repos_#{repo.id}" # (params[:build_list]||[]).fetch(:include_repos, []).include?(repo.id.to_s) + = label_tag "include_repos_#{repo.id}", repo.name \ No newline at end of file diff --git a/app/views/build_lists/_sub_menu.html.haml b/app/views/build_lists/_sub_menu.html.haml deleted file mode 100644 index 971b32575..000000000 --- a/app/views/build_lists/_sub_menu.html.haml +++ /dev/null @@ -1,6 +0,0 @@ -- content_for :sub_menu do - .left - %nav - %ul - %li= link_to t('layout.projects.list_header'), build_lists_path, :class => current_page?(:controller => 'build_lists') ? 'active' : nil - %li= link_to t('layout.products.list_header'), '#' \ No newline at end of file diff --git a/app/views/build_lists/_submenu.html.haml b/app/views/build_lists/_submenu.html.haml new file mode 100644 index 000000000..06ade1465 --- /dev/null +++ b/app/views/build_lists/_submenu.html.haml @@ -0,0 +1,7 @@ +- content_for :submenu do + - if content_for?(:sidebar) + .left + %nav + %ul + %li= link_to t('layout.projects.list_header'), build_lists_path, :class => (params[:controller] == 'build_lists' ? 'active' : nil) + %li= link_to t('layout.products.list_header'), '#' \ No newline at end of file diff --git a/app/views/build_lists/index.html.haml b/app/views/build_lists/index.html.haml index f1f807094..df42ed0ad 100644 --- a/app/views/build_lists/index.html.haml +++ b/app/views/build_lists/index.html.haml @@ -15,5 +15,7 @@ = will_paginate @build_lists -= render 'build_lists/sub_menu' -= render 'build_lists/sidebar' += link_to t('layout.build_lists.new_header'), new_project_build_list_path(@project), :class => 'button' if @project and can?(:create, @project => BuildList) + += render 'build_lists/filter' += render @project ? 'projects/submenu' : 'build_lists/submenu' diff --git a/app/views/build_lists/new.html.haml b/app/views/build_lists/new.html.haml index 0294c2b99..6d34bda9d 100644 --- a/app/views/build_lists/new.html.haml +++ b/app/views/build_lists/new.html.haml @@ -1,66 +1,37 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first=# link_to t("layout.projects.list"), platform_repository_path(@platform, @repository) + "#projects" - %li= link_to t("layout.projects.new"), new_project_path - %li= link_to t("layout.projects.show"), project_path(@project) - %li=# link_to "git-repo", project_repo_path(@platform, @repository, @project) - %li.active= link_to t("layout.projects.build"), new_project_build_list_path(@project) - - .content - %h2.title= t("layout.projects.new_build", :project_name => @project.name) - - .inner - = form_for [@project, @build_list], :html => { :class => :form, :method => :post } do |f| - .columns.wat-cf - .column.left - .group - = f.label :project_version, t("activerecord.attributes.build_list.project_version"), :class => :label - = f.select :project_version, @project.versions - - .group.base_platforms - = f.label :bpl, t("activerecord.attributes.build_list.bpl"), :class => :label - - Platform.main.each do |bpl| - = check_box_tag "bpls[]", bpl.id, (params[:bpls]||[]).include?(bpl.id.to_s), :class => 'build_bpl_ids', :id => "bpls_#{bpl.id}" - = label_tag "bpls_#{bpl.id}", bpl.name - %br - - .group - = f.label :update_type, t("activerecord.attributes.build_list.update_type"), :class => :label - = f.select :update_type, BuildList::UPDATE_TYPES - - .group - = f.check_box :build_requires - = f.label :build_requires, t("activerecord.attributes.build_list.build_requires") - - - .column.right - .group - = f.label :arches, t("activerecord.attributes.build_list.arch"), :class => :label - - Arch.recent.each do |arch| - = check_box_tag "arches[]", arch.id, (params[:arches]||[]).include?(arch.id.to_s), :id => "arches_#{arch.id}" - = label_tag "arches_#{arch.id}", arch.name - %br - - .group - = f.label :pl_id, t("activerecord.attributes.build_list.pl"), :class => :label - = f.select :pl_id, @project.repositories.collect{|r| ["#{r.platform.name}/#{r.name}", r.platform.id]} - - .group - = f.label :include_repos, t("activerecord.attributes.build_list.include_repos"), :class => :label - #include_repos - - .group - = f.check_box :auto_publish - = f.label :auto_publish, t("activerecord.attributes.build_list.auto_publish") - - .group.navform.wat-cf - %button.button{:type => "submit"} - = image_tag("choose.png", :alt => t("layout.projects.build_button")) - = t("layout.projects.build_button") - %span.text_button_padding= t("layout.or") - = link_to t("layout.cancel"), root_path, :class => "text_button_padding link_button" += form_for [@project, @build_list], :html => { :class => :form, :method => :post } do |f| + %section.left + %h3= t("activerecord.attributes.build_list.project_version") + .lineForm= f.select :project_version, @project.versions + %h3= t("activerecord.attributes.build_list.bpl") + .base_platforms + - Platform.main.each do |bpl| + .both + = check_box_tag "bpls[]", bpl.id, (params[:bpls]||[]).include?(bpl.id.to_s), :class => 'build_bpl_ids', :id => "bpls_#{bpl.id}" + = label_tag "bpls_#{bpl.id}", bpl.name + %h3= t("activerecord.attributes.build_list.update_type") + .lineForm= f.select :update_type, BuildList::UPDATE_TYPES + %h3= t("activerecord.attributes.build_list.preferences") + .both + = f.check_box :auto_publish + = f.label :auto_publish + .both + = f.check_box :build_requires + = f.label :build_requires + %br + = f.submit t("layout.projects.build_button") + %section.right + %h3= t("activerecord.attributes.build_list.arch") + - Arch.recent.each do |arch| + .both + = check_box_tag "arches[]", arch.id, (params[:arches]||[]).include?(arch.id.to_s), :id => "arches_#{arch.id}" + = label_tag "arches_#{arch.id}", arch.name + %h3= t("activerecord.attributes.build_list.pl") + .lineForm= f.select :pl_id, @project.repositories.collect{|r| ["#{r.platform.name}/#{r.name}", r.platform.id]} + %h3= t("activerecord.attributes.build_list.include_repos") + #include_repos .preloaded_include_repos{:style => 'display: none'} - @project.platforms.each do |p| %div{:class => "include_repos_#{p.id}"}= render 'include_repos', :platform => p + += render 'projects/submenu' diff --git a/app/views/build_lists/show.html.haml b/app/views/build_lists/show.html.haml index 1e4c8dd2d..36d7eaa50 100644 --- a/app/views/build_lists/show.html.haml +++ b/app/views/build_lists/show.html.haml @@ -1,121 +1,81 @@ -.block - .secondary-navigation - %ul.wat-cf - %li.first= link_to t("layout.build_lists.current"), project_path(@build_list.project) + "#build_lists" - %li= link_to t("layout.build_lists.all"), project_build_lists_path(@build_list.project) - %li.active= link_to t("layout.build_lists.show"), @build_list +%table.columns2.info + %tr + %td.first= t("activerecord.attributes.build_list.name") + %td= @build_list.present? ? @build_list.name : t("layout.build_lists.name_not_yet_defined") + %tr + %td= t("activerecord.attributes.build_list.bs_id") + %td= @build_list.bs_id + %tr + %td= t("activerecord.attributes.build_list.container_path") + %td + - if @build_list.status == BuildList::BUILD_PUBLISHED + = t("layout.build_lists.container_published") + - elsif @build_list.container_path.present? + - container_url = "http://#{request.host_with_port}/downloads#{@build_list.container_path}" + = link_to container_url, container_url + %tr + %td= t("activerecord.attributes.build_list.bpl") + %td= link_to @build_list.bpl.name, @build_list.bpl + %tr + %td= t("activerecord.attributes.build_list.pl") + %td= link_to @build_list.pl.name, @build_list.pl + %tr + %td= t("activerecord.attributes.build_list.include_repos") + %td= (@build_list.include_repos||[]).map{|r| Repository.find(r).name}.join(', ') + %tr + %td= t("activerecord.attributes.build_list.update_type") + %td= @build_list.update_type + %tr + %td= t("activerecord.attributes.build_list.build_requires") + %td= @build_list.build_requires + %tr + %td= t("activerecord.attributes.build_list.auto_publish") + %td= @build_list.auto_publish + %tr + %td= t("activerecord.attributes.build_list.status") + %td= @build_list.human_status + %tr + %td= t("activerecord.attributes.build_list.project_version") + %td= @build_list.project_version + %tr + %td= t("activerecord.attributes.build_list.project") + %td= link_to @build_list.project.name, project_path(@build_list.project) + %tr + %td= t("activerecord.attributes.build_list.arch") + %td= @build_list.arch.name + %tr + %td= t("activerecord.attributes.build_list.user") + %td= link_to @build_list.user.try(:fullname), @build_list.user + %tr + %td= t("activerecord.attributes.build_list.notified_at") + %td= @build_list.notified_at + %tr + %td= t("activerecord.attributes.build_list.is_circle") + %td= t("layout.#{@build_list.is_circle?}_") - .content - .inner - %p - %b - = t("activerecord.attributes.build_list.name") - \: - = @build_list.present? ? @build_list.name : t("layout.build_lists.name_not_yet_defined") - %p - %b - = t("activerecord.attributes.build_list.bs_id") - \: - = @build_list.bs_id - %p - %b - = t("activerecord.attributes.build_list.container_path") - \: - - if @build_list.status == BuildList::BUILD_PUBLISHED - = t("layout.build_lists.container_published") - - elsif @build_list.container_path.present? - - container_url = "http://#{request.host_with_port}/downloads#{@build_list.container_path}" - = link_to container_url, container_url - %p - %b - = t("activerecord.attributes.build_list.bpl") - \: - = @build_list.bpl.name - %p - %b - = t("activerecord.attributes.build_list.pl") - \: - = @build_list.pl.name - %p - %b - = t("activerecord.attributes.build_list.include_repos") - \: - = (@build_list.include_repos||[]).map{|r| Repository.find(r).name}.join(', ') - %p - %b - = t("activerecord.attributes.build_list.update_type") - \: - = @build_list.update_type - %p - %b - = t("activerecord.attributes.build_list.build_requires") - \: - = @build_list.build_requires - %p - %b - = t("activerecord.attributes.build_list.auto_publish") - \: - = @build_list.auto_publish - %p - %b - = t("activerecord.attributes.build_list.status") - \: - = @build_list.human_status - %p - %b - = t("activerecord.attributes.build_list.project_version") - \: - = @build_list.project_version - %p - %b - = t("activerecord.attributes.build_list.project") - \: - = link_to @build_list.project.name, project_path(@build_list.project) - %p - %b - = t("activerecord.attributes.build_list.arch") - \: - = @build_list.arch.name - %p - %b - = t("activerecord.attributes.build_list.user") - \: - = @build_list.user.try(:fullname) - %p - %b - = t("activerecord.attributes.build_list.notified_at") - \: - = @build_list.notified_at - %p - %b - = t("activerecord.attributes.build_list.is_circle") - \: - = t("layout.#{@build_list.is_circle?}_") +%br +%br - - if @build_list.can_publish? - .wat-cf - = link_to image_tag("choose.png", :alt => t("layout.publish")) + " " + t("layout.publish"), publish_build_list_path(@build_list), :method => "put", :class => "button", :confirm => t("layout.confirm") += link_to t("layout.publish"), publish_build_list_path(@build_list), :method => "put", :confirm => t("layout.confirm"), :class => "button" if can? :publish, @build_list -.block - .content - %h2= t("layout.build_lists.items_header") - - .inner - - if @item_groups.blank? - = t("layout.build_lists.no_items_data") - - - @item_groups.each_with_index do |group, level| - %h3.title Level ##{level} - %table.table - %tr - %th.first= t("activerecord.attributes.build_list/item.name") - %th= t("activerecord.attributes.build_list/item.version") - %th.last= t("activerecord.attributes.build_list/item.status") +%br +%br - - group.each do |item| - %tr{:class => cycle("odd", "even")} - %td= item.name - %td= item.version - %td.last= item.human_status +%h2= t("layout.build_lists.items_header") += t("layout.build_lists.no_items_data") if @item_groups.blank? -- content_for :sidebar, render('sidebar', :project => @build_list.project) +- @item_groups.each_with_index do |group, level| + %h3.title Level ##{level} + %table.columns3.info + %tr + %th.first= t("activerecord.attributes.build_list/item.name") + %th= t("activerecord.attributes.build_list/item.version") + %th.last= t("activerecord.attributes.build_list/item.status") + + - group.each do |item| + %tr{:class => cycle("odd", "even")} + %td= item.name + %td= item.version + %td= item.human_status + += render 'build_lists/submenu' diff --git a/app/views/git/repositories/_show.html.haml b/app/views/git/repositories/_show.html.haml index 71e68ff29..11a1e92f4 100644 --- a/app/views/git/repositories/_show.html.haml +++ b/app/views/git/repositories/_show.html.haml @@ -15,8 +15,7 @@ - if @path.present? %tr %td - .pic - %img{:src => "/assets/folder.png"}/ + .pic= image_tag 'folder.png' .name = link_to "..", tree_path(@project, @treeish, File.join([@path.dup.encode_to_default, ".."].compact).encode_to_default) %td==   @@ -27,13 +26,11 @@ %td - entry_path = File.join([@path.present? ? @path : nil, entry.name].compact).encode_to_default - if entry.is_a? Grit::Blob - .pic - %img{:src => "/assets/code.png"}/ + .pic= image_tag 'code.png' .name = link_to(entry.name, blob_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default - else - .pic - %img{:src => "/assets/folder.png"}/ + .pic= image_tag 'folder.png' .name = link_to(entry.name, tree_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default %td diff --git a/app/views/issues/_issue.html.haml b/app/views/issues/_issue.html.haml index 46a940249..61d1d7a46 100644 --- a/app/views/issues/_issue.html.haml +++ b/app/views/issues/_issue.html.haml @@ -18,7 +18,6 @@ =link_to image_tag(issue.user.avatar(22), :alt => 'avatar'), user_path(issue.user) if issue.user %a{:href => "#{project_issue_path @project, issue}#block-list"} .answers - .pic - %img{:alt => '', :src => "/assets/answers.png"} + .pic= image_tag 'answers.png' .count=issue.comments.count .both \ No newline at end of file diff --git a/app/views/issues/_labels.html.haml b/app/views/issues/_labels.html.haml index 93883a370..e9e518be9 100644 --- a/app/views/issues/_labels.html.haml +++ b/app/views/issues/_labels.html.haml @@ -21,8 +21,7 @@ .labeltext.edit{:style => "background: ##{label.color};"} .text=link_to(label.name, project_issues_update_label_path(@project, label.id), :class => 'edit_label') .delete{:id => "delete#{index}"} - %a{:href => project_issues_delete_label_path(@project, label.id), :class => 'delete_label'} - %img{:alt => "x", :src => "/assets/x-label.png"} + %a{:href => project_issues_delete_label_path(@project, label.id), :class => 'delete_label'}= image_tag 'x-label.png' .both .edit_label_form{:style => 'display:none'} =form_tag project_issues_update_label_path(@project, label.id), :id => 'update_label', :method => :post do diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index 6ad3dfea8..e1c8d2fcb 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -36,16 +36,14 @@ .a= link_to t('layout.logout'), destroy_user_session_path, :method => :delete .right .both - - if content_for?(:sub_menu) - .sub-menu= yield :sub_menu + - if content_for?(:submenu) + .sub-menu= yield :submenu .both = render "layouts/flashes" %article - if content_for?(:sidebar) %aside= yield :sidebar - .right{:class => layout_class}= yield - - else - .all= yield + %div{:class => layout_class}= yield .both %footer= render "layouts/menu/bottom" diff --git a/app/views/projects/_commit_info.html.haml b/app/views/projects/_commit_info.html.haml index 451f6aacc..61b96ece7 100644 --- a/app/views/projects/_commit_info.html.haml +++ b/app/views/projects/_commit_info.html.haml @@ -11,7 +11,7 @@ = presenter.caption - if presenter.expandable? and presenter.content? %span.data-expander.collapsed{:id => "expand#{item_no}"}   - -#%img#expand1.activity-full{:alt => "expand", :onclick => "showActivity(4)", :src => "/assets/expand-gray.png"}/ + / = image_tag 'expand-gray.png', :class => 'activity-full', :id => 'expand1', :onclick => "showActivity(4)" .both - if presenter.content? .fulltext{:class => presenter.expandable? ? "hidden" : '', diff --git a/app/views/projects/_repo_block.html.haml b/app/views/projects/_repo_block.html.haml index 45e8929d5..ff7f687a3 100644 --- a/app/views/projects/_repo_block.html.haml +++ b/app/views/projects/_repo_block.html.haml @@ -1,6 +1,5 @@ .description-top - .img - %img{:alt => "pic", :src => "/assets/code.png"}/ + .img= image_tag 'code.png' = text_field_tag :url, git_repo_url(project.git_repo_name), :class => 'name', :type => 'text',:spellcheck => 'false', :disabled => 'disabled' .role diff --git a/app/views/projects/_submenu.html.haml b/app/views/projects/_submenu.html.haml index 9f7576422..ba18837c0 100644 --- a/app/views/projects/_submenu.html.haml +++ b/app/views/projects/_submenu.html.haml @@ -1,17 +1,16 @@ -- content_for :sub_menu do - - act = action_name.to_sym - - contr = controller_name.to_sym - .left - = @project.name +- content_for :submenu do + - act = action_name.to_sym; contr = controller_name.to_sym + .left= @project.name %nav %ul - %li= link_to t("project_menu.project"), project_path(@project), {:class => (act.in?([:show, :edit]) && contr.in?([:trees, :blobs])) ? 'active' : ''} - %li= link_to t("project_menu.commits"), commits_path(@project), {:class => (act.in?([:index, :show]) && contr == :commits) ? 'active' : ''} - - if @project.is_rpm - %li= link_to t("project_menu.builds"), project_build_lists_path(@project), {:class => (act == :index && contr == :builds) ? 'active' : ''} + %li= link_to t("project_menu.project"), project_path(@project), :class => (act.in?([:show, :edit]) && contr.in?([:trees, :blobs]) ? 'active' : nil) + %li= link_to t("project_menu.commits"), commits_path(@project), :class => (act.in?([:index, :show]) && contr == :commits ? 'active' : nil) + - if @project.is_rpm and can?(:create, @project => BuildList) + %li= link_to t("project_menu.builds"), project_build_lists_path(@project), :class => (contr == :build_lists ? 'active' : nil) - if @project.has_issues - %li= link_to t("project_menu.tracker"), project_issues_path(@project), {:class => (act == :index && contr == :issues) ? 'active' : ''} + %li= link_to t("project_menu.tracker"), project_issues_path(@project), :class => (act == :index && contr == :issues ? 'active' : nil) - if @project.has_wiki - %li= link_to t("project_menu.wiki"), project_wiki_index_path(@project), {:class => contr == :wiki ? 'active' : ''} + %li= link_to t("project_menu.wiki"), project_wiki_index_path(@project), :class => (contr == :wiki ? 'active' : nil) %li= link_to t("project_menu.readme"), "#" #pending - %li= link_to t("project_menu.settings"), edit_project_path(@project), {:class => (act == :edit && contr == :projects) ? 'active' : ''} + - if can? :update, @project + %li= link_to t("project_menu.settings"), edit_project_path(@project), :class => (act == :edit && contr == :projects ? 'active' : nil) diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 952af2c56..e5c696f5f 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -32,8 +32,7 @@ - if @path.present? %tr %td - .pic - %img{:src => "/assets/folder.png"}/ + .pic= image_tag 'folder.png' .name = link_to "..", tree_path(@project, @treeish, File.join([@path.dup.encode_to_default, ".."].compact).encode_to_default) %td==   @@ -44,13 +43,11 @@ %td - entry_path = File.join([@path.present? ? @path : nil, entry.name].compact).encode_to_default - if entry.is_a? Grit::Blob - .pic - %img{:src => "/assets/code.png"}/ + .pic= image_tag 'code.png' .name = link_to(entry.name, blob_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default - else - .pic - %img{:src => "/assets/folder.png"}/ + .pic= image_tag 'folder.png' .name = link_to(entry.name, tree_path(@project, @treeish, entry_path), :class => 'files-see').encode_to_default %td diff --git a/config/application.rb b/config/application.rb index 5e1c3504d..6a537ab65 100644 --- a/config/application.rb +++ b/config/application.rb @@ -55,5 +55,8 @@ module Rosa # Version of your assets, change this if you want to expire all your assets config.assets.version = '1.0' + + # Compass + config.sass.load_paths << Compass::Frameworks['compass'].stylesheets_directory if config.respond_to?(:sass) end end diff --git a/config/locales/build_list.en.yml b/config/locales/build_list.en.yml index b01f646ac..517cc53d5 100644 --- a/config/locales/build_list.en.yml +++ b/config/locales/build_list.en.yml @@ -28,6 +28,7 @@ en: auto_publish: Automated publising project_version: Version user: User + preferences: Preferences build_list/item: name: Name @@ -56,6 +57,7 @@ en: publish_fail: 'Errors on publish queue!' container_published: 'Container in a repository' action: Action + new_header: New build ownership: header: Build list ownership diff --git a/config/locales/build_list.ru.yml b/config/locales/build_list.ru.yml index 6d34d3ac9..531448717 100644 --- a/config/locales/build_list.ru.yml +++ b/config/locales/build_list.ru.yml @@ -28,6 +28,7 @@ ru: auto_publish: Автоматическая публикация project_version: Версия user: Пользователь + preferences: Настройки build_list/item: name: Название @@ -56,6 +57,7 @@ ru: publish_fail: 'При публикации сборки произошла ошибка!' container_published: 'Контейнер размещен в репозитории' action: Действие + new_header: Новая сборка ownership: header: Принадлежность заданий diff --git a/config/routes.rb b/config/routes.rb index de1927e23..6404cd8e9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -50,10 +50,9 @@ Rosa::Application.routes.draw do put :cancel put :publish end + collection { post :search } end - post 'build_lists' => 'build_lists#index', :as => 'build_lists' - resources :auto_build_lists, :only => [:index, :create, :destroy] resources :personal_repositories, :only => [:show] do @@ -131,7 +130,9 @@ Rosa::Application.routes.draw do 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] + resources :build_lists, :only => [:index, :new, :create] do + collection { post :search } + end resources :collaborators, :only => [:index, :edit, :update, :add] do collection do diff --git a/db/schema.rb b/db/schema.rb index f24cfaefc..20af53ccd 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -276,11 +276,11 @@ ActiveRecord::Schema.define(:version => 20120229182356) 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 @@ -301,6 +301,7 @@ ActiveRecord::Schema.define(:version => 20120229182356) 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" @@ -360,7 +361,6 @@ ActiveRecord::Schema.define(:version => 20120229182356) 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" @@ -368,6 +368,7 @@ ActiveRecord::Schema.define(:version => 20120229182356) 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 end diff --git a/spec/controllers/build_lists_controller_spec.rb b/spec/controllers/build_lists_controller_spec.rb index fc4a3b134..fced83574 100644 --- a/spec/controllers/build_lists_controller_spec.rb +++ b/spec/controllers/build_lists_controller_spec.rb @@ -118,7 +118,7 @@ describe BuildListsController do end it 'should show only accessible build_lists' do - get :index + get :index, :filter => {:ownership => 'index'} assigns(:build_lists).should include(@build_list1) assigns(:build_lists).should_not include(@build_list2) assigns(:build_lists).should include(@build_list3) @@ -203,7 +203,7 @@ describe BuildListsController do end it 'should show only accessible build_lists' do - get :index + get :index, :filter => {:ownership => 'index'} assigns(:build_lists).should include(@build_list1) assigns(:build_lists).should_not include(@build_list2) assigns(:build_lists).should include(@build_list3) @@ -290,14 +290,14 @@ describe BuildListsController do it 'should filter by project_name' do # Project.where(:id => build_list2.project.id).update_all(:name => 'project_name') - get :index, :filter => {:project_name => @build_list2.project.name} + get :index, :filter => {:project_name => @build_list2.project.name, :ownership => 'index'} assigns[:build_lists].should_not include(@build_list1) assigns[:build_lists].should include(@build_list2) assigns[:build_lists].should_not include(@build_list3) end it 'should filter by project_name and start_date' do - get :index, :filter => {:project_name => @build_list3.project.name, + get :index, :filter => {:project_name => @build_list3.project.name, :ownership => 'index', "created_at_start(1i)" => @build_list3.created_at.year.to_s, "created_at_start(2i)" => @build_list3.created_at.month.to_s, "created_at_start(3i)" => @build_list3.created_at.day.to_s} diff --git a/vendor/assets/stylesheets/vendor.scss b/vendor/assets/stylesheets/vendor.scss index 9f8506b2e..20df69199 100644 --- a/vendor/assets/stylesheets/vendor.scss +++ b/vendor/assets/stylesheets/vendor.scss @@ -1,13 +1,3 @@ -/* -*= require hl/shCore -*= require hl/shCoreEclipse -*= require hl/shThemeEclipse - -*= require codemirror -*= require codemirror/themes/night -*/ - - @import "tablesorter"; @import "cusel"; @import "jquery.dataTables"; @@ -17,10 +7,5 @@ //@import "gollum/template"; @import "gollum/editor"; -@import "hl/shCore"; -@import "hl/shCoreEclipse"; -@import "hl/shThemeEclipse"; - @import "codemirror"; @import "codemirror/themes/eclipse"; -@import "git/style"; From 790ea38ba66f6a8b82783af1481c3c564ac5d192 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 00:35:18 +0600 Subject: [PATCH 75/87] [refs 194] fix comments --- app/presenters/comment_presenter.rb | 1 + app/views/comments/_add.html.haml | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/presenters/comment_presenter.rb b/app/presenters/comment_presenter.rb index d4a01e144..9200d774d 100644 --- a/app/presenters/comment_presenter.rb +++ b/app/presenters/comment_presenter.rb @@ -49,6 +49,7 @@ class CommentPresenter < ApplicationPresenter res << link_to(t("layout.delete"), dp, :method => "delete", :confirm => t("layout.comments.confirm_delete")).html_safe end + res end def header diff --git a/app/views/comments/_add.html.haml b/app/views/comments/_add.html.haml index f527eb041..efc5436a2 100644 --- a/app/views/comments/_add.html.haml +++ b/app/views/comments/_add.html.haml @@ -1,20 +1,27 @@ #open-comment.comment.view %h3.tmargin0= t("layout.comments.new_header") - - new_path = project_issue_comments_path(project, commentable) if commentable.class == Issue - - new_path = project_commit_comments_path(project, commentable) if commentable.class == Grit::Commit + - if commentable.class == Issue + - new_path = project_issue_comments_path(project, commentable) + - is_subscribed = commentable.subscribes.exists?(:user_id => current_user.id) + - subscribe_path = is_subscribed ? project_issue_subscribe_path(project, commentable, current_user.id) : project_issue_subscribes_path(project, commentable) + - else commentable.class == Grit::Commit + - new_path = project_commit_comments_path(project, commentable) + - is_subscribed = Subscribe.subscribed_to_commit?(project, current_user, commentable) + - subscribe_path = is_subscribed ? unsubscribe_commit_path(project, commentable) : subscribe_commit_path(project, commentable) + = form_for :comment, :url => new_path, :method => :post, :html => { :class => :form } do |f| = render :partial => "comments/form", :locals => {:f => f} .comment-left = t("layout.comments.notifications_are") %span.bold - - if Subscribe.subscribed_to_commit?(@project, current_user, @commit) + - if is_subscribed = t("layout.turned_on")\ - else = t("layout.turned_off")\ \. - - if Subscribe.subscribed_to_commit?(@project, current_user, @commit) - = link_to t('layout.commits.unsubscribe_btn'), unsubscribe_commit_path(@project, @commit), :method => :delete + - if is_subscribed + = link_to t('layout.commits.unsubscribe_btn'), subscribe_path, :method => :delete - else - = link_to t('layout.commits.subscribe_btn'), subscribe_commit_path(@project, @commit), :method => :post + = link_to t('layout.commits.subscribe_btn'), subscribe_path, :method => :post .both From 3aae663811949c06607f7847d37e042703d657d3 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 00:56:24 +0600 Subject: [PATCH 76/87] [refs #194] add comments to issues --- app/views/comments/edit.html.haml | 4 ++-- app/views/issues/show.html.haml | 7 +++++-- config/locales/layout/comments.en.yml | 1 + config/locales/layout/comments.ru.yml | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/views/comments/edit.html.haml b/app/views/comments/edit.html.haml index eb586af80..feded5cb2 100644 --- a/app/views/comments/edit.html.haml +++ b/app/views/comments/edit.html.haml @@ -1,10 +1,10 @@ .block .secondary-navigation %ul.wat-cf - %li.first= link_to t(@comment.commentable_type == 'Grit::Commit' ? "layout.git.repositories.commits" : "layout.issues.list"), @commentable_path + %li.first= link_to t("layout.comments.back"), @commentable_path .content %h2.title - = t("layout.#{@comment.commentable_type == 'Grit::Commit' ? 'comments' : 'issues'}.edit_header") + = t("layout.comments.edit_header") .inner = form_for @comment, :url => @update_url, :html => { :class => :form } do |f| = render :partial => "form", :locals => {:f => f} diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index d50d14417..4904dc0eb 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -26,6 +26,9 @@ .both =f.submit t('layout.update'), :id => 'update_issue_content' =link_to t('layout.issues.cancel_button'), '#', :id => 'cancel_edit_issue_content', :class => 'button' -.hr - + %br +%br =render :partial => 'issues/status' + += render :partial => "comments/list", :locals => {:list => @issue.comments, :project => @project, :commentable => @issue} += render :partial => "comments/add", :locals => {:project => @project, :commentable => @issue} \ No newline at end of file diff --git a/config/locales/layout/comments.en.yml b/config/locales/layout/comments.en.yml index 19fd7c6ea..b309be256 100644 --- a/config/locales/layout/comments.en.yml +++ b/config/locales/layout/comments.en.yml @@ -4,3 +4,4 @@ en: has_commented: "adds a note" notifications_are: "Notifications for new comments are" comments_header: "Comments" + back: 'Back' diff --git a/config/locales/layout/comments.ru.yml b/config/locales/layout/comments.ru.yml index 0d680c2b2..4a8723d17 100644 --- a/config/locales/layout/comments.ru.yml +++ b/config/locales/layout/comments.ru.yml @@ -4,3 +4,4 @@ ru: has_commented: "оставил комментарий" notifications_are: "Уведомления о последующих комментариях" comments_header: "Комментарии" + back: 'Назад' From c30cd83c33207d81b195f1eb46e55ad6e83cbbb2 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 01:10:12 +0600 Subject: [PATCH 77/87] [refs #194] add default scope for comments --- app/models/comment.rb | 2 ++ app/models/project.rb | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 4dbb8f3b6..1e5f22530 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -6,6 +6,8 @@ class Comment < ActiveRecord::Base validates :body, :user_id, :commentable_id, :commentable_type, :presence => true + default_scope order('created_at') + after_create :invoke_helper, :if => "commentable_type == 'Grit::Commit'" after_create :subscribe_users after_create {|c| Subscribe.new_comment_notification(c)} diff --git a/app/models/project.rb b/app/models/project.rb index fe8c8d68d..a77dada77 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -193,7 +193,7 @@ class Project < ActiveRecord::Base class << self def commit_comments(commit, project) - comments = Comment.where(:commentable_id => commit.id.hex, :commentable_type => 'Grit::Commit').order(:created_at) + comments = Comment.where(:commentable_id => commit.id.hex, :commentable_type => 'Grit::Commit') comments.each {|x| x.project = project; x.helper} end end From de177f1d03d3e89de02a3b6b121be590fcd9898f Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 01:11:21 +0600 Subject: [PATCH 78/87] [refs #194] add space between list and create form --- app/views/issues/show.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/issues/show.html.haml b/app/views/issues/show.html.haml index 4904dc0eb..76c74fdb2 100644 --- a/app/views/issues/show.html.haml +++ b/app/views/issues/show.html.haml @@ -26,9 +26,9 @@ .both =f.submit t('layout.update'), :id => 'update_issue_content' =link_to t('layout.issues.cancel_button'), '#', :id => 'cancel_edit_issue_content', :class => 'button' - %br %br =render :partial => 'issues/status' = render :partial => "comments/list", :locals => {:list => @issue.comments, :project => @project, :commentable => @issue} +%br = render :partial => "comments/add", :locals => {:project => @project, :commentable => @issue} \ No newline at end of file From d7dbe79357ba7dbc9b16f666db18df2f373eae25 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 22:05:00 +0600 Subject: [PATCH 79/87] [refs #230] edit password page --- .../stylesheets/devise/registration.scss | 4 -- app/assets/stylesheets/reg_session.scss | 10 +++- app/views/devise/passwords/edit.html.haml | 50 ++++++++++--------- app/views/layouts/sessions.html.haml | 2 +- config/locales/devise.en.yml | 1 + config/locales/devise.ru.yml | 1 + config/locales/en.yml | 9 ---- config/locales/pluralization.en.yml | 10 ++++ config/locales/pluralization.ru.yml | 14 ++++++ config/locales/ru.yml | 13 ----- 10 files changed, 62 insertions(+), 52 deletions(-) diff --git a/app/assets/stylesheets/devise/registration.scss b/app/assets/stylesheets/devise/registration.scss index a7834dadc..098b9021b 100644 --- a/app/assets/stylesheets/devise/registration.scss +++ b/app/assets/stylesheets/devise/registration.scss @@ -221,7 +221,3 @@ div.error { &.password { margin-top: -101px; margin-left: 650px; } } - -div.error.forgot { - margin-top: 8px; - margin-left: 308px; } diff --git a/app/assets/stylesheets/reg_session.scss b/app/assets/stylesheets/reg_session.scss index 88ca94688..025ea5b34 100644 --- a/app/assets/stylesheets/reg_session.scss +++ b/app/assets/stylesheets/reg_session.scss @@ -12,4 +12,12 @@ nav { margin: 0; padding: 0; padding-top: 10px; - text-decoration: none;} } \ No newline at end of file + text-decoration: none;} } + +div.error.forgot { + margin-top: 8px; + margin-left: 308px; } + +div.error.reset { + margin-top: -141px; + margin-left: 645px; } diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index 267e855bf..0eff4ec82 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -1,28 +1,30 @@ -.block - %h2= title t('devise.passwords.edit') - .content - - if resource.errors.present? - .flash - .message.error - - messages = resource.errors.full_messages.map { |msg| content_tag(:p, msg) }.join.html_safe - = messages +.wrap + %nav + %a{:href => new_register_request_path} + %p=t("layout.devise.shared_links.sign_up") + / Top block + %header + .logo + / Page + %article + %br + %h1= title t('devise.passwords.edit') + %br + .content + - is_error = resource.errors.present? = form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put, :class => "form" }) do |f| = f.hidden_field :reset_password_token - .group.wat-cf - .left - = f.label :password, :class => "label" - .right - = f.text_field :password, :class => "text_field" - .group.wat-cf - .left - = f.label :password_confirmation, :class => "label" - .right - = f.text_field :password_confirmation, :class => "text_field" + .left.first=t('activerecord.attributes.user.password') + .right.first + = f.text_field :password, :id => 'pass', :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" + .both + .left=t('activerecord.attributes.user.password_confirm') + .right + = f.text_field :password_confirmation, :id => 'pass2', :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + .both + %br + =f.submit t("devise.passwords.edit_button"), :class => 'button', :id => 'btnLogin' - .group.navform.wat-cf - %button.button{:tyle => "submit"} - = image_tag("code.png", :alt => t("devise.passwords.edit_button")) - = t("devise.passwords.edit_button") - %span.text_button_padding - = render :partial => "devise/shared/links" + #hint.error.reset{:style => is_error ? 'display: block;' : ''} + %p=resource.errors.full_messages.first \ No newline at end of file diff --git a/app/views/layouts/sessions.html.haml b/app/views/layouts/sessions.html.haml index 7593d1b50..6bf94f40e 100644 --- a/app/views/layouts/sessions.html.haml +++ b/app/views/layouts/sessions.html.haml @@ -6,7 +6,7 @@ - if controller_name == 'sessions' && action_name == 'new' = stylesheet_link_tag "login" = javascript_include_tag "login" - - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create'].include?(action_name) + - elsif ['registrations', 'passwords'].include?(controller_name) && ['new', 'create', 'edit', 'update'].include?(action_name) = stylesheet_link_tag "reg_session" = csrf_meta_tag diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index d1627aed5..bc4385e28 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -32,6 +32,7 @@ en: send_paranoid_instructions: "If your e-mail exists on our database, you will receive a password recovery link on your e-mail" forgot: 'Forgot password' send: 'Send' + edit_button: 'Change' confirmations: send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.' send_paranoid_instructions: 'If your e-mail exists on our database, you will receive an email with instructions about how to confirm your account in a few minutes.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 58a5b5e4b..19a9ed1ae 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -34,6 +34,7 @@ ru: send_paranoid_instructions: "Если Ваш e-mail существует, в течение нескольких минут вы получите e-mail с инструкциями по восстановлению вашего пароля." forgot: 'Забыли пароль' send: 'Послать' + edit_button: 'Изменить' confirmations: send_instructions: "В течение нескольких минут вы получите e-mail с инструкциями по подтверждению вашей учётной записи." send_paranoid_instructions: 'Если Ваш e-mail существует, то в течение нескольких минут вы получите e-mail с инструкциями по подтверждению вашей учётной записи.' diff --git a/config/locales/en.yml b/config/locales/en.yml index 29f4f7bdc..50e88d31d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -617,15 +617,6 @@ en: platform: Platform counter: Downloads - errors: - messages: - too_long: - one: "maximum is %{count} character" - other: "maximum is %{count} characters" - too_short: - one: "minimum is %{count} character" - other: "minimum is %{count} characters" - notifications: subjects: new_comment_notification: New comment to your task diff --git a/config/locales/pluralization.en.yml b/config/locales/pluralization.en.yml index dcf1efb12..5baff28e7 100644 --- a/config/locales/pluralization.en.yml +++ b/config/locales/pluralization.en.yml @@ -20,3 +20,13 @@ en: inline_changes_count: one: "%{count} change" other: "%{count} changes" + + activerecord: + errors: + messages: + too_long: + one: "maximum is %{count} character" + other: "maximum is %{count} characters" + too_short: + one: "minimum is %{count} character" + other: "minimum is %{count} characters" diff --git a/config/locales/pluralization.ru.yml b/config/locales/pluralization.ru.yml index 117eb525b..2ec2d215c 100644 --- a/config/locales/pluralization.ru.yml +++ b/config/locales/pluralization.ru.yml @@ -26,3 +26,17 @@ ru: one: "%{count} изменение" few: "%{count} изменения" many: "%{count} изменений" + + activerecord: + errors: + messages: + too_long: + one: "не может быть больше чем %{count} символ" + few: "не может быть больше чем %{count} символа" + many: "не может быть больше чем %{count} символов" + other: "не может быть больше чем %{count} символа" + too_short: + one: "не может быть меньше %{count} символа" + few: "не может быть меньше %{count} символов" + many: "не может быть меньше %{count} символов" + other: "не может быть меньше %{count} символа" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 24b1e6a87..b243ce5da 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -612,19 +612,6 @@ ru: platform: Архитектура counter: Закачки - errors: - messages: - too_long: - one: "не может быть больше чем %{count} символ" - few: "не может быть больше чем %{count} символа" - many: "не может быть больше чем %{count} символов" - other: "не может быть больше чем %{count} символа" - too_short: - one: "не может быть меньше %{count} символа" - few: "не может быть меньше %{count} символов" - many: "не может быть меньше %{count} символов" - other: "не может быть меньше %{count} символа" - notifications: subjects: new_comment_notification: Новый комментарий к Вашей задаче From f79c8d6f169d2a37a780fd7f492f9334e7203e62 Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Thu, 1 Mar 2012 23:26:42 +0600 Subject: [PATCH 80/87] [refs #230] shorter error messages --- app/views/devise/passwords/edit.html.haml | 15 +++++++++------ config/locales/devise.en.yml | 5 +++++ config/locales/devise.ru.yml | 5 +++++ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/views/devise/passwords/edit.html.haml b/app/views/devise/passwords/edit.html.haml index 0eff4ec82..84463652a 100644 --- a/app/views/devise/passwords/edit.html.haml +++ b/app/views/devise/passwords/edit.html.haml @@ -11,20 +11,23 @@ %h1= title t('devise.passwords.edit') %br .content - - is_error = resource.errors.present? + -password_error = nil + - if resource.errors.present? + - resource.errors.each do |attr, array| + -password_error = array if attr == :password = form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put, :class => "form" }) do |f| = f.hidden_field :reset_password_token .left.first=t('activerecord.attributes.user.password') .right.first - = f.text_field :password, :id => 'pass', :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" + = f.text_field :password, :id => 'pass', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};" .both .left=t('activerecord.attributes.user.password_confirm') .right - = f.text_field :password_confirmation, :id => 'pass2', :class => "registartion-input #{is_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" + = f.text_field :password_confirmation, :id => 'pass2', :class => "registartion-input #{password_error ? "registartion-input-error" : ''}", :onClick => "this.className='registartion-input-focus';disError(this);", :onblur => "if(this.value==''){this.value='';this.className='registartion-input';}else{this.className='registartion-input-no-focus';};buttonCheck();", :onfocus => "if(this.value==''){this.value='';this.className='registartion-input-focus';};", :onkeydown => "buttonCheck();" .both %br =f.submit t("devise.passwords.edit_button"), :class => 'button', :id => 'btnLogin' - - #hint.error.reset{:style => is_error ? 'display: block;' : ''} - %p=resource.errors.full_messages.first \ No newline at end of file + - if password_error + #hint.error.reset{:style => 'display: block;'} + %p=password_error diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml index bc4385e28..46d859830 100644 --- a/config/locales/devise.en.yml +++ b/config/locales/devise.en.yml @@ -9,6 +9,11 @@ en: one: "1 error prohibited this %{resource} from being saved:" other: "%{count} errors prohibited this %{resource} from being saved:" + activerecord: + errors: + messages: + confirmation: "passwords doesn't match" + devise: failure: already_authenticated: 'You are already signed in.' diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml index 19a9ed1ae..06261d0e4 100644 --- a/config/locales/devise.ru.yml +++ b/config/locales/devise.ru.yml @@ -11,6 +11,11 @@ ru: many: "%{resource}: сохранение не удалось из-за %{count} ошибок" other: "%{resource}: сохранение не удалось из-за %{count} ошибки" + activerecord: + errors: + messages: + confirmation: "пароли не совпадают" + devise: failure: already_authenticated: 'Вы уже вошли в систему.' From cea7bc79bb1cb34b3918f42cac6350845eff042c Mon Sep 17 00:00:00 2001 From: Alexander Machehin Date: Fri, 2 Mar 2012 01:32:42 +0600 Subject: [PATCH 81/87] [refs #194] fix notification line style --- app/assets/stylesheets/design/custom.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/design/custom.scss b/app/assets/stylesheets/design/custom.scss index 9df5d5e3d..5a8874f05 100644 --- a/app/assets/stylesheets/design/custom.scss +++ b/app/assets/stylesheets/design/custom.scss @@ -273,13 +273,13 @@ article div.file table { resize: none; } -#repo-wrapper div.comment div.comment-left { +div.comment div.comment-left { float: left; font-size: 12px; margin-top: 4px; } -#repo-wrapper div.comment div.comment-right { +div.comment div.comment-right { float: right; } From f0e9f6b43d6e719e6062725e2da5ad2e7131f979 Mon Sep 17 00:00:00 2001 From: Vladimir Sharshov Date: Fri, 2 Mar 2012 00:17:10 +0400 Subject: [PATCH 82/87] Update Rails to 3.2.2 for security fixes --- Gemfile | 2 +- Gemfile.lock | 58 ++++++++++++++++++++++++++-------------------------- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Gemfile b/Gemfile index 80af20173..9a62ff6fb 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'http://rubygems.org' -gem 'rails', '3.2.1' #, :git => 'git://github.com/rails/rails.git' +gem 'rails', '3.2.2' #, :git => 'git://github.com/rails/rails.git' gem 'pg', '~> 0.13.1' # gem 'silent-postgres', :git => 'git://github.com/dolzenko/silent-postgres.git' #'~> 0.1.1' diff --git a/Gemfile.lock b/Gemfile.lock index 6d441fdb0..cd48ab286 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -26,12 +26,12 @@ GEM remote: http://rubygems.org/ specs: RedCloth (4.2.9) - actionmailer (3.2.1) - actionpack (= 3.2.1) + actionmailer (3.2.2) + actionpack (= 3.2.2) mail (~> 2.4.0) - actionpack (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) + actionpack (3.2.2) + activemodel (= 3.2.2) + activesupport (= 3.2.2) builder (~> 3.0.0) erubis (~> 2.7.0) journey (~> 1.0.1) @@ -39,18 +39,18 @@ GEM rack-cache (~> 1.1) rack-test (~> 0.6.1) sprockets (~> 2.1.2) - activemodel (3.2.1) - activesupport (= 3.2.1) + activemodel (3.2.2) + activesupport (= 3.2.2) builder (~> 3.0.0) - activerecord (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) - arel (~> 3.0.0) + activerecord (3.2.2) + activemodel (= 3.2.2) + activesupport (= 3.2.2) + arel (~> 3.0.2) tzinfo (~> 0.3.29) - activeresource (3.2.1) - activemodel (= 3.2.1) - activesupport (= 3.2.1) - activesupport (3.2.1) + activeresource (3.2.2) + activemodel (= 3.2.2) + activesupport (= 3.2.2) + activesupport (3.2.2) i18n (~> 0.6) multi_json (~> 1.0) airbrake (3.0.9) @@ -60,7 +60,7 @@ GEM posix-spawn (>= 0.3.6) ancestry (1.2.4) activerecord (>= 2.2.2) - arel (3.0.0) + arel (3.0.2) bcrypt-ruby (3.0.1) bluepill (0.0.55) activesupport (>= 3.0.0) @@ -138,7 +138,7 @@ GEM hike (1.2.1) hirb (0.6.0) i18n (0.6.0) - journey (1.0.1) + journey (1.0.3) jquery-rails (2.0.0) railties (>= 3.2.0.beta, < 5.0) thor (~> 0.14) @@ -161,7 +161,7 @@ GEM meta-tags (1.2.4) actionpack mime-types (1.17.2) - multi_json (1.0.4) + multi_json (1.1.0) mustache (0.99.4) net-scp (1.0.4) net-ssh (>= 1.99.1) @@ -199,22 +199,22 @@ GEM rack rack-test (0.6.1) rack (>= 1.0) - rails (3.2.1) - actionmailer (= 3.2.1) - actionpack (= 3.2.1) - activerecord (= 3.2.1) - activeresource (= 3.2.1) - activesupport (= 3.2.1) + rails (3.2.2) + actionmailer (= 3.2.2) + actionpack (= 3.2.2) + activerecord (= 3.2.2) + activeresource (= 3.2.2) + activesupport (= 3.2.2) bundler (~> 1.0) - railties (= 3.2.1) + railties (= 3.2.2) rails-xmlrpc (0.3.6) rails3-generators (0.17.4) railties (>= 3.0.0) rails3-jquery-autocomplete (1.0.6) rails (~> 3.0) - railties (3.2.1) - actionpack (= 3.2.1) - activesupport (= 3.2.1) + railties (3.2.2) + actionpack (= 3.2.2) + activesupport (= 3.2.2) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) @@ -327,7 +327,7 @@ DEPENDENCIES omniauth-openid (~> 1.0.1) paperclip (~> 2.5.2) pg (~> 0.13.1) - rails (= 3.2.1) + rails (= 3.2.2) rails-xmlrpc (~> 0.3.6) rails3-generators rails3-jquery-autocomplete (~> 1.0.6) From b1ea9fe57f180f532b401e7e28815922c2664dec Mon Sep 17 00:00:00 2001 From: Pavel Chipiga Date: Fri, 2 Mar 2012 01:26:42 +0200 Subject: [PATCH 83/87] Upgrade gems. Hide uncancelable and unpublishable lins. Add duplicate build_list search link. Fix build_list display. Refs #223 --- Gemfile | 18 +++---- Gemfile.lock | 52 ++++++++++----------- app/views/build_lists/_build_list.html.haml | 2 +- app/views/build_lists/_filter.html.haml | 2 + app/views/build_lists/show.html.haml | 8 ++-- 5 files changed, 42 insertions(+), 40 deletions(-) diff --git a/Gemfile b/Gemfile index 9a62ff6fb..7fd1a784b 100644 --- a/Gemfile +++ b/Gemfile @@ -2,18 +2,18 @@ source 'http://rubygems.org' gem 'rails', '3.2.2' #, :git => 'git://github.com/rails/rails.git' -gem 'pg', '~> 0.13.1' +gem 'pg', '~> 0.13.2' # gem 'silent-postgres', :git => 'git://github.com/dolzenko/silent-postgres.git' #'~> 0.1.1' gem 'redhillonrails_core', :git => 'git://github.com/chipiga/redhillonrails_core.git', :branch => 'rails31' # '~> 2.0.0.pre' # deprecated # gem 'schema_plus', '~> 0.2.1' # buggy shit! -gem 'devise', '~> 2.0.1' +gem 'devise', '~> 2.0.4' gem 'omniauth', '~> 1.0.2' gem 'omniauth-openid', '~> 1.0.1' gem 'cancan', '~> 1.6.7' gem 'ancestry', '~> 1.2.4' -gem 'paperclip', '~> 2.5.2' +gem 'paperclip', '~> 2.7.0' gem 'delayed_job_active_record', '~> 0.3.2' gem 'russian', '~> 0.6.0' gem 'highline', '~> 1.6.11' @@ -32,26 +32,26 @@ gem 'RedCloth' gem 'wikicloth' gem 'unicorn', '~> 4.2.0' -gem 'newrelic_rpm', '~> 3.3.1' +gem 'newrelic_rpm', '~> 3.3.2' gem 'rails3-jquery-autocomplete', '~> 1.0.6' gem 'will_paginate', '~> 3.0.3' gem 'meta-tags', '~> 1.2.4', :require => 'meta_tags' gem "haml-rails", '~> 0.3.4' -gem 'jquery-rails', '~> 2.0.0' +gem 'jquery-rails', '~> 2.0.1' group :assets do gem 'sass-rails', '~> 3.2.4' gem 'coffee-rails', '~> 3.2.2' gem 'uglifier', '~> 1.2.1' gem 'compass', '~> 0.12.rc.1' # :git => 'git://github.com/chriseppstein/compass.git', :branch => 'rails31' - gem 'therubyracer', '~> 0.9.9' + gem 'therubyracer', '~> 0.9.10' end group :production do gem "airbrake", '~> 3.0.9' - gem 'bluepill', '~> 0.0.55', :require => false - gem 'daemons', '~> 1.1.8' # for DJ + gem 'bluepill', '~> 0.0.59', :require => false + gem 'daemons', '1.1.6' # for DJ end group :development do @@ -69,6 +69,6 @@ end group :test do gem 'rspec-rails', '~> 2.8.1' - gem 'factory_girl_rails', '~> 1.6.0' + gem 'factory_girl_rails', '~> 1.7.0' gem 'rr', '~> 1.0.4' end diff --git a/Gemfile.lock b/Gemfile.lock index cd48ab286..e8ae4e140 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -62,15 +62,15 @@ GEM activerecord (>= 2.2.2) arel (3.0.2) bcrypt-ruby (3.0.1) - bluepill (0.0.55) + bluepill (0.0.59) activesupport (>= 3.0.0) - daemons (~> 1.1.4) + daemons (~> 1.1.4, <= 1.1.6) i18n (>= 0.5.0) state_machine (~> 1.1.0) builder (3.0.0) cancan (1.6.7) cape (1.4.0) - capistrano (2.9.0) + capistrano (2.11.2) highline net-scp (>= 1.0.0) net-sftp (>= 2.0.0) @@ -94,27 +94,27 @@ GEM fssm (>= 0.2.7) sass (~> 3.1) creole (0.4.2) - daemons (1.1.8) + daemons (1.1.6) delayed_job (3.0.1) activesupport (~> 3.0) delayed_job_active_record (0.3.2) activerecord (> 2.1.0) delayed_job (~> 3.0.0) - devise (2.0.1) + devise (2.0.4) bcrypt-ruby (~> 3.0) orm_adapter (~> 0.0.3) railties (~> 3.1) - warden (~> 1.1) + warden (~> 1.1.1) diff-lcs (1.1.3) erubis (2.7.0) eventmachine (0.12.10) execjs (1.3.0) multi_json (~> 1.0) expression_parser (0.9.0) - factory_girl (2.5.2) + factory_girl (2.6.0) activesupport (>= 2.3.9) - factory_girl_rails (1.6.0) - factory_girl (~> 2.5.0) + factory_girl_rails (1.7.0) + factory_girl (~> 2.6.0) railties (>= 3.0.0) fssm (0.2.8.1) github-markup (0.7.1) @@ -139,8 +139,8 @@ GEM hirb (0.6.0) i18n (0.6.0) journey (1.0.3) - jquery-rails (2.0.0) - railties (>= 3.2.0.beta, < 5.0) + jquery-rails (2.0.1) + railties (>= 3.2.0, < 5.0) thor (~> 0.14) json (1.6.5) kgio (2.7.2) @@ -170,7 +170,7 @@ GEM net-ssh (2.3.0) net-ssh-gateway (1.1.0) net-ssh (>= 1.99.1) - newrelic_rpm (3.3.1) + newrelic_rpm (3.3.2) nokogiri (1.5.0) omniauth (1.0.2) hashie (~> 1.2) @@ -179,12 +179,12 @@ GEM omniauth (~> 1.0) rack-openid (~> 1.3.1) orm_adapter (0.0.6) - paperclip (2.5.2) + paperclip (2.7.0) activerecord (>= 2.3.0) activesupport (>= 2.3.2) cocaine (>= 0.0.2) mime-types - pg (0.13.1) + pg (0.13.2) polyglot (0.3.3) posix-spawn (0.3.6) rack (1.4.1) @@ -264,7 +264,7 @@ GEM tilt (~> 1.1, != 1.3.0) sqlite3 (1.3.5) state_machine (1.1.2) - therubyracer (0.9.9) + therubyracer (0.9.10) libv8 (~> 3.3.10) thin (1.3.1) daemons (>= 1.0.9) @@ -283,9 +283,9 @@ GEM kgio (~> 2.6) rack raindrops (~> 0.7) - warden (1.1.0) + warden (1.1.1) rack (>= 1.0) - whenever (0.7.2) + whenever (0.7.3) activesupport (>= 2.3.4) chronic (~> 0.6.3) wikicloth (0.7.1) @@ -300,7 +300,7 @@ DEPENDENCIES RedCloth airbrake (~> 3.0.9) ancestry (~> 1.2.4) - bluepill (~> 0.0.55) + bluepill (~> 0.0.59) cancan (~> 1.6.7) cape capistrano @@ -309,24 +309,24 @@ DEPENDENCIES coffee-rails (~> 3.2.2) compass (~> 0.12.rc.1) creole - daemons (~> 1.1.8) + daemons (= 1.1.6) delayed_job_active_record (~> 0.3.2) - devise (~> 2.0.1) - factory_girl_rails (~> 1.6.0) + devise (~> 2.0.4) + factory_girl_rails (~> 1.7.0) gollum (= 1.3.1) grack! grit! haml-rails (~> 0.3.4) highline (~> 1.6.11) hirb - jquery-rails (~> 2.0.0) + jquery-rails (~> 2.0.1) mailcatcher meta-tags (~> 1.2.4) - newrelic_rpm (~> 3.3.1) + newrelic_rpm (~> 3.3.2) omniauth (~> 1.0.2) omniauth-openid (~> 1.0.1) - paperclip (~> 2.5.2) - pg (~> 0.13.1) + paperclip (~> 2.7.0) + pg (~> 0.13.2) rails (= 3.2.2) rails-xmlrpc (~> 0.3.6) rails3-generators @@ -339,7 +339,7 @@ DEPENDENCIES russian (~> 0.6.0) sass-rails (~> 3.2.4) shotgun - therubyracer (~> 0.9.9) + therubyracer (~> 0.9.10) uglifier (~> 1.2.1) unicorn (~> 4.2.0) whenever diff --git a/app/views/build_lists/_build_list.html.haml b/app/views/build_lists/_build_list.html.haml index d0d65fb58..9d4f24f2a 100644 --- a/app/views/build_lists/_build_list.html.haml +++ b/app/views/build_lists/_build_list.html.haml @@ -5,5 +5,5 @@ %td= link_to build_list.project.name, build_list.project %td= build_list.arch.name %td= link_to build_list.user.try(:fullname), build_list.user - %td= link_to image_tag('x.png', :class => 'delete-row', :id => "delete-row#{build_list_counter}"), cancel_build_list_path(build_list), :method => :put, :confirm => t('layout.confirm') if can?(:cancel, build_list) + %td= link_to image_tag('x.png', :class => 'delete-row', :id => "delete-row#{build_list_counter}"), cancel_build_list_path(build_list), :method => :put, :confirm => t('layout.confirm') if build_list.can_cancel? and can?(:cancel, build_list) %td= build_list.notified_at \ No newline at end of file diff --git a/app/views/build_lists/_filter.html.haml b/app/views/build_lists/_filter.html.haml index 19cc34443..f1ccd74cf 100644 --- a/app/views/build_lists/_filter.html.haml +++ b/app/views/build_lists/_filter.html.haml @@ -29,6 +29,8 @@ .lefter= f.radio_button :ownership, 'index', :class => 'niceRadio', :id => 'myradio3' .lefter= t("layout.build_lists.ownership.index") .both + %br + = f.submit t("layout.search") .block %h3.small= t("activerecord.attributes.build_list.status") .lineForm.aside= f.select :status, BuildList::STATUSES.collect{|status| [BuildList.human_status(status), status]}, {:include_blank => true, :selected => @filter.status}, {:class => 'sel80 aside', :id => 'status', :tabindex => 2} diff --git a/app/views/build_lists/show.html.haml b/app/views/build_lists/show.html.haml index 36d7eaa50..486d3afd6 100644 --- a/app/views/build_lists/show.html.haml +++ b/app/views/build_lists/show.html.haml @@ -34,12 +34,12 @@ %tr %td= t("activerecord.attributes.build_list.status") %td= @build_list.human_status - %tr - %td= t("activerecord.attributes.build_list.project_version") - %td= @build_list.project_version %tr %td= t("activerecord.attributes.build_list.project") %td= link_to @build_list.project.name, project_path(@build_list.project) + %tr + %td= t("activerecord.attributes.build_list.project_version") + %td= @build_list.project_version %tr %td= t("activerecord.attributes.build_list.arch") %td= @build_list.arch.name @@ -56,7 +56,7 @@ %br %br -= link_to t("layout.publish"), publish_build_list_path(@build_list), :method => "put", :confirm => t("layout.confirm"), :class => "button" if can? :publish, @build_list += link_to t("layout.publish"), publish_build_list_path(@build_list), :method => "put", :confirm => t("layout.confirm"), :class => "button" if @build_list.can_publish? and can?(:publish, @build_list) %br %br From accf38a08866bacae79561f6fd98ad34c3a13c40 Mon Sep 17 00:00:00 2001 From: Pavel Chipiga Date: Fri, 2 Mar 2012 01:37:05 +0200 Subject: [PATCH 84/87] Fix build_list display width. Refs #223 --- app/assets/stylesheets/design/common.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/design/common.scss b/app/assets/stylesheets/design/common.scss index ea53f9aba..a44081d1d 100644 --- a/app/assets/stylesheets/design/common.scss +++ b/app/assets/stylesheets/design/common.scss @@ -7,7 +7,7 @@ table.info { table.columns2 { @include inner-table-borders; - th.first, td.first {width: 50%;} + th.first, td.first {width: 30%;} } table.columns3 { From 900c1fe2f503bae74a06b44f6328d9db236944e1 Mon Sep 17 00:00:00 2001 From: George Vinogradov Date: Thu, 1 Mar 2012 21:37:24 +0400 Subject: [PATCH 85/87] [issue #195] Fixes. * Fixed translations * Fixed blob display * Fixed routes --- app/assets/stylesheets/design/common.scss | 1 + app/views/build_lists/_build_list.html.haml | 2 +- app/views/build_lists/index.html.haml | 2 +- vendor/assets/javascripts/hl/shAutoloader.js | 17 - vendor/assets/javascripts/hl/shBrushAS3.js | 59 --- .../javascripts/hl/shBrushAppleScript.js | 75 ---- vendor/assets/javascripts/hl/shBrushBash.js | 59 --- vendor/assets/javascripts/hl/shBrushCSharp.js | 65 ---- .../javascripts/hl/shBrushColdFusion.js | 100 ----- vendor/assets/javascripts/hl/shBrushCpp.js | 97 ----- vendor/assets/javascripts/hl/shBrushCss.js | 91 ----- vendor/assets/javascripts/hl/shBrushDelphi.js | 55 --- vendor/assets/javascripts/hl/shBrushDiff.js | 41 --- vendor/assets/javascripts/hl/shBrushErlang.js | 52 --- vendor/assets/javascripts/hl/shBrushGroovy.js | 67 ---- .../assets/javascripts/hl/shBrushJScript.js | 52 --- vendor/assets/javascripts/hl/shBrushJava.js | 57 --- vendor/assets/javascripts/hl/shBrushJavaFX.js | 58 --- vendor/assets/javascripts/hl/shBrushPerl.js | 72 ---- vendor/assets/javascripts/hl/shBrushPhp.js | 88 ----- vendor/assets/javascripts/hl/shBrushPlain.js | 33 -- .../javascripts/hl/shBrushPowerShell.js | 74 ---- vendor/assets/javascripts/hl/shBrushPython.js | 64 ---- vendor/assets/javascripts/hl/shBrushRuby.js | 55 --- vendor/assets/javascripts/hl/shBrushSass.js | 94 ----- vendor/assets/javascripts/hl/shBrushScala.js | 51 --- vendor/assets/javascripts/hl/shBrushSql.js | 66 ---- vendor/assets/javascripts/hl/shBrushVb.js | 56 --- vendor/assets/javascripts/hl/shBrushXml.js | 69 ---- vendor/assets/javascripts/hl/shCore.js | 17 - vendor/assets/javascripts/hl/shLegacy.js | 17 - vendor/assets/stylesheets/hl/my.css | 8 - vendor/assets/stylesheets/hl/shCore.css | 226 ------------ .../assets/stylesheets/hl/shCoreDefault.css | 328 ----------------- vendor/assets/stylesheets/hl/shCoreDjango.css | 331 ----------------- .../assets/stylesheets/hl/shCoreEclipse.css | 345 ------------------ vendor/assets/stylesheets/hl/shCoreEmacs.css | 324 ---------------- .../stylesheets/hl/shCoreFadeToGrey.css | 328 ----------------- .../assets/stylesheets/hl/shCoreMDUltra.css | 324 ---------------- .../assets/stylesheets/hl/shCoreMidnight.css | 324 ---------------- vendor/assets/stylesheets/hl/shCoreRDark.css | 324 ---------------- .../assets/stylesheets/hl/shThemeDefault.css | 117 ------ .../assets/stylesheets/hl/shThemeDjango.css | 120 ------ .../assets/stylesheets/hl/shThemeEclipse.css | 128 ------- vendor/assets/stylesheets/hl/shThemeEmacs.css | 113 ------ .../stylesheets/hl/shThemeFadeToGrey.css | 117 ------ .../assets/stylesheets/hl/shThemeMDUltra.css | 113 ------ .../assets/stylesheets/hl/shThemeMidnight.css | 113 ------ vendor/assets/stylesheets/hl/shThemeRDark.css | 113 ------ 49 files changed, 3 insertions(+), 5499 deletions(-) delete mode 100644 vendor/assets/javascripts/hl/shAutoloader.js delete mode 100644 vendor/assets/javascripts/hl/shBrushAS3.js delete mode 100644 vendor/assets/javascripts/hl/shBrushAppleScript.js delete mode 100644 vendor/assets/javascripts/hl/shBrushBash.js delete mode 100644 vendor/assets/javascripts/hl/shBrushCSharp.js delete mode 100644 vendor/assets/javascripts/hl/shBrushColdFusion.js delete mode 100644 vendor/assets/javascripts/hl/shBrushCpp.js delete mode 100644 vendor/assets/javascripts/hl/shBrushCss.js delete mode 100644 vendor/assets/javascripts/hl/shBrushDelphi.js delete mode 100644 vendor/assets/javascripts/hl/shBrushDiff.js delete mode 100644 vendor/assets/javascripts/hl/shBrushErlang.js delete mode 100644 vendor/assets/javascripts/hl/shBrushGroovy.js delete mode 100644 vendor/assets/javascripts/hl/shBrushJScript.js delete mode 100644 vendor/assets/javascripts/hl/shBrushJava.js delete mode 100644 vendor/assets/javascripts/hl/shBrushJavaFX.js delete mode 100644 vendor/assets/javascripts/hl/shBrushPerl.js delete mode 100644 vendor/assets/javascripts/hl/shBrushPhp.js delete mode 100644 vendor/assets/javascripts/hl/shBrushPlain.js delete mode 100644 vendor/assets/javascripts/hl/shBrushPowerShell.js delete mode 100644 vendor/assets/javascripts/hl/shBrushPython.js delete mode 100644 vendor/assets/javascripts/hl/shBrushRuby.js delete mode 100644 vendor/assets/javascripts/hl/shBrushSass.js delete mode 100644 vendor/assets/javascripts/hl/shBrushScala.js delete mode 100644 vendor/assets/javascripts/hl/shBrushSql.js delete mode 100644 vendor/assets/javascripts/hl/shBrushVb.js delete mode 100644 vendor/assets/javascripts/hl/shBrushXml.js delete mode 100644 vendor/assets/javascripts/hl/shCore.js delete mode 100644 vendor/assets/javascripts/hl/shLegacy.js delete mode 100644 vendor/assets/stylesheets/hl/my.css delete mode 100644 vendor/assets/stylesheets/hl/shCore.css delete mode 100644 vendor/assets/stylesheets/hl/shCoreDefault.css delete mode 100644 vendor/assets/stylesheets/hl/shCoreDjango.css delete mode 100644 vendor/assets/stylesheets/hl/shCoreEclipse.css delete mode 100644 vendor/assets/stylesheets/hl/shCoreEmacs.css delete mode 100644 vendor/assets/stylesheets/hl/shCoreFadeToGrey.css delete mode 100644 vendor/assets/stylesheets/hl/shCoreMDUltra.css delete mode 100644 vendor/assets/stylesheets/hl/shCoreMidnight.css delete mode 100644 vendor/assets/stylesheets/hl/shCoreRDark.css delete mode 100644 vendor/assets/stylesheets/hl/shThemeDefault.css delete mode 100644 vendor/assets/stylesheets/hl/shThemeDjango.css delete mode 100644 vendor/assets/stylesheets/hl/shThemeEclipse.css delete mode 100644 vendor/assets/stylesheets/hl/shThemeEmacs.css delete mode 100644 vendor/assets/stylesheets/hl/shThemeFadeToGrey.css delete mode 100644 vendor/assets/stylesheets/hl/shThemeMDUltra.css delete mode 100644 vendor/assets/stylesheets/hl/shThemeMidnight.css delete mode 100644 vendor/assets/stylesheets/hl/shThemeRDark.css diff --git a/app/assets/stylesheets/design/common.scss b/app/assets/stylesheets/design/common.scss index a44081d1d..c0b24ccf6 100644 --- a/app/assets/stylesheets/design/common.scss +++ b/app/assets/stylesheets/design/common.scss @@ -2,6 +2,7 @@ table.info { width: 100%; + border-spacing: 0; td {padding: 5px;} } diff --git a/app/views/build_lists/_build_list.html.haml b/app/views/build_lists/_build_list.html.haml index 9d4f24f2a..d25ec0253 100644 --- a/app/views/build_lists/_build_list.html.haml +++ b/app/views/build_lists/_build_list.html.haml @@ -1,8 +1,8 @@ %tr{:id => "row#{build_list_counter}"} %td= link_to (build_list.bs_id.present? ? build_list.bs_id : t("layout.build_lists.bs_id_not_set")), build_list %td= build_list.human_status - %td= link_to build_list.project_version, "#" %td= link_to build_list.project.name, build_list.project + %td= link_to build_list.project_version, "#" %td= build_list.arch.name %td= link_to build_list.user.try(:fullname), build_list.user %td= link_to image_tag('x.png', :class => 'delete-row', :id => "delete-row#{build_list_counter}"), cancel_build_list_path(build_list), :method => :put, :confirm => t('layout.confirm') if build_list.can_cancel? and can?(:cancel, build_list) diff --git a/app/views/build_lists/index.html.haml b/app/views/build_lists/index.html.haml index df42ed0ad..8611b6bf0 100644 --- a/app/views/build_lists/index.html.haml +++ b/app/views/build_lists/index.html.haml @@ -4,8 +4,8 @@ %tr %th.lpadding16= t("activerecord.attributes.build_list.bs_id") %th.lpadding16= t("activerecord.attributes.build_list.status") - %th.lpadding16= t("activerecord.attributes.build_list.project_version") %th.lpadding16= t("activerecord.attributes.build_list.project") + %th.lpadding16= t("activerecord.attributes.build_list.project_version") %th.lpadding16= t("activerecord.attributes.build_list.arch") %th.lpadding16= t("activerecord.attributes.build_list.user") %th= t("layout.build_lists.action") diff --git a/vendor/assets/javascripts/hl/shAutoloader.js b/vendor/assets/javascripts/hl/shAutoloader.js deleted file mode 100644 index 4e29bddec..000000000 --- a/vendor/assets/javascripts/hl/shAutoloader.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(2(){1 h=5;h.I=2(){2 n(c,a){4(1 d=0;d|<|≥|>=|≤|<=|\*|\+|-|\/|÷|\^)/g, - css: 'color2' }, - - { regex: /\b(?:and|as|div|mod|not|or|return(?!\s&)(ing)?|equals|(is(n't| not)? )?equal( to)?|does(n't| not) equal|(is(n't| not)? )?(greater|less) than( or equal( to)?)?|(comes|does(n't| not) come) (after|before)|is(n't| not)?( in)? (back|front) of|is(n't| not)? behind|is(n't| not)?( (in|contained by))?|does(n't| not) contain|contain(s)?|(start|begin|end)(s)? with|((but|end) )?(consider|ignor)ing|prop(erty)?|(a )?ref(erence)?( to)?|repeat (until|while|with)|((end|exit) )?repeat|((else|end) )?if|else|(end )?(script|tell|try)|(on )?error|(put )?into|(of )?(it|me)|its|my|with (timeout( of)?|transaction)|end (timeout|transaction))\b/g, - css: 'keyword' }, - - { regex: /\b\d+(st|nd|rd|th)\b/g, // ordinals - css: 'keyword' }, - - { regex: /\b(?:about|above|against|around|at|below|beneath|beside|between|by|(apart|aside) from|(instead|out) of|into|on(to)?|over|since|thr(ough|u)|under)\b/g, - css: 'color3' }, - - { regex: /\b(?:adding folder items to|after receiving|choose( ((remote )?application|color|folder|from list|URL))?|clipboard info|set the clipboard to|(the )?clipboard|entire contents|display(ing| (alert|dialog|mode))?|document( (edited|file|nib name))?|file( (name|type))?|(info )?for|giving up after|(name )?extension|quoted form|return(ed)?|second(?! item)(s)?|list (disks|folder)|text item(s| delimiters)?|(Unicode )?text|(disk )?item(s)?|((current|list) )?view|((container|key) )?window|with (data|icon( (caution|note|stop))?|parameter(s)?|prompt|properties|seed|title)|case|diacriticals|hyphens|numeric strings|punctuation|white space|folder creation|application(s( folder)?| (processes|scripts position|support))?|((desktop )?(pictures )?|(documents|downloads|favorites|home|keychain|library|movies|music|public|scripts|sites|system|users|utilities|workflows) )folder|desktop|Folder Action scripts|font(s| panel)?|help|internet plugins|modem scripts|(system )?preferences|printer descriptions|scripting (additions|components)|shared (documents|libraries)|startup (disk|items)|temporary items|trash|on server|in AppleTalk zone|((as|long|short) )?user name|user (ID|locale)|(with )?password|in (bundle( with identifier)?|directory)|(close|open for) access|read|write( permission)?|(g|s)et eof|using( delimiters)?|starting at|default (answer|button|color|country code|entr(y|ies)|identifiers|items|name|location|script editor)|hidden( answer)?|open(ed| (location|untitled))?|error (handling|reporting)|(do( shell)?|load|run|store) script|administrator privileges|altering line endings|get volume settings|(alert|boot|input|mount|output|set) volume|output muted|(fax|random )?number|round(ing)?|up|down|toward zero|to nearest|as taught in school|system (attribute|info)|((AppleScript( Studio)?|system) )?version|(home )?directory|(IPv4|primary Ethernet) address|CPU (type|speed)|physical memory|time (stamp|to GMT)|replacing|ASCII (character|number)|localized string|from table|offset|summarize|beep|delay|say|(empty|multiple) selections allowed|(of|preferred) type|invisibles|showing( package contents)?|editable URL|(File|FTP|News|Media|Web) [Ss]ervers|Telnet hosts|Directory services|Remote applications|waiting until completion|saving( (in|to))?|path (for|to( (((current|frontmost) )?application|resource))?)|POSIX (file|path)|(background|RGB) color|(OK|cancel) button name|cancel button|button(s)?|cubic ((centi)?met(re|er)s|yards|feet|inches)|square ((kilo)?met(re|er)s|miles|yards|feet)|(centi|kilo)?met(re|er)s|miles|yards|feet|inches|lit(re|er)s|gallons|quarts|(kilo)?grams|ounces|pounds|degrees (Celsius|Fahrenheit|Kelvin)|print( (dialog|settings))?|clos(e(able)?|ing)|(de)?miniaturized|miniaturizable|zoom(ed|able)|attribute run|action (method|property|title)|phone|email|((start|end)ing|home) page|((birth|creation|current|custom|modification) )?date|((((phonetic )?(first|last|middle))|computer|host|maiden|related) |nick)?name|aim|icq|jabber|msn|yahoo|address(es)?|save addressbook|should enable action|city|country( code)?|formatte(r|d address)|(palette )?label|state|street|zip|AIM [Hh]andle(s)?|my card|select(ion| all)?|unsaved|(alpha )?value|entr(y|ies)|group|(ICQ|Jabber|MSN) handle|person|people|company|department|icon image|job title|note|organization|suffix|vcard|url|copies|collating|pages (across|down)|request print time|target( printer)?|((GUI Scripting|Script menu) )?enabled|show Computer scripts|(de)?activated|awake from nib|became (key|main)|call method|of (class|object)|center|clicked toolbar item|closed|for document|exposed|(can )?hide|idle|keyboard (down|up)|event( (number|type))?|launch(ed)?|load (image|movie|nib|sound)|owner|log|mouse (down|dragged|entered|exited|moved|up)|move|column|localization|resource|script|register|drag (info|types)|resigned (active|key|main)|resiz(e(d)?|able)|right mouse (down|dragged|up)|scroll wheel|(at )?index|should (close|open( untitled)?|quit( after last window closed)?|zoom)|((proposed|screen) )?bounds|show(n)?|behind|in front of|size (mode|to fit)|update(d| toolbar item)?|was (hidden|miniaturized)|will (become active|close|finish launching|hide|miniaturize|move|open|quit|(resign )?active|((maximum|minimum|proposed) )?size|show|zoom)|bundle|data source|movie|pasteboard|sound|tool(bar| tip)|(color|open|save) panel|coordinate system|frontmost|main( (bundle|menu|window))?|((services|(excluded from )?windows) )?menu|((executable|frameworks|resource|scripts|shared (frameworks|support)) )?path|(selected item )?identifier|data|content(s| view)?|character(s)?|click count|(command|control|option|shift) key down|context|delta (x|y|z)|key( code)?|location|pressure|unmodified characters|types|(first )?responder|playing|(allowed|selectable) identifiers|allows customization|(auto saves )?configuration|visible|image( name)?|menu form representation|tag|user(-| )defaults|associated file name|(auto|needs) display|current field editor|floating|has (resize indicator|shadow)|hides when deactivated|level|minimized (image|title)|opaque|position|release when closed|sheet|title(d)?)\b/g, - css: 'color3' }, - - { regex: new RegExp(this.getKeywords(specials), 'gm'), css: 'color3' }, - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, - { regex: new RegExp(this.getKeywords(ordinals), 'gm'), css: 'keyword' } - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['applescript']; - - SyntaxHighlighter.brushes.AppleScript = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushBash.js b/vendor/assets/javascripts/hl/shBrushBash.js deleted file mode 100644 index 8c296969f..000000000 --- a/vendor/assets/javascripts/hl/shBrushBash.js +++ /dev/null @@ -1,59 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - var keywords = 'if fi then elif else for do done until while break continue case function return in eq ne ge le'; - var commands = 'alias apropos awk basename bash bc bg builtin bzip2 cal cat cd cfdisk chgrp chmod chown chroot' + - 'cksum clear cmp comm command cp cron crontab csplit cut date dc dd ddrescue declare df ' + - 'diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval ' + - 'exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format ' + - 'free fsck ftp gawk getopts grep groups gzip hash head history hostname id ifconfig ' + - 'import install join kill less let ln local locate logname logout look lpc lpr lprint ' + - 'lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools ' + - 'mv netstat nice nl nohup nslookup open op passwd paste pathchk ping popd pr printcap ' + - 'printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice ' + - 'remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown ' + - 'sleep sort source split ssh strace su sudo sum symlink sync tail tar tee test time ' + - 'times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias ' + - 'uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir ' + - 'vi watch wc whereis which who whoami Wget xargs yes' - ; - - this.regexList = [ - { regex: /^#!.*$/gm, css: 'preprocessor bold' }, - { regex: /\/[\w-\/]+/gm, css: 'plain' }, - { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords - { regex: new RegExp(this.getKeywords(commands), 'gm'), css: 'functions' } // commands - ]; - } - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['bash', 'shell']; - - SyntaxHighlighter.brushes.Bash = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushCSharp.js b/vendor/assets/javascripts/hl/shBrushCSharp.js deleted file mode 100644 index 079214efe..000000000 --- a/vendor/assets/javascripts/hl/shBrushCSharp.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - var keywords = 'abstract as base bool break byte case catch char checked class const ' + - 'continue decimal default delegate do double else enum event explicit ' + - 'extern false finally fixed float for foreach get goto if implicit in int ' + - 'interface internal is lock long namespace new null object operator out ' + - 'override params private protected public readonly ref return sbyte sealed set ' + - 'short sizeof stackalloc static string struct switch this throw true try ' + - 'typeof uint ulong unchecked unsafe ushort using virtual void while'; - - function fixComments(match, regexInfo) - { - var css = (match[0].indexOf("///") == 0) - ? 'color1' - : 'comments' - ; - - return [new SyntaxHighlighter.Match(match[0], match.index, css)]; - } - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLineCComments, func : fixComments }, // one line comments - { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments - { regex: /@"(?:[^"]|"")*"/g, css: 'string' }, // @-quoted strings - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings - { regex: /^\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // c# keyword - { regex: /\bpartial(?=\s+(?:class|interface|struct)\b)/g, css: 'keyword' }, // contextual keyword: 'partial' - { regex: /\byield(?=\s+(?:return|break)\b)/g, css: 'keyword' } // contextual keyword: 'yield' - ]; - - this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['c#', 'c-sharp', 'csharp']; - - SyntaxHighlighter.brushes.CSharp = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); - diff --git a/vendor/assets/javascripts/hl/shBrushColdFusion.js b/vendor/assets/javascripts/hl/shBrushColdFusion.js deleted file mode 100644 index 627dbb9b7..000000000 --- a/vendor/assets/javascripts/hl/shBrushColdFusion.js +++ /dev/null @@ -1,100 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributed by Jen - // http://www.jensbits.com/2009/05/14/coldfusion-brush-for-syntaxhighlighter-plus - - var funcs = 'Abs ACos AddSOAPRequestHeader AddSOAPResponseHeader AjaxLink AjaxOnLoad ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ' + - 'ArrayInsertAt ArrayIsDefined ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArraySet ArraySort ArraySum ArraySwap ArrayToList ' + - 'Asc ASin Atn BinaryDecode BinaryEncode BitAnd BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN BitSHRN BitXor ' + - 'Ceiling CharsetDecode CharsetEncode Chr CJustify Compare CompareNoCase Cos CreateDate CreateDateTime CreateObject ' + - 'CreateODBCDate CreateODBCDateTime CreateODBCTime CreateTime CreateTimeSpan CreateUUID DateAdd DateCompare DateConvert ' + - 'DateDiff DateFormat DatePart Day DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear DE DecimalFormat DecrementValue ' + - 'Decrypt DecryptBinary DeleteClientVariable DeserializeJSON DirectoryExists DollarFormat DotNetToCFType Duplicate Encrypt ' + - 'EncryptBinary Evaluate Exp ExpandPath FileClose FileCopy FileDelete FileExists FileIsEOF FileMove FileOpen FileRead ' + - 'FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute FileSetLastModified FileWrite Find FindNoCase FindOneOf ' + - 'FirstDayOfMonth Fix FormatBaseN GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList GetBaseTemplatePath ' + - 'GetClientVariablesList GetComponentMetaData GetContextRoot GetCurrentTemplatePath GetDirectoryFromPath GetEncoding ' + - 'GetException GetFileFromPath GetFileInfo GetFunctionList GetGatewayHelper GetHttpRequestData GetHttpTimeString ' + - 'GetK2ServerDocCount GetK2ServerDocCountLimit GetLocale GetLocaleDisplayName GetLocalHostIP GetMetaData GetMetricData ' + - 'GetPageContext GetPrinterInfo GetProfileSections GetProfileString GetReadableImageFormats GetSOAPRequest GetSOAPRequestHeader ' + - 'GetSOAPResponse GetSOAPResponseHeader GetTempDirectory GetTempFile GetTemplatePath GetTickCount GetTimeZoneInfo GetToken ' + - 'GetUserRoles GetWriteableImageFormats Hash Hour HTMLCodeFormat HTMLEditFormat IIf ImageAddBorder ImageBlur ImageClearRect ' + - 'ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect ImageDrawCubicCurve ImageDrawLine ImageDrawLines ImageDrawOval ' + - 'ImageDrawPoint ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob ImageGetBufferedImage ' + - 'ImageGetEXIFTag ImageGetHeight ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay ImagePaste ' + - 'ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit ImageSetAntialiasing ImageSetBackgroundColor ' + - 'ImageSetDrawingColor ImageSetDrawingStroke ImageSetDrawingTransparency ImageSharpen ImageShear ImageShearDrawingAxis ImageTranslate ' + - 'ImageTranslateDrawingAxis ImageWrite ImageWriteBase64 ImageXORDrawingMode IncrementValue InputBaseN Insert Int IsArray IsBinary ' + - 'IsBoolean IsCustomFunction IsDate IsDDX IsDebugMode IsDefined IsImage IsImageFile IsInstanceOf IsJSON IsLeapYear IsLocalHost ' + - 'IsNumeric IsNumericDate IsObject IsPDFFile IsPDFObject IsQuery IsSimpleValue IsSOAPRequest IsStruct IsUserInAnyRole IsUserInRole ' + - 'IsUserLoggedIn IsValid IsWDDX IsXML IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot JavaCast JSStringFormat LCase Left Len ' + - 'ListAppend ListChangeDelims ListContains ListContainsNoCase ListDeleteAt ListFind ListFindNoCase ListFirst ListGetAt ListInsertAt ' + - 'ListLast ListLen ListPrepend ListQualify ListRest ListSetAt ListSort ListToArray ListValueCount ListValueCountNoCase LJustify Log ' + - 'Log10 LSCurrencyFormat LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime ' + - 'LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Max Mid Min Minute Month MonthAsString Now NumberFormat ParagraphFormat ParseDateTime ' + - 'Pi PrecisionEvaluate PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow QueryConvertForGrid QueryNew QuerySetCell QuotedValueList Rand ' + - 'Randomize RandRange REFind REFindNoCase ReleaseComObject REMatch REMatchNoCase RemoveChars RepeatString Replace ReplaceList ReplaceNoCase ' + - 'REReplace REReplaceNoCase Reverse Right RJustify Round RTrim Second SendGatewayMessage SerializeJSON SetEncoding SetLocale SetProfileString ' + - 'SetVariable Sgn Sin Sleep SpanExcluding SpanIncluding Sqr StripCR StructAppend StructClear StructCopy StructCount StructDelete StructFind ' + - 'StructFindKey StructFindValue StructGet StructInsert StructIsEmpty StructKeyArray StructKeyExists StructKeyList StructKeyList StructNew ' + - 'StructSort StructUpdate Tan TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase URLDecode URLEncodedFormat URLSessionFormat Val ' + - 'ValueList VerifyClient Week Wrap Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform ' + - 'XmlValidate Year YesNoFormat'; - - var keywords = 'cfabort cfajaximport cfajaxproxy cfapplet cfapplication cfargument cfassociate cfbreak cfcache cfcalendar ' + - 'cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection cfcomponent cfcontent cfcookie cfdbinfo ' + - 'cfdefaultcase cfdirectory cfdiv cfdocument cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror ' + - 'cfexchangecalendar cfexchangeconnection cfexchangecontact cfexchangefilter cfexchangemail cfexchangetask ' + - 'cfexecute cfexit cffeed cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid cfgridcolumn ' + - 'cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif cfimage cfimport cfinclude cfindex ' + - 'cfinput cfinsert cfinterface cfinvoke cfinvokeargument cflayout cflayoutarea cfldap cflocation cflock cflog ' + - 'cflogin cfloginuser cflogout cfloop cfmail cfmailparam cfmailpart cfmenu cfmenuitem cfmodule cfNTauthenticate ' + - 'cfobject cfobjectcache cfoutput cfparam cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod cfpop ' + - 'cfpresentation cfpresentationslide cfpresenter cfprint cfprocessingdirective cfprocparam cfprocresult ' + - 'cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow cfreturn cfsavecontent cfschedule ' + - 'cfscript cfsearch cfselect cfset cfsetting cfsilent cfslider cfsprydataset cfstoredproc cfswitch cftable ' + - 'cftextarea cfthread cfthrow cftimer cftooltip cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx ' + - 'cfwindow cfxml cfzip cfzipparam'; - - var operators = 'all and any between cross in join like not null or outer some'; - - this.regexList = [ - { regex: new RegExp('--(.*)$', 'gm'), css: 'comments' }, // one line and multiline comments - { regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // single quoted strings - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings - { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // functions - { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such - { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword - ]; - } - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['coldfusion','cf']; - - SyntaxHighlighter.brushes.ColdFusion = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushCpp.js b/vendor/assets/javascripts/hl/shBrushCpp.js deleted file mode 100644 index 9f70d3aed..000000000 --- a/vendor/assets/javascripts/hl/shBrushCpp.js +++ /dev/null @@ -1,97 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Copyright 2006 Shin, YoungJin - - var datatypes = 'ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR ' + - 'DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH ' + - 'HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP ' + - 'HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY ' + - 'HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT ' + - 'HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE ' + - 'LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF ' + - 'LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR ' + - 'LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR ' + - 'PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT ' + - 'PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 ' + - 'POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR ' + - 'PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 ' + - 'PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT ' + - 'SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG ' + - 'ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM ' + - 'char bool short int __int32 __int64 __int8 __int16 long float double __wchar_t ' + - 'clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS ' + - 'FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t ' + - '__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t ' + - 'jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler ' + - 'sig_atomic_t size_t _stat __stat64 _stati64 terminate_function ' + - 'time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf ' + - 'va_list wchar_t wctrans_t wctype_t wint_t signed'; - - var keywords = 'break case catch class const __finally __exception __try ' + - 'const_cast continue private public protected __declspec ' + - 'default delete deprecated dllexport dllimport do dynamic_cast ' + - 'else enum explicit extern if for friend goto inline ' + - 'mutable naked namespace new noinline noreturn nothrow ' + - 'register reinterpret_cast return selectany ' + - 'sizeof static static_cast struct switch template this ' + - 'thread throw true false try typedef typeid typename union ' + - 'using uuid virtual void volatile whcar_t while'; - - var functions = 'assert isalnum isalpha iscntrl isdigit isgraph islower isprint' + - 'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' + - 'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' + - 'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' + - 'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' + - 'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' + - 'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' + - 'fwrite getc getchar gets perror printf putc putchar puts remove ' + - 'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' + - 'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' + - 'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' + - 'mbtowc qsort rand realloc srand strtod strtol strtoul system ' + - 'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' + - 'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' + - 'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' + - 'clock ctime difftime gmtime localtime mktime strftime time'; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments - { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings - { regex: /^ *#.*/gm, css: 'preprocessor' }, - { regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'color1 bold' }, - { regex: new RegExp(this.getKeywords(functions), 'gm'), css: 'functions bold' }, - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword bold' } - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['cpp', 'c']; - - SyntaxHighlighter.brushes.Cpp = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushCss.js b/vendor/assets/javascripts/hl/shBrushCss.js deleted file mode 100644 index 4297a9a64..000000000 --- a/vendor/assets/javascripts/hl/shBrushCss.js +++ /dev/null @@ -1,91 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - function getKeywordsCSS(str) - { - return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b'; - }; - - function getValuesCSS(str) - { - return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b'; - }; - - var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' + - 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' + - 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' + - 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' + - 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' + - 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' + - 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' + - 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' + - 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' + - 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' + - 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' + - 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' + - 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' + - 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index'; - - var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+ - 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+ - 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+ - 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+ - 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+ - 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+ - 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+ - 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+ - 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+ - 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+ - 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+ - 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+ - 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+ - 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow'; - - var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif'; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings - { regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors - { regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g, css: 'value' }, // sizes - { regex: /!important/g, css: 'color3' }, // !important - { regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords - { regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values - { regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts - ]; - - this.forHtmlScript({ - left: /(<|<)\s*style.*?(>|>)/gi, - right: /(<|<)\/\s*style\s*(>|>)/gi - }); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['css']; - - SyntaxHighlighter.brushes.CSS = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushDelphi.js b/vendor/assets/javascripts/hl/shBrushDelphi.js deleted file mode 100644 index e1060d446..000000000 --- a/vendor/assets/javascripts/hl/shBrushDelphi.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - var keywords = 'abs addr and ansichar ansistring array as asm begin boolean byte cardinal ' + - 'case char class comp const constructor currency destructor div do double ' + - 'downto else end except exports extended false file finalization finally ' + - 'for function goto if implementation in inherited int64 initialization ' + - 'integer interface is label library longint longword mod nil not object ' + - 'of on or packed pansichar pansistring pchar pcurrency pdatetime pextended ' + - 'pint64 pointer private procedure program property pshortstring pstring ' + - 'pvariant pwidechar pwidestring protected public published raise real real48 ' + - 'record repeat set shl shortint shortstring shr single smallint string then ' + - 'threadvar to true try type unit until uses val var varirnt while widechar ' + - 'widestring with word write writeln xor'; - - this.regexList = [ - { regex: /\(\*[\s\S]*?\*\)/gm, css: 'comments' }, // multiline comments (* *) - { regex: /{(?!\$)[\s\S]*?}/gm, css: 'comments' }, // multiline comments { } - { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings - { regex: /\{\$[a-zA-Z]+ .+\}/g, css: 'color1' }, // compiler Directives and Region tags - { regex: /\b[\d\.]+\b/g, css: 'value' }, // numbers 12345 - { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // numbers $F5D3 - { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['delphi', 'pascal', 'pas']; - - SyntaxHighlighter.brushes.Delphi = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushDiff.js b/vendor/assets/javascripts/hl/shBrushDiff.js deleted file mode 100644 index e9b14fc58..000000000 --- a/vendor/assets/javascripts/hl/shBrushDiff.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - this.regexList = [ - { regex: /^\+\+\+.*$/gm, css: 'color2' }, - { regex: /^\-\-\-.*$/gm, css: 'color2' }, - { regex: /^\s.*$/gm, css: 'color1' }, - { regex: /^@@.*@@$/gm, css: 'variable' }, - { regex: /^\+[^\+]{1}.*$/gm, css: 'string' }, - { regex: /^\-[^\-]{1}.*$/gm, css: 'comments' } - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['diff', 'patch']; - - SyntaxHighlighter.brushes.Diff = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushErlang.js b/vendor/assets/javascripts/hl/shBrushErlang.js deleted file mode 100644 index 6ba7d9da8..000000000 --- a/vendor/assets/javascripts/hl/shBrushErlang.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributed by Jean-Lou Dupont - // http://jldupont.blogspot.com/2009/06/erlang-syntax-highlighter.html - - // According to: http://erlang.org/doc/reference_manual/introduction.html#1.5 - var keywords = 'after and andalso band begin bnot bor bsl bsr bxor '+ - 'case catch cond div end fun if let not of or orelse '+ - 'query receive rem try when xor'+ - // additional - ' module export import define'; - - this.regexList = [ - { regex: new RegExp("[A-Z][A-Za-z0-9_]+", 'g'), css: 'constants' }, - { regex: new RegExp("\\%.+", 'gm'), css: 'comments' }, - { regex: new RegExp("\\?[A-Za-z0-9_]+", 'g'), css: 'preprocessor' }, - { regex: new RegExp("[a-z0-9_]+:[a-z0-9_]+", 'g'), css: 'functions' }, - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['erl', 'erlang']; - - SyntaxHighlighter.brushes.Erland = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushGroovy.js b/vendor/assets/javascripts/hl/shBrushGroovy.js deleted file mode 100644 index 6ec5c1852..000000000 --- a/vendor/assets/javascripts/hl/shBrushGroovy.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributed by Andres Almiray - // http://jroller.com/aalmiray/entry/nice_source_code_syntax_highlighter - - var keywords = 'as assert break case catch class continue def default do else extends finally ' + - 'if in implements import instanceof interface new package property return switch ' + - 'throw throws try while public protected private static'; - var types = 'void boolean byte char short int long float double'; - var constants = 'null'; - var methods = 'allProperties count get size '+ - 'collect each eachProperty eachPropertyName eachWithIndex find findAll ' + - 'findIndexOf grep inject max min reverseEach sort ' + - 'asImmutable asSynchronized flatten intersect join pop reverse subMap toList ' + - 'padRight padLeft contains eachMatch toCharacter toLong toUrl tokenize ' + - 'eachFile eachFileRecurse eachB yte eachLine readBytes readLine getText ' + - 'splitEachLine withReader append encodeBase64 decodeBase64 filterLine ' + - 'transformChar transformLine withOutputStream withPrintWriter withStream ' + - 'withStreams withWriter withWriterAppend write writeLine '+ - 'dump inspect invokeMethod print println step times upto use waitForOrKill '+ - 'getText'; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments - { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings - { regex: /""".*"""/g, css: 'string' }, // GStrings - { regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'), css: 'value' }, // numbers - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // goovy keyword - { regex: new RegExp(this.getKeywords(types), 'gm'), css: 'color1' }, // goovy/java type - { regex: new RegExp(this.getKeywords(constants), 'gm'), css: 'constants' }, // constants - { regex: new RegExp(this.getKeywords(methods), 'gm'), css: 'functions' } // methods - ]; - - this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); - } - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['groovy']; - - SyntaxHighlighter.brushes.Groovy = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushJScript.js b/vendor/assets/javascripts/hl/shBrushJScript.js deleted file mode 100644 index ff98daba1..000000000 --- a/vendor/assets/javascripts/hl/shBrushJScript.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - var keywords = 'break case catch continue ' + - 'default delete do else false ' + - 'for function if in instanceof ' + - 'new null return super switch ' + - 'this throw true try typeof var while with' - ; - - var r = SyntaxHighlighter.regexLib; - - this.regexList = [ - { regex: r.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings - { regex: r.multiLineSingleQuotedString, css: 'string' }, // single quoted strings - { regex: r.singleLineCComments, css: 'comments' }, // one line comments - { regex: r.multiLineCComments, css: 'comments' }, // multiline comments - { regex: /\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keywords - ]; - - this.forHtmlScript(r.scriptScriptTags); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['js', 'jscript', 'javascript']; - - SyntaxHighlighter.brushes.JScript = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushJava.js b/vendor/assets/javascripts/hl/shBrushJava.js deleted file mode 100644 index d692fd638..000000000 --- a/vendor/assets/javascripts/hl/shBrushJava.js +++ /dev/null @@ -1,57 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - var keywords = 'abstract assert boolean break byte case catch char class const ' + - 'continue default do double else enum extends ' + - 'false final finally float for goto if implements import ' + - 'instanceof int interface long native new null ' + - 'package private protected public return ' + - 'short static strictfp super switch synchronized this throw throws true ' + - 'transient try void volatile while'; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments - { regex: /\/\*([^\*][\s\S]*)?\*\//gm, css: 'comments' }, // multiline comments - { regex: /\/\*(?!\*\/)\*[\s\S]*?\*\//gm, css: 'preprocessor' }, // documentation comments - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings - { regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers - { regex: /(?!\@interface\b)\@[\$\w]+\b/g, css: 'color1' }, // annotation @anno - { regex: /\@interface\b/g, css: 'color2' }, // @interface keyword - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // java keyword - ]; - - this.forHtmlScript({ - left : /(<|<)%[@!=]?/g, - right : /%(>|>)/g - }); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['java']; - - SyntaxHighlighter.brushes.Java = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushJavaFX.js b/vendor/assets/javascripts/hl/shBrushJavaFX.js deleted file mode 100644 index 1a150a6ad..000000000 --- a/vendor/assets/javascripts/hl/shBrushJavaFX.js +++ /dev/null @@ -1,58 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributed by Patrick Webster - // http://patrickwebster.blogspot.com/2009/04/javafx-brush-for-syntaxhighlighter.html - var datatypes = 'Boolean Byte Character Double Duration ' - + 'Float Integer Long Number Short String Void' - ; - - var keywords = 'abstract after and as assert at before bind bound break catch class ' - + 'continue def delete else exclusive extends false finally first for from ' - + 'function if import in indexof init insert instanceof into inverse last ' - + 'lazy mixin mod nativearray new not null on or override package postinit ' - + 'protected public public-init public-read replace return reverse sizeof ' - + 'step super then this throw true try tween typeof var where while with ' - + 'attribute let private readonly static trigger' - ; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, - { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, - { regex: /(-?\.?)(\b(\d*\.?\d+|\d+\.?\d*)(e[+-]?\d+)?|0x[a-f\d]+)\b\.?/gi, css: 'color2' }, // numbers - { regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'variable' }, // datatypes - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } - ]; - this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['jfx', 'javafx']; - - SyntaxHighlighter.brushes.JavaFX = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushPerl.js b/vendor/assets/javascripts/hl/shBrushPerl.js deleted file mode 100644 index d94a2e0ec..000000000 --- a/vendor/assets/javascripts/hl/shBrushPerl.js +++ /dev/null @@ -1,72 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributed by David Simmons-Duffin and Marty Kube - - var funcs = - 'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' + - 'chroot close closedir connect cos crypt defined delete each endgrent ' + - 'endhostent endnetent endprotoent endpwent endservent eof exec exists ' + - 'exp fcntl fileno flock fork format formline getc getgrent getgrgid ' + - 'getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr ' + - 'getnetbyname getnetent getpeername getpgrp getppid getpriority ' + - 'getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid ' + - 'getservbyname getservbyport getservent getsockname getsockopt glob ' + - 'gmtime grep hex index int ioctl join keys kill lc lcfirst length link ' + - 'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' + - 'oct open opendir ord pack pipe pop pos print printf prototype push ' + - 'quotemeta rand read readdir readline readlink readpipe recv rename ' + - 'reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl ' + - 'semget semop send setgrent sethostent setnetent setpgrp setpriority ' + - 'setprotoent setpwent setservent setsockopt shift shmctl shmget shmread ' + - 'shmwrite shutdown sin sleep socket socketpair sort splice split sprintf ' + - 'sqrt srand stat study substr symlink syscall sysopen sysread sysseek ' + - 'system syswrite tell telldir time times tr truncate uc ucfirst umask ' + - 'undef unlink unpack unshift utime values vec wait waitpid warn write'; - - var keywords = - 'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' + - 'for foreach goto if import last local my next no our package redo ref ' + - 'require return sub tie tied unless untie until use wantarray while'; - - this.regexList = [ - { regex: new RegExp('#[^!].*$', 'gm'), css: 'comments' }, - { regex: new RegExp('^\\s*#!.*$', 'gm'), css: 'preprocessor' }, // shebang - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, - { regex: new RegExp('(\\$|@|%)\\w+', 'g'), css: 'variable' }, - { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } - ]; - - this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags); - } - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['perl', 'Perl', 'pl']; - - SyntaxHighlighter.brushes.Perl = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushPhp.js b/vendor/assets/javascripts/hl/shBrushPhp.js deleted file mode 100644 index 95e6e4325..000000000 --- a/vendor/assets/javascripts/hl/shBrushPhp.js +++ /dev/null @@ -1,88 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - var funcs = 'abs acos acosh addcslashes addslashes ' + - 'array_change_key_case array_chunk array_combine array_count_values array_diff '+ - 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+ - 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+ - 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+ - 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+ - 'array_push array_rand array_reduce array_reverse array_search array_shift '+ - 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+ - 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+ - 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+ - 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+ - 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+ - 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+ - 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+ - 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+ - 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+ - 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+ - 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+ - 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+ - 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+ - 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+ - 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+ - 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+ - 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+ - 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+ - 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+ - 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+ - 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+ - 'parse_ini_file parse_str parse_url passthru pathinfo print readlink realpath rewind rewinddir rmdir '+ - 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+ - 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+ - 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+ - 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+ - 'strtoupper strtr strval substr substr_compare'; - - var keywords = 'abstract and array as break case catch cfunction class clone const continue declare default die do ' + - 'else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach ' + - 'function include include_once global goto if implements interface instanceof namespace new ' + - 'old_function or private protected public return require require_once static switch ' + - 'throw try use var while xor '; - - var constants = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__'; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments - { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings - { regex: /\$\w+/g, css: 'variable' }, // variables - { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // common functions - { regex: new RegExp(this.getKeywords(constants), 'gmi'), css: 'constants' }, // constants - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword - ]; - - this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['php']; - - SyntaxHighlighter.brushes.Php = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushPlain.js b/vendor/assets/javascripts/hl/shBrushPlain.js deleted file mode 100644 index 9f7d9e90c..000000000 --- a/vendor/assets/javascripts/hl/shBrushPlain.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['text', 'plain']; - - SyntaxHighlighter.brushes.Plain = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushPowerShell.js b/vendor/assets/javascripts/hl/shBrushPowerShell.js deleted file mode 100644 index 0be175296..000000000 --- a/vendor/assets/javascripts/hl/shBrushPowerShell.js +++ /dev/null @@ -1,74 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributes by B.v.Zanten, Getronics - // http://confluence.atlassian.com/display/CONFEXT/New+Code+Macro - - var keywords = 'Add-Content Add-History Add-Member Add-PSSnapin Clear(-Content)? Clear-Item ' + - 'Clear-ItemProperty Clear-Variable Compare-Object ConvertFrom-SecureString Convert-Path ' + - 'ConvertTo-Html ConvertTo-SecureString Copy(-Item)? Copy-ItemProperty Export-Alias ' + - 'Export-Clixml Export-Console Export-Csv ForEach(-Object)? Format-Custom Format-List ' + - 'Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command ' + - 'Get-Content Get-Credential Get-Culture Get-Date Get-EventLog Get-ExecutionPolicy ' + - 'Get-Help Get-History Get-Host Get-Item Get-ItemProperty Get-Location Get-Member ' + - 'Get-PfxCertificate Get-Process Get-PSDrive Get-PSProvider Get-PSSnapin Get-Service ' + - 'Get-TraceSource Get-UICulture Get-Unique Get-Variable Get-WmiObject Group-Object ' + - 'Import-Alias Import-Clixml Import-Csv Invoke-Expression Invoke-History Invoke-Item ' + - 'Join-Path Measure-Command Measure-Object Move(-Item)? Move-ItemProperty New-Alias ' + - 'New-Item New-ItemProperty New-Object New-PSDrive New-Service New-TimeSpan ' + - 'New-Variable Out-Default Out-File Out-Host Out-Null Out-Printer Out-String Pop-Location ' + - 'Push-Location Read-Host Remove-Item Remove-ItemProperty Remove-PSDrive Remove-PSSnapin ' + - 'Remove-Variable Rename-Item Rename-ItemProperty Resolve-Path Restart-Service Resume-Service ' + - 'Select-Object Select-String Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content ' + - 'Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-Location Set-PSDebug ' + - 'Set-Service Set-TraceSource Set(-Variable)? Sort-Object Split-Path Start-Service ' + - 'Start-Sleep Start-Transcript Stop-Process Stop-Service Stop-Transcript Suspend-Service ' + - 'Tee-Object Test-Path Trace-Command Update-FormatData Update-TypeData Where(-Object)? ' + - 'Write-Debug Write-Error Write(-Host)? Write-Output Write-Progress Write-Verbose Write-Warning'; - var alias = 'ac asnp clc cli clp clv cpi cpp cvpa diff epal epcsv fc fl ' + - 'ft fw gal gc gci gcm gdr ghy gi gl gm gp gps group gsv ' + - 'gsnp gu gv gwmi iex ihy ii ipal ipcsv mi mp nal ndr ni nv oh rdr ' + - 'ri rni rnp rp rsnp rv rvpa sal sasv sc select si sl sleep sort sp ' + - 'spps spsv sv tee cat cd cp h history kill lp ls ' + - 'mount mv popd ps pushd pwd r rm rmdir echo cls chdir del dir ' + - 'erase rd ren type % \\?'; - - this.regexList = [ - { regex: /#.*$/gm, css: 'comments' }, // one line comments - { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // variables $Computer1 - { regex: /\-[a-zA-Z]+\b/g, css: 'keyword' }, // Operators -not -and -eq - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings - { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' }, - { regex: new RegExp(this.getKeywords(alias), 'gmi'), css: 'keyword' } - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['powershell', 'ps']; - - SyntaxHighlighter.brushes.PowerShell = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushPython.js b/vendor/assets/javascripts/hl/shBrushPython.js deleted file mode 100644 index ce7746297..000000000 --- a/vendor/assets/javascripts/hl/shBrushPython.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributed by Gheorghe Milas and Ahmad Sherif - - var keywords = 'and assert break class continue def del elif else ' + - 'except exec finally for from global if import in is ' + - 'lambda not or pass print raise return try yield while'; - - var funcs = '__import__ abs all any apply basestring bin bool buffer callable ' + - 'chr classmethod cmp coerce compile complex delattr dict dir ' + - 'divmod enumerate eval execfile file filter float format frozenset ' + - 'getattr globals hasattr hash help hex id input int intern ' + - 'isinstance issubclass iter len list locals long map max min next ' + - 'object oct open ord pow print property range raw_input reduce ' + - 'reload repr reversed round set setattr slice sorted staticmethod ' + - 'str sum super tuple type type unichr unicode vars xrange zip'; - - var special = 'None True False self cls class_'; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, - { regex: /^\s*@\w+/gm, css: 'decorator' }, - { regex: /(['\"]{3})([^\1])*?\1/gm, css: 'comments' }, - { regex: /"(?!")(?:\.|\\\"|[^\""\n])*"/gm, css: 'string' }, - { regex: /'(?!')(?:\.|(\\\')|[^\''\n])*'/gm, css: 'string' }, - { regex: /\+|\-|\*|\/|\%|=|==/gm, css: 'keyword' }, - { regex: /\b\d+\.?\w*/g, css: 'value' }, - { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, - { regex: new RegExp(this.getKeywords(special), 'gm'), css: 'color1' } - ]; - - this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['py', 'python']; - - SyntaxHighlighter.brushes.Python = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushRuby.js b/vendor/assets/javascripts/hl/shBrushRuby.js deleted file mode 100644 index ff82130a7..000000000 --- a/vendor/assets/javascripts/hl/shBrushRuby.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributed by Erik Peterson. - - var keywords = 'alias and BEGIN begin break case class def define_method defined do each else elsif ' + - 'END end ensure false for if in module new next nil not or raise redo rescue retry return ' + - 'self super then throw true undef unless until when while yield'; - - var builtins = 'Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload ' + - 'Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol ' + - 'ThreadGroup Thread Time TrueClass'; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings - { regex: /\b[A-Z0-9_]+\b/g, css: 'constants' }, // constants - { regex: /:[a-z][A-Za-z0-9_]*/g, css: 'color2' }, // symbols - { regex: /(\$|@@|@)\w+/g, css: 'variable bold' }, // $global, @instance, and @@class variables - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords - { regex: new RegExp(this.getKeywords(builtins), 'gm'), css: 'color1' } // builtins - ]; - - this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['ruby', 'rails', 'ror', 'rb']; - - SyntaxHighlighter.brushes.Ruby = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushSass.js b/vendor/assets/javascripts/hl/shBrushSass.js deleted file mode 100644 index aa04da099..000000000 --- a/vendor/assets/javascripts/hl/shBrushSass.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - function getKeywordsCSS(str) - { - return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b'; - }; - - function getValuesCSS(str) - { - return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b'; - }; - - var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' + - 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' + - 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' + - 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' + - 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' + - 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' + - 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' + - 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' + - 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' + - 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' + - 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' + - 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' + - 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' + - 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index'; - - var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+ - 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+ - 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero digits disc dotted double '+ - 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+ - 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+ - 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+ - 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+ - 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+ - 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+ - 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+ - 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+ - 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+ - 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+ - 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow'; - - var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif'; - - var statements = '!important !default'; - var preprocessor = '@import @extend @debug @warn @if @for @while @mixin @include'; - - var r = SyntaxHighlighter.regexLib; - - this.regexList = [ - { regex: r.multiLineCComments, css: 'comments' }, // multiline comments - { regex: r.singleLineCComments, css: 'comments' }, // singleline comments - { regex: r.doubleQuotedString, css: 'string' }, // double quoted strings - { regex: r.singleQuotedString, css: 'string' }, // single quoted strings - { regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors - { regex: /\b(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)\b/g, css: 'value' }, // sizes - { regex: /\$\w+/g, css: 'variable' }, // variables - { regex: new RegExp(this.getKeywords(statements), 'g'), css: 'color3' }, // statements - { regex: new RegExp(this.getKeywords(preprocessor), 'g'), css: 'preprocessor' }, // preprocessor - { regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords - { regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values - { regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['sass', 'scss']; - - SyntaxHighlighter.brushes.Sass = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushScala.js b/vendor/assets/javascripts/hl/shBrushScala.js deleted file mode 100644 index 4b0b6f04d..000000000 --- a/vendor/assets/javascripts/hl/shBrushScala.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - // Contributed by Yegor Jbanov and David Bernard. - - var keywords = 'val sealed case def true trait implicit forSome import match object null finally super ' + - 'override try lazy for var catch throw type extends class while with new final yield abstract ' + - 'else do if return protected private this package false'; - - var keyops = '[_:=><%#@]+'; - - this.regexList = [ - { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments - { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments - { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // multi-line strings - { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double-quoted string - { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings - { regex: /0x[a-f0-9]+|\d+(\.\d+)?/gi, css: 'value' }, // numbers - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords - { regex: new RegExp(keyops, 'gm'), css: 'keyword' } // scala keyword - ]; - } - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['scala']; - - SyntaxHighlighter.brushes.Scala = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushSql.js b/vendor/assets/javascripts/hl/shBrushSql.js deleted file mode 100644 index 5c2cd8806..000000000 --- a/vendor/assets/javascripts/hl/shBrushSql.js +++ /dev/null @@ -1,66 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - var funcs = 'abs avg case cast coalesce convert count current_timestamp ' + - 'current_user day isnull left lower month nullif replace right ' + - 'session_user space substring sum system_user upper user year'; - - var keywords = 'absolute action add after alter as asc at authorization begin bigint ' + - 'binary bit by cascade char character check checkpoint close collate ' + - 'column commit committed connect connection constraint contains continue ' + - 'create cube current current_date current_time cursor database date ' + - 'deallocate dec decimal declare default delete desc distinct double drop ' + - 'dynamic else end end-exec escape except exec execute false fetch first ' + - 'float for force foreign forward free from full function global goto grant ' + - 'group grouping having hour ignore index inner insensitive insert instead ' + - 'int integer intersect into is isolation key last level load local max min ' + - 'minute modify move name national nchar next no numeric of off on only ' + - 'open option order out output partial password precision prepare primary ' + - 'prior privileges procedure public read real references relative repeatable ' + - 'restrict return returns revoke rollback rollup rows rule schema scroll ' + - 'second section select sequence serializable set size smallint static ' + - 'statistics table temp temporary then time timestamp to top transaction ' + - 'translation trigger true truncate uncommitted union unique update values ' + - 'varchar varying view when where with work'; - - var operators = 'all and any between cross in join like not null or outer some'; - - this.regexList = [ - { regex: /--(.*)$/gm, css: 'comments' }, // one line and multiline comments - { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings - { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // single quoted strings - { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'color2' }, // functions - { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such - { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['sql']; - - SyntaxHighlighter.brushes.Sql = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); - diff --git a/vendor/assets/javascripts/hl/shBrushVb.js b/vendor/assets/javascripts/hl/shBrushVb.js deleted file mode 100644 index be845dc0b..000000000 --- a/vendor/assets/javascripts/hl/shBrushVb.js +++ /dev/null @@ -1,56 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - var keywords = 'AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto ' + - 'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate ' + - 'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType ' + - 'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each ' + - 'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend ' + - 'Function Get GetType GoSub GoTo Handles If Implements Imports In ' + - 'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module ' + - 'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing ' + - 'NotInheritable NotOverridable Object On Option Optional Or OrElse ' + - 'Overloads Overridable Overrides ParamArray Preserve Private Property ' + - 'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume ' + - 'Return Select Set Shadows Shared Short Single Static Step Stop String ' + - 'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until ' + - 'Variant When While With WithEvents WriteOnly Xor'; - - this.regexList = [ - { regex: /'.*$/gm, css: 'comments' }, // one line comments - { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings - { regex: /^\s*#.*$/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion - { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // vb keyword - ]; - - this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['vb', 'vbnet']; - - SyntaxHighlighter.brushes.Vb = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shBrushXml.js b/vendor/assets/javascripts/hl/shBrushXml.js deleted file mode 100644 index 69d9fd0b1..000000000 --- a/vendor/assets/javascripts/hl/shBrushXml.js +++ /dev/null @@ -1,69 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -;(function() -{ - // CommonJS - typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; - - function Brush() - { - function process(match, regexInfo) - { - var constructor = SyntaxHighlighter.Match, - code = match[0], - tag = new XRegExp('(<|<)[\\s\\/\\?]*(?[:\\w-\\.]+)', 'xg').exec(code), - result = [] - ; - - if (match.attributes != null) - { - var attributes, - regex = new XRegExp('(? [\\w:\\-\\.]+)' + - '\\s*=\\s*' + - '(? ".*?"|\'.*?\'|\\w+)', - 'xg'); - - while ((attributes = regex.exec(code)) != null) - { - result.push(new constructor(attributes.name, match.index + attributes.index, 'color1')); - result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string')); - } - } - - if (tag != null) - result.push( - new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword') - ); - - return result; - } - - this.regexList = [ - { regex: new XRegExp('(\\<|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\>|>)', 'gm'), css: 'color2' }, // - { regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // - { regex: new XRegExp('(<|<)[\\s\\/\\?]*(\\w+)(?.*?)[\\s\\/\\?]*(>|>)', 'sg'), func: process } - ]; - }; - - Brush.prototype = new SyntaxHighlighter.Highlighter(); - Brush.aliases = ['xml', 'xhtml', 'xslt', 'html']; - - SyntaxHighlighter.brushes.Xml = Brush; - - // CommonJS - typeof(exports) != 'undefined' ? exports.Brush = Brush : null; -})(); diff --git a/vendor/assets/javascripts/hl/shCore.js b/vendor/assets/javascripts/hl/shCore.js deleted file mode 100644 index b47b64547..000000000 --- a/vendor/assets/javascripts/hl/shCore.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('K M;I(M)1S 2U("2a\'t 4k M 4K 2g 3l 4G 4H");(6(){6 r(f,e){I(!M.1R(f))1S 3m("3s 15 4R");K a=f.1w;f=M(f.1m,t(f)+(e||""));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?"g":"")+(f.4s?"i":"")+(f.4p?"m":"")+(f.4v?"x":"")+(f.3n?"y":"")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a-1},3d:6(g){e+=g}};c1&&p(e,"")>-1){a=15(J.1m,n.Q.W(t(J),"g",""));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;be.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()==="3f"&&e.1i("${")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+="";I(1j e==="6")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;dd.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||"":"$")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+"",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,"")||h)b.U("")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\(\\?#[^)]*\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?"":"(?:)"});M.1h(/\\((?!\\?)/,6(){J.19.U(N);H"("});M.1h(/\\(\\?<([$\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H"("});M.1h(/\\\\k<([\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?"\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?"":"(?:)"):f[0]});M.1h(/\\[\\^?]/,6(f){H f[0]==="[]"?"\\\\b\\\\B":"[\\\\s\\\\S]"});M.1h(/^\\(\\?([5A]+)\\)/,6(f){J.3d(f[1]);H""});M.1h(/(?:\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?"":"(?:)"},M.1B,6(){H J.2K("x")});M.1h(/\\./,6(){H"[\\\\s\\\\S]"},M.1B,6(){H J.2K("s")})})();1j 2e!="1d"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=" "+b)}6 t(a){H a.1i("3e")==0?a:"3e"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={"#":"1c",".":"1l"}[b.1o(0,1)]||"3h",g,i;g=h!="3h"?b.1o(1):b.5u();I((a[h]||"").1i(g)!=-1)H a;O(a=0;d&&a\'+c+""});H a}6 n(a,b){a.1e("\\n");O(K c="",d=0;d<50;d++)c+=" ";H a=v(a,6(h){I(h.1i("\\t")==-1)H h;O(K g=0;(g=h.1i("\\t"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\s+|\\s+$/g,"")}6 D(a,b){I(a.Pb.P)H 1;Y I(a.Lb.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i=="3f")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d="",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\'\'+c+""+d})}6 z(){O(K a=1E.36("1k"),b=[],c=0;c<1z 4I="1Z://2y.3L.3K/4L/5L"><3J><4N 1Z-4M="5G-5M" 6K="2O/1z; 6J=6I-8" /><1t>6L 1v<3B 1L="25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;">1v3v 3.0.76 (72 73 3x)1Z://3u.2w/1v70 17 6U 71.6T 6X-3x 6Y 6D.6t 61 60 J 1k, 5Z 5R 5V <2R/>5U 5T 5S!\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\/\\*[\\s\\S]*?\\*\\//2c,6m:/\\/\\/.*$/2c,6l:/#.*$/2c,6k:/"([^\\\\"\\n]|\\\\.)*"/g,6o:/\'([^\\\\\'\\n]|\\\\.)*\'/g,6p:1f M(\'"([^\\\\\\\\"]|\\\\\\\\.)*"\',"3z"),6s:1f M("\'([^\\\\\\\\\']|\\\\\\\\.)*\'","3z"),6q:/(&1y;|<)!--[\\s\\S]*?--(&1G;|>)/2c,3M:/\\w+:\\/\\/[\\w-.\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\?=?/g,1b:/\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\/\\s*1k\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\'\',d=e.16.2x,h=d.2X,g=0;g";H c},2o:6(a,b,c){H\'<2W>\'+c+""},2b:6(a){K b=a.1F,c=b.1l||"";b=B(p(b,".20",R).1c);K d=6(h){H(h=15(h+"6f(\\\\w+)").X(c))?h[1]:N}("6g");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:["21","2P"],21:{1H:6(a){I(a.V("2l")!=R)H"";K b=a.V("1t");H e.16.2o(a,"21",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q("47","")}},2P:{2B:6(){K a="68=0";a+=", 18="+(31.30-33)/2+", 32="+(31.2Z-2Y)/2+", 30=33, 2Z=2Y";a=a.Q(/^,/,"");a=1P.6Z("","38",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h(.*?))\\\\]$"),s=1f M("(?<27>[\\\\w-]+)\\\\s*:\\\\s*(?<1T>[\\\\w-%#]+|\\\\[.*?\\\\]|\\".*?\\"|\'.*?\')\\\\s*;?","g");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\'"]|[\'"]$/g,"");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\s*,\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||"")!="")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||"")!="")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,"4k",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;md)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P\'+c+""},3Q:6(a,b){K c="",d=a.1e("\\n").L,h=2u(J.V("2i-1s")),g=J.V("2z-1s-2t");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i\'+j+"":"")+i)}H a},4f:6(a){H a?"<4a>"+a+"":""},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+" ":""}O(K d=0,h="",g=J.V("1D",""),i=0;i|&1y;2R\\s*\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,"\\n");I(e.13.44==R)b=b.Q(h,"");b=b.1e("\\n");h=/^\\s*/;g=4Q;O(K i=0;i0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i\'+(J.V("16")?e.16.1H(J):"")+\'<3Z 5z="0" 5H="0" 5J="0">\'+J.4f(J.V("1t"))+"<3T><3P>"+(1u?\'<2d 1g="1u">\'+J.3Q(a)+"":"")+\'<2d 1g="17">\'+b+""},2F:6(a){I(a===N)a="";J.17=a;K b=J.3Y("T");b.3X=J.1H(a);J.V("16")&&w(p(b,".16"),"5c",e.16.2b);J.V("3V-17")&&w(p(b,".17"),"56",f);H b},2Q:6(a){J.1c=""+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V("2k")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\s+|\\s+$/g,"").Q(/\\s+/g,"|");H"\\\\b(?:"+a+")\\\\b"},5f:6(a){J.28={18:{1I:a.18,23:"1k"},1b:{1I:a.1b,23:"1k"},17:1f M("(?<18>"+a.18.1m+")(?<17>.*?)(?<1b>"+a.1b.1m+")","5o")}}};H e}();1j 2e!="1d"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{})) diff --git a/vendor/assets/javascripts/hl/shLegacy.js b/vendor/assets/javascripts/hl/shLegacy.js deleted file mode 100644 index 6d9fd4d19..000000000 --- a/vendor/assets/javascripts/hl/shLegacy.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * SyntaxHighlighter - * http://alexgorbatchev.com/SyntaxHighlighter - * - * SyntaxHighlighter is donationware. If you are using it, please donate. - * http://alexgorbatchev.com/SyntaxHighlighter/donate.html - * - * @version - * 3.0.83 (July 02 2010) - * - * @copyright - * Copyright (C) 2004-2010 Alex Gorbatchev. - * - * @license - * Dual licensed under the MIT and GPL licenses. - */ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 u={8:{}};u.8={A:4(c,k,l,m,n,o){4 d(a,b){2 a!=1?a:b}4 f(a){2 a!=1?a.E():1}c=c.I(":");3 g=c[0],e={};t={"r":K};M=1;5=8.5;9(3 j R c)e[c[j]]="r";k=f(d(k,5.C));l=f(d(l,5.D));m=f(d(m,5.s));o=f(d(o,5.Q));n=f(d(n,5["x-y"]));2{P:g,C:d(t[e.O],k),D:d(t[e.N],l),s:d({"r":r}[e.s],m),"x-y":d(4(a,b){9(3 h=T S("^"+b+"\\\\[(?\\\\w+)\\\\]$","U"),i=1,p=0;p