瀏覽代碼

fork of official jet with some fixes

master
flavis 4 年之前
當前提交
4063d9e2ab
共有 100 個文件被更改,包括 7074 次插入0 次删除
  1. +3
    -0
      .gitignore
  2. +1
    -0
      __init__.py
  3. +5
    -0
      admin.py
  4. +91
    -0
      filters.py
  5. +151
    -0
      forms.py
  6. 二進制
      locale/ar/LC_MESSAGES/django.mo
  7. +71
    -0
      locale/ar/LC_MESSAGES/django.po
  8. 二進制
      locale/ar/LC_MESSAGES/djangojs.mo
  9. +47
    -0
      locale/ar/LC_MESSAGES/djangojs.po
  10. 二進制
      locale/cs/LC_MESSAGES/django.mo
  11. +70
    -0
      locale/cs/LC_MESSAGES/django.po
  12. 二進制
      locale/cs/LC_MESSAGES/djangojs.mo
  13. +44
    -0
      locale/cs/LC_MESSAGES/djangojs.po
  14. 二進制
      locale/de/LC_MESSAGES/django.mo
  15. +99
    -0
      locale/de/LC_MESSAGES/django.po
  16. 二進制
      locale/de/LC_MESSAGES/djangojs.mo
  17. +44
    -0
      locale/de/LC_MESSAGES/djangojs.po
  18. 二進制
      locale/en/LC_MESSAGES/django.mo
  19. +70
    -0
      locale/en/LC_MESSAGES/django.po
  20. 二進制
      locale/en/LC_MESSAGES/djangojs.mo
  21. +44
    -0
      locale/en/LC_MESSAGES/djangojs.po
  22. 二進制
      locale/es/LC_MESSAGES/django.mo
  23. +126
    -0
      locale/es/LC_MESSAGES/django.po
  24. 二進制
      locale/es/LC_MESSAGES/djangojs.mo
  25. +45
    -0
      locale/es/LC_MESSAGES/djangojs.po
  26. +164
    -0
      locale/fa/LC_MESSAGES/django.po
  27. +47
    -0
      locale/fa/LC_MESSAGES/djangojs.po
  28. +70
    -0
      locale/fr/LC_MESSAGES/django.po
  29. +44
    -0
      locale/fr/LC_MESSAGES/djangojs.po
  30. 二進制
      locale/pl/LC_MESSAGES/django.mo
  31. +164
    -0
      locale/pl/LC_MESSAGES/django.po
  32. 二進制
      locale/pl/LC_MESSAGES/djangojs.mo
  33. +23
    -0
      locale/pl/LC_MESSAGES/djangojs.po
  34. 二進制
      locale/pt_BR/LC_MESSAGES/django.mo
  35. +70
    -0
      locale/pt_BR/LC_MESSAGES/django.po
  36. 二進制
      locale/pt_BR/LC_MESSAGES/djangojs.mo
  37. +44
    -0
      locale/pt_BR/LC_MESSAGES/djangojs.po
  38. 二進制
      locale/ru/LC_MESSAGES/django.mo
  39. +70
    -0
      locale/ru/LC_MESSAGES/django.po
  40. 二進制
      locale/ru/LC_MESSAGES/djangojs.mo
  41. +44
    -0
      locale/ru/LC_MESSAGES/djangojs.po
  42. 二進制
      locale/zh_CN/LC_MESSAGES/django.mo
  43. +163
    -0
      locale/zh_CN/LC_MESSAGES/django.po
  44. +0
    -0
      management/__init__.py
  45. +0
    -0
      management/commands/__init__.py
  46. +49
    -0
      management/commands/jet_custom_apps_example.py
  47. +53
    -0
      management/commands/jet_side_menu_items_example.py
  48. +39
    -0
      models.py
  49. +59
    -0
      ordered_set.py
  50. +13
    -0
      settings.py
  51. +0
    -0
      static/admin/css/base.css
  52. +0
    -0
      static/admin/css/changelists.css
  53. +0
    -0
      static/admin/css/dashboard.css
  54. +0
    -0
      static/admin/css/fonts.css
  55. +0
    -0
      static/admin/css/forms.css
  56. +0
    -0
      static/admin/css/login.css
  57. +0
    -0
      static/admin/css/rtl.css
  58. +0
    -0
      static/admin/css/widgets.css
  59. +3
    -0
      static/admin/js/SelectFilter2.js
  60. +0
    -0
      static/admin/js/admin/DateTimeShortcuts.js
  61. +0
    -0
      static/admin/js/admin/RelatedObjectLookups.js
  62. +0
    -0
      static/admin/js/related-widget-wrapper.js
  63. +173
    -0
      static/jet/css/_base.scss
  64. +52
    -0
      static/jet/css/_breadcrumbs.scss
  65. +1068
    -0
      static/jet/css/_changeform.scss
  66. +467
    -0
      static/jet/css/_changelist.scss
  67. +297
    -0
      static/jet/css/_content.scss
  68. +513
    -0
      static/jet/css/_dashboard.scss
  69. +92
    -0
      static/jet/css/_delete-confirmation.scss
  70. +165
    -0
      static/jet/css/_forms.scss
  71. +3
    -0
      static/jet/css/_globals.scss
  72. +277
    -0
      static/jet/css/_header.scss
  73. +164
    -0
      static/jet/css/_helpers.scss
  74. +118
    -0
      static/jet/css/_login.scss
  75. +112
    -0
      static/jet/css/_messages.scss
  76. +55
    -0
      static/jet/css/_modules.scss
  77. +69
    -0
      static/jet/css/_object-tools.scss
  78. +104
    -0
      static/jet/css/_relatedpopup.scss
  79. +563
    -0
      static/jet/css/_sidebar.scss
  80. +197
    -0
      static/jet/css/_tables.scss
  81. +206
    -0
      static/jet/css/_variables.scss
  82. +36
    -0
      static/jet/css/icons/_variables.scss
  83. 二進制
      static/jet/css/icons/fonts/jet-icons.eot
  84. +43
    -0
      static/jet/css/icons/fonts/jet-icons.svg
  85. 二進制
      static/jet/css/icons/fonts/jet-icons.ttf
  86. 二進制
      static/jet/css/icons/fonts/jet-icons.woff
  87. +126
    -0
      static/jet/css/icons/style.css
  88. +144
    -0
      static/jet/css/jquery-ui/_jquery-ui.theme.scss
  89. 二進制
      static/jet/css/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png
  90. 二進制
      static/jet/css/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png
  91. 二進制
      static/jet/css/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png
  92. 二進制
      static/jet/css/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png
  93. 二進制
      static/jet/css/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png
  94. 二進制
      static/jet/css/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png
  95. 二進制
      static/jet/css/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png
  96. 二進制
      static/jet/css/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png
  97. 二進制
      static/jet/css/jquery-ui/images/ui-icons_222222_256x240.png
  98. 二進制
      static/jet/css/jquery-ui/images/ui-icons_2e83ff_256x240.png
  99. 二進制
      static/jet/css/jquery-ui/images/ui-icons_454545_256x240.png
  100. 二進制
      static/jet/css/jquery-ui/images/ui-icons_888888_256x240.png

+ 3
- 0
.gitignore 查看文件

@@ -0,0 +1,3 @@
*.pyc
south_migrations
migrations

+ 1
- 0
__init__.py 查看文件

@@ -0,0 +1 @@
VERSION = '1.0.8'

+ 5
- 0
admin.py 查看文件

@@ -0,0 +1,5 @@
from django.contrib import admin


class CompactInline(admin.options.InlineModelAdmin):
template = 'admin/edit_inline/compact.html'

+ 91
- 0
filters.py 查看文件

@@ -0,0 +1,91 @@
from django.contrib.admin import RelatedFieldListFilter
from django.utils.encoding import smart_text
from django.utils.html import format_html
try:
from django.core.urlresolvers import reverse
except ImportError: # Django 1.11
from django.urls import reverse

try:
from django.contrib.admin.utils import get_model_from_relation
except ImportError: # Django 1.6
from django.contrib.admin.util import get_model_from_relation

try:
from django.forms.utils import flatatt
except ImportError: # Django 1.6
from django.forms.util import flatatt


class RelatedFieldAjaxListFilter(RelatedFieldListFilter):
template = 'jet/related_field_ajax_list_filter.html'
ajax_attrs = None

def has_output(self):
return True

def field_choices(self, field, request, model_admin):
model = field.remote_field.model if hasattr(field, 'remote_field') else field.related_field.model
app_label = model._meta.app_label
model_name = model._meta.object_name

self.ajax_attrs = format_html('{0}', flatatt({
'data-app-label': app_label,
'data-model': model_name,
'data-ajax--url': reverse('jet:model_lookup'),
'data-queryset--lookup': self.lookup_kwarg
}))

if self.lookup_val is None:
return []

other_model = get_model_from_relation(field)
if hasattr(field, 'rel'):
rel_name = field.rel.get_related_field().name
else:
rel_name = other_model._meta.pk.name

queryset = model._default_manager.filter(**{rel_name: self.lookup_val}).all()
return [(x._get_pk_val(), smart_text(x)) for x in queryset]


try:
from collections import OrderedDict
from django import forms
from django.contrib.admin.widgets import AdminDateWidget
from rangefilter.filter import DateRangeFilter as OriginalDateRangeFilter
from django.utils.translation import ugettext as _


class DateRangeFilter(OriginalDateRangeFilter):
def get_template(self):
return 'rangefilter/date_filter.html'

def _get_form_fields(self):
# this is here, because in parent DateRangeFilter AdminDateWidget
# could be imported from django-suit
return OrderedDict((
(self.lookup_kwarg_gte, forms.DateField(
label='',
widget=AdminDateWidget(attrs={'placeholder': _('From date')}),
localize=True,
required=False
)),
(self.lookup_kwarg_lte, forms.DateField(
label='',
widget=AdminDateWidget(attrs={'placeholder': _('To date')}),
localize=True,
required=False
)),
))

@staticmethod
def _get_media():
css = [
'style.css',
]
return forms.Media(
css={'all': ['range_filter/css/%s' % path for path in css]}
)
except ImportError:
pass

+ 151
- 0
forms.py 查看文件

@@ -0,0 +1,151 @@
import json
from django import forms
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ValidationError
from django.db.models import Q
import operator

from jet.models import Bookmark, PinnedApplication
from jet.utils import get_model_instance_label, user_is_authenticated
from functools import reduce

try:
from django.apps import apps
get_model = apps.get_model
except ImportError:
from django.db.models.loading import get_model


class AddBookmarkForm(forms.ModelForm):
def __init__(self, request, *args, **kwargs):
self.request = request
super(AddBookmarkForm, self).__init__(*args, **kwargs)

class Meta:
model = Bookmark
fields = ['url', 'title']

def clean(self):
data = super(AddBookmarkForm, self).clean()
if not user_is_authenticated(self.request.user) or not self.request.user.is_staff:
raise ValidationError('error')
if not self.request.user.has_perm('jet.change_bookmark'):
raise ValidationError('error')
return data

def save(self, commit=True):
self.instance.user = self.request.user.pk
return super(AddBookmarkForm, self).save(commit)


class RemoveBookmarkForm(forms.ModelForm):
def __init__(self, request, *args, **kwargs):
self.request = request
super(RemoveBookmarkForm, self).__init__(*args, **kwargs)

class Meta:
model = Bookmark
fields = []

def clean(self):
data = super(RemoveBookmarkForm, self).clean()
if not user_is_authenticated(self.request.user) or not self.request.user.is_staff:
raise ValidationError('error')
if self.instance.user != self.request.user.pk:
raise ValidationError('error')
return data

def save(self, commit=True):
if commit:
self.instance.delete()


class ToggleApplicationPinForm(forms.ModelForm):
def __init__(self, request, *args, **kwargs):
self.request = request
super(ToggleApplicationPinForm, self).__init__(*args, **kwargs)

class Meta:
model = PinnedApplication
fields = ['app_label']

def clean(self):
data = super(ToggleApplicationPinForm, self).clean()
if not user_is_authenticated(self.request.user) or not self.request.user.is_staff:
raise ValidationError('error')
return data

def save(self, commit=True):
if commit:
try:
pinned_app = PinnedApplication.objects.get(
app_label=self.cleaned_data['app_label'],
user=self.request.user.pk
)
pinned_app.delete()
return False
except PinnedApplication.DoesNotExist:
PinnedApplication.objects.create(
app_label=self.cleaned_data['app_label'],
user=self.request.user.pk
)
return True


class ModelLookupForm(forms.Form):
app_label = forms.CharField()
model = forms.CharField()
q = forms.CharField(required=False)
page = forms.IntegerField(required=False)
page_size = forms.IntegerField(required=False, min_value=1, max_value=1000)
object_id = forms.IntegerField(required=False)
model_cls = None

def __init__(self, request, *args, **kwargs):
self.request = request
super(ModelLookupForm, self).__init__(*args, **kwargs)

def clean(self):
data = super(ModelLookupForm, self).clean()

if not user_is_authenticated(self.request.user) or not self.request.user.is_staff:
raise ValidationError('error')

try:
self.model_cls = get_model(data['app_label'], data['model'])
except:
raise ValidationError('error')

content_type = ContentType.objects.get_for_model(self.model_cls)
permission = Permission.objects.filter(content_type=content_type, codename__startswith='change_').first()

if not self.request.user.has_perm('{}.{}'.format(data['app_label'], permission.codename)):
raise ValidationError('error')

return data

def lookup(self):
qs = self.model_cls.objects

if self.cleaned_data['q']:
if getattr(self.model_cls, 'autocomplete_search_fields', None):
search_fields = self.model_cls.autocomplete_search_fields()
filter_data = [Q((field + '__icontains', self.cleaned_data['q'])) for field in search_fields]
# if self.cleaned_data['object_id']:
# filter_data.append(Q(pk=self.cleaned_data['object_id']))
qs = qs.filter(reduce(operator.or_, filter_data)).distinct()
else:
qs = qs.none()

limit = self.cleaned_data['page_size'] or 100
page = self.cleaned_data['page'] or 1
offset = (page - 1) * limit

items = list(map(
lambda instance: {'id': instance.pk, 'text': get_model_instance_label(instance)},
qs.all()[offset:offset + limit]
))
total = qs.count()

return items, total

二進制
locale/ar/LC_MESSAGES/django.mo 查看文件


+ 71
- 0
locale/ar/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,71 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
"PO-Revision-Date: 2017-02-12 16:57+0300\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Last-Translator: Bashar <poedit@bashar.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 1.8.7.1\n"

#: models.py:16 templates/admin/base.html:294
msgid "bookmarks"
msgstr "التفضيلات"

#: templates/admin/base.html:133
msgid "back"
msgstr "الرجوع"

#: templates/admin/base.html:60
msgid "View site"
msgstr "عرض الموقع"

#: templates/admin/base.html:273 templates/admin/base.html:292
msgid "Add bookmark"
msgstr "أضف تفضيله"

#: templates/admin/base.html:286
msgid "Delete bookmark"
msgstr "أحذف تفضيله"

#: templates/admin/base.html:287
msgid "Are you sure want to delete this bookmark?"
msgstr "هل أنت متأكد من حذف هذه التفضيله؟"

#: templates/admin/base.html:339
msgid "Application page"
msgstr "صفحة تطبيق"

#: templates/admin/base.html:276
msgid "Title"
msgstr "العنوان"

#: templates/admin/base.html:278
msgid "URL"
msgstr "الرابط"

#: templates/admin/base.html:217
msgid "Applications"
msgstr "التطبيقات"

#: templates/admin/base.html:243
msgid "Hide applications"
msgstr "إخفاء التطبيقات"

#: templates/admin/base.html:244
msgid "Show hidden"
msgstr "عرض المخفي"

#: templates/admin/base.html:363
msgid "current theme"
msgstr "القالب الحالي"

二進制
locale/ar/LC_MESSAGES/djangojs.mo 查看文件


+ 47
- 0
locale/ar/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,47 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
"PO-Revision-Date: 2017-02-12 17:02+0300\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: Bashar <poedit@bashar.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 1.8.7.1\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr "أضف"

#: static/jet/js/src/features/sidebar/bookmarks.js:85
#: static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr "إلغاء"

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr "حذف"

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr "تحذير: لديك تغيرات غير محفوظة"

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr "تحديد الكل"

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr "إلغاء تحديد الكل"

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15
#: static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr "عام"

二進制
locale/cs/LC_MESSAGES/django.mo 查看文件


+ 70
- 0
locale/cs/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,70 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: models.py:16 templates/admin/base.html:294
msgid "bookmarks"
msgstr "záložky"

#: templates/admin/base.html:133
msgid "back"
msgstr "zpět"

#: templates/admin/base.html:60
msgid "View site"
msgstr "Zobrazit stránku"

#: templates/admin/base.html:273 templates/admin/base.html:292
msgid "Add bookmark"
msgstr "Přidat záložku"

#: templates/admin/base.html:286
msgid "Delete bookmark"
msgstr "Smazat záložku"

#: templates/admin/base.html:287
msgid "Are you sure want to delete this bookmark?"
msgstr "Opravdu si přejete smazat tuto záložku"

#: templates/admin/base.html:339
msgid "Application page"
msgstr "Stránka aplikace"

#: templates/admin/base.html:276
msgid "Title"
msgstr "Název"

#: templates/admin/base.html:278
msgid "URL"
msgstr "URL"

#: templates/admin/base.html:217
msgid "Applications"
msgstr "Aplikace"

#: templates/admin/base.html:243
msgid "Hide applications"
msgstr "Skrýt aplikace"

#: templates/admin/base.html:244
msgid "Show hidden"
msgstr "Zobrazit skryté"

#: templates/admin/base.html:363
msgid "current theme"
msgstr "Aktuální vzhled"

二進制
locale/cs/LC_MESSAGES/djangojs.mo 查看文件


+ 44
- 0
locale/cs/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr "Přidat"

#: static/jet/js/src/features/sidebar/bookmarks.js:85 static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr "Zrušit"

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr "Smazat"

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr "Varování: máte neuložené změny"

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr "označit vše"

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr "odznačit vše"

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15 static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr "Obecné"

二進制
locale/de/LC_MESSAGES/django.mo 查看文件


+ 99
- 0
locale/de/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,99 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-30 14:54+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Dominik Bartenstein <db@zemtu.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

msgid "URL"
msgstr ""

msgid "title"
msgstr ""

msgid "user"
msgstr ""

msgid "date created"
msgstr "Erstellungsdatum"

msgid "bookmark"
msgstr "Lesezeichen"

msgid "bookmarks"
msgstr "Lesezeichen"

