Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
f221f010
Commit
f221f010
authored
Oct 01, 2014
by
Anton Stupak
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4930 from e-kolpakov/master
Fix for TNL-147
parents
e9529c42
dcc82e1a
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
139 additions
and
28 deletions
+139
-28
AUTHORS
+1
-0
cms/djangoapps/contentstore/features/html-editor.feature
+8
-0
cms/djangoapps/contentstore/features/html-editor.py
+100
-28
common/lib/xmodule/xmodule/js/src/html/edit.coffee
+26
-0
common/static/css/tinymce-studio-content.css
+4
-0
No files found.
AUTHORS
View file @
f221f010
...
...
@@ -176,3 +176,4 @@ Jonathan Piacenti <kelketek@gmail.com>
Alasdair Swan <aswan@edx.org>
Paul Medlock-Walton <paulmw@mit.edu>
Henry Tareque <henry.tareque@gmail.com>
Eugeny Kolpakov <eugeny.kolpakov@gmail.com>
cms/djangoapps/contentstore/features/html-editor.feature
View file @
f221f010
...
...
@@ -105,6 +105,14 @@ Feature: CMS.HTML Editor
<li>zzzz<ol>
"""
Scenario
:
Font selection dropdown contains Default font and tinyMCE builtin fonts
Given
I have created a Blank HTML Page
When
I edit the page
And
I click font selection dropdown
Then
I should see a list of available fonts
And
"Default"
option
sets
"'Open
Sans',
Verdana,
Arial,
Helvetica,
sans-serif"
font
family
And
all standard tinyMCE fonts should be available
# Skipping in master due to brittleness JZ 05/22/2014
# Scenario: Can switch from Visual Editor to Raw
# Given I have created a Blank HTML Page
...
...
cms/djangoapps/contentstore/features/html-editor.py
View file @
f221f010
# disable missing docstring
# pylint: disable=C0111
from
collections
import
OrderedDict
from
lettuce
import
world
,
step
from
nose.tools
import
assert_in
,
assert_false
,
assert_true
,
assert_equal
# pylint: disable=no-name-in-module
from
common
import
type_in_codemirror
,
get_codemirror_value
...
...
@@ -112,34 +114,6 @@ def verify_code_editor_text(step, text):
)
def
use_plugin
(
button_class
,
action
):
# Click on plugin button
world
.
css_click
(
button_class
)
perform_action_in_plugin
(
action
)
def
use_code_editor
(
action
):
# Click on plugin button
buttons
=
world
.
css_find
(
'div.mce-widget>button'
)
code_editor
=
[
button
for
button
in
buttons
if
button
.
text
==
'HTML'
]
assert_equal
(
1
,
len
(
code_editor
))
code_editor
[
0
]
.
click
()
perform_action_in_plugin
(
action
)
def
perform_action_in_plugin
(
action
):
# Wait for the plugin window to open.
world
.
wait_for_visible
(
'.mce-window'
)
# Trigger the action
action
()
# Click OK
world
.
css_click
(
'.mce-primary'
)
@step
(
'I save the page$'
)
def
i_click_on_save
(
step
):
world
.
save_component
()
...
...
@@ -238,3 +212,101 @@ def type_in_raw_editor(step, text):
def
select_editor
(
step
,
editor
):
world
.
edit_component_and_select_settings
()
world
.
browser
.
select
(
'Editor'
,
editor
)
@step
(
'I click font selection dropdown'
)
def
click_font_dropdown
(
step
):
dropdowns
=
[
drop
for
drop
in
world
.
css_find
(
'.mce-listbox'
)
if
drop
.
text
==
'Font Family'
]
assert_equal
(
len
(
dropdowns
),
1
)
dropdowns
[
0
]
.
click
()
@step
(
'I should see a list of available fonts'
)
def
font_selector_dropdown_is_shown
(
step
):
font_panel
=
get_fonts_list_panel
(
world
)
expected_fonts
=
list
(
CUSTOM_FONTS
.
keys
())
+
list
(
TINYMCE_FONTS
.
keys
())
actual_fonts
=
[
font
.
strip
()
for
font
in
font_panel
.
text
.
split
(
'
\n
'
)]
assert_equal
(
actual_fonts
,
expected_fonts
)
@step
(
'"Default" option sets "(.*)" font family'
)
def
default_options_sets_expected_font_family
(
step
,
expected_font_family
):
fonts
=
get_available_fonts
(
get_fonts_list_panel
(
world
))
assert_equal
(
fonts
.
get
(
"Default"
,
None
),
expected_font_family
)
@step
(
'all standard tinyMCE fonts should be available'
)
def
check_standard_tinyMCE_fonts
(
step
):
fonts
=
get_available_fonts
(
get_fonts_list_panel
(
world
))
for
label
,
expected_font
in
TINYMCE_FONTS
.
items
():
assert_equal
(
fonts
.
get
(
label
,
None
),
expected_font
)
TINYMCE_FONTS
=
OrderedDict
([
(
"Andale Mono"
,
"'andale mono', times"
),
(
"Arial"
,
"arial, helvetica, sans-serif"
),
(
"Arial Black"
,
"'arial black', 'avant garde'"
),
(
"Book Antiqua"
,
"'book antiqua', palatino"
),
(
"Comic Sans MS"
,
"'comic sans ms', sans-serif"
),
(
"Courier New"
,
"'courier new', courier"
),
(
"Georgia"
,
"georgia, palatino"
),
(
"Helvetica"
,
"helvetica"
),
(
"Impact"
,
"impact, chicago"
),
(
"Symbol"
,
"symbol"
),
(
"Tahoma"
,
"tahoma, arial, helvetica, sans-serif"
),
(
"Terminal"
,
"terminal, monaco"
),
(
"Times New Roman"
,
"'times new roman', times"
),
(
"Trebuchet MS"
,
"'trebuchet ms', geneva"
),
(
"Verdana"
,
"verdana, geneva"
),
# tinyMCE does not set font-family on dropdown span for these two fonts
(
"Webdings"
,
""
),
# webdings
(
"Wingdings"
,
""
),
# wingdings, 'zapf dingbats'
])
CUSTOM_FONTS
=
OrderedDict
([
(
'Default'
,
"'Open Sans', Verdana, Arial, Helvetica, sans-serif"
),
])
def
use_plugin
(
button_class
,
action
):
# Click on plugin button
world
.
css_click
(
button_class
)
perform_action_in_plugin
(
action
)
def
use_code_editor
(
action
):
# Click on plugin button
buttons
=
world
.
css_find
(
'div.mce-widget>button'
)
code_editor
=
[
button
for
button
in
buttons
if
button
.
text
==
'HTML'
]
assert_equal
(
1
,
len
(
code_editor
))
code_editor
[
0
]
.
click
()
perform_action_in_plugin
(
action
)
def
perform_action_in_plugin
(
action
):
# Wait for the plugin window to open.
world
.
wait_for_visible
(
'.mce-window'
)
# Trigger the action
action
()
# Click OK
world
.
css_click
(
'.mce-primary'
)
def
get_fonts_list_panel
(
world
):
menus
=
world
.
css_find
(
'.mce-menu'
)
return
menus
[
0
]
def
get_available_fonts
(
font_panel
):
font_spans
=
font_panel
.
find_by_css
(
'.mce-text'
)
return
{
font_span
.
text
:
get_font_family
(
font_span
)
for
font_span
in
font_spans
}
def
get_font_family
(
font_span
):
# get_attribute('style').replace('font-family: ', '').replace(';', '') is equivalent to
# value_of_css_property('font-family'). However, for reason unknown value_of_css_property fails tests in CI
# while works as expected in local development environment
return
font_span
.
_element
.
get_attribute
(
'style'
)
.
replace
(
'font-family: '
,
''
)
.
replace
(
';'
,
''
)
common/lib/xmodule/xmodule/js/src/html/edit.coffee
View file @
f221f010
class
@
HTMLEditingDescriptor
# custom fonts are prepended to font selection dropdown
CUSTOM_FONTS
=
"Default='Open Sans', Verdana, Arial, Helvetica, sans-serif;"
# list of standard tinyMCE fonts: http://www.tinymce.com/wiki.php/Configuration:font_formats
STANDARD_FONTS
=
"Andale Mono=andale mono,times;"
+
"Arial=arial,helvetica,sans-serif;"
+
"Arial Black=arial black,avant garde;"
+
"Book Antiqua=book antiqua,palatino;"
+
"Comic Sans MS=comic sans ms,sans-serif;"
+
"Courier New=courier new,courier;"
+
"Georgia=georgia,palatino;"
+
"Helvetica=helvetica;"
+
"Impact=impact,chicago;"
+
"Symbol=symbol;"
+
"Tahoma=tahoma,arial,helvetica,sans-serif;"
+
"Terminal=terminal,monaco;"
+
"Times New Roman=times new roman,times;"
+
"Trebuchet MS=trebuchet ms,geneva;"
+
"Verdana=verdana,geneva;"
+
"Webdings=webdings;"
+
"Wingdings=wingdings,zapf dingbats"
_getFonts
=
()
->
CUSTOM_FONTS
+
STANDARD_FONTS
constructor
:
(
element
)
->
@
element
=
element
@
base_asset_url
=
@
element
.
find
(
"#editor-tab"
).
data
(
'base-asset-url'
)
...
...
@@ -35,6 +60,7 @@ class @HTMLEditingDescriptor
tinyMCE
.
suffix
=
".min"
@
tiny_mce_textarea
=
$
(
".tiny-mce"
,
@
element
).
tinymce
({
script_url
:
"
#{
baseUrl
}
/js/vendor/tinymce/js/tinymce/tinymce.full.min.js"
,
font_formats
:
_getFonts
(),
theme
:
"modern"
,
skin
:
'studio-tmce4'
,
schema
:
"html5"
,
...
...
common/static/css/tinymce-studio-content.css
View file @
f221f010
...
...
@@ -2,6 +2,10 @@
.mce-content-body
{
padding
:
10px
;
background-color
:
#fff
;
/* keep font-family in sync with CUSTOM_FONTS constant in Html editor XModule
* (edx-platform/common/lib/xmodule/xmodule/js/src/html/edit.coffee)
* and with acceptance tests in cms/djangoapps/contentstore/features/html-editor.feature
*/
font-family
:
'Open Sans'
,
Verdana
,
Arial
,
Helvetica
,
sans-serif
;
font-size
:
16px
;
line-height
:
1.6
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment