Project Edit: Node types editing embedded
This commit is contained in:
parent
941ec94313
commit
06dd24bcf9
@ -603,7 +603,8 @@ def edit_node_type(project_url, node_type_name):
|
|||||||
form.form_schema.data = json.dumps(form_schema, indent=4)
|
form.form_schema.data = json.dumps(form_schema, indent=4)
|
||||||
form.dyn_schema.data = json.dumps(dyn_schema, indent=4)
|
form.dyn_schema.data = json.dumps(dyn_schema, indent=4)
|
||||||
form.permissions.data = json.dumps(permissions, indent=4)
|
form.permissions.data = json.dumps(permissions, indent=4)
|
||||||
return render_template('projects/edit_node_type.html',
|
|
||||||
|
return render_template('projects/edit_node_type_embed.html',
|
||||||
form=form,
|
form=form,
|
||||||
project=project,
|
project=project,
|
||||||
api=api,
|
api=api,
|
||||||
|
@ -160,10 +160,6 @@ ul.list-generic
|
|||||||
margin: 0
|
margin: 0
|
||||||
padding: 0
|
padding: 0
|
||||||
list-style: none
|
list-style: none
|
||||||
width: 350px
|
|
||||||
|
|
||||||
+media-xs
|
|
||||||
width: 100%
|
|
||||||
|
|
||||||
> li
|
> li
|
||||||
padding: 5px 0
|
padding: 5px 0
|
||||||
|
@ -80,22 +80,20 @@ ul.project-edit-tools
|
|||||||
|
|
||||||
| {% endfor %}
|
| {% endfor %}
|
||||||
|
|
||||||
|
ul.project-edit-tools.bottom
|
||||||
|
li.button-cancel
|
||||||
|
a#item_cancel.project-mode-edit(
|
||||||
|
href="{{url_for('projects.view', project_url=project.url, _external=True)}}",
|
||||||
|
title="Cancel changes")
|
||||||
|
i.button-cancel-icon.pi-back
|
||||||
|
| Go to Project
|
||||||
|
|
||||||
ul.project-edit-tools.bottom
|
li.button-save
|
||||||
li.button-cancel
|
a#item_save.project-mode-edit(
|
||||||
a#item_cancel.project-mode-edit(
|
href="#",
|
||||||
href="{{url_for('projects.view', project_url=project.url, _external=True)}}",
|
title="Save changes")
|
||||||
title="Cancel changes")
|
i.button-save-icon.pi-check
|
||||||
i.button-cancel-icon.pi-back
|
| Save Changes
|
||||||
| Go to Project
|
|
||||||
|
|
||||||
li.button-save
|
|
||||||
a#item_save.project-mode-edit(
|
|
||||||
href="#",
|
|
||||||
title="Save changes")
|
|
||||||
i.button-save-icon.pi-check
|
|
||||||
| Save Changes
|
|
||||||
|
|
||||||
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#project-side-container
|
#project-side-container
|
||||||
#project_sidebar
|
#project_sidebar
|
||||||
ul.project-tabs
|
ul.project-tabs
|
||||||
li.tabs-thumbnail(
|
li.tabs-thumbnail.active(
|
||||||
title="About",
|
title="About",
|
||||||
data-toggle="tooltip",
|
data-toggle="tooltip",
|
||||||
data-placement="left",
|
data-placement="left",
|
||||||
@ -83,9 +83,9 @@
|
|||||||
script.
|
script.
|
||||||
/* UI Stuff */
|
/* UI Stuff */
|
||||||
$(window).on("load resize",function(){
|
$(window).on("load resize",function(){
|
||||||
$('#project-container').css('height', $(window).height());
|
containerResizeY($(window).height());
|
||||||
$('#project_context-header').css('width', $('#project_context-container').width());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
| {% block footer_navigation %}
|
| {% block footer_navigation %}
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
| {% extends 'layout.html' %}
|
|
||||||
|
|
||||||
| {% set title = 'edit_node_types' %}
|
|
||||||
|
|
||||||
| {% block page_title %}Project {{ project.name }}{% endblock %}
|
|
||||||
|
|
||||||
| {% block body %}
|
|
||||||
.container.box
|
|
||||||
form(
|
|
||||||
method='POST',
|
|
||||||
action="{{url_for('projects.edit_node_type', project_url=project.url, node_type_name=node_type['name'])}}")
|
|
||||||
|
|
||||||
#blog_container.post-create
|
|
||||||
|
|
||||||
| {% with errors = errors %}
|
|
||||||
| {% if errors %}
|
|
||||||
| {% for field in errors %}
|
|
||||||
.alert.alert-danger(role='alert')
|
|
||||||
strong {{field}}
|
|
||||||
| {% for message in errors[field] %}
|
|
||||||
| {{message}}|
|
|
||||||
| {% endfor %}
|
|
||||||
| {% endfor %}
|
|
||||||
| {% endif %}
|
|
||||||
| {% endwith %}
|
|
||||||
|
|
||||||
#blog_index-sidebar
|
|
||||||
.blog_project-sidebar
|
|
||||||
input.btn.btn-default.button-create(type='submit', value="Update {{ node_type['name'] }}")
|
|
||||||
a.btn.btn-default.button-back(href="{{ url_for('projects.view', project_url=project.url) }}")
|
|
||||||
| Back to Project
|
|
||||||
|
|
||||||
#blog_post-edit-container
|
|
||||||
#blog_post-edit-title
|
|
||||||
| Edit {{ node_type['name'] }}
|
|
||||||
|
|
||||||
#blog_post-edit-form
|
|
||||||
| {% for field in form %}
|
|
||||||
| {% if field.name == 'csrf_token' %}
|
|
||||||
| {{ field }}
|
|
||||||
| {% else %}
|
|
||||||
| {% if field.type == 'HiddenField' %}
|
|
||||||
| {{ field }}
|
|
||||||
| {% else %}
|
|
||||||
.form-group(class="{{field.name}}{% if field.errors %} error{% endif %}")
|
|
||||||
| {{ field.label }}
|
|
||||||
| {{ field(class='form-control') }}
|
|
||||||
|
|
||||||
| {% if field.errors %}
|
|
||||||
ul.error
|
|
||||||
| {% for error in field.errors %}
|
|
||||||
li {{ error }}
|
|
||||||
| {% endfor %}
|
|
||||||
| {% endif %}
|
|
||||||
|
|
||||||
| {% endif %}
|
|
||||||
| {% endif %}
|
|
||||||
| {% endfor %}
|
|
||||||
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
| {% block footer_scripts%}
|
|
||||||
script(src="https://cdn.jsdelivr.net/g/ace@1.2.3(noconflict/ace.js+noconflict/mode-json.js)")
|
|
||||||
|
|
||||||
script.
|
|
||||||
var dynSchemaEditorContainer = $("<div>", {id: "dyn_schema_editor"});
|
|
||||||
$(".form-group.dyn_schema").before(dynSchemaEditorContainer);
|
|
||||||
var dynSchemaEditor = ace.edit("dyn_schema_editor");
|
|
||||||
dynSchemaEditor.getSession().setValue($("#dyn_schema").val());
|
|
||||||
|
|
||||||
var formSchemaEditorContainer = $("<div>", {id: "form_schema_editor"});
|
|
||||||
$(".form-group.form_schema").before(formSchemaEditorContainer);
|
|
||||||
var formSchemaEditor = ace.edit("form_schema_editor");
|
|
||||||
formSchemaEditor.getSession().setValue($("#form_schema").val());
|
|
||||||
|
|
||||||
var permissionsEditorContainer = $("<div>", {id: "permissions_editor"});
|
|
||||||
$(".form-group.permissions").before(permissionsEditorContainer);
|
|
||||||
var permissionsEditor = ace.edit("permissions_editor");
|
|
||||||
permissionsEditor.getSession().setValue($("#permissions").val());
|
|
||||||
|
|
||||||
$("form").submit(function(e) {
|
|
||||||
$("#dyn_schema").val(dynSchemaEditor.getSession().getValue());
|
|
||||||
$("#form_schema").val(formSchemaEditor.getSession().getValue());
|
|
||||||
$("#permissions").val(permissionsEditor.getSession().getValue());
|
|
||||||
});
|
|
||||||
| {% endblock %}
|
|
||||||
|
|
||||||
|
|
94
src/templates/projects/edit_node_type_embed.pug
Normal file
94
src/templates/projects/edit_node_type_embed.pug
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
form(
|
||||||
|
id="node-type-form",
|
||||||
|
method='POST',
|
||||||
|
action="{{url_for('projects.edit_node_type', project_url=project.url, node_type_name=node_type['name'])}}")
|
||||||
|
|
||||||
|
| {% with errors = errors %}
|
||||||
|
| {% if errors %}
|
||||||
|
| {% for field in errors %}
|
||||||
|
.alert.alert-danger(role='alert')
|
||||||
|
strong {{field}}
|
||||||
|
| {% for message in errors[field] %}
|
||||||
|
| {{message}}|
|
||||||
|
| {% endfor %}
|
||||||
|
| {% endfor %}
|
||||||
|
| {% endif %}
|
||||||
|
| {% endwith %}
|
||||||
|
|
||||||
|
.row
|
||||||
|
.col-md-9
|
||||||
|
h3 Editing: {{ node_type['name'] }}
|
||||||
|
.col-md-3
|
||||||
|
button.js-form-save.btn.btn-success.pull-right(style="margin-top: 15px;")
|
||||||
|
| Save Changes
|
||||||
|
|
||||||
|
.row
|
||||||
|
.col-md-12
|
||||||
|
| {% for field in form %}
|
||||||
|
| {% if field.name == 'csrf_token' %}
|
||||||
|
| {{ field }}
|
||||||
|
| {% else %}
|
||||||
|
| {% if field.type == 'HiddenField' %}
|
||||||
|
| {{ field }}
|
||||||
|
| {% else %}
|
||||||
|
.form-group(class="{{field.name}}{% if field.errors %} error{% endif %}")
|
||||||
|
| {{ field.label }}
|
||||||
|
| {{ field(class='form-control') }}
|
||||||
|
|
||||||
|
| {% if field.errors %}
|
||||||
|
ul.error
|
||||||
|
| {% for error in field.errors %}
|
||||||
|
li {{ error }}
|
||||||
|
| {% endfor %}
|
||||||
|
| {% endif %}
|
||||||
|
|
||||||
|
| {% endif %}
|
||||||
|
| {% endif %}
|
||||||
|
| {% endfor %}
|
||||||
|
|
||||||
|
button.js-form-save.btn.btn-success.pull-right
|
||||||
|
| Save Changes
|
||||||
|
|
||||||
|
|
||||||
|
script.
|
||||||
|
$(document).ready(function(){
|
||||||
|
var dynSchemaEditorContainer = $("<div>", {id: "dyn_schema_editor"});
|
||||||
|
$(".form-group.dyn_schema").before(dynSchemaEditorContainer);
|
||||||
|
var dynSchemaEditor = ace.edit("dyn_schema_editor");
|
||||||
|
dynSchemaEditor.getSession().setValue($("#dyn_schema").val());
|
||||||
|
|
||||||
|
var formSchemaEditorContainer = $("<div>", {id: "form_schema_editor"});
|
||||||
|
$(".form-group.form_schema").before(formSchemaEditorContainer);
|
||||||
|
var formSchemaEditor = ace.edit("form_schema_editor");
|
||||||
|
formSchemaEditor.getSession().setValue($("#form_schema").val());
|
||||||
|
|
||||||
|
var permissionsEditorContainer = $("<div>", {id: "permissions_editor"});
|
||||||
|
$(".form-group.permissions").before(permissionsEditorContainer);
|
||||||
|
var permissionsEditor = ace.edit("permissions_editor");
|
||||||
|
permissionsEditor.getSession().setValue($("#permissions").val());
|
||||||
|
|
||||||
|
|
||||||
|
$('.js-form-save').on('click', function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var $node_type_form = $('#node-type-form');
|
||||||
|
var url = $node_type_form.attr('action');
|
||||||
|
|
||||||
|
// Update the hidden textareas by reading content of the editor
|
||||||
|
// before serializing the form
|
||||||
|
$("#dyn_schema").val(dynSchemaEditor.getSession().getValue());
|
||||||
|
$("#form_schema").val(formSchemaEditor.getSession().getValue());
|
||||||
|
$("#permissions").val(permissionsEditor.getSession().getValue());
|
||||||
|
|
||||||
|
var data = $node_type_form.serialize();
|
||||||
|
|
||||||
|
$.post(url, data, function(datata) {
|
||||||
|
})
|
||||||
|
.done(function(){
|
||||||
|
toastr.success("Node Type: {{ node_type['name'] | undertitle }}", "Saved")
|
||||||
|
})
|
||||||
|
.fail(function(){
|
||||||
|
toastr.error("Node Type: {{ node_type['name'] | undertitle }}", "Could not save")
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
@ -10,22 +10,49 @@ span#project-edit-title
|
|||||||
| {% block project_context %}
|
| {% block project_context %}
|
||||||
#node-edit-container
|
#node-edit-container
|
||||||
div(id="node-edit-form")
|
div(id="node-edit-form")
|
||||||
h3 Node Types
|
.row
|
||||||
p.
|
.col-md-9
|
||||||
Nodes are all the items that can be found in a project.
|
p.
|
||||||
Everything is a node: a file, a folder, a comment. They are
|
Nodes are all the items that can be found in a project.
|
||||||
defined with custom properties and properly presented to you.
|
Everything is a node: a file, a folder, a comment. They are
|
||||||
When we add support for new node types in the future, it means we
|
defined with custom properties to be properly displayed.
|
||||||
allow the creation of new items (such as textures).
|
.row
|
||||||
|
.col-md-4.col-sm-6
|
||||||
|
h3 Node Types
|
||||||
|
|
||||||
|
| {% if current_user.has_cap('edit-project-node-types') %}
|
||||||
|
ul.list-generic
|
||||||
|
| {% for node_type in project.node_types %}
|
||||||
|
li
|
||||||
|
a.js-item-open(
|
||||||
|
href="{{ url_for('projects.edit_node_type', project_url=project.url, node_type_name=node_type.name) }}",
|
||||||
|
data-url="{{ url_for('projects.edit_node_type', project_url=project.url, node_type_name=node_type.name) }}")
|
||||||
|
| {{ node_type.name | undertitle }}
|
||||||
|
.actions
|
||||||
|
span {{ node_type.name }}
|
||||||
|
| {% endfor %}
|
||||||
|
| {% endif %}
|
||||||
|
|
||||||
|
.col-md-8.col-sm-6
|
||||||
|
#node-edit-embed
|
||||||
|
|
||||||
| {% if current_user.has_cap('edit-project-node-types') %}
|
|
||||||
ul.list-generic
|
|
||||||
| {% for node_type in project.node_types %}
|
|
||||||
li
|
|
||||||
a(href="{{ url_for('projects.edit_node_type', project_url=project.url, node_type_name=node_type.name) }}")
|
|
||||||
| {{ node_type.name | undertitle }}
|
|
||||||
.actions
|
|
||||||
span {{ node_type.name }}
|
|
||||||
| {% endfor %}
|
|
||||||
| {% endif %}
|
|
||||||
| {% endblock %}
|
| {% endblock %}
|
||||||
|
|
||||||
|
| {% block footer_scripts %}
|
||||||
|
script(src="//cdn.jsdelivr.net/g/ace@1.2.3(noconflict/ace.js+noconflict/mode-json.js)")
|
||||||
|
script.
|
||||||
|
|
||||||
|
$('.js-item-open').on('click', function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
|
||||||
|
var item_url = $(this).data('url');
|
||||||
|
|
||||||
|
$.get(item_url, function(item_data) {
|
||||||
|
$('#node-edit-embed').html(item_data);
|
||||||
|
})
|
||||||
|
.fail(function(xhr){
|
||||||
|
toastr.error('Failed to open<br/>' + xhr);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
| {% endblock footer_scripts %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user