Compare commits

...

124 Commits

Author SHA1 Message Date
mrliptontea
adc7e59d22 release v1.7.0 2015-09-25 21:27:39 +02:00
mrliptontea
cfdf261645 change license to MIT and move repo to my profile 2015-09-25 21:25:51 +02:00
mrliptontea
1e6cdd7cef fix source path for scss-lint config 2015-09-20 15:48:56 +02:00
mrliptontea
3e78878ed0 fix broken layout in codebutton window 2015-09-20 15:48:08 +02:00
mrliptontea
15a492a1b6 fix colored trackers in tooltips in Backlogs plugin 2015-08-24 09:08:57 +02:00
mrliptontea
5cafccd221 align green ticks to center in enumeration list 2015-08-12 20:40:02 +02:00
mrliptontea
610ee38c3d more generic form button layout and style 2015-08-12 20:38:47 +02:00
mrliptontea
b1154eb9ed no need for extra padding in the bottom of the sidebar with flexbox 2015-08-12 20:31:07 +02:00
mrliptontea
f5ef9dba70 use calc hack to prevent #content outgrowing the browser's window 2015-08-12 20:23:12 +02:00
mrliptontea
b7efd10a99 make sure that links and images won't break the layout 2015-08-12 09:29:35 +02:00
mrliptontea
9977d8e38e remove white-space: nowrap from external links, fixes #16 2015-08-11 21:39:12 +02:00
mrliptontea
dde298d630 fix query buttons text alignment after increasing default padding 2015-08-10 14:37:00 +02:00
mrliptontea
452e0fecf0 introduce $pagination-padding- variables 2015-08-10 14:34:35 +02:00
mrliptontea
edde6acb1f EOL conversion to unix 2015-08-10 11:04:39 +02:00
mrliptontea
433819c6ff fix pagination and export links alignment when there's only one page 2015-08-10 11:01:28 +02:00
mrliptontea
fa3225be82 few minor layout improvements 2015-08-10 10:52:34 +02:00
mrliptontea
25f7092f9c configurable list borders and highlighting 2015-08-10 00:00:09 +02:00
mrliptontea
bc8bde7756 visual tweaks: nicer shadows, improve datepickers layout 2015-08-09 23:30:01 +02:00
mrliptontea
1253489333 slightly change buttons' style 2015-08-09 22:22:30 +02:00
mrliptontea
42dfc57ee7 linting 2015-08-09 20:54:10 +02:00
mrliptontea
24db7ad013 fix animation issue when showing sidebar 2015-08-09 20:49:54 +02:00
mrliptontea
6c8432f627 use flexbox for content and sidebar layout, refs #15 2015-08-09 20:32:21 +02:00
mrliptontea
f12816dad7 add clearfix to #header, style optgroup, fixes #13 2015-07-14 19:19:35 +02:00
mrliptontea
71a0b1a92c coloring issue's title instead of link in Gantt diagram for overdue issues 2015-06-29 10:46:15 +02:00
mrliptontea
a350c369cc update npm packages 2015-06-10 22:27:58 +02:00
mrliptontea
56a5e1db49 satisfy linter 2015-06-10 22:24:29 +02:00
mrliptontea
6c102320b7 very postponed release of v1.6.0 2015-06-10 22:09:26 +02:00
mrliptontea
2140b58778 add possibility to insert company logo, resolves #11 2015-04-26 20:09:42 +02:00
mrliptontea
970da9d3b5 remove display:block from subject link, fixes #12 2015-04-24 17:22:46 +02:00
mrliptontea
654f4f9073 js refactoring - treat all modules as singletons 2015-04-17 15:51:09 +02:00
mrliptontea
aebbfbaf17 make main menu collapsible, just like the top menu, fixes #9
- rename TopMenuCollapse.js to MenuCollapse.js
- refactor MenuCollapse to handle two menus
- add dark image icons for arrow up and down
2015-04-17 15:39:25 +02:00
mrliptontea
7f518e0ff7 introduce $font-weight-normal and $font-weight-bold 2015-04-17 12:36:14 +02:00
mrliptontea
8abe193be4 distinguish header which anchor matches current URL fragment
- prepend "#" to header which is current :target
- introduce variables `$headings-anchor-color`, `$headings-anchor-color-active`
2015-04-17 12:17:39 +02:00
mrliptontea
5081a5874b corrections in SidebarToggler and HistoryTabs 2015-04-17 11:40:17 +02:00
mrliptontea
2cc2c83568 button for expanding/collapsing top menu, fixes #8
- introduce `$top-menu-collapse` flag and `$top-menu-collapse-breakpoint` variable
- add TopMenuCollapse.js script
- new base64 encoded images: arrow-up and arrow-down (white colored)
2015-04-17 11:30:27 +02:00
mrliptontea
3fd21ebb9c release v1.5.0 2015-04-15 12:25:54 +02:00
mrliptontea
5975ab9b5d update changelog 2015-04-15 12:16:53 +02:00
mrliptontea
13b11dcbca Merge branch 'issue-5' 2015-04-15 12:10:20 +02:00
mrliptontea
8a44905739 add default padding for tables, fixes #6 2015-04-15 12:09:51 +02:00
mrliptontea
2f4b08ba19 update instructions on customizing PurpleMine
update .gitignore file to file structure introduced in 581ea78
2015-04-15 12:05:43 +02:00
mrliptontea
d220db112a Add default color and styles for colored trackers links, fixes #5
- introduce $tracker-default-bg and $tracker-default-text variables
- move default colors to map
- introduce $tracker-custom-colors-map to make adding new colors and
  overriding default ones easy
- remove styles for issue links from mixin to avoid repetition
- update styles for backlogs plugin
2015-04-15 11:28:43 +02:00
mrliptontea
fbae203298 more appreciable strike through line on closed tasks 2015-04-14 11:46:45 +02:00
mrliptontea
0d97c6c930 release 1.4.0 2015-04-10 10:05:03 +02:00
mrliptontea
8b0631eb31 fix attachments layout for other uses than in issue's details 2015-04-09 17:20:30 +02:00
mrliptontea
115d7109ec prevent adding background image to .sort if Font Awesome icons are enabled, fixes #2 2015-04-09 17:08:54 +02:00
mrliptontea
1cb53dc85e fix blockquote's first and last child's margins in div.wiki 2015-04-08 10:39:45 +02:00
mrliptontea
9f701b0d05 add class toc-active-prev for highlighting TOC as active 2015-04-08 10:30:09 +02:00
mrliptontea
352e170786 introduce text-normal class for resetting font-weight 2015-04-07 14:35:28 +02:00
mrliptontea
f6a80dddb4 align images to the middle in headers 2015-04-07 14:00:05 +02:00
mrliptontea
f326d62550 squeeze .jstElements a little bit on smaller screens 2015-04-02 12:31:13 +02:00
mrliptontea
a13ae91b5f add Bootstrap helper classes 2015-04-02 12:21:18 +02:00
mrliptontea
51484c2e7e apply correct margin to <pre> 2015-04-02 11:15:25 +02:00
mrliptontea
5b370b2233 introduce option $wiki-page-more-vertical-space to improve wiki pages' readability even more 2015-04-02 11:14:43 +02:00
mrliptontea
3e9c05bd8f release 1.3.0 2015-04-01 11:27:58 +02:00
mrliptontea
fac8b8e5e2 fix minimum height of collapsible fieldset 2015-03-23 14:21:38 +01:00
mrliptontea
126181756f correct property order 2015-03-23 14:17:15 +01:00
mrliptontea
201e176587 embed custom image icons as base64 data 2015-03-23 14:12:51 +01:00
mrliptontea
fabbfc36e6 animate collapsible fieldsets 2015-03-23 13:39:48 +01:00
mrliptontea
6d8d876bf7 make column project aligned to center 2015-03-19 11:09:55 +01:00
mrliptontea
c22c8d9fda custom field default value will self adjust to needed width 2015-03-19 10:47:23 +01:00
mrliptontea
41578b8dd0 improve issue list text alignment in columns 2015-03-19 10:40:55 +01:00
mrliptontea
ee472a0187 make 'Associated revisions' look consistent with journal notes 2015-03-19 10:15:50 +01:00
mrliptontea
26ba4e1701 setTimeout is not needed to override drawRevisionGraph function 2015-03-19 09:53:21 +01:00
mrliptontea
7f03565012 override revision graph function on document ready 2015-03-18 10:30:48 +01:00
mrliptontea
4d099338e9 override Redmine's revision graph function to make it look better with this theme 2015-03-18 10:24:51 +01:00
mrliptontea
882aab73c5 update changelog 2015-03-16 10:28:08 +01:00
mrliptontea
e270c3a6a3 fix look of collapsible arrow in Firefox 2015-03-16 10:27:40 +01:00
mrliptontea
b5361cb864 adjust collapsed header height 2015-03-16 10:21:44 +01:00
mrliptontea
92a62fa7da better looking ui-dialog content padding 2015-03-16 10:15:11 +01:00
mrliptontea
b51db13a24 regular buttons (e.g. Cancel) in ui-dialogs looking like links 2015-03-16 10:14:36 +01:00
mrliptontea
8f94175851 prettier button for redmine_codebutton plugin 2015-03-16 10:03:07 +01:00
mrliptontea
d78c2fccc6 corrections for activities list 2015-03-14 00:11:02 +01:00
mrliptontea
eea1ee7412 fix the progress bar height on the issue page regression 2015-03-14 00:05:54 +01:00
mrliptontea
7470981f41 improve activities list look 2015-03-14 00:01:42 +01:00
mrliptontea
0d1f9e3744 add missing !default in variables 2015-03-13 23:19:29 +01:00
mrliptontea
4962216a09 separate diff colors from journal old and new value colors 2015-03-13 23:18:51 +01:00
mrliptontea
f6ba903f5d fix wiki editor 'help' icon and add Font Awesome icon for 'cut' action 2015-03-13 14:23:11 +01:00
mrliptontea
9a8eadc310 introduce styles for Redmine People plugin
- enhance styles for activities list
- reorganize styles for issue page
2015-03-13 14:13:13 +01:00
mrliptontea
160b457355 more plugin proof way of setting Font Awesome icons, fixes #1 2015-03-13 11:33:06 +01:00
mrliptontea
ccc9108bfb small vertical alignment correction and linting 2015-03-12 09:43:42 +01:00
mrliptontea
7e76a0b1c8 remove unnecessary padding from td.hours 2015-03-11 16:51:06 +01:00
mrliptontea
516fba06da adjusted hours column width and alignment to look better in some views 2015-03-11 16:11:07 +01:00
mrliptontea
1e906b2d73 improve file content view 2015-03-11 15:48:14 +01:00
mrliptontea
ae19f7a657 improve revision page layout
- introduce link-variant mixin
- introduce $changeset-{type}-color variables
- all forms in .contextual should be display: inline
2015-03-11 14:50:30 +01:00
mrliptontea
88c4f7172d change change sets look to similar to journal 2015-03-11 13:13:38 +01:00
mrliptontea
502fe435fb correct issue form columns widths so they will be equal in all fieldsets 2015-03-11 12:10:11 +01:00
mrliptontea
ac70bf5af5 correct border radius change set div 2015-03-11 12:01:16 +01:00
mrliptontea
06932c7903 improve columns width in issue details 2015-03-09 10:37:37 +01:00
mrliptontea
71100e5f52 make it possible to click on empty field in master backlog view 2015-03-03 20:39:42 +01:00
mrliptontea
c5db8f62f7 release 1.2.0 2015-03-03 20:05:07 +01:00
mrliptontea
509d51357b more subtle look of closed issues links 2015-03-03 20:03:42 +01:00
mrliptontea
957040aa3a backlogs: make it easier to click on story by moving padding to children 2015-03-03 10:34:23 +01:00
mrliptontea
539446909f fix context menu position regression introduced by sidebar toggle 2015-03-03 10:12:51 +01:00
mrliptontea
9cb8723dc4 adjust columns widths for time-entries and buttons shouldn't always have 15% width 2015-03-03 10:11:22 +01:00
mrliptontea
51e9d1dbe2 fix select height after switching from multiple values 2015-03-01 20:39:21 +01:00
mrliptontea
2311f44a0e correct line-height for issue subject 2015-03-01 17:26:09 +01:00
mrliptontea
dfe9588b04 improve issue details layout 2015-03-01 17:02:55 +01:00
mrliptontea
2941b53826 fix semitransparent background for backlog rows 2015-03-01 16:22:24 +01:00
mrliptontea
937e79a1a8 many improvements for redmine backlogs:
- custom CSS for jquery-ui and jquery.qtip
- restyled tooltips
- better dropdown behavior
2015-03-01 13:33:16 +01:00
mrliptontea
130e474efc change the default table accent background to rgba 2015-02-28 23:11:31 +01:00
mrliptontea
dc197cdf69 correct calendar cell's padding (wasn't properly aligned in Chrome) 2015-02-28 22:16:55 +01:00
mrliptontea
c3c6a01459 fewer watchers columns, makes it easier to read and prevents Chrome's 'too few rows in columns' issue 2015-02-28 20:11:59 +01:00
mrliptontea
78807dae09 corrected story points alignment in master backlog 2015-02-28 20:07:49 +01:00
mrliptontea
51e825f497 PurpleMine favicon 2015-02-28 19:58:51 +01:00
mrliptontea
e2a0c5e9c4 better select tag experience (Chrome and Firefox only) 2015-02-28 19:58:25 +01:00
mrliptontea
bdf4713583 fix for layouts not containing any sidebar 2015-02-28 18:53:58 +01:00
mrliptontea
29fd0896ed fix "timeline" sticking out from journal notes when one of filter tabs is active 2015-02-26 15:48:04 +01:00
mrliptontea
83c8c9be9b few improvements for some <select> elements 2015-02-26 14:45:21 +01:00
mrliptontea
6c0f4dbf91 change ancestor project name in top to equal font size, but different weight (it looked ridiculous) 2015-02-23 11:58:47 +01:00
mrliptontea
08fe4fa102 Redmine Backlogs: add delay before hiding backlog menu 2015-02-22 13:10:36 +01:00
mrliptontea
6dfbb71b7a few adjustments 2015-02-22 12:46:56 +01:00
mrliptontea
09a63b4f9b improve issue page styles, adjust default priority colors 2015-02-22 12:06:01 +01:00
mrliptontea
27fd164d3e introduce HistoryTabs for filtering issue journals
fix change sets layout
2015-02-22 01:36:24 +01:00
mrliptontea
2997bdf085 some improvements in wiki formatting;
fix property order in _issue.scss
2015-02-22 00:08:52 +01:00
mrliptontea
d32999101e issue's journal appearance changed once again
- remove option variable $bubble-journal-wiki-note
- introduce $bubble- variables
- boards replies changed so they look consistently with journals
2015-02-21 21:02:39 +01:00
mrliptontea
d8ec2b9531 bolded user name on issue page if it's current user 2015-02-21 00:00:45 +01:00
mrliptontea
7343aa9570 change some trackers default colors 2015-02-20 23:56:28 +01:00
mrliptontea
b115d3125e fix wiki page headers links font-size 2015-02-20 23:49:59 +01:00
mrliptontea
c230b4ab03 fix external link icon, when URI contains the word 'edit' 2015-02-19 13:16:33 +01:00
mrliptontea
8665246be7 fix watch task path for .js; remove unnecessary classes from .sidebar-toggler 2015-02-19 13:05:49 +01:00
mrliptontea
6fb7d577f9 change font weight to normal for sub-projects in project list 2015-02-19 13:00:10 +01:00
mrliptontea
76048dc426 fix master backlog sub-menu accessibility 2015-02-19 12:57:18 +01:00
mrliptontea
87213c85e2 status 'label' on issue page 2015-02-19 12:42:20 +01:00
mrliptontea
8879be0876 style for .warning (with no .flash class) 2015-02-18 19:53:48 +01:00
70 changed files with 4580 additions and 1035 deletions

3
.gitignore vendored
View File

@@ -1,4 +1,5 @@
/.sass-cache
/node_modules
/sass/_custom-variables.scss
/src/sass/_custom-variables.scss
/.sublime-grunt.cache
/images/logo

View File

@@ -1,4 +1,6 @@
scss_files: "**/*.scss"
scss_files: "src/sass/**/*.scss"
exclude: 'src/sass/lib/**'
linters:
BangFormat:
@@ -12,6 +14,9 @@ linters:
ColorKeyword:
enabled: true
ColorVariable:
enabled: false
Comment:
enabled: false

View File

@@ -22,7 +22,13 @@ module.exports = function(grunt) {
'plugins/redmine_backlogs/statistics.css':
'<%= src %>sass/plugins/redmine_backlogs/statistics.scss',
'plugins/redmine_backlogs/taskboard.css':
'<%= src %>sass/plugins/redmine_backlogs/taskboard.scss'
'<%= src %>sass/plugins/redmine_backlogs/taskboard.scss',
'plugins/redmine_backlogs/jquery/jquery-ui.css':
'<%= src %>sass/plugins/redmine_backlogs/jquery/jquery-ui.scss',
'plugins/redmine_backlogs/jquery/jquery.multiselect.css':
'<%= src %>sass/plugins/redmine_backlogs/jquery/jquery.multiselect.scss',
'plugins/redmine_backlogs/jquery/jquery.qtip.css':
'<%= src %>sass/plugins/redmine_backlogs/jquery/jquery.qtip.scss'
}
}
},
@@ -43,7 +49,7 @@ module.exports = function(grunt) {
tasks: ['css']
},
js: {
files: ['<%= src %>javascripts/src/*.js'],
files: ['<%= src %>javascripts/**/*.js'],
tasks: ['js']
}
}

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2015 Grzegorz Rajchman <mrliptontea@griego.pl>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

104
README.md
View File