msgid "application name"
msgstr "Anwendungsname"

msgid "pinned application"
msgstr "Angeheftete Anwendung"

msgid "pinned applications"
msgstr "Angeheftete Anwendungen"

msgid "Welcome,"
msgstr ""

msgid "View site"
msgstr ""

msgid "Documentation"
msgstr ""

msgid "Change password"
msgstr ""

msgid "Log out"
msgstr ""

msgid "Home"
msgstr ""

msgid "back"
msgstr "Zurück"

msgid "Applications"
msgstr "Anwendungen"

msgid "Hide applications"
msgstr "Verstecke Anwendungen"

msgid "Show hidden"
msgstr "Zeige versteckte"

msgid "Add bookmark"
msgstr "Lesezeichen hinzufügen"

msgid "Title"
msgstr ""

msgid "Delete bookmark"
msgstr "Lesezeichen löschen"

msgid "Are you sure want to delete this bookmark?"
msgstr "Sind sie sicher, dass sie das Lesezeichen löschen wollen?"

msgid "Remove"
msgstr ""

msgid "Application page"
msgstr "Anwendungsseite"

msgid "current theme"
msgstr "Aktuelles Theme"

msgid "Popup closing..."
msgstr "Popup schließt..."

二進制
locale/de/LC_MESSAGES/djangojs.mo 查看文件


+ 44
- 0
locale/de/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Dominik Bartenstein (db@zemtu.com)\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr ""

#: static/jet/js/src/features/sidebar/bookmarks.js:85 static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr ""

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr ""

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr "Warnung: es gibt ungesicherte Änderungen"

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr "Alle auswählen"

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr "Alle abwählen"

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15 static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr "Allgemein"

二進制
locale/en/LC_MESSAGES/django.mo 查看文件


+ 70
- 0
locale/en/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,70 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: models.py:16 templates/admin/base.html:294
msgid "bookmarks"
msgstr ""

#: templates/admin/base.html:133
msgid "back"
msgstr ""

#: templates/admin/base.html:60
msgid "View site"
msgstr ""

#: templates/admin/base.html:273 templates/admin/base.html:292
msgid "Add bookmark"
msgstr ""

#: templates/admin/base.html:286
msgid "Delete bookmark"
msgstr ""

#: templates/admin/base.html:287
msgid "Are you sure want to delete this bookmark?"
msgstr ""

#: templates/admin/base.html:339
msgid "Application page"
msgstr ""

#: templates/admin/base.html:276
msgid "Title"
msgstr ""

#: templates/admin/base.html:278
msgid "URL"
msgstr ""

#: templates/admin/base.html:217
msgid "Applications"
msgstr ""

#: templates/admin/base.html:243
msgid "Hide applications"
msgstr ""

#: templates/admin/base.html:244
msgid "Show hidden"
msgstr ""

#: templates/admin/base.html:363
msgid "current theme"
msgstr ""

二進制
locale/en/LC_MESSAGES/djangojs.mo 查看文件


+ 44
- 0
locale/en/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr ""

#: static/jet/js/src/features/sidebar/bookmarks.js:85 static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr ""

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr ""

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr ""

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr ""

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr ""

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15 static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr ""

二進制
locale/es/LC_MESSAGES/django.mo 查看文件


+ 126
- 0
locale/es/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,126 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-19 15:33-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: models.py:9 templates/admin/base.html:278
msgid "URL"
msgstr "URL"

#: models.py:10
msgid "title"
msgstr "título"

#: models.py:11 models.py:26
msgid "user"
msgstr "usuario"

#: models.py:12 models.py:27
msgid "date created"
msgstr "fecha de creación"

#: models.py:15
msgid "bookmark"
msgstr "marcador"

#: models.py:16 templates/admin/base.html:294
msgid "bookmarks"
msgstr "marcadores"

#: models.py:25
msgid "application name"
msgstr "Nombre de la aplicación"

#: models.py:30
msgid "pinned application"
msgstr "aplicación anclada"

#: models.py:31
msgid "pinned applications"
msgstr "aplicaciones ancladas"

#: templates/admin/base.html:55
msgid "Welcome,"
msgstr "Bienvenido, "

#: templates/admin/base.html:60 templates/admin/base.html:161
msgid "View site"
msgstr "Ver sitio"

#: templates/admin/base.html:65 templates/admin/base.html:170
msgid "Documentation"
msgstr "Documentación"

#: templates/admin/base.html:69
msgid "Change password"
msgstr "Cambiar contraseña"

#: templates/admin/base.html:71
msgid "Log out"
msgstr "Cerrar sessión"

#: templates/admin/base.html:80 templates/admin/base.html:153
msgid "Home"
msgstr "Inicio"

#: templates/admin/base.html:133
msgid "back"
msgstr "volver"

#: templates/admin/base.html:217
msgid "Applications"
msgstr "Aplicaciones"

#: templates/admin/base.html:243
msgid "Hide applications"
msgstr "Ocultar aplicaciones"

#: templates/admin/base.html:244
msgid "Show hidden"
msgstr "Mostrar ocultas"

#: templates/admin/base.html:273 templates/admin/base.html:292
msgid "Add bookmark"
msgstr "Añadir marcadores"

#: templates/admin/base.html:276
msgid "Title"
msgstr "Título"

#: templates/admin/base.html:286
msgid "Delete bookmark"
msgstr "Eliminar marcadores"

#: templates/admin/base.html:287
msgid "Are you sure want to delete this bookmark?"
msgstr "Está seguro de que quiere eliminar este marcador?"

#: templates/admin/base.html:302 templates/admin/base.html:309
msgid "Remove"
msgstr "Remover"

#: templates/admin/base.html:339
msgid "Application page"
msgstr "Página de aplicación"

#: templates/admin/base.html:363
msgid "current theme"
msgstr "tema actual"

#: templates/admin/popup_response.html:4
msgid "Popup closing..."
msgstr "Cerrando ventana emergente..."

二進制
locale/es/LC_MESSAGES/djangojs.mo 查看文件


+ 45
- 0
locale/es/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,45 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr "Añadir"

#: static/jet/js/src/features/sidebar/bookmarks.js:85 static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr "Cancelar"

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr "Eliminar"

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr "Advertencia: Tiene cambios que no ha guardado"

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr "seleccionar todos"

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr "deseleccionar todos"

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15 static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr "General"


+ 164
- 0
locale/fa/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,164 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-25 12:27+0430\n"
"PO-Revision-Date: 2017-05-25 12:30+0430\n"
"Last-Translator: Pyzenberg <pyzenberg@gmail.com>\n"
"Language-Team: \n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.8.9\n"

#: filters.py:70
msgid "From date"
msgstr "از تاریخ"

#: filters.py:76
msgid "To date"
msgstr "تا تاریخ"

#: models.py:9 templates/admin/base.html:287
msgid "URL"
msgstr "آدرس"

#: models.py:10
msgid "title"
msgstr "عنوان"

#: models.py:11 models.py:26
msgid "user"
msgstr "کاربر"

#: models.py:12 models.py:27
msgid "date created"
msgstr "تاریخ ایجاد"

#: models.py:15
msgid "bookmark"
msgstr "بوکمارک"

#: models.py:16 templates/admin/base.html:303
msgid "bookmarks"
msgstr "بوکمارک"

#: models.py:25
msgid "application name"
msgstr "نام اپلیکیشن"

#: models.py:30
msgid "pinned application"
msgstr "اپلیکیشن پین شده"

#: models.py:31
msgid "pinned applications"
msgstr "اپلیکیشن های پین شده"

#: templates/admin/base.html:57
msgid "Welcome,"
msgstr "خوش آمدید،"

#: templates/admin/base.html:62 templates/admin/base.html:178
msgid "View site"
msgstr "نمایش سایت"

#: templates/admin/base.html:67 templates/admin/base.html:187
msgid "Documentation"
msgstr "مستندات"

#: templates/admin/base.html:71
msgid "Change password"
msgstr "تغییر رمز عبور"

#: templates/admin/base.html:73
msgid "Log out"
msgstr "خروج"

#: templates/admin/base.html:83 templates/admin/base.html:170
msgid "Home"
msgstr "خانه"

#: templates/admin/base.html:150
msgid "back"
msgstr "بازگشت"

#: templates/admin/base.html:231
msgid "Applications"
msgstr "اپلیکیشن ها"

#: templates/admin/base.html:255
msgid "Hide applications"
msgstr "اپلیکیشن های مخفی شده"

#: templates/admin/base.html:256
msgid "Show hidden"
msgstr "نمایش پنهان‌شده"

#: templates/admin/base.html:282 templates/admin/base.html:301
msgid "Add bookmark"
msgstr "افزودن بوکمارک"

#: templates/admin/base.html:285
msgid "Title"
msgstr "عنوان"

#: templates/admin/base.html:295
msgid "Delete bookmark"
msgstr "حذف بوکمارک"

#: templates/admin/base.html:296
msgid "Are you sure want to delete this bookmark?"
msgstr "آیا می‌خواهید بوکمارک‌ را حذف کنید؟"

#: templates/admin/base.html:311 templates/admin/base.html:318
#: templates/admin/edit_inline/compact.html:3
msgid "Remove"
msgstr "حذف"

#: templates/admin/base.html:340 templates/rangefilter/date_filter.html:33
msgid "Search"
msgstr "جستجو"

#: templates/admin/base.html:345
msgid "Application page"
msgstr "صفحه اپلیکیشن"

#: templates/admin/base.html:371
msgid "current theme"
msgstr "تم فعلی"

#: templates/admin/edit_inline/compact.html:12
#, python-format
msgid "Add another %(verbose_name)s"
msgstr "افزودن %(verbose_name)s دیگر"

#: templates/admin/edit_inline/compact.html:37
msgid "Change"
msgstr "تغییر"

#: templates/admin/edit_inline/compact.html:43
msgid "View on site"
msgstr "نمایش در سایت"

#: templates/admin/popup_response.html:4
msgid "Popup closing..."
msgstr "بستن پاپ‌آپ"

#: templates/jet/related_field_ajax_list_filter.html:2
#: templates/rangefilter/date_filter.html:2
#: templates/rangefilter/date_filter.html:16
#, python-format
msgid " By %(filter_title)s "
msgstr "برپایه %(filter_title)s "

#: templates/rangefilter/date_filter.html:34
msgid "Reset"
msgstr "بازنشانی"

+ 47
- 0
locale/fa/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,47 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
"PO-Revision-Date: 2017-05-25 12:29+0430\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: Pyzenberg <pyzenberg@gmail.com>\n"
"Language-Team: \n"
"X-Generator: Poedit 1.8.9\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr "افزودن"

#: static/jet/js/src/features/sidebar/bookmarks.js:85
#: static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr "لغو"

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr "حذف"

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr "هشدار: تغییرات ذخیره نشده وجود دارد"

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr "انتخاب همه"

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr "لغو انتخاب همه"

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15
#: static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr "کلی"

+ 70
- 0
locale/fr/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,70 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: models.py:16 templates/admin/base.html:294
msgid "bookmarks"
msgstr "favoris"

#: templates/admin/base.html:133
msgid "back"
msgstr "précédent"

#: templates/admin/base.html:60
msgid "View site"
msgstr "Voir site"

#: templates/admin/base.html:273 templates/admin/base.html:292
msgid "Add bookmark"
msgstr "Ajouter aux favoris"

#: templates/admin/base.html:286
msgid "Delete bookmark"
msgstr "Éffacer des favoris"

#: templates/admin/base.html:287
msgid "Are you sure want to delete this bookmark?"
msgstr "Voulez-vous vraiment éffacer ce favoris?"

#: templates/admin/base.html:339
msgid "Application page"
msgstr "Page d'application"

#: templates/admin/base.html:276
msgid "Title"
msgstr "Titre"

#: templates/admin/base.html:278
msgid "URL"
msgstr ""

#: templates/admin/base.html:217
msgid "Applications"
msgstr ""

#: templates/admin/base.html:243
msgid "Hide applications"
msgstr "Cacher les applications"

#: templates/admin/base.html:244
msgid "Show hidden"
msgstr "Voir cachés"

#: templates/admin/base.html:363
msgid "current theme"
msgstr "thème actuel"

+ 44
- 0
locale/fr/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr "Ajouter"

#: static/jet/js/src/features/sidebar/bookmarks.js:85 static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr "Annuler"

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr "Éffacer"

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr "Attention: vous avez des modifications non sauvegardées"

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr "sélectionner tout"

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr "désélectionner tout"

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15 static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr "Général"

二進制
locale/pl/LC_MESSAGES/django.mo 查看文件


+ 164
- 0
locale/pl/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,164 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-02-01 17:53+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
#: jet/filters.py:67
msgid "From date"
msgstr ""

#: jet/filters.py:73
msgid "To date"
msgstr ""

#: jet/models.py:9 jet/templates/admin/base.html:276
msgid "URL"
msgstr "Adres URL"

#: jet/models.py:10
msgid "title"
msgstr "tytuł"

#: jet/models.py:11 jet/models.py:26
msgid "user"
msgstr "użytkownik"

#: jet/models.py:12 jet/models.py:27
msgid "date created"
msgstr "data utworzenia"

#: jet/models.py:15
msgid "bookmark"
msgstr "zakładka"

#: jet/models.py:16 jet/templates/admin/base.html:292
msgid "bookmarks"
msgstr "zakładki"

#: jet/models.py:25
msgid "application name"
msgstr "nazwa aplikacji"

#: jet/models.py:30
msgid "pinned application"
msgstr "przypięta aplikacja"

#: jet/models.py:31
msgid "pinned applications"
msgstr "przypięte aplikacje"

#: jet/templates/admin/base.html:53
msgid "Welcome,"
msgstr "Witaj,"

#: jet/templates/admin/base.html:58 jet/templates/admin/base.html:159
msgid "View site"
msgstr "Zobacz stronę"

#: jet/templates/admin/base.html:63 jet/templates/admin/base.html:168
msgid "Documentation"
msgstr "Dokumentacja"

#: jet/templates/admin/base.html:67
msgid "Change password"
msgstr "Zmień hasło"

#: jet/templates/admin/base.html:69
msgid "Log out"
msgstr "Wyloguj"

#: jet/templates/admin/base.html:78 jet/templates/admin/base.html:151
msgid "Home"
msgstr "Strona domowa"

#: jet/templates/admin/base.html:131
msgid "back"
msgstr "wstecz"

#: jet/templates/admin/base.html:215
msgid "Applications"
msgstr "Aplikacje"

#: jet/templates/admin/base.html:241
msgid "Hide applications"
msgstr "Ukryj aplikacje"

#: jet/templates/admin/base.html:242
msgid "Show hidden"
msgstr "Pokaż ukryte"

#: jet/templates/admin/base.html:271 jet/templates/admin/base.html:290
msgid "Add bookmark"
msgstr "Dodaj zakładkę"

#: jet/templates/admin/base.html:274
msgid "Title"
msgstr "Tytuł"

#: jet/templates/admin/base.html:284
msgid "Delete bookmark"
msgstr "Usuń zakładkę"

#: jet/templates/admin/base.html:285
msgid "Are you sure want to delete this bookmark?"
msgstr "Czy jesteś pewien że chcesz usnąć zakładkę"

#: jet/templates/admin/base.html:300 jet/templates/admin/base.html:307
#: jet/templates/admin/edit_inline/compact.html:3
msgid "Remove"
msgstr "Usuń"

#: jet/templates/admin/base.html:337
msgid "Application page"
msgstr "Strona aplikacji"

#: jet/templates/admin/base.html:361
msgid "current theme"
msgstr "obecny motyw"

#: jet/templates/admin/edit_inline/compact.html:12
#, python-format
msgid "Add another %(verbose_name)s"
msgstr "Dodaj kolejny %(verbose_name)s"

#: jet/templates/admin/edit_inline/compact.html:37
msgid "Change"
msgstr "Zmień"

#: jet/templates/admin/edit_inline/compact.html:43
msgid "View on site"
msgstr "Zobacz na stronie"

#: jet/templates/admin/popup_response.html:4
msgid "Popup closing..."
msgstr ""

#: jet/templates/jet/related_field_ajax_list_filter.html:2
#: jet/templates/rangefilter/date_filter.html:2
#: jet/templates/rangefilter/date_filter.html:16
#, python-format
msgid " By %(filter_title)s "
msgstr ""

#: jet/templates/rangefilter/date_filter.html:33
msgid "Search"
msgstr "Szukaj"

#: jet/templates/rangefilter/date_filter.html:34
msgid "Reset"
msgstr ""

二進制
locale/pl/LC_MESSAGES/djangojs.mo 查看文件


+ 23
- 0
locale/pl/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,23 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-02-01 17:54+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
#: jet/static/jet/js/build/bundle.min.js:3
msgid "'"
msgstr ""

二進制
locale/pt_BR/LC_MESSAGES/django.mo 查看文件


+ 70
- 0
locale/pt_BR/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,70 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-23 08:49-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Sedir Morais <philippi.sedir@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Brazilian Portuguese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: models.py:16 templates/admin/base.html:294
msgid "bookmarks"
msgstr "marcadores"

#: templates/admin/base.html:133
msgid "back"
msgstr "voltar"

#: templates/admin/base.html:60
msgid "View site"
msgstr "Ver site"

#: templates/admin/base.html:273 templates/admin/base.html:292
msgid "Add bookmark"
msgstr "Adicionar marcador"

#: templates/admin/base.html:286
msgid "Delete bookmark"
msgstr "Remover marcador"

#: templates/admin/base.html:287
msgid "Are you sure want to delete this bookmark?"
msgstr "Você tem certeza que deseja remover esse marcador?"

#: templates/admin/base.html:339
msgid "Application page"
msgstr "Página da aplicação"

#: templates/admin/base.html:276
msgid "Title"
msgstr "Título"

#: templates/admin/base.html:278
msgid "URL"
msgstr "URL"

#: templates/admin/base.html:217
msgid "Applications"
msgstr "Aplicações"

#: templates/admin/base.html:243
msgid "Hide applications"
msgstr "Esconder aplicações"

#: templates/admin/base.html:244
msgid "Show hidden"
msgstr "Mostrar escondidos"

#: templates/admin/base.html:363
msgid "current theme"
msgstr "tema atual"

二進制
locale/pt_BR/LC_MESSAGES/djangojs.mo 查看文件


+ 44
- 0
locale/pt_BR/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-23 08:48-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Sedir Morais <philippi.sedir@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: Brazilian Portuguese\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr "Adicionar"

