diff --git a/app/assets/images/404.png b/app/assets/images/404.png new file mode 100644 index 000000000..0c6ce2f7b Binary files /dev/null and b/app/assets/images/404.png differ diff --git a/app/assets/images/ava-big.png b/app/assets/images/ava-big.png new file mode 100644 index 000000000..04e5f04bb Binary files /dev/null and b/app/assets/images/ava-big.png differ diff --git a/app/assets/images/bg-signup.png b/app/assets/images/bg-signup.png new file mode 100644 index 000000000..79676f161 Binary files /dev/null and b/app/assets/images/bg-signup.png differ diff --git a/app/assets/images/button-green-disabled.png b/app/assets/images/button-green-disabled.png new file mode 100644 index 000000000..21159cb78 Binary files /dev/null and b/app/assets/images/button-green-disabled.png differ diff --git a/app/assets/images/button-green-hover.png b/app/assets/images/button-green-hover.png new file mode 100644 index 000000000..b639aa0ab Binary files /dev/null and b/app/assets/images/button-green-hover.png differ diff --git a/app/assets/images/button-green-normal.png b/app/assets/images/button-green-normal.png new file mode 100644 index 000000000..5fb90051c Binary files /dev/null and b/app/assets/images/button-green-normal.png differ diff --git a/app/assets/images/button-green-press.png b/app/assets/images/button-green-press.png new file mode 100644 index 000000000..66ce78c4a Binary files /dev/null and b/app/assets/images/button-green-press.png differ diff --git a/app/assets/images/checkbox.png b/app/assets/images/checkbox.png new file mode 100644 index 000000000..e17953086 Binary files /dev/null and b/app/assets/images/checkbox.png differ diff --git a/app/assets/images/error-groups.png b/app/assets/images/error-groups.png new file mode 100644 index 000000000..377b18da8 Binary files /dev/null and b/app/assets/images/error-groups.png differ diff --git a/app/assets/images/error-message.png b/app/assets/images/error-message.png new file mode 100644 index 000000000..029d009fe Binary files /dev/null and b/app/assets/images/error-message.png differ diff --git a/app/assets/images/git.png b/app/assets/images/git.png new file mode 100644 index 000000000..b998b78da Binary files /dev/null and b/app/assets/images/git.png differ diff --git a/app/assets/images/gplus.png b/app/assets/images/gplus.png new file mode 100644 index 000000000..80f6155e0 Binary files /dev/null and b/app/assets/images/gplus.png differ diff --git a/app/assets/images/logo.png b/app/assets/images/logo.png new file mode 100644 index 000000000..0fbda66db Binary files /dev/null and b/app/assets/images/logo.png differ diff --git a/app/assets/images/open.png b/app/assets/images/open.png new file mode 100644 index 000000000..5e1fcaabe Binary files /dev/null and b/app/assets/images/open.png differ diff --git a/app/assets/images/registration.png b/app/assets/images/registration.png new file mode 100644 index 000000000..78bcca569 Binary files /dev/null and b/app/assets/images/registration.png differ 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