@@ -4,7 +4,7 @@ A free Redmine theme for modern browsers.
![Screenshot](https://github.com/HolonGlobe/PurpleMine2/raw/master/screenshots/issues-list.png)
Compatible with Redmine 2.5+ and browsers: IE9+, latest Firefox and Google Chrome (others were not tested).
Compatible with Redmine 2.5+ and browsers: IE10+/Edge, latest Firefox and Google Chrome (others were not tested).
It's written in [SCSS]. It uses [normalize.css] and benefits from some parts of [Bootstrap][bootstrap-sass] like mixins, structure, and stuff.
@@ -28,7 +28,7 @@ Then go to Redmine > Administration > Settings > Display and select PurpleMine2
This theme also features a new look for [Redmine Backlogs][redmine_backlogs] plugin. To install it, simply copy stylesheets from `PurpleMine2/plugins/redmine_backlogs` and overwrite files in `{redmine}/plugins/redmine_backlogs/assets/stylesheets` and restart Redmine.
Also, [Redmine Time Tracker][redmine_time_tracker] plugin should look nice with PurpleMine.
Also, [Redmine Time Tracker][redmine_time_tracker] and [Redmine People][redmine_crm_people] plugins should look nice with PurpleMine.
## How to customize it
@@ -48,10 +48,101 @@ Now all the dependencies should be ready to use. Run one more command:
And now the grunt is watching for changes in files placed in `src/` folder. Just change what you need, and it'll run SASS preprocessor automatically.
Regrettably, optional file include is not possible in SASS, so I would recommend creating a new file, e.g. `_my_variables.scss` and importing it a the beginning of the `application.scss` file. That way all the variables with the `!default` flag could be overridden.
Regrettably, optional file include is not possible in SASS, so I would recommend creating a new file, e.g. `src/sass/_custom-variables.scss` and importing it a the beginning of the `application.scss` file. That way all the variables with the `!default` flag could be overridden.
The path `src/sass/_custom-variables.scss` is added to `.gitignore` so it should make upgrading PurpleMine with keeping your changes rather painless, given that the only thing you changed in PurpleMine's source was adding this one line with `@import "custom-variables";`.
If you need to customize styles for [Redmine Backlogs][redmine_backlogs] remember to include your `_custom-variables.scss` in `src/sass/plugins/redmine_backlogs/_common.scss`.
## Changelog
v1.7.0 (2015-09-25):
* Added styles for optgroup (Firefox only)
* Fixed #13: #header was missing clearfix and was breaking the layout is some cases
* Coloring issue's title instead of link in Gantt diagram for overdue issues
* Updated npm packages: grunt-sass from 0.18.0 to 1.0.0 and grunt-contrib-uglify 0.7.0 to 0.9.1
* Use flexbox layout by default (can be changed by setting `$flexbox-layout` to `false`)
* Fixed animation issue when showing sidebar
* Slightly modified buttons' style
* Few visual tweaks: nicer shadows, improved datepickers layout
+ Configurable list borders and highlighting of hovered and even/odd rows
+ Introduce `$pagination-padding-` variables and make pagination buttons' height equal to buttons by default
* Fixed #16: remove `white-space: nowrap` from external links to prevent breaking the page with flexbox layout
* Fixed colored trackers in tooltips in Backlogs plugin
* Fixed broken codebutton modal after making buttons wider
* Changed the license to MIT
v1.6.0 (2015-06-10):
* Fixed #8: Setting `$top-menu-collapse` to `true` will enable script allowing to toggle if top menu should be collapsed (no wrapping) or expanded (wrapped, with auto height)
+ Header matching current URL fragment will have `#` prepended
+ Introduced `$font-weight-normal` and `$font-weight-bold` variables to give better control on the appearance of text with custom fonts
* Fixed #9: Added `$main-menu-collapse` and applied the same logic as in #8
* Fixed #12: Removed `display: block` from issue's subject link to allow context menu to popup upon right click next to subject
* Resolved #11: Company logo can be added to the header
v1.5.0 (2015-04-15):
* Fixed #5: Added default style for colored issue links.
* Introduced `$tracker-colors-map` and removed `$tracker-X-bg` variables.
See d220db1 comments for more details.
* Fixed #6: Added default padding for table cells.
v1.4.1 (2015-04-14):
* Fixed #3: Closed tasks will be more appreciable.
v1.4.0 (2015-04-10):
+ Introduced option `$wiki-page-more-vertical-space` (by default `true`) to improve wiki pages' readability even more
* Fixed bottom margin of `pre` tag
+ Added a few helper classes from Bootstrap
* WYSIWYG's icons will squeeze a little bit on smaller screens
* Images in headers will be aligned to the middle vertically
+ Introduced `text-normal` class for resetting font's weight
+ Added class `toc-active-prev` that will "highlight" TOC as "active".
* Fixed #2: Make sure that `.sort` with Font Awesome icons won't have background image
* Fixed attachments div's layout for wiki pages
For more details, see [release v1.4.0](https://github.com/HolonGlobe/PurpleMine2/releases/tag/v1.4.0)
v1.3.0 (2015-04-01):
* Backlogs: make it possible to click on empty field
* Corrected issue form columns widths so they will be equal in all fieldsets
* Changesets will look similar to issue's journal
+ Improved revision page layout and added Font Awesome icons
+ Improved file content view
* Fixed #1: Font Awesome icons will no longer break plugins' icons
+ Introduced styles for [People][redmine_crm_people] plugin
* Enhanced styles for activities list
* Regular buttons (e.g. `Cancel`) will look like links in dialog windows
* Fixed look of collapsible arrow in Firefox
+ Overrode Redmine's revision graph function to make it look better
+ Animated collapsible fieldsets
+ Custom image based icons changed to base64 embedded data
v1.2.0 (2015-03-03):
* Fixed .warning style
+ Coloring status on issue page (it'll look like label)
* Fixed master backlog sub-menu accessibility
+ Changed font weight to normal for sub-projects in project list
* Fixed watch task path for .js
- Removed unnecessary classes from .sidebar-toggler
* Fixed external link icon, when URI contains the word 'edit'
* Fixed wiki page headers links font-size
+ Changed some trackers default colors
+ Bolded user name on issue page if it's current user
* Issue's journal appearance changed once again
+ Some improvements in wiki formatting
+ Introduced HistoryTabs for filtering issue journals
* Improved issue page styles and adjusted default priority colors
* Backlogs: added delay before hiding backlog menu
* Changed ancestor project name in top to equal font size, but different weight
* Fixed context menu position regression introduced by sidebar toggle
v1.1.0 (2015-02-15):
+ Changed issue's journal appearance
@@ -66,12 +157,9 @@ v1.0.0 (2015-02-06):
Initial version
## License
[WTFPL](http://www.wtfpl.net/)
[SCSS]: http://sass-lang.com/
[normalize.css]: https://github.com/necolas/normalize.css
[bootstrap-sass]: https://github.com/twbs/bootstrap-sass
[redmine_backlogs]: https://github.com/backlogs/redmine_backlogs
[redmine_time_tracker]: https://github.com/hicknhack-software/redmine_time_tracker
[redmine_time_tracker]: https://github.com/hicknhack-software/redmine_time_tracker
[redmine_crm_people]: http://www.redminecrm.com/projects/people/

BIN
favicon/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 B

File diff suppressed because one or more lines are too long

View File

@@ -1,27 +1,26 @@
{
"name": "PurpleMine2",
"version": "2.0.0",
"description": "A free Redmine 2.5+ theme written in SASS",
"description": "A free Redmine 2.5+ theme written in SCSS",
"keywords": [
"redmine",
"theme",
"sass",
"scss"
],
"author": "HolonGlobe",
"author": "mrliptontea",
"repository": {
"type": "git",
"url": "git@github.com:HolonGlobe/PurpleMine2.git"
"url": "git@github.com:mrliptontea/PurpleMine2.git"
},
"license": "WTFPL",
"license": "MIT",
"bugs": {
"url": "https://github.com/HolonGlobe/PurpleMine2/issues"
"url": "https://github.com/mrliptontea/PurpleMine2/issues"
},
"homepage": "https://github.com/HolonGlobe/PurpleMine2",
"homepage": "https://github.com/mrliptontea/PurpleMine2",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-uglify": "^0.7.0",
"grunt-contrib-uglify": "^0.9.1",
"grunt-contrib-watch": "^0.6.1",
"grunt-sass": "^0.18.0"
"grunt-sass": "^1.0.0"
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.ui-multiselect{padding:2px 0 2px 4px;text-align:left}.ui-multiselect span.ui-icon{float:right}.ui-multiselect-single .ui-multiselect-checkboxes input{position:absolute !important;top:auto !important;left:-9999px}.ui-multiselect-single .ui-multiselect-checkboxes label{padding:5px !important}.ui-multiselect-header{margin-bottom:3px;padding:3px}.ui-multiselect-header ul{font-size:0.92em}.ui-multiselect-header ul li{padding:0 10px 0 0;float:left}.ui-multiselect-header a{text-decoration:none}.ui-multiselect-header a:hover{text-decoration:underline}.ui-multiselect-header span.ui-icon{float:left}.ui-multiselect-header li.ui-multiselect-close{padding-right:0;float:right;text-align:right}.ui-multiselect-menu{display:none;position:absolute;padding:3px;text-align:left;z-index:10000;box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23)}.ui-multiselect-checkboxes{position:relative;padding-right:2px;overflow-y:scroll}.ui-multiselect-checkboxes input[type="checkbox"]{top:0;margin:3px 0 0 -20px;float:left}.ui-multiselect-checkboxes input[type="checkbox"]:focus{outline:none}.ui-multiselect-checkboxes label{display:block;padding:3px 1px;padding-left:26px;border:1px solid transparent;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ui-multiselect-checkboxes label input{position:relative;top:1px}.ui-multiselect-checkboxes li{clear:both;font-size:0.92em}.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label{margin-bottom:2px;border-bottom:1px solid #ccc;font-weight:bold;text-align:center}.ui-multiselect-checkboxes li.ui-multiselect-optgroup-label a{display:block;margin:1px 0;padding:3px;text-decoration:none}* html .ui-multiselect-checkboxes label{border:0 none}

View File

@@ -0,0 +1 @@
.qtip{position:absolute;top:-31000px;left:-31000px;width:auto;max-width:500px;outline:none}.ui-tooltip-content{position:relative;padding:10px;border:1px solid #ccc;background-color:#fff;color:#555;font-size:0.92em;text-align:left;word-wrap:break-word;box-shadow:0 3px 6px rgba(0,0,0,0.16),0 3px 6px rgba(0,0,0,0.23);overflow:hidden}.ui-tooltip-tip{border-color:#ccc;background-color:#fff}.ui-tooltip-tip{position:absolute;margin:0 auto;border:0 none;background:transparent;overflow:hidden;z-index:10}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
table th,table td{padding:5px 8px}.ui-widget{margin-bottom:20px}.score{display:inline-block;width:1.5em;font-size:large;text-align:center}.score_0{background-color:#f00}.score_1{background-color:#ff5300}.score_2{background-color:#ff8100}.score_3{background-color:#ffa100}.score_4{background-color:#fb0}.score_5{background-color:#ffd300}.score_6{background-color:#ffec00}.score_7{background-color:#e9fb00}.score_8{background-color:#b1f100}.score_9{background-color:#74e600}.score_10{background-color:#0c0}
table th,table td{padding:5px 8px}.ui-widget{margin-bottom:20px}.score{display:inline-block;width:1.5em;font-size:large;text-align:center}.score_0{background-color:#f00}.score_1{background-color:#ff5300}.score_2{background-color:#ff8100}.score_3{background-color:#ffa100}.score_4{background-color:#fb0}.score_5{background-color:#ffd300}.score_6{background-color:#ffec00}.score_7{background-color:#e9fb00}.score_8{background-color:#b1f100}.score_9{background-color:#74e600}.score_10{background-color:#0c0}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,98 @@
var PurpleMine = PurpleMine || {};
PurpleMine.HistoryTabs = (function()
{
"use strict";
var self;
var translations = {
en: {
all : "All",
notes : "Notes",
details: "Changes"
},
pl: {
all : "Wszystko",
notes : "Notatki",
details: "Zmiany"
}
};
function HistoryTabs()
{
if (self)
{
return self;
}
self = this;
this.$tabsContainer = null;
this.$tabs = null;
this.$history = $("#history");
this.lang = document.documentElement.lang;
if (typeof translations[this.lang] === "undefined")
{
this.lang = "en";
}
this._ = translations[this.lang];
if (this.$history.length > 0)
{
buildTabs();
markFirstOfTypes();
}
}
function buildTabs()
{
var html = "",
liStart = "<li><a href=\"javascript:;\" class=\"",
liMid = "history-tab\" data-tab=\"",
liEnd = "</a></li>";
html += "<div class=\"tabs\"><ul>";
html += liStart + "selected " + liMid + "all\">" + self._.all + liEnd;
html += liStart + liMid + "notes\">" + self._.notes + liEnd;
html += liStart + liMid + "details\">" + self._.details + liEnd;
html += "</ul></div>";
self.$tabsContainer = $(html);
$("#history > h3").after(self.$tabsContainer);
self.$tabs = self.$tabsContainer.find(".history-tab");
self.$tabs.on("click", tabClick);
}
function markFirstOfTypes()
{
self.$history.find(".has-notes:first").addClass("first-of-notes");
self.$history.find(".has-details:first").addClass("first-of-details");
}
var tabClick = function()
{
var $this = $(this),
tab = $this.attr("data-tab");
self.$tabs.removeClass("selected");
$this.addClass("selected");
self.$history
.removeClass("hide-details")
.removeClass("hide-notes");
if ("notes" === tab)
{
self.$history.addClass("hide-details");
}
else if ("details" === tab)
{
self.$history.addClass("hide-notes");
}
};
return HistoryTabs;
}());

View File

@@ -0,0 +1,142 @@
var PurpleMine = PurpleMine || {};
PurpleMine.MenuCollapse = (function()
{
"use strict";
var self;
var translations = {
en: {
topMenuToggler : "Expand/collapse top menu",
mainMenuToggler: "Expand/collapse main menu"
},
pl: {
topMenuToggler : "Zwiń/rozwiń górne menu",
mainMenuToggler: "Zwiń/rozwiń główne menu"
}
};
function MenuCollapse()
{
if (self)
{
return self;
}
self = this;
this.lang = document.documentElement.lang;
if (typeof translations[this.lang] === "undefined")
{
this.lang = "en";
}
this._ = translations[this.lang];
this.menus = {
top: {
$el: $("#top-menu")
},
main: {
$el: $("#main-menu")
}
};
for (var menu in this.menus)
{
if (this.menus.hasOwnProperty(menu) &&
this.menus[menu].$el.length > 0)
{
handleMenu(menu);
}
}
}
function handleMenu(menu)
{
if ("none" === self.menus[menu].$el.css("maxHeight"))
{
return false;
}
self.menus[menu].collapsed = true;
if (window.localStorage)
{
self.menus[menu].collapsed =
null === localStorage.getItem(getMenuStorageKey(menu));
}
buildToggleButton(menu);
if (false === self.isCollapsed(menu))
{
self.expandMenu(menu);
}
}
function getMenuStorageKey(menu)
{
return "PurpleMine:" + menu + "MenuExpanded";
}
function buildToggleButton(menu)
{
var togglerClass = menu + "-menu-toggler",
togglerLabel = self._[menu + "MenuToggler"],
togglerHtml;
togglerHtml = "<a href=\"javascript:;\" class=\"" + togglerClass +
"\" title=\"" + togglerLabel + "\"></a>";
self.menus[menu].$toggler = $(togglerHtml);
self.menus[menu].$el.prepend(self.menus[menu].$toggler);
self.menus[menu].$toggler.on("click", { menu: menu }, self.toggleMenu);
}
MenuCollapse.prototype.toggleMenu = function(event)
{
var menu = event.data.menu || "";
if (self.isCollapsed(menu))
{
self.expandMenu(menu);
}
else
{
self.collapseMenu(menu);
}
};
MenuCollapse.prototype.isCollapsed = function(menu)
{
return this.menus[menu].collapsed;
};
MenuCollapse.prototype.expandMenu = function(menu)
{
this.menus[menu].$el.addClass("expanded");
this.menus[menu].$toggler.addClass("expanded");
this.menus[menu].collapsed = false;
if (window.localStorage)
{
localStorage.setItem(getMenuStorageKey(menu), "x");
}
};
MenuCollapse.prototype.collapseMenu = function(menu)
{
this.menus[menu].$el.removeClass("expanded");
this.menus[menu].$toggler.removeClass("expanded");
this.menus[menu].collapsed = true;
if (window.localStorage)
{
localStorage.removeItem(getMenuStorageKey(menu));
}
};
return MenuCollapse;
}());

View File

@@ -0,0 +1,157 @@
var PurpleMine = PurpleMine || {};
/* global Raphael: false, revisionGraph: true */
/* jshint camelcase: false */
/* jshint maxstatements: false */
/* jshint maxlen: 160 */
PurpleMine.RevisionGraph = function(holder, commits_hash, graph_space)
{
"use strict";
var XSTEP = 20,
CIRCLE_INROW_OFFSET = 17;
var commits_by_scmid = commits_hash,
commits = $.map(commits_by_scmid, function(val){return val;});
var max_rdmid = commits.length - 1;
var commit_table_rows = $("table.changesets tr.changeset");
// create graph
if (revisionGraph !== null)
{
revisionGraph.clear();
}
else
{
revisionGraph = new Raphael(holder);
}
var top = revisionGraph.set();
// init dimensions
var graph_x_offset = commit_table_rows.first().find("td").first().position().left - $(holder).position().left,
graph_y_offset = $(holder).position().top,
graph_right_side = graph_x_offset + (graph_space + 1) * XSTEP,
graph_bottom = commit_table_rows.last().position().top + commit_table_rows.last().height() - graph_y_offset;
revisionGraph.setSize(graph_right_side, graph_bottom);
// init colors
var colors = [
"#e74c3c",
"#584492",
"#019851",
"#ed820c",
"#4183c4"
];
// get more colors if needed
if (graph_space >= colors.length)
{
Raphael.getColor.reset();
for (var k = 0; k <= graph_space; k++)
{
colors.push(Raphael.getColor(0.9));
}
}
var parent_commit;
var x, y, parent_x, parent_y;
var path, title;
var revision_dot_overlay;
$.each(commits, function(index, commit)
{
if (!commit.hasOwnProperty("space"))
{
commit.space = 0;
}
y = commit_table_rows.eq(max_rdmid - commit.rdmid).position().top - graph_y_offset + CIRCLE_INROW_OFFSET;
x = graph_x_offset + XSTEP / 2 + XSTEP * commit.space;
revisionGraph.circle(x, y, 3.5)
.attr({
fill: colors[commit.space],
stroke: "none"
}).toFront();
// paths to parents
$.each(commit.parent_scmids, function(index, parent_scmid)
{
parent_commit = commits_by_scmid[parent_scmid];
if (parent_commit)
{
if (!parent_commit.hasOwnProperty("space"))
{
parent_commit.space = 0;
}
parent_y = commit_table_rows.eq(max_rdmid - parent_commit.rdmid).position().top - graph_y_offset + CIRCLE_INROW_OFFSET;
parent_x = graph_x_offset + XSTEP / 2 + XSTEP * parent_commit.space;
if (parent_commit.space === commit.space)
{
// vertical path
path = revisionGraph.path([
"M", x, y,
"V", parent_y]);
}
else
{
// path to a commit in a different branch (Bezier curve)
path = revisionGraph.path([
"M", x, y,
"C", x, y, x, y + (parent_y - y) / 2, x + (parent_x - x) / 2, y + (parent_y - y) / 2,
"C", x + (parent_x - x) / 2, y + (parent_y - y) / 2, parent_x, parent_y-(parent_y-y)/2, parent_x, parent_y
]);
}
}
else
{
// vertical path ending at the bottom of the revisionGraph
path = revisionGraph.path([
"M", x, y,
"V", graph_bottom
]);
}
path.attr({stroke: colors[commit.space], "stroke-width": 1.5}).toBack();
});
revision_dot_overlay = revisionGraph.circle(x, y, 10);
revision_dot_overlay
.attr({
fill : "#000",
opacity: 0,
cursor : "pointer",
href : commit.href
});
if (commit.refs !== null && commit.refs.length > 0)
{
title = document.createElementNS(revisionGraph.canvas.namespaceURI, "title");
title.appendChild(document.createTextNode(commit.refs));
revision_dot_overlay.node.appendChild(title);
}
top.push(revision_dot_overlay);
});
top.toFront();
};
$(function()
{
"use strict";
if (window.drawRevisionGraph)
{
// override Redmine's function
window.drawRevisionGraph = PurpleMine.RevisionGraph;
// make graph redraw itself
$(window).resize();
}
});

View File

@@ -4,10 +4,23 @@ PurpleMine.SidebarToggler = (function()
{
"use strict";
var self; // Make it work for browsers without Function.prototype.bind
var self;
var translations = {
en: {
toggler: "Toggle sidebar"
},
pl: {
toggler: "Pokaż/ukryj panel boczny"
}
};
function SidebarToggler()
{
if (self)
{
return self;
}
self = this;
this.sidebarVisible = true;
@@ -15,27 +28,46 @@ PurpleMine.SidebarToggler = (function()
this.$toggler = null;
this.$main = $("#main");
this.$sidebar = $("#sidebar");
this.lang = document.documentElement.lang;
if (typeof translations[this.lang] === "undefined")
{
this.lang = "en";
}
this._ = translations[this.lang];
// Fix issue with context menu position
if ("relative" === this.$main.css("position"))
{
$("#context-menu").appendTo("#wrapper3");
}
handleSidebar();
}
function handleSidebar()
{
if (window.localStorage)
{
this.sidebarVisible =
self.sidebarVisible =
null === localStorage.getItem("PurpleMine:sidebarHidden");
}
if (this.$sidebar.length > 0 &&
false === this.$main.hasClass("nosidebar"))
if (self.$sidebar.length > 0 &&
false === self.$main.hasClass("nosidebar"))
{
this.buildButton();
this.bindKeyHandler();
}
buildButton();
bindKeyHandler();
if (false === this.sidebarVisible)
{
this.hideSidebar(true);
if (false === self.sidebarVisible)
{
self.hideSidebar(true);
}
}
}
SidebarToggler.prototype.bindKeyHandler = function()
function bindKeyHandler()
{
var body = document.getElementsByTagName("body")[0];
@@ -48,32 +80,20 @@ PurpleMine.SidebarToggler = (function()
self.toggleSidebar();
}
};
};
}
SidebarToggler.prototype.buildButton = function()
function buildButton()
{
var togglerLabel = document.documentElement.lang === "pl" ?
"Pokaż/ukryj panel boczny" :
"Toggle sidebar",
togglerClass = "sidebar-toggler",
var togglerClass = "sidebar-toggler",
togglerHtml;
if ("left" === this.$sidebar.css("float"))
{
togglerClass += " sidebar-toggler--left";
}
else
{
togglerClass += " sidebar-toggler--right";
}
togglerHtml = "<a href=\"javascript:;\" class=\"" + togglerClass +
"\" title=\"" + togglerLabel + "\"></a>";
this.$toggler = $(togglerHtml);
"\" title=\"" + self._.toggler + "\"></a>";
self.$toggler = $(togglerHtml);
this.$main.append(this.$toggler);
this.$toggler.on("click", this.toggleSidebar);
};
self.$main.append(self.$toggler);
self.$toggler.on("click", self.toggleSidebar);
}
SidebarToggler.prototype.toggleSidebar = function()
{
@@ -114,9 +134,12 @@ PurpleMine.SidebarToggler = (function()
SidebarToggler.prototype.showSidebar = function()
{
clearTimeout(this.sidebarHiding);
this.$sidebar
.removeClass("sidebar-hidden", 0)
.removeClass("sidebar-hiding");
self.$sidebar.removeClass("sidebar-hidden");
setTimeout(function sidebarTimeout()
{
self.$sidebar.removeClass("sidebar-hiding");
}, 50);
this.$toggler.removeClass("sidebar-hidden");
this.sidebarVisible = true;

View File

@@ -4,4 +4,6 @@ $(function()
"use strict";
new PurpleMine.SidebarToggler();
new PurpleMine.HistoryTabs();
new PurpleMine.MenuCollapse();
});

View File

@@ -6,8 +6,11 @@
@import "mixins/clearfix";
@import "mixins/forms";
@import "mixins/gradients";
@import "mixins/image";
@import "mixins/opacity";
@import "mixins/text-overflow";
@import "mixins/vendor-prefixes";
@import "mixins/issues";
@import "mixins/link-variant";
@import "mixins/shadows";

View File

@@ -7,15 +7,21 @@
//
$fixed-layout: false !default;
$flexbox-layout: true !default;
$sidebar-position: left !default;
$color-priorities: true !default;
$color-trackers: true !default;
$colored-issue: true !default;
$color-status: true !default;
$use-gravatars: true !default;
$use-font-awesome: true !default;
$use-logo: false !default;
$use-retina-logo: false !default;
$issue-subject-large: true !default;
$bubble-journal-wiki-note: true !default;
$enable-sidebar-toggler: true !default;
$wiki-page-more-vertical-space: true !default;
$top-menu-collapse: false !default;
$main-menu-collapse: false !default;
//== Colors
@@ -36,7 +42,7 @@ $brand-accent: #deddef !default;
$brand-success: #019851 !default;
$brand-info: #409ae3 !default;
$brand-warning: #f39412 !default;
$brand-warning: #ed820c !default;
$brand-danger: #e74c3c !default;
$state-success: #b5fbb7 !default;
@@ -67,15 +73,18 @@ $font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, freesans, sa
$font-family-monospace: Consolas, "Liberation Mono", Menlo, "Courier New", Courier, monospace !default;
$font-family-base: $font-family-sans-serif !default;
$font-weight-normal: normal !default;
$font-weight-bold: bold !default;
$font-size-base: 14px !default;
$font-size-large: 1.285em !default;
$font-size-large-px: 18px !default;
$font-size-small: .86em !default;
$font-size-small-px: 12px !default;
$font-size-small-unitless: .86 !default;
$font-size-small: $font-size-small-unitless * 1em !default;
$font-size-small-px: floor($font-size-small-unitless * $font-size-base) !default;
$font-size-h1: 2.285em !default;
$font-size-h2: 1.857em !default;
$font-size-h1: 2.25em !default;
$font-size-h2: 1.75em !default;
$font-size-h3: 1.5em !default;
$font-size-h4: 1.286em !default;
$font-size-h5: 1em !default;
@@ -86,7 +95,9 @@ $line-height-large: 1.33 !default;
$line-height-computed: floor(($font-size-base * $line-height-base)) !default; // ~20px
$headings-font-weight: 700 !default;
$headings-line-height: 1.2 !default;
$headings-line-height: 1.4 !default;
$headings-anchor-color: $gray-lighter !default;
$headings-anchor-color-active: $gray-light !default;
//== Wiki
@@ -96,6 +107,10 @@ $wiki-text: #333 !default;
$wiki-font-size: 16px !default;
$wiki-line-height: 1.6 !default;
$toc-active-link: darken($link-color, 10%) !default;
$toc-active-link-hover: darken($toc-active-link, 10%) !default;
$toc-active-border: $link-color !default;
//== Components
//
@@ -116,7 +131,6 @@ $border-radius-small: 2px !default;
$hr-border: $gray-light !default;
$abbr-border-color: $gray-light !default;
$blockquote-border-color-fallback: $gray-lighter !default;
$blockquote-border-color: rgba(#000, .15) !default;
$component-color: $gray-dark !default;
@@ -129,6 +143,8 @@ $component-active-border: $brand-primary !default;
$font-size-list: .92em !default;
$collapsible-animation-time: .3s !default;
//== Tables
//
@@ -136,9 +152,17 @@ $font-size-list: .92em !default;
$table-cell-padding: 8px !default;
$table-condensed-cell-padding: 5px !default;
$table-list-header-border: 0 0 2px !default;
$table-list-item-border: 0 0 1px !default;
$table-list-color-odd-rows: true !default;
$table-list-color-even-rows: false !default;
$table-list-highlight-rows: false !default;
$table-bg: transparent !default;
$table-bg-accent: darken($body-bg, 3%) !default;
$table-bg-hover: #f1f1f1 !default;
$table-accent-factor: .03 !default;
$table-hover-factor: .03 !default;
$table-bg-accent: rgba(#000, $table-accent-factor) !default;
$table-bg-hover: rgba(#000, $table-hover-factor) !default;
$table-bg-active: $table-bg-hover !default;
$table-border-color: darken($body-bg, 13.5%) !default;
@@ -147,9 +171,9 @@ $table-border-color: darken($body-bg, 13.5%) !default;
//== Trackers priorities
//
$priority-lowest-bg: #defacb !default;
$priority-lowest-text: #565 !default;
$priority-lowest-link: #265 !default;
$priority-lowest-bg: #dff4d0 !default;
$priority-lowest-text: #676 !default;
$priority-lowest-link: #096 !default;
$priority-default-bg: #fff !default;
$priority-default-text: $text-color !default;
@@ -157,15 +181,15 @@ $priority-default-link: $link-color !default;
$priority-high3-bg: #d5eaff !default;
$priority-high3-text: #556 !default;
$priority-high3-link: #336 !default;
$priority-high3-link: #05a !default;
$priority-high2-bg: #ffe1d7 !default;
$priority-high2-text: #930 !default;
$priority-high2-link: #624 !default;
$priority-high2-text: #855 !default;
$priority-high2-link: #b04 !default;
$priority-highest-bg: #ffa5a5 !default;
$priority-highest-text: #900 !default;
$priority-highest-link: #403 !default;
$priority-highest-text: #944 !default;
$priority-highest-link: #a03 !default;
//== Trackers links
@@ -174,43 +198,83 @@ $priority-highest-link: #403 !default;
$tracker-inline-padding: 1px 5px !default;
$tracker-list-padding: 0 6px !default;
$tracker-1-bg: $brand-danger !default;
$tracker-1-text: $brand-text !default;
$tracker-default-bg: #668 !default;
$tracker-default-text: $brand-text !default;
$tracker-2-bg: $brand-primary !default;
$tracker-2-text: $brand-text !default;
$tracker-3-bg: $brand-success !default;
$tracker-3-text: $brand-text !default;
$tracker-4-bg: $brand-info !default;
$tracker-4-text: $brand-text !default;
$tracker-5-bg: $brand-warning !default;
$tracker-5-text: $brand-text !default;
$tracker-6-bg: mix($brand-success, $brand-info, 50%) !default;
$tracker-6-text: $brand-text !default;
$tracker-7-bg: mix($brand-primary, $brand-warning, 50%) !default;
$tracker-7-text: $brand-text !default;
$tracker-default-colors-map: (
1: (
background: $brand-danger,
color: $brand-text
),
2: (
background: $brand-info,
color: $brand-text
),
3: (
background: $brand-success,
color: $brand-text
),
4: (
background: $brand-primary,
color: $brand-text
),
5: (
background: $brand-warning,
color: $brand-text
),
6: (
background: mix($brand-success, $brand-info, 50%),
color: $brand-text
),
7: (
background: mix($brand-primary, $brand-warning, 50%),
color: $brand-text
)
) !default;
$tracker-custom-colors-map: () !default;
$tracker-colors-map: map-merge($tracker-default-colors-map, $tracker-custom-colors-map);
//== Diffs
//
$diff-out-color: #430;
$diff-out-bg: #ffeaaa;
$diff-out-bg-light: #ffefbf;
$diff-out-color: #511 !default;
$diff-out-bg: #fbb !default;
$diff-out-bg-light: rgba($diff-out-bg, .3) !default;
$diff-in-color: #350 !default;
$diff-in-bg: #afa !default;
$diff-in-bg-light: rgba($diff-in-bg, .3) !default;
//== Journal changes
//
$journal-old-value-color: #430 !default;
$journal-old-value-bg: rgba(#ffeaaa, .3) !default;
$journal-new-value-color: #350 !default;
$journal-new-value-bg: rgba(#bffbbf, .3) !default;
//== Changesets
//
$changeset-add-color: $brand-success !default;
$changeset-modified-color: $brand-warning !default;
$changeset-copied-color: $brand-info !default;
$changeset-renamed-color: $brand-primary !default;
$changeset-deleted-color: $brand-danger !default;
$diff-in-color: #350;
$diff-in-bg: #bffbbf;
$diff-in-bg-light: #d8fcd8;
//== Buttons
//
$btn-font-weight: normal !default;
$btn-padding-vertical: 3px !default;
$btn-padding-horizontal: 12px !default;
$btn-link-color: $link-color !default;
$btn-link-bg: $body-bg !default;
$btn-link-border: $body-bg !default;
$btn-default-color: $gray-darkest !default;
$btn-default-bg: $gray-lightest !default;
@@ -218,11 +282,11 @@ $btn-default-border: $gray-lighter !default;
$btn-primary-color: #fff !default;
$btn-primary-bg: $brand-info !default;
$btn-primary-border: darken($btn-primary-bg, 5%) !default;
$btn-primary-border: $btn-primary-bg !default;
$btn-success-color: #fff !default;
$btn-success-bg: $brand-success !default;
$btn-success-border: darken($btn-success-bg, 5%) !default;
$btn-success-border: $btn-success-bg !default;
//== Highlights
@@ -249,14 +313,14 @@ $input-border-radius-large: $border-radius-large !default;
$input-border-focus: #51a7e8 !default;
$input-color-placeholder: #999 !default;
$input-padding-vertical: 3px;
$input-padding-horizontal: 8px;
$input-padding-vertical: $btn-padding-vertical !default;
$input-padding-horizontal: 8px !default;
$input-height-base: ($line-height-computed + ($input-padding-vertical * 2) + 2) !default;
$label-width: 160px;
$label-wide-width: 280px;
$label-space: 10px;
$label-width: 160px !default;
$label-wide-width: 280px !default;
$label-space: 10px !default;
$legend-color: $gray-dark !default;
$legend-border-color: #e5e5e5 !default;
@@ -274,9 +338,17 @@ $header-bg: $brand-primary !default;
$header-text: $brand-text !default;
$header-link: $brand-text !default;
$header-root: $brand-accent !default;
$header-padding-vertical: 10px !default;
$header-padding-horizontal: $padding-side !default;
$header-title-size: $font-size-h3 !default;
$header-title-line-height: $line-height-computed * 1.5 !default;
$logo-image-width: 60px !default;
$logo-image-height: 40px !default;
$logo-position-horizontal: $header-padding-vertical !default;
$logo-position-vertical: center !default;
$logo-space: floor($header-padding-vertical / 2) !default;
$main-menu-bg: $gray-lightest !default;
$main-menu-link: $gray-darker !default;
$main-menu-link-active: #000 !default;
@@ -291,6 +363,9 @@ $main-menu-padding-horizontal: 5px !default;
//== Pagination
//
$pagination-padding-vertical: $btn-padding-vertical !default;
$pagination-padding-horizontal: 10px !default;
$pagination-color: $link-color !default;
$pagination-bg: #fff !default;
$pagination-border: #ddd !default;
@@ -323,6 +398,7 @@ $tab-active-border: $tab-border !default;
$sidebar-width: 270px !default;
$sidebar-padding-vertical: $padding-base-vertical !default;
$sidebar-padding-horizontal: $padding-side !default;
$sidebar-width-computed: $sidebar-width - ($sidebar-padding-horizontal * 2) - 1px !default;
$sidebar-link-hover-bg: $gray-lightest !default;
$sidebar-link-active-bg: $body-bg !default;
$sidebar-link-active-border: $gray-lighter !default;
@@ -375,6 +451,7 @@ $panel-shadow: 0 1px 2px rgba(#000, .1),
//
$tooltip-bg: #fff !default;
$tooltip-border-width: 0 !default;
$tooltip-border: #ccc !default;
$tooltip-text: $gray-dark !default;
$tooltip-link: $link-color !default;
@@ -391,6 +468,17 @@ $issue-padding: 15px !default;
$issue-gravatar-size: 50px !default;
$issue-heading-size: 1.5 !default;
$issue-attribute-padding-v: 3px !default;
$issue-attribute-padding-h: 5px !default;
//== Speech "bubbles"
//
$bubble-gravatar-size: 24px !default;
$bubble-gravatar-space: 12px !default;
$bubble-padding-vertical: 8px !default;
$bubble-padding-horizontal: 15px !default;
//== Media queries breakpoints
//
@@ -410,10 +498,13 @@ $screen-xs-max: ($screen-sm-min - 1) !default;
$screen-sm-max: ($screen-md-min - 1) !default;
$screen-md-max: ($screen-lg-min - 1) !default;
$top-menu-collapse-breakpoint: $screen-lg-min !default;
$main-menu-collapse-breakpoint: $screen-lg-min !default;
//== Content widths
//
$width-sm: $screen-sm - ($padding-side * 2);
$width-md: $screen-md - ($padding-side * 2);
$width-lg: $screen-lg - ($padding-side * 2);
$width-sm: $screen-sm - ($padding-side * 2) !default;
$width-md: $screen-md - ($padding-side * 2) !default;
$width-lg: $screen-lg - ($padding-side * 2) !default;

View File

@@ -11,7 +11,6 @@
@import "components/forms";
@import "components/tabs";
@import "components/pagination";
@import "components/top";
@import "components/content";
@import "components/gravatar";
@import "components/list";
@@ -27,8 +26,10 @@
@import "components/elements";
@import "components/jquery-ui";
@import "components/icons";
@import "components/top";
@import "components/jstoolbar";
@import "components/flash";
@import "components/image-base64";
@import "components/print";

View File

@@ -15,7 +15,7 @@
a {
display: inline-block;
padding-left: 8 + 16px;
padding-left: 5px + 20px;
background-position: 0 center;
}
}
@@ -24,7 +24,7 @@
list-style-type: none;
> a {
padding-left: $sidebar-padding-horizontal + 8 + 16px;
padding-left: $sidebar-padding-horizontal + 5px + 20px;
background-repeat: no-repeat;
background-position: $sidebar-padding-horizontal center;
}
@@ -136,6 +136,6 @@ fieldset#notified_events {
}
td.scm_name {
font-weight: bold;
font-weight: $font-weight-bold;
}
}

View File

@@ -13,6 +13,7 @@ body {
color: $text-color;
font-family: $font-family-base;
font-size: $font-size-base;
font-weight: $font-weight-normal;
line-height: $line-height-base;
}
@@ -80,6 +81,13 @@ small {
font-size: $font-size-small;
}
table {
th,
td {
padding: $table-condensed-cell-padding $table-cell-padding;
}
}
ul,
ol {
margin-top: 0;
@@ -98,7 +106,7 @@ dl {
dt {
margin-top: $line-height-computed;
font-weight: bold;
font-weight: $font-weight-bold;
}
dd {
@@ -129,8 +137,7 @@ abbr[title] {
blockquote {
margin: 0 0 $line-height-computed;
padding: floor($line-height-computed / 4) $padding-large-horizontal;
border-left: 4px solid $blockquote-border-color-fallback;
border-left-color: $blockquote-border-color;
border-left: 4px solid $blockquote-border-color;
>:first-child {
margin-top: 0;

View File

@@ -8,11 +8,11 @@ button {
display: inline-block;
margin-bottom: 0;
border: 1px solid;
cursor: pointer;
font-weight: $btn-font-weight;
text-align: center;
white-space: nowrap;
@include button-size($input-padding-vertical, $input-padding-horizontal, $font-size-base, $line-height-base, $border-radius-base);
cursor: pointer;
@include button-size($btn-padding-vertical, $btn-padding-horizontal, $font-size-base, $line-height-base, $border-radius-base);
@include user-select(none);
@include transition(background-color ease-in-out .07s, border-color ease-in-out .07s, box-shadow ease-in-out .07s);
@include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
@@ -37,11 +37,10 @@ button {
/**
* Issue form buttons layout
* Form buttons layout
*/
#issue-form,
#history .journal form {
form {
input[type="submit"] {
margin-right: 5px;
@@ -60,17 +59,6 @@ button {
}
/**
* Project's repository form buttons layout
*/
#repository-form {
input[type="submit"] {
margin-right: 5px;
}
}
/**
* Repository's 'View differences' button
*/
@@ -79,55 +67,12 @@ form[action*="repository/diff"] {
}
/**
* New _something_ form buttons layout
*/
#add_attachment_form,
#new_time_entry,
#new_project,
#new_document,
#new_group,
#new_user {
input[type="submit"] {
margin-right: 5px;
+ input {
@include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
}
}
}
/**
* Wiki form buttons layout
*/
#wiki_form {
input[type="submit"] {
margin-right: 5px;
}
}
/**
* Forum and news message form buttons layout
*/
#message-form,
#news-form {
input[type="submit"] {
margin-right: 5px;
+ a {
margin-right: 5px;
}
+ a + a {
margin-left: 5px;
}
}
#message_sticky,
#message_locked {
position: relative;
@@ -142,12 +87,19 @@ form[action*="repository/diff"] {
*/
.query-columns {
select {
// scss-lint:disable ImportantRule
width: auto !important;
}
.buttons {
vertical-align: middle;
input[type="button"] {
width: 32px;
margin-bottom: 4px;
padding-right: 1px;
padding-left: 1px;
@include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
}
}
@@ -165,7 +117,7 @@ a[data-expands],
padding: 2px 8px;
border: 1px solid;
border-radius: $border-radius-base;
background-image: url("../images/bullet_toggle_plus.png");
@extend %image-toggle-plus;
background-repeat: no-repeat;
background-position: 2px 2px;
cursor: pointer;

View File

@@ -49,7 +49,7 @@ table.cal {
background: $highlight-bg;
p.day-num {
font-weight: bold;
font-weight: $font-weight-bold;
}
}
}

View File

@@ -18,6 +18,7 @@
}
.debug {
// scss-lint:disable ImportantRule
background: #00f !important;
color: #fff !important;
}
@@ -52,7 +53,7 @@
.class {
color: #795da3;
font-weight: bold;
font-weight: $font-weight-bold;
}
.class-variable {
@@ -86,7 +87,7 @@
.definition {
color: #099;
font-weight: bold;
font-weight: $font-weight-bold;
}
.delimiter {
@@ -95,7 +96,7 @@
.directive {
color: #088;
font-weight: bold;
font-weight: $font-weight-bold;
}
.doc {
@@ -104,7 +105,7 @@
.doc-string {
color: #d42;
font-weight: bold;
font-weight: $font-weight-bold;
}
.doctype {
@@ -113,7 +114,7 @@
.entity {
color: #800;
font-weight: bold;
font-weight: $font-weight-bold;
}
.error {
@@ -127,7 +128,7 @@
.exception {
color: #c00;
font-weight: bold;
font-weight: $font-weight-bold;
}
.float {
@@ -136,7 +137,7 @@
.function {
color: #06b;
font-weight: bold;
font-weight: $font-weight-bold;
}
.global-variable {
@@ -153,7 +154,7 @@
.include {
color: #b44;
font-weight: bold;
font-weight: $font-weight-bold;
}
.inline {
@@ -163,7 +164,7 @@
.inline-delimiter {
color: #666;
font-weight: bold;
font-weight: $font-weight-bold;
}
.instance-variable {
@@ -188,12 +189,12 @@
.keyword {
color: #b3113e;
font-weight: bold;
font-weight: $font-weight-bold;
}
.label {
color: #970;
font-weight: bold;
font-weight: $font-weight-bold;
}
.local-variable {
@@ -202,7 +203,7 @@
.namespace {
color: #707;
font-weight: bold;
font-weight: $font-weight-bold;
}
.octal {
@@ -219,7 +220,7 @@
.predefined-type {
color: #0a5;
font-weight: bold;
font-weight: $font-weight-bold;
}
.preprocessor {
@@ -228,7 +229,7 @@
.pseudo-class {
color: #00c;
font-weight: bold;
font-weight: $font-weight-bold;
}
.regexp {
@@ -249,7 +250,7 @@
.reserved {
color: #080;
font-weight: bold;
font-weight: $font-weight-bold;
}
.shell {
@@ -288,7 +289,7 @@
.type {
color: #339;
font-weight: bold;
font-weight: $font-weight-bold;
}
.value {
@@ -343,14 +344,14 @@
.insert {
background: transparent;
color: #0c0;
font-weight: bold;
font-weight: $font-weight-bold;
}
}
.delete .delete {
background: transparent;
color: #c00;
font-weight: bold;
font-weight: $font-weight-bold;
}
.change .change {

View File

@@ -1,5 +1,12 @@
#main {
@extend %clearfix;
@if $flexbox-layout {
// scss-lint:disable VendorPrefix
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
} @else {
@extend %clearfix;
}
}
@@ -9,7 +16,17 @@
#content {
padding: $padding-side;
overflow: hidden;
@if $flexbox-layout {
// scss-lint:disable VendorPrefix
$side-space: $sidebar-width + $padding-side * 2;
width: calc(100% - #{$side-space});
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
} @else {
overflow: hidden;
}
}
@@ -18,38 +35,56 @@
// --------------------------------------------------
#sidebar {
width: $sidebar-width - ($sidebar-padding-horizontal * 2) - 1px;
// scss-lint:disable VendorPrefix
padding: $padding-side $sidebar-padding-horizontal;
float: $sidebar-position;
@media screen and (min-width: 1px) {
// scss-lint:disable VendorPrefixes
$border: $sidebar-link-active-border;
$body: $body-bg;
padding-bottom: $padding-side * 3;
background-image: -webkit-linear-gradient($body 1%, $border 10%, $border 85%, $body);
background-image: -o-linear-gradient($body 1%, $border 10%, $border 85%, $body);
background-image: linear-gradient($body 1%, $border 10%, $border 85%, $body);
background-repeat: no-repeat;
background-size: 1px 100%;
@if $flexbox-layout {
-webkit-flex: 0 0 $sidebar-width-computed;
-ms-flex: 0 0 $sidebar-width-computed;
flex: 0 0 $sidebar-width-computed;
@if $sidebar-position == "left" {
padding-right: $sidebar-padding-horizontal + 1px;
background-position: right 0;
-webkit-order: -1;
-ms-flex-order: -1;
order: -1;
} @else {
-webkit-order: 1;
-ms-flex-order: 1;
order: 1;
}
} @else {
width: $sidebar-width-computed;
float: $sidebar-position;
}
@media screen and (min-width: 1px) {
@if not $flexbox-layout {
padding-bottom: $padding-side * 3;
}
@if $sidebar-position == "left" {
border-right: 1px solid $sidebar-link-active-border;
box-shadow: inset -9px 0 6px -6px rgba(0, 0, 0, .05);
} @else {
padding-left: $sidebar-padding-horizontal + 1px;
background-position: left 0;
border-left: 1px solid $sidebar-link-active-border;
box-shadow: inset 9px 0 6px -6px rgba(0, 0, 0, .05);
}
}
.nosidebar & {
width: 0;
margin: 0;
padding: 0;
float: none;
border: 0 none;
@if $flexbox-layout {
// scss-lint:disable VendorPrefix
-webkit-flex: 0 0 auto;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
} @else {
width: 0;
float: none;
}
}
h3 {
@@ -117,7 +152,7 @@
}
#footer {
margin: $line-height-computed $padding-side;
margin: 0 $padding-side $line-height-computed;
padding-top: $line-height-computed;
border-top: 1px solid $gray-lighter;
color: $gray-light;

View File

@@ -24,6 +24,16 @@
span + span:before {
content: "/ ";
}
.pagination + &,
#wiki_add_attachment + & {
margin-top: 0;
float: right;
}
.pagination + & {
margin-top: $pagination-padding-vertical + 1px;
}
}
@@ -33,8 +43,8 @@
a.collapsible,
.collapsible > legend {
cursor: pointer;
color: $link-color;
cursor: pointer;
@include user-select(none);
&:hover {
@@ -48,13 +58,16 @@ a.collapsible,
width: 0;
height: 0;
margin-right: 3px;
border-top: 5px solid;
border-right: 5px solid transparent;
border-left: 5px solid transparent;
border-top: 6px solid;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
content: "";
vertical-align: middle;
@include rotate(0);
@include transition-transform(.1s);
@if $collapsible-animation-time > 0 {
@include transition-transform($collapsible-animation-time);
}
}
}
@@ -65,6 +78,34 @@ a.collapsible.collapsed,
}
}
@if $collapsible-animation-time > 0 {
fieldset.collapsible {
min-height: $line-height-computed;
max-height: 2500px; // should be enough with all the possible filters
overflow: hidden;
@include transition(max-height $collapsible-animation-time ease-out);
> div {
// scss-lint:disable ImportantRule
display: block !important;
opacity: 1;
visibility: visible;
@include transition(visibility 0s 0s, opacity $collapsible-animation-time);
}
&.collapsed {
max-height: 0;
@include transition(max-height $collapsible-animation-time);
> div {
opacity: 0;
visibility: hidden;
@include transition(visibility 0s $collapsible-animation-time, opacity $collapsible-animation-time);
}
}
}
}
/**
* Elements with context menus (doesn't really work on Windows)
@@ -82,8 +123,8 @@ a.collapsible.collapsed,
.contextual {
padding-left: $padding-base-vertical;
float: right;
cursor: default;
white-space: nowrap;
cursor: default;
input,
select {
@@ -280,6 +321,7 @@ p.subtitle {
}
&.ui-sortable-placeholder {
// scss-lint:disable ImportantRule
outline: 1px dashed $highlight-border;
background: $highlight-bg;
visibility: visible !important;
@@ -287,7 +329,7 @@ p.subtitle {
&.ui-sortable-helper {
background: $body-bg;
box-shadow: $panel-shadow;
@include nice-shadow(4);
}
}
@@ -316,17 +358,58 @@ a.close-icon {
*/
#content table.filecontent {
width: 100%;
background: $body-bg;
th.filename {
border-color: $brand-primary;
border-bottom-color: darken($body-bg, 10%);
background-color: $brand-primary;
color: $brand-text;
}
tbody {
font-size: $font-size-list;
}
tbody,
td.line-code pre {
font-family: $font-family-monospace;
}
td.line-code {
padding: 2px 5px;
th.line-num {
border-color: darken($body-bg, 10%);
background-color: darken($body-bg, 5%);
color: $gray;
}
pre {
font-size: 13px;
th.line-num,
td.line-code {
padding: .15em .4em;
}
th.line-num,
td.line-code,
td.line-code pre {
font-size: 1em;
}
tr:hover {
background-color: darken($body-bg, 2%);
th.line-num {
background-color: darken($body-bg, 10%);
}
}
tr:target {
th.line-num {
border-color: darken(adjust-hue($highlight-bg, -8deg), 15%);
background-color: darken(adjust-hue($highlight-bg, -8deg), 7%);
color: $highlight-text;
}
td.line-code {
background-color: $highlight-bg;
}
}
}
@@ -377,7 +460,11 @@ ul.projects {
a.project {
font-size: $font-size-h3;
font-weight: bold;
font-weight: $font-weight-bold;
&.child {
font-weight: normal;
}
}
}
@@ -401,11 +488,7 @@ ul.projects {
* Time report
*/
table#time-report {
td.hours {
text-align: right;
}
#time-report {
th {
&.period,
&.total {
@@ -426,17 +509,17 @@ table#time-report {
&.total {
border-top: 2px solid darken($table-border-color, 5%);
background-color: $table-bg-active;
font-weight: bold;
font-weight: $font-weight-bold;
}
}
.hours-dec {
font-size: .9em;
td.hours {
text-align: right;
}
}
.total-hours {
font-weight: bold;
font-weight: $font-weight-bold;
.hours-int {
font-size: $font-size-large * 1.1;
@@ -529,9 +612,9 @@ div#version-summary {
border: 1px solid $highlight-border;
background-color: $highlight-bg;
color: $highlight-text;
font-weight: bold;
font-weight: $font-weight-bold;
text-align: center;
box-shadow: $panel-shadow;
@include nice-shadow(3);
opacity: .9;
z-index: 100;
@@ -555,7 +638,7 @@ tr.message {
}
&.sticky td.subject {
font-weight: bold;
font-weight: $font-weight-bold;
}
td {
@@ -569,7 +652,7 @@ tr.message {
white-space: nowrap;
a:last-child {
font-weight: bold;
font-weight: $font-weight-bold;
}
}
}
@@ -583,7 +666,7 @@ table.boards {
white-space: nowrap;
a:last-child {
font-weight: bold;
font-weight: $font-weight-bold;
}
}
}
@@ -607,39 +690,39 @@ table.boards {
> h4,
> p {
margin-bottom: 0;
padding: $padding-base-vertical $padding-base-horizontal;
padding: $bubble-padding-vertical $bubble-padding-horizontal;
border-bottom: 1px solid mix($gray-lighter, $gray-lightest, 50%);
color: $gray;
font-size: $font-size-small;
font-size: $font-size-list;
a {
color: $gray-darker;
&.user {
font-weight: bold;
font-weight: $font-weight-bold;
}
}
}
.wiki {
padding: $padding-base-horizontal;
padding: $bubble-padding-horizontal;
border-radius: 0 0 $panel-border-radius $panel-border-radius;
background: $body-bg;
}
.contextual {
position: relative;
margin-right: $padding-base-vertical;
margin-right: $bubble-padding-vertical;
z-index: 1;
@if $use-font-awesome {
margin-top: $padding-small-vertical;
} @else {
margin-top: $padding-base-vertical;
margin-top: $bubble-padding-vertical;
}
a {
margin-left: ceil($padding-base-vertical / 2);
margin-left: ceil($bubble-padding-vertical / 2);
}
}
}
@@ -650,7 +733,7 @@ table.boards {
@if $use-gravatars {
.reply {
margin-left: 24px + $padding-base-horizontal;
margin-left: $bubble-gravatar-size + $bubble-gravatar-space;
> h4 {
position: relative;
@@ -659,7 +742,7 @@ table.boards {
&:after {
display: block;
position: absolute;
top: 6px;
top: 9px;
right: 100%;
left: -14px;
width: 0;
@@ -684,8 +767,8 @@ table.boards {
}
img.gravatar {
margin-top: $line-height-computed - 24px;
margin-left: -(24px + $padding-base-horizontal * 2 + 1px);
margin-top: $line-height-computed - $bubble-gravatar-size;
margin-left: -($bubble-gravatar-size + $bubble-gravatar-space + $bubble-padding-horizontal + 1px);
float: left;
}
}
@@ -751,13 +834,30 @@ table.boards {
* Repository view
*/
#revision_selector {
display: inline;
.revision-info {
margin-bottom: $line-height-computed;
tbody > tr > td {
padding-right: $table-cell-padding;
padding-bottom: $table-condensed-cell-padding;
+ td {
font-family: $font-family-monospace;
}
}
}
#related-issues {
li img {
vertical-align: middle;
margin: $line-height-computed 0;
li > a {
margin-left: .5em;
@if $use-font-awesome == false {
img {
vertical-align: middle;
}
}
}
}
@@ -781,6 +881,10 @@ tr.changeset {
background-color: #fffffb;
}
td.id {
font-family: $font-family-monospace;
}
td.author,
td.committed_on {
width: 15%;
@@ -799,3 +903,58 @@ tr.changeset {
margin-bottom: 0;
}
}
.revision-graph {
circle {
// @include translate(0, $table-cell-padding - 1px);
}
}
#content #changes-legend {
font-size: 1em;
.change {
background-position: 5px center;
}
.change-A { color: $changeset-add-color; }
.change-M { color: $changeset-modified-color; }
.change-C { color: $changeset-copied-color; }
.change-R { color: $changeset-renamed-color; }
.change-D { color: $changeset-deleted-color; }
}
.changeset-changes {
.change {
padding-top: $table-condensed-cell-padding;
color: $gray-dark;
a {
@include link-variant($gray-dark);
}
}
.change-A {
&:before { color: $changeset-add-color; }
a { @include link-variant($changeset-add-color); }
}
.change-M {
&:before { color: $changeset-modified-color; }
a { @include link-variant($changeset-modified-color); }
}
.change-C {
&:before { color: $changeset-copied-color; }
a { @include link-variant($changeset-copied-color); }
}
.change-R {
&:before { color: $changeset-renamed-color; }
a { @include link-variant($changeset-renamed-color); }
}
.change-D {
color: $changeset-deleted-color;
}
}

View File

@@ -53,20 +53,20 @@
a {
color: $link;
font-weight: bold;
font-weight: $font-weight-bold;
}
}
.warning,
.conflict,
.nodata {
@include flash($flash-warning-text, $flash-warning-bg, $flash-warning-border, $flash-warning-link, "warning");
}
.flash.notice {
@include flash($flash-success-text, $flash-success-bg, $flash-success-border, $flash-success-link, "true");
}
.flash.warning,
.conflict,
.nodata {
@include flash($flash-warning-text, $flash-warning-bg, $flash-warning-border, $flash-warning-link, "warning");
}
#errorExplanation,
.flash.error {
@include flash($flash-error-text, $flash-error-bg, $flash-error-border, $flash-error-link, "exclamation");

View File

@@ -3,11 +3,13 @@
// --------------------------------------------------
form {
// display: inline;
td {
padding: $table-condensed-cell-padding;
}
.contextual > & {
display: inline;
}
}
button,
@@ -86,7 +88,7 @@ input[type="range"] {
input.autocomplete {
padding-right: 30px;
background-image: url("../images/aci.png"); /* autocomplete indicator */
@extend %image-aci;
background-repeat: no-repeat;
background-position: right center;
@@ -101,11 +103,54 @@ select {
height: auto;
}
&[size="1"] {
height: $input-height-base;
}
option[disabled] {
color: $gray-lighter;
}
}
/**
* Browser hacks: unfortunately every browser has different capabilities when it
* comes to styling <select> and <option> tags.
*/
// Mozilla Firefox
@-moz-document url-prefix() {
select {
&[multiple] {
padding: 0;
}
option,
optgroup:before {
padding: $input-padding-vertical $input-padding-horizontal;
border-bottom: 1px dotted $gray-lighter;
}
optgroup > option {
padding-right: $input-padding-horizontal * 2;
padding-left: $input-padding-horizontal * 2;
}
}
}
// Google Chrome and Safari
@supports (-webkit-appearance: none) {
select[multiple] {
padding: 0;
}
// For some reason nested selectors will not work
select[multiple] option {
padding: $input-padding-vertical $input-padding-horizontal;
border-bottom: 1px dotted $gray-lighter;
}
}
select:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 #000;
@@ -238,8 +283,8 @@ em.info {
margin-left: 0;
padding-left: 16px;
float: none;
cursor: pointer;
text-align: left;
cursor: pointer;
> input {
margin-top: 0;
@@ -305,8 +350,7 @@ label[for=closed] {
#my_account_form select,
#user_form select,
#user_identity_url,
#custom_field_possible_values,
#custom_field_default_value {
#custom_field_possible_values {
width: 100%;
}
@@ -323,6 +367,7 @@ input {
}
select.bool_cf {
// scss-lint:disable ImportantRule
width: auto !important;
}
@@ -415,7 +460,7 @@ select.bool_cf {
}
}
#all_attributes {
#issue-form {
.splitcontentleft,
.splitcontentright {
width: 100%;
@@ -449,24 +494,26 @@ select.bool_cf {
padding-left: .2em;
text-align: right;
}
}
/**
* Hack: first <p> in issue form ("private" option) is moved to the right with
* inline styles. Don't allow it break the layout
*/
> p[style] {
margin-right: 0 !important;
margin-bottom: 0;
/**
* Hack: first <p> in issue form ("private" option) is moved to the right with
* inline styles. Don't allow it break the layout
*/
#all_attributes > p[style] {
// scss-lint:disable ImportantRule
margin-right: 0 !important;
margin-bottom: 0;
padding-left: 0;
input {
top: 2px;
}
label {
margin-right: 0;
padding-left: 0;
input {
top: 2px;
}
label {
margin-right: 0;
padding-left: 0;
}
}
}
@@ -478,15 +525,15 @@ select.bool_cf {
display: block;
}
// scss-lint:disable VendorPrefixes
// scss-lint:disable VendorPrefix
#watchers_inputs {
display: block;
max-width: 80em;
max-width: 64em;
margin-top: $input-padding-vertical + 1px;
margin-bottom: $line-height-computed / 2;
-webkit-columns: 18em 4;
-moz-columns: 18em 4;
columns: 18em 4;
-webkit-columns: 18em 3;
-moz-columns: 18em 3;
columns: 18em 3;
overflow: auto;
}

View File

@@ -41,7 +41,7 @@
&.project,
&.version {
font-weight: bold;
font-weight: $font-weight-bold;
}
}
}
@@ -115,31 +115,15 @@
}
}
.version-behind-schedule a,
.issue-behind-schedule a {
.version-behind-schedule,
.issue-behind-schedule {
color: $brand-warning;
@if $color-trackers {
&.issue {
background-color: $brand-warning;
color: $brand-text;
font-weight: 700;
}
}
}
.version-overdue a,
.issue-overdue a,
.project-overdue a {
.version-overdue,
.issue-overdue,
.project-overdue {
color: $brand-danger;
@if $color-trackers {
&.issue {
background-color: $brand-danger;
color: $brand-text;
font-weight: 700;
}
}
}
/**
@@ -161,12 +145,12 @@
left: 24px;
width: 270px;
padding: $padding-base-vertical;
border: 1px solid $tooltip-border;
border: $tooltip-border-width solid $tooltip-border;
background-color: $tooltip-bg;
color: $tooltip-text;
font-size: $font-size-small;
text-align: left;
box-shadow: 0 2px 2px rgba(0, 0, 0, .2);
@include nice-shadow(3);
}
@if $sidebar-position == "left" {

View File

@@ -37,6 +37,13 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
* Context menu
*/
#context-menu {
> ul,
> ul > li > ul {
// scss-lint:disable ImportantRule
border: 0 none !important;
@include nice-shadow(2);
}
a {
@extend %fa-icon;
@@ -52,7 +59,7 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
}
ul li a.submenu {
background-image: url("../images/bullet_arrow_right.png");
@extend %image-arrow-right;
}
}
@@ -64,6 +71,13 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
{
.icon {
@extend %fa-icon;
padding-left: 20px;
background-repeat: no-repeat;
background-position: 0% 50%;
&:before {
margin-left: -20px;
}
.contextual & {
margin-left: .5em;
@@ -111,6 +125,12 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
.icon-zoom-out:before { content: $fa-var-search-minus; }
.icon-passwd:before { content: $fa-var-key; }
.icon-test:before { content: $fa-var-arrow-circle-right; }
.icon-phone:before { content: $fa-var-phone; }
.icon-email:before { content: $fa-var-envelope; }
.icon-skype:before { content: $fa-var-skype; }
.icon-facebook:before { content: $fa-var-facebook-square; }
.icon-linkedin:before { content: $fa-var-linkedin-square; }
.icon-twitter:before { content: $fa-var-twitter-square; }
}
@else
{
@@ -169,21 +189,11 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
.icon-add,
.icon-edit,
.icon-save {
color: $icon-success-color;
&:hover,
&:focus {
color: $icon-success-color;
}
@include link-variant($icon-success-color, $icon-success-hover-color);
}
.icon-del {
color: $icon-danger-color;
&:hover,
&:focus {
color: $icon-danger-hover-color;
}
@include link-variant($icon-danger-color, $icon-danger-hover-color);
}
@@ -278,48 +288,115 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
*/
@if $use-font-awesome
{
%admin-icon {
@extend %fa-icon;
&:before {
width: 20px;
margin-left: -(5px + 20px);
color: $gray;
text-align: center;
}
&:hover:before {
color: $gray-darker;
}
&.selected:before {
color: $gray-darkest;
}
}
#admin-menu {
#admin-index > & {
a {
padding-left: 0;
padding-left: 5px + 20px;
}
}
li {
> a {
@extend %fa-icon;
padding-left: $sidebar-padding-horizontal;
&:before {
width: 1em;
margin-right: .5em;
color: $gray;
text-align: center;
}
&:hover:before {
color: $gray-darker;
}
&.selected:before {
color: $gray-darkest;
}
padding-left: $sidebar-padding-horizontal + 5px + 20px;
}
}
.projects:before { content: $fa-var-cubes; }
.users:before { content: $fa-var-user; }
.groups:before { content: $fa-var-group; }
.roles:before { content: $fa-var-eye; }
.trackers:before { content: $fa-var-ticket; }
.issue_statuses:before { content: $fa-var-pencil-square; }
.workflows:before { content: $fa-var-sitemap; }
.custom_fields:before { content: $fa-var-edit; }
.enumerations:before { content: $fa-var-list; }
.settings:before { content: $fa-var-gear; }
.plugins:before { content: $fa-var-puzzle-piece; }
.info:before { content: $fa-var-info-circle; }
.server_authentication:before { content: $fa-var-key; }
.projects {
@extend %admin-icon;
&:before { content: $fa-var-cubes; }
}
.users {
@extend %admin-icon;
&:before { content: $fa-var-user; }
}
.groups {
@extend %admin-icon;
&:before { content: $fa-var-group; }
}
.roles {
@extend %admin-icon;
&:before { content: $fa-var-eye; }
}
.trackers {
@extend %admin-icon;
&:before { content: $fa-var-ticket; }
}
.issue_statuses {
@extend %admin-icon;
&:before { content: $fa-var-pencil-square; }
}
.workflows {
@extend %admin-icon;
&:before { content: $fa-var-sitemap; }
}
.custom_fields {
@extend %admin-icon;
&:before { content: $fa-var-edit; }
}
.enumerations {
@extend %admin-icon;
&:before { content: $fa-var-list; }
}
.settings {
@extend %admin-icon;
&:before { content: $fa-var-gear; }
}
.plugins {
@extend %admin-icon;
&:before { content: $fa-var-puzzle-piece; }
}
.info {
@extend %admin-icon;
&:before { content: $fa-var-info-circle; }
}
.server_authentication {
@extend %admin-icon;
&:before { content: $fa-var-key; }
}
}
}
@else
@@ -490,7 +567,8 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
}
}
.issues .buttons a {
.issues .buttons a,
#related-issues li > a {
&[data-method="delete"] {
@extend %fa-icon;
@@ -538,6 +616,11 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
margin-left: .2em;
}
&.asc,
&.desc {
background-image: none;
}
&.asc:after {
content: $fa-var-sort-amount-asc;
}
@@ -604,12 +687,7 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
}
&:nth-child(2) {
color: $icon-success-color;
&:hover,
&:focus {
color: $icon-success-hover-color;
}
@include link-variant($icon-success-color, $icon-success-hover-color);
&:before {
content: $fa-var-pencil;
@@ -617,12 +695,7 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
}
&:nth-child(3) {
color: $icon-danger-color;
&:hover,
&:focus {
color: $icon-danger-hover-color;
}
@include link-variant($icon-danger-color, $icon-danger-hover-color);
&:before {
content: $fa-var-trash;
@@ -652,7 +725,7 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
}
&.sticky td.subject {
font-weight: bold;
font-weight: $font-weight-bold;
&:before {
content: $fa-var-bookmark;
@@ -693,32 +766,27 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
div.wiki {
.external {
@extend %fa-icon;
white-space: nowrap;
&:before {
display: inline;
margin-right: 3px;
font-size: 10px;
content: $fa-var-external-link;
}
}
}
[href*="edit"] {
@extend %fa-icon;
color: $icon-success-color;
font-size: $font-size-base;
.contextual [href*="edit"] {
@extend %fa-icon;
font-size: $font-size-base;
@include link-variant($icon-success-color, $icon-success-hover-color);
&:hover,
&:focus {
color: $icon-success-color;
}
&:before {
content: $fa-var-pencil;
}
&:before {
content: $fa-var-pencil;
}
img {
display: none;
}
img {
display: none;
}
}
@@ -727,7 +795,13 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
&:before {
margin-right: .3em;
content: $fa-var-paperclip;
color: $icon-success-color;
content: $fa-var-plus;
}
&:hover:before,
&:focus:before {
color: $icon-success-hover-color;
}
}
@@ -772,6 +846,41 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
}
}
}
#changes-legend > li.change,
.changeset-changes ul > li.change {
@extend %fa-icon;
background: transparent;
&:before {
position: relative;
top: -.12em;
font-size: .7143em;
content: $fa-var-circle;
}
&.folder:before { top: 0; font-size: 1em; content: $fa-var-folder; }
&.folder.change-A:before { content: $fa-var-folder-open; }
&.folder.change-M:before { content: $fa-var-folder-open; }
&.change-A:before { content: $fa-var-plus-circle; }
&.change-M:before { content: $fa-var-circle; }
&.change-C:before { content: $fa-var-arrow-circle-right; }
&.change-R:before { content: $fa-var-check-circle; }
&.change-D:before { content: $fa-var-minus-circle; }
}
.changeset-changes ul > li.change {
&.folder:before {
top: $table-condensed-cell-padding - 2px;
margin-left: -20px;
}
&:before {
top: $table-condensed-cell-padding;
margin-left: -(20px - $table-condensed-cell-padding);
float: left;
}
}
}
@else
{
@@ -810,6 +919,7 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
background: url("../../../images/delete.png") no-repeat 1px 50%;
&:hover {
// scss-lint:disable ImportantRule
text-decoration: none !important;
}
}
@@ -830,7 +940,7 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
&.sticky td.subject {
background-image: url("../../../images/bullet_go.png");
font-weight: bold;
font-weight: $font-weight-bold;
}
td.subject {
@@ -996,7 +1106,8 @@ $icon-danger-hover-color: darken($brand-danger, 10%);
height: 14px;
padding-left: 14px;
box-sizing: border-box;
background: url("../images/calendar_555555_14.png") no-repeat;
@extend %image-calendar;
background-repeat: no-repeat;
}

View File

@@ -0,0 +1,44 @@
//
// Base64 encoded images
// --------------------------------------------------
/* ACI = AutoComplete Indicator */
%image-aci {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAKBAMAAAAnY0GXAAAAD1BMVEUAAACzs7Ozs7Ozs7Ozs7NJvZFvAAAABHRSTlMA5kpJG2qUMwAAABtJREFUCNdjIBMYCkMRDIg4QhBuAUUhKCIPAAAlaQNk5qF21gAAAABJRU5ErkJggg==);
}
%image-arrow-up {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWNxwqAAAACHRSTlMAgFIFe2wwFmA2CKQAAAArSURBVAjXYyASGBlAGYoKEJpNUAzCKBEUKQDRzIGCgsEgBpOgoKAQA5kAAOOzAuqv1pGxAAAAAElFTkSuQmCC);
}
%image-arrow-right {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUUeIgAAAACXRSTlMAgF1mUUUMBwa6cf6pAAAAIklEQVQI12PADwJgDBEYQ1ADxhBOgDIEFdBF1GG6EOYQCQC/wwKE7b2bNAAAAABJRU5ErkJggg==);
}
%image-arrow-down {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWNxwqAAAACHRSTlMAgFIFbDAWVn1ccuIAAAAsSURBVAjXYyANMAkKCgqBGMyOgoLOYKFEQcEEMINVUBSqSlEByjA3YCARAADFOwKnW3vw7AAAAABJRU5ErkJggg==);
}
%image-arrow-left {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWNxwqAAAACHRSTlMAgF1mUUUMBtml7EIAAAAjSURBVAjXYyAAWGEMRyhdJAih2QyhDCZBhAhcDVwXwhziAACuywJHmKAVPgAAAABJRU5ErkJggg==);
}
%image-arrow-up-white {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAYUlEQVR4Xu2SMQqAMAxFVUxOID2FQ+9R3cRjesX4A5lCoaUFB2nhkeQPLxQyi8jU8xbwYwGBC1CrIIFda4sgKq6vFgS/1eZQI2BwZ/5NlnNJcIAtt8ny04ermx/l4zsYgheccgigTIfmMAAAAABJRU5ErkJggg==);
}
%image-arrow-down-white {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAG1BMVEUAAAD////////////////////////////////rTT7CAAAACXRSTlMAgFIFbBZWMTBl3YBFAAAALElEQVQI12MgDTAJCgoKgRjMjoKCzmChQEHBADCDQ1AcqkpRAcowM2AgEQAAvM4CiwrixCQAAAAASUVORK5CYII=);
}
%image-calendar {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOBAMAAADtZjDiAAAAIVBMVEUAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUMftYpAAAACnRSTlMArIDn/dahwzIKIC4f+wAAADxJREFUCNdjYEhJACEGBk8HEGIQXrDYeMFiAYZVK1YB0QKGVSAApBcwMQgwMSDohaKChqKCxItXgc0pAADUBx5bh1ZBCgAAAABJRU5ErkJggg==);
}
%image-toggle-minus {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMAgJsrThgAAAAQSURBVAjXY8AK+D+AEDYAAC8fAf+FxiPoAAAAAElFTkSuQmCC);
}
%image-toggle-plus {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMAgJsrThgAAAAVSURBVAjXY0AGjA1QxP8BiBBcJAAAdjIFBZTfDZQAAAAASUVORK5CYII=);
}

View File

@@ -2,76 +2,159 @@
// Issue page
// --------------------------------------------------
.issue.details {
margin-bottom: $line-height-computed;
padding: $issue-padding;
border: 1px solid $issue-border;
border-radius: $border-radius-base;
background-color: $issue-bg;
color: $issue-text;
word-wrap: break-word;
@if $use-gravatars
{
> img.gravatar {
width: $issue-gravatar-size;
height: $issue-gravatar-size;
margin-right: 10px;
margin-bottom: $line-height-computed / 2;
float: left;
}
table img.gravatar {
position: relative;
top: -3px;
margin-right: 5px;
}
> .subject,
> .author {
padding-left: $issue-gravatar-size + 10px;
}
}
> .subject {
h3 {
margin-bottom: 5px;
color: $gray-darkest;
font-size: $issue-heading-size * 1em;
font-weight: bold;
line-height: $headings-line-height;
}
p {
margin-bottom: 5px;
font-size: $font-size-small;
}
}
> .author {
.issue {
&.details {
margin-bottom: $line-height-computed;
}
padding: $issue-padding;
border: 1px solid $issue-border;
border-radius: $border-radius-base;
background-color: $issue-bg;
color: $issue-text;
word-wrap: break-word;
> hr {
margin: $issue-padding (-$issue-padding);
border-top-color: $issue-border;
}
@if $use-gravatars
{
> img.gravatar {
width: $issue-gravatar-size;
height: $issue-gravatar-size;
margin-right: 10px;
margin-bottom: $line-height-computed / 2;
float: left;
}
> .description {
> p {
margin-bottom: $issue-padding;
table img.gravatar {
position: relative;
top: -3px;
margin-right: 5px;
}
> .subject,
> .author {
padding-left: $issue-gravatar-size + 10px;
}
}
> .wiki {
margin: 0 (-$issue-padding) (-$issue-padding);
padding: $padding-wiki;
border-top: 1px solid $issue-border;
background: $body-bg;
&.assigned-to-me {
.assigned-to .user {
font-weight: $font-weight-bold;
}
}
> .subject {
h3 {
margin-bottom: .3em;
color: $gray-darkest;
font-size: $issue-heading-size * 1em;
font-weight: $font-weight-bold;
line-height: 1.2;
}
p {
margin-bottom: 5px;
font-size: $font-size-small;
}
}
> .author {
margin-bottom: $line-height-computed;
}
> hr {
margin: $issue-padding (-$issue-padding);
border-top-color: $issue-border;
}
> .description {
> p {
margin-bottom: $issue-padding;
}
> .wiki {
margin: 0 (-$issue-padding) (-$issue-padding);
padding: $padding-wiki;
border-top: 1px solid $issue-border;
background: $body-bg;
}
}
.next-prev-links {
color: $gray-light;
}
}
.next-prev-links {
color: $gray-light;
.attributes {
width: 100%;
th,
td {
padding: $issue-attribute-padding-v $issue-attribute-padding-h $issue-attribute-padding-v 0;
text-align: left;
vertical-align: top;
}
> tbody > tr {
th {
font-weight: normal;
}
td {
color: $gray-darkest;
}
}
@media screen and (min-width: $screen-md-min) {
> tbody > tr {
> th,
> td {
width: 25%;
}
}
}
@media screen and (min-width: $screen-lg-min) {
width: auto;
> tbody > tr {
> th {
width: 14em;
}
> td {
width: auto;
min-width: 16em;
}
}
}
}
@if $color-status {
.attributes td.status {
display: inline-block;
width: auto;
min-width: 1em;
margin-top: $issue-attribute-padding-v;
padding: 1px $table-cell-padding;
border-radius: $border-radius-base;
background-color: $brand-primary;
color: $brand-text;
font-size: $font-size-small;
font-weight: $font-weight-bold;
text-align: center;
text-transform: uppercase;
}
&.status-1 .attributes td.status {
background-color: $brand-info;
}
&.closed .attributes td.status {
background-color: $brand-danger;
}
}
div.attachments {
margin: $issue-padding (-$issue-padding) (-$issue-padding);
padding: $issue-padding;
}
}
@@ -80,16 +163,16 @@ div.fileover {
}
div.attachments {
margin: $issue-padding (-$issue-padding) (-$issue-padding);
padding: $issue-padding;
padding: $line-height-computed 0;
border-top: 1px solid $issue-border;
p {
margin: 10px 0 0;
}
&:first-child {
margin-top: 0;
}
p:first-child,
.contextual + p {
margin-top: 0;
}
img {
@@ -175,27 +258,6 @@ div.thumbnails {
}
}
table.attributes {
width: 100%;
th,
td {
padding: $table-condensed-cell-padding $table-condensed-cell-padding $table-condensed-cell-padding 0;
text-align: left;
vertical-align: top;
}
> tbody > tr {
> th {
width: 15%;
}
> td {
width: 35%;
}
}
}
#new-relation-form {
text-align: right;
@@ -208,41 +270,91 @@ table.attributes {
}
}
$journal-gravatar: 24px;
$journal-gravatar-margin: 8px;
$journal-gravatar-padding: 4px;
$journal-indent: 0;
#history {
overflow: auto;
@if $use-gravatars {
$journal-indent: $journal-gravatar + $journal-gravatar-margin + $journal-gravatar-padding;
> .tabs {
margin-bottom: $line-height-computed + 2px * 2;
}
&.hide-details {
.journal,
.details,
.first-of-notes:before {
display: none;
}
.has-notes {
display: block;
}
}
&.hide-notes {
.journal,
.wiki,
.first-of-details:before {
display: none;
}
.has-details {
display: block;
}
}
}
.journal {
margin-bottom: $line-height-computed / 2;
overflow: auto;
position: relative;
margin-bottom: $line-height-computed + 2px * 2;
@if $use-gravatars {
margin-left: $bubble-gravatar-size + $bubble-gravatar-space;
}
&:before {
display: block;
position: absolute;
top: -($line-height-computed + 2px);
left: 22px;
width: 4px;
height: $line-height-computed;
background-color: darken($body-bg, 5%);
content: "";
z-index: -1;
}
.tabs + &:before {
display: none;
}
> div {
border: 1px solid $issue-border;
border-radius: $panel-border-radius;
&:target {
border-color: darken($issue-border, 25%);
@if $use-gravatars {
h4:before {
border-right-color: darken($issue-border, 25%);
}
}
}
}
h4 {
margin: 0;
padding: (2px + $journal-gravatar-padding) 8px;
border-radius: $border-radius-base;
background-color: $gray-lightest;
padding: $bubble-padding-vertical $bubble-padding-horizontal;
border-radius: $panel-border-radius $panel-border-radius 0 0;
background-color: $issue-bg;
color: $gray;
font-size: $font-size-list;
line-height: $journal-gravatar - 2px * 2;
> .gravatar {
margin-top: -1px;
margin-right: $journal-gravatar-margin;
margin-left: -(8px - $journal-gravatar-padding);
float: left;
}
a {
color: $gray-dark;
}
color: $gray-darker;
.user {
font-weight: bold;
&.user {
font-weight: $font-weight-bold;
}
}
.journal-link {
@@ -250,13 +362,72 @@ $journal-indent: 0;
}
}
@if $use-gravatars {
h4 {
position: relative;
&:before,
&:after {
display: block;
position: absolute;
top: 9px;
right: 100%;
left: -14px;
width: 0;
height: 0;
border-style: solid solid outset;
border-color: transparent;
content: " ";
pointer-events: none;
}
&:after {
margin-top: 1px;
margin-left: 2px;
border-width: 6px;
border-right-color: $issue-bg;
}
&:before {
border-width: 7px;
border-right-color: $issue-border;
}
> .gravatar {
margin-top: $line-height-computed - $bubble-gravatar-size;
margin-left: -($bubble-gravatar-size + $bubble-gravatar-space + $bubble-padding-horizontal + 1px);
float: left;
}
}
}
.details {
margin-top: 5px;
padding-left: $journal-indent + $padding-base-horizontal;
margin: 0;
padding: $bubble-padding-vertical 0;
padding-left: $bubble-padding-horizontal * 3;
border-top: 1px solid mix($body-bg, $issue-border, 50%);
font-size: $font-size-list;
list-style: none;
li {
margin-bottom: .2em;
position: relative;
margin-bottom: $bubble-padding-vertical / 2;
&:last-child {
margin-bottom: 0;
}
&:before {
display: block;
position: absolute;
top: 5px;
left: -($bubble-padding-horizontal * 1.5 + 6px / 2);
width: 6px;
height: 6px;
border-radius: 50%;
background-color: $gray-light;
content: "";
}
}
img {
@@ -264,18 +435,27 @@ $journal-indent: 0;
}
}
.wiki {
margin-top: 5px;
margin-bottom: $line-height-computed / 2;
margin-left: $journal-indent;
.wiki,
form {
padding: $issue-padding;
border-top: 1px solid mix($body-bg, $issue-border, 50%);
}
@if $use-gravatars {
form {
margin-left: $journal-indent;
form {
padding-top: 5px;
background-color: $gray-lightest;
.wiki {
margin-left: 0;
> p {
margin-bottom: $issue-padding;
}
> .wiki {
margin: 0 (-$issue-padding) (-$issue-padding);
padding: 0;
border: 0 none;
.preview {
padding: $issue-padding;
}
}
}
@@ -292,85 +472,23 @@ $journal-indent: 0;
del > i:first-of-type,
i:first-of-type {
background-color: mix($body-bg, $diff-out-bg, 64%);
color: $diff-out-color;
background-color: $journal-old-value-bg;
color: $journal-old-value-color;
}
i:last-of-type {
background-color: mix($body-bg, $diff-in-bg, 64%);
color: $diff-in-color;
}
@if $bubble-journal-wiki-note {
&.has-notes {
.wiki {
position: relative;
min-height: $line-height-computed;
margin-top: 0;
padding: $padding-large-vertical $padding-base-horizontal;
border: 1px solid $gray-lighter;
border-left: 2px solid $gray-light;
border-radius: $panel-border-radius;
background: $body-bg;
@if $use-gravatars {
&:before,
&:after {
display: block;
position: absolute;
top: 6px;
right: 100%;
left: -16px;
width: 0;
height: 0;
border-style: solid solid outset;
border-color: transparent;
content: " ";
pointer-events: none;
}
&:after {
margin-top: 1px;
margin-left: 4px;
border-width: 6px;
border-top-color: $body-bg;
border-right-color: $body-bg;
}
&:before {
border-width: 8px;
border-top-color: $gray-light;
border-right-color: $gray-light;
}
}
}
form .wiki {
background-color: #fffbe5;
.preview {
padding-bottom: 0;
}
}
}
background-color: $journal-new-value-bg;
color: $journal-new-value-color;
}
}
.private-notes {
@if $bubble-journal-wiki-note {
&.has-notes .wiki {
border-left-color: $brand-warning;
> div {
border-left-color: $brand-warning;
&:before {
border-top-color: $brand-warning;
border-right-color: $brand-warning;
}
h4:before {
border-right-color: $brand-warning;
}
} @else {
margin-left: -(3px + 3px);
padding-left: 3px;
border-left: 3px solid $brand-warning;
border-radius: $border-radius-base 0 0 $border-radius-base;
}
}
@@ -389,24 +507,66 @@ span.private {
background: $brand-warning;
color: $brand-text;
font-size: $font-size-small;
font-weight: bold;
font-weight: $font-weight-bold;
text-transform: uppercase;
}
div#issue-changesets {
#issue-changesets {
margin-bottom: $line-height-computed;
@media screen and (min-width: $screen-md-min) {
width: 33%;
width: 45%;
margin-left: $padding-side;
float: right;
}
div.changeset {
padding: $table-cell-padding;
@media screen and (min-width: $screen-lg-min) {
width: 33%;
min-width: 28em;
}
+ div.changeset {
border-top: 1px solid $gray-lighter;
div.changeset {
margin-top: $line-height-computed / 2 + 2px * 2;
border: 1px solid $issue-border;
border-radius: $panel-border-radius;
background-color: $issue-bg;
font-size: $font-size-list;
overflow: hidden;
&:first-of-type {
margin-top: 0;
}
> p {
margin: 0;
padding: $padding-base-vertical $padding-base-horizontal;
color: $gray;
@include clearfix;
> a {
margin-left: .5em;
float: right;
font-family: $font-family-monospace;
font-weight: $font-weight-bold;
}
.author a {
color: $gray-darker;
&.user {
font-weight: $font-weight-bold;
}
}
> br {
display: none;
}
}
> .wiki {
padding: $padding-base-vertical $padding-base-horizontal;
border-top: 1px solid mix($body-bg, $issue-border, 50%);
background-color: $body-bg;
}
}
}

View File

@@ -37,7 +37,11 @@
border: 0 none;
background: $header-bg;
color: $header-text;
font-weight: bold;
font-weight: $font-weight-bold;
a {
color: $header-text;
}
a,
button {
@@ -112,6 +116,10 @@
background: $component-active-bg;
color: $component-active-color;
font-weight: normal;
.ui-icon {
background-image: url("/stylesheets/jquery/images/ui-icons_ffffff_256x240.png");
}
}
.ui-state-active a,
@@ -121,6 +129,10 @@
text-decoration: none;
}
.ui-sortable-helper {
@include nice-shadow(4);
}
/**
* Menu (e.g. autocomplete)
@@ -129,7 +141,7 @@
.ui-menu {
padding: 3px;
border-radius: $panel-border-radius;
box-shadow: $panel-shadow;
@include nice-shadow(2);
}
.ui-menu-item {
@@ -159,12 +171,20 @@
&.ui-widget-content {
padding: 3px;
border: 0 none;
box-shadow: $panel-shadow;
@include nice-shadow(5);
}
.ui-dialog-content {
padding: 1em;
}
.ui-dialog-titlebar-close {
right: .5em;
}
input[type="button"] {
@include button-variant($btn-link-color, $btn-link-bg, $btn-link-border);
}
}
.ui-widget-overlay {
@@ -183,10 +203,12 @@ img.ui-datepicker-trigger {
}
.ui-datepicker {
padding: 3px;
box-shadow: $panel-shadow;
padding: .3em .6em .6em;
border: 0 none;
@include nice-shadow(3);
.ui-datepicker-header {
margin: 0 -.3em;
padding: .3em;
}
@@ -221,6 +243,7 @@ img.ui-datepicker-trigger {
}
.ui-datepicker-calendar {
margin: 0;
table-layout: fixed;
.ui-state-default {
@@ -258,7 +281,8 @@ img.ui-datepicker-trigger {
text-align: right;
a {
padding: .25em .3em .25em 0;
padding-right: .4em;
padding-left: 0;
border-radius: $border-radius-base;
}
@@ -268,4 +292,15 @@ img.ui-datepicker-trigger {
}
}
}
.ui-datepicker-buttonpane {
margin: .6em 0 0;
padding: .6em 0 0;
@include clearfix;
button {
margin: 0;
padding: $btn-padding-vertical $btn-padding-horizontal;
}
}
}

View File

@@ -20,12 +20,32 @@
margin-left: -6px;
float: right;
}
.box & {
button {
margin-right: 2px;
}
.jstSpacer {
margin-right: 4px;
}
@media (min-width: $screen-lg) {
button {
margin-right: 4px;
}
.jstSpacer {
margin-right: 6px;
}
}
}
}
@if $use-font-awesome
{
.jstElements {
button[type="button"] {
%jstb-icon {
padding: 0;
background: $body-bg;
background-image: none;
@@ -37,32 +57,119 @@
}
}
.jstb_strong:before { content: $fa-var-bold; }
.jstb_em:before { content: $fa-var-italic; }
.jstb_ins:before { content: $fa-var-underline; }
.jstb_del:before { content: $fa-var-strikethrough; }
.jstb_code:before { content: $fa-var-code; }
.jstb_h1:before { content: $fa-var-header; }
.jstb_h2:before { content: $fa-var-header; font-size: 11px; }
.jstb_h3:before { content: $fa-var-header; font-size: 9px; }
.jstb_ul:before { content: $fa-var-list-ul; }
.jstb_ol:before { content: $fa-var-list-ol; }
.jstb_bq:before { content: $fa-var-indent; }
.jstb_unbq:before { content: $fa-var-outdent; }
.jstb_pre:before { content: $fa-var-terminal; }
.jstb_link:before { content: $fa-var-link; }
.jstb_img:before { content: $fa-var-image; }
.jstb_strong {
@extend %jstb-icon;
&:before { content: $fa-var-bold; }
}
.jstb_em {
@extend %jstb-icon;
&:before { content: $fa-var-italic; }
}
.jstb_ins {
@extend %jstb-icon;
&:before { content: $fa-var-underline; }
}
.jstb_del {
@extend %jstb-icon;
&:before { content: $fa-var-strikethrough; }
}
.jstb_code {
@extend %jstb-icon;
&:before { content: $fa-var-code; }
}
.jstb_h1 {
@extend %jstb-icon;
&:before { content: $fa-var-header; }
}
.jstb_h2 {
@extend %jstb-icon;
&:before { font-size: .7857em; content: $fa-var-header; }
}
.jstb_h3 {
@extend %jstb-icon;
&:before { font-size: .6429em; content: $fa-var-header; }
}
.jstb_ul {
@extend %jstb-icon;
&:before { content: $fa-var-list-ul; }
}
.jstb_ol {
@extend %jstb-icon;
&:before { content: $fa-var-list-ol; }
}
.jstb_bq {
@extend %jstb-icon;
&:before { content: $fa-var-indent; }
}
.jstb_unbq {
@extend %jstb-icon;
&:before { content: $fa-var-outdent; }
}
.jstb_pre {
@extend %jstb-icon;
&:before { content: $fa-var-terminal; }
}
.jstb_link {
@extend %jstb-icon;
&:before { content: $fa-var-link; }
}
.jstb_img {
@extend %jstb-icon;
&:before { content: $fa-var-image; }
}
.jstb_cut {
@extend %jstb-icon;
&:before { content: $fa-var-scissors; }
}
// For plugin https://github.com/mediatainment/redmine_codebutton
.jstb_codehighlight {
@extend %jstb-icon;
color: $brand-danger;
&:before { content: $fa-var-code; }
}
button.jstb_help {
@extend %jstb-icon;
color: $link-color;
&:hover {
color: $link-hover-color;
}
&:before {
content: $fa-var-question-circle;
}
&:before { content: $fa-var-question-circle; }
}
}
}

View File

@@ -11,9 +11,16 @@ table.list {
margin-bottom: 0;
}
@if $table-list-highlight-rows {
> tbody > tr:hover {
background-color: $table-bg-hover;
}
}
th {
padding: $table-cell-padding;
border-bottom: 2px solid $table-border-color;
border: 2px solid $table-border-color;
border-width: $table-list-header-border;
color: $gray;
vertical-align: bottom;
@@ -24,13 +31,15 @@ table.list {
td {
padding: $table-cell-padding;
border-bottom: 1px solid $table-border-color;
text-align: center;
border: 1px solid $table-border-color;
border-width: $table-list-item-border;
text-align: left;
vertical-align: top;
&.checkbox {
width: 15px;
padding: $table-cell-padding 0 0;
text-align: center;
input {
margin: 2px 0 0;
@@ -38,42 +47,27 @@ table.list {
}
&.id,
&.tracker,
&.parent,
&.relations {
&.relations,
&.tracker {
width: 2%;
text-align: center;
}
&.id {
font-weight: bold;
font-weight: $font-weight-bold;
text-align: right;
}
&.name,
&.description,
&.subject,
&.comments,
&.roles,
&.author,
&.assigned_to,
&.string {
text-align: left;
}
&.estimated_hours,
&.remaining_hours,
&.spent_hours,
&.story_points {
&.story_points,
&.int,
&.float {
text-align: right;
}
&.tick {
width: 15%;
}
&.buttons {
width: 15%;
text-align: right;
white-space: nowrap;
@@ -82,9 +76,19 @@ table.list {
}
}
&.reorder {
width: 15%;
&.project,
&.created_on,
&.updated_on,
&.start_date,
&.due_date,
&.is_private,
&.reorder,
&.bool,
&.date {
text-align: center;
}
&.reorder {
white-space: nowrap;
}
}
@@ -109,7 +113,9 @@ tr.project {
&.idnt .name span {
padding-left: 16px;
background: url("../images/bullet_arrow_right.png") no-repeat -5px 50%;
@extend %image-arrow-right;
background-repeat: no-repeat;
background-position: -5px 50%;
}
@for $i from 1 through 9 {
@@ -130,12 +136,6 @@ tr.issue {
white-space: normal;
}
.autoscroll & {
.subject > a {
display: block;
}
}
&.relations {
text-align: left;
white-space: normal;
@@ -152,7 +152,7 @@ tr.issue {
&.idnt .subject a {
padding-left: 16px;
background-image: url("../images/bullet_arrow_right.png");
@extend %image-arrow-right;
background-repeat: no-repeat;
@if $color-trackers {
@@ -167,7 +167,7 @@ tr.issue {
.assigned_to,
.subject {
a {
font-weight: bold;
font-weight: $font-weight-bold;
}
}
}
@@ -203,19 +203,18 @@ tr {
span.expander {
margin-left: 0;
padding-left: 8px;
background: url("../images/bullet_toggle_plus.png") no-repeat center center;
@extend %image-toggle-plus;
background-repeat: no-repeat;
background-position: center center;
cursor: pointer;
@include user-select(none);
}
&.open span.expander {
background-image: url("../images/bullet_toggle_minus.png");
@extend %image-toggle-minus;
}
}
// /* do you */ .even {
// }
td.center {
text-align: center;
}
@@ -270,7 +269,7 @@ tr.entry {
/**
* Priorities
*/
// scss-lint:disable SpaceAfterComma
@if $color-priorities {
@include priority(".priority-lowest", $priority-lowest-bg, $priority-lowest-text, $priority-lowest-link);
@include priority(".priority-default", $priority-default-bg, $priority-default-text, $priority-default-link);
@@ -280,17 +279,94 @@ tr.entry {
}
@if $color-trackers {
@include tracker(".tracker-1", $tracker-1-bg, $tracker-1-text);
@include tracker(".tracker-2", $tracker-2-bg, $tracker-2-text);
@include tracker(".tracker-3", $tracker-3-bg, $tracker-3-text);
@include tracker(".tracker-4", $tracker-4-bg, $tracker-4-text);
@include tracker(".tracker-5", $tracker-5-bg, $tracker-5-text);
@include tracker(".tracker-6", $tracker-6-bg, $tracker-6-text);
@include tracker(".tracker-7", $tracker-7-bg, $tracker-7-text);
tr.issue .id > a,
a.issue,
.relations > span > a.issue,
.parent > a.issue {
border-radius: $border-radius-small ($border-radius-small * 3) ($border-radius-small * 3) $border-radius-small;
background-color: $tracker-default-bg;
color: $tracker-default-text;
&:hover {
background-color: darken($tracker-default-bg, 10%);
color: $tracker-default-text;
text-decoration: none;
}
&:focus,
&:active {
text-decoration: none;
}
}
a.issue {
margin-right: 1px;
padding: $tracker-inline-padding;
font-weight: normal;
&.closed {
position: relative;
color: mix($tracker-default-text, $tracker-default-bg, 75%);
text-decoration: none;
&:after {
display: block;
position: absolute;
right: 5px;
bottom: 0;
left: 5px;
height: calc(50% - 2px/2);
border-top: 2px solid rgba($tracker-default-text, .95);
content: "";
@include rotate(-4deg);
@include transition(border-color .1s);
}
&:hover:after {
border-top-color: rgba($tracker-default-text, .25);
}
}
}
tr.issue .id > a {
display: block;
padding: $tracker-list-padding;
&:before {
color: mix($tracker-default-text, $tracker-default-bg, 50%);
content: "#";
}
}
@if $colored-issue {
.issue.details a.issue,
.issue.details .wiki a.issue {
&,
&:hover {
color: $tracker-default-text;
}
}
}
@each $tracker-id, $tracker-colors in $tracker-colors-map {
@include tracker(
".tracker-#{$tracker-id}",
map-get($tracker-colors, background),
map-get($tracker-colors, color)
);
}
}
.odd {
background-color: $table-bg-accent;
@if $table-list-color-odd-rows {
.odd {
background-color: $table-bg-accent;
}
}
@if $table-list-color-even-rows {
.even {
background-color: $table-bg-accent;
}
}
@@ -301,7 +377,7 @@ tr.entry {
tr.group {
> td {
border-bottom: 1px solid $table-border-color;
font-weight: bold;
font-weight: $font-weight-bold;
text-align: left;
a {
@@ -321,12 +397,14 @@ tr.group {
.count {
display: inline-block;
min-width: 1em;
margin: 0 5px;
padding: 1px 4px;
border-radius: $border-radius-small;
background-color: $brand-primary;
color: $brand-text;
font-size: $font-size-small;
text-align: center;
}
}
@@ -342,6 +420,16 @@ tr.group {
tr.time-entry {
text-align: center;
td.project,
td.spent_on,
td.activity {
width: 6em;
}
td.user {
width: 12em;
}
td.issue,
td.comments {
text-align: left;
@@ -349,9 +437,16 @@ tr.time-entry {
}
td.hours {
padding-right: .5em;
font-weight: bold;
font-weight: $font-weight-bold;
}
}
.time-entries,
tr.time-entry {
td.hours {
width: 1%;
text-align: right;
white-space: nowrap;
.hours-dec {
font-size: .9em;
@@ -359,6 +454,19 @@ tr.time-entry {
}
}
.mypage-box {
td.hours {
font-weight: $font-weight-bold;
em {
font-style: normal;
}
}
tr.time-entry td.hours {
font-weight: normal;
}
}
/**
* Wiki page history entry
@@ -437,7 +545,7 @@ table.plugins {
span.name {
margin-bottom: .5em;
font-size: $font-size-large;
font-weight: bold;
font-weight: $font-weight-bold;
}
.description,
@@ -467,3 +575,19 @@ table.files {
}
}
}
/**
* Admin lists
*/
.controller-enumerations {
td.name {
width: 50%;
}
td.tick,
td.reorder {
width: 15%;
text-align: center;
}
}

View File

@@ -6,7 +6,7 @@
.next,
.page {
display: inline-block;
padding: $padding-small-vertical $padding-small-horizontal;
padding: $pagination-padding-vertical $pagination-padding-horizontal;
border: 1px solid $pagination-border;
border-radius: $border-radius-base;
background-color: $pagination-bg;
@@ -24,13 +24,19 @@
.page.current {
border-color: $pagination-active-border;
background-color: $pagination-active-bg;
cursor: default;
color: $pagination-active-color;
cursor: default;
z-index: 2;
}
.items,
.per-page {
margin-left: $padding-small-vertical;
display: inline-block;
margin: ($pagination-padding-vertical + 1px) 0 ($pagination-padding-vertical + 1px) $pagination-padding-vertical;
}
}
p.pagination {
margin-bottom: 0;
float: left;
}

View File

@@ -1,5 +1,7 @@
//
// Redmine Backlogs
// https://github.com/HolonGlobe/redmine_backlogs
// Forked from: https://github.com/backlogs/redmine_backlogs
// --------------------------------------------------
#backlogs_view_issues_sidebar {
@@ -27,11 +29,16 @@
display: none;
}
}
.burndown_chart {
max-width: $sidebar-width-computed;
}
}
//
// Redmine Time Tracker
// https://github.com/fernandokosh/redmine_time_tracker
// --------------------------------------------------
@if $use-font-awesome {
@@ -70,3 +77,151 @@
display: none;
}
}
//
// Redmine CRM People
// http://www.redminecrm.com/projects/people/
// --------------------------------------------------
#people_list {
table.index {
margin-bottom: $line-height-computed;
}
}
#content {
.person.details {
margin-bottom: $line-height-computed;
padding: $issue-padding;
border: 1px solid $issue-border;
border-radius: $border-radius-base;
background-color: $issue-bg;
.avatar {
width: 64px;
max-width: 64px;
overflow: hidden;
}
.name,
.subject_info {
padding: 0 0 0 $issue-padding;
}
.name {
> h1 {
margin-bottom: 5px;
}
> p {
margin-bottom: 0;
}
}
.subject_info {
border-left: 1px solid $issue-border;
> ul {
margin: 0;
}
}
@if $use-font-awesome {
.icon {
background-image: none;
}
}
}
.department.issue.details {
> p {
clear: both;
}
> .author {
margin-bottom: 0;
clear: none;
}
}
}
#sidebar {
.person.attributes {
font-size: $font-size-list;
th,
td {
padding: $table-condensed-cell-padding;
text-align: left;
vertical-align: top;
}
.icon {
padding-left: $table-condensed-cell-padding + 20px;
background-position: $table-condensed-cell-padding $table-condensed-cell-padding;
}
@if $use-font-awesome {
.icon {
background-image: none;
> a {
@extend %fa-icon;
}
}
}
.email {
td a {
display: block;
max-width: floor($sidebar-width / 3);
text-overflow: ellipsis;
overflow: hidden;
&:hover {
position: absolute;
max-width: 100%;
margin: -$table-condensed-cell-padding;
padding: $table-condensed-cell-padding;
background: $body-bg;
box-shadow: $panel-shadow;
}
}
}
}
.person_data {
td.avatar,
td.name {
padding: 0 0 $table-cell-padding;
}
td.avatar {
width: 40px;
}
td.name {
h4 {
margin: 0;
letter-spacing: 0;
}
}
}
}
//
// Redmine codebutton
// https://github.com/mediatainment/redmine_codebutton
// --------------------------------------------------
#toolbar-code-options {
select {
width: 100%;
}
.buttons {
white-space: nowrap;
}
}

View File

@@ -20,6 +20,7 @@
}
#content {
// scss-lint:disable ImportantRule
width: 100%;
margin: 0;
padding: 0;

View File

@@ -9,6 +9,12 @@ table.progress {
border: 1px solid rgba(#000, .1);
empty-cells: show;
td.done_ratio & {
margin-right: auto;
margin-left: auto;
float: none;
}
td {
height: 12px;
padding: 0;
@@ -26,6 +32,10 @@ table.progress {
background-color: $progress-bg;
}
}
.issue & td {
padding: 0;
}
}
p {

View File

@@ -2,21 +2,19 @@
// Activity and search results list
// --------------------------------------------------
#search-results,
div#activity dl {
#activity dl,
#search-results {
margin-left: $padding-side;
}
div#activity,
#activity,
#search-results {
dd {
margin-bottom: $line-height-computed;
padding-left: $padding-side;
padding-top: .1em;
}
dt {
margin-bottom: 2px;
padding-left: $padding-side;
background-repeat: no-repeat;
background-position: 0 center;
@@ -33,8 +31,29 @@ div#activity,
}
}
div#activity {
#activity {
$activity-avatar: 24px;
$activity-avatar-space: 5px;
$activity-indent: 20px;
@if $use-gravatars {
$activity-indent: $activity-indent + $activity-avatar + $activity-avatar-space;
}
h3,
h4 {
margin: 0 0 $line-height-computed;
padding-bottom: .2em;
border-bottom: 1px dotted $gray-light;
font-size: $font-size-h4;
font-weight: normal;
}
dt {
&.grouped {
margin-left: $activity-indent;
}
&.me .time {
border-bottom: 1px solid $gray-lighter;
}
@@ -42,19 +61,27 @@ div#activity {
.time {
color: $gray;
}
@if $use-gravatars {
.gravatar {
margin-top: -2px;
margin-right: $activity-avatar-space;
float: left;
}
}
}
dd {
font-size: $font-size-small;
}
overflow: hidden;
dt.grouped,
dd.grouped {
margin-left: $padding-side;
&.grouped {
margin-left: $activity-indent;
}
}
}
div#search-results-counts {
#search-results-counts {
float: right;
ul {

View File

@@ -7,27 +7,52 @@
position: relative;
margin-bottom: $line-height-computed;
padding-right: $tabs-buttons-width;
overflow: hidden;
@if not $flexbox-layout {
padding-right: $tabs-buttons-width;
}
> ul {
width: 2000px; // stop it from breaking
// scss-lint:disable VendorPrefix
margin: 0;
padding-left: 0;
border-bottom: 1px solid $tab-border;
list-style: none;
@extend %clearfix;
@if $flexbox-layout {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
height: $line-height-computed + $tab-padding-vertical * 2 + 1px;
-webkit-flex-wrap: nowrap;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
} @else {
width: 2000px;
@extend %clearfix;
}
> li {
margin-bottom: -1px;
float: left;
@if $flexbox-layout {
-webkit-flex: 0 1 auto;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
} @else {
float: left;
}
> a {
display: block;
min-width: 2em;
margin-right: 2px;
padding: $tab-padding-vertical $tab-padding-horizontal;
border: 1px solid transparent;
border-radius: $border-radius-base $border-radius-base 0 0;
text-align: center;
white-space: nowrap;
&:hover,
&:focus {
@@ -51,11 +76,12 @@
right: 0;
width: $tabs-buttons-width;
padding-left: 5px;
border-bottom: 1px solid $tab-border;
background-color: $body-bg;
> button {
width: 50%;
height: $tab-padding-vertical * 2 + $line-height-computed;
height: $tab-padding-vertical * 2 + $line-height-computed + 1px;
margin: 0;
padding: 0;
float: left;
@@ -78,11 +104,11 @@
}
.tab-left {
background-image: url("../images/bullet_arrow_left.png");
@extend %image-arrow-left;
}
.tab-right {
background-image: url("../images/bullet_arrow_right.png");
@extend %image-arrow-right;
}
}
}
@@ -110,7 +136,7 @@
margin-bottom: $line-height-computed;
legend {
font-weight: bold;
font-weight: $font-weight-bold;
}
label {

View File

@@ -3,12 +3,96 @@
// --------------------------------------------------
#top-menu {
position: relative;
padding: $padding-small-vertical $padding-side;
background: $top-menu-bg;
color: $top-menu-text;
font-size: $font-size-small;
@extend %clearfix;
@if $top-menu-collapse {
$toggler-position-v: $padding-small-vertical + 1px;
$toggler-position-h: 1px;
max-height: floor($font-size-base * $font-size-small-unitless * $line-height-base) + $padding-small-vertical;
padding-bottom: 0;
overflow: hidden;
&.expanded {
max-height: none;
}
a {
display: inline-block;
margin-bottom: $padding-small-vertical;
white-space: nowrap;
}
.top-menu-toggler {
display: block;
position: absolute;
top: $toggler-position-v;
@if $sidebar-position == "left" {
left: $toggler-position-h;
} @else {
right: $toggler-position-h;
}
@include user-select(none);
@if $use-font-awesome {
font-size: 14px;
&:before {
content: $fa-var-caret-square-o-down;
}
} @else {
@extend %image-arrow-down-white;
}
@if $use-font-awesome {
@extend %fa-icon;
color: mix($top-menu-link, $top-menu-bg, 33%);
line-height: 1;
&:before {
margin-right: 0;
}
&:hover,
&:focus,
&:active {
color: mix($top-menu-link-hover, $top-menu-bg, 50%);
}
} @else {
width: 15px;
height: 15px;
border-radius: $border-radius-base;
background-repeat: no-repeat;
background-position: center center;
&:hover,
&:focus,
&:active {
background-color: lighten($top-menu-bg, 15%);
}
}
&.expanded {
@if $use-font-awesome {
&:before {
content: $fa-var-caret-square-o-up;
}
} @else {
@extend %image-arrow-up-white;
}
}
@media screen and (min-width: $top-menu-collapse-breakpoint) {
display: none;
}
}
}
ul {
margin: 0;
padding: 0;
@@ -23,7 +107,7 @@
a {
color: $top-menu-link;
font-weight: bold;
font-weight: $font-weight-bold;
&:hover {
color: $top-menu-link-hover;
@@ -32,6 +116,7 @@
}
#loggedas {
margin-left: 1em;
float: right;
}
}
@@ -54,9 +139,21 @@
position: relative;
background-color: $header-bg;
color: $header-text;
@extend %clearfix;
> h1 {
padding: 10px $padding-side;
padding: $header-padding-vertical $header-padding-horizontal;
@if $use-logo {
padding-left: $logo-image-width + $logo-position-horizontal + $logo-space;
background-image: url("../images/logo/logo.png");
background-repeat: no-repeat;
background-position: $logo-position-horizontal $logo-position-vertical;
@if $use-retina-logo {
@include img-retina("../images/logo/logo@2x.png", $logo-image-width, $logo-image-height);
}
}
> .root {
color: $header-root;
@@ -64,7 +161,7 @@
}
> .ancestor {
font-size: 80%;
font-weight: 500;
}
}
@@ -74,8 +171,8 @@
}
#quick-search {
margin-top: ($header-title-line-height + $padding-large-vertical * 2 - $input-height-base - 1px) / 2;
margin-right: $padding-side;
margin-top: floor(($header-title-line-height + $header-padding-vertical * 2 - $input-height-base) / 2) - 1px;
margin-right: $header-padding-horizontal;
float: right;
color: $header-text;
@@ -103,17 +200,103 @@
}
}
option {
background-color: $input-bg;
color: $input-color;
&[disabled] {
color: $gray-lighter;
}
}
input {
width: 200px;
}
}
#main-menu {
border-bottom: 1px solid $main-menu-border;
background-color: $main-menu-bg;
box-shadow: inset 0 -1px $main-menu-border;
@media screen and (max-width: $screen-sm-max) {
font-size: $font-size-small-px;
@if $main-menu-collapse {
$toggler-position-v: $main-menu-padding-vertical + 3px;
$toggler-position-h: 1px;
position: relative;
max-height: $line-height-computed + $main-menu-padding-vertical * 2;
overflow: hidden;
&.expanded {
max-height: none;
}
.main-menu-toggler {
display: block;
position: absolute;
top: $toggler-position-v;
@if $sidebar-position == "left" {
left: $toggler-position-h;
} @else {
right: $toggler-position-h;
}
@include user-select(none);
@if $use-font-awesome {
font-size: 14px;
&:before {
content: $fa-var-caret-square-o-down;
}
} @else {
@extend %image-arrow-down;
}
@if $use-font-awesome {
@extend %fa-icon;
color: mix($main-menu-link, $main-menu-bg, 33%);
line-height: 1;
&:before {
margin-right: 0;
}
&:hover,
&:focus,
&:active {
color: mix($main-menu-link, $main-menu-bg, 50%);
}
} @else {
width: 15px;
height: 15px;
border-radius: $border-radius-base;
background-repeat: no-repeat;
background-position: center center;
&:hover,
&:focus,
&:active {
background-color: darken($main-menu-bg, 15%);
}
}
&.expanded {
@if $use-font-awesome {
&:before {
content: $fa-var-caret-square-o-up;
}
} @else {
@extend %image-arrow-up;
}
}
@media screen and (min-width: $main-menu-collapse-breakpoint) {
display: none;
}
}
} @else {
@media screen and (max-width: $screen-sm-max) {
font-size: $font-size-small-px;
}
}
ul {
@@ -125,17 +308,22 @@
> li {
margin-right: .5em;
margin-bottom: -1px;
float: left;
> a {
display: block;
padding: $main-menu-padding-vertical 0;
white-space: nowrap;
@include transition(box-shadow .2s);
@media screen and (min-width: $screen-md-min) {
padding-right: $main-menu-padding-horizontal;
padding-left: $main-menu-padding-horizontal;
@if $main-menu-collapse {
padding: $main-menu-padding-vertical $main-menu-padding-horizontal;
} @else {
padding: $main-menu-padding-vertical 0;
@media screen and (min-width: $screen-md-min) {
padding-right: $main-menu-padding-horizontal;
padding-left: $main-menu-padding-horizontal;
}
}
@media screen and (min-width: $screen-lg-min) {
@@ -154,7 +342,7 @@
padding-bottom: $main-menu-padding-vertical - $main-menu-shadow-width;
border-bottom: 3px solid $main-menu-shadow-active;
color: $main-menu-link-active;
font-weight: bold;
font-weight: $font-weight-bold;
box-shadow: none;
}
}

View File

@@ -1,6 +1,37 @@
.wiki-page {
.wiki.wiki-page {
margin-bottom: $line-height-computed;
font-size: $wiki-font-size;
@if $wiki-page-more-vertical-space {
/**
* Anchors will make headers more separated,
* and it will look better when you open page with hash in URL
*/
a[name]:empty {
display: block;
overflow: hidden;
}
/**
* Add some space between list items
*/
ul,
ol {
li {
margin-top: .25em;
}
ul,
ol {
margin-top: .25em;
margin-bottom: .25em;
li {
margin-top: .125em;
}
}
}
}
}
.controller-wiki .wiki > .preview {
@@ -11,35 +42,40 @@ div.wiki {
color: $wiki-text;
line-height: $wiki-line-height;
h1,
h2,
h3,
h4,
h5,
h6 {
//scss-lint:disable SingleLinePerSelector
h1, .h1,
h2, .h2,
h3, .h3,
h4, .h4,
h5, .h5,
h6, .h6 {
margin-top: 1em;
margin-bottom: .5em;
margin-bottom: $wiki-font-size;
font-weight: $headings-font-weight;
line-height: $headings-line-height;
}
h1 { font-size: $font-size-h1; }
h2 { font-size: $font-size-h2; }
h3 { font-size: $font-size-h3; }
h4 { font-size: $font-size-h4; }
h5 { font-size: $font-size-h5; }
h6 { font-size: $font-size-h6; }
h1, .h1 { font-size: $font-size-h1; line-height: 1.2; }
h2, .h2 { font-size: $font-size-h2; line-height: 1.225; }
h3, .h3 { font-size: $font-size-h3; line-height: 1.43; }
h4, .h4 { font-size: $font-size-h4; }
h5, .h5 { font-size: $font-size-h5; }
h6, .h6 { font-size: $font-size-h6; }
h1,
h2 {
h1, .h1,
h2, .h2 {
padding-bottom: .3em;
border-bottom: 1px solid $gray-lighter;
}
h6 {
h6, .h6 {
color: $gray;
}
.text-normal {
font-weight: normal;
}
> a:first-child {
+ h1,
+ h2,
@@ -51,10 +87,37 @@ div.wiki {
}
}
> a:target {
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
&:before {
display: inline-block;
width: .7em;
margin-left: -.7em;
color: $headings-anchor-color-active;
font-weight: normal;
content: "#";
}
}
}
> *:last-child {
margin-bottom: 0;
}
blockquote {
>:first-child {
margin-top: 0;
}
>:last-child {
margin-bottom: 0;
}
}
.contextual {
a {
opacity: .4;
@@ -65,16 +128,25 @@ div.wiki {
}
}
a {
// scss-lint:disable DuplicateProperty
word-break: break-all;
word-break: break-word;
}
p,
ul,
ol {
padding-left: 2em;
margin-bottom: 1em;
}
ul,
ol {
padding-left: 1.5em;
ul,
ol {
list-style-type: lower-roman;
ol {
list-style-type: lower-alpha;
}
margin-bottom: 0;
}
}
@@ -116,22 +188,19 @@ div.wiki {
}
code {
// scss-lint:disable DuplicateProperty
padding: .2em .33em;
border-radius: $border-radius-base;
background-color: #f5f5f5; // IE8 fallback
background-color: rgba(#000, .04);
font-size: $font-size-small;
}
pre {
// scss-lint:disable DuplicateProperty
width: auto;
margin-bottom: 1.15em;
padding: 4px 8px;
border: 1px solid #e7e7e7;
border-radius: $border-radius-base;
border-color: rgba(#000, .068);
background-color: #f7f7f7; // IE8 fallback
background-color: rgba(#000, .03);
overflow-x: auto;
overflow-y: hidden;
@@ -145,6 +214,11 @@ div.wiki {
}
}
img {
max-width: 100%;
vertical-align: middle;
}
.toc {
margin-bottom: $line-height-computed;
margin-left: 0;
@@ -212,10 +286,19 @@ div.wiki {
}
}
}
}
img {
max-width: 100%;
vertical-align: middle;
.toc-active-prev + .toc {
padding-left: $padding-large-horizontal;
border-left: 4px solid $toc-active-border;
a {
color: $toc-active-link;
&:focus,
&:hover {
color: $toc-active-link-hover;
}
}
}
}
@@ -227,11 +310,12 @@ h4,
h5,
h6 {
.wiki-anchor {
// scss-lint:disable ImportantRule
display: none;
position: relative;
top: -(1em - $font-size-small);
margin-left: 5px;
color: $gray-lighter !important;
color: $headings-anchor-color !important;
font-size: $font-size-small;
text-decoration: none !important;
}
@@ -241,6 +325,12 @@ h6 {
display: inline;
}
}
img {
display: inline-block;
max-width: 100%;
vertical-align: middle;
}
}
p.footnote {
@@ -277,17 +367,111 @@ p.footnote {
border-top: 1px solid $gray-lighter;
> p {
margin-bottom: 0;
float: left;
}
#add_attachment_form {
padding-top: $line-height-computed;
clear: left;
}
}
.controller-wiki.action-show {
.other-formats {
margin-top: 0;
float: right;
//
// Custom classes for Bootstrap-like features
// --------------------------------------------------
/**
* Pager
* see: http://getbootstrap.com/components/#pagination-pager
*/
.wiki-pager {
> a {
display: inline-block;
padding: $padding-base-vertical $padding-base-horizontal;
border: 1px solid $btn-default-border;
border-radius: ceil($font-size-base + ($padding-base-vertical + 1px) * 2) / 2;
background-color: $body-bg;
line-height: 1;
white-space: nowrap;
&:hover,
&:focus,
&:active {
background-color: $btn-default-bg;
text-decoration: none;
}
}
&.wiki-pager--aligned {
overflow: hidden;
> a:first-child {
float: left;
}
> a:last-child {
float: right;
}
}
}
/**
* Typographic helper classes
*/
// Lead body copy
// see: http://getbootstrap.com/css/#lead-body-copy
.lead {
margin-bottom: $line-height-computed;
font-size: floor(($font-size-base * 1.15));
font-weight: 300;
line-height: 1.4;
@media (min-width: $screen-sm-min) {
font-size: ($font-size-base * 1.5);
}
}
// Alignment
// see: http://getbootstrap.com/css/#type-alignment
.text-left { text-align: left; }
.text-right { text-align: right; }
.text-center { text-align: center; }
.text-justify { text-align: justify; }
.text-nowrap { white-space: nowrap; }
// Transformation
// see: http://getbootstrap.com/css/#type-transformation
.text-lowercase { text-transform: lowercase; }
.text-uppercase { text-transform: uppercase; }
.text-capitalize { text-transform: capitalize; }
/**
* Other helper classes
* see: http://getbootstrap.com/css/#helper-classes
*/
.text-muted { color: $gray-light; }
.text-primary { color: $brand-primary; }
.text-success { color: $brand-success; }
.text-info { color: $brand-info; }
.text-warning { color: $brand-warning; }
.text-danger { color: $brand-danger; }
.bg-primary { background-color: $brand-primary; color: $brand-text; }
.bg-success { background-color: $state-success; }
.bg-info { background-color: $state-info; }
.bg-warning { background-color: $state-warning; }
.bg-danger { background-color: $state-danger; }
p {
&.bg-primary,
&.bg-success,
&.bg-info,
&.bg-warning,
&.bg-danger {
padding: $panel-body-padding;
}
}

View File

@@ -1,13 +1,6 @@
@if $enable-sidebar-toggler {
$toggler-position-v: 1px;
$toggler-position-h: 1px;
$arrow-right: "../images/bullet_arrow_right.png";
$arrow-left: "../images/bullet_arrow_left.png";
@if $use-font-awesome {
$arrow-right: $fa-var-caret-square-o-right;
$arrow-left: $fa-var-caret-square-o-left;
}
#main {
position: relative;
@@ -16,8 +9,10 @@
#sidebar {
@if $fixed-layout {
opacity: 1;
will-change: margin, opacity;
@include transition(margin .5s, opacity .5s);
} @else {
will-change: margin;
@include transition(margin .5s);
}
@@ -77,20 +72,20 @@
@if $use-font-awesome {
&:before {
content: $arrow-left;
content: $fa-var-caret-square-o-left;
}
} @else {
background-image: url($arrow-left);
@extend %image-arrow-left;
}
} @else {
right: $toggler-position-h;
@if $use-font-awesome {
&:before {
content: $arrow-right;
content: $fa-var-caret-square-o-right;
}
} @else {
background-image: url($arrow-right);
@extend %image-arrow-right;
}
}
@@ -98,18 +93,18 @@
@if $sidebar-position == "left" {
@if $use-font-awesome {
&:before {
content: $arrow-right;
content: $fa-var-caret-square-o-right;
}
} @else {
background-image: url($arrow-right);
@extend %image-arrow-right;
}
} @else {
@if $use-font-awesome {
&:before {
content: $arrow-left;
content: $fa-var-caret-square-o-left;
}
} @else {
background-image: url($arrow-left);
@extend %image-arrow-left;
}
}
}

View File

@@ -116,7 +116,7 @@ abbr[title] {
b,
strong {
font-weight: bold;
font-weight: $font-weight-bold;
}
//
@@ -406,7 +406,7 @@ textarea {
//
optgroup {
font-weight: bold;
font-weight: $font-weight-bold;
}
// Tables

View File

@@ -1,5 +1,5 @@
// Mixins
// scss-lint:disable VendorPrefixes
// scss-lint:disable VendorPrefix
// --------------------------
@mixin fa-icon() {

View File

@@ -7,33 +7,52 @@
}
@mixin button-variant($color, $bg, $border) {
$focus-bg: darken($bg, 8%);
$focus-border: darken($border, 8%);
$active-shadow: inset 0 1px 3px rgba(#000, .3);
$correction: 1;
@if hue($bg) > 120 and hue($bg) < 160 or lightness($bg) > 90 {
$correction: .5;
}
$normal-shadow: darken($border, 12% * $correction);
$focus-bg: darken($bg, 12% * $correction);
$focus-border: darken($border, 12% * $correction);
$focus-shadow: darken($focus-border, 12% * $correction);
$active-bg: darken($bg, 12% * $correction);
$active-border: darken($border, 15% * $correction);
$active-shadow: inset 0 3px 4px -2px $active-border;
color: $color;
border-color: $border;
background-color: $bg;
box-shadow: 0 1px 0 $border;
@if lightness($bg) > 90 {
@if lightness($bg) > 98 {
$focus-bg: darken($bg, 5%);
$focus-border: darken($border, 5%);
$active-shadow: inset 0 1px 2px rgba(#000, .1);
$normal-shadow: none;
$focus-shadow: none;
}
background-color: $bg;
color: $color;
@if $normal-shadow == "none" {
border-color: $border;
box-shadow: none;
} @else {
border-color: $border $border $normal-shadow;
box-shadow: 0 1px 0 $normal-shadow;
}
&:hover,
&:focus {
border-color: $focus-border;
background-color: $focus-bg;
color: $color;
box-shadow: 0 1px 0 $focus-border;
@if $focus-shadow == "none" {
border-color: $focus-border;
box-shadow: none;
} @else {
border-color: $focus-border $focus-border $focus-shadow;
box-shadow: 0 1px 0 $focus-shadow;
}
}
&:active {
border-color: $border;
background-color: $bg;
@include translate(0, 1px);
border-color: $active-border;
background-color: $active-bg;
box-shadow: $active-shadow;
@include translate(0, 1px);
}
}

View File

@@ -1,5 +1,5 @@
// Gradients
// scss-lint:disable VendorPrefixes
// scss-lint:disable VendorPrefix
// Horizontal gradient, from left to right

View File

@@ -0,0 +1,15 @@
// Retina image
//
@mixin img-retina($file-2x, $width-1x, $height-1x) {
@media
only screen and (-webkit-min-device-pixel-ratio: 2),
only screen and (min--moz-device-pixel-ratio: 2),
only screen and (-o-min-device-pixel-ratio: 2/1),
only screen and (min-device-pixel-ratio: 2),
only screen and (min-resolution: 192dpi),
only screen and (min-resolution: 2dppx) {
background-image: url("#{$file-2x}");
background-size: $width-1x $height-1x;
}
}

View File

@@ -1,14 +1,31 @@
// Priority highlight
@mixin priority($parent, $background, $color, $link) {
@if lightness($background) < 85% {
$background: lighten($background, 6%);
}
$border-color: darken(desaturate($background, 30%), 13.5%);
tr#{$parent} {
background: $background;
color: $color;
&.odd {
background: darken($background, 3%);
@if ".priority-default" == $parent {
color: $color;
} @else {
color: darken($color, 10%);
}
@if $table-list-color-odd-rows {
&.odd {
background: darken($background, $table-accent-factor * 100%);
}
}
@if $table-list-color-even-rows {
&.even {
background: darken($background, $table-accent-factor * 100%);
}
}
td {
@@ -24,6 +41,24 @@
}
}
@if $table-list-highlight-rows {
table.list > tbody > tr#{$parent}:hover {
background: darken($background, $table-hover-factor * 100%);
}
@if $table-list-color-odd-rows {
&.odd {
background: darken($background, ($table-accent-factor + $table-hover-factor) * 100%);
}
}
@if $table-list-color-even-rows {
&.even {
background: darken($background, ($table-accent-factor + $table-hover-factor) * 100%);
}
}
}
@if $colored-issue {
.issue.details#{$parent} {
color: $color;
@@ -32,11 +67,7 @@
$border-color: $issue-border;
background: $issue-bg;
} @else {
@if lightness($background) < 85% {
background: lighten($background, 6%);
} @else {
background: $background;
}
background: $background;
}
&,
@@ -56,9 +87,11 @@
color: mix($color, $gray-light, 25%);
}
.wiki {
> .description > .wiki {
border-top-color: $border-color;
}
.wiki {
a {
color: $link-color;
text-decoration: none;
@@ -77,7 +110,12 @@
> .attachments {
border-top-color: lighten($border-color, 5%);
background-color: lighten($background, 5%);
@if ".priority-default" == $parent {
background-color: lighten($issue-bg, 1.5%);
} @else {
background-color: lighten($background, 5%);
}
span.author {
color: mix($color, $gray, 25%);
@@ -99,34 +137,36 @@
a#{$parent},
.relations > span > a#{$parent},
.parent > a#{$parent} {
border-radius: $border-radius-small ($border-radius-small * 3) ($border-radius-small * 3) $border-radius-small;
background-color: $background;
color: $color;
&:hover {
background-color: darken($background, 10%);
@if hue($background) > 15deg and hue($background) < 40deg {
background-color: darken(adjust-hue($background, -8deg), 8%);
} @else {
background-color: darken($background, 10%);
}
color: $color;
text-decoration: none;
}
}
a#{$parent} {
margin-right: 1px;
padding: $tracker-inline-padding;
&.closed {
color: mix($color, $background, 50%);
text-decoration: $link-closed-decoration;
color: mix($color, $background, 75%);
&:after {
border-top-color: rgba($color, .95);
}
&:hover:after {
border-top-color: rgba($color, .25);
}
}
}
tr#{$parent} .id > a {
display: block;
padding: $tracker-list-padding;
&:before {
color: mix($color, $background, 50%);
content: "#";
}
}

View File

@@ -0,0 +1,10 @@
// Link variant
@mixin link-variant($default-color, $hover-color: darken($default-color, 10%)) {
color: $default-color;
&:focus,
&:hover {
color: $hover-color;
}
}

View File

@@ -0,0 +1,23 @@
// Some really nice looking shadows
@mixin nice-shadow($depth: 1) {
$shadow: none;
@if ($depth == 1) {
// $shadow: 0 3px 1px -2px rgba(#000, .14), 0 2px 2px 0 rgba(#000, .098), 0 1px 5px 0 rgba(#000, .082);
$shadow: 0 1px 3px rgba(#000, .12), 0 1px 2px rgba(#000, .24);
} @elseif ($depth == 2) {
// $shadow: 0 2px 4px -1px rgba(#000, .14), 0 4px 5px 0 rgba(#000, .098), 0 1px 10px 0 rgba(#000, .082)
$shadow: 0 3px 6px rgba(#000, .16), 0 3px 6px rgba(#000, .23);
} @elseif ($depth == 3) {
// $shadow: 0 3px 5px -1px rgba(#000, .14), 0 6px 10px 0 rgba(#000, .098), 0 1px 18px 0 rgba(#000, .082)
$shadow: 0 10px 18px rgba(#000, .19), 0 6px 8px rgba(#000, .23);
} @elseif ($depth == 4) {
// $shadow: 0 5px 5px -3px rgba(#000, .14), 0 8px 10px 1px rgba(#000, .098), 0 3px 14px 2px rgba(#000, .082)
$shadow: 0 14px 28px rgba(#000, .25), 0 10px 10px rgba(#000, .22);
} @elseif ($depth == 5) {
// $shadow: 0 8px 10px -5px rgba(#000, .14), 0 16px 24px 2px rgba(#000, .098), 0 6px 30px 5px rgba(#000, .082)
$shadow: 0 19px 38px rgba(#000, .30), 0 15px 12px rgba(#000, .22);
}
box-shadow: $shadow;
}

View File

@@ -1,5 +1,5 @@
// Vendor Prefixes
// scss-lint:disable VendorPrefixes
// scss-lint:disable VendorPrefix NameFormat
//
// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
// Autoprefixer in our Gruntfile. They will be removed in v4.

View File

@@ -1,7 +1,7 @@
@import "common";
html {
overflow-y: scroll !important;
overflow-y: scroll;
height: 100%;
}
@@ -14,6 +14,7 @@ body {
color: $text-color;
font-family: $font-family-base;
font-size: $font-size-base;
font-weight: $font-weight-normal;
line-height: $line-height-base;
}
@@ -26,19 +27,19 @@ a {
color: $link-hover-color;
text-decoration: $link-hover-decoration;
}
}
&.issue.closed {
color: $link-color-issue-closed;
text-decoration: $link-closed-decoration;
}
.issue.closed {
color: $link-color-issue-closed;
text-decoration: $link-closed-decoration;
}
&.project.closed {
color: $link-color-project-closed;
}
.project.closed {
color: $link-color-project-closed;
}
&.user.locked {
color: $link-color-user-locked;
}
.user.locked {
color: $link-color-user-locked;
}
@@ -90,10 +91,10 @@ button.ui-multiselect {
padding: $input-padding-vertical $input-padding-horizontal;
border: 1px solid $input-border;
background: $input-bg;
cursor: default;
color: $input-color;
white-space: nowrap;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, .075);
cursor: default;
overflow: hidden;
@include transition(border-color ease-in-out .1s, box-shadow ease-in-out .1s);
@include box-sizing(border-box);
@@ -142,14 +143,14 @@ button.ui-multiselect {
}
.home {
font-weight: bold;
font-weight: $font-weight-bold;
}
.separator {
position: relative;
top: -1px;
padding: 0 .2em;
font-weight: bold;
font-weight: $font-weight-bold;
}
}
@@ -251,24 +252,7 @@ ul.ui-sortable {
* Story tooltip
*/
.ui-tooltip {
.ui-tooltip-tip,
.ui-tooltip-content {
border-color: $tooltip-border;
background-color: $tooltip-bg;
}
.ui-tooltip-content {
padding: $padding-base-vertical;
color: $tooltip-text;
font-size: $font-size-small;
box-shadow: 0 2px 2px rgba(0, 0, 0, .2);
> div {
max-height: 200px;
text-overflow: ellipsis;
overflow: hidden;
}
hr {
margin-top: $line-height-computed / 2;
margin-bottom: $line-height-computed / 2;
@@ -280,6 +264,30 @@ ul.ui-sortable {
display: none;
}
}
.issue-description {
max-height: 10em;
margin-top: 12px;
text-overflow: ellipsis;
overflow: hidden;
}
.issue-field {
margin: 2px 0 0;
padding-left: 160px;
overflow: hidden;
&:first-child {
margin-top: 0;
}
> label {
margin-left: -160px;
padding-right: 5px;
float: left;
font-weight: $font-weight-bold;
}
}
}
.tooltip_text {
@@ -297,7 +305,7 @@ ul.ui-sortable {
}
.w-rb-header-collapsed {
height: 18px;
height: 27px; // 14px * .86 * 1.42857 + 2 * 5px
overflow: hidden;
}
@@ -318,141 +326,3 @@ body {
}
}
}
#ui-datepicker-div {
width: 16em;
padding: 3px;
border: 1px solid $panel-border;
background: $body-bg;
color: $text-color;
font-size: $font-size-base;
box-shadow: $panel-shadow;
.ui-widget-header {
border: 0 none;
background: $header-bg;
color: $header-text;
font-weight: bold;
}
.ui-state-default {
border: 1px solid $body-bg;
background: $body-bg;
color: $component-color;
font-weight: normal;
box-shadow: none;
a,
a:link,
a:visited {
color: $component-color;
text-decoration: none;
}
}
.ui-state-hover,
.ui-state-focus {
border: 1px solid $component-active-border;
background: $component-active-bg;
color: $component-active-color;
font-weight: normal;
}
.ui-datepicker-header {
padding: .3em;
}
.ui-datepicker-prev {
left: .3em;
}
.ui-datepicker-next {
right: .3em;
}
.ui-datepicker-prev,
.ui-datepicker-next {
top: .3em;
border: 0 none;
background: transparent;
.ui-icon {
background-image: url("/stylesheets/jquery/images/ui-icons_ffffff_256x240.png");
}
&.ui-state-hover {
border-color: darken($header-bg, 12%);
background: darken($header-bg, 10%);
}
}
.ui-datepicker-title {
margin: 0 (1.8em + .3em);
}
select.ui-datepicker-month,
select.ui-datepicker-year {
width: 49%;
height: 1.8em;
margin: 0;
}
select.ui-datepicker-year {
margin-left: 1%;
}
.ui-datepicker-calendar {
td {
text-align: right;
&.ui-datepicker-week-col {
padding-right: $table-condensed-cell-padding;
}
}
}
.ui-datepicker-today {
.ui-state-highlight {
border-color: $component-active-border;
background: $component-bg;
color: $component-color;
}
.ui-state-hover {
background: $component-active-bg;
color: $component-active-color;
}
}
.ui-datepicker-current-day {
.ui-state-active {
border-color: $highlight-border;
background: $highlight-bg;
color: $highlight-text;
}
}
.ui-datepicker-buttonpane {
button {
padding: $input-padding-vertical $input-padding-horizontal;
}
.ui-state-default {
border-color: $component-border;
background: $component-bg;
}
.ui-state-focus,
.ui-state-hover {
border-color: $component-active-bg;
background: $component-active-bg;
color: $component-active-color;
}
.ui-state-active {
border-color: $highlight-border;
background: $highlight-bg;
color: $highlight-text;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,119 @@
// scss-lint:disable ImportantRule
@import "../common";
.ui-multiselect {
padding: 2px 0 2px 4px;
text-align: left;
span.ui-icon {
float: right;
}
}
.ui-multiselect-single .ui-multiselect-checkboxes {
input {
position: absolute !important;
top: auto !important;
left: -9999px;
}
label {
padding: 5px !important;
}
}
.ui-multiselect-header {
margin-bottom: 3px;
padding: 3px;
ul {
font-size: $font-size-list;
li {
padding: 0 10px 0 0;
float: left;
}
}
a {
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
span.ui-icon {
float: left;
}
li.ui-multiselect-close {
padding-right: 0;
float: right;
text-align: right;
}
}
.ui-multiselect-menu {
display: none;
position: absolute;
padding: 3px;
text-align: left;
z-index: 10000;
@include nice-shadow(2);
}
.ui-multiselect-checkboxes {
position: relative;
padding-right: 2px;
overflow-y: scroll;
input[type="checkbox"] {
top: 0;
margin: 3px 0 0 -20px;
float: left;
&:focus {
outline: none;
}
}
label {
display: block;
padding: 3px 1px;
padding-left: 20px + 6px;
border: 1px solid transparent;
cursor: default;
@include user-select(none);
input {
position: relative;
top: 1px;
}
}
li {
clear: both;
font-size: $font-size-list;
&.ui-multiselect-optgroup-label {
margin-bottom: 2px;
border-bottom: 1px solid $panel-border;
font-weight: $font-weight-bold;
text-align: center;
a {
display: block;
margin: 1px 0;
padding: 3px;
text-decoration: none;
}
}
}
}
/* remove label borders in IE6 because IE6 does not support transparency */
* html .ui-multiselect-checkboxes label {
border: 0 none;
}

View File

@@ -0,0 +1,37 @@
@import "../common";
.qtip {
position: absolute;
top: -31000px;
left: -31000px;
width: auto;
max-width: 500px;
outline: none;
}
.ui-tooltip-content {
position: relative;
padding: 10px;
border: 1px solid $tooltip-border;
background-color: $tooltip-bg;
color: $tooltip-text;
font-size: $font-size-list;
text-align: left;
word-wrap: break-word;
@include nice-shadow(2);
overflow: hidden;
}
.ui-tooltip-tip {
border-color: $tooltip-border;
background-color: $tooltip-bg;
}
.ui-tooltip-tip {
position: absolute;
margin: 0 auto;
border: 0 none;
background: transparent;
overflow: hidden;
z-index: 10;
}

View File

@@ -1,3 +1,4 @@
// scss-lint:disable ImportantRule
@import "common";
$header-line-height: floor($line-height-computed * 1.5);
@@ -27,8 +28,11 @@ $story-sp-input-width: 50px;
}
&:hover {
background-color: darken($background, 10%);
text-decoration: none;
@if hue($background) > 15deg and hue($background) < 40deg {
background-color: darken(adjust-hue($background, -8deg), 8%);
} @else {
background-color: darken($background, 10%);
}
}
}
}
@@ -163,7 +167,7 @@ $story-sp-input-width: 50px;
margin: 0 0 ($padding-side / 2);
border-radius: $border-radius-large $border-radius-large 0 0;
background-color: $gray-lightest;
box-shadow: $panel-shadow;
@include nice-shadow(1);
@media screen and (min-width: $screen-md-min) {
margin: 0 0 $padding-side;
@@ -207,7 +211,7 @@ $story-sp-input-width: 50px;
.name {
padding-left: $padding-base-horizontal;
font-weight: bold;
font-weight: $font-weight-bold;
overflow: hidden;
}
@@ -304,18 +308,19 @@ $story-sp-input-width: 50px;
position: relative;
height: $header-line-height;
border-right: 1px solid #888;
border-bottom: 0 none;
border-bottom: 1px solid $header-bg;
border-radius: ($border-radius-large - 1px) 0 0;
cursor: pointer;
font-size: $font-size-small;
line-height: $line-height-base;
cursor: pointer;
overflow: visible;
@include transition(background-color .07s);
@include transition(background-color 0s .1s, border-color 0s .1s);
&:hover {
border-bottom: 1px solid $body-bg;
border-color: $body-bg;
background-color: $body-bg;
z-index: 1000;
@include transition(background-color 0s 0s, border-color 0s 0s);
}
.icon {
@@ -327,20 +332,21 @@ $story-sp-input-width: 50px;
background-position: -64px -16px;
}
.items {
display: none;
ul {
position: absolute;
top: $header-line-height + 1px;
left: -1px;
margin: 0;
padding: $padding-small-vertical 0;
border: 1px solid $gray-light;
border-top: 0 none;
border: 1px solid $header-bg;
border-top-width: 0;
border-radius: 0 0 $border-radius-base $border-radius-base;
background-color: $body-bg;
list-style: none;
box-shadow: 0 2px 1px rgba(#000, .1);
visibility: hidden;
z-index: 999;
@include transition(visibility 0s .1s);
a {
color: $gray-darker;
@@ -348,11 +354,13 @@ $story-sp-input-width: 50px;
}
&:hover .items {
display: block;
visibility: visible;
@include transition(visibility 0s 0s);
}
.item {
min-width: 150px;
position: relative;
min-width: 100px;
white-space: nowrap;
> a {
@@ -366,19 +374,28 @@ $story-sp-input-width: 50px;
}
}
ul {
display: none;
> .ui-icon {
position: absolute;
top: 0;
left: 160px;
margin: 0;
padding: 0;
background-color: $gray-lightest;
list-style: none;
top: 4px;
right: 8px;
left: auto;
background-position: -32px -16px;
}
&:hover ul {
display: block;
ul {
position: absolute;
top: -($padding-small-vertical + 1px);
left: 100%;
border-width: 1px;
}
&:hover {
background-color: darken($body-bg, 8%);
ul {
visibility: visible;
@include transition(visibility 0s 0s);
}
}
}
}
@@ -434,7 +451,7 @@ $story-sp-input-width: 50px;
.story {
display: block;
margin: 0;
padding: $table-condensed-cell-padding;
padding: 0 $table-condensed-cell-padding;
border-top: 1px solid $gray-lighter;
background-color: $body-bg;
background-repeat: no-repeat;
@@ -442,7 +459,7 @@ $story-sp-input-width: 50px;
cursor: move;
&:nth-child(2n) {
background-color: $table-bg-accent;
background-color: $gray-lightest;
}
&:hover {
@@ -466,6 +483,7 @@ $story-sp-input-width: 50px;
.id {
position: relative;
width: $story-id-width;
margin: $table-condensed-cell-padding 0;
float: left;
.t {
@@ -473,31 +491,51 @@ $story-sp-input-width: 50px;
display: block;
padding: $tracker-list-padding;
border-radius: $border-radius-small ($border-radius-small * 3) ($border-radius-small * 3) $border-radius-small;
background-color: darken($gray-lightest, 3%);
color: $gray-dark;
font-weight: bold;
@if $color-trackers {
background-color: $tracker-default-bg;
color: $tracker-default-text;
} @else {
background-color: darken($gray-lightest, 3%);
color: $gray-dark;
}
font-weight: $font-weight-bold;
text-align: right;
&:before {
margin-left: -1em;
color: $gray-light;
@if $color-trackers {
color: mix($tracker-default-text, $tracker-default-bg, 50%);
} @else {
color: $gray-light;
}
font-weight: normal;
content: "#";
}
&:hover {
background-color: $gray-lighter;
@if $color-trackers {
background-color: darken($tracker-default-bg, 10%);
} @else {
background-color: $gray-lighter;
}
text-decoration: none;
}
}
}
}
.fff-left > .project,
.fff-wrapmiddle > .subject,
.fff-right > .status_id,
.fff-right > .story_points {
min-height: floor(.92 * $font-size-base * $line-height-base);
}
.project {
display: block;
position: relative;
width: $story-project-width;
padding-left: 5px;
padding: $table-condensed-cell-padding 0 $table-condensed-cell-padding $table-condensed-cell-padding;
float: left;
text-align: center;
white-space: nowrap;
@@ -510,6 +548,7 @@ $story-sp-input-width: 50px;
.subject {
@include text-overflow;
padding: $table-condensed-cell-padding 0;
}
&.closed .subject {
@@ -518,13 +557,14 @@ $story-sp-input-width: 50px;
.status_id {
width: $story-status-width;
padding-left: 5px;
padding: $table-condensed-cell-padding 0 $table-condensed-cell-padding $table-condensed-cell-padding;
float: left;
white-space: nowrap;
}
.story_points {
width: $story-right-width - ($story-status-width + $padding-base-horizontal);
width: $story-right-width - ($story-status-width + $padding-base-horizontal + 1px);
padding: $table-condensed-cell-padding $table-condensed-cell-padding $table-condensed-cell-padding 0;
float: left;
text-align: right;
}
@@ -568,7 +608,9 @@ $story-sp-input-width: 50px;
.editors {
display: block;
margin-left: $story-tracker-input-width + 5px;
padding: $table-condensed-cell-padding 0;
text-align: right;
@include clearfix;
label {
display: none;
@@ -593,14 +635,16 @@ $story-sp-input-width: 50px;
&.status_id {
width: $story-status-input-width;
padding-right: 0;
float: left;
}
&.story_points {
width: $story-sp-input-width;
margin-right: 0;
padding-left: 0;
padding-right: 0;
float: left;
text-align: left;
}
&.subject {
@@ -609,6 +653,7 @@ $story-sp-input-width: 50px;
width: calc(100% - #{$subject-width-minus}) !important;
height: 60px;
float: left;
white-space: normal;
overflow: auto;
}
@@ -652,13 +697,13 @@ $story-sp-input-width: 50px;
}
@if $color-trackers {
@include rb-tracker('.tracker1', $tracker-1-bg, $tracker-1-text);
@include rb-tracker('.tracker2', $tracker-2-bg, $tracker-2-text);
@include rb-tracker('.tracker3', $tracker-3-bg, $tracker-3-text);
@include rb-tracker('.tracker4', $tracker-4-bg, $tracker-4-text);
@include rb-tracker('.tracker5', $tracker-5-bg, $tracker-5-text);
@include rb-tracker('.tracker6', $tracker-6-bg, $tracker-6-text);
@include rb-tracker('.tracker7', $tracker-7-bg, $tracker-7-text);
@each $tracker-id, $tracker-colors in $tracker-colors-map {
@include rb-tracker(
".tracker#{$tracker-id}",
map-get($tracker-colors, background),
map-get($tracker-colors, color)
);
}
}
}
@@ -679,7 +724,7 @@ $story-sp-input-width: 50px;
&.ui-widget-content {
border: 0 none;
box-shadow: 2px 2px 5px #777;
@include nice-shadow(5);
}
.ui-dialog-buttonpane.ui-widget-content {
@@ -722,10 +767,10 @@ $story-sp-input-width: 50px;
display: inline-block;
margin-bottom: 0;
border: 1px solid;
cursor: pointer;
font-weight: $btn-font-weight;
text-align: center;
white-space: nowrap;
cursor: pointer;
@include button-size($input-padding-vertical, $input-padding-horizontal, $font-size-base, $line-height-base, $border-radius-base);
@include user-select(none);
@include transition(background-color ease-in-out .07s, border-color ease-in-out .07s, box-shadow ease-in-out .07s);
@@ -746,12 +791,6 @@ $story-sp-input-width: 50px;
&:active {
text-decoration: none;
}
@media screen and (max-width: $screen-md-max) {
padding: $input-padding-vertical;
font-size: $font-size-small-px;
line-height: $line-height-computed;
}
}
}
}
@@ -796,6 +835,6 @@ $story-sp-input-width: 50px;
#show_completed_sprints {
margin-left: $padding-side / 2;
cursor: pointer;
color: $gray-darkest;
cursor: pointer;
}

View File

@@ -73,7 +73,7 @@ $swimlane-width: $issue-width + 2 * ($issue-margin + $issue-paddi
border-right: 1px dotted mix($header-bg, $header-text, 70%);
background-color: $header-bg;
color: $header-text;
font-weight: bold;
font-weight: $font-weight-bold;
text-align: center;
vertical-align: middle;
@@ -161,7 +161,7 @@ $swimlane-width: $issue-width + 2 * ($issue-margin + $issue-paddi
a {
color: $gray-darkest;
font-size: $font-size-small-px;
font-weight: bold;
font-weight: $font-weight-bold;
}
.assignee {
@@ -198,7 +198,7 @@ $swimlane-width: $issue-width + 2 * ($issue-margin + $issue-paddi
border-radius: 50%;
background-color: $brand-warning;
color: $brand-text;
font-weight: bold;
font-weight: $font-weight-bold;
line-height: 36px;
text-align: center;
@@ -223,10 +223,10 @@ $swimlane-width: $issue-width + 2 * ($issue-margin + $issue-paddi
border: 0 none;
border-radius: $border-radius-large;
background-color: $gray-lighter;
cursor: move;
color: $gray-darker;
font-size: 10px;
line-height: 1.3;
cursor: move;
}
.placeholder {
@@ -244,7 +244,7 @@ $swimlane-width: $issue-width + 2 * ($issue-margin + $issue-paddi
border-radius: $border-radius-base;
background-color: $body-bg;
font-size: $font-size-small-px;
font-weight: bold;
font-weight: $font-weight-bold;
line-height: 16px;
text-align: right;
opacity: .8;
@@ -382,7 +382,7 @@ $swimlane-width: $issue-width + 2 * ($issue-margin + $issue-paddi
&.ui-widget-content {
border: 0 none;
background: none;
box-shadow: 2px 2px 5px #777;
@include nice-shadow(5);
}
.ui-dialog-buttonpane.ui-widget-content {

File diff suppressed because one or more lines are too long