#: static/jet/js/src/features/sidebar/bookmarks.js:85 static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr "Cancelar"

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr "Remover"

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr "Aviso: você efetuou mudanças que não foram salvas"

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr "selecionar tudo"

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr "desselecionar tudo"

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15 static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr "Geral"

二進制
locale/ru/LC_MESSAGES/django.mo 查看文件


+ 70
- 0
locale/ru/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,70 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: models.py:16 templates/admin/base.html:294
msgid "bookmarks"
msgstr "закладки"

#: templates/admin/base.html:133
msgid "back"
msgstr "назад"

#: templates/admin/base.html:60
msgid "View site"
msgstr "Открыть сайт"

#: templates/admin/base.html:273 templates/admin/base.html:292
msgid "Add bookmark"
msgstr "Добавить закладку"

#: templates/admin/base.html:286
msgid "Delete bookmark"
msgstr "Удалить закладку"

#: templates/admin/base.html:287
msgid "Are you sure want to delete this bookmark?"
msgstr "Вы точно хотите удалить эту закладку?"

#: templates/admin/base.html:339
msgid "Application page"
msgstr "Страница приложения"

#: templates/admin/base.html:276
msgid "Title"
msgstr "Название"

#: templates/admin/base.html:278
msgid "URL"
msgstr "URL"

#: templates/admin/base.html:217
msgid "Applications"
msgstr "Приложения"

#: templates/admin/base.html:243
msgid "Hide applications"
msgstr "Скрыть приложения"

#: templates/admin/base.html:244
msgid "Show hidden"
msgstr "Показать скрытые"

#: templates/admin/base.html:363
msgid "current theme"
msgstr "текущая тема"

二進制
locale/ru/LC_MESSAGES/djangojs.mo 查看文件


+ 44
- 0
locale/ru/LC_MESSAGES/djangojs.po 查看文件

@@ -0,0 +1,44 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: static/jet/js/src/features/sidebar/bookmarks.js:80
msgid "Add"
msgstr "Добавить"

#: static/jet/js/src/features/sidebar/bookmarks.js:85 static/jet/js/src/features/sidebar/bookmarks.js:118
msgid "Cancel"
msgstr "Отмена"

#: static/jet/js/src/features/sidebar/bookmarks.js:113
msgid "Delete"
msgstr "Удалить"

#: static/jet/js/src/features/changeform.js:11
msgid "Warning: you have unsaved changes"
msgstr "Внимание: у вас есть несохраненные изменения"

#: static/jet/js/src/features/selects.js:109
msgid "select all"
msgstr "выбрать все"

#: static/jet/js/src/features/selects.js:112
msgid "deselect all"
msgstr "убрать все"

#: static/jet/js/src/layout-updaters/changeform-tabs.js:15 static/jet/js/src/layout-updaters/changeform-tabs.js:30
msgid "General"
msgstr "Общее"

二進制
locale/zh_CN/LC_MESSAGES/django.mo 查看文件


+ 163
- 0
locale/zh_CN/LC_MESSAGES/django.po 查看文件

@@ -0,0 +1,163 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-01-20 10:03+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: jet/filters.py:67
msgid "From date"
msgstr "起始日期"

#: jet/filters.py:73
msgid "To date"
msgstr "结束日期"

#: jet/models.py:9 jet/templates/admin/base.html:276
msgid "URL"
msgstr "URL"

#: jet/models.py:10
msgid "title"
msgstr "标题"

#: jet/models.py:11 jet/models.py:26
msgid "user"
msgstr "用户"

#: jet/models.py:12 jet/models.py:27
msgid "date created"
msgstr "创建日期"

#: jet/models.py:15
msgid "bookmark"
msgstr "书签"

#: jet/models.py:16 jet/templates/admin/base.html:292
msgid "bookmarks"
msgstr "书签"

#: jet/models.py:25
msgid "application name"
msgstr "应用名称"

#: jet/models.py:30
msgid "pinned application"
msgstr "固定应用"

#: jet/models.py:31
msgid "pinned applications"
msgstr "固定应用"

#: jet/templates/admin/base.html:53
msgid "Welcome,"
msgstr "欢迎,"

#: jet/templates/admin/base.html:58 jet/templates/admin/base.html:159
msgid "View site"
msgstr "查看站点"

#: jet/templates/admin/base.html:63 jet/templates/admin/base.html:168
msgid "Documentation"
msgstr "文档"

#: jet/templates/admin/base.html:67
msgid "Change password"
msgstr "修改密码"

#: jet/templates/admin/base.html:69
msgid "Log out"
msgstr "退出"

#: jet/templates/admin/base.html:78 jet/templates/admin/base.html:151
msgid "Home"
msgstr "首页"

#: jet/templates/admin/base.html:131
msgid "back"
msgstr "返回"

#: jet/templates/admin/base.html:215
msgid "Applications"
msgstr "应用"

#: jet/templates/admin/base.html:241
msgid "Hide applications"
msgstr "隐藏应用"

#: jet/templates/admin/base.html:242
msgid "Show hidden"
msgstr "显示隐藏项"

#: jet/templates/admin/base.html:271 jet/templates/admin/base.html:290
msgid "Add bookmark"
msgstr "添加书签"

#: jet/templates/admin/base.html:274
msgid "Title"
msgstr "标题"

#: jet/templates/admin/base.html:284
msgid "Delete bookmark"
msgstr "删除书签"

#: jet/templates/admin/base.html:285
msgid "Are you sure want to delete this bookmark?"
msgstr "你确定要删除这个书签吗?"

#: jet/templates/admin/base.html:300 jet/templates/admin/base.html:307
#: jet/templates/admin/edit_inline/compact.html:3
msgid "Remove"
msgstr "删除"

#: jet/templates/admin/base.html:337
msgid "Application page"
msgstr "应用页"

#: jet/templates/admin/base.html:361
msgid "current theme"
msgstr "当前主题"

#: jet/templates/admin/edit_inline/compact.html:12
#, python-format
msgid "Add another %(verbose_name)s"
msgstr "添加另一个%(verbose_name)s"

#: jet/templates/admin/edit_inline/compact.html:37
msgid "Change"
msgstr "修改"

#: jet/templates/admin/edit_inline/compact.html:43
msgid "View on site"
msgstr "在站点中查看"

#: jet/templates/admin/popup_response.html:4
msgid "Popup closing..."
msgstr "弹窗关闭中..."

#: jet/templates/jet/related_field_ajax_list_filter.html:2
#: jet/templates/rangefilter/date_filter.html:2
#: jet/templates/rangefilter/date_filter.html:16
#, python-format
msgid " By %(filter_title)s "
msgstr "By %(filter_title)s"

#: jet/templates/rangefilter/date_filter.html:33
msgid "Search"
msgstr "查找"

#: jet/templates/rangefilter/date_filter.html:34
msgid "Reset"
msgstr "重置"

+ 0
- 0
management/__init__.py 查看文件


+ 0
- 0
management/commands/__init__.py 查看文件


+ 49
- 0
management/commands/jet_custom_apps_example.py 查看文件

@@ -0,0 +1,49 @@
try:
from django.core.management.base import NoArgsCommand
except ImportError:
from django.core.management import BaseCommand as NoArgsCommand

from jet.utils import get_app_list


class Command(NoArgsCommand):
help = 'Generates example of JET custom apps setting'
item_order = 0
def handle(self, *args, **options):
if args:
raise CommandError("Command doesn't accept any arguments")
return self.handle_noargs(**options)
def handle_noargs(self, **options):
class User:
is_active = True
is_staff = True
is_superuser = True

def has_module_perms(self, app):
return True

def has_perm(self, object):
return True

class Request:
user = User()

app_list = get_app_list({
'request': Request(),
'user': None
})

self.stdout.write('# Add this to your settings.py to customize applications and models list')
self.stdout.write('JET_SIDE_MENU_CUSTOM_APPS = [')

for app in app_list:
app_label = app.get('app_label', app.get('name'))

self.stdout.write(' (\'%s\', [' % app_label)
for model in app['models']:
self.stdout.write(' \'%s\',' % model['object_name'])
self.stdout.write(' ]),')

self.stdout.write(']')

+ 53
- 0
management/commands/jet_side_menu_items_example.py 查看文件

@@ -0,0 +1,53 @@
try:
from django.core.management.base import NoArgsCommand
except ImportError:
from django.core.management import BaseCommand as NoArgsCommand

from jet.utils import get_app_list, get_original_menu_items


class Command(NoArgsCommand):
help = 'Generates example of JET custom apps setting'
item_order = 0
def handle(self, *args, **options):
if args:
raise CommandError("Command doesn't accept any arguments")
return self.handle_noargs(**options)
def handle_noargs(self, **options):
class User:
is_active = True
is_staff = True
is_superuser = True

def has_module_perms(self, app):
return True

def has_perm(self, object):
return True

class Request:
user = User()

app_list = get_original_menu_items({
'request': Request(),
'user': None
})

self.stdout.write('# Add this to your settings.py to customize applications and models list')
self.stdout.write('JET_SIDE_MENU_ITEMS = [')

for app in app_list:
self.stdout.write(' {\'app_label\': \'%s\', \'items\': [' % (
app['app_label']
))

for model in app['models']:
self.stdout.write(' {\'name\': \'%s\'},' % (
model['name']
))

self.stdout.write(' ]},')

self.stdout.write(']')

+ 39
- 0
models.py 查看文件

@@ -0,0 +1,39 @@
from django.db import models
from django.utils import timezone
from django.utils.translation import gettext_lazy as _

try:
from django.utils.encoding import python_2_unicode_compatible
except ImportError:
from six import python_2_unicode_compatible

@python_2_unicode_compatible
class Bookmark(models.Model):
url = models.URLField(verbose_name=_('URL'))
title = models.CharField(verbose_name=_('title'), max_length=255)
user = models.PositiveIntegerField(verbose_name=_('user'))
date_add = models.DateTimeField(verbose_name=_('date created'), default=timezone.now)

class Meta:
verbose_name = _('bookmark')
verbose_name_plural = _('bookmarks')
ordering = ('date_add',)

def __str__(self):
return self.title


@python_2_unicode_compatible
class PinnedApplication(models.Model):
app_label = models.CharField(verbose_name=_('application name'), max_length=255)
user = models.PositiveIntegerField(verbose_name=_('user'))
date_add = models.DateTimeField(verbose_name=_('date created'), default=timezone.now)

class Meta:
verbose_name = _('pinned application')
verbose_name_plural = _('pinned applications')
ordering = ('date_add',)

def __str__(self):
return self.app_label


+ 59
- 0
ordered_set.py 查看文件

@@ -0,0 +1,59 @@
import collections


class OrderedSet(collections.MutableSet):
def __init__(self, iterable=None):
self.end = end = []
end += [None, end, end] # sentinel node for doubly linked list
self.map = {} # key --> [key, prev, next]
if iterable is not None:
self |= iterable

def __len__(self):
return len(self.map)

def __contains__(self, key):
return key in self.map

def add(self, key):
if key not in self.map:
end = self.end
curr = end[1]
curr[2] = end[1] = self.map[key] = [key, curr, end]

def discard(self, key):
if key in self.map:
key, prev, next = self.map.pop(key)
prev[2] = next
next[1] = prev

def __iter__(self):
end = self.end
curr = end[2]
while curr is not end:
yield curr[0]
curr = curr[2]

def __reversed__(self):
end = self.end
curr = end[1]
while curr is not end:
yield curr[0]
curr = curr[1]

def pop(self, last=True):
if not self:
raise KeyError('set is empty')
key = self.end[1][0] if last else self.end[2][0]
self.discard(key)
return key

def __repr__(self):
if not self:
return '%s()' % (self.__class__.__name__,)
return '%s(%r)' % (self.__class__.__name__, list(self))

def __eq__(self, other):
if isinstance(other, OrderedSet):
return len(self) == len(other) and list(self) == list(other)
return set(self) == set(other)

+ 13
- 0
settings.py 查看文件

@@ -0,0 +1,13 @@
from django.conf import settings

# Theme
JET_DEFAULT_THEME = getattr(settings, 'JET_DEFAULT_THEME', 'default')
JET_THEMES = getattr(settings, 'JET_THEMES', [])

# Side menu
JET_SIDE_MENU_COMPACT = getattr(settings, 'JET_SIDE_MENU_COMPACT', False)
JET_SIDE_MENU_ITEMS = getattr(settings, 'JET_SIDE_MENU_ITEMS', None)
JET_SIDE_MENU_CUSTOM_APPS = getattr(settings, 'JET_SIDE_MENU_CUSTOM_APPS', None)

# Improved usability
JET_CHANGE_FORM_SIBLING_LINKS = getattr(settings, 'JET_CHANGE_FORM_SIBLING_LINKS', True)

+ 0
- 0
static/admin/css/base.css 查看文件


+ 0
- 0
static/admin/css/changelists.css 查看文件


+ 0
- 0
static/admin/css/dashboard.css 查看文件


+ 0
- 0
static/admin/css/fonts.css 查看文件


+ 0
- 0
static/admin/css/forms.css 查看文件


+ 0
- 0
static/admin/css/login.css 查看文件


+ 0
- 0
static/admin/css/rtl.css 查看文件


+ 0
- 0
static/admin/css/widgets.css 查看文件


+ 3
- 0
static/admin/js/SelectFilter2.js 查看文件

@@ -0,0 +1,3 @@
window.SelectFilter = {
init: function (field_id, field_name, is_stacked) { }
};

+ 0
- 0
static/admin/js/admin/DateTimeShortcuts.js 查看文件


+ 0
- 0
static/admin/js/admin/RelatedObjectLookups.js 查看文件


+ 0
- 0
static/admin/js/related-widget-wrapper.js 查看文件


+ 173
- 0
static/jet/css/_base.scss 查看文件

@@ -0,0 +1,173 @@
/*
DJANGO JET Admin styles
*/

@import "globals";

html, body {
margin: 0;
padding: 0;
}

html {
font-size: 87.5%;

@include for-mobile {
font-size: 100%;
}
}

body {
height: 100%;
background: $background-color;
color: $text-color;
font-family: $font;
text-size-adjust: 100%;

@include for-mobile {
padding-top: $sidebar-header-height;
}

&.non-scrollable {
overflow: hidden;
}

&.popup {
@include for-mobile {
padding-top: 0;
}
}
}

/* PAGE STRUCTURE */

#container {
padding: 0;
min-height: 100%;
transition: padding-left 0.3s;

body.menu-pinned & {
padding-left: $sidebar-width;
}

body.menu-pinned.popup & {
padding-left: 0;
}

@include for-mobile {
&, body.menu-pinned & {
padding-left: 0;
}
}

.popup & {
padding-left: 0;
}
}

#content {
padding: 20px;

@include for-phone {
padding: 10px;
}

& > h1 {
display: none;
}
}

#content-main {
float: left;
width: 100%;

@include for-mobile {
float: none;
}
}

#content-related {
float: right;
width: 260px;
position: relative;
margin-right: -300px;

@include for-mobile {
float: none;
width: 100%;
margin-left: 0;
position: static;
}
}

#footer {
clear: both;
padding: 10px;

&:empty {
display: none;
}
}

.dialog-confirm {
display: none;
}

/* COLUMN TYPES */

.colMS {
margin-right: 300px;

@include for-mobile {
margin-right: 0;
}
}

.colSM {
margin-left: 300px;

@include for-mobile {
margin-left: 0;
}
}

.colSM #content-related {
float: left;
margin-right: 0;
margin-left: -300px;

@include for-mobile {
float: none;
margin-left: 0;
}
}

.colSM #content-main {
float: right;

@include for-mobile {
float: none;
}
}

.popup .colM {
width: auto;
}

@import "jquery-ui/jquery-ui.theme";
@import "select2/layout";
@import "content";
@import "forms";
@import "tables";
@import "messages";
@import "header";
@import "breadcrumbs";
@import "modules";
@import "object-tools";
@import "changeform";
@import "changelist";
@import "sidebar";
@import "relatedpopup";
@import "dashboard";
@import "delete-confirmation";
@import "login";

+ 52
- 0
static/jet/css/_breadcrumbs.scss 查看文件

@@ -0,0 +1,52 @@
@import "globals";

/* BREADCRUMBS */

div.breadcrumbs {
font-size: 12px;
font-weight: bold;
text-transform: uppercase;
line-height: $top-height;
color: $top-text-color;
padding: 10px 175px + 20px + 20px 10px 20px;
visibility: hidden;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
min-height: 32px;

@include for-mobile {
padding: 20px 20px 10px 20px;
white-space: normal;
text-overflow: clip;
overflow: auto;
}

@include for-phone {
padding: 10px;
}

&.initialized {
visibility: inherit;
}

a {
&, &:visited {
color: $top-link-color;
}

&:focus, &:hover {
color: $top-hover-link-color;
}
}
}

.breadcrumbs {
&-separator {
color: $top-separator-color;
margin: 0 6px 0 6px;
font-weight: bold !important;
font-size: 15px;
vertical-align: middle;
}
}

+ 1068
- 0
static/jet/css/_changeform.scss
文件差異過大導致無法顯示
查看文件


+ 467
- 0
static/jet/css/_changelist.scss 查看文件

@@ -0,0 +1,467 @@
@import "globals";

/* CHANGELISTS */

#changelist {
position: relative;
width: 100%;

table {
width: 100%;
}

.results {
overflow-x: auto;
-webkit-overflow-scrolling: touch;

@include for-mobile {
position: relative;
left: -20px;
width: calc(100% + 40px);
margin-bottom: 0 !important;

table {
border-radius: 0;
}

thead th, tfoot td {
border-radius: 0
}
}

@include for-phone {
left: -10px;
width: calc(100% + 20px);
}
}

.paginator {
text-align: right;

@include for-mobile {
text-align: left;
}

@include for-phone {
text-align: center;
}
}
}

.change-list {
.hiddenfields {
display: none;
}

.filtered table {
border-right: none;
}

.filtered {
min-height: 400px;
}

.filtered table tbody th {
padding-right: 1em;
}
}

/* CHANGELIST TABLES */

#changelist table {
thead th {
&.action-checkbox-column {
width: 1.5em;
text-align: center;
}
}

tbody td.action-checkbox {
text-align: center;
}

tfoot {
color: #666;
}
}

/* TOOLBAR */

#toolbar {
margin-bottom: 20px;
display: none;

@include for-mobile {
float: none;
}

&.initialized {
display: block;
}

form {
label[for="searchbar"] {
display: none;
}

#searchbar {
margin-bottom: 5px;
margin-right: 2px;
vertical-align: top;

@include for-mobile {
margin-right: 5px;
}

@include for-phone {
width: 100%;
}
}

