Project

General

Profile

Feature #23980 » 0003-Replace-more-icons-to-svg.patch

Takashi Kato, 2024-07-28 18:35

View differences:

app/assets/stylesheets/application.css
6 6

  
7 7
:root {
8 8
  --color-icon: #169;
9

  
10
  --icon-bg-angle-up: url(/icons/bg-angle-up.svg);
11
  --icon-bg-angle-down: url(/icons/bg-angle-down.svg);
12
  --icon-bg-angle-left: url(/icons/bg-angle-left.svg);
13
  --icon-bg-angle-right: url(/icons/bg-angle-right.svg);
14
  --icon-bg-magnifier: url(/icons/bg-magnifier.svg);
9 15
}
16

  
10 17
html, body { min-height: 100vh; }
11 18
html {overflow-y:scroll;}
12 19
body { font-family: Verdana, sans-serif; font-size: 12px; color:#333; margin: 0; padding: 0; min-width: 900px; }
......
174 181
#sidebar a.selected:hover {text-decoration:none;}
175 182
#sidebar .query.default {font-weight: bold;}
176 183
#admin-menu a {line-height:1.7em;}
177
#admin-menu a.selected {padding-left: 20px !important; background-position: 2px 40%;}
178 184

  
179 185
a.collapsible {padding-left: 12px; }
180 186

  
......
255 261
  margin:0 !important;
256 262
  vertical-align:middle;
257 263
  color:#555;
258
  background:#fff url(/arrow_down.png) no-repeat 97% 50%;
264
  background:#fff var(--icon-bg-angle-down) no-repeat 97% 50% / 12px 12px;
259 265
}
260
#project-jump .drdn.expanded .drdn-trigger {background-image:url(/arrow_up.png);}
266
#project-jump.drdn.expanded .drdn-trigger {background-image:var(--icon-bg-angle-up);}
261 267
#project-jump .drdn-content {width:280px;}
262 268
#project-jump .drdn-items>* {color:#555 !important;}
263 269
#project-jump .drdn-items>a:hover {background-color:#759FCF; color:#fff !important;}
......
292 298
tr.project td.name a { white-space:nowrap; }
293 299
tr.project.closed, tr.project.archived { color: #aaa; }
294 300
tr.project.closed a, tr.project.archived a { color: #aaa; }
301
tr.project td.name a + .icon {margin-left:3px}
295 302

  
296 303
tr.issue { text-align: center; white-space: nowrap; }
297 304
tr.issue td.subject, tr.issue td.parent-subject, tr.issue td.category, td.assigned_to, td.last_updated_by, tr.issue td.string, tr.issue td.text, tr.issue td.list, tr.issue td.relations, tr.issue td.parent, tr.issue td.watcher_users { white-space: normal; }
......
303 310
table.issues td.block_column span {font-weight: bold; display: block; margin-bottom: 4px;}
304 311
table.issues td.block_column pre {white-space:normal;}
305 312

  
306
tr.idnt td.subject, tr.idnt td.name {background: url(/arrow_right.png) no-repeat 2px 50%;}
313
tr.idnt td.subject, tr.idnt td.name {background: var(--icon-bg-angle-right) no-repeat 2px 50% / 12px 12px;}
307 314
tr.idnt-1 td.subject, tr.idnt-1 td.name {padding-left: 24px; background-position: 8px 50%;}
308 315
tr.idnt-2 td.subject, tr.idnt-2 td.name {padding-left: 40px; background-position: 24px 50%;}
309 316
tr.idnt-3 td.subject, tr.idnt-3 td.name {padding-left: 56px; background-position: 40px 50%;}
......
359 366
tr.version td.date, tr.version td.status, tr.version td.sharing { text-align: center; white-space:nowrap; }
360 367

  
361 368
tr.member td.icon-user, #principals_for_new_member .icon-user {background:transparent;}
369
tr.member td.icon-user::before, #principals_for_new_member .icon-user::before {width:0;}
362 370

  
363 371
tr.user td {width:13%;white-space: nowrap;}
364 372
td.username, td.firstname, td.lastname, td.email {text-align:left !important;}
......
408 416

  
409 417
a.sort { padding-right: 16px; background-position: 100% 50%; background-repeat: no-repeat; }
410 418

  
411
table.boards a.board { background: url(/comment.png) no-repeat 0% 50%; padding-left: 20px; }
419
table.boards a.board { display: inline-flex }
420
table.boards a.board::before {
421
  content: "";
422
  display: flex;
423
  width:14px;
424
  height: 14px;
425
  background-color: var(--color-icon);
426
  margin-right: 3px;
427
  -webkit-mask-repeat: no-repeat;
428
  -webkit-mask-image: url(/icons/comment.svg);
429
  mask-repeat: no-repeat;
430
  mask-image: url(/icons/comment.svg);
431
}
412 432
table.boards td.last-message {text-align:left;font-size:80%;}
413 433

  
414 434
div.table-list.boards .table-list-cell.name {width: 30%;}
......
520 540
  -o-appearance: none;
521 541
  appearance: none;
522 542
  background-color: #fff;
523
  background-image: url(/arrow_down.png);
543
  background-image: var(--icon-bg-angle-down);
524 544
  background-repeat: no-repeat;
525 545
  background-position: calc(100% - 7px) 50%;
546
  background-size: 12px;
526 547
  padding-right: 20px;
527 548
}
528 549
input[type="file"] {border: 0; padding-left: 0; padding-right: 0; height: initial; background-color: initial; }
......
781 802
#projects-index ul.projects div.description {
782 803
  padding-top: 0.5em;
783 804
}
784
#projects-index a.icon-user, a.icon-bookmarked-project {padding-left:0; padding-right:20px; background-position:98% 50%;}
785
#projects-index a.icon-user.icon-bookmarked-project {
786
  background-image: url(/tag_blue.png), url(/user.png);
