<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>INSTALL.rst</filename>
    </added>
    <added>
      <filename>README.rst</filename>
    </added>
    <added>
      <filename>docs/overview.rst</filename>
    </added>
    <added>
      <filename>mobileadmin/context_processors.py</filename>
    </added>
    <added>
      <filename>mobileadmin/decorators.py</filename>
    </added>
    <added>
      <filename>mobileadmin/media/css/mobile_safari.css</filename>
    </added>
    <added>
      <filename>mobileadmin/media/js/mobile_safari.js</filename>
    </added>
    <added>
      <filename>mobileadmin/models.py</filename>
    </added>
    <added>
      <filename>mobileadmin/options.py</filename>
    </added>
    <added>
      <filename>mobileadmin/sites.py</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/404.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/505.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/app_index.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/auth/user/add_form.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/base.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/change_form.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/change_list.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/delete_confirmation.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/edit_inline/stacked.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/edit_inline/tabular.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/filter.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/includes/fieldset.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/index.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/invalid_setup.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/login.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/object_history.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/pagination.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/registration/logged_out.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/registration/password_change_done.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/registration/password_change_form.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templates/mobileadmin/mobile_safari/search_form.html</filename>
    </added>
    <added>
      <filename>mobileadmin/templatetags/mobile_admin_media.py</filename>
    </added>
    <added>
      <filename>mobileadmin/urls.py</filename>
    </added>
    <added>
      <filename>mobileadmin/utils.py</filename>
    </added>
    <added>
      <filename>mobileadmin/views.py</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,7 +1,7 @@
-include INSTALL.txt
+include INSTALL.rst
 include LICENSE.txt
 include MANIFEST.in
-include README.txt
+include README.rst
 recursive-include docs *
 recursive-include mobileadmin/templates *
 recursive-include mobileadmin/media *</diff>
      <filename>MANIFEST.in</filename>
    </modified>
    <modified>
      <diff>@@ -0,0 +1,32 @@
+from django.contrib.auth.admin import UserAdmin
+from django.contrib.admin import site as main_site
+from django.core.exceptions import ImproperlyConfigured
+
+from mobileadmin.options import MobileModelAdmin
+from mobileadmin.options import MobileStackedInline, MobileTabularInline
+from mobileadmin.sites import MobileAdminSite, site
+from mobileadmin import decorators, views
+from mobileadmin.conf import settings
+
+def autoregister():
+    &quot;&quot;&quot;
+    Auto-register all ModelAdmin instances of the default AdminSite with the
+    mobileadmin app and set the templates accordingly.
+    &quot;&quot;&quot;
+    for model, modeladmin in main_site._registry.iteritems():
+        admin_class = modeladmin.__class__
+
+        for name, value in admin_class.__dict__.iteritems():
+            if name in settings.TEMPLATE_MAPPING:
+                setattr(admin_class, name, decorators.mobile_templates(value))
+
+        if admin_class == UserAdmin:
+            setattr(admin_class, 'add_view', views.auth_add_view)
+
+        site.register(model, admin_class)
+
+def autodiscover():
+        raise ImproperlyConfigured(&quot;Please use the autodiscover funtion of &quot;
+                                   &quot;Django's default admin app and then &quot;
+                                   &quot;call 'mobileadmin.autoregister' to use &quot;
+                                   &quot;mobileadmin.&quot;)</diff>
      <filename>mobileadmin/__init__.py</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,29 @@
 import os
 from django.conf import settings
 
+# PLEASE: Don't change anything here, use your site settings.py
+
 MEDIA_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..', 'media')
 MEDIA_PREFIX = getattr(settings, 'MOBILEADMIN_MEDIA_PREFIX', '/mobileadmin_media/')
 MEDIA_REGEX = r'^%s(?P&lt;path&gt;.*)$' % MEDIA_PREFIX.lstrip('/')
 
-COOKIE_AGE = getattr(settings, 'MOBILEADMIN_COOKIE_AGE', settings.SESSION_COOKIE_AGE)
+USER_AGENTS = {
+    'mobile_safari': r'AppleWebKit/.*Mobile/',
+    'blackberry': r'^BlackBerry',
+    'opera_mini': r'[Oo]pera [Mm]ini',
+}
+USER_AGENTS.update(getattr(settings, 'MOBILEADMIN_USER_AGENTS', {}))
 