input[type="submit"] {
&, &:visited, &:hover {
background-color: $primary-button-background-color;
color: $primary-button-text-color;
font-size: 12px;
font-weight: lighter;
padding: 0 20px;
text-transform: uppercase;
vertical-align: middle;
margin-bottom: 5px;
}

&:hover, &:focus {
background-color: $button-hover-background-color;
color: $button-hover-text-color;
}

&:active {
background-color: $button-active-background-color;
color: $button-active-text-color;
}
}
}
}

.changelist-filter-select {
&-wrapper {
margin-right: 2px;
margin-bottom: 5px;
display: inline-block;
vertical-align: top;

@include for-mobile {
margin-right: 5px;
}

@include for-phone {
width: 100%;
}

.select2 {
@include for-phone {
width: 100% !important;
}

&-selection--multiple {
overflow: auto;
height: $input-height !important;

.select2-selection__rendered {
padding: 0 2px !important;
}

.select2-selection__choice {
margin-top: 2px !important;
margin-right: 2px !important;
}
}
}
}
}

.changelist-filter-popup {
position: relative;

&-content {
display: none;
position: absolute;
top: 0;
right: 0;
left: 0;
min-width: 200px;
background: $content-background-color;
border-radius: 4px;
box-shadow: 0 0 4px 0 $input-shadow-color;
z-index: 1;

&.visible {
display: block;
}
}
}

/* FILTER COLUMN */

#changelist-filter {
display: none;
}

/* DATE DRILLDOWN */

.change-list ul.toplinks {
display: block;
padding: 0;
margin: 0;

li {
list-style-type: none;
display: inline-block;
margin: 0 5px 5px 0;
background-color: $button-background-color;
color: $button-text-color;
text-decoration: none;
font-size: 14px;
padding: 6px 10px;
border-radius: 4px;
}

a {
&, &:visited {
color: $button-text-color;
}

&:focus, &:hover {
text-decoration: underline;
}
}
}

/* PAGINATOR */

.paginator {
display: none;
line-height: normal;
padding: 0 !important;
margin: 0;
font-size: 12px;

&.initialized {
display: inherit;
}

.pages-wrapper {
margin-left: 10px;
display: inline-block;
margin-bottom: 5px;

@include for-mobile {
margin-left: 0;
}

span, a {
font-size: 14px;
padding: 6px 10px;
display: inline-block;

&:first-child {
border-radius: 4px 0 0 4px;
}

&:last-child {
border-radius: 0 4px 4px 0;
}

&:first-child:last-child {
border-radius: 4px;
}
}

span {
background-color: $button-active-background-color;
color: $button-active-text-color;

&.disabled {
background-color: $button-background-color;
color: $button-text-color;
}
}

a {
&:link, &:visited {
background-color: $button-background-color;
color: $button-text-color;
text-decoration: none;
}

&:focus, &:hover {
background-color: $button-hover-background-color;
color: $button-hover-text-color;
}
}
}

a.showall {
&:link, &:visited {
font-size: 12px;
}
}

.label {
padding: 8px 0;
}

input[type="submit"] {
&, &:hover, &:focus {
font-size: 13px;
padding: 6px 10px;
height: auto;
line-height: normal;
margin: 0 0 0 10px;
}
}
}

/* ACTIONS */

#changelist {
table {
input {
margin: 0;
vertical-align: baseline;
}

tbody tr.selected {
border-color: $content-selected-border-color;
background-color: $content-selected-background-color;
}
}

.actions {
float: left;
display: none;

@include for-mobile {
float: none;
margin-bottom: 20px;
}

@include for-phone {
padding: 0 10px;
}

&.initialized {
display: inline-block;

@include for-mobile {
display: block;
}
}

label {
@include for-mobile {
margin-bottom: 5px;
display: inline-block;
}

@include for-phone {
display: block;
}
}

.select2 {
@include for-phone {
width: 100% !important;
}
}

.labels {
padding: 8px 0;

@include for-phone {
text-align: center;
}
}

span.all, span.action-counter, span.clear, span.question {
display: none;
}

span.clear {
margin-left: 5px;
}

.button {
&, &:visited, &:hover {
display: inline-block;
background-color: $primary-button-background-color;
color: $primary-button-text-color;
border: 0;
border-radius: 4px;
height: 32px;
line-height: 32px;
outline: 0;
font-size: 12px;
font-weight: lighter;
text-align: center;
padding: 0 20px;
text-transform: uppercase;
margin: 0 8px 5px 0;
transition: background $transitions-duration;

@include for-phone {
width: 100%;
}
}

&:hover, &:focus {
background-color: $button-hover-background-color;
color: $button-hover-text-color;
}

&:active {
background-color: $button-active-background-color;
color: $button-active-text-color;
}
}

span {
font-size: 12px;
}
}
}

.changelist-footer {
padding: 20px 0;
background: $background-color;

&.fixed {
position: fixed;
left: 20px;
right: 20px;
bottom: 0;
border-top: 2px solid $content-border2-color;
transition: left 0.3s;

body.menu-pinned & {
left: $sidebar-width + 20px;
}

body.menu-pinned.popup & {
left: 20px;
}

@include for-mobile {
position: static;
left: auto;
right: auto;
bottom: auto;
border-top: 0;
padding: 20px 0;
}
}

&.popup {
left: 20px;
}
}

+ 297
- 0
static/jet/css/_content.scss 查看文件

@@ -0,0 +1,297 @@
@import "globals";


/* LINKS */

a, a:visited, a:hover, a:focus {
color: $link-color;
font-weight: normal;
text-decoration: none;
}

a:hover, a:focus {
color: $hover-link-color;
}

a img {
border: none;
}

//a.section:link, a.section:visited {
// color: #fff;
// text-decoration: none;
//}
//
//a.section:focus, a.section:hover {
// text-decoration: underline;
//}

/* GLOBAL DEFAULTS */

p, ol, ul, dl {
margin: .2em 0 .8em 0;
}

p {
padding: 0;
line-height: 140%;
}

h1, h2, h3, h4, h5 {
font-weight: bold;
}

h1 {
margin: 0 0 20px;
font-weight: 300;
font-size: 20px;
}

h2 {
font-size: 16px;
margin: 1em 0 .5em 0;
}

h2.subhead {
font-weight: normal;
margin-top: 0;
}

h3 {
font-size: 14px;
margin: .8em 0 .3em 0;
font-weight: bold;
}

h4 {
font-size: 12px;
margin: 1em 0 .8em 0;
padding-bottom: 3px;
}

h5 {
font-size: 10px;
margin: 1.5em 0 .5em 0;
text-transform: uppercase;
letter-spacing: 1px;
}

ul li {
list-style-type: square;
padding: 0;
}

li ul {
margin-bottom: 0;
}

dt, dd {
line-height: 20px;
}

dt {
font-weight: bold;
margin-top: 4px;
}

dd {
margin-left: 0;
}

form {
margin: 0;
padding: 0;
}

fieldset {
margin: 0;
padding: 0;
border: none;
}

blockquote {
font-size: 11px;
color: #777;
margin-left: 2px;
padding-left: 10px;
border-left: 5px solid #ddd;
}

code, pre {
font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
color: #666;
font-size: 12px;
}

pre.literal-block {
margin: 10px;
background: #eee;
padding: 6px 8px;
}

code strong {
color: #930;
}

hr {
clear: both;
color: #eee;
background-color: #eee;
height: 1px;
border: none;
margin: 0;
padding: 0;
font-size: 1px;
line-height: 1px;
}

/* TEXT STYLES & MODIFIERS */

.small {
font-size: 11px;
}

.tiny {
font-size: 10px;
}

p.tiny {
margin-top: -2px;
}

.mini {
font-size: 10px;
}

p.mini {
margin-top: -3px;
}

.help, p.help, form p.help {
color: $dim-text-color;
font-size: 12px;
}

.help-tooltip {
cursor: help;
}

p img, h1 img, h2 img, h3 img, h4 img, td img {
vertical-align: middle;
}

.quiet, a.quiet:link, a.quiet:visited {
font-weight: normal;
color: $dim-text-color;
}

.float-right {
float: right;
}

.float-left {
float: left;
}

.clear {
clear: both;
}

.align-left {
text-align: left;
}

.align-right {
text-align: right;
}

.example {
margin: 10px 0;
padding: 5px 10px;
background: #efefef;
}

.nowrap {
white-space: nowrap;
}

/* ACTION ICONS */

.addlink {
vertical-align: middle;

&:before {
@include font-icon;
content: $icon-add3;
vertical-align: middle;
margin-right: 4px;
}
}

.changelink, .inlinechangelink {
vertical-align: middle;

&:before {
@include font-icon;
content: $icon-edit;
vertical-align: middle;
margin-right: 4px;
}
}

.deletelink {
vertical-align: middle;

&:before {
@include font-icon;
content: $icon-cross;
vertical-align: middle;
margin-right: 4px;
}
}

.inlineviewlink {
vertical-align: middle;

&:before {
@include font-icon;
content: $icon-open-external;
vertical-align: middle;
margin-right: 4px;
}
}

/* BOOLEAN ICONS */

img[src$="admin/img/icon-yes.gif"], img[src$="admin/img/icon-yes.svg"],
img[src$="admin/img/icon-no.gif"], img[src$="admin/img/icon-no.svg"],
img[src$="admin/img/icon-unknown.gif"], img[src$="admin/img/icon-unknown.svg"] {
display: none;

+ span {
font-weight: bold;
color: $success-text-color;
}
}

img[src$="admin/img/icon-yes.gif"] + span, img[src$="admin/img/icon-yes.svg"] + span {
color: $success-text-color;
}

img[src$="admin/img/icon-no.gif"] + span, img[src$="admin/img/icon-no.svg"] + span {
color: $warning-text-color;
}

/* LOADING INDOCATOR */

.loading-indicator {
display: inline-block;
font-size: 32px;
color: $button-hover-background-color;
animation: spin 4s linear infinite;

&-wrapper {
text-align: center;
padding: 40px 0;
}
}

+ 513
- 0
static/jet/css/_dashboard.scss 查看文件

@@ -0,0 +1,513 @@
@import "globals";

/* DASHBOARD */

.dashboard {
.module {
margin-bottom: 10px;

table {
th {
width: 100%;
}

td {
white-space: nowrap;

a {
display: block;
padding-right: .6em;
}
}
}
}

#content {
max-width: 600px;

@include for-mobile {
max-width: none;
}
}

&.jet #content {
max-width: none;
}

.breadcrumbs {
margin-bottom: 20px;

@include for-mobile {
display: none;
}
}

&.jet.change-form .breadcrumbs {
@include for-mobile {
display: block;
}
}
}

/* RECENT ACTIONS MODULE */

#recent-actions-module {
> h2 {
padding: 6px;
text-transform: uppercase;
font-size: 11px;
font-weight: bold;
margin: 0;
}

> h3 {
display: none;
}
}

.module ul.actionlist {
padding: 0;
margin: 0 0 2px 0;
border-collapse: collapse;
background: $content-background-color;
border-radius: 4px;
overflow-x: auto;
box-shadow: 0 2px 0 0 $content-border2-color;
}

ul.actionlist li {
padding: 8px;
list-style-type: none;
font-size: 13px;
border-bottom: 1px solid $content-border-color;
white-space: normal;
overflow: hidden;
text-overflow: ellipsis;

br {
display: none;
}
}

/* JET DASHBOARD */

.dashboard {
&-container {
min-height: 100%;
}

@for $i from 1 through 5 {
&-container.columns_#{$i} &-column-wrapper {
width: (100% / $i);

@include for-mobile {
width: 100%;
}
}
}

&-tools {
position: absolute;
top: ($top-height + 10px * 2) / 2 - 30px / 2;
right: 20px + 175px + 20px;

@include for-mobile {
display: none;
position: static;
margin: 10px 20px 0 20px;
padding: 10px;
background: $content-background-color;
border-radius: 5px;
}

@include for-phone {
margin: 10px 10px 0 10px;
}

.button {
vertical-align: middle;
}

&.visible {
@include for-mobile {
display: block;
}
}

&-toggle {
&-icon {
vertical-align: middle;
}

&-container {
display: none;
margin: 20px 20px 0 20px;
text-align: right;

@include for-mobile {
display: block;
}

@include for-phone {
margin: 10px 10px 0 10px;
}
}
}
}

&-column {
margin-left: 10px;
border: 2px dashed transparent;
min-height: 100px;
border-radius: 4px;

@include for-mobile {
margin-left: 0;
min-height: 0;
}

&-wrapper {
float: left;
min-width: 200px;
}

&.first {
margin-left: 0;
}

&.active {
border-color: $content-border2-color;
}

&.hovered { }
}

&-item {
background: $background-color;
border-radius: 4px;
margin-bottom: 20px;
transition: background $transitions-duration;

@include for-mobile {
margin-bottom: 10px;
}

&:last-child {
margin-bottom: 0;

@include for-mobile {
margin-bottom: 10px;
}
}

&.collapsed {
background-color: $content-contrast3-background-color;
}

&.ui-sortable-helper {
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.25);
}

&.placeholder {
background-color: $content-selected-background-color;
}

&-header {
padding: 0 10px 0 6px;

&-title {
display: block;
font-size: 11px;
font-weight: bold;
text-transform: uppercase;
line-height: 30px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

&-drag {
float: right;
line-height: 30px !important;
margin-left: 10px;

html.touchevents & {
display: none;
}
}

&-collapse-button {
font-size: 13px;
vertical-align: middle;
font-weight: bold !important;
}

&-buttons {
float: right;
margin-left: 10px;
font-size: 13px;
line-height: 30px;
vertical-align: middle;
visibility: hidden;

a {
vertical-align: middle;
}

html.touchevents & {
visibility: visible;
}
}

&:hover &-buttons {
visibility: visible;
}
}

&-content {
background: $content-background-color;
border-radius: 4px;
box-shadow: 0 2px 0 0 $content-border2-color;
overflow: hidden;

&.contrast {
background: $content-contrast2-background-color;
color: $content-contrast2-text-color;

.loading-indicator {
color: $content-contrast2-text-color;
}
}

ul:not(.inline) {
@extend .clear-list;

li {
display: block;
border-bottom: 1px solid $content-border-color;
font-size: 13px;
padding: 8px;

&.contrast {
background: $content-contrast2-background-color;
font-size: 12px;

&, & a, & a:visited, & a:hover {
color: $content-contrast2-text-color;
text-decoration: none;
text-transform: uppercase;
}
}

&:last-child {
border-bottom: 0;
}

.float-right {
float: right;
position: relative;
}

.dim {
text-transform: lowercase;
font-size: 11px;
color: $dim-text-color;
}

.warning {
color: $error-text-color;
}
}
}

ul.inline {
@extend .clear-list;
display: inline-block;

li {
display: inline-block;
margin-left: 10px;

&:first-child {
margin-left: 0;
}

.nowrap {
white-space: nowrap;
}
}

&.bordered li {
border-left: 1px solid $content-border2-color;
margin-left: 0;
padding: 0 10px;

&:first-child {
border-left: 0;
}
}
}

.padding {
padding: 10px;
}

.center {
text-align: center;
}

.big {
font-size: 20px;
font-weight: bold;
}

.highlight {
color: $link-color;
}

.dim {
color: $dim-text-color;
}

.nowrap {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

canvas {
.chart {
&-fillColor {
color: $chart-fillColor;
}

&-strokeColor {
color: $chart-strokeColor;
}

&-pointColor {
color: $chart-pointColor;
}

&-pointHighlightFill {
color: $chart-pointHighlightFill;
}

&-scaleGridLineColor {
color: $chart-scaleGridLineColor;
}

&-scaleLineColor {
color: $chart-scaleLineColor;
}

&-scaleFontColor {
color: $chart-scaleFontColor;
}
}
}

table {
width: 100%;
box-shadow: none;
}
}

&-collapse .icon-arrow-up {
display: inline;
}

&-collapse .icon-arrow-down {
display: none;
}

&.collapsed &-content {
display: none;
}

&.collapsed &-collapse .icon-arrow-up {
display: none;
}

&.collapsed &-collapse .icon-arrow-down {
display: inline;
}
}
}

.add-dashboard {
+ .select2 {
background-color: transparent;

@include for-mobile {
min-width: 160px;
max-width: 160px;
}

@include for-phone {
width: 100% !important;
max-width: none;
margin-bottom: 5px;
}

.select2-selection {
border-radius: 4px 0 0 4px !important;
border-width: 0;

@include for-mobile {
border-radius: 4px !important;
border-width: 1px;
}
}
}

&-link {
border-radius: 0 4px 4px 0 !important;
padding: 0 10px !important;

@include for-mobile {
margin-left: 6px;
border-radius: 4px !important;
margin-right: 5px;
}

@include for-phone {
margin-left: 0;
}

&-icon {
vertical-align: middle;
}

&-label {
display: none;
vertical-align: middle;
margin-left: 4px;
}
}
}

.reset-dashboard-link {
@include for-mobile {
float: right;
}

@include for-phone {
float: none;
}

&-icon {
vertical-align: middle;
}

&-label {
display: none;
vertical-align: middle;
margin-left: 6px;

@include for-mobile {
display: inline;
}
}
}

+ 92
- 0
static/jet/css/_delete-confirmation.scss 查看文件

@@ -0,0 +1,92 @@
@import "globals";

.delete-confirmation {
#content > h1 + p + h2 + ul {
background: $warning-color;
color: $warning-text-color;
border-radius: 4px;
padding: 20px;
list-style-type: none;
margin: 0;

li {
list-style: none;
line-height: 1.8;
}
}

#content > ul:nth-of-type(2), #content > h1 + p + ul {
background: $content-background-color;
border-radius: 4px;
box-shadow: 0 2px 0 0 $content-border2-color;

&, ul {
list-style-type: none;
margin: 0;
padding: 0;

li {
list-style: disc;
line-height: 1.8;
}
}

ul {
margin-left: 20px;
}

> li {
padding: 8px;
border-bottom: 1px solid $content-border-color;
font-size: 13px;
list-style: none;

&:last-child {
border-bottom: 0;
}
}
}

#content form {
margin-top: 20px;

input[type="submit"] {
background-color: $danger-button-background-color;
color: $danger-button-text-color;
font-size: 12px;
font-weight: lighter;
padding: 0 20px;
text-transform: uppercase;
vertical-align: middle;
margin-bottom: 5px;

@include for-mobile {
display: block;
width: 100%;
}

&:hover, &:focus {
background-color: $button-hover-background-color;
color: $button-hover-text-color;
}

&:active {
background-color: $button-active-background-color;
color: $button-active-text-color;
}
}

