diff --git a/deme_django/cms/forms.py b/deme_django/cms/forms.py index a4848657..87ee6b1f 100644 --- a/deme_django/cms/forms.py +++ b/deme_django/cms/forms.py @@ -48,9 +48,11 @@ def render(self, name, value, attrs=None): ajax_query_string = '&'.join('ability=' + urlquote(ability) for ability in self.required_abilities) ajax_url = reverse('item_type_url', kwargs={'viewer': model.__name__.lower(), 'format': 'json'}) + '?' + ajax_query_string result = """ - - - """ % {'name': name, 'value': value, 'id': attrs.get('id', ''), 'ajax_url': ajax_url, 'initial_search': initial_search} +
+ + +
+ """ % {'name': name, 'value': value, 'id': attrs.get('id', ''), 'ajax_url': ajax_url, 'initial_search': initial_search, 'model_name': model.__name__.lower()} # see /javascripts/deme/ajax-model-choice-widget.js for implementation #TODO fail in more obvious way if attrs['id'] is not set return result diff --git a/deme_django/cms/templates/embed.html b/deme_django/cms/templates/embed.html new file mode 100644 index 00000000..68e1a274 --- /dev/null +++ b/deme_django/cms/templates/embed.html @@ -0,0 +1,24 @@ +{% load item_tags %} + + + {% block title %}{% endblock %} + + + + + + + + + + + + + + + + + +{% block content %}{% endblock %} + + \ No newline at end of file diff --git a/deme_django/cms/templates/item/new.html b/deme_django/cms/templates/item/new.html index 733e3e6e..38f42b18 100644 --- a/deme_django/cms/templates/item/new.html +++ b/deme_django/cms/templates/item/new.html @@ -1,63 +1,6 @@ {% extends layout %} -{% load item_tags %} {% block content %} -{% if is_html %} - - -{% endif %} - -
- {% for item_type in item_types %} - [ - {% ifequal item_type.item_type accepted_item_type %} - New {{ item_type.name|capfirst }} - {% else %} - New {{ item_type.name|capfirst }} - {% endifequal %} - ] - {% endfor %} -
- -
-{% if form %} -
- - {{ form.as_table }} -
-
- -
- - -
-{% else %} - You do not have permission to create {{ accepted_item_type_name_plural }}. -{% endif %} -
- - -{% endblock content %} +{% include "item/new_bare.html" %} +{% endblock content %} \ No newline at end of file diff --git a/deme_django/cms/templates/item/new_bare.html b/deme_django/cms/templates/item/new_bare.html new file mode 100644 index 00000000..2e0fc5f0 --- /dev/null +++ b/deme_django/cms/templates/item/new_bare.html @@ -0,0 +1,57 @@ +{% load item_tags %} +{% if is_html %} + + +{% endif %} + +
+ {% for item_type in item_types %} + [ + {% ifequal item_type.item_type accepted_item_type %} + New {{ item_type.name|capfirst }} + {% else %} + New {{ item_type.name|capfirst }} + {% endifequal %} + ] + {% endfor %} +
+ +
+{% if form %} +
+ + {{ form.as_table }} +
+
+ +
+ + +
+{% else %} + You do not have permission to create {{ accepted_item_type_name_plural }}. +{% endif %} +
+ diff --git a/deme_django/cms/templates/item/new_embed.html b/deme_django/cms/templates/item/new_embed.html new file mode 100644 index 00000000..f019f4f9 --- /dev/null +++ b/deme_django/cms/templates/item/new_embed.html @@ -0,0 +1,5 @@ +{% extends "embed.html" %} +{% block title %}{{ action_title }}{% endblock %} +{% block content %} +{% include "item/new_bare.html" %} +{% endblock content %} \ No newline at end of file diff --git a/deme_django/cms/views.py b/deme_django/cms/views.py index cf000568..d41fb020 100644 --- a/deme_django/cms/views.py +++ b/deme_django/cms/views.py @@ -370,7 +370,6 @@ def type_new_html(self, form=None): form_initial = self.get_populated_field_dict(self.accepted_item_type) form_class = self.get_form_class_for_item_type(self.accepted_item_type, True) form = form_class(initial=form_initial) - template = loader.get_template('item/new.html') self.context['form'] = form self.context['is_html'] = issubclass(self.accepted_item_type, HtmlDocument) self.context['redirect'] = self.request.GET.get('redirect') @@ -378,6 +377,11 @@ def type_new_html(self, form=None): item_types = [{'viewer': x.__name__.lower(), 'name': x._meta.verbose_name, 'name': x._meta.verbose_name, 'item_type': x} for x in all_item_types() if self.accepted_item_type in x.__bases__ + (x,)] item_types.sort(key=lambda x:x['name'].lower()) self.context['item_types'] = item_types + is_true = lambda value: bool(value) and value.lower() not in ('false', '0') + if (is_true(self.request.GET.get('modal'))): + template = loader.get_template('item/new_embed.html') + else: + template = loader.get_template('item/new.html') return HttpResponse(template.render(self.context)) @require_POST diff --git a/deme_django/static/javascripts/deme/ajax-model-choice-widget-ck.js b/deme_django/static/javascripts/deme/ajax-model-choice-widget-ck.js index f16ee247..00333309 100644 --- a/deme_django/static/javascripts/deme/ajax-model-choice-widget-ck.js +++ b/deme_django/static/javascripts/deme/ajax-model-choice-widget-ck.js @@ -1 +1 @@ -$(function(){$(".ajax-model-choice-widget").each(function(){var e=$(this).attr("data-input-id"),t=$(this).attr("data-ajax-url"),n=$("#"+e),r=$(this),i={},s;n.autocomplete({minLength:0,select:function(e,t){n[0].value=t.item.value;r[0].value=t.item.id;return!1},source:function(e,n){var r=e.term;if(r in i){n(i[r]);return}s=$.getJSON(t,{q:r},function(e,t,s){var o=$.map(e,function(e){return{value:e[0],id:e[1]}});o.splice(0,0,{value:"[None]",id:""});i[r]=o;n(o)})}})})}); \ No newline at end of file +$(function(){$(".ajax-model-choice-widget").each(function(){var e=$(this).attr("data-input-id"),t=$(this).attr("data-ajax-url"),n=$("#"+e),r=$(this),i={},s;n.autocomplete({minLength:0,select:function(e,t){n[0].value=t.item.value;r[0].value=t.item.id;return!1},source:function(e,n){var r=e.term;if(r in i){n(i[r]);return}s=$.getJSON(t,{q:r},function(e,t,s){var o=$.map(e,function(e){return{value:e[0],id:e[1]}});o.splice(0,0,{value:"[None]",id:""});i[r]=o;n(o)})}});var o=$('').insertAfter(n);o.click(function(e){e.preventDefault()})})}); \ No newline at end of file diff --git a/deme_django/static/javascripts/deme/ajax-model-choice-widget.js b/deme_django/static/javascripts/deme/ajax-model-choice-widget.js index c64eb53d..f294d9e7 100644 --- a/deme_django/static/javascripts/deme/ajax-model-choice-widget.js +++ b/deme_django/static/javascripts/deme/ajax-model-choice-widget.js @@ -27,5 +27,11 @@ $(function() { }); }, }); + + // set up new button + var newbtn = $('').insertAfter(search_input); + newbtn.click(function(e){ + e.preventDefault(); + }) }); });