-# A string like &quot;.lawrence.com&quot;, or None for standard domain cookie.
-COOKIE_DOMAIN = getattr(settings, 'MOBILEADMIN_COOKIE_DOMAIN', settings.SESSION_COOKIE_DOMAIN)
+TEMPLATE_MAPPING = {
+    'index': ('index_template', 'index.html'),
+    'display_login_form': ('login_template', 'login.html'),
+    'app_index': ('app_index_template', 'app_index.html'),
+    'render_change_form': ('change_form_template', 'change_form.html'),
+    'changelist_view': ('change_list_template', 'change_list.html'),
+    'delete_view': ('delete_confirmation_template', 'delete_confirmation.html'),
+    'history_view': ('object_history_template', 'object_history.html'),
+    'logout': ('logout_template', 'registration/logged_out.html'),
+    'password_change': ('password_change_template', 'registration/password_change_form.html'),
+    'password_change_done': ('password_change_done_template', 'registration/password_change_done.html'),
+}
+TEMPLATE_MAPPING.update(getattr(settings, 'MOBILEADMIN_TEMPLATE_MAPPING', {}))</diff>
      <filename>mobileadmin/conf/settings.py</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@ var LATIN_MAP = {
     'O', '&#336;': 'O', '&#216;': 'O', '&#217;': 'U', '&#218;': 'U', '&#219;': 'U', '&#220;': 'U', '&#368;': 'U',
     '&#221;': 'Y', '&#222;': 'TH', '&#223;': 'ss', '&#224;':'a', '&#225;':'a', '&#226;': 'a', '&#227;': 'a', '&#228;':
     'a', '&#229;': 'a', '&#230;': 'ae', '&#231;': 'c', '&#232;': 'e', '&#233;': 'e', '&#234;': 'e', '&#235;': 'e',
-    '&#236;': 'i', '&#237;': 'i', '&#238;': 'i', '&#239;': 'i', '&#240;': 'o', '&#241;': 'n', '&#242;': 'o', '&#243;':
+    '&#236;': 'i', '&#237;': 'i', '&#238;': 'i', '&#239;': 'i', '&#240;': 'd', '&#241;': 'n', '&#242;': 'o', '&#243;':
     'o', '&#244;': 'o', '&#245;': 'o', '&#246;': 'o', '&#337;': 'o', '&#248;': 'o', '&#249;': 'u', '&#250;': 'u',
     '&#251;': 'u', '&#252;': 'u', '&#369;': 'u', '&#253;': 'y', '&#254;': 'th', '&#255;': 'y'
 }
@@ -45,7 +45,20 @@ var UKRAINIAN_MAP = {
 }
 var CZECH_MAP = {
     '&#269;':'c', '&#271;':'d', '&#283;':'e', '&#328;': 'n', '&#345;':'r', '&#353;':'s', '&#357;':'t', '&#367;':'u',
-    '&#382;':'z'
+    '&#382;':'z', '&#268;':'C', '&#270;':'D', '&#282;':'E', '&#327;': 'N', '&#344;':'R', '&#352;':'S', '&#356;':'T',
+    '&#366;':'U', '&#381;':'Z'
+}
+
+var POLISH_MAP = {
+    '&#261;':'a', '&#263;':'c', '&#281;':'e', '&#322;':'l', '&#324;':'n', '&#243;':'o', '&#347;':'s', '&#378;':'z',
+    '&#380;':'z', '&#260;':'A', '&#262;':'C', '&#280;':'e', '&#321;':'L', '&#323;':'N', '&#211;':'o', '&#346;':'S',
+    '&#377;':'Z', '&#379;':'Z'
+}
+
+var LATVIAN_MAP = {
+    '&#257;':'a', '&#269;':'c', '&#275;':'e', '&#291;':'g', '&#299;':'i', '&#311;':'k', '&#316;':'l', '&#326;':'n',
+    '&#353;':'s', '&#363;':'u', '&#382;':'z', '&#256;':'A', '&#268;':'C', '&#274;':'E', '&#290;':'G', '&#298;':'i',
+    '&#310;':'k', '&#315;':'L', '&#325;':'N', '&#352;':'S', '&#362;':'u', '&#381;':'Z'
 }
 
 var ALL_DOWNCODE_MAPS=new Array()
@@ -56,6 +69,8 @@ ALL_DOWNCODE_MAPS[3]=TURKISH_MAP
 ALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP
 ALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP
 ALL_DOWNCODE_MAPS[6]=CZECH_MAP