787
  background-position: bottom 0px right 0px, bottom 0px right 20px;
788
  padding-right: 40px;
789
  padding-top: 4px;
790
}
805

  
806
#projects-index a.project + .icon {margin-left:3px}
791 807

  
792 808
#notified-projects>ul, #tracker_project_ids>ul, #custom_field_project_ids>ul {max-height:250px; overflow-y:auto;}
793 809

  
......
1005 1021
.attachments_fields .ajax-waiting input.filename {background:url(/hourglass.png) no-repeat 0px 50%;}
1006 1022
.attachments_fields .ajax-loading input.filename {background:url(/loading.gif) no-repeat 0px 50%;}
1007 1023
.attachments_fields div.ui-progressbar { width: 100px; height:14px; margin: 2px 0 -5px 8px; display: inline-block; }
1024
.attachments_fields span {display: inline-flex;align-items: center}
1025
.attachments_fields span::before {
1026
  content: "";
1027
  display: flex;
1028
  width:14px;
1029
  height: 14px;
1030
  background-color: var(--color-icon);
1031
  margin-right: 3px;
1032
  -webkit-mask-repeat: no-repeat;
1033
  -webkit-mask-image: url(/icons/attachment.svg);
1034
  mask-repeat: no-repeat;
1035
  mask-image: url(/icons/attachment.svg);
1036
}
1008 1037

  
1009 1038
a.remove-upload:hover {text-decoration:none !important;}
1010 1039
.existing-attachment.deleted .filename {text-decoration:line-through; color:#999 !important;}
......
1020 1049
div.thumbnails img {margin: 3px; vertical-align: middle;}
1021 1050
#history div.thumbnails {margin-left: 2em;}
1022 1051

  
1023
p.other-formats { text-align: right; font-size:0.9em; color: #666; }
1052
p.other-formats { text-align: right; font-size:0.9em; color: #666;display: inline-flex; justify-content: flex-end; width:100%}
1024 1053
.other-formats span + span:before { content: "| "; }
1025 1054

  
1026
a.atom { background: url(/feed.png) no-repeat 1px 50%; padding: 2px 0px 3px 16px; }
1055
a.atom {display: inline-flex;margin-left:3px }
1056
a.atom::before {
1057
  content: "";
1058
  display: flex;
1059
  width:14px;
1060
  height: 14px;
1061
  background-color: var(--color-icon);
1062
  margin-right: 3px;
1063
  -webkit-mask-repeat: no-repeat;
1064
  -webkit-mask-image: url(/icons/atom.svg);
1065
  mask-repeat: no-repeat;
1066
  mask-image: url(/icons/atom.svg);
1067
}
1027 1068

  
1028 1069
em.info {font-style:normal;display:block;font-size:90%;color:#888;}
1029
em.info.error {padding-left:20px; background:url(/exclamation.png) no-repeat 0 50%;}
1070
em.info.error::before {
1071
  content: "";
1072
  display: inline-block;
1073
  margin-right: 3px;
1074
  width:14px;
1075
  height: 14px;
1076
  background-color: var(--color-icon);
1077
  -webkit-mask-repeat: no-repeat;
1078
  -webkit-mask-image: url(/icons/error.svg);
1079
  mask-repeat: no-repeat;
1080
  mask-image: url(/icons/error.svg);
1081
}
1030 1082

  
1031 1083
textarea.text_cf {width:95%; resize:vertical;}
1032 1084
input.string_cf, input.link_cf {width:95%;}
......
1040 1092
input#principal_search, input#user_search {width:90%}
1041 1093
.roles-selection label {display:inline-block; width:210px;}
1042 1094

  
1095

  
1043 1096
input.autocomplete {
1044
  background: #fff url(/magnifier.png) no-repeat 2px 50%; padding-left:20px !important;
1097
  background: #fff var(--icon-bg-magnifier) no-repeat 2px 50% / 14px 14px; padding-left:20px !important;
1045 1098
}
1099

  
1046 1100
input.autocomplete.ajax-loading {
1047 1101
  background-image: url(/loading.gif);
1048 1102
}
......
1083 1137

  
1084 1138
div.flash {margin-top: 8px;}
1085 1139

  
1140
div.flash::before, #errorExplanation::before  {
1141
  content: "";
1142
  display: inline-block;
1143
  margin-right: 3px;
1144
  width:16px;
1145
  height: 16px;
1146
  background-color: var(--color-icon);
1147
  -webkit-mask-repeat: no-repeat;
1148
  -webkit-mask-image: var(--icon-image);
1149
  mask-repeat: no-repeat;
1150
  mask-image: var(--icon-image);
1151
}
1152

  
1153
div.flash.error::before, #errorExplanation::before, .conflict::before  {
1154
  --color-icon: #ec0b19;
1155
  --icon-image: url(/icons/error.svg);
1156
}
1086 1157
div.flash.error, #errorExplanation {
1087
  background: url(/exclamation.png) 8px 50% no-repeat;
1088 1158
  background-color: #ffe3e3;
1089 1159
  border-color: #d88;
1090 1160
  color: #880000;
1091 1161
}
1092 1162

  
1163
div.flash.notice::before {
1164
  --color-icon: #55ab4f;
1165
  --icon-image: url(/icons/checked.svg);
1166
}
1093 1167
div.flash.notice {
1094
  background: url(/true.png) 8px 5px no-repeat;
1095 1168
  background-color: #dfffdf;
1096 1169
  border-color: #9fcf9f;
1097 1170
  color: #005f00;
1098 1171
}
1099 1172

  
1173
div.flash.warning::before, .conflict::before {
1174
  --color-icon: #ffae42;
1175
  --icon-image: url(/icons/warning.svg);
1176
}
1100 1177
div.flash.warning, .conflict {
1101
  background: url(/warning.png) 8px 5px no-repeat;
1102 1178
  background-color: #F3EDD1;
1103 1179
  border-color: #eadbbc;
1104 1180
  color: #A6750C;
......
1193 1269

  
1194 1270
.cal .calbody .icon {padding-top: 2px; padding-bottom: 3px;}
1195 1271
.cal .calbody.nwday:not(.odd) {background-color:#f1f1f1;}
1196
.cal .starting a.issue, p.cal.legend .starting {background: url(/bullet_go.png) no-repeat -1px -2px; padding-left:16px;}
1197
.cal .ending a.issue, p.cal.legend .ending {background: url(/bullet_end.png) no-repeat -1px -2px; padding-left:16px;}
1198
.cal .starting.ending a.issue, p.cal.legend .starting.ending {background: url(/bullet_diamond.png) no-repeat -1px -2px; padding-left:16px;}
1199 1272

  
1200
p.cal.legend span {display:block;}
1273
.cal a.issue::before, p.cal.legend span::before {
1274
  content: "";
1275
  display: inline-flex;
1276
  width:16px;
1277
  height: 16px;
1278
  margin-right: 3px;
1279
  background-color: var(--color-icon);
1280
  -webkit-mask-repeat: no-repeat;
1281
  -webkit-mask-image: var(--icon-image);
1282
  mask-repeat: no-repeat;
1283
  mask-image: var(--icon-image);
1284
  vertical-align: bottom;
1285
}
1286
.cal .starting a.issue::before, p.cal.legend .starting::before {--color-icon: #55ab4f; --icon-image: url(/icons/bullet-go.svg)}
1287
.cal .ending a.issue::before, p.cal.legend .ending::before {--color-icon: #ec0b19;--icon-image: url(/icons/bullet-end.svg)}
1288
.cal .starting.ending a.issue::before, p.cal.legend .starting.ending::before {--color-icon: #ec0b19;--icon-image: url(/icons/bullet-go-end.svg)}
1289

  
1290
p.cal.legend span { display:flex; }
1201 1291
.controller-calendars p.buttons {margin-top: unset;}
1202 1292

  
1203 1293
/***** Tooltips ******/
......
1317 1407
button.tab-left:focus, button.tab-right:focus {
1318 1408
  outline: 0;
1319 1409
}
1320

  
1410
button.tab-left::before, button.tab-right::before {
1411
  content: "";
1412
  display: inline-block;
1413
  width:14px;
1414
  height: 14px;
1415
  background-color: #666;
1416
  -webkit-mask-repeat: no-repeat;
1417
  -webkit-mask-position: 50% 50%;
1418
  -webkit-mask-image: var(--icon-image);
1419
  mask-repeat: no-repeat;
1420
  mask-position: 50% 50%;
1421
  mask-image: var(--icon-image);
1422
}
1321 1423
button.tab-left {
1322 1424
  right: 28px;
1323
  background: #eeeeee url(/arrow_left.png) no-repeat 50% 50%;
1324 1425
  border-top-left-radius:3px;
1325 1426
}
1427
button.tab-left::before {
1428
  --icon-image: var(--icon-bg-angle-left)
1429
}
1326 1430

  
1327 1431
button.tab-right {
1328 1432
  right: 4px;
1329
  background: #eeeeee url(/arrow_right.png) no-repeat 50% 50%;
1330 1433
  border-top-right-radius:3px;
1331 1434
}
1435
button.tab-right::before {
1436
  --icon-image: var(--icon-bg-angle-right)
1437
}
1332 1438

  
1333 1439
button.tab-left.disabled, button.tab-right.disabled {
1334 1440
  background-color: #ccc;
......
1365 1471

  
1366 1472
div.wiki .wiki-class-noborder, div.wiki .wiki-class-noborder td, div.wiki .wiki-class-noborder th {border:0;}
1367 1473

  
1368
div.wiki .external {
1369
  background-position: 0% 60%;
1370
  background-repeat: no-repeat;
1371
  padding-left: 12px;
1372
  background-image: url(/external.png);
1474
div.wiki .external::before {
1475
  content: "";
1476
  display: inline-block;
1477
  margin-right: 3px;
1478
  width:10px;
1479
  height: 10px;
1480
  background-color: #999;
1481
  -webkit-mask-repeat: no-repeat;
1482
  -webkit-mask-image: url(/icons/external.svg);
1483
  mask-repeat: no-repeat;
1484
  mask-image: url(/icons/external.svg);
1373 1485
}
1374 1486

  
1375 1487
div.wiki a {word-wrap: break-word;}
......
1794 1906

  
1795 1907
.repository-graph {width:75%; margin-bottom:2em;}
1796 1908

  
1797
img.filecontent.image {background-image: url(/transparent.png);}
1909
img.filecontent.image {mask-image: url(/transparent.png);}
1798 1910

  
1799 1911
/* Custom JQuery styles */
1800 1912
.ui-autocomplete, .ui-menu {
app/assets/stylesheets/context_menu.css
7 7
#context-menu { position: absolute; z-index: 40; font-size: 0.9em;}
8 8

  
9 9
#context-menu ul, #context-menu li, #context-menu a {
10
  display:block;
11 10
  margin:0;
12 11
  padding:0;
13 12
  border:0;
......
41 40

  
42 41
#context-menu a {
43 42
  text-decoration:none !important;
44
  padding: 2px 0px 2px 20px;
43
  padding: 2px 0px 2px 4px;
45 44
  width:100%; /* IE */
46 45
}
46

  
47
#context-menu a.submenu,
48
#context-menu .folder ul li a:not(.icon) {
49
  padding: 2px 0px 2px 20px;
50
}
51

  
47 52
#context-menu li>a { width:auto; } /* others */
48 53
#context-menu a.disabled, #context-menu a.disabled:hover {color: #aaa;}
49
#context-menu li a.submenu { padding-right:16px; background:url("/arrow_right.png") right no-repeat; }
54
#context-menu li a.submenu { padding-right:16px; background:var(--icon-bg-angle-right) right / 12px 12px no-repeat;display: block }
50 55
#context-menu li:hover { border:1px solid #628db6; background-color:#eef5fd; border-radius:3px; }
51 56
#context-menu a:hover {color:#2A5685;}
52 57
#context-menu li.folder:hover { z-index:40; }
app/assets/stylesheets/context_menu_rtl.css
6 6

  
7 7
#context-menu li.folder ul { left:auto; right:168px; }
8 8
#context-menu li.folder>ul { left:auto; right:148px; }
9
#context-menu li a.submenu { background:url("/arrow_left.png") left no-repeat; }
9
#context-menu li a.submenu { background:var(--icon-arrow-left) left no-repeat; background-size: 12px 12px }
10 10

  
11 11
#context-menu a {
12 12
   background-position: 100% 40%;
app/assets/stylesheets/jstoolbar.css
60 60
    border-width: 1px;
61 61
    border-color: #ddd;
62 62
    background-color : #f7f7f7;
63
    background-position : 50% 50%;
64
    background-repeat: no-repeat;
65 63
    cursor:pointer;
66 64
    opacity:0.7;
67 65
}
......
70 68
    background-color: #e5e5e5;
71 69
    opacity:1;
72 70
}
73
.jstElements button span {
74
    display : none;
75
}
71

  
76 72
.jstElements span {
77 73
    display : inline;
78 74
}
......
102 98
    border-collapse: collapse;
103 99
}
104 100

  
105
/* Buttons
106
-------------------------------------------------------- */
107
.jstb_strong {
108
    background-image: url(/jstoolbar/bt_strong.png);
109
}
110
.jstb_em {
111
    background-image: url(/jstoolbar/bt_em.png);
112
}
113
.jstb_ins {
114
    background-image: url(/jstoolbar/bt_ins.png);
115
}
116
.jstb_del {
117
    background-image: url(/jstoolbar/bt_del.png);
118
}
119
.jstb_code {
120
    background-image: url(/jstoolbar/bt_code.png);
121
}
122
.jstb_h1 {
123
    background-image: url(/jstoolbar/bt_h1.png);
124
}
125
.jstb_h2 {
126
    background-image: url(/jstoolbar/bt_h2.png);
127
}
128
.jstb_h3 {
129
    background-image: url(/jstoolbar/bt_h3.png);
130
}
131
.jstb_ul {
132
    background-image: url(/jstoolbar/bt_ul.png);
133
}
134
.jstb_ol {
135
    background-image: url(/jstoolbar/bt_ol.png);
101
.jstElements button span::before {
102
    content: "";
103
    display: inline-block;
104
    visibility: visible;
105
    margin-right: 3px;
106
    width:14px;
107
    height: 14px;
108
    mask-repeat: no-repeat;
109
    mask-image: var(--icon-image);
110
    margin-left: -7px;
136 111
}
137
.jstb_tl {
138
    background-image: url(/jstoolbar/bt_tl.png);
112
.jstElements button span {
113
    display: inline-block;
114
    visibility: hidden;
115
    width: 0;
139 116
}
140
.jstb_bq {
141
    background-image: url(/jstoolbar/bt_bq.png);
117

  
118
/* Buttons
119
-------------------------------------------------------- */
120
.jstb_strong span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/strong.svg)}
121
.jstb_em span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/em.svg)}
122
.jstb_ins span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/ins.svg)}
123
.jstb_del span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/del.svg)}
124
.jstb_ul span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/ul.svg)}
125
.jstb_ol span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/ol.svg)}
126
.jstb_tl span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/tl.svg)}
127
.jstb_bq span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/bq.svg)}
128
.jstb_unbq span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/unbq.svg)}
129
.jstb_table span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/table.svg)}
130
.jstb_precode span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/precode.svg)}
131
.jstb_link span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/link.svg)}
132
.jstb_img span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/img.svg)}
133
.jstb_help span::before { background-color: #333; --icon-image: url(/icons/jstoolbar/help.svg)}
134

  
135
button.jstb_code {
136
  padding-top: 0
142 137
}
143
.jstb_unbq {
144
    background-image: url(/jstoolbar/bt_bq_remove.png);
138

  
139
button.jstb_h1, button.jstb_h2, button.jstb_h3, button.jstb_pre {
140
  padding-top: 1px;
141
  text-align: center;
145 142
}
146
.jstb_pre {
147
    background-image: url(/jstoolbar/bt_pre.png);
143

  
144
button.jstb_h1::before, button.jstb_h2::before, button.jstb_h3::before {
145
    font-size: 13px;
146
    font-weight: 700;
148 147
}
149
.jstb_precode {
150
    background-image: url(/jstoolbar/bt_precode.png);
148

  
149
.jstb_code::before {
150
    content: "C";
151
    font-size: 16px;
152
    font-weight: 700;
151 153
}
152
.jstb_link {
153
    background-image: url(/jstoolbar/bt_link.png);
154

  
155
.jstb_h1::before {
156
    content: "H1";
154 157
}
155
.jstb_img {
156
    background-image: url(/jstoolbar/bt_img.png);
158

  
159
.jstb_h2::before {
160
    content: "H2";
157 161
}
158
.jstb_table {
159
    background-image: url(/jstoolbar/bt_table.png);
162

  
163
.jstb_h3::before {
164
    content: "H3";
160 165
}
161
.jstb_help {
162
    background-image: url(/help.png);
166

  
167
.jstb_pre::before {
168
    content: "pre";
169
    font-size: 12px;
170
    font-weight: 700;
163 171
}
172

  
app/assets/stylesheets/rtl.css
38 38
/***** Links *****/
39 39

  
40 40
#sidebar a.selected {padding:1px 2px 2px 3px; margin-left:0px; margin-right:-2px;}
41
#admin-menu a.selected {padding-left:0!important; padding-right:20px!important; background-position:right 2px 40%;}
42 41

  
43
a.collapsible {padding-left:0px; padding-right:12px; background: url(/arrow_down.png) no-repeat right 0px top 50%;}
44
a.collapsible.collapsed {background-image: url(/arrow_left.png);}
42
a.collapsible {padding-left:0px; padding-right:12px; background: var(--icon-bg-angle-down) no-repeat right 0px top 50%;}
43
a.collapsible.collapsed {background-image: var(--icon-bg-angle-left);}
45 44

  
46 45
/***** Tables *****/
47 46
table.list td {padding-left:0px; padding-right:10px;}
......
137 136

  
138 137
div.issue span.private, div.journal span.private {margin-right:0px; margin-left:2px;}
139 138

  
140
fieldset.collapsible>legend {padding-left:0px; padding-right:18px; background: url(/arrow_down.png) no-repeat right 50%;}
141
fieldset.collapsible.collapsed>legend { background-image: url(/arrow_left.png); }
139
fieldset.collapsible>legend::before {margin-left: 6px; padding-left:0px}
140
.icon-collapsed::before { mask-image: url(/icons/angle-left.svg)}
142 141

  
143 142
fieldset#filters td.add-filter {text-align:left; }
144 143

  
......
214 213
.check_box_group label {margin-right: 0px !important; text-align: right;}
215 214
.attachments_fields input.description {margin-left:0px; margin-right:4px;}
216 215

  
217
.attachments_fields input.filename {background:url(/attachment.png) no-repeat right 1px top 50%; padding-left:0px; padding-right:18px;}
216
.attachments_fields input.filename {padding-left:0px; padding-right:18px;}
218 217
.attachments_fields .ajax-waiting input.filename {background:url(/hourglass.png) no-repeat right top 50%;}
219 218
.attachments_fields .ajax-loading input.filename {background:url(/loading.gif) no-repeat right top 50%;}
220 219
.attachments_fields div.ui-progressbar {margin: 2px 8px -5px 0;}
221 220

  
222
a.remove-upload {background: url(/delete.png) no-repeat right 1px top 50%; padding-left:0px; padding-right:16px;}
223 221

  
224 222
div.thumbnails div {margin-right:0px; margin-left:2px;}
225 223

  
226 224
p.other-formats { text-align:left; }
227 225

  
228
a.atom { background: url(/feed.png) no-repeat right 1px top 50%; padding: 2px 16px 3px 0; }
229

  
230
em.info.error {padding-left:0; padding-right:20px; background:url(/exclamation.png) no-repeat right 50%;}
226
a.atom { padding: 2px 16px 3px 0; }
227
a.atom::before { margin-left: 3px; }
231 228

  
232 229
table.members td.name {padding-right: 20px; padding-left:0; }
233 230
table.members td.group, table.members td.groupnonmember, table.members td.groupanonymous {background: url(/group.png) no-repeat right 50%;}
234 231

  
235 232
input.autocomplete {
236
  background: #fff url(/magnifier.png) no-repeat right 2px top 50%; padding-left:0px !important; padding-right:20px !important;
233
  background: #fff var(--icon-bg-magnifier) no-repeat right 2px top 50% / 14px 14px; padding-left:0px !important; padding-right:20px !important;
237 234
}
238 235

  
239 236
.role-visibility {padding-right:2em; padding-left:0;}
......
243 240
  padding: 4px 30px 4px 4px;
244 241
}
245 242

  
246
div.flash.error, #errorExplanation {
247
  background: url(/exclamation.png) right 8px top 50% no-repeat;
243
div.flash.error::before, #errorExplanation::before {
244
  margin-left: 3px;
248 245
}
249 246

  
250
div.flash.notice {
251
  background: url(/true.png) right 8px top 5px no-repeat;
247
div.flash.notice::before {
248
  margin-left: 3px;
252 249
}
253 250

  
254
div.flash.warning, .conflict {
255
  background: url(/warning.png) right 8px top 5px no-repeat;
251
div.flash.warning::before, .conflict::before {
252
  margin-left: 3px;
256 253
  text-align:right;
257 254
}
258 255

  
......
269 266

  
270 267
/***** Calendar *****/
271 268
table.cal td p.day-num {text-align:left;}
272
table.cal .starting a, p.cal.legend .starting {background: url(/bullet_go.png) no-repeat right -1px top -2px; padding-left:0px; padding-right:16px;}
273
table.cal .ending a, p.cal.legend .ending {background: url(/bullet_end.png) no-repeat right -1px top -2px; padding-left:0px; padding-right:16px;}
274
table.cal .starting.ending a, p.cal.legend .starting.ending {background: url(/bullet_diamond.png) no-repeat right -1px top -2px; padding-left:0px; padding-right:16px;}
275 269

  
276 270
/***** Tooltips ******/
277 271
.tooltip span.tip{text-align:right;}
......
352 346
  padding-left:0; padding-right:20px;
353 347
}
354 348

  
349
.icon::before,.icon-only::before {
350
  margin-right: unset;
351
  margin-left: 3px;
352
}
353

  
355 354
div.issue img.gravatar {
356 355
  float: right;
357 356
  margin: 0 0 0 6px;
app/assets/stylesheets/scm.css
21 21

  
22 22
li.change {
23 23
    list-style-type:none;
24
    background-image: url(/bullet_black.png);
25
    background-position: 1px 1px;
26 24
    background-repeat: no-repeat;
27 25
    padding-top: 1px;
28 26
    padding-bottom: 1px;
29 27
    padding-left: 20px;
30 28
    margin: 0;
31 29
}
32
li.change.folder { background-image: url(/folder_open.png); }
33
li.change.folder.change-A { background-image: url(/folder_open_add.png); }
34
li.change.folder.change-M { background-image: url(/folder_open_orange.png); }
35
li.change.change-A { background-image: url(/bullet_add.png); }
36
li.change.change-M { background-image: url(/bullet_orange.png); }
37
li.change.change-C { background-image: url(/bullet_blue.png); }
38
li.change.change-R { background-image: url(/bullet_purple.png); }
39
li.change.change-D { background-image: url(/bullet_delete.png); }
30
li.change::before {
31
  content: "";
32
  display: inline-block;
33
  margin-right: 3px;
34
  width:12px;
35
  height: 12px;
36
  --color-change: #000;
37
  --icon-change: url(/icons/error.svg);
38
  background-color: var(--color-change);
39
  mask-image: var(--icon-change);
40
  mask-size: 10px 10px;
41
  mask-position: 1px 1px;
42
  mask-repeat: no-repeat;
43
}
44

  
45
li.change.folder::before { --color-change: var(--color-link-icon);  --icon-change: url(/icons/folder-open.svg) }
46
li.change.folder.change-A::before { --color-change: var(--color-link-icon);  --icon-change: url(/icons/folder-open.svg) }
47
li.change.folder.change-M::before { --color-change: var(--color-link-icon);  --icon-change: url(/icons/folder-open.svg) }
48
li.change.change-A::before { --color-change: green;  --icon-change: url(/icons/add.svg) }
49
li.change.change-M::before { --color-change: orange; --icon-change: url(/icons/rev-change.svg) }
50
li.change.change-C::before { --color-change: blue;   --icon-change: url(/icons/copy.svg) }
51
li.change.change-R::before { --color-change: purple; --icon-change: url(/icons/rev-move.svg) }
52
li.change.change-D::before { --color-change: red;    --icon-change: url(/icons/clear-query.svg) }
40 53

  
41 54
li.change .copied-from { font-style: italic; color: #999; font-size: 0.9em; }
42 55
li.change .copied-from:before { content: " - "}
app/helpers/projects_helper.rb
76 76
    bookmarked_project_ids = User.current.bookmarked_project_ids
77 77
    render_project_nested_lists(projects) do |project|
78 78
      classes = project.css_classes.split
79
      classes += %w(icon icon-user my-project) if User.current.member_of?(project)
80
      classes += %w(icon icon-bookmarked-project) if bookmarked_project_ids.include?(project.id)
81 79
      s = link_to_project(project, {}, :class => classes.uniq.join(' '))
82
      if project.description.present?
83
        s << content_tag('div', textilizable(project.short_description, :project => project), :class => 'wiki description')
84
      end
80
      s << tag.span(class: 'icon icon-user my-project', title: l(:label_my_projects)) if User.current.member_of?(project)
81
      s << tag.span(class: 'icon icon-bookmarked-project', title: l(:label_my_bookmarks)) if bookmarked_project_ids.include?(project.id)
82
      s << tag.div(textilizable(project.short_description, :project => project), :class => 'wiki description') if project.description.present?
85 83
      s
86 84
    end
87 85
  end
(35-35/37)