.button {
vertical-align: middle;
margin-left: 10px;
margin-bottom: 5px;
box-sizing: border-box;

@include for-mobile {
margin-left: 0;
display: block;
width: 100%;
}
}
}
}

+ 165
- 0
static/jet/css/_forms.scss 查看文件

@@ -0,0 +1,165 @@
@import "globals";

/* FORM BUTTONS */

.button, input[type="submit"], input[type="button"], .object-tools a {
&, &:visited, &:hover {
display: inline-block;
background-color: $button-background-color;
color: $button-text-color;
border: 0;
border-radius: 4px;
height: 32px;
line-height: 32px;
outline: 0;
font-size: 12px;
font-weight: normal;
text-align: center;
padding: 0 10px;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
max-width: 100%;
box-sizing: border-box;
appearance: none;
transition: background $transitions-duration;
}

&.default {
font-weight: lighter;
background-color: $primary-button-background-color;
color: $primary-button-text-color;
text-transform: uppercase;
margin: 0 8px 0 0;
padding: 0 20px;
}

&.transparent {
background-color: transparent;
}

&:hover, &:focus {
background-color: $button-hover-background-color;
color: $button-hover-text-color;
}

&:active {
background-color: $button-active-background-color;
color: $button-active-text-color;
}
}

.button[disabled], input[type=submit][disabled], input[type=button][disabled] {
opacity: 0.4;
}

input[type="text"], input[type="email"], input[type="password"], input[type="url"], input[type="number"], textarea, select, .vTextField {
border-radius: 4px;
font-size: 13px;
height: $input-height;
white-space: nowrap;
outline: 0;
box-sizing: border-box;
margin: 0;
background-color: $input-background-color;
color: $input-text-color;
border: 1px solid $input-border-color;
padding: 0 12px;
appearance: none;
transition: background $transitions-duration, box-shadow $transitions-duration, border $transitions-duration;

//noinspection CssInvalidPseudoSelector
&::placeholder {
color: $input-placeholder-color;
}

@include for-mobile {
fieldset.module & {
box-shadow: inset 0 2px 6px 0 rgba(0, 0, 0, 0.04)
}
}

&:focus, fieldset.module &:focus {
box-shadow: 0 0 4px 0 $input-shadow-color;
border-color: $input-background-color;
}
}

textarea {
height: auto;
line-height: normal;
padding: 12px;
white-space: pre-wrap;
vertical-align: top;
}

.segmented-button {
&, &:visited, &:hover {
border: 0;
height: 32px;
line-height: 32px;
font-size: 12px;
text-align: center;
background-color: $button-background-color;
color: $button-text-color;
padding: 0 10px;
display: inline-block;
text-transform: none;
border-radius: 0;
transition: background $transitions-duration;
}

&:hover, &:focus {
background-color: $button-hover-background-color;
color: $button-hover-text-color;
}

&:active {
background-color: $button-active-background-color;
color: $button-active-text-color;
}

&.disabled {
background-color: $button-background-color !important;
color: $button-text-color;
opacity: 0.5;
}

&.left {
border-radius: 4px 0 0 4px;
}

&.right {
border-radius: 0 4px 4px 0;
}
}

input[type=checkbox] {
display: none;

&#action-toggle {
display: none !important;
}

+ label:before {
@include font-icon;
color: $input-icon-color;
font-size: 12px;
content: $icon-checkbox-outline;
letter-spacing: 5px;

.action-checkbox-column & {
color: $content-contrast2-text-color;
}
}

&:checked + label:before {
content: $icon-checkbox;
}
}

/* SELECTOR */

.selector {
display: none;
}

+ 3
- 0
static/jet/css/_globals.scss 查看文件

@@ -0,0 +1,3 @@
@import "variables";
@import "helpers";
@import "icons/variables";

+ 277
- 0
static/jet/css/_header.scss 查看文件

@@ -0,0 +1,277 @@
@import "globals";

/* HEADER */

#branding {
display: none;
background-color: $sidebar-contrast-background-color;
color: $sidebar-contrast-text-color;
padding: 14px 32px 14px 36px;
text-align: center;
position: relative;
height: auto !important;
min-height: 52px;
box-sizing: border-box;

@include for-mobile {
min-height: 0;
}

&.initialized {
display: block;
}

&:empty {
display: none;
}

&:before, &:after {
content: "";
display: inline-block;
vertical-align: middle;
height: 100%;
}

h1, h2 {
display: inline-block;
padding: 0 10px;
margin: 0;
text-transform: uppercase;
font-size: 11px;
vertical-align: middle;
}

a, a:visited, a:hover {
color: $sidebar-contrast-text-color;
}

a:hover {
color: $sidebar-hover-action-color;
}

&-pin {
position: absolute;
top: 50%;
right: 4px;
margin-top: -11px;
display: inline-block;
font-size: 22px;
cursor: pointer;
transition: transform 0.3s;
transform: rotate(-45deg);

body.menu-pinned & {
transform: rotate(45deg);
}

&:hover {
color: #fff;
}

@include for-mobile {
display: none;
}
}

&-menu {
position: absolute;
top: 50%;
left: 20px;
margin-top: -8px;
display: inline-block;
font-size: 16px;
cursor: pointer;

&:hover {
color: #fff;
}

@include for-mobile() {
display: none;
}
}
}

#user-tools {
display: none;

&.initialized {
display: block;
}
}

.user-tools {
ul {
position: absolute;
top: ($top-height + 10px * 2) / 2 - 30px / 2;
right: 20px;
border: 1px solid $top-border-color;
border-radius: 4px;
font-size: 12px;
margin: 0;
padding: 0;
list-style: none;
display: inline-block;
width: 175px;
z-index: 4;

@include for-mobile {
position: fixed;
top: 0;
right: 0;
width: auto;
max-width: 200px;
color: $sidebar-link-color;
border: 0;
border-left: 1px solid $sidebar-contrast-background-color;
border-radius: 0;
transform: none;
transition: transform $transitions-duration;

body.scroll-to-bottom & {
transform: translate3d(0, -100%, 0);
}

&.sidebar-opened {
transform: translate3d(100%, 0, 0);
}
}

&.opened {
background-color: $top-dropdown-background-color;
border-color: transparent;
color: $top-dropdown-text-color;

@include for-mobile {
border-radius: 0 0 0 4px;
border: 0;
}
}

li {
display: block;
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

li.user-tools-welcome-msg {
font-weight: bold;
padding: 0 10px 0 14px;
line-height: 30px;

@include for-mobile {
padding-left: 18px;
line-height: $sidebar-header-height;
}

&:before {
@include font-icon;
content: $icon-arrow-down;
font-weight: normal;
float: right;
color: #47bac1;
font-size: 24px;
vertical-align: middle;
line-height: 30px;
transition: color $transitions-duration;
margin-left: 5px;

@include for-mobile {
line-height: $sidebar-header-height;
font-size: 20px;
font-weight: bold;
}
}
}

&.opened .user-tools-welcome-msg {
border-bottom: 1px solid $top-dropdown-border-color;

&:before {
color: $top-dropdown-icon-color;
transform: rotate(180deg);
}
}

li.user-tools-link {
display: none;

a, a:visited, a:hover {
display: block;
line-height: 30px;
padding: 0 14px;
color: $top-dropdown-link-color;
text-decoration: none;

@include for-mobile {
line-height: $sidebar-header-height;
}
}

a:hover {
color: $top-dropdown-hover-link-color;
text-decoration: underline;
}
}

&.opened li.user-tools-link {
display: block;
}

li.user-tools-contrast-block {
display: none;
padding: 8px 14px;
background: $top-dropdown-contrast-background-color;
color: $top-dropdown-contrast-text-color;
white-space: normal;
}

&.opened li.user-tools-contrast-block {
display: block;
}
}

&-contrast-block {
&-title {
text-transform: uppercase;
font-size: 10px;
font-weight: bold;
margin-bottom: 6px;
}
}

&-theme-link {
display: inline-block;
margin: 0 5px 5px 0;
width: 14px;
height: 14px;
border: 1px solid $top-dropdown-contrast-background-color;
border-radius: 3px;

@include for-mobile {
width: 24px;
height: 24px;
margin: 0 8px 8px 0;
}

&:last-child {
margin-right: 0;
}

&.selected {
box-shadow: 0 0 1px 1px $top-dropdown-selected-color;
}
}
}

.theme-chooser {
display: none;

&.initialized {
display: block;
}
}

+ 164
- 0
static/jet/css/_helpers.scss 查看文件

@@ -0,0 +1,164 @@
.hidden {
display: none;
}

.clear-list {
margin: 0;
padding: 0;
list-style: none;
}

.fl {
float: left;
}

.fr {
float: right;
}

.cf:before, .cf:after {
content: "";
display: table;
}

.cf:after {
clear: both;
}

@each $class, $style in (p, padding), (pt, padding-top), (pr, padding-right), (pb, padding-bottom), (pl, padding-left),
(m, margin), (mt, margin-top), (mr, margin-right), (mb, margin-bottom), (ml, margin-left) {
@for $i from 1 through 8 {
$value: $i * 10;
.#{$class}#{$value} {
#{$style}: #{$value}px;
}
}
}

.pos_rel {
position: relative;
}

.pos_abs {
position: absolute;
}

.fill_width {
width: 100% !important;
}

@mixin for-width($width) {
@media only screen and (max-width: $width) {
@content;
}
}

@mixin for-desktop {
@media only screen and (min-width: $mobile-max-width) {
@content;
}
}

@mixin for-mobile {
@include for-width($mobile-max-width) {
@content;
}
}

@mixin for-phone {
@include for-width($phone-max-width) {
@content;
}
}

@keyframes spin { 100% { transform: rotate(360deg); } }

@mixin font-icon {
font-family: 'jet-icons';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;

/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: inline-block;
}

/// Convert angle
/// @author Chris Eppstein
/// @param {Number} $value - Value to convert
/// @param {String} $unit - Unit to convert to
/// @return {Number} Converted angle
@function convert-angle($value, $unit) {
$convertable-units: deg grad turn rad;
$conversion-factors: 1 (10grad/9deg) (1turn/360deg) (3.1415926rad/180deg);
@if index($convertable-units, unit($value)) and index($convertable-units, $unit) {
@return $value
/ nth($conversion-factors, index($convertable-units, unit($value)))
* nth($conversion-factors, index($convertable-units, $unit));
}

@warn "Cannot convert `#{unit($value)}` to `#{$unit}`.";
}

/// Test if `$value` is an angle
/// @param {*} $value - Value to test
/// @return {Bool}
@function is-direction($value) {
$is-direction: index((to top, to top right, to right top, to right, to bottom right, to right bottom, to bottom, to bottom left, to left bottom, to left, to left top, to top left), $value);
$is-angle: type-of($value) == 'number' and index('deg' 'grad' 'turn' 'rad', unit($value));

@return $is-direction or $is-angle;
}

/// Convert a direction to legacy syntax
/// @param {Keyword | Angle} $value - Value to convert
/// @require {function} is-direction
/// @require {function} convert-angle
@function legacy-direction($value) {
@if is-direction($value) == false {
@warn "Cannot convert `#{$value}` to legacy syntax because it doesn't seem to be an angle or a direction";
}

$conversion-map: (
to top : bottom,
to top right : bottom left,
to right top : left bottom,
to right : left,
to bottom right : top left,
to right bottom : left top,
to bottom : top,
to bottom left : top right,
to left bottom : right top,
to left : right,
to left top : right bottom,
to top left : bottom right
);

@if map-has-key($conversion-map, $value) {
@return map-get($conversion-map, $value);
}

@return 90deg - convert-angle($value, 'deg');
}

/// Mixin printing a linear-gradient
/// as well as a plain color fallback
/// and the `-webkit-` prefixed declaration
/// @access public
/// @param {String | List | Angle} $direction - Linear gradient direction
/// @param {Arglist} $color-stops - List of color-stops composing the gradient
@mixin linear-gradient($direction, $color-stops...) {
@if is-direction($direction) == false {
$color-stops: ($direction, $color-stops);
$direction: 180deg;
}

background: nth(nth($color-stops, 1), 1);
background: -webkit-linear-gradient(legacy-direction($direction), $color-stops);
background: linear-gradient($direction, $color-stops);
}

+ 118
- 0
static/jet/css/_login.scss 查看文件

@@ -0,0 +1,118 @@
@import "globals";

/* LOGIN FORM */

body.login {
background: $login-background-color;
padding: 100px 30px 30px 30px;

@include for-phone {
padding: 30px 10px 10px 10px;
}

#container {
background: $login-content-background-color;
border-radius: 4px;
min-height: 0;
padding: 0;
margin-left: auto;
margin-right: auto;
width: 400px;

@include for-phone {
width: 100%;
}
}

#header {
background: $login-header-background-color;
color: $login-header-text-color;
text-transform: uppercase;
font-size: 11px;
font-weight: bold;
border-radius: 4px 4px 0 0;
}

#content {
padding: 30px;
}

.sidebar {
display: none;
}

.sidebar-header {
display: none;
}

.breadcrumbs {
display: none;
}

#content-main {
width: 100%;
}

.form-row {
padding: 4px;
float: left;
width: 100%;
box-sizing: border-box;

label {
padding-right: 0.5em;
line-height: 2em;
font-size: 1em;
clear: both;

&.required:after {
content: '';
}
}

#id_username, #id_password {
clear: both;
padding: 6px;
width: 100%;
box-sizing: border-box;
}
}

span.help {
font-size: 10px;
display: block;
}

.submit-row {
clear: both;
padding: 20px 0 0 0;
margin: 0;
text-align: center;

input[type="submit"] {
font-size: 12px;
font-weight: lighter;
background-color: $primary-button-background-color;
color: $primary-button-text-color;
text-transform: uppercase;

&:hover, &:focus {
background-color: $button-hover-background-color;
color: $button-hover-text-color;
}

&:active {
background-color: $button-active-background-color;
color: $button-active-text-color;
}
}
}

.password-reset-link {
text-align: center;
}

#footer {
padding: 0;
}
}

+ 112
- 0
static/jet/css/_messages.scss 查看文件

@@ -0,0 +1,112 @@
@import "globals";

/* MESSAGES & ERRORS */

ul.messagelist {
padding: 0;
margin: 0;

li {
display: block;
margin: 0 20px 10px 20px;
border-radius: 6px;
padding: 10px;

@include for-phone {
margin-left: 10px;
margin-right: 10px;
}

&.success {
background: $success-color;
color: $success-text-color;
}

&.warning, &.error {
background: $warning-color;
color: $warning-text-color;
}

&.info, &.debug {
background: $info-color;
color: $info-text-color;
}
}
}

.errornote {
display: block;
margin: 0 0 10px 0;
border-radius: 6px;
padding: 10px;
background: $warning-color;
color: $warning-text-color;
}

ul.errorlist {
margin: 0 0 4px;
padding: 0;
color: #ba2121;
background: #fff;

li {
font-size: 13px;
display: block;
margin-bottom: 4px;

&:first-child {
margin-top: 0;
}

a {
color: inherit;
text-decoration: underline;
}
}

td & {
margin: 0;
padding: 0;

li {
margin: 0;
}
}
}

.form-row.errors {
ul.errorlist li {
padding-left: 0;
}
}

div.system-message {
margin: 0 20px 10px 20px;
border-radius: 6px;
padding: 10px;
background: $warning-color;
color: $warning-text-color;

@include for-phone {
margin-left: 10px;
margin-right: 10px;
}

p.system-message-title {
margin: 0;

&:before {
@include font-icon;
content: $icon-cross;
vertical-align: middle;
margin-right: 4px;
color: $warning-text-color;
}
}
}

.description {
font-size: 12px;
margin: 0;
padding: 6px 0 0 0;
}

+ 55
- 0
static/jet/css/_modules.scss 查看文件

@@ -0,0 +1,55 @@
@import "globals";

/* MODULES */

fieldset.module {
background-color: $content-background-color;
border-radius: 4px;
padding: 14px;
border: 0;

@include for-mobile {
padding: 10px;
}

@include for-phone {
padding: 5px;
}
}

.module {
p, ul, h3, h4, dl, pre {
padding-left: 10px;
padding-right: 10px;
}

blockquote {
margin-left: 12px;
}

ul, .ol {
margin-left: 1.5em;
}

h3 {
margin-top: .6em;
}

table {
border-collapse: collapse;
}
}

.module h2, .module caption, .inline-group h2 {
padding: 6px;
text-align: left;
text-transform: uppercase;
font-size: 11px;
font-weight: bold;

a {
color: $text-color;
font-size: 11px;
font-weight: bold;
}
}

+ 69
- 0
static/jet/css/_object-tools.scss 查看文件

@@ -0,0 +1,69 @@
@import "globals";

/* OBJECT TOOLS */

.object-tools {
display: none;
text-align: right;
padding: 0;
margin: 0 0 20px 0;

@include for-mobile {
text-align: left;
}

&.initialized {
display: block;
}

.form-row & {
margin-top: 5px;
margin-bottom: 5px;
float: none;
height: 2em;
padding-left: 3.5em;
}

li {
display: inline-block;
margin-left: 5px;
margin-bottom: 5px;
list-style-type: none;
vertical-align: top;

@include for-mobile {
margin-left: 0;
margin-right: 5px;
}
}

body.change-list & {
float: right;
position: relative;
z-index: 1;

@include for-mobile {
float: none;
}

li {
display: list-item;
}
}

a.addlink {
&:before {
@include font-icon;
color: $button-text-color;
font-size: 13px;
content: $icon-add;
vertical-align: middle;
margin-top: -3px;
margin-right: 3px;
}

&:hover:before {
color: $button-hover-text-color;
}
}
}

+ 104
- 0
static/jet/css/_relatedpopup.scss 查看文件

@@ -0,0 +1,104 @@
@import "globals";

/* POPUP */