+ALL_DOWNCODE_MAPS[7]=POLISH_MAP
+ALL_DOWNCODE_MAPS[8]=LATVIAN_MAP
 
 var Downcoder = new Object();
 Downcoder.Initialize = function()
@@ -122,3 +137,4 @@ function URLify(s, num_chars) {
     s = s.toLowerCase();             // convert to lowercase
     return s.substring(0, num_chars);// trim to first num_chars chars
 }
+</diff>
      <filename>mobileadmin/media/js/urlify.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,5 @@
 from django import template
+from django.template.loader import render_to_string
 from django.contrib.admin.views.main import ALL_VAR, PAGE_VAR, SEARCH_VAR
 
 register = template.Library()
@@ -11,7 +12,7 @@ def paginator_number(cl, i):
     return u'&lt;a href=&quot;%s&quot; class=&quot;%s float-left&quot;&gt;%d&lt;/a&gt; ' % (cl.get_query_string({PAGE_VAR: i}), classname, i+1)
 paginator_number = register.simple_tag(paginator_number)
 
-def pagination(cl):
+def pagination(cl, user_agent):
     paginator, page_num = cl.paginator, cl.page_num
 
     pagination_required = (not cl.show_all or not cl.can_show_all) and cl.multi_page
@@ -41,27 +42,39 @@ def pagination(cl):
                 page_range.extend(range(page_num + 1, paginator.num_pages))
 
     need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
-    return {
+    return render_to_string((
+        'mobileadmin/%s/pagination.html' % user_agent,
+        'mobileadmin/pagination.html',
+        'admin/pagination.html'
+    ), {
         'cl': cl,
         'pagination_required': pagination_required,
         'show_all_url': need_show_all_link and cl.get_query_string({ALL_VAR: ''}),
         'page_range': page_range,
         'ALL_VAR': ALL_VAR,
         '1': 1,
-    }
-pagination = register.inclusion_tag('admin/pagination.html')(pagination)
+    })
+register.simple_tag(pagination)
 
-def search_form(cl):
-    return {
+def search_form(cl, user_agent):
+    return render_to_string((
+        'mobileadmin/%s/search_form.html' % user_agent,
+        'mobileadmin/search_form.html',
+        'admin/search_form.html'
+    ), {
         'cl': cl,
         'show_result_count': cl.result_count != cl.full_result_count and not cl.opts.one_to_one_field,
         'search_var': SEARCH_VAR
-    }
-search_form = register.inclusion_tag('admin/search_form.html')(search_form)
+    })
+register.simple_tag(search_form)
 
-def filter(cl, spec):
-    return {
+def admin_list_filter(cl, spec, user_agent):
+    return render_to_string((
+        'mobileadmin/%s/filter.html' % user_agent,
+        'mobileadmin/filter.html',
+        'admin/filter.html'
+    ), {
         'title': spec.title(),
-        'choices' : list(spec.choices(cl))
-    }
-filter = register.inclusion_tag('admin/filter.html')(filter)
+        'choices': list(spec.choices(cl)),
+    })
+register.simple_tag(admin_list_filter)</diff>
      <filename>mobileadmin/templatetags/mobile_admin_list.py</filename>
    </modified>
    <modified>
      <diff>@@ -1,224 +1,48 @@
 import re
 from django import template
-from django.contrib.admin.views.main import AdminBoundField
-from django.utils.text import capfirst
-from django.utils.encoding import force_unicode
-from django.db import models
-from django.db.models.fields import Field
-from django.db.models.related import BoundRelatedObject
-from django.conf import settings
-
+from django.template.loader import render_to_string
 register = template.Library()
