File tree Expand file tree Collapse file tree 4 files changed +34
-4
lines changed Expand file tree Collapse file tree 4 files changed +34
-4
lines changed Original file line number Diff line number Diff line change 1
1
from collections import OrderedDict
2
2
import datetime
3
3
4
+ import cssutils
4
5
import dateutil .tz
5
6
import jinja2
6
7
@@ -71,7 +72,28 @@ def latex(self):
71
72
72
73
@reify
73
74
def css (self ):
74
- return self .info .get ('css' )
75
+ """ Returns lesson-specific extra CSS.
76
+
77
+ If the lesson defines extra css, the scope of the styles is limited to ``.lesson-content``,
78
+ a div which contains the actual lesson content.
79
+
80
+ This doesn't protect against malicious input.
81
+ """
82
+ css = self .info .get ("css" )
83
+
84
+ if css is None :
85
+ return None
86
+
87
+ parser = cssutils .CSSParser (raiseExceptions = True )
88
+ parsed = parser .parseString (css )
89
+
90
+ for rule in parsed .cssRules :
91
+ for selector in rule .selectorList :
92
+ # the space is important - there's a difference between for example
93
+ # ``.lesson-content:hover`` and ``.lesson-content :hover``
94
+ selector .selectorText = ".lesson-content " + selector .selectorText
95
+
96
+ return parsed .cssText .decode ("utf-8" )
75
97
76
98
@reify
77
99
def edit_path (self ):
Original file line number Diff line number Diff line change @@ -91,6 +91,11 @@ a:hover {
91
91
text-decoration : none;
92
92
}
93
93
94
+ .lesson-content {
95
+ /* So elements inside with `position: absolute` are positioned absolutely just inside this div. */
96
+ position : relative;
97
+ }
98
+
94
99
95
100
.lesson-header {
96
101
line-height : 1.5rem ;
Original file line number Diff line number Diff line change 29
29
</ header >
30
30
{% endif %}
31
31
32
- {% block lesson_content %}
33
- {{ content }}
34
- {% endblock %}
32
+ < div class ="lesson-content ">
33
+ {% block lesson_content %}
34
+ {{ content }}
35
+ {% endblock %}
36
+ </ div >
35
37
36
38
{% if (prv is defined and prv != None) or (nxt is defined and nxt != None) %}
37
39
< hr class ="lesson-end ">
Original file line number Diff line number Diff line change @@ -13,3 +13,4 @@ pygments
13
13
python-dateutil
14
14
traitlets
15
15
werkzeug
16
+ cssutils
You can’t perform that action at this time.
0 commit comments