.related-popup {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 4;
padding-left: 250px;
box-sizing: border-box;
display: none;
background: $background-color;
background-clip: content-box;
-webkit-overflow-scrolling: touch;
overflow-y: scroll;

@include for-mobile {
padding-left: 0;
}

iframe {
border: 0;
width: 100%;
height: 100%;
}

&-container {
display: none;
background-color: transparentize($sidebar-popup-overlay-color, 0.5);
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 15;

.loading-indicator {
display: none;
font-size: 96px;
color: $content-contrast2-text-color;
position: absolute;
top: 50%;
left: 50%;
margin-left: -48px;
margin-top: -48px;
animation: spin 4s linear infinite;
}
}

&-back {
&, &:visited, &:hover {
display: none;
background: $content-contrast2-background-color;
color: $content-contrast2-text-color;
position: absolute;
top: 20px;
left: 250px;
z-index: 5;
width: 100px;
padding: 14px 6px 14px 0;
text-align: center;
margin-left: -100px;
box-sizing: border-box;
text-transform: uppercase;
border-radius: 6px 0 0 6px;
transition: background-color $transitions-duration, color $transitions-duration;

@include for-mobile {
margin-left: 0;
top: auto;
bottom: 10px;
left: 10px;
width: auto;
padding: 10px;
border-radius: 6px;
}
}

&:hover, &:focus {
background: $background-color;
color: $text-color;

@include for-mobile {
background: $button-hover-background-color;
color: $button-hover-text-color;
}
}

&-icon {
vertical-align: middle;
font-weight: bold;
font-size: 18px;
}

&-label {
@include for-mobile {
display: none;
}
}
}
}

+ 563
- 0
static/jet/css/_sidebar.scss 查看文件

@@ -0,0 +1,563 @@
@import "globals";

.sidebar {
position: fixed;
width: $sidebar-width;
top: 0;
left: 0;
bottom: 0;
z-index: 6;
background-color: $sidebar-background-color;
color: $sidebar-text-color;
transition: background-color $transitions-duration, transform $transitions-duration;
transform: translate3d(-100%, 0, 0);

@include for-mobile {
width: 360px;
padding-bottom: 0;
transition: transform $transitions-duration cubic-bezier(0, 0.5, 0.5, 1);
}

@include for-phone {
width: 80%;
}

&.sidebar-opened {
transform: none;

@include for-mobile {
box-shadow: 0 0 30px 10px rgba(0, 0, 0, 0.2);
}
}

body.menu-pinned & {
@include for-desktop {
transform: none;
}
}

&-backdrop {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #000;
opacity: 0;
z-index: 5;
}

&-header {
height: $sidebar-header-height;
line-height: $sidebar-header-height;
transition: transform $transitions-duration;

&.sidebar-opened {
@include for-mobile {
transform: translate3d(360px, 0, 0);
}

@include for-phone {
transform: translate3d(80%, 0, 0);
}
}

&-wrapper {
display: none;
background-color: $sidebar-background-color;
color: $sidebar-text-color;
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: 6;
transition: background-color $transitions-duration, transform $transitions-duration;

@include for-mobile {
display: block;

body.scroll-to-bottom & {
transform: translate3d(0, -100%, 0);
}
}

&.sidebar-opened {
background-color: $sidebar-contrast-background-color;
transform: none !important;
}
}

&-menu {
&, &:visited, &:hover {
display: inline-block;
font-size: 14px;
text-transform: uppercase;
color: $sidebar-link-color;
line-height: $sidebar-header-height;
padding: 0 16px;
border-right: 1px solid $sidebar-contrast-background-color;
}

&-icon {
font-size: 16px;
vertical-align: middle;

&.icon-cross {
display: none;
font-size: 20px;
color: $sidebar-action-color;
}
}
}

&.sidebar-opened &-menu-icon {
&.icon-menu {
display: none;
}

&.icon-cross {
display: inline;
}
}
}

&-close {
display: none;
float: right;
padding: 4px;
margin: 12px 18px 0 12px;
background-color: $sidebar-popup-search-input-background-color;
border-radius: 5px;

@include for-mobile {
display: inline-block;
}

&-icon {
color: $sidebar-popup-search-input-text-color;
font-size: 28px;
font-weight: bold;
vertical-align: middle;
}
}

&-wrapper {
height: 100%;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
transform: translate3d(0, 0, 0);
}

&-section {
padding: 20px 0;
border-bottom: 1px solid $sidebar-contrast-background-color;
transition: border-bottom-color 0.3s;

@include for-mobile {
padding: 10px 0;
}

&:last-child, &.last {
border-bottom: 0;
}
}

&-title {
display: block;
color: $sidebar-text-color;
text-transform: uppercase;
font-size: 11px;
font-weight: bold;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding: 0 14px 0 24px;
margin-bottom: 10px;
transition: color $transitions-duration;

@include for-mobile {
padding: 12px 18px 12px 30px;
margin-bottom: 0;

html.touchevents & {
padding-left: 20px;
}
}

&-link {
&, &:visited, &:hover {
color: $sidebar-text-color;
font-weight: bold;
transition: color $transitions-duration;
}

&:hover {
color: $sidebar-hover-title-action-item-color;
}
}
}

&-link {
&, &:visited, &:hover {
display: block;
color: $sidebar-link-color;
padding: 8px 12px 8px 20px;
vertical-align: middle;
transition: color $transitions-duration, background-color $transitions-duration;
position: relative;

@include for-mobile {
padding: 12px 18px 12px 30px;

html.touchevents & {
padding-left: 20px;
}
}

&.icon {
font-size: 11px;
text-transform: uppercase;
}
}

&:hover, &.selected {
color: $sidebar-hover-link-color;
background-color: $sidebar-hover-background-color;
}

&-icon {
font-size: 18px;
vertical-align: middle;
margin-right: 6px;
color: $sidebar-icon-color;
transition: color $transitions-duration;
}

&-label {
vertical-align: middle;
display: block;
transition: transform $transitions-duration;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;

html.touchevents .editing & {
transform: translate3d(20px, 0, 0);
}
}
}

&-center-link {
&, &:visited, &:hover {
display: block;
color: $sidebar-action-color;
font-size: 11px;
text-align: center;
padding: 8px 0;
text-transform: uppercase;
transition: color $transitions-duration, background-color $transitions-duration;

@include for-mobile {
padding: 12px 20px;
}
}

&:hover {
color: $sidebar-hover-action-color;
background-color: $sidebar-hover-background-color;
}
}

&-left {
position: absolute;
left: 4px;

html.touchevents & {
top: 0;
bottom: 0;
transition: opacity $transitions-duration, transform $transitions-duration;
}

&.collapsible {
display: none;

html.touchevents & {
display: inline-block;
width: 0;
opacity: 0;
transform: scale(0);
overflow: hidden;
}
}

&-pin, &-unpin {
&, &:visited, &:hover {
display: inline-block;
position: absolute;
top: 1px;
font-size: 14px;
color: $sidebar-action-color;
transition: color $transitions-duration;

html.touchevents & {
position: static;
padding: 6px;
margin-top: 2px;
font-size: 18px;

@include for-mobile {
margin-top: 6px;
}
}
}

&:hover {
color: $sidebar-hover-action-color;
}
}

.apps-list-pinned &-pin {
display: none;
}

.apps-list &-unpin {
display: none;
}
}

html.no-touchevents &-link:hover &-left.collapsible {
display: inline-block;
}

html.touchevents .editing &-left.collapsible {
opacity: 1;
transform: scale(1);
width: auto;
}

&-right {
float: right;
margin-left: 10px;

&.collapsible {
display: none;

html.touchevents & {
display: inline;
}
}

&-edit {
display: none;
font-size: 18px;

html.touchevents & {
display: inline;
}
}

&-plus {
font-size: 14px;
outline: 0;
}

&-arrow {
color: $sidebar-arrow-color;
font-size: 16px;
font-weight: bold !important;
transition: color $transitions-duration, opacity $transitions-duration;

html.touchevents .editing & {
opacity: 0;
}
}

&-remove {
&, &:visited, &:hover {
position: relative;
color: $sidebar-action-color;
transition: color $transitions-duration;
}

&:hover {
color: $sidebar-hover-action-color;
}
}
}

&-link:hover &-right.collapsible {
display: inline-block;
}

&-link:hover &-right-arrow {
color: $sidebar-hover-arrow-color;
}

.clone {
display: none;
}

.apps-hide {
&-label {
display: none;
}

&.apps-visible .apps-hide-label.apps-visible {
display: inline;
}

&.apps-hidden .apps-hide-label.apps-hidden {
display: inline;
}
}

&-copyright {
background-color: $sidebar-contrast-background-color;
color: $sidebar-contrast-text-color;
height: 32px;
line-height: 32px;
position: absolute;
bottom: 0;
left: 0;
right: 0;
text-align: center;
font-size: 11px;
font-weight: bold;
transition: background-color $transitions-duration, color $transitions-duration;

@include for-mobile {
display: none;
}
}

&-popup {
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: $sidebar-width;
color: $sidebar-popup-text-color;
background-color: $sidebar-popup-background-color;
overflow-y: auto;
-webkit-overflow-scrolling: touch;

@include for-mobile {
width: 360px;
}

@include for-phone {
width: 80%;
}

&-container {
display: none;
position: fixed;
top: 0;
left: $sidebar-width;
bottom: 0;
right: 0;
z-index: 5;

body.menu-pinned & {
background-color: transparentize($sidebar-popup-overlay-color, 0.5);
}

@include for-mobile {
left: 0;
}
}

&-section {
display: none;
}

&-title {
font-size: 12px;
font-weight: bold;
text-transform: uppercase;
padding: 20px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;

@include for-mobile {
padding: 24px 0 24px 20px;
margin-bottom: 0;
font-size: 14px;
}
}

&-search {
background-color: $sidebar-popup-search-input-background-color;
color: $sidebar-popup-search-input-text-color;
width: 100%;
height: 32px;
text-indent: 20px;
border: 0;
font-size: 13px;
outline: 0;
padding: 0;
margin: 0 0 12px 0;
border-radius: 0;

//noinspection CssInvalidPseudoSelector
&::placeholder {
color: $sidebar-popup-search-input-placeholder-color;
}

@include for-mobile {
font-size: 14px;
height: 40px;
}
}

&-list {
margin: 0;
padding: 0;
list-style: none;

&-item {
display: block;

a, a:visited, a:hover {
color: $sidebar-popup-link-text-color;
padding: 8px 20px;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;

@include for-mobile {
padding: 12px 20px;
}
}

&.selected a {
background-color: $sidebar-popup-hover-link-background-color;
color: $sidebar-popup-hover-link-color;
}
}
}
}

&-container-toggle {
float: left;
display: inline-block;
vertical-align: middle;
cursor: pointer;
line-height: 31px;
padding: 10px 0 10px 20px;

&:hover {
color: $hover-link-color;
}

body.login &, body.menu-pinned & {
display: none;
}

@include for-mobile {
display: none;
}
}
}

+ 197
- 0
static/jet/css/_tables.scss 查看文件

@@ -0,0 +1,197 @@
@import "globals";


/* TABLES */

table {
border-collapse: collapse;
background: $content-background-color;
border-radius: 4px;
overflow-x: auto;
box-shadow: 0 2px 0 0 $content-border2-color;
margin-bottom: 2px;

&.helper {
display: none;
position: fixed;
z-index: 2;
top: 0;
right: 20px;
left: 20px;
width: auto;
border-radius: 0;
box-shadow: none;

body.menu-pinned & {
left: $sidebar-width + 20px;
}

body.menu-pinned.popup & {
left: 20px;
}

@include for-mobile {
display: none !important;
}

thead {
th {
border-radius: 0 !important;
}
}
}

thead th {
background: $content-contrast2-background-color;
color: $content-contrast2-text-color;
text-transform: uppercase;
transition: background-color $fast-transitions-duration;

a:link, a:visited {
color: $content-contrast2-text-color;
}

.text {
a {
display: block;
cursor: pointer;
}
}
}
}

td, th {
padding: 8px;
font-size: 13px;
}

th {
text-align: left;
}

thead th,
tfoot td {
font-weight: normal;
text-align: left;
white-space: nowrap;
vertical-align: middle;
font-size: 12px;

&:first-child {
border-radius: 4px 0 0 0;
}

&:last-child {
border-radius: 0 4px 0 0;
}

&:first-child:last-child {
border-radius: 4px 4px 0 0;
}
}

tfoot td {
border-bottom: none;
border-top: 1px solid #eee;
}

//tr.alt {
//background: #f6f6f6;
//}

tbody tr {
border-bottom: 1px solid $content-border-color;

&:last-child {
border-bottom: 0;
}
}

/* SORTABLE TABLES */

table {
thead th {
&.sortable {
cursor: pointer;

&:hover {
background: $button-hover-background-color;
}
}

&.sorted {
position: relative;
padding-right: 32px;

.text {
display: inline-block;
}

.sortoptions {
display: inline-block;

a {
display: inline-block;
vertical-align: middle;

&.sortremove {
position: absolute;
top: 50%;
right: 18px;
margin-top: -6px;

&:after {
@include font-icon;
content: $icon-cross;
}
}

&.ascending {
position: absolute;
top: 50%;
right: 4px;
margin-top: -6px;

&:after {
@include font-icon;
content: $icon-arrow-down;
font-weight: bold;
}
}

&.descending {
position: absolute;
top: 50%;
right: 4px;
margin-top: -6px;

&:after {
@include font-icon;
content: $icon-arrow-up;
font-weight: bold;
}
}
}
}

.sortpriority {
background: $content-background-color;
color: $text-color;
padding: 1px 5px;
margin-right: 2px;
border-radius: 5px;
font-size: 10px;
}
}
}
}

/* OBJECT HISTORY */

table#change-history {
width: 100%;
}

table#change-history tbody th {
width: 16em;
}

+ 206
- 0
static/jet/css/_variables.scss 查看文件

@@ -0,0 +1,206 @@
/*
* Default variable values
* Create separate themes/theme/_variables.scss to override these variables
*/

/*
* General
*/

$background-color: #ecf2f6 !default;
$text-color: #6f7e95 !default;
$dim-text-color: #d0dbe6 !default;
$error-text-color: #c14747 !default;

$link-color: #47bac1 !default;
$hover-link-color: #639af5 !default;

$font: Arial, sans-serif !default;
$font-size: 14px !default;

$transitions-duration: 0.3s !default;
$fast-transitions-duration: 0.1s !default;

$mobile-max-width: 960px;
$phone-max-width: 480px;

/*
* Sidebar
*/

$sidebar-width: 250px !default;
$sidebar-header-height: 44px !default;

$sidebar-background-color: #354052 !default;
$sidebar-contrast-background-color: #2b3647 !default;
$sidebar-contrast-text-color: #6f7e95 !default;

$sidebar-arrow-color: #639af5 !default;
$sidebar-hover-arrow-color: #639af5 !default;

$sidebar-action-color: #47bac1 !default;
$sidebar-hover-action-color: #639af5 !default;

$sidebar-title-action-color: #47bac1 !default;
$sidebar-hover-title-action-item-color: #639af5 !default;

$sidebar-text-color: #6f7e95 !default;
$sidebar-icon-color: #6f7e95 !default;
$sidebar-link-color: #c0cad8 !default;
$sidebar-hover-link-color: #fff !default;
$sidebar-hover-background-color: #2b3647 !default;