-word_re = re.compile('[A-Z][a-z]+')
-
-def class_name_to_underscored(name):
-    return u'_'.join([s.lower() for s in word_re.findall(name)[:-1]])
-
-def submit_row(context):
-    opts = context['opts']
-    change = context['change']
-    is_popup = context['is_popup']
-    if &quot;content_type_id&quot; in context:
-        content_type_id = context['content_type_id']
-    else:
-        content_type_id = None
-    if &quot;object_id&quot; in context:
-        object_id = context['object_id']
-    else:
-        object_id = None
-    has_absolute_url = context['has_absolute_url']
-    return {
-        'show_delete_link': (not is_popup and context['has_delete_permission']
-                              and (change or context['show_delete'])),
-        'has_absolute_url': has_absolute_url,
-        'change': change,
-        'content_type_id': content_type_id,
-        'object_id': object_id,
-    }
-submit_row = register.inclusion_tag('admin/submit_line.html', takes_context=True)(submit_row)
-
-def field_label(context, bound_field, size):
-    class_names = []
-    label_name = force_unicode(capfirst(bound_field.field.verbose_name))
-    if isinstance(bound_field.field, models.BooleanField):
-        class_names.append(&quot;vCheckboxLabel&quot;)
-    else:
-        if not bound_field.field.blank:
-            class_names.append('required')
-        if len(label_name) &gt; size and size &gt; 3:
-            label_name = label_name[0:(size-3)] + '..'
-        else:
-            label_name = label_name[0:size]
-    return {
-        'class_str': class_names and u' class=&quot;%s&quot;' % u' '.join(class_names) or u'',
-        'element_id': bound_field.element_id,
-        'label_name': label_name
-    }
-field_label = register.inclusion_tag('admin/field_label.html', takes_context=True)(field_label)
-
-class FieldWidgetNode(template.Node):
-    nodelists = {}
-    default = None
-
-    def __init__(self, bound_field_var):
-        self.bound_field_var = bound_field_var
-
-    def get_nodelist(cls, klass):
-        if klass not in cls.nodelists:
-            try:
-                field_class_name = klass.__name__
-                template_name = u&quot;widget/%s.html&quot; % class_name_to_underscored(field_class_name)
-                nodelist = template.loader.get_template(template_name).nodelist
-            except template.TemplateDoesNotExist:
-                super_klass = bool(klass.__bases__) and klass.__bases__[0] or None
-                if super_klass and super_klass != Field:
-                    nodelist = cls.get_nodelist(super_klass)
-                else:
-                    if not cls.default:
-                        cls.default = template.loader.get_template(&quot;widget/default.html&quot;).nodelist
-                    nodelist = cls.default
-
-            cls.nodelists[klass] = nodelist
-            return nodelist
-        else:
-            return cls.nodelists[klass]
-    get_nodelist = classmethod(get_nodelist)
-
-    def render(self, context):
-        bound_field = template.resolve_variable(self.bound_field_var, context)
-
-        context.push()
-        context['bound_field'] = bound_field
-
-        output = self.get_nodelist(bound_field.field.__class__).render(context)
-        context.pop()
-        return output
-
-class FieldWrapper(object):
-    def __init__(self, field ):
-        self.field = field
-
-    def needs_header(self):
-        return not isinstance(self.field, models.AutoField)
-
-    def header_class_attribute(self):
-        return self.field.blank and ' class=&quot;optional&quot;' or ''
-
-    def use_raw_id_admin(self):
-        return isinstance(self.field.rel, (models.ManyToOneRel, models.ManyToManyRel)) \
-            and self.field.rel.raw_id_admin
-
-class FormFieldCollectionWrapper(object):
-    def __init__(self, field_mapping, fields, index):
-        self.field_mapping = field_mapping
-        self.fields = fields
-        self.bound_fields = [AdminBoundField(field, self.field_mapping, field_mapping['original'])
-                             for field in self.fields]
-        self.index = index
-
-class TabularBoundRelatedObject(BoundRelatedObject):
-    def __init__(self, related_object, field_mapping, original):
-        super(TabularBoundRelatedObject, self).__init__(related_object, field_mapping, original)
-        self.field_wrapper_list = [FieldWrapper(field) for field in self.relation.editable_fields()]
-
-        fields = self.relation.editable_fields()
-
-        self.form_field_collection_wrappers = [FormFieldCollectionWrapper(field_mapping, fields, i)
-                                               for (i,field_mapping) in self.field_mappings.items() ]
-        self.original_row_needed = max([fw.use_raw_id_admin() for fw in self.field_wrapper_list])
-        self.show_url = original and hasattr(self.relation.opts, 'get_absolute_url')
-
-    def template_name(self):
-        return &quot;admin/edit_inline_tabular.html&quot;
-
-class StackedBoundRelatedObject(BoundRelatedObject):
-    def __init__(self, related_object, field_mapping, original):
-        super(StackedBoundRelatedObject, self).__init__(related_object, field_mapping, original)
-        fields = self.relation.editable_fields()
-        self.field_mappings.fill()
-        self.form_field_collection_wrappers = [FormFieldCollectionWrapper(field_mapping ,fields, i)
-                                               for (i,field_mapping) in self.field_mappings.items()]
-        self.show_url = original and hasattr(self.relation.opts, 'get_absolute_url')
-
-    def template_name(self):
-        return &quot;admin/edit_inline_stacked.html&quot;
-
-class EditInlineNode(template.Node):
-    def __init__(self, rel_var):
-        self.rel_var = rel_var
-
-    def render(self, context):
-        relation = template.resolve_variable(self.rel_var, context)
-        context.push()
-        if relation.field.rel.edit_inline == models.TABULAR:
-            bound_related_object_class = TabularBoundRelatedObject
-        elif relation.field.rel.edit_inline == models.STACKED:
-            bound_related_object_class = StackedBoundRelatedObject
-        else:
-            bound_related_object_class = relation.field.rel.edit_inline
-        original = context.get('original', None)
-        bound_related_object = relation.bind(context['form'], original, bound_related_object_class)
-        context['bound_related_object'] = bound_related_object
-        t = template.loader.get_template(bound_related_object.template_name())
-        output = t.render(context)
-        context.pop()
-        return output
-
-def output_all(form_fields):
-    return u''.join([force_unicode(f) for f in form_fields])
-output_all = register.simple_tag(output_all)
-
-def field_widget(parser, token):
-    bits = token.contents.split()
-    if len(bits) != 2:
-        raise template.TemplateSyntaxError, &quot;%s takes 1 argument&quot; % bits[0]
-    return FieldWidgetNode(bits[1])
-field_widget = register.tag(field_widget)
-
-def edit_inline(parser, token):
-    bits = token.contents.split()
-    if len(bits) != 2:
-        raise template.TemplateSyntaxError, &quot;%s takes 1 argument&quot; % bits[0]
-    return EditInlineNode(bits[1])
-edit_inline = register.tag(edit_inline)
-
-def admin_field_line(context, argument_val):
-    class_names = []
-    if isinstance(argument_val, AdminBoundField):
-        bound_fields = [argument_val]
-    else:
-        bound_fields = [bf for bf in argument_val]
-    add = context['add']
-    change = context['change']
-
-    for bound_field in bound_fields:
-        for f in bound_field.form_fields:
-            if f.errors():
-                class_names.append('errors')
-                break
-
-    return {
-        'add': context['add'],
-        'change': context['change'],
-        'bound_fields': bound_fields,
-        'multiple_fields_per_line': len(bound_fields) &gt; 1,
-        'fields_per_line': len(bound_fields),
-    }
-admin_field_line = register.inclusion_tag('admin/field_line.html', takes_context=True)(admin_field_line)
-
-def auto_populated_field_script(auto_pop_fields, change = False):
-    t = []
-    for field in auto_pop_fields:
-        if change:
-            t.append(u'document.getElementById(&quot;id_%s&quot;)._changed = true;' % field.name)
-        else:
-            t.append(u'document.getElementById(&quot;id_%s&quot;).onchange = function() { this._changed = true; };' % field.name)
 
