Removed TagCreation.js and the admin widget that used it.
authorStephen Burrows <stephen.r.burrows@gmail.com>
Fri, 15 Jul 2011 18:44:59 +0000 (14:44 -0400)
committerStephen Burrows <stephen.r.burrows@gmail.com>
Fri, 15 Jul 2011 18:44:59 +0000 (14:44 -0400)
philo/admin/widgets.py
philo/static/philo/js/TagCreation.js [deleted file]

index c753850..637475e 100644 (file)
@@ -1,6 +1,6 @@
 from django import forms
 from django.conf import settings
-from django.contrib.admin.widgets import FilteredSelectMultiple, url_params_from_lookup_dict
+from django.contrib.admin.widgets import url_params_from_lookup_dict
 from django.utils.html import escape
 from django.utils.safestring import mark_safe
 from django.utils.text import truncate_words
@@ -37,32 +37,4 @@ class ModelLookupWidget(forms.TextInput):
                                output.append('&nbsp;<strong>%s</strong>' % escape(truncate_words(value_object, 14)))
                        except value_class.DoesNotExist:
                                pass
-               return mark_safe(u''.join(output))
-
-
-class TagFilteredSelectMultiple(FilteredSelectMultiple):
-       """
-       A SelectMultiple with a JavaScript filter interface.
-
-       Note that the resulting JavaScript assumes that the jsi18n
-       catalog has been loaded in the page
-       """
-       class Media:
-               js = (
-                       settings.ADMIN_MEDIA_PREFIX + "js/core.js",
-                       settings.ADMIN_MEDIA_PREFIX + "js/SelectBox.js",
-                       settings.ADMIN_MEDIA_PREFIX + "js/SelectFilter2.js",
-                       "philo/js/TagCreation.js",
-               )
-
-       def render(self, name, value, attrs=None, choices=()):
-               if attrs is None: attrs = {}
-               attrs['class'] = 'selectfilter'
-               if self.is_stacked: attrs['class'] += 'stacked'
-               output = [super(FilteredSelectMultiple, self).render(name, value, attrs, choices)]
-               output.append(u'<script type="text/javascript">addEvent(window, "load", function(e) {')
-               # TODO: "id_" is hard-coded here. This should instead use the correct
-               # API to determine the ID dynamically.
-               output.append(u'SelectFilter.init("id_%s", "%s", %s, "%s"); tagCreation.init("id_%s"); });</script>\n' % \
-                       (name, self.verbose_name.replace('"', '\\"'), int(self.is_stacked), settings.ADMIN_MEDIA_PREFIX, name))
                return mark_safe(u''.join(output))
\ No newline at end of file
diff --git a/philo/static/philo/js/TagCreation.js b/philo/static/philo/js/TagCreation.js
deleted file mode 100644 (file)
index a23e609..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-var tagCreation = window.tagCreation;
-
-(function($) {
-       location_re = new RegExp("^https?:\/\/" + window.location.host + "/")
-       
-       $('html').ajaxSend(function(event, xhr, settings) {
-               function getCookie(name) {
-                       var cookieValue = null;
-                       if (document.cookie && document.cookie != '') {
-                               var cookies = document.cookie.split(';');
-                               for (var i = 0; i < cookies.length; i++) {
-                                       var cookie = $.trim(cookies[i]);
-                                       // Does this cookie string begin with the name we want?
-                                       if (cookie.substring(0, name.length + 1) == (name + '=')) {
-                                               cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
-                                               break;
-                                       }
-                               }
-                       }
-                       return cookieValue;
-               }
-               if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url)) || location_re.test(settings.url)) {
-                       // Only send the token to relative URLs i.e. locally.
-                       xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
-               }
-       });
-       tagCreation = {
-               'cache': {},
-               'addTagFromSlug': function(triggeringLink) {
-                       var id = triggeringLink.id.replace(/^ajax_add_/, '') + '_input';
-                       var slug = document.getElementById(id).value;
-       
-                       var name = slug.split(' ');
-                       for(var i=0;i<name.length;i++) {
-                               name[i] = name[i].substr(0,1).toUpperCase() + name[i].substr(1);
-                       }
-                       name = name.join(' ');
-                       slug = name.toLowerCase().replace(/ /g, '-').replace(/[^\w-]/g, '');
-       
-                       var href = triggeringLink.href;
-                       var data = {
-                               'name': name,
-                               'slug': slug
-                       };
-                       $.post(href, data, function(data){
-                               newId = html_unescape(data.pk);
-                               newRepr = html_unescape(data.unicode);
-                               var toId = id.replace(/_input$/, '_to');
-                               elem = document.getElementById(toId);
-                               var o = new Option(newRepr, newId);
-                               SelectBox.add_to_cache(toId, o);
-                               SelectBox.redisplay(toId);
-                       }, "json")
-               },
-               'init': function(id) {
-                       tagCreation.cache[id] = {}
-                       var input = tagCreation.cache[id].input = document.getElementById(id + '_input');
-                       var select = tagCreation.cache[id].select = document.getElementById(id + '_from');
-                       var addLinkTemplate = document.getElementById('add_' + input.id.replace(/_input$/, '')).cloneNode(true);
-                       var addLink = tagCreation.cache[id].addLink = document.createElement('A');
-                       addLink.id = 'ajax_add_' + id;
-                       addLink.className = addLinkTemplate.className;
-                       addLink.href = addLinkTemplate.href;
-                       addLink.appendChild($(addLinkTemplate).children()[0].cloneNode(false));
-                       addLink.innerHTML += " <span style='vertical-align:text-top;'>Add this tag</span>"
-                       addLink.style.marginLeft = "20px";
-                       addLink.style.display = "block";
-                       addLink.style.backgroundPosition = "10px 5px";
-                       addLink.style.width = "120px";
-                       $(input).after(addLink);
-                       if (window.grappelli) {
-                               addLink.parentNode.style.backgroundPosition = "6px 8px";
-                       } else {
-                               addLink.style.marginTop = "5px";
-                       }
-                       tagCreation.toggleButton(id);
-                       addEvent(input, 'keyup', function() {
-                               tagCreation.toggleButton(id);
-                       });
-                       addEvent(addLink, 'click', function(e) {
-                               e.preventDefault();
-                               tagCreation.addTagFromSlug(addLink);
-                       });
-                       // SelectFilter actually mistakenly allows submission on enter. We disallow it.
-                       addEvent(input, 'keypress', function(e) {
-                               if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
-                                       e.preventDefault();
-                                       if (select.options.length == 0) {
-                                               tagCreation.addTagFromSlug(addLink);
-                                       }
-                               }
-                       })
-               },
-               'toggleButton': function(id) {
-                       var addLink = tagCreation.cache[id].addLink;
-                       var select = $(tagCreation.cache[id].select);
-                       var input = tagCreation.cache[id].input;
-                       if (input.value != "") {
-                               if (addLink.style.display == 'none') {
-                                       addLink.style.display = 'block';
-                                       select.height(select.height() - $(addLink).outerHeight(false))
-                               }
-                       } else {
-                               if (addLink.style.display == 'block') {
-                                       select[0].style.height = null;
-                                       addLink.style.display = 'none';
-                               }
-                       }
-               }
-       }
-}(django.jQuery))
\ No newline at end of file