Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
problem-builder
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
OpenEdx
problem-builder
Commits
85b2708d
Commit
85b2708d
authored
Mar 09, 2014
by
Xavier Antoviaque
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add CodeMirror XML editor to Studio view & XML validation
parent
d780724a
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
38 additions
and
13 deletions
+38
-13
mentoring/mentoring.py
+18
-3
mentoring/public/css/mentoring_edit.css
+3
-0
mentoring/public/js/mentoring_edit.js
+11
-7
mentoring/templates/html/mentoring_edit.html
+6
-3
No files found.
mentoring/mentoring.py
View file @
85b2708d
...
@@ -26,6 +26,9 @@
...
@@ -26,6 +26,9 @@
import
logging
import
logging
import
uuid
import
uuid
from
lxml
import
etree
from
StringIO
import
StringIO
from
xblock.core
import
XBlock
from
xblock.core
import
XBlock
from
xblock.fields
import
Boolean
,
Scope
,
String
from
xblock.fields
import
Boolean
,
Scope
,
String
from
xblock.fragment
import
Fragment
from
xblock.fragment
import
Fragment
...
@@ -166,6 +169,7 @@ class MentoringBlock(XBlockWithLightChildren):
...
@@ -166,6 +169,7 @@ class MentoringBlock(XBlockWithLightChildren):
'xml_content'
:
self
.
xml_content
or
self
.
default_xml_content
,
'xml_content'
:
self
.
xml_content
or
self
.
default_xml_content
,
}))
}))
fragment
.
add_javascript
(
load_resource
(
'public/js/mentoring_edit.js'
))
fragment
.
add_javascript
(
load_resource
(
'public/js/mentoring_edit.js'
))
fragment
.
add_css
(
load_resource
(
'public/css/mentoring_edit.css'
))
fragment
.
initialize_js
(
'MentoringEditBlock'
)
fragment
.
initialize_js
(
'MentoringEditBlock'
)
...
@@ -175,11 +179,22 @@ class MentoringBlock(XBlockWithLightChildren):
...
@@ -175,11 +179,22 @@ class MentoringBlock(XBlockWithLightChildren):
def
studio_submit
(
self
,
submissions
,
suffix
=
''
):
def
studio_submit
(
self
,
submissions
,
suffix
=
''
):
log
.
info
(
u'Received studio submissions: {}'
.
format
(
submissions
))
log
.
info
(
u'Received studio submissions: {}'
.
format
(
submissions
))
# TODO-MRQ: Add XML validation
xml_content
=
submissions
[
'xml_content'
]
self
.
xml_content
=
submissions
[
'xml_content'
]
try
:
return
{
etree
.
parse
(
StringIO
(
xml_content
))
except
etree
.
XMLSyntaxError
as
e
:
response
=
{
'result'
:
'error'
,
'message'
:
e
.
message
}
else
:
response
=
{
'result'
:
'success'
,
'result'
:
'success'
,
}
}
self
.
xml_content
=
xml_content
log
.
debug
(
u'Response from Studio: {}'
.
format
(
response
))
return
response
@property
@property
def
default_xml_content
(
self
):
def
default_xml_content
(
self
):
...
...
mentoring/public/css/mentoring_edit.css
0 → 100644
View file @
85b2708d
.mentoring-edit
.module-actions
.error-message
{
color
:
red
;
}
mentoring/public/js/mentoring_edit.js
View file @
85b2708d
function
MentoringEditBlock
(
runtime
,
element
)
{
function
MentoringEditBlock
(
runtime
,
element
)
{
var
xml
_editor_t
extarea
=
$
(
'.block-xml-editor'
,
element
),
var
xml
EditorT
extarea
=
$
(
'.block-xml-editor'
,
element
),
xml
_editor
=
CodeMirror
.
fromTextArea
(
xml_editor_t
extarea
[
0
],
{
mode
:
'xml'
});
xml
Editor
=
CodeMirror
.
fromTextArea
(
xmlEditorT
extarea
[
0
],
{
mode
:
'xml'
});
$
(
'.save-button'
).
bind
(
'click'
,
function
()
{
$
(
'.save-button'
).
bind
(
'click'
,
function
()
{
var
data
=
{
var
handlerUrl
=
runtime
.
handlerUrl
(
element
,
'studio_submit'
),
'xml_content'
:
xml_editor
.
getValue
(),
data
=
{
'xml_content'
:
xmlEditor
.
getValue
(),
};
};
var
handlerUrl
=
runtime
.
handlerUrl
(
element
,
'studio_submit'
);
$
(
'.error-message'
,
element
).
html
(
);
$
.
post
(
handlerUrl
,
JSON
.
stringify
(
data
)).
complete
(
function
(
)
{
$
.
post
(
handlerUrl
,
JSON
.
stringify
(
data
)).
done
(
function
(
response
)
{
// TODO-MRQ: Error handling
if
(
response
.
result
===
'success'
)
{
window
.
location
.
reload
(
false
);
window
.
location
.
reload
(
false
);
}
else
{
$
(
'.error-message'
,
element
).
html
(
'Error: '
+
response
.
message
);
}
});
});
});
});
}
}
mentoring/templates/html/mentoring_edit.html
View file @
85b2708d
<!-- TODO: Replace by default edit view once available in Studio -->
<!-- TODO: Replace by default edit view once available in Studio -->
<div
class=
"wrapper-comp-settings is-active"
id=
"settings-tab"
>
<div
class=
"mentoring-edit"
>
<div
class=
"wrapper-comp-settings is-active"
id=
"settings-tab"
>
<script
id=
"metadata-editor-tpl"
type=
"text/template"
>
// JS crashes when empty //
</script>
<script
id=
"metadata-editor-tpl"
type=
"text/template"
>
// JS crashes when empty //
</script>
<textarea
class=
"block-xml-editor"
>
{{ xml_content }}
</textarea>
<textarea
class=
"block-xml-editor"
>
{{ xml_content }}
</textarea>
</div>
</div>
<div
class=
"row module-actions"
>
<div
class=
"row module-actions"
>
<a
href=
"#"
class=
"save-button action-primary action"
>
Save
</a>
<a
href=
"#"
class=
"save-button action-primary action"
>
Save
</a>
<a
href=
"#"
class=
"cancel-button action-secondary action"
>
Cancel
</a>
<a
href=
"#"
class=
"cancel-button action-secondary action"
>
Cancel
</a>
<span
class=
"error-message"
></span>
</div>
</div>
</div>
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