-        add_values = u' + &quot; &quot; + '.join([u'document.getElementById(&quot;id_%s&quot;).value' % g for g in field.prepopulate_from])
-        for f in field.prepopulate_from:
-            t.append(u'document.getElementById(&quot;id_%s&quot;).onkeyup = function() {' \
-                     ' var e = document.getElementById(&quot;id_%s&quot;);' \
-                     ' if(!e._changed) { e.value = URLify(%s, %s);} }; ' % (
-                     f, field.name, add_values, field.max_length))
-    return u''.join(t)
-auto_populated_field_script = register.simple_tag(auto_populated_field_script)
+admin_re = re.compile(r'^admin\/')
+
+def prepopulated_fields_js(context):
+    &quot;&quot;&quot;
+    Creates a list of prepopulated_fields that should render Javascript for
+    the prepopulated fields for both the admin form and inlines.
+    &quot;&quot;&quot;
+    prepopulated_fields = []
+    if context['add'] and 'adminform' in context:
+        prepopulated_fields.extend(context['adminform'].prepopulated_fields)
+    if 'inline_admin_formsets' in context:
+        for inline_admin_formset in context['inline_admin_formsets']:
+            for inline_admin_form in inline_admin_formset:
+                if inline_admin_form.original is None:
+                    prepopulated_fields.extend(inline_admin_form.prepopulated_fields)
+    context.update({'prepopulated_fields': prepopulated_fields})
+    return context
+prepopulated_fields_js = register.inclusion_tag('admin/prepopulated_fields_js.html', takes_context=True)(prepopulated_fields_js)
+
+def mobile_inline_admin_formset(inline_admin_formset, user_agent):
+    template_name = inline_admin_formset.opts.template
+    if admin_re.match(template_name):
+        # remove admin/ prefix to have a clean template name
+        template_name = admin_re.sub('', template_name)
+    return render_to_string((
+        'mobileadmin/%s/%s' % (user_agent, template_name),
+        'mobileadmin/%s' % template_name,
+        'admin/%s' % template_name,
+    ), {
+        'inline_admin_formset': inline_admin_formset,
+        'user_agent': user_agent,
+    })
+register.simple_tag(mobile_inline_admin_formset)
+
+def mobile_inline_admin_fieldset(fieldset, user_agent):
+    return render_to_string((
+        'mobileadmin/%s/includes/fieldset.html' % user_agent,
+        'mobileadmin/includes/fieldset.html',
+        'admin/includes/fieldset.html',
+    ), {
+        'fieldset': fieldset,
+    })
+register.simple_tag(mobile_inline_admin_fieldset)</diff>
      <filename>mobileadmin/templatetags/mobile_admin_modify.py</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ from distutils.core import setup
 from distutils.command.install import INSTALL_SCHEMES
 
 app_name = &quot;mobileadmin&quot;
