--- a/src/ldt/ldt/ldt_utils/forms.py Thu Nov 10 12:59:41 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/forms.py Tue Nov 22 17:04:12 2011 +0100
@@ -10,7 +10,7 @@
flatten = forms.BooleanField(required=False, initial=True)
class LdtAddForm(forms.ModelForm):
- title = forms.CharField()
+ title = forms.CharField(required=True)
contents = forms.ModelMultipleChoiceField(Content.objects.all()) #@UndefinedVariable
description = forms.CharField(widget=forms.Textarea, required=False)
# owner = forms.ModelChoiceField(Author.objects.all())
--- a/src/ldt/ldt/ldt_utils/models.py Thu Nov 10 12:59:41 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py Tue Nov 22 17:04:12 2011 +0100
@@ -384,22 +384,31 @@
return False
def save(self):
- doc = lxml.etree.fromstring(self.ldt)
- self.contents.clear()
- medias = doc.xpath('/iri/medias/media')
-
- description = self.get_description(doc)
- new_desc = clean_description(description)
-
- if new_desc:
- desc_node = doc.xpath('/iri/project')[0]
- desc_node.set('abstract', new_desc)
- self.ldt = lxml.etree.tostring(doc, pretty_print=True)
-
- for media in medias:
- iri_id = media.get('id')
- c = Content.objects.get(iri_id=iri_id)
- self.contents.add(c)
+ if self.ldt:
+ doc = lxml.etree.fromstring(self.ldt)
+ new_contents = []
+ contents = doc.xpath("/iri/medias/media")
+ for elem in contents:
+ id = elem.get("id")
+ new_contents.append(id)
+
+ for c in self.contents.all():
+ if not c.iri_id in new_contents:
+ self.contents.remove(c)
+
+ contents_id = [c.id for c in self.contents.all()]
+ for c in new_contents:
+ if c not in contents_id:
+ content = Content.objects.get(iri_id=c)
+ self.contents.add(content)
+
+ description = self.get_description(doc)
+ new_desc = clean_description(description)
+
+ if new_desc:
+ desc_node = doc.xpath('/iri/project')[0]
+ desc_node.set('abstract', new_desc)
+ self.ldt = lxml.etree.tostring(doc, pretty_print=True)
super(Project, self).save()
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Thu Nov 10 12:59:41 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Tue Nov 22 17:04:12 2011 +0100
@@ -29,11 +29,18 @@
{{ block.super }}
<script type="text/javascript">
$(document).ready(function() {
+
+ var form_status = $("input[name=form_status]").val();
+ var redirect_to = '{{ redirect_to }}';
+ if (form_status == "saved" && redirect_to) {
+ parent.location.href = redirect_to;
+ parent.$.nmTop.close();
+ }
+
$("#close_button").click(function (e) {
e.preventDefault();
parent.$.nmTop().close();
});
-
var check_all = '{% trans "check all" %}';
var uncheck_all = '{% trans "uncheck all" %}';
@@ -75,14 +82,17 @@
{% block body %}
<div id="add_contribution" class="span-12 last">
<div class="projectscontentstitle span-12 last">{% if ldt_id %}{% trans "Update your project" %}{% else %}{% trans "Create your project" %}{% endif %}</div>
- <form action="{{create_project_action}}" method="POST" {% if target_parent %}target="_parent"{% endif %}>
- {% csrf_token %}
+ <form action="{{create_project_action}}" method="POST" >
+ {% csrf_token %}
<input type="hidden" name="form_status" value="{{form_status}}" id="project_form_status" />
<label for="title">{% trans "Title" %}:</label>
{{form.title}}
+ {% for error in form.title.errors %}
+ <span class="error">{{ error }}</span>
+ {% endfor %}
<label for="description" class="projectdesc">{% trans "Description :" %}</label>
{{form.description}}
- <label>{% trans "List of contents" %}</label>
+ <label>{% trans "List of contents" %}</label>
<div class="span-12 last projectscontentsdiv" id="ldtcreatecontentslistcontainer">
<div class="span-12 last projectscontentstablediv" id="ldtcreatecontentstablediv">
<table class="projectscontentstable">
@@ -108,7 +118,6 @@
</tbody>
</table>
</div>
-
</div>
--- a/src/ldt/ldt/ldt_utils/views.py Thu Nov 10 12:59:41 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py Tue Nov 22 17:04:12 2011 +0100
@@ -387,6 +387,7 @@
@login_required
def create_ldt_view(request):
+ redirect_to = ''
if request.method == "POST" :
form = LdtAddForm(request.POST)
form_status = "none"
@@ -394,15 +395,20 @@
if form.is_valid():
user = request.user
- Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'], description=form.cleaned_data['description'])
+ project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=form.cleaned_data['contents'], description=form.cleaned_data['description'])
form_status = "saved"
- contents = []
+ is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
+ if is_gecko :
+ redirect_to = reverse('index_project_full', args=[project.ldt_id])
+ else:
+ return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
+
else:
form = LdtAddForm()
contents = Content.objects.all() #@UndefinedVariable
form_status = "none"
- return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form, 'form_status':form_status, 'create_project_action':reverse(create_ldt_view), 'language_code' : settings.LANGUAGE_CODE[2:]}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form, 'form_status':form_status, 'redirect_to': redirect_to, 'create_project_action':reverse(create_ldt_view), 'language_code' : settings.LANGUAGE_CODE[2:]}, context_instance=RequestContext(request))
def created_ldt(request):
return render_to_response('ldt/ldt_utils/save_done.html', context_instance=RequestContext(request))
@@ -754,25 +760,28 @@
@login_required
def create_project(request, iri_id):
-
+ redirect_to = ''
content = get_object_or_404(Content, iri_id=iri_id)
- contents = [ content, ]
+ contents = [ content, ]
+ form_status = "none"
+
if request.method == "POST" :
form = AddProjectForm(request.POST)
if form.is_valid():
user = request.user
project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=contents, description=form.cleaned_data['description'])
+ form_status = "saved"
# Modal window is not used with firefox
is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
if is_gecko :
- return HttpResponseRedirect(reverse('index_project_full', args=[project.ldt_id]))
+ redirect_to = reverse('index_project_full', args=[project.ldt_id])
else:
- return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
+ return HttpResponseRedirect(reverse('index_project', args=[project.ldt_id]))
else:
form = AddProjectForm()
# Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
target_parent = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
- return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'contents':contents, 'create_project_action':reverse("ldt.ldt_utils.views.create_project", args=[iri_id]), 'target_parent':target_parent}, context_instance=RequestContext(request))
+ return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'form_status': form_status, 'contents':contents, 'redirect_to': redirect_to, 'create_project_action':reverse("ldt.ldt_utils.views.create_project", args=[iri_id]), 'target_parent':target_parent}, context_instance=RequestContext(request))
@login_required
def update_project(request, ldt_id):
--- a/src/ldt/ldt/static/ldt/js/projectscontents.js Thu Nov 10 12:59:41 2011 +0100
+++ b/src/ldt/ldt/static/ldt/js/projectscontents.js Tue Nov 22 17:04:12 2011 +0100
@@ -436,7 +436,7 @@
var w = $(element).innerWidth() + 10;
}
- nm.sizes.minH = h;
+ nm.sizes.minH = h + 10;
nm.sizes.minW = w;
iframe.height(h);
iframe.width(w);