forms: added building of the course name, update selectors with new course ids

This commit is contained in:
Benjamin Dauvergne 2012-12-06 16:11:43 +01:00
parent 7e5a94654f
commit 88eac06e78
5 changed files with 86 additions and 44 deletions

View File

@ -14,37 +14,4 @@
<button class="btn btn-primary">Créer</a>
</div>
</form>
<script>
$(function () {
function install_form() {
$('#id_subscription_policy').on('change', function() {
if ($(this).val() == 'password') {
$('#div_id_password').parent().show();
} else {
$('#div_id_password').parent().hide();
}
});
$('#create-course form').ajaxForm({
dataType: 'json',
success: function (content, statusText, xhr, form) {
if (content.success) {
alert('Cours ' + content.course_id + ' créé.');
$('#create-course').modal('hide');
var option = $('<option value="' + content.course_id + '">' + content.description + '</option>');
var select = $('.type-owner select');
option.appendTo(select);
select.val(content.course_id);
select.trigger('change');
} else {
var newform = $(content.html);
$('#create-course form').replaceWith($('form', newform));
window.install_django_miller_columns();
install_form();
}
}
});
}
install_form();
});
</script>
</div>

View File

@ -14,15 +14,24 @@
<label for="course-type-owner" class="control-label">Mes cours</label>
<div class="controls">
{% include '_courses_selector.html' with response=courses.user_courses only %}
<a href="#create-course" role="button" class="btn" data-toggle="modal">Créer un nouveau cours</a>
</div>
</div>
<style>
.type-ue .controls button {
height: auto;
}
.type-ue .controls.input-append {
display: block;
}
</style>
{% if courses.ue_courses %}
<div class="control-group">
<div class="control-group type-ue">
<label for="course-type-ue" class="control-label">Cours proches de l'UE «&nbsp;{{ courses.ue }}&nbsp;»</label>
<div class="controls">
<div class="controls input-append">
{% include '_courses_selector.html' with response=courses.ue_courses only %}
<button data-target="#create-course" type="button" class="add-on btn" data-toggle="modal">Créer un nouveau cours</button>
</div>
</div>
{% endif %}
@ -57,7 +66,14 @@
var url = '../../course-list/';
url = url + '?ue=' + json.code + '#course-selector';
$('#course-selector').load(url);
$('#course-selector').load(url, function () {
var val = $('#id_document_copyrights-course_name').val();
$('.courses-selector').val(val);
$('.courses-selector').on('change', function (){
$('.courses-selector').not(this).val('');
$('#id_document_copyrights-course_name').val($(this).val());
});
});
});
})

View File

@ -47,10 +47,67 @@
$('#mycourse-block').hide('slow');
}
}
function update_course_name() {
var entity_id = $('#id_entity').val();
var td_group = $('#id_td_group').val();
var $name = $('#id_description');
var delegate = $('#create-course .miller-columns').millercolumns('delegate');
var item = delegate.cache[entity_id];
var $msg = $('#create-course .future-name');
while (item && item.type != 'diplome') {
item = delegate.cache[item.parent_id];
}
console.log(item);
if (item == undefined) {
$name.val('');
} else {
var name = item.code.toUpperCase()+'_'+'{{course_year}}'+'_'+'{{user.username}}';
if (td_group) {
name += '_' + td_group;
}
$name.val(name);
}
}
$('#id_document_copyrights-licence').on('change', function () {
toggle_mycourse_panel();
});
toggle_mycourse_panel();
function update_course() {
var val = $('#id_document_copyrights-course_name').val();
$('.courses-selector').val(val);
};
function install_form() {
$('#id_entity').on('change', update_course_name);
$('#id_td_group').on('keyup', update_course_name);
$('#id_subscription_policy').on('change', function() {
if ($(this).val() == 'password') {
$('#div_id_password').parent().show();
} else {
$('#div_id_password').parent().hide();
}
});
$('#create-course form').ajaxForm({
dataType: 'json',
success: function (content, statusText, xhr, form) {
if (content.success) {
alert('Cours ' + content.course_id + ' créé.');
$('#create-course').modal('hide');
$('#div_id_document_copyrights-ue .miller-columns').millercolumns(
'setItem', ''+content.entity_pk);
$('#id_document_copyrights-course_name').val(content.course_id);
$('#id_document_copyrights-ue').trigger('change');
} else {
var newform = $(content.html);
$('#create-course form').replaceWith($('form', newform));
window.install_django_miller_columns();
install_form();
}
}
});
update_course_name();
}
install_form();
update_course();
})
})(window.jQuery)
</script>

View File

@ -39,7 +39,12 @@ def create_course(request):
logging.info('user %s created course %s',
request.user.username.encode('utf-8'),
course_id.encode('utf-8'))
data = { 'success': 1, 'course_id': course_id, 'description': form.cleaned_data['description'] }
data = {
'success': 1,
'entity_pk': form.cleaned_data['entity'].pk,
'course_id': course_id,
'description': form.cleaned_data['description']
}
else:
logging.error('user %s failed to create course %s: %s',
request.user.username.encode('utf-8'),

View File

@ -1,4 +1,5 @@
from django.contrib.auth.decorators import login_required
from django.conf import settings
from polynum.request import views as request_views
@ -17,14 +18,10 @@ class RequestWizardView(request_views.RequestWizardView):
def get_context_data(self, form, **kwargs):
context = super(RequestWizardView, self).get_context_data(form=form, **kwargs)
polynum_request = self.get_object()
diplome_entity = polynum_request.entity
if diplome_entity:
possible_diplome_entity = diplome_entity.parents(True).filter(entity_type__name='etape')
if possible_diplome_entity:
diplome_entity = possible_diplome_entity[0]
context['create_course_form'] = forms.CreateCourseForm(request=self.request,
initial={'entity': diplome_entity})
initial={'entity': polynum_request.entity})
context['courses'] = views.courses_ctx(self.request, polynum_request)
context['course_year'] = settings.POLYNUM_BB_COURSE_YEAR
return context
request_wizard_step = login_required(RequestWizardView.as_view(named_new_request_forms,