-version = &quot;0.3.1&quot;
+version = &quot;0.5&quot;
 
 # Tell distutils to put the data_files in platform-specific installation
 # locations. See here for an explanation:
@@ -34,7 +34,8 @@ for dirpath, dirnames, filenames in os.walk(app_name):
 
 setup(name=app_name,
       version=version,
-      description='The Django admin interface optimized for iPhone/iPod touch.',
+      description='The Django admin interface for mobile devices.',
+      long_description=open('docs/overview.rst').read(),
       author='Jannis Leidel',
       author_email='jannis@leidel.info',
       url='http://code.google.com/p/django-%s/' % app_name,</diff>
      <filename>setup.py</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>INSTALL.txt</filename>
    </removed>
    <removed>
      <filename>README.txt</filename>
    </removed>
    <removed>
      <filename>docs/overview.txt</filename>
    </removed>
    <removed>
      <filename>mobileadmin/loader.py</filename>
    </removed>
    <removed>
      <filename>mobileadmin/media/css/main.css</filename>
    </removed>
    <removed>
      <filename>mobileadmin/media/js/base.js</filename>
    </removed>
    <removed>
      <filename>mobileadmin/media/js/change_list.js</filename>
    </removed>
    <removed>
      <filename>mobileadmin/media/js/index.js</filename>
    </removed>
    <removed>
      <filename>mobileadmin/middleware.py</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/404.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/505.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/auth/user/add_form.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/base.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/change_form.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/change_list.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/delete_confirmation.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/edit_inline_stacked.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/edit_inline_tabular.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/field_label.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/field_line.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/filter.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/index.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/invalid_setup.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/login.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/object_history.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/pagination.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/search_form.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/admin/submit_line.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/registration/logged_out.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/registration/password_change_form.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/widget/date_time.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/widget/default.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/widget/file.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/widget/foreign.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/widget/many_to_many.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templates/widget/one_to_one.html</filename>
    </removed>
    <removed>
      <filename>mobileadmin/templatetags/mobile_admin.py</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>cd9fc6d7f228b16f555a45024339f0be6fe597a2</id>
    </parent>
  </parents>
  <author>
    <name>leidel</name>
    <email>leidel@4ed3a04f-053e-0410-b24d-b35526dee1fc</email>
  </author>
  <url>http://github.com/jezdez/django-mobileadmin/commit/ef1527f55d30739d473a9c35448f33e37824025a</url>
  <id>ef1527f55d30739d473a9c35448f33e37824025a</id>
  <committed-date>2008-09-06T04:16:17-07:00</committed-date>
  <authored-date>2008-09-06T04:16:17-07:00</authored-date>
  <message>merged nfa branche

git-svn-id: https://django-mobileadmin.googlecode.com/svn/trunk@33 4ed3a04f-053e-0410-b24d-b35526dee1fc</message>
  <tree>3fcb98031a0ddc2f7b145777d327058e4d80bec4</tree>
  <committer>
    <name>leidel</name>
    <email>leidel@4ed3a04f-053e-0410-b24d-b35526dee1fc</email>
  </committer>
</commit>