$sidebar-popup-search-input-background-color: #d0dbe6 !default;
$sidebar-popup-search-input-text-color: #6f7e95 !default;
$sidebar-popup-search-input-placeholder-color: transparentize(#6f7e95, 0.5) !default;

$sidebar-popup-background-color: #ecf2f6 !default;
$sidebar-popup-text-color: #6f7e95 !default;
$sidebar-popup-overlay-color: #000 !default;

$sidebar-popup-link-text-color: #6f7e95 !default;
$sidebar-popup-hover-link-color: #fff !default;
$sidebar-popup-hover-link-background-color: #639af5 !default;

/*
* Top
*/

$top-height: 32px !default;

$top-text-color: #6f7e95 !default;
$top-separator-color: #c0d4e8 !default;
$top-link-color: #c0d4e8 !default;
$top-hover-link-color: #639af5 !default;
$top-border-color: #c0d4e8 !default;
$top-icon-color: #47bac1 !default;

$top-dropdown-background-color: #6f7e95 !default;
$top-dropdown-text-color: #ecf2f6 !default;
$top-dropdown-contrast-background-color: #59677e !default;
$top-dropdown-contrast-text-color: #c0cad8 !default;
$top-dropdown-border-color: #76849a !default;
$top-dropdown-link-color: #ecf2f6 !default;
$top-dropdown-hover-link-color: #ecf2f6 !default;
$top-dropdown-icon-color: #ecf2f6 !default;
$top-dropdown-selected-color: #e5e2a5 !default;

/*
* Content
*/

$content-background-color: #fff !default;
$content-contrast-background-color: #f6fafc !default; //inline list bg
$content-contrast2-background-color: #59677e !default; //table header
$content-contrast3-background-color: #d0dbe6 !default; //delete collapsable
$content-selected-background-color: #fffcc0 !default;
$content-contrast2-text-color: #fff !default;
$content-border-color: #f4f4f4 !default; //row bottom
$content-border2-color: #d0dbe6 !default; //table bottom
$content-selected-border-color: #e5e2a5 !default;

$tab-selected-border-color: #639af5 !default;
$tab-error-border-color: #c14747 !default;

/*
* Buttons
*/

$button-background-color: #d0dbe6 !default;
$button-hover-background-color: #639af5 !default;
$button-active-background-color: #6f7e95 !default;
$button-text-color: #6f7e95 !default;
$button-hover-text-color: #fff !default;
$button-active-text-color: #fff !default;

$primary-button-background-color: #47bac1 !default;
$primary-button-text-color: #fff !default;

$danger-button-background-color: #c14747 !default;
$danger-button-text-color: #fff !default;

$background-button-background-color: #fff !default;
$background-button-text-color: #6f7e95 !default;

/*
* Inputs
*/

$input-height: 32px !default;
$input-background-color: #fff !default;
$input-contrast-background-color: #d0dbe6 !default;
$input-border-color: #ecf2f6 !default;
$input-hover-background-color: #639af5 !default;
$input-icon-color: #47bac1 !default;
$input-text-color: #6f7e95 !default;
$input-contrast-text-color: #6f7e95 !default;
$input-hover-text-color: #fff !default;
$input-selected-text-color: #47bac1 !default;
$input-disabled-text-color: #d0dbe6 !default;
$input-placeholder-color: #d0dbe6 !default;
$input-shadow-color: transparentize(#47bac1, 0.25) !default;

$background-input-background-color: #fff !default;
$background-input-border-color: #fff !default;
$background-input-text-color: #6f7e95 !default;

/*
* Messages
*/

$warning-color: #f0dada !default;
$warning-text-color: #d49d9d !default;
$info-color: #e8e8bd !default;
$info-text-color: #b9b97f !default;
$success-color: #c4ecc5 !default;
$success-text-color: #82b982 !default;

/*
* Login
*/

$login-background-color: #354052 !default;
$login-title-text-color: #6f7e95 !default;
$login-title-contrast-text-color: #fff !default;
$login-header-background-color: #59677e !default;
$login-header-text-color: #fff !default;
$login-content-background-color: #fff !default;

/*
* jQuery UI
*/

$jquery-ui-buttonpane-background: #ecf2f6 !default;

$jquery-ui-state-default-background-color: #fff !default;
$jquery-ui-state-default-border-color: #ecf2f6 !default;
$jquery-ui-state-default-text-color: #6f7e95 !default;

$jquery-ui-state-hover-background-color: #639af5 !default;
$jquery-ui-state-hover-border-color: #639af5 !default;
$jquery-ui-state-hover-text-color: #fff !default;

$jquery-ui-state-active-background-color: #47bac1 !default;
$jquery-ui-state-active-border-color: #47bac1 !default;
$jquery-ui-state-active-text-color: #fff !default;

$jquery-ui-state-highlight-background-color: #fff !default;
$jquery-ui-state-highlight-border-color: #639af5 !default;
$jquery-ui-state-highlight-text-color: #639af5 !default;

$jquery-ui-overlay-color: #000 !default;

$jquery-ui-tooltip-background-color: #000 !default;
$jquery-ui-tooltip-text-color: #fff !default;

/*
* Charts
*/

$chart-fillColor: transparentize($hover-link-color, 0.75) !default;
$chart-strokeColor: $hover-link-color !default;
$chart-pointColor: $content-contrast2-text-color !default;
$chart-pointHighlightFill: $hover-link-color !default;
$chart-scaleGridLineColor: transparentize(#000, 0.9) !default;
$chart-scaleLineColor: transparentize(#000, 0.9) !default;
$chart-scaleFontColor: $content-contrast2-text-color !default;

+ 36
- 0
static/jet/css/icons/_variables.scss 查看文件

@@ -0,0 +1,36 @@
$icomoon-font-path: "fonts" !default;

$icon-settings: "\e900";
$icon-menu: "\e901";
$icon-reset: "\e61e";
$icon-search: "\e61d";
$icon-user: "\e61c";
$icon-jet: "\e61b";
$icon-refresh: "\e61a";
$icon-grid: "\e619";
$icon-star: "\e618";
$icon-pin: "\e617";
$icon-new: "\e616";
$icon-edit: "\e615";
$icon-clock: "\e611";
$icon-calendar: "\e612";
$icon-book: "\e60d";
$icon-open-external: "\e60e";
$icon-data: "\e60f";
$icon-question: "\e613";
$icon-tick: "\e614";
$icon-cross: "\e610";
$icon-key: "\e60c";
$icon-arrow-right: "\e60b";
$icon-arrow-left: "\e60a";
$icon-arrow-down: "\e608";
$icon-arrow-up: "\e609";
$icon-checkbox-outline: "\e607";
$icon-remove: "\e600";
$icon-add2: "\e601";
$icon-exit: "\e602";
$icon-add: "\e603";
$icon-add3: "\e604";
$icon-expand: "\e605";
$icon-checkbox: "\e606";


二進制
static/jet/css/icons/fonts/jet-icons.eot 查看文件


+ 43
- 0
static/jet/css/icons/fonts/jet-icons.svg 查看文件

@@ -0,0 +1,43 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="jet-icons" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe600;" glyph-name="remove" d="M810.667 405.333h-597.333v85.333h597.333v-85.333z" />
<glyph unicode="&#xe601;" glyph-name="add2" d="M810.667 405.333h-256v-256h-85.333v256h-256v85.333h256v256h85.333v-256h256v-85.333z" />
<glyph unicode="&#xe602;" glyph-name="exit" d="M430.293 295.040l60.373-60.373 213.333 213.333-213.333 213.333-60.373-60.373 110.293-110.293h-412.587v-85.333h412.587l-110.293-110.293zM810.667 832h-597.333c-47.147 0-85.333-38.187-85.333-85.333v-170.667h85.333v170.667h597.333v-597.333h-597.333v170.667h-85.333v-170.667c0-47.147 38.187-85.333 85.333-85.333h597.333c47.147 0 85.333 38.187 85.333 85.333v597.333c0 47.147-38.187 85.333-85.333 85.333z" />
<glyph unicode="&#xe603;" glyph-name="add" d="M960 576h-320v320c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-320h-320c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h320v-320c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v320h320c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64z" />
<glyph unicode="&#xe604;" glyph-name="add3" d="M792 808h-560.001c-44.201 0-80.001-35.801-80.001-80.001v-560.001c0-44.201 35.801-80.001 80.001-80.001h560.001c44.201 0 80.001 35.801 80.001 80.001v560.001c0 44.201-35.801 80.001-80.001 80.001zM712 408h-160v-160h-80.001v160h-160v80.001h160v160h80.001v-160h160v-80.001z" />
<glyph unicode="&#xe605;" glyph-name="expand" d="M236.544 610.816l290.816-282.624 291.84 282.624 15.36-9.216-307.2-297.984-307.2 297.984 16.384 9.216z" />
<glyph unicode="&#xe606;" glyph-name="checkbox" d="M910.222 960h-796.444c-62.578 0-113.778-51.2-113.778-113.778v-796.444c0-62.578 51.2-113.778 113.778-113.778h796.444c62.578 0 113.778 51.2 113.778 113.778v796.444c0 62.578-51.2 113.778-113.778 113.778v0zM398.222 163.556l-284.444 284.444 79.644 79.644 204.8-204.8 432.356 432.356 79.644-79.644-512-512z" />
<glyph unicode="&#xe607;" glyph-name="checkbox-outline" d="M910.222 846.222v-796.444h-796.444v796.444h796.444zM910.222 960h-796.444c-62.578 0-113.778-51.2-113.778-113.778v-796.444c0-62.578 51.2-113.778 113.778-113.778h796.444c62.578 0 113.778 51.2 113.778 113.778v796.444c0 62.578-51.2 113.778-113.778 113.778v0 0z" />
<glyph unicode="&#xe608;" glyph-name="arrow-down" d="M793.2 640l38.8-41.4-320-342.6-320 342.6 38.6 41.4 281.4-301z" />
<glyph unicode="&#xe609;" glyph-name="arrow-up" d="M793.2 256l38.8 41.4-320 342.6-320-342.6 38.6-41.4 281.4 301z" />
<glyph unicode="&#xe60a;" glyph-name="arrow-left" d="M704 745.2l-41.4 38.8-342.6-320 342.6-320 41.4 38.6-301 281.4z" />
<glyph unicode="&#xe60b;" glyph-name="arrow-right" d="M320 182.8l41.4-38.8 342.6 320-342.6 320-41.4-38.6 301-281.4z" />
<glyph unicode="&#xe60c;" glyph-name="key" d="M384 874.667c-166.4 0-298.667-132.267-298.667-298.667s132.267-298.667 298.667-298.667c166.4 0 298.667 132.267 298.667 298.667s-132.267 298.667-298.667 298.667zM320 533.333c-59.733 0-106.667 46.933-106.667 106.667s46.933 106.667 106.667 106.667c59.733 0 106.667-46.933 106.667-106.667s-46.933-106.667-106.667-106.667zM640 490.667l-170.667-170.667 85.333-85.333h85.333v-85.333h85.333v-85.333l29.867-29.867c8.533-8.533 17.067-12.8 29.867-12.8h110.933c25.6 0 42.667 17.067 42.667 42.667v110.933c0 12.8-4.267 21.333-12.8 29.867l-285.867 285.867z" />
<glyph unicode="&#xe60d;" glyph-name="book" d="M815.961 850.789v-49.414h-49.438v-49.463h49.438v-692.138h-593.262c0 0-49.438 0-49.438 49.438v666.975c0 0.148-0.024 0.297-0.024 0.444-0.864 33.494 19.948 57.2 38.438 65.407 18.243 8.948 33.668 8.652 35.744 8.751h568.542zM247.32 751.912c0.050 0 0.098 0 0.098 0h469.666v49.463h-469.666c-0.050-0.148-0.791 0.050-3.683-0.47-2.843-0.47-6.773-1.484-9.987-3.090-6.254-4.226-10.234-5.191-11.049-21.185 0.371-12.36 3.312-15.054 6.724-18.367 3.56-3.115 9.912-5.241 14.312-5.908 2.348-0.42 3.288-0.444 3.584-0.444zM272.137 109.211h494.385v593.262h-494.385v-593.262zM321.527 306.966v49.438h296.631v-49.438h-296.631zM321.527 504.719v49.438h395.508v-49.438h-395.508zM321.527 405.842v49.438h395.508v-49.438h-395.508z" />
<glyph unicode="&#xe60e;" glyph-name="open-external" d="M819.341 799.247h-614.678c-48.518 0-87.81-39.297-87.81-87.81v-526.869c0-48.517 39.297-87.81 87.81-87.81h175.626v87.81h-175.626v439.057h614.678v-439.057h-175.626v-87.81h175.626c48.517 0 87.81 39.297 87.81 87.81v526.869c0 48.517-39.297 87.81-87.81 87.81zM512 535.81l-175.626-175.623h131.717v-263.431h87.81v263.431h131.717l-175.623 175.623z" />
<glyph unicode="&#xe60f;" glyph-name="data" d="M554.188 865.656v-126.563c143.438-21.094 253.125-143.438 253.125-291.094 0-37.969-8.438-71.719-21.094-105.469l109.688-63.281c25.313 50.625 37.969 109.688 37.969 172.969 0 215.156-164.531 392.344-379.688 413.438v0zM512 152.687c-164.531 0-295.313 130.781-295.313 295.313 0 147.656 109.688 270 253.125 291.094v126.563c-215.156-16.875-379.688-198.281-379.688-417.656 0-232.031 189.844-421.875 421.875-421.875 139.219 0 261.563 67.5 341.719 172.969l-109.688 63.281c-54.844-67.5-139.219-109.688-232.031-109.688v0z" />
<glyph unicode="&#xe610;" glyph-name="cross" d="M830.212 696.015c9.722-9.722 9.722-25.656 0-35.377l-194.935-194.748c-9.722-9.691-9.722-25.656 0-35.409l194.842-194.811c9.722-9.722 9.722-25.656 0-35.409l-70.974-70.726c-9.751-9.691-25.718-9.691-35.471 0l-194.78 194.78c-9.722 9.722-25.717 9.722-35.441 0l-194.934-194.655c-9.722-9.722-25.717-9.722-35.441 0l-70.88 70.818c-9.722 9.722-9.722 25.656 0 35.409l194.996 194.717c9.722 9.691 9.722 25.656 0 35.409l-194.842 194.842c-9.751 9.722-9.751 25.687 0 35.409l70.943 70.756c9.784 9.691 25.717 9.691 35.471-0.033l194.748-194.748c9.751-9.751 25.718-9.751 35.441-0.033l194.934 194.655c9.691 9.691 25.656 9.691 35.441 0l70.88-70.85z" />
<glyph unicode="&#xe611;" glyph-name="clock" d="M799.895 452.577c0 20.137-16.117 36.451-35.984 36.451h-220.201v219.881c0 20.205-16.395 36.594-36.588 36.594-20.205 0-36.6-16.388-36.6-36.594v-256.191c0-20.212 16.395-36.6 36.6-36.6h256.808c19.846 0 35.963 16.321 35.963 36.458zM909.785 452.807c0-222.383-180.25-402.661-402.586-402.661-222.349 0-402.586 180.278-402.586 402.661s180.236 402.661 402.586 402.661c222.336 0 402.586-180.278 402.586-402.661zM982.885 452.807c0 262.72-212.972 475.693-475.685 475.693-262.728 0-475.7-212.972-475.7-475.693s212.972-475.693 475.7-475.693c262.713 0 475.685 212.972 475.685 475.693z" />
<glyph unicode="&#xe612;" glyph-name="calendar" d="M447 470.8h130v-130h-130v130zM650.8 470.8h130v-130h-130v130zM243.4 273.2h130v-130h-130v130zM447 273.2h130v-130h-130v130zM650.8 273.2h130v-130h-130v130zM311.6 712.4v0c-32 0-58.2 26.2-58.2 58.2v131c0 32 26.2 58.2 58.2 58.2v0c32 0 58.2-26.2 58.2-58.2v-131.2c0-31.8-26.2-58-58.2-58zM861.4 836.2h-66v-79.4c0-49-39.4-89-87.6-89h-23.2c-48.2 0-87.6 40-87.6 89v79.4h-180.8v-79.4c0-49-39.4-89-87.6-89h-23.2c-48.2 0-87.6 40-87.6 89v79.4h-50.6c-54.2 0-98.6-45-98.6-100v-700c0-55 44.4-100 98.6-100h694.4c54.2 0 98.6 45 98.6 100v700c-0.2 55-44.6 100-98.8 100zM844.6 130.6c0-34.2-27.6-62.2-61.2-62.2h-538c-33.6 0-61.2 28-61.2 62.2v352.8c0 34.2 27.6 64.6 61.2 64.6h538c33.6 0 61.2-30.4 61.2-64.6v-352.8zM696.6 712.4v0c-32 0-58.2 26.2-58.2 58.2v131c0 32 26.2 58.2 58.2 58.2v0c32 0 58.2-26.2 58.2-58.2v-131.2c0-31.8-26.2-58-58.2-58z" />
<glyph unicode="&#xe613;" glyph-name="question" d="M515.704 682.918c-43.369 0-79.571-15.149-108.544-39.755s-45.929-44.574-50.808-104.809h88.456c1.928 30.118 9.126 37.075 21.564 48.52s27.889 18.613 46.411 18.613c18.522 0 33.611-5.24 45.297-17.197 11.716-11.927 17.559-26.564 17.559-44.574s-5.632-32.949-16.806-45.146l-53.368-53.278c-15.601-15.601-18.854-28.13-23.492-37.617s-0.090-23.913-0.090-43.4v-36.744h60.235v25.058c0 19.456 8.704 34.575 17.498 45.297 3.373 3.885 10.029 8.644 15.691 14.246 5.602 5.632 13.493 12.198 21.534 19.757 8.041 7.529 15.059 13.764 19.938 18.643 4.849 4.849 12.168 13.161 21.444 24.847 16.053 19.486 24.245 43.851 24.245 73.096 0 42.406-13.553 75.384-40.84 99.057-27.347 23.582-62.554 35.388-105.924 35.388zM510.193 293.045c-15.36 0-28.491-5.391-39.484-16.083-10.963-10.722-16.444-23.492-16.444-38.37 0-14.848 5.602-27.528 16.806-38.008s24.486-15.691 39.816-15.691c15.36 0 28.521 5.361 39.484 16.053 10.933 10.722 16.444 23.522 16.444 38.37s-5.632 27.528-16.836 38.039c-11.144 10.481-24.425 15.691-39.785 15.691zM512 960c-282.775 0-512-229.225-512-512s229.225-512 512-512 512 229.225 512 512-229.225 512-512 512zM512 26.353c-232.87 0-421.647 188.777-421.647 421.647s188.777 421.647 421.647 421.647c232.87 0 421.647-188.777 421.647-421.647s-188.777-421.647-421.647-421.647z" />
<glyph unicode="&#xe614;" glyph-name="tick" d="M863.37 767.953c-10.666 10.74-28.031 10.74-38.624 0l-407.031-405.137c-10.666-10.811-28.067-10.811-38.661 0l-178.342 181.618c-5.28 5.389-12.195 8.044-19.149 8.081-7.026 0.038-14.161-2.621-19.512-8.081l-78.815-70.841c-5.242-5.389-8.081-12.122-8.081-19.149 0-7.061 2.838-14.453 8.119-19.804l179.835-188.717c10.631-10.775 28.067-28.249 38.661-38.951l77.321-77.941c10.631-10.666 27.996-10.666 38.661 0l522.978 522.030c10.666 10.703 10.666 28.286 0 38.989l-77.359 77.905z" />
<glyph unicode="&#xe615;" glyph-name="edit" d="M980.652 855.124l-79.517 79.408c-8.21 8.21-19.006 12.324-29.782 12.324s-21.554-4.096-29.764-12.306l-63.606-63.424 139.063-138.827 63.606 63.406c16.438 16.42 16.438 43.054 0 59.42zM365.087 458.995l139.082-138.845 383.113 382.402-139.082 138.845zM335.068 429.285l-29.692-168.428 168.773 29.6zM719.546 185.802h-524.397v524.397h370.078l91.204 91.022h-493.45c-32.386 0-58.874-26.487-58.874-58.874v-588.714c0-32.386 26.487-58.874 58.874-58.874h588.714c32.386 0 58.874 26.487 58.874 58.874v420.905l-91.022-90.859v-297.879z" />
<glyph unicode="&#xe616;" glyph-name="new" horiz-adv-x="1083" d="M728.54 843.508h-426.050l-179.287-160.355v-628.482h426.337v56.404h-362.859v510.638h183.93v165.426h294.451v-174.677h63.476zM638.949 353.087v174.214h135.242v-174.214h185.932v-126.346h-185.93v-174.247h-135.242v174.247h-185.606v126.346z" />
<glyph unicode="&#xe617;" glyph-name="pin" d="M713.771 777.771c-16.597 16.683-43.563 16.768-60.331 0.171-4.437-4.437-7.509-9.685-9.6-15.147-35.499-74.069-74.581-115.84-123.904-140.501-55.339-27.307-118.869-46.293-221.269-46.293-5.547 0-11.093-1.067-16.299-3.243-10.453-4.352-18.731-12.672-23.083-23.083-4.309-10.411-4.309-22.187 0-32.597 2.176-5.248 5.291-9.984 9.259-13.909l138.368-138.368-193.579-258.133 258.133 193.579 138.325-138.325c3.925-4.011 8.661-7.083 13.909-9.259 5.205-2.176 10.752-3.328 16.299-3.328s11.093 1.152 16.299 3.328c10.453 4.352 18.773 12.587 23.083 23.083 2.176 5.163 3.285 10.752 3.285 16.256 0 102.4 18.944 165.931 46.208 220.416 24.619 49.323 66.389 88.405 140.501 123.904 5.504 2.091 10.709 5.163 15.104 9.6 16.597 16.768 16.512 43.733-0.171 60.331l-170.539 171.52z" />
<glyph unicode="&#xe618;" glyph-name="star" horiz-adv-x="975" d="M487.619 190.878l301.349-181.736-79.726 342.747 265.996 230.498-350.647 30.086-136.972 323.145-136.972-323.145-350.647-30.086 265.996-230.498-79.726-342.747 301.349 181.736z" />
<glyph unicode="&#xe619;" glyph-name="grid" d="M192 960h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM576 960h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM960 960h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM192 576h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM576 576h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM960 576h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM192 192h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM576 192h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM960 192h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64z" />
<glyph unicode="&#xe61a;" glyph-name="refresh" d="M892.064 330.816c12.32 39.36 19.424 80.992 19.424 124.288 0 231.104-186.56 419.232-416.928 422.208v-135.616c155.616-2.976 281.376-130.272 281.376-286.592 0-21.696-2.816-42.624-7.424-62.912l-126.816 62.912 88.32-262.368 262.304 88.384-100.256 49.696zM248.064 440.896c0 21.696 2.816 42.624 7.424 62.944l126.816-62.944-88.32 262.368-262.304-88.384 100.256-49.696c-12.288-39.36-19.424-80.992-19.424-124.32 0-231.136 186.56-419.2 416.96-422.208v135.616c-155.648 2.976-281.408 130.304-281.408 286.624z" />
<glyph unicode="&#xe61b;" glyph-name="jet" d="M136.192 156.16c0 0 54.886 51.2 74.547 28.058s-29.082-65.946-40.141-77.21c-11.264-11.264-79.053-23.962-91.136-73.114s-4.915 19.456 52.838 20.685c57.958 1.024 51.61-1.638 95.437 10.24s59.187 34.611 59.187 34.611 5.325-40.755-54.477-72.294c-59.802-31.539 37.069-3.482 76.186 17.818s62.464 70.246 62.464 70.246 3.072-26.214-36.454-91.75c0 0 159.744 91.341 101.786 235.315 0 0 1.843-72.499-48.538-131.277 0 0 9.216 56.934-6.758 63.693-11.469 4.915-36.659-88.064-77.21-92.774 0 0 29.082 41.574 18.432 56.525-15.155 21.299-87.45-38.707-87.45-38.707s3.686 53.043 79.462 98.714c0 0-29.491 7.782-61.645 1.024 0 0 56.115 46.899 123.699 41.37 0 0-36.864 24.166-71.475 18.842 0 0 14.336 28.877 87.245 26.419 0 0-107.52 55.296-211.149-40.55 0 0 58.778 28.672 93.389-4.506-0.205-0.205-119.194-9.011-138.24-101.376zM363.315 371.814l121.856-116.736c403.456 205.824 470.016 605.184 470.016 605.184s-303.923-45.67-591.872-488.448zM437.043 360.55l-26.624 21.504c283.648 371.712 460.8 409.6 460.8 409.6s-280.576-215.45-434.176-431.104zM508.723 107.827l-9.626 130.867c0 0 82.534 41.37 165.069 113.869zM214.835 397.619l131.072-14.336c0 0 27.853 48.333 119.808 159.744z" />
<glyph unicode="&#xe61c;" glyph-name="user" d="M851.481 250.954c-39.072 50.987-86.335 84.097-154.057 102.883l-63.453-222.157c0-20.464-16.755-37.216-37.216-37.216-20.455 0-37.21 16.753-37.21 37.216v176.765c0 25.674-20.845 46.519-46.519 46.519s-46.516-20.847-46.516-46.519v-176.765c0-20.464-16.755-37.216-37.212-37.216-20.464 0-37.218 16.753-37.218 37.216l-63.453 222.157c-67.723-18.969-114.985-51.895-154.053-102.883-15.446-20.095-23.839-60.471-24.388-82.063 0.185-5.581 0-12.095 0-18.601v-74.435c0-41.12 33.309-74.425 74.43-74.425h576.815c41.12 0 74.435 33.305 74.435 74.425v74.435c0 6.505-0.182 13.019 0 18.601-0.563 21.591-8.946 61.97-24.383 82.063zM317.649 697.706c0-108.665 67.744-268.315 195.375-268.315 125.413 0 195.371 159.65 195.371 268.315 0 108.661-87.454 196.862-195.371 196.862s-195.375-88.201-195.375-196.862z" />
<glyph unicode="&#xe61d;" glyph-name="search" d="M120.942 128.031l203.291 203.291c-38.651 53.090-61.716 118.249-61.716 188.955 0 177.713 144.047 321.759 321.759 321.759s321.759-144.047 321.759-321.759-144.047-321.759-321.759-321.759c-70.706 0-135.862 23.068-188.955 61.716l-203.291-203.291-71.089 71.089zM584.274 299.065c121.965 0 221.209 99.243 221.209 221.209s-99.243 221.209-221.209 221.209-221.209-99.243-221.209-221.209 99.243-221.209 221.209-221.209z" />
<glyph unicode="&#xe61e;" glyph-name="reset" horiz-adv-x="1013" d="M1011.457 476.745c-56.408-0.485-112.778-0.784-169.149-1.269 9.482-97.062-22.511-197.371-96.838-271.586-131.966-131.929-345.801-131.929-477.692 0-131.929 131.817-131.929 345.689 0 477.618 112.554 112.591 284.652 128.607 414.714 49.016-44.088-43.566-95.942-95.158-95.942-95.158-37.331-39.646 0.635-65.927 25.759-66.077h329.562c12.618 0 22.772 10.191 22.809 22.809v326.874c1.531 30.798-32.292 59.432-65.554 26.132 0 0-55.81-55.213-94.56-93.664-198.080 144.771-477.244 128.345-656.174-50.547-197.856-197.856-197.856-518.645 0-716.464 197.819-197.782 518.608-197.782 716.427 0 107.664 107.589 156.195 251.614 146.638 392.316z" />
<glyph unicode="&#xe900;" glyph-name="settings" d="M958.24 369.776l-36.504 39.208c0.040 0.344 0.032 0.68-0.008 1.192 0.784 8.744 1.304 17.552 1.648 26.368 0.080 2.544-0.024 5.264 0.024 7.808 0.072 6.76-0.024 13.296-0.328 19.824-0.128 2.856-0.28 5.512-0.464 8.352-0.152 4.36-0.376 8.664-0.704 13.216l36.608 38.936c17.464 18.6 49.168 43.296 39.464 66.808l-40.080 97.256c-9.704 23.536-49.552 18.6-75.032 19.488l-53.448 1.928c-4.040 4.832-8.392 9.424-12.576 14.088-0.16 0.176-0.352 0.448-0.552 0.696-1.488 1.56-2.744 3.256-4.248 4.792-2.264 2.464-4.872 4.816-7.208 7.216-3.384 3.408-6.752 6.872-10.224 10.168-5.696 5.48-11.704 10.648-17.624 15.776-0.24 0.248-0.624 0.456-0.832 0.624-0.32 0.312-0.608 0.664-0.928 0.984l-1.728 53.544c-0.784 25.352 4.2 65.272-19.176 75l-97.288 40.488c-23.408 9.744-48.272-21.976-66.816-39.28l-39.176-36.576c-8.784 0.88-17.504 1.336-26.232 1.672-2.44 0.096-4.896 0.048-7.504 0.032-5.624 0.048-11.296 0.216-17.080-0.008-7.304-0.232-14.608-0.688-21.888-1.32-0.936-0.048-1.872-0.048-2.608-0.112-0.52-0.104-0.912-0.024-1.44-0.128l-38.968 36.688c-18.568 17.368-43.296 49.168-66.808 39.48l-97.256-40.080c-23.536-9.696-18.56-49.64-19.496-75.048l-1.896-53.528c-0.584-0.44-1.168-1.048-1.712-1.584-6.392-5.328-12.664-10.832-18.76-16.56-2.248-2.208-4.416-4.432-6.616-6.664-4.328-4.216-8.672-8.568-12.824-13.040-2.128-2.32-4.088-4.672-6.16-7.040-2.816-3.056-5.568-6.072-8.264-9.296l-53.576-1.64c-25.352-0.792-65.272 4.192-75-19.192l-40.504-97.28c-9.736-23.416 21.936-48.192 39.24-66.736l36.584-39.184c-0.592-6.064-0.856-12.096-1.192-18.232 0.008-0.568-0.096-1.168-0.080-1.736-0.496-10.4-0.744-20.784-0.384-31.136 0.168-4.544 0.504-9.008 0.792-13.544 0.264-3.664 0.344-7.392 0.688-11.048-0.024-0.4 0.008-0.768 0.040-1.040l-36.656-39.072c-17.376-18.536-49.2-43.192-39.512-66.696l40.080-97.256c9.704-23.552 49.672-18.648 75.080-19.576l53.496-1.816c0.36-0.528 0.792-0.84 1.176-1.384 5.424-6.512 11.12-12.872 17.056-19.272 2.088-2.248 4.296-4.176 6.416-6.384 4.36-4.424 8.752-8.8 13.296-13.064 2.232-1.936 4.592-3.96 6.848-6.048 3.16-2.792 6.232-5.64 9.4-8.184l1.632-53.568c0.8-25.352-4.16-65.368 19.232-75.104l97.28-40.496c23.424-9.752 48.184 21.944 66.728 39.248l39.216 36.496c0.432-0.008 0.848 0.048 1.28 0.040 5.048-0.56 10.056-0.752 15.064-1.008 1.504-0.128 2.96-0.136 4.384-0.288 2.352-0.072 4.608-0.256 6.88-0.336 2.688-0.056 5.368 0.024 8.056 0.016 6.536-0.152 13.080-0.016 19.56 0.28 2.824 0.096 5.712 0.312 8.504 0.472 4.408 0.192 8.656 0.408 12.992 0.664l39.032-36.56c18.592-17.464 43.192-49.208 66.696-39.504l97.264 40.080c23.544 9.712 18.68 49.592 19.576 75.080l1.84 53.408c4.584 3.824 9 7.808 13.264 11.696 0.6 0.696 1.288 1.184 1.944 1.736 1.488 1.408 3.080 2.592 4.36 3.944 2.592 2.296 4.824 4.832 7.184 7.12 3.376 3.416 6.96 6.832 10.392 10.408 4.984 5.352 10 10.952 14.848 16.784 0.552 0.52 0.984 0.96 1.456 1.64 0.408 0.36 0.656 0.6 0.888 0.88l53.528 1.72c25.352 0.792 65.368-4.168 75.104 19.224l40.496 97.28c9.784 23.4-21.96 48.256-39.256 66.8zM726 448c0-118.184-95.816-214-214-214s-214 95.816-214 214 95.816 214 214 214 214-95.816 214-214z" />
<glyph unicode="&#xe901;" glyph-name="menu" d="M0 796.16c0 45.243 36.445 81.92 82.067 81.92h859.866c45.324 0 82.067-36.361 82.067-81.92 0-45.243-36.445-81.92-82.067-81.92h-859.866c-45.324 0-82.067 36.361-82.067 81.92v0zM0 468.48c0 45.243 36.445 81.92 82.067 81.92h859.866c45.324 0 82.067-36.361 82.067-81.92 0-45.243-36.445-81.92-82.067-81.92h-859.866c-45.324 0-82.067 36.361-82.067 81.92v0zM0 140.8c0 45.243 36.445 81.92 82.067 81.92h859.866c45.324 0 82.067-36.361 82.067-81.92 0-45.243-36.445-81.92-82.067-81.92h-859.866c-45.324 0-82.067 36.361-82.067 81.92v0z" />
</font></defs></svg>

二進制
static/jet/css/icons/fonts/jet-icons.ttf 查看文件


二進制
static/jet/css/icons/fonts/jet-icons.woff 查看文件


+ 126
- 0
static/jet/css/icons/style.css 查看文件

@@ -0,0 +1,126 @@
@font-face {
font-family: 'jet-icons';
src: url('fonts/jet-icons.eot?415d6s');
src: url('fonts/jet-icons.eot?415d6s#iefix') format('embedded-opentype'),
url('fonts/jet-icons.ttf?415d6s') format('truetype'),
url('fonts/jet-icons.woff?415d6s') format('woff'),
url('fonts/jet-icons.svg?415d6s#jet-icons') format('svg');
font-weight: normal;
font-style: normal;
}

[class^="icon-"], [class*=" icon-"] {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'jet-icons' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;

/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

.icon-settings:before {
content: "\e900";
}
.icon-menu:before {
content: "\e901";
}
.icon-reset:before {
content: "\e61e";
}
.icon-search:before {
content: "\e61d";
}
.icon-user:before {
content: "\e61c";
}
.icon-jet:before {
content: "\e61b";
}
.icon-refresh:before {
content: "\e61a";
}
.icon-grid:before {
content: "\e619";
}
.icon-star:before {
content: "\e618";
}
.icon-pin:before {
content: "\e617";
}
.icon-new:before {
content: "\e616";
}
.icon-edit:before {
content: "\e615";
}
.icon-clock:before {
content: "\e611";
}
.icon-calendar:before {
content: "\e612";
}
.icon-book:before {
content: "\e60d";
}
.icon-open-external:before {
content: "\e60e";
}
.icon-data:before {
content: "\e60f";
}
.icon-question:before {
content: "\e613";
}
.icon-tick:before {
content: "\e614";
}
.icon-cross:before {
content: "\e610";
}
.icon-key:before {
content: "\e60c";
}
.icon-arrow-right:before {
content: "\e60b";
}
.icon-arrow-left:before {
content: "\e60a";
}
.icon-arrow-down:before {
content: "\e608";
}
.icon-arrow-up:before {
content: "\e609";
}
.icon-checkbox-outline:before {
content: "\e607";
}
.icon-remove:before {
content: "\e600";
}
.icon-add2:before {
content: "\e601";
}
.icon-exit:before {
content: "\e602";
}
.icon-add:before {
content: "\e603";
}
.icon-add3:before {
content: "\e604";
}
.icon-expand:before {
content: "\e605";
}
.icon-checkbox:before {
content: "\e606";
}


+ 144
- 0
static/jet/css/jquery-ui/_jquery-ui.theme.scss 查看文件

@@ -0,0 +1,144 @@
@import "../globals";

.ui-widget-content {
color: $text-color;
border-color: $content-border-color;
}

.ui-widget, .ui-timepicker-table {
&.ui-widget-content {
background: $content-background-color;
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.5);
}
}

.ui-widget {
font-family: inherit;
font-size: inherit;
}

.ui-widget-header {
border: 0;
background: $content-contrast2-background-color;
color: $content-contrast2-text-color;
font-weight: bold;
a {
color: $content-contrast2-text-color;
}
}

.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
border: 1px solid $jquery-ui-state-default-border-color;
background: $jquery-ui-state-default-background-color;
font-weight: bold;
color: $jquery-ui-state-default-text-color;
border-radius: 3px;
}

.ui-widget-header .ui-state-default {
background: none;
color: $content-contrast2-text-color;
border: 0;
}

.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
border: 1px solid $jquery-ui-state-hover-border-color;
background: $jquery-ui-state-hover-background-color;
font-weight: bold;
color: $jquery-ui-state-hover-text-color;
}

.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active {
border: 1px solid $jquery-ui-state-active-border-color;
background: $jquery-ui-state-active-background-color;
font-weight: bold;
color: $jquery-ui-state-active-text-color;
}

.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
border: 1px solid $jquery-ui-state-highlight-border-color;
background: $jquery-ui-state-highlight-background-color;
color: $jquery-ui-state-highlight-text-color;
}

.ui-dialog {
@include for-phone {
left: 10px !important;
right: 10px !important;
width: auto !important;
}
}

.ui-dialog-buttonpane {
background: $jquery-ui-buttonpane-background;
margin: .5em -0.2em -0.2em -0.2em;

.ui-button {
border: 0 !important;
outline: 0;
}
}

.ui-icon {
@include font-icon;
font-size: 16px;
font-weight: bold;
background: none !important;
text-indent: 0;
overflow: visible;
}

.ui-icon-circle-triangle-e:before {
content: $icon-arrow-right;
}

.ui-icon-circle-triangle-w:before {
content: $icon-arrow-left;
}

.ui-icon-closethick:before {
content: $icon-cross;
}

.ui-widget-overlay {
background: $jquery-ui-overlay-color;
opacity: 0.5;
filter: Alpha(Opacity=50);
}

.ui-tooltip {
background: $jquery-ui-tooltip-background-color !important;
color: $jquery-ui-tooltip-text-color;
border: 0;
box-shadow: none !important;
opacity: 0.8;
font-size: 13px;
pointer-events: none;
}

.ui-datepicker, .ui-timepicker {
table {
margin: 0 0 .4em;
background: transparent;
border-radius: 0;
box-shadow: none;
}

th {
background: inherit;
color: inherit;
text-transform: inherit;
}

tbody tr {
border-bottom: inherit;
}
}

.ui-datepicker table {
margin: 0 0 .4em;
}

.ui-timepicker-table table {
margin: .15em 0 0;
}

二進制
static/jet/css/jquery-ui/images/ui-bg_flat_0_aaaaaa_40x100.png 查看文件

Before After
Width: 40  |  Height: 100  |  Size: 180B

二進制
static/jet/css/jquery-ui/images/ui-bg_flat_75_ffffff_40x100.png 查看文件

Before After
Width: 40  |  Height: 100  |  Size: 178B

二進制
static/jet/css/jquery-ui/images/ui-bg_glass_55_fbf9ee_1x400.png 查看文件

Before After
Width: 1  |  Height: 400  |  Size: 120B

二進制
static/jet/css/jquery-ui/images/ui-bg_glass_65_ffffff_1x400.png 查看文件

Before After
Width: 1  |  Height: 400  |  Size: 105B

二進制
static/jet/css/jquery-ui/images/ui-bg_glass_75_dadada_1x400.png 查看文件

Before After
Width: 1  |  Height: 400  |  Size: 111B

二進制
static/jet/css/jquery-ui/images/ui-bg_glass_75_e6e6e6_1x400.png 查看文件

Before After
Width: 1  |  Height: 400  |  Size: 110B

二進制
static/jet/css/jquery-ui/images/ui-bg_glass_95_fef1ec_1x400.png 查看文件

Before After
Width: 1  |  Height: 400  |  Size: 119B

二進制
static/jet/css/jquery-ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png 查看文件

Before After
Width: 1  |  Height: 100  |  Size: 101B

二進制
static/jet/css/jquery-ui/images/ui-icons_222222_256x240.png 查看文件

Before After
Width: 256  |  Height: 240  |  Size: 4.3KB

二進制
static/jet/css/jquery-ui/images/ui-icons_2e83ff_256x240.png 查看文件

Before After
Width: 256  |  Height: 240  |  Size: 4.3KB

二進制
static/jet/css/jquery-ui/images/ui-icons_454545_256x240.png 查看文件

Before After
Width: 256  |  Height: 240  |  Size: 4.3KB

二進制
static/jet/css/jquery-ui/images/ui-icons_888888_256x240.png 查看文件

Before After
Width: 256  |  Height: 240  |  Size: 4.3KB

部分文件因文件數量過多而無法顯示

Loading…
取消
儲存