Открыть боковую панель
peteroshkvarkov
Project-38
Коммиты
f0f9fc34
Не подтверждена
Коммит
f0f9fc34
создал
Сен 20, 2023
по автору
AdLeGeR
Зафиксировано автором
GitHub
Сен 20, 2023
Просмотр файлов
Merge pull request #170 from RushanCources/160-баг-фикс-в-разделе-проектов
160 баг фикс в разделе проектов
владельцы
42c23765
245f3eb7
Изменения
238
Развернуть все
Скрыть пробелы
Построчно
Рядом
portal/liceum38/settings.py
Просмотр файла @
f0f9fc34
...
...
@@ -41,10 +41,10 @@ INSTALLED_APPS = [
'django.contrib.sessions'
,
'django.contrib.messages'
,
'django.contrib.staticfiles'
,
'management'
,
'announcements'
,
'subjects'
,
'projects'
,
'management'
,
]
MIDDLEWARE
=
[
...
...
portal/management/migrations/0005_user_is_other_teacher.py
0 → 100644
Просмотр файла @
f0f9fc34
# Generated by Django 4.2.3 on 2023-08-29 13:39
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
"management"
,
"0004_user_full_name_alter_user_middle_name"
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
"user"
,
name
=
"is_other_teacher"
,
field
=
models
.
BooleanField
(
default
=
False
),
),
]
portal/management/models.py
Просмотр файла @
f0f9fc34
...
...
@@ -10,6 +10,7 @@ class User(AbstractUser):
avatar
=
models
.
ImageField
(
upload_to
=
"avatars"
,
default
=
"avatars/avatar.png"
)
is_view_window
=
models
.
BooleanField
(
default
=
False
)
full_Name
=
models
.
TextField
(
max_length
=
100
,
null
=
True
)
is_other_teacher
=
models
.
BooleanField
(
default
=
False
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
super
(
User
,
self
).
__init__
(
*
args
,
**
kwargs
)
...
...
@@ -19,6 +20,9 @@ class User(AbstractUser):
def
set_full_name
(
self
):
self
.
full_Name
=
self
.
last_name
+
self
.
first_name
+
self
.
middle_name
def
get_full_name
(
self
)
->
str
:
return
self
.
last_name
+
' '
+
self
.
first_name
+
' '
+
self
.
middle_name
;
def
save_photo
(
self
,
*
args
,
**
kwargs
):
super
().
save
()
img
=
Image
.
open
(
self
.
avatar
.
path
)
...
...
portal/projects/apps.py
Просмотр файла @
f0f9fc34
...
...
@@ -20,5 +20,6 @@ class projectsConfig(AppConfig):
project1
.
student
=
User
.
objects
.
get
(
username
=
'aaa3'
)
project1
.
set_subject
(
'Физика'
)
project1
.
set_status
(
"send request"
)
project1
.
set_type
(
"нОУ"
)
project1
.
save
()
return
super
().
ready
()
portal/projects/migrations/0003_project__level.py
0 → 100644
Просмотр файла @
f0f9fc34
# Generated by Django 4.2.3 on 2023-09-02 18:29
from
django.db
import
migrations
,
models
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
"projects"
,
"0002_file_name_project__type"
),
]
operations
=
[
migrations
.
AddField
(
model_name
=
"project"
,
name
=
"_level"
,
field
=
models
.
CharField
(
max_length
=
10
,
null
=
True
),
),
]
portal/projects/models.py
Просмотр файла @
f0f9fc34
...
...
@@ -16,7 +16,9 @@ class Project(Model):
_statuses
=
[
"send request"
,
"on work"
,
"send to verification"
,
"done"
]
_status
=
CharField
(
max_length
=
30
)
_subjects
=
CharField
(
max_length
=
100
,
null
=
True
)
_types
=
[
'Проект'
,
'НОУ'
]
_levels
=
[
'Проект'
,
'НОУ'
]
_level
=
CharField
(
max_length
=
10
,
null
=
True
)
_types
=
[
'Исследовательский'
,
'Информационный'
,
'Прикладной'
,
'Ролевой(игровой)'
,
'Социальный'
,
'Технологический (инженерный)'
,
'Бизнес-план'
]
_type
=
CharField
(
max_length
=
10
,
null
=
True
)
problem
=
CharField
(
max_length
=
1000
,
null
=
True
)
relevance
=
CharField
(
max_length
=
1000
,
null
=
True
)
...
...
@@ -47,12 +49,21 @@ class Project(Model):
return
self
.
_status
def
set_type
(
self
,
project_type
):
print
(
project_type
,
project_type
in
self
.
_types
,
self
.
_types
)
if
project_type
in
self
.
_types
:
self
.
_type
=
project_type
self
.
save
()
def
get_type
(
self
):
return
self
.
_type
def
set_level
(
self
,
project_level
):
if
project_level
in
self
.
_levels
:
self
.
_level
=
project_level
self
.
save
()
def
get_level
(
self
):
return
self
.
_level
# эта константа показывает сколько версий может быть у одного файла
...
...
@@ -65,7 +76,7 @@ def get_upload_path(instance, filename):
class
File
(
Model
):
_tag
=
CharField
(
max_length
=
20
,
null
=
True
)
_tags
=
[
'Реферат'
,
'Презентация'
,
'
Защита
'
,
'Другое'
]
_tags
=
[
'Реферат'
,
'Презентация'
,
'
Аннотация
'
,
'Другое'
]
project
:
Project
=
ForeignKey
(
Project
,
related_name
=
'files'
,
on_delete
=
CASCADE
)
file
=
FileField
(
upload_to
=
get_upload_path
,
blank
=
True
,
null
=
True
,
storage
=
MyStorage
)
version
=
IntegerField
(
default
=
1
)
...
...
portal/projects/views.py
Просмотр файла @
f0f9fc34
from
dataclasses
import
dataclass
from
typing
import
Any
from
django.http
import
HttpResponse
,
FileResponse
from
django.shortcuts
import
render
,
redirect
...
...
@@ -27,26 +28,26 @@ def index(request: HttpRequest):
projects
=
Project
.
objects
.
filter
(
student
=
request
.
user
)
elif
request
.
user
.
role
==
'Учитель'
:
projects
=
Project
.
objects
.
filter
(
teacher
=
request
.
user
)
elif
request
.
user
.
role
==
'Администратор'
:
projects
=
Project
.
objects
.
all
()
else
:
projects
=
[]
# это классы для более удобного доступа к данным в шаблоне
@
dataclass
class
FilePack
:
file
:
File
name
:
str
@
dataclass
class
ProjectPack
:
project
:
Project
files
:
list
[
FilePack
]
# это класс для более удобного доступа к данным в шаблоне
class
ProjectPack
(
Project
):
files
:
list
[
File
]
=
[]
# упаковка проектов и файлов в один массив состоящий из объектов класса ProjectPack
context_projects
=
[]
for
project
in
projects
:
files
=
[
FilePack
(
file
,
file
.
file
.
name
.
split
(
'/'
)[
-
1
])
for
file
in
File
.
objects
.
filter
(
project
=
project
,
version
=
1
)]
context_projects
.
append
(
ProjectPack
(
project
,
files
))
files
=
list
(
File
.
objects
.
filter
(
project
=
project
,
version
=
1
))
variables
=
vars
(
project
)
values
=
{
key
:
val
for
key
,
val
in
zip
(
variables
.
keys
(),
variables
.
values
())
if
key
!=
'_state'
}
pp
=
ProjectPack
(
**
values
)
pp
.
files
=
files
context_projects
.
append
(
pp
)
return
render
(
request
,
"projects/index.html"
,
context
=
{
'projects'
:
context_projects
,
'has_projects'
:
len
(
context_projects
)
>
0
})
...
...
@@ -57,16 +58,19 @@ def index(request: HttpRequest):
return
render
(
request
,
"NotEnoughPermissions.html"
)
abstract_file
=
File
.
objects
.
filter
(
project
=
project
,
version
=
1
,
_tag
=
'Реферат'
).
first
()
presentation_file
=
File
.
objects
.
filter
(
project
=
project
,
version
=
1
,
_tag
=
'Презентация'
).
first
()
defence
_file
=
File
.
objects
.
filter
(
project
=
project
,
version
=
1
,
_tag
=
'
Защита
'
).
first
()
annotation
_file
=
File
.
objects
.
filter
(
project
=
project
,
version
=
1
,
_tag
=
'
Аннотация
'
).
first
()
other_files
=
File
.
objects
.
filter
(
project
=
project
,
version
=
1
,
_tag
=
'Другое'
)
full_teacher_name
=
project
.
teacher
.
last_name
+
' '
+
project
.
teacher
.
first_name
+
' '
+
project
.
teacher
.
middle_name
full_student_name
=
project
.
student
.
last_name
+
' '
+
project
.
student
.
first_name
+
' '
+
project
.
student
.
middle_name
context
=
{
"name"
:
project
.
name
,
"teacher"
:
project
.
teacher
.
fullN
ame
()
,
"student"
:
project
.
student
.
fullN
ame
()
,
"teacher"
:
full_
teacher
_n
ame
,
"student"
:
full_
student
_n
ame
,
"avaurl_of_teacher"
:
project
.
teacher
.
avatar
.
url
,
"avaurl_of_student"
:
project
.
student
.
avatar
.
url
,
"status"
:
project
.
get_status
(),
"subjects"
:
project
.
get_subjects
(),
"description"
:
project
.
description
,
"project_level"
:
project
.
get_level
(),
"project_type"
:
project
.
get_type
(),
'problem'
:
project
.
problem
,
"relevance"
:
project
.
relevance
,
...
...
@@ -79,8 +83,8 @@ def index(request: HttpRequest):
'old_abstracts'
:
abstract_file
.
get_prevent_files
()
if
abstract_file
is
not
None
else
[],
'presentation'
:
presentation_file
,
'old_presentation'
:
presentation_file
.
get_prevent_files
()
if
presentation_file
is
not
None
else
[],
'
defence'
:
defence
_file
,
'old_
defence'
:
defence
_file
.
get_prevent_files
()
if
defence
_file
is
not
None
else
[],
'
annotation'
:
annotation
_file
,
'old_
annotation'
:
annotation
_file
.
get_prevent_files
()
if
annotation
_file
is
not
None
else
[],
'other_files'
:
other_files
,
'old_other_files'
:
[
other_file
.
get_prevent_files
()
for
other_file
in
other_files
],
'all_subjects_names'
:
[
subject
.
name
for
subject
in
Subject
.
objects
.
all
()]
...
...
@@ -95,13 +99,17 @@ def index(request: HttpRequest):
# отправка страницы с формой для подачи заявки на проект
def
send_create_form
(
request
:
HttpRequest
,
context_theme
=
{}):
def
send_create_form
(
request
:
HttpRequest
,
context_data
=
{}):
print
(
context_data
)
if
request
.
user
.
is_authenticated
:
if
request
.
user
.
role
==
"Ученик"
:
teachers
=
User
.
objects
.
filter
(
role
=
"Учитель"
)
data
=
{
"teachers"
:
teachers
,
teachers
=
User
.
objects
.
filter
(
role
=
"Учитель"
,
is_other_teacher
=
False
)
teacher_arr
=
[]
for
teacher
in
teachers
:
teacher_arr
.
append
([
teacher
.
full_Name
,
teacher
.
id
])
data
=
{
"teachers"
:
teacher_arr
,
"subjects_names"
:
[
subject
.
name
for
subject
in
Subject
.
objects
.
all
()]}
data
.
update
(
context_
theme
)
data
.
update
(
context_
data
)
return
render
(
request
,
"projects/create.html"
,
data
)
return
render
(
request
,
"NotEnoughPermissions.html"
)
...
...
@@ -133,30 +141,35 @@ def create(request: HttpRequest):
subject
=
request
.
POST
.
get
(
"subject"
)
name
=
request
.
POST
.
get
(
"name"
)
is_another_teacher
=
request
.
POST
.
get
(
'teacher-checkbox'
)
description
=
request
.
POST
.
get
(
'description'
,
''
)
try
:
if
is_another_teacher
==
'on'
:
# если учитель не из лицея
another_teacher
=
request
.
POST
.
get
(
"new-teacher"
,
-
1
)
if
another_teacher
==
-
1
:
messages
.
error
(
request
,
'Неверно введённые данные'
)
return
r
end
er
(
request
,
"projects/create.html"
)
return
s
end
_create_form
(
request
,
context_data
=
{
'name'
:
name
,
'description'
:
description
}
)
last_user
=
User
.
objects
.
last
()
if
last_user
is
None
:
new_id
=
1
else
:
new_id
=
last_user
.
pk
+
1
teacher
:
User
=
User
.
objects
.
create_user
(
username
=
new_id
,
first_name
=
another_teacher
.
split
()[
0
],
last_name
=
another_teacher
.
split
()[
1
],
middle_name
=
another_teacher
.
split
()[
2
],
teacher
:
User
=
User
.
objects
.
create_user
(
username
=
new_id
,
first_name
=
another_teacher
.
split
()[
1
],
last_name
=
another_teacher
.
split
()[
0
],
middle_name
=
another_teacher
.
split
()[
2
],
role
=
'Учитель'
,
id
=
new_id
)
teacher
.
set_password
(
User
.
objects
.
make_random_password
(
30
))
teacher
.
is_other_teacher
=
True
teacher
.
save
()
else
:
if
teacher_id
==
-
1
:
messages
.
error
(
request
,
'Неверно введённые данные'
)
return
render
(
request
,
"projects/create.html"
)
print
({
'name'
:
name
,
'description'
:
description
})
return
send_create_form
(
request
,
context_data
=
{
'name'
:
name
,
'description'
:
description
})
teacher
=
User
.
objects
.
get
(
id
=
teacher_id
)
if
teacher
.
role
!=
"Учитель"
:
return
render
(
request
,
"WrongData.html"
)
description
=
request
.
POST
.
get
(
'description'
,
''
)
return
send_create_form
(
request
,
context_data
=
{
'name'
:
name
,
'description'
:
description
})
project
=
Project
.
objects
.
create
(
name
=
name
,
teacher
=
teacher
,
student
=
request
.
user
)
if
description
!=
-
1
:
project
.
description
=
description
...
...
@@ -170,7 +183,8 @@ def create(request: HttpRequest):
return
render
(
request
,
"projects/success.html"
)
except
User
.
DoesNotExist
:
# если не удалось получить пользователя из бд
return
render
(
request
,
"WrongData.html"
)
except
BaseException
:
# если возникла непредвиденная ошибка
except
BaseException
as
e
:
# если возникла непредвиденная ошибка
print
(
e
)
return
render
(
request
,
"FatalError.html"
)
...
...
@@ -184,19 +198,20 @@ def correct_project(request: HttpRequest):
return
render
(
request
,
"NotEnoughPermissions.html"
)
name
=
request
.
POST
.
get
(
"name"
,
-
1
)
description
=
request
.
POST
.
get
(
"description"
,
-
1
)
project_
type
=
request
.
POST
.
get
(
'project-
type
'
,
-
1
)
project_
level
=
request
.
POST
.
get
(
'project-
level
'
,
-
1
)
problem
=
request
.
POST
.
get
(
'problem'
,
-
1
)
relevance
=
request
.
POST
.
get
(
'relevance'
,
-
1
)
target
=
request
.
POST
.
get
(
'target'
,
-
1
)
tasks
=
request
.
POST
.
get
(
'tasks'
,
-
1
)
expected_results
=
request
.
POST
.
get
(
'expected-results'
,
-
1
)
project_type
=
request
.
POST
.
get
(
'project-type'
,
-
1
)
print
(
project_type
)
if
name
!=
-
1
:
project
.
name
=
name
if
description
!=
-
1
:
project
.
description
=
description
if
project_
type
!=
-
1
:
project
.
set_
type
(
project_
type
)
if
project_
level
!=
-
1
:
project
.
set_
level
(
project_
level
)
if
problem
!=
-
1
:
project
.
problem
=
problem
if
relevance
!=
-
1
:
...
...
@@ -214,7 +229,7 @@ def correct_project(request: HttpRequest):
request
.
user
.
save
()
abstract_file
=
request
.
FILES
.
get
(
'abstract'
,
-
1
)
presentation_file
=
request
.
FILES
.
get
(
'presentation'
,
-
1
)
defence
_file
=
request
.
FILES
.
get
(
'
defence
'
,
-
1
)
annotation
_file
=
request
.
FILES
.
get
(
'
annotation
'
,
-
1
)
if
abstract_file
!=
-
1
:
file
=
File
.
objects
.
filter
(
project
=
project
,
version
=
1
,
_tag
=
'Реферат'
).
first
()
if
file
is
None
:
...
...
@@ -231,14 +246,14 @@ def correct_project(request: HttpRequest):
file
.
save
()
else
:
file
.
update_file
(
presentation_file
)
if
defence
_file
!=
-
1
:
file
=
File
.
objects
.
filter
(
project
=
project
,
version
=
1
,
_tag
=
'
Защита
'
).
first
()
if
annotation
_file
!=
-
1
:
file
=
File
.
objects
.
filter
(
project
=
project
,
version
=
1
,
_tag
=
'
Аннотация
'
).
first
()
if
file
is
None
:
file
=
File
.
objects
.
create
(
project
=
project
,
file
=
defence
_file
,
version
=
1
)
file
.
set_tag
(
'
Защита
'
)
file
=
File
.
objects
.
create
(
project
=
project
,
file
=
annotation
_file
,
version
=
1
)
file
.
set_tag
(
'
Аннотация
'
)
file
.
save
()
else
:
file
.
update_file
(
defence
_file
)
file
.
update_file
(
annotation
_file
)
return
redirect
(
f
"
{
reverse
(
'projects'
)
}
?id=
{
project_id
}
"
)
except
Project
.
DoesNotExist
:
# если не удалось получить проект из бд
return
render
(
request
,
"WrongData.html"
)
...
...
portal/static/admin/css/autocomplete.css
удалено
100644 → 0
Просмотр файла @
42c23765
select
.admin-autocomplete
{
width
:
20em
;
}
.select2-container--admin-autocomplete.select2-container
{
min-height
:
30px
;
}
.select2-container--admin-autocomplete
.select2-selection--single
,
.select2-container--admin-autocomplete
.select2-selection--multiple
{
min-height
:
30px
;
padding
:
0
;
}
.select2-container--admin-autocomplete.select2-container--focus
.select2-selection
,
.select2-container--admin-autocomplete.select2-container--open
.select2-selection
{
border-color
:
var
(
--body-quiet-color
);
min-height
:
30px
;
}
.select2-container--admin-autocomplete.select2-container--focus
.select2-selection.select2-selection--single
,
.select2-container--admin-autocomplete.select2-container--open
.select2-selection.select2-selection--single
{
padding
:
0
;
}
.select2-container--admin-autocomplete.select2-container--focus
.select2-selection.select2-selection--multiple
,
.select2-container--admin-autocomplete.select2-container--open
.select2-selection.select2-selection--multiple
{
padding
:
0
;
}
.select2-container--admin-autocomplete
.select2-selection--single
{
background-color
:
var
(
--body-bg
);
border
:
1px
solid
var
(
--border-color
);
border-radius
:
4px
;
}
.select2-container--admin-autocomplete
.select2-selection--single
.select2-selection__rendered
{
color
:
var
(
--body-fg
);
line-height
:
30px
;
}
.select2-container--admin-autocomplete
.select2-selection--single
.select2-selection__clear
{
cursor
:
pointer
;
float
:
right
;
font-weight
:
bold
;
}
.select2-container--admin-autocomplete
.select2-selection--single
.select2-selection__placeholder
{
color
:
var
(
--body-quiet-color
);
}
.select2-container--admin-autocomplete
.select2-selection--single
.select2-selection__arrow
{
height
:
26px
;
position
:
absolute
;
top
:
1px
;
right
:
1px
;
width
:
20px
;
}
.select2-container--admin-autocomplete
.select2-selection--single
.select2-selection__arrow
b
{
border-color
:
#888
transparent
transparent
transparent
;
border-style
:
solid
;
border-width
:
5px
4px
0
4px
;
height
:
0
;
left
:
50%
;
margin-left
:
-4px
;
margin-top
:
-2px
;
position
:
absolute
;
top
:
50%
;
width
:
0
;
}
.select2-container--admin-autocomplete
[
dir
=
"rtl"
]
.select2-selection--single
.select2-selection__clear
{
float
:
left
;
}
.select2-container--admin-autocomplete
[
dir
=
"rtl"
]
.select2-selection--single
.select2-selection__arrow
{
left
:
1px
;
right
:
auto
;
}
.select2-container--admin-autocomplete.select2-container--disabled
.select2-selection--single
{
background-color
:
var
(
--darkened-bg
);
cursor
:
default
;
}
.select2-container--admin-autocomplete.select2-container--disabled
.select2-selection--single
.select2-selection__clear
{
display
:
none
;
}
.select2-container--admin-autocomplete.select2-container--open
.select2-selection--single
.select2-selection__arrow
b
{
border-color
:
transparent
transparent
#888
transparent
;
border-width
:
0
4px
5px
4px
;
}
.select2-container--admin-autocomplete
.select2-selection--multiple
{
background-color
:
var
(
--body-bg
);
border
:
1px
solid
var
(
--border-color
);
border-radius
:
4px
;
cursor
:
text
;
}
.select2-container--admin-autocomplete
.select2-selection--multiple
.select2-selection__rendered
{
box-sizing
:
border-box
;
list-style
:
none
;
margin
:
0
;
padding
:
0
10px
5px
5px
;
width
:
100%
;
display
:
flex
;
flex-wrap
:
wrap
;
}
.select2-container--admin-autocomplete
.select2-selection--multiple
.select2-selection__rendered
li
{
list-style
:
none
;
}
.select2-container--admin-autocomplete
.select2-selection--multiple
.select2-selection__placeholder
{
color
:
var
(
--body-quiet-color
);
margin-top
:
5px
;
float
:
left
;
}
.select2-container--admin-autocomplete
.select2-selection--multiple
.select2-selection__clear
{
cursor
:
pointer
;
float
:
right
;
font-weight
:
bold
;
margin
:
5px
;
position
:
absolute
;
right
:
0
;
}
.select2-container--admin-autocomplete
.select2-selection--multiple
.select2-selection__choice
{
background-color
:
var
(
--darkened-bg
);
border
:
1px
solid
var
(
--border-color
);
border-radius
:
4px
;
cursor
:
default
;
float
:
left
;
margin-right
:
5px
;
margin-top
:
5px
;
padding
:
0
5px
;
}
.select2-container--admin-autocomplete
.select2-selection--multiple
.select2-selection__choice__remove
{
color
:
var
(
--body-quiet-color
);
cursor
:
pointer
;
display
:
inline-block
;
font-weight
:
bold
;
margin-right
:
2px
;
}
.select2-container--admin-autocomplete
.select2-selection--multiple
.select2-selection__choice__remove
:hover
{
color
:
var
(
--body-fg
);
}
.select2-container--admin-autocomplete
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice
,
.select2-container--admin-autocomplete
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__placeholder
,
.select2-container--admin-autocomplete
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-search--inline
{
float
:
right
;
}
.select2-container--admin-autocomplete
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice
{
margin-left
:
5px
;
margin-right
:
auto
;
}
.select2-container--admin-autocomplete
[
dir
=
"rtl"
]
.select2-selection--multiple
.select2-selection__choice__remove
{
margin-left
:
2px
;
margin-right
:
auto
;
}
.select2-container--admin-autocomplete.select2-container--focus
.select2-selection--multiple
{
border
:
solid
var
(
--body-quiet-color
)
1px
;
outline
:
0
;
}
.select2-container--admin-autocomplete.select2-container--disabled
.select2-selection--multiple
{
background-color
:
var
(
--darkened-bg
);
cursor
:
default
;
}
.select2-container--admin-autocomplete.select2-container--disabled
.select2-selection__choice__remove
{
display
:
none
;
}
.select2-container--admin-autocomplete.select2-container--open.select2-container--above
.select2-selection--single
,
.select2-container--admin-autocomplete.select2-container--open.select2-container--above
.select2-selection--multiple
{
border-top-left-radius
:
0
;
border-top-right-radius
:
0
;
}
.select2-container--admin-autocomplete.select2-container--open.select2-container--below
.select2-selection--single
,
.select2-container--admin-autocomplete.select2-container--open.select2-container--below
.select2-selection--multiple
{
border-bottom-left-radius
:
0
;
border-bottom-right-radius
:
0
;
}
.select2-container--admin-autocomplete
.select2-search--dropdown
{
background
:
var
(
--darkened-bg
);
}
.select2-container--admin-autocomplete
.select2-search--dropdown
.select2-search__field
{
background
:
var
(
--body-bg
);
color
:
var
(
--body-fg
);
border
:
1px
solid
var
(
--border-color
);
border-radius
:
4px
;
}
.select2-container--admin-autocomplete
.select2-search--inline
.select2-search__field
{
background
:
transparent
;
color
:
var
(
--body-fg
);
border
:
none
;
outline
:
0
;
box-shadow
:
none
;
-webkit-appearance
:
textfield
;
}
.select2-container--admin-autocomplete
.select2-results
>
.select2-results__options
{
max-height
:
200px
;
overflow-y
:
auto
;
color
:
var
(
--body-fg
);
background
:
var
(
--body-bg
);
}
.select2-container--admin-autocomplete
.select2-results__option
[
role
=
group
]
{
padding
:
0
;
}
.select2-container--admin-autocomplete
.select2-results__option
[
aria-disabled
=
true
]
{
color
:
var
(
--body-quiet-color
);
}
.select2-container--admin-autocomplete
.select2-results__option
[
aria-selected
=
true
]
{
background-color
:
var
(
--selected-bg
);
color
:
var
(
--body-fg
);
}
.select2-container--admin-autocomplete
.select2-results__option
.select2-results__option
{
padding-left
:
1em
;
}
.select2-container--admin-autocomplete
.select2-results__option
.select2-results__option
.select2-results__group
{
padding-left
:
0
;
}
.select2-container--admin-autocomplete
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-1em
;
padding-left
:
2em
;
}
.select2-container--admin-autocomplete
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-2em
;
padding-left
:
3em
;
}
.select2-container--admin-autocomplete
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-3em
;
padding-left
:
4em
;
}
.select2-container--admin-autocomplete
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-4em
;
padding-left
:
5em
;
}
.select2-container--admin-autocomplete
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
.select2-results__option
{
margin-left
:
-5em
;
padding-left
:
6em
;
}
.select2-container--admin-autocomplete
.select2-results__option--highlighted
[
aria-selected
]
{
background-color
:
var
(
--primary
);
color
:
var
(
--primary-fg
);
}
.select2-container--admin-autocomplete
.select2-results__group
{
cursor
:
default
;
display
:
block
;
padding
:
6px
;
}
portal/static/admin/css/base.css
удалено
100644 → 0
Просмотр файла @
42c23765
Это отличие свёрнуто
Нажмите, чтобы развернуть
portal/static/admin/css/changelists.css
удалено
100644 → 0
Просмотр файла @
42c23765
/* CHANGELISTS */
#changelist
{
display
:
flex
;
align-items
:
flex-start
;
justify-content
:
space-between
;
}
#changelist
.changelist-form-container
{
flex
:
1
1
auto
;
min-width
:
0
;
}
#changelist
table
{
width
:
100%
;
}
.change-list
.hiddenfields
{
display
:
none
;
}
.change-list
.filtered
table
{
border-right
:
none
;
}
.change-list
.filtered
{
min-height
:
400px
;
}
.change-list
.filtered
.results
,
.change-list
.filtered
.paginator
,
.filtered
#toolbar
,
.filtered
div
.xfull
{
width
:
auto
;
}
.change-list
.filtered
table
tbody
th
{
padding-right
:
1em
;
}
#changelist-form
.results
{
overflow-x
:
auto
;
width
:
100%
;
}
#changelist
.toplinks
{
border-bottom
:
1px
solid
var
(
--hairline-color
);
}
#changelist
.paginator
{
color
:
var
(
--body-quiet-color
);
border-bottom
:
1px
solid
var
(
--hairline-color
);
background
:
var
(
--body-bg
);
overflow
:
hidden
;
}
/* CHANGELIST TABLES */
#changelist
table
thead
th
{
padding
:
0
;
white-space
:
nowrap
;
vertical-align
:
middle
;
}
#changelist
table
thead
th
.action-checkbox-column
{
width
:
1.5em
;
text-align
:
center
;
}
#changelist
table
tbody
td
.action-checkbox
{
text-align
:
center
;
}
#changelist
table
tfoot
{
color
:
var
(
--body-quiet-color
);
}
/* TOOLBAR */
#toolbar
{
padding
:
8px
10px
;
margin-bottom
:
15px
;
border-top
:
1px
solid
var
(
--hairline-color
);
border-bottom
:
1px
solid
var
(
--hairline-color
);
background
:
var
(
--darkened-bg
);
color
:
var
(
--body-quiet-color
);
}
#toolbar
form
input
{
border-radius
:
4px
;
font-size
:
0.875rem
;
padding
:
5px
;
color
:
var
(
--body-fg
);
}
#toolbar
#searchbar
{
height
:
19px
;
border
:
1px
solid
var
(
--border-color
);
padding
:
2px
5px
;
margin
:
0
;
vertical-align
:
top
;
font-size
:
0.8125rem
;
max-width
:
100%
;
}
#toolbar
#searchbar
:focus
{
border-color
:
var
(
--body-quiet-color
);
}
#toolbar
form
input
[
type
=
"submit"
]
{
border
:
1px
solid
var
(
--border-color
);
font-size
:
0.8125rem
;
padding
:
4px
8px
;
margin
:
0
;
vertical-align
:
middle
;
background
:
var
(
--body-bg
);
box-shadow
:
0
-15px
20px
-10px
rgba
(
0
,
0
,
0
,
0.15
)
inset
;
cursor
:
pointer
;
color
:
var
(
--body-fg
);
}
#toolbar
form
input
[
type
=
"submit"
]
:focus
,
#toolbar
form
input
[
type
=
"submit"
]
:hover
{
border-color
:
var
(
--body-quiet-color
);
}
#changelist-search
img
{
vertical-align
:
middle
;
margin-right
:
4px
;
}
#changelist-search
.help
{
word-break
:
break-word
;
}
/* FILTER COLUMN */
#changelist-filter
{
flex
:
0
0
240px
;
order
:
1
;
background
:
var
(
--darkened-bg
);
border-left
:
none
;
margin
:
0
0
0
30px
;
}
#changelist-filter
h2
{
font-size
:
0.875rem
;
text-transform
:
uppercase
;
letter-spacing
:
0.5px
;
padding
:
5px
15px
;
margin-bottom
:
12px
;
border-bottom
:
none
;
}
#changelist-filter
h3
,
#changelist-filter
details
summary
{
font-weight
:
400
;
padding
:
0
15px
;
margin-bottom
:
10px
;
}
#changelist-filter
details
summary
>
*
{
display
:
inline
;
}
#changelist-filter
details
>
summary
{
list-style-type
:
none
;
}
#changelist-filter
details
>
summary
::-webkit-details-marker
{
display
:
none
;
}
#changelist-filter
details
>
summary
::before
{
content
:
'→'
;
font-weight
:
bold
;
color
:
var
(
--link-hover-color
);
}
#changelist-filter
details
[
open
]
>
summary
::before
{
content
:
'↓'
;
}
#changelist-filter
ul
{
margin
:
5px
0
;
padding
:
0
15px
15px
;
border-bottom
:
1px
solid
var
(
--hairline-color
);
}
#changelist-filter
ul
:last-child
{
border-bottom
:
none
;
}
#changelist-filter
li
{
list-style-type
:
none
;
margin-left
:
0
;
padding-left
:
0
;
}
#changelist-filter
a
{
display
:
block
;
color
:
var
(
--body-quiet-color
);
word-break
:
break-word
;
}
#changelist-filter
li
.selected
{
border-left
:
5px
solid
var
(
--hairline-color
);
padding-left
:
10px
;
margin-left
:
-15px
;
}
#changelist-filter
li
.selected
a
{
color
:
var
(
--link-selected-fg
);
}
#changelist-filter
a
:focus
,
#changelist-filter
a
:hover
,
#changelist-filter
li
.selected
a
:focus
,
#changelist-filter
li
.selected
a
:hover
{
color
:
var
(
--link-hover-color
);
}
#changelist-filter
#changelist-filter-clear
a
{
font-size
:
0.8125rem
;
padding-bottom
:
10px
;
border-bottom
:
1px
solid
var
(
--hairline-color
);
}
/* DATE DRILLDOWN */
.change-list
ul
.toplinks
{
display
:
block
;
float
:
left
;
padding
:
0
;
margin
:
0
;
width
:
100%
;
}
.change-list
ul
.toplinks
li
{
padding
:
3px
6px
;
font-weight
:
bold
;
list-style-type
:
none
;
display
:
inline-block
;
}
.change-list
ul
.toplinks
.date-back
a
{
color
:
var
(
--body-quiet-color
);
}
.change-list
ul
.toplinks
.date-back
a
:focus
,
.change-list
ul
.toplinks
.date-back
a
:hover
{
color
:
var
(
--link-hover-color
);
}
/* ACTIONS */
.filtered
.actions
{
border-right
:
none
;
}
#changelist
table
input
{
margin
:
0
;
vertical-align
:
baseline
;
}
#changelist
table
tbody
tr
.selected
{
background-color
:
var
(
--selected-row
);
}
#changelist
.actions
{
padding
:
10px
;
background
:
var
(
--body-bg
);
border-top
:
none
;
border-bottom
:
none
;
line-height
:
24px
;
color
:
var
(
--body-quiet-color
);
width
:
100%
;
}
#changelist
.actions
span
.all
,
#changelist
.actions
span
.action-counter
,
#changelist
.actions
span
.clear
,
#changelist
.actions
span
.question
{
font-size
:
0.8125rem
;
margin
:
0
0.5em
;
}
#changelist
.actions
:last-child
{
border-bottom
:
none
;
}
#changelist
.actions
select
{
vertical-align
:
top
;
height
:
24px
;
color
:
var
(
--body-fg
);
border
:
1px
solid
var
(
--border-color
);
border-radius
:
4px
;
font-size
:
0.875rem
;
padding
:
0
0
0
4px
;
margin
:
0
;
margin-left
:
10px
;
}
#changelist
.actions
select
:focus
{
border-color
:
var
(
--body-quiet-color
);
}
#changelist
.actions
label
{
display
:
inline-block
;
vertical-align
:
middle
;
font-size
:
0.8125rem
;
}
#changelist
.actions
.button
{
font-size
:
0.8125rem
;
border
:
1px
solid
var
(
--border-color
);
border-radius
:
4px
;
background
:
var
(
--body-bg
);
box-shadow
:
0
-15px
20px
-10px
rgba
(
0
,
0
,
0
,
0.15
)
inset
;
cursor
:
pointer
;
height
:
24px
;
line-height
:
1
;
padding
:
4px
8px
;
margin
:
0
;
color
:
var
(
--body-fg
);
}
#changelist
.actions
.button
:focus
,
#changelist
.actions
.button
:hover
{
border-color
:
var
(
--body-quiet-color
);
}
portal/static/admin/css/dark_mode.css
удалено
100644 → 0
Просмотр файла @
42c23765
@media
(
prefers-color-scheme
:
dark
)
{
:root
{
--primary
:
#264b5d
;
--primary-fg
:
#f7f7f7
;
--body-fg
:
#eeeeee
;
--body-bg
:
#121212
;
--body-quiet-color
:
#e0e0e0
;
--body-loud-color
:
#ffffff
;
--breadcrumbs-link-fg
:
#e0e0e0
;
--breadcrumbs-bg
:
var
(
--primary
);
--link-fg
:
#81d4fa
;
--link-hover-color
:
#4ac1f7
;
--link-selected-fg
:
#6f94c6
;
--hairline-color
:
#272727
;
--border-color
:
#353535
;
--error-fg
:
#e35f5f
;
--message-success-bg
:
#006b1b
;
--message-warning-bg
:
#583305
;
--message-error-bg
:
#570808
;
--darkened-bg
:
#212121
;
--selected-bg
:
#1b1b1b
;
--selected-row
:
#00363a
;
--close-button-bg
:
#333333
;
--close-button-hover-bg
:
#666666
;
}
}
portal/static/admin/css/dashboard.css
удалено
100644 → 0
Просмотр файла @
42c23765
/* DASHBOARD */
.dashboard
.module
table
th
{
width
:
100%
;
}
.dashboard
.module
table
td
{
white-space
:
nowrap
;
}
.dashboard
.module
table
td
a
{
display
:
block
;
padding-right
:
.6em
;
}
/* RECENT ACTIONS MODULE */
.module
ul
.actionlist
{
margin-left
:
0
;
}
ul
.actionlist
li
{
list-style-type
:
none
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
portal/static/admin/css/fonts.css
удалено
100644 → 0
Просмотр файла @
42c23765
@font-face
{
font-family
:
'Roboto'
;
src
:
url('../fonts/Roboto-Bold-webfont.woff')
;
font-weight
:
700
;
font-style
:
normal
;
}
@font-face
{
font-family
:
'Roboto'
;
src
:
url('../fonts/Roboto-Regular-webfont.woff')
;
font-weight
:
400
;
font-style
:
normal
;
}
@font-face
{
font-family
:
'Roboto'
;
src
:
url('../fonts/Roboto-Light-webfont.woff')
;
font-weight
:
300
;
font-style
:
normal
;
}
portal/static/admin/css/forms.css
удалено
100644 → 0
Просмотр файла @
42c23765
@import
url('widgets.css')
;
/* FORM ROWS */
.form-row
{
overflow
:
hidden
;
padding
:
10px
;
font-size
:
0.8125rem
;
border-bottom
:
1px
solid
var
(
--hairline-color
);
}
.form-row
img
,
.form-row
input
{
vertical-align
:
middle
;
}
.form-row
label
input
[
type
=
"checkbox"
]
{
margin-top
:
0
;
vertical-align
:
0
;
}
form
.form-row
p
{
padding-left
:
0
;
}
/* FORM LABELS */
label
{
font-weight
:
normal
;
color
:
var
(
--body-quiet-color
);
font-size
:
0.8125rem
;
}
.required
label
,
label
.required
{
font-weight
:
bold
;
color
:
var
(
--body-fg
);
}
/* RADIO BUTTONS */
form
div
.radiolist
div
{
padding-right
:
7px
;
}
form
div
.radiolist.inline
div
{
display
:
inline-block
;
}
form
div
.radiolist
label
{
width
:
auto
;
}
form
div
.radiolist
input
[
type
=
"radio"
]
{
margin
:
-2px
4px
0
0
;
padding
:
0
;
}
form
ul
.inline
{
margin-left
:
0
;
padding
:
0
;
}
form
ul
.inline
li
{
float
:
left
;
padding-right
:
7px
;
}
/* ALIGNED FIELDSETS */
.aligned
label
{
display
:
block
;
padding
:
4px
10px
0
0
;
float
:
left
;
width
:
160px
;
word-wrap
:
break-word
;
line-height
:
1
;
}
.aligned
label
:not
(
.vCheckboxLabel
)
:after
{
content
:
''
;
display
:
inline-block
;
vertical-align
:
middle
;
height
:
26px
;
}
.aligned
label
+
p
,
.aligned
label
+
div
.help
,
.aligned
label
+
div
.readonly
{
padding
:
6px
0
;
margin-top
:
0
;
margin-bottom
:
0
;
margin-left
:
170px
;
overflow-wrap
:
break-word
;
}
.aligned
ul
label
{
display
:
inline
;
float
:
none
;
width
:
auto
;
}
.aligned
.form-row
input
{
margin-bottom
:
0
;
}
.colMS
.aligned
.vLargeTextField
,
.colMS
.aligned
.vXMLLargeTextField
{
width
:
350px
;
}
form
.aligned
ul
{
margin-left
:
160px
;
padding-left
:
10px
;
}
form
.aligned
div
.radiolist
{
display
:
inline-block
;
margin
:
0
;
padding
:
0
;
}
form
.aligned
p
.help
,
form
.aligned
div
.help
{
clear
:
left
;
margin-top
:
0
;
margin-left
:
160px
;
padding-left
:
10px
;
}
form
.aligned
label
+
p
.help
,
form
.aligned
label
+
div
.help
{
margin-left
:
0
;
padding-left
:
0
;
}
form
.aligned
p
.help
:last-child
,
form
.aligned
div
.help
:last-child
{
margin-bottom
:
0
;
padding-bottom
:
0
;
}
form
.aligned
input
+
p
.help
,
form
.aligned
textarea
+
p
.help
,
form
.aligned
select
+
p
.help
,
form
.aligned
input
+
div
.help
,
form
.aligned
textarea
+
div
.help
,
form
.aligned
select
+
div
.help
{
margin-left
:
160px
;
padding-left
:
10px
;
}
form
.aligned
ul
li
{
list-style
:
none
;
}
form
.aligned
table
p
{
margin-left
:
0
;
padding-left
:
0
;
}
.aligned
.vCheckboxLabel
{
float
:
none
;
width
:
auto
;
display
:
inline-block
;
vertical-align
:
-3px
;
padding
:
0
0
5px
5px
;
}
.aligned
.vCheckboxLabel
+
p
.help
,
.aligned
.vCheckboxLabel
+
div
.help
{
margin-top
:
-4px
;
}
.colM
.aligned
.vLargeTextField
,
.colM
.aligned
.vXMLLargeTextField
{
width
:
610px
;
}
.checkbox-row
p
.help
,
.checkbox-row
div
.help
{
margin-left
:
0
;
padding-left
:
0
;
}
fieldset
.fieldBox
{
float
:
left
;
margin-right
:
20px
;
}
/* WIDE FIELDSETS */
.wide
label
{
width
:
200px
;
}
form
.wide
p
,
form
.wide
input
+
p
.help
,
form
.wide
input
+
div
.help
{
margin-left
:
200px
;
}
form
.wide
p
.help
,
form
.wide
div
.help
{
padding-left
:
38px
;
}
form
div
.help
ul
{
padding-left
:
0
;
margin-left
:
0
;
}
.colM
fieldset
.wide
.vLargeTextField
,
.colM
fieldset
.wide
.vXMLLargeTextField
{
width
:
450px
;
}
/* COLLAPSED FIELDSETS */
fieldset
.collapsed
*
{
display
:
none
;
}
fieldset
.collapsed
h2
,
fieldset
.collapsed
{
display
:
block
;
}
fieldset
.collapsed
{
border
:
1px
solid
var
(
--hairline-color
);
border-radius
:
4px
;
overflow
:
hidden
;
}
fieldset
.collapsed
h2
{
background
:
var
(
--darkened-bg
);
color
:
var
(
--body-quiet-color
);
}
fieldset
.collapse-toggle
{
color
:
var
(
--header-link-color
);
}
fieldset
.collapsed
.collapse-toggle
{
background
:
transparent
;
display
:
inline
;
color
:
var
(
--link-fg
);
}
/* MONOSPACE TEXTAREAS */
fieldset
.monospace
textarea
{
font-family
:
"Bitstream Vera Sans Mono"
,
Monaco
,
"Courier New"
,
Courier
,
monospace
;
}
/* SUBMIT ROW */
.submit-row
{
padding
:
12px
14px
7px
;
margin
:
0
0
20px
;
background
:
var
(
--darkened-bg
);
border
:
1px
solid
var
(
--hairline-color
);
border-radius
:
4px
;
text-align
:
right
;
overflow
:
hidden
;
}
body
.popup
.submit-row
{
overflow
:
auto
;
}
.submit-row
input
{
height
:
35px
;
line-height
:
15px
;
margin
:
0
0
5px
5px
;
}
.submit-row
input
.default
{
margin
:
0
0
5px
8px
;
text-transform
:
uppercase
;
}
.submit-row
p
{
margin
:
0.3em
;
}
.submit-row
p
.deletelink-box
{
float
:
left
;
margin
:
0
;
}
.submit-row
a
.deletelink
{
display
:
block
;
background
:
var
(
--delete-button-bg
);
border-radius
:
4px
;
padding
:
10px
15px
;
height
:
15px
;
line-height
:
15px
;
margin-bottom
:
5px
;
color
:
var
(
--button-fg
);
}
.submit-row
a
.closelink
{
display
:
inline-block
;
background
:
var
(
--close-button-bg
);
border-radius
:
4px
;
padding
:
10px
15px
;
height
:
15px
;
line-height
:
15px
;
margin
:
0
0
0
5px
;
color
:
var
(
--button-fg
);
}
.submit-row
a
.deletelink
:focus
,
.submit-row
a
.deletelink
:hover
,
.submit-row
a
.deletelink
:active
{
background
:
var
(
--delete-button-hover-bg
);
}
.submit-row
a
.closelink
:focus
,
.submit-row
a
.closelink
:hover
,
.submit-row
a
.closelink
:active
{
background
:
var
(
--close-button-hover-bg
);
}
/* CUSTOM FORM FIELDS */
.vSelectMultipleField
{
vertical-align
:
top
;
}
.vCheckboxField
{
border
:
none
;
}
.vDateField
,
.vTimeField
{
margin-right
:
2px
;
margin-bottom
:
4px
;
}
.vDateField
{
min-width
:
6.85em
;
}
.vTimeField
{
min-width
:
4.7em
;
}
.vURLField
{
width
:
30em
;
}
.vLargeTextField
,
.vXMLLargeTextField
{
width
:
48em
;
}
.flatpages-flatpage
#id_content
{
height
:
40.2em
;
}
.module
table
.vPositiveSmallIntegerField
{
width
:
2.2em
;
}
.vIntegerField
{
width
:
5em
;
}
.vBigIntegerField
{
width
:
10em
;
}
.vForeignKeyRawIdAdminField
{
width
:
5em
;
}
.vTextField
,
.vUUIDField
{
width
:
20em
;
}
/* INLINES */
.inline-group
{
padding
:
0
;
margin
:
0
0
30px
;
}
.inline-group
thead
th
{
padding
:
8px
10px
;
}
.inline-group
.aligned
label
{
width
:
160px
;
}
.inline-related
{
position
:
relative
;
}
.inline-related
h3
{
margin
:
0
;
color
:
var
(
--body-quiet-color
);
padding
:
5px
;
font-size
:
0.8125rem
;
background
:
var
(
--darkened-bg
);
border-top
:
1px
solid
var
(
--hairline-color
);
border-bottom
:
1px
solid
var
(
--hairline-color
);
}
.inline-related
h3
span
.delete
{
float
:
right
;
}
.inline-related
h3
span
.delete
label
{
margin-left
:
2px
;
font-size
:
0.6875rem
;
}
.inline-related
fieldset
{
margin
:
0
;
background
:
var
(
--body-bg
);
border
:
none
;
width
:
100%
;
}
.inline-related
fieldset
.module
h3
{
margin
:
0
;
padding
:
2px
5px
3px
5px
;
font-size
:
0.6875rem
;
text-align
:
left
;
font-weight
:
bold
;
background
:
#bcd
;
color
:
var
(
--body-bg
);
}
.inline-group
.tabular
fieldset
.module
{
border
:
none
;
}
.inline-related.tabular
fieldset
.module
table
{
width
:
100%
;
overflow-x
:
scroll
;
}
.last-related
fieldset
{
border
:
none
;
}
.inline-group
.tabular
tr
.has_original
td
{
padding-top
:
2em
;
}
.inline-group
.tabular
tr
td
.original
{
padding
:
2px
0
0
0
;
width
:
0
;
_position
:
relative
;
}
.inline-group
.tabular
th
.original
{
width
:
0px
;
padding
:
0
;
}
.inline-group
.tabular
td
.original
p
{
position
:
absolute
;
left
:
0
;
height
:
1.1em
;
padding
:
2px
9px
;
overflow
:
hidden
;
font-size
:
0.5625rem
;
font-weight
:
bold
;
color
:
var
(
--body-quiet-color
);
_width
:
700px
;
}
.inline-group
ul
.tools
{
padding
:
0
;
margin
:
0
;
list-style
:
none
;
}
.inline-group
ul
.tools
li
{
display
:
inline
;
padding
:
0
5px
;
}
.inline-group
div
.add-row
,
.inline-group
.tabular
tr
.add-row
td
{
color
:
var
(
--body-quiet-color
);
background
:
var
(
--darkened-bg
);
padding
:
8px
10px
;
border-bottom
:
1px
solid
var
(
--hairline-color
);
}
.inline-group
.tabular
tr
.add-row
td
{
padding
:
8px
10px
;
border-bottom
:
1px
solid
var
(
--hairline-color
);
}
.inline-group
ul
.tools
a
.add
,
.inline-group
div
.add-row
a
,
.inline-group
.tabular
tr
.add-row
td
a
{
background
:
url(../img/icon-addlink.svg)
0
1px
no-repeat
;
padding-left
:
16px
;
font-size
:
0.75rem
;
}
.empty-form
{
display
:
none
;
}
/* RELATED FIELD ADD ONE / LOOKUP */
.related-lookup
{
margin-left
:
5px
;
display
:
inline-block
;
vertical-align
:
middle
;
background-repeat
:
no-repeat
;
background-size
:
14px
;
}
.related-lookup
{
width
:
16px
;
height
:
16px
;
background-image
:
url(../img/search.svg)
;
}
form
.related-widget-wrapper
ul
{
display
:
inline-block
;
margin-left
:
0
;
padding-left
:
0
;
}
.clearable-file-input
input
{
margin-top
:
0
;
}
portal/static/admin/css/login.css
удалено
100644 → 0
Просмотр файла @
42c23765
/* LOGIN FORM */
.login
{
background
:
var
(
--darkened-bg
);
height
:
auto
;
}
.login
#header
{
height
:
auto
;
padding
:
15px
16px
;
justify-content
:
center
;
}
.login
#header
h1
{
font-size
:
1.125rem
;
margin
:
0
;
}
.login
#header
h1
a
{
color
:
var
(
--header-link-color
);
}
.login
#content
{
padding
:
20px
20px
0
;
}
.login
#container
{
background
:
var
(
--body-bg
);
border
:
1px
solid
var
(
--hairline-color
);
border-radius
:
4px
;
overflow
:
hidden
;
width
:
28em
;
min-width
:
300px
;
margin
:
100px
auto
;
height
:
auto
;
}
.login
.form-row
{
padding
:
4px
0
;
}
.login
.form-row
label
{
display
:
block
;
line-height
:
2em
;
}
.login
.form-row
#id_username
,
.login
.form-row
#id_password
{
padding
:
8px
;
width
:
100%
;
box-sizing
:
border-box
;
}
.login
.submit-row
{
padding
:
1em
0
0
0
;
margin
:
0
;
text-align
:
center
;
}
.login
.password-reset-link
{
text-align
:
center
;
}
portal/static/admin/css/nav_sidebar.css
удалено
100644 → 0
Просмотр файла @
42c23765
.sticky
{
position
:
sticky
;
top
:
0
;
max-height
:
100vh
;
}
.toggle-nav-sidebar
{
z-index
:
20
;
left
:
0
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
flex
:
0
0
23px
;
width
:
23px
;
border
:
0
;
border-right
:
1px
solid
var
(
--hairline-color
);
background-color
:
var
(
--body-bg
);
cursor
:
pointer
;
font-size
:
1.25rem
;
color
:
var
(
--link-fg
);
padding
:
0
;
}
[
dir
=
"rtl"
]
.toggle-nav-sidebar
{
border-left
:
1px
solid
var
(
--hairline-color
);
border-right
:
0
;
}
.toggle-nav-sidebar
:hover
,
.toggle-nav-sidebar
:focus
{
background-color
:
var
(
--darkened-bg
);
}
#nav-sidebar
{
z-index
:
15
;
flex
:
0
0
275px
;
left
:
-276px
;
margin-left
:
-276px
;
border-top
:
1px
solid
transparent
;
border-right
:
1px
solid
var
(
--hairline-color
);
background-color
:
var
(
--body-bg
);
overflow
:
auto
;
}
[
dir
=
"rtl"
]
#nav-sidebar
{
border-left
:
1px
solid
var
(
--hairline-color
);
border-right
:
0
;
left
:
0
;
margin-left
:
0
;
right
:
-276px
;
margin-right
:
-276px
;
}
.toggle-nav-sidebar
::before
{
content
:
'\00BB'
;
}
.main.shifted
.toggle-nav-sidebar
::before
{
content
:
'\00AB'
;
}
.main.shifted
>
#nav-sidebar
{
margin-left
:
0
;
}
[
dir
=
"rtl"
]
.main.shifted
>
#nav-sidebar
{
margin-right
:
0
;
}
#nav-sidebar
.module
th
{
width
:
100%
;
overflow-wrap
:
anywhere
;
}
#nav-sidebar
.module
th
,
#nav-sidebar
.module
caption
{
padding-left
:
16px
;
}
#nav-sidebar
.module
td
{
white-space
:
nowrap
;
}
[
dir
=
"rtl"
]
#nav-sidebar
.module
th
,
[
dir
=
"rtl"
]
#nav-sidebar
.module
caption
{
padding-left
:
8px
;
padding-right
:
16px
;
}
#nav-sidebar
.current-app
.section
:link
,
#nav-sidebar
.current-app
.section
:visited
{
color
:
var
(
--header-color
);
font-weight
:
bold
;
}
#nav-sidebar
.current-model
{
background
:
var
(
--selected-row
);
}
.main
>
#nav-sidebar
+
.content
{
max-width
:
calc
(
100%
-
23px
);
}
.main.shifted
>
#nav-sidebar
+
.content
{
max-width
:
calc
(
100%
-
299px
);
}
@media
(
max-width
:
767px
)
{
#nav-sidebar
,
#toggle-nav-sidebar
{
display
:
none
;
}
.main
>
#nav-sidebar
+
.content
,
.main.shifted
>
#nav-sidebar
+
.content
{
max-width
:
100%
;
}
}
#nav-filter
{
width
:
100%
;
box-sizing
:
border-box
;
padding
:
2px
5px
;
margin
:
5px
0
;
border
:
1px
solid
var
(
--border-color
);
background-color
:
var
(
--darkened-bg
);
color
:
var
(
--body-fg
);
}
#nav-filter
:focus
{
border-color
:
var
(
--body-quiet-color
);
}
#nav-filter
.no-results
{
background
:
var
(
--message-error-bg
);
}
#nav-sidebar
table
{
width
:
100%
;
}
portal/static/admin/css/responsive.css
удалено
100644 → 0
Просмотр файла @
42c23765
/* Tablets */
input
[
type
=
"submit"
],
button
{
-webkit-appearance
:
none
;
appearance
:
none
;
}
@media
(
max-width
:
1024px
)
{
/* Basic */
html
{
-webkit-text-size-adjust
:
100%
;
}
td
,
th
{
padding
:
10px
;
font-size
:
0.875rem
;
}
.small
{
font-size
:
0.75rem
;
}
/* Layout */
#container
{
min-width
:
0
;
}
#content
{
padding
:
15px
20px
20px
;
}
div
.breadcrumbs
{
padding
:
10px
30px
;
}
/* Header */
#header
{
flex-direction
:
column
;
padding
:
15px
30px
;
justify-content
:
flex-start
;
}
#branding
h1
{
margin
:
0
0
8px
;
line-height
:
1.2
;
}
#user-tools
{
margin
:
0
;
font-weight
:
400
;
line-height
:
1.85
;
text-align
:
left
;
}
#user-tools
a
{
display
:
inline-block
;
line-height
:
1.4
;
}
/* Dashboard */
.dashboard
#content
{
width
:
auto
;
}
#content-related
{
margin-right
:
-290px
;
}
.colSM
#content-related
{
margin-left
:
-290px
;
}
.colMS
{
margin-right
:
290px
;
}
.colSM
{
margin-left
:
290px
;
}
.dashboard
.module
table
td
a
{
padding-right
:
0
;
}
td
.changelink
,
td
.addlink
{
font-size
:
0.8125rem
;
}
/* Changelist */
#toolbar
{
border
:
none
;
padding
:
15px
;
}
#changelist-search
>
div
{
display
:
flex
;
flex-wrap
:
nowrap
;
max-width
:
480px
;
}
#changelist-search
label
{
line-height
:
22px
;
}
#toolbar
form
#searchbar
{
flex
:
1
0
auto
;
width
:
0
;
height
:
22px
;
margin
:
0
10px
0
6px
;
}
#toolbar
form
input
[
type
=
submit
]
{
flex
:
0
1
auto
;
}
#changelist-search
.quiet
{
width
:
0
;
flex
:
1
0
auto
;
margin
:
5px
0
0
25px
;
}
#changelist
.actions
{
display
:
flex
;
flex-wrap
:
wrap
;
padding
:
15px
0
;
}
#changelist
.actions
label
{
display
:
flex
;
}
#changelist
.actions
select
{
background
:
var
(
--body-bg
);
}
#changelist
.actions
.button
{
min-width
:
48px
;
margin
:
0
10px
;
}
#changelist
.actions
span
.all
,
#changelist
.actions
span
.clear
,
#changelist
.actions
span
.question
,
#changelist
.actions
span
.action-counter
{
font-size
:
0.6875rem
;
margin
:
0
10px
0
0
;
}
#changelist-filter
{
flex-basis
:
200px
;
}
.change-list
.filtered
.results
,
.change-list
.filtered
.paginator
,
.filtered
#toolbar
,
.filtered
.actions
,
#changelist
.paginator
{
border-top-color
:
var
(
--hairline-color
);
/* XXX Is this used at all? */
}
#changelist
.results
+
.paginator
{
border-top
:
none
;
}
/* Forms */
label
{
font-size
:
0.875rem
;
}
.form-row
input
[
type
=
text
],
.form-row
input
[
type
=
password
],
.form-row
input
[
type
=
email
],
.form-row
input
[
type
=
url
],
.form-row
input
[
type
=
tel
],
.form-row
input
[
type
=
number
],
.form-row
textarea
,
.form-row
select
,
.form-row
.vTextField
{
box-sizing
:
border-box
;
margin
:
0
;
padding
:
6px
8px
;
min-height
:
36px
;
font-size
:
0.875rem
;
}
.form-row
select
{
height
:
36px
;
}
.form-row
select
[
multiple
]
{
height
:
auto
;
min-height
:
0
;
}
fieldset
.fieldBox
{
float
:
none
;
margin
:
0
-10px
;
padding
:
0
10px
;
}
fieldset
.fieldBox
+
.fieldBox
{
margin-top
:
10px
;
padding-top
:
10px
;
border-top
:
1px
solid
var
(
--hairline-color
);
}
textarea
{
max-width
:
100%
;
max-height
:
120px
;
}
.aligned
label
{
padding-top
:
6px
;
}
.aligned
.related-lookup
,
.aligned
.datetimeshortcuts
,
.aligned
.related-lookup
+
strong
{
align-self
:
center
;
margin-left
:
15px
;
}
form
.aligned
div
.radiolist
{
margin-left
:
2px
;
}
.submit-row
{
padding
:
8px
8px
3px
8px
;
}
.submit-row
a
.deletelink
{
padding
:
10px
7px
;
}
.submit-row
input
.default
{
margin
:
0
0
5px
5px
;
}
.button
,
input
[
type
=
submit
],
input
[
type
=
button
],
.submit-row
input
,
a
.button
{
padding
:
7px
;
}
/* Related widget */
.related-widget-wrapper
{
float
:
none
;
}
.related-widget-wrapper-link
+
.selector
{
max-width
:
calc
(
100%
-
30px
);
margin-right
:
15px
;
}
select
+
.related-widget-wrapper-link
,
.related-widget-wrapper-link
+
.related-widget-wrapper-link
{
margin-left
:
10px
;
}
/* Selector */
.selector
{
display
:
flex
;
width
:
100%
;
}
.selector
.selector-filter
{
display
:
flex
;
align-items
:
center
;
}
.selector
.selector-filter
label
{
margin
:
0
8px
0
0
;
}
.selector
.selector-filter
input
{
width
:
auto
;
min-height
:
0
;
flex
:
1
1
;
}
.selector-available
,
.selector-chosen
{
width
:
auto
;
flex
:
1
1
;
display
:
flex
;
flex-direction
:
column
;
}
.selector
select
{
width
:
100%
;
flex
:
1
0
auto
;
margin-bottom
:
5px
;
}
.selector
ul
.selector-chooser
{
width
:
26px
;
height
:
52px
;
padding
:
2px
0
;
margin
:
auto
15px
;
border-radius
:
20px
;
transform
:
translateY
(
-10px
);
}
.selector-add
,
.selector-remove
{
width
:
20px
;
height
:
20px
;
background-size
:
20px
auto
;
}
.selector-add
{
background-position
:
0
-120px
;
}
.selector-remove
{
background-position
:
0
-80px
;
}
a
.selector-chooseall
,
a
.selector-clearall
{
align-self
:
center
;
}
.stacked
{
flex-direction
:
column
;
max-width
:
480px
;
}
.stacked
>
*
{
flex
:
0
1
auto
;
}
.stacked
select
{
margin-bottom
:
0
;
}
.stacked
.selector-available
,
.stacked
.selector-chosen
{
width
:
auto
;
}
.stacked
ul
.selector-chooser
{
width
:
52px
;
height
:
26px
;
padding
:
0
2px
;
margin
:
15px
auto
;
transform
:
none
;
}
.stacked
.selector-chooser
li
{
padding
:
3px
;
}
.stacked
.selector-add
,
.stacked
.selector-remove
{
background-size
:
20px
auto
;
}
.stacked
.selector-add
{
background-position
:
0
-40px
;
}
.stacked
.active.selector-add
{
background-position
:
0
-40px
;
}
.active.selector-add
:focus
,
.active.selector-add
:hover
{
background-position
:
0
-140px
;
}
.stacked
.active.selector-add
:focus
,
.stacked
.active.selector-add
:hover
{
background-position
:
0
-60px
;
}
.stacked
.selector-remove
{
background-position
:
0
0
;
}
.stacked
.active.selector-remove
{
background-position
:
0
0
;
}
.active.selector-remove
:focus
,
.active.selector-remove
:hover
{
background-position
:
0
-100px
;
}
.stacked
.active.selector-remove
:focus
,
.stacked
.active.selector-remove
:hover
{
background-position
:
0
-20px
;
}
.help-tooltip
,
.selector
.help-icon
{
display
:
none
;
}
form
.form-row
p
.datetime
{
width
:
100%
;
}
.datetime
input
{
width
:
50%
;
max-width
:
120px
;
}
.datetime
span
{
font-size
:
0.8125rem
;
}
.datetime
.timezonewarning
{
display
:
block
;
font-size
:
0.6875rem
;
color
:
var
(
--body-quiet-color
);
}
.datetimeshortcuts
{
color
:
var
(
--border-color
);
/* XXX Redundant, .datetime span also sets #ccc */
}
.form-row
.datetime
input
.vDateField
,
.form-row
.datetime
input
.vTimeField
{
width
:
75%
;
}
.inline-group
{
overflow
:
auto
;
}
/* Messages */
ul
.messagelist
li
{
padding-left
:
55px
;
background-position
:
30px
12px
;
}
ul
.messagelist
li
.error
{
background-position
:
30px
12px
;
}
ul
.messagelist
li
.warning
{
background-position
:
30px
14px
;
}
/* Login */
.login
#header
{
padding
:
15px
20px
;
}
.login
#branding
h1
{
margin
:
0
;
}
/* GIS */
div
.olMap
{
max-width
:
calc
(
100vw
-
30px
);
max-height
:
300px
;
}
.olMap
+
.clear_features
{
display
:
block
;
margin-top
:
10px
;
}
/* Docs */
.module
table
.xfull
{
width
:
100%
;
}
pre
.literal-block
{
overflow
:
auto
;
}
}
/* Mobile */
@media
(
max-width
:
767px
)
{
/* Layout */
#header
,
#content
,
#footer
{
padding
:
15px
;
}
#footer
:empty
{
padding
:
0
;
}
div
.breadcrumbs
{
padding
:
10px
15px
;
}
/* Dashboard */
.colMS
,
.colSM
{
margin
:
0
;
}
#content-related
,
.colSM
#content-related
{
width
:
100%
;
margin
:
0
;
}
#content-related
.module
{
margin-bottom
:
0
;
}
#content-related
.module
h2
{
padding
:
10px
15px
;
font-size
:
1rem
;
}
/* Changelist */
#changelist
{
align-items
:
stretch
;
flex-direction
:
column
;
}
#toolbar
{
padding
:
10px
;
}
#changelist-filter
{
margin-left
:
0
;
}
#changelist
.actions
label
{
flex
:
1
1
;
}
#changelist
.actions
select
{
flex
:
1
0
;
width
:
100%
;
}
#changelist
.actions
span
{
flex
:
1
0
100%
;
}
#changelist-filter
{
position
:
static
;
width
:
auto
;
margin-top
:
30px
;
}
.object-tools
{
float
:
none
;
margin
:
0
0
15px
;
padding
:
0
;
overflow
:
hidden
;
}
.object-tools
li
{
height
:
auto
;
margin-left
:
0
;
}
.object-tools
li
+
li
{
margin-left
:
15px
;
}
/* Forms */
.form-row
{
padding
:
15px
0
;
}
.aligned
.form-row
,
.aligned
.form-row
>
div
{
display
:
flex
;
flex-wrap
:
wrap
;
max-width
:
100vw
;
}
.aligned
.form-row
>
div
{
width
:
calc
(
100vw
-
30px
);
}
textarea
{
max-width
:
none
;
}
.vURLField
{
width
:
auto
;
}
fieldset
.fieldBox
+
.fieldBox
{
margin-top
:
15px
;
padding-top
:
15px
;
}
fieldset
.collapsed
.form-row
{
display
:
none
;
}
.aligned
label
{
width
:
100%
;
padding
:
0
0
10px
;
}
.aligned
label
:after
{
max-height
:
0
;
}
.aligned
.form-row
input
,
.aligned
.form-row
select
,
.aligned
.form-row
textarea
{
flex
:
1
1
auto
;
max-width
:
100%
;
}
.aligned
.checkbox-row
{
align-items
:
center
;
}
.aligned
.checkbox-row
input
{
flex
:
0
1
auto
;
margin
:
0
;
}
.aligned
.vCheckboxLabel
{
flex
:
1
0
;
padding
:
1px
0
0
5px
;
}
.aligned
label
+
p
,
.aligned
label
+
div
.help
,
.aligned
label
+
div
.readonly
{
padding
:
0
;
margin-left
:
0
;
}
.aligned
p
.file-upload
{
margin-left
:
0
;
font-size
:
0.8125rem
;
}
span
.clearable-file-input
{
margin-left
:
15px
;
}
span
.clearable-file-input
label
{
font-size
:
0.8125rem
;
padding-bottom
:
0
;
}
.aligned
.timezonewarning
{
flex
:
1
0
100%
;
margin-top
:
5px
;
}
form
.aligned
.form-row
div
.help
{
width
:
100%
;
margin
:
5px
0
0
;
padding
:
0
;
}
form
.aligned
ul
{
margin-left
:
0
;
padding-left
:
0
;
}
form
.aligned
div
.radiolist
{
margin-top
:
5px
;
margin-right
:
15px
;
margin-bottom
:
-3px
;
}
form
.aligned
div
.radiolist
:not
(
.inline
)
div
+
div
{
margin-top
:
5px
;
}
/* Related widget */
.related-widget-wrapper
{
width
:
100%
;
display
:
flex
;
align-items
:
flex-start
;
}
.related-widget-wrapper
.selector
{
order
:
1
;
}
.related-widget-wrapper
>
a
{
order
:
2
;
}
.related-widget-wrapper
.radiolist
~
a
{
align-self
:
flex-end
;
}
.related-widget-wrapper
>
select
~
a
{
align-self
:
center
;
}
select
+
.related-widget-wrapper-link
,
.related-widget-wrapper-link
+
.related-widget-wrapper-link
{
margin-left
:
15px
;
}
/* Selector */
.selector
{
flex-direction
:
column
;
}
.selector
>
*
{
float
:
none
;
}
.selector-available
,
.selector-chosen
{
margin-bottom
:
0
;
flex
:
1
1
auto
;
}
.selector
select
{
max-height
:
96px
;
}
.selector
ul
.selector-chooser
{
display
:
block
;
float
:
none
;
width
:
52px
;
height
:
26px
;
padding
:
0
2px
;
margin
:
15px
auto
20px
;
transform
:
none
;
}
.selector
ul
.selector-chooser
li
{
float
:
left
;
}
.selector-remove
{
background-position
:
0
0
;
}
.active.selector-remove
:focus
,
.active.selector-remove
:hover
{
background-position
:
0
-20px
;
}
.selector-add
{
background-position
:
0
-40px
;
}
.active.selector-add
:focus
,
.active.selector-add
:hover
{
background-position
:
0
-60px
;
}
/* Inlines */
.inline-group
[
data-inline-type
=
"stacked"
]
.inline-related
{
border
:
1px
solid
var
(
--hairline-color
);
border-radius
:
4px
;
margin-top
:
15px
;
overflow
:
auto
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.inline-related
>
*
{
box-sizing
:
border-box
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.inline-related
.module
{
padding
:
0
10px
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.inline-related
.module
.form-row
{
border-top
:
1px
solid
var
(
--hairline-color
);
border-bottom
:
none
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.inline-related
.module
.form-row
:first-child
{
border-top
:
none
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.inline-related
h3
{
padding
:
10px
;
border-top-width
:
0
;
border-bottom-width
:
2px
;
display
:
flex
;
flex-wrap
:
wrap
;
align-items
:
center
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.inline-related
h3
.inline_label
{
margin-right
:
auto
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.inline-related
h3
span
.delete
{
float
:
none
;
flex
:
1
1
100%
;
margin-top
:
5px
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.aligned
.form-row
>
div
:not
([
class
])
{
width
:
100%
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
.aligned
label
{
width
:
100%
;
}
.inline-group
[
data-inline-type
=
"stacked"
]
div
.add-row
{
margin-top
:
15px
;
border
:
1px
solid
var
(
--hairline-color
);
border-radius
:
4px
;
}
.inline-group
div
.add-row
,
.inline-group
.tabular
tr
.add-row
td
{
padding
:
0
;
}
.inline-group
div
.add-row
a
,
.inline-group
.tabular
tr
.add-row
td
a
{
display
:
block
;
padding
:
8px
10px
8px
26px
;
background-position
:
8px
9px
;
}
/* Submit row */
.submit-row
{
padding
:
10px
10px
5px
;
margin
:
0
0
15px
;
display
:
flex
;
flex-direction
:
column
;
}
.submit-row
>
*
{
width
:
100%
;
}
.submit-row
input
,
.submit-row
input
.default
,
.submit-row
a
,
.submit-row
a
.closelink
{
float
:
none
;
margin
:
0
0
10px
;
text-align
:
center
;
}
.submit-row
a
.closelink
{
padding
:
10px
0
;
}
.submit-row
p
.deletelink-box
{
order
:
4
;
}
/* Messages */
ul
.messagelist
li
{
padding-left
:
40px
;
background-position
:
15px
12px
;
}
ul
.messagelist
li
.error
{
background-position
:
15px
12px
;
}
ul
.messagelist
li
.warning
{
background-position
:
15px
14px
;
}
/* Paginator */
.paginator
.this-page
,
.paginator
a
:link
,
.paginator
a
:visited
{
padding
:
4px
10px
;
}
/* Login */
body
.login
{
padding
:
0
15px
;
}
.login
#container
{
width
:
auto
;
max-width
:
480px
;
margin
:
50px
auto
;
}
.login
#header
,
.login
#content
{
padding
:
15px
;
}
.login
#content-main
{
float
:
none
;
}
.login
.form-row
{
padding
:
0
;
}
.login
.form-row
+
.form-row
{
margin-top
:
15px
;
}
.login
.form-row
label
{
margin
:
0
0
5px
;
line-height
:
1.2
;
}
.login
.submit-row
{
padding
:
15px
0
0
;
}
.login
br
{
display
:
none
;
}
.login
.submit-row
input
{
margin
:
0
;
text-transform
:
uppercase
;
}
.errornote
{
margin
:
0
0
20px
;
padding
:
8px
12px
;
font-size
:
0.8125rem
;
}
/* Calendar and clock */
.calendarbox
,
.clockbox
{
position
:
fixed
!important
;
top
:
50%
!important
;
left
:
50%
!important
;
transform
:
translate
(
-50%
,
-50%
);
margin
:
0
;
border
:
none
;
overflow
:
visible
;
}
.calendarbox
:before
,
.clockbox
:before
{
content
:
''
;
position
:
fixed
;
top
:
50%
;
left
:
50%
;
width
:
100vw
;
height
:
100vh
;
background
:
rgba
(
0
,
0
,
0
,
0.75
);
transform
:
translate
(
-50%
,
-50%
);
}
.calendarbox
>
*,
.clockbox
>
*
{
position
:
relative
;
z-index
:
1
;
}
.calendarbox
>
div
:first-child
{
z-index
:
2
;
}
.calendarbox
.calendar
,
.clockbox
h2
{
border-radius
:
4px
4px
0
0
;
overflow
:
hidden
;
}
.calendarbox
.calendar-cancel
,
.clockbox
.calendar-cancel
{
border-radius
:
0
0
4px
4px
;
overflow
:
hidden
;
}
.calendar-shortcuts
{
padding
:
10px
0
;
font-size
:
0.75rem
;
line-height
:
12px
;
}
.calendar-shortcuts
a
{
margin
:
0
4px
;
}
.timelist
a
{
background
:
var
(
--body-bg
);
padding
:
4px
;
}
.calendar-cancel
{
padding
:
8px
10px
;
}
.clockbox
h2
{
padding
:
8px
15px
;
}
.calendar
caption
{
padding
:
10px
;
}
.calendarbox
.calendarnav-previous
,
.calendarbox
.calendarnav-next
{
z-index
:
1
;
top
:
10px
;
}
/* History */
table
#change-history
tbody
th
,
table
#change-history
tbody
td
{
font-size
:
0.8125rem
;
word-break
:
break-word
;
}
table
#change-history
tbody
th
{
width
:
auto
;
}
/* Docs */
table
.model
tbody
th
,
table
.model
tbody
td
{
font-size
:
0.8125rem
;
word-break
:
break-word
;
}
}
portal/static/admin/css/responsive_rtl.css
удалено
100644 → 0
Просмотр файла @
42c23765
/* TABLETS */
@media
(
max-width
:
1024px
)
{
[
dir
=
"rtl"
]
.colMS
{
margin-right
:
0
;
}
[
dir
=
"rtl"
]
#user-tools
{
text-align
:
right
;
}
[
dir
=
"rtl"
]
#changelist
.actions
label
{
padding-left
:
10px
;
padding-right
:
0
;
}
[
dir
=
"rtl"
]
#changelist
.actions
select
{
margin-left
:
0
;
margin-right
:
15px
;
}
[
dir
=
"rtl"
]
.change-list
.filtered
.results
,
[
dir
=
"rtl"
]
.change-list
.filtered
.paginator
,
[
dir
=
"rtl"
]
.filtered
#toolbar
,
[
dir
=
"rtl"
]
.filtered
div
.xfull
,
[
dir
=
"rtl"
]
.filtered
.actions
,
[
dir
=
"rtl"
]
#changelist-filter
{
margin-left
:
0
;
}
[
dir
=
"rtl"
]
.inline-group
ul
.tools
a
.add
,
[
dir
=
"rtl"
]
.inline-group
div
.add-row
a
,
[
dir
=
"rtl"
]
.inline-group
.tabular
tr
.add-row
td
a
{
padding
:
8px
26px
8px
10px
;
background-position
:
calc
(
100%
-
8px
)
9px
;
}
[
dir
=
"rtl"
]
.related-widget-wrapper-link
+
.selector
{
margin-right
:
0
;
margin-left
:
15px
;
}
[
dir
=
"rtl"
]
.selector
.selector-filter
label
{
margin-right
:
0
;
margin-left
:
8px
;
}
[
dir
=
"rtl"
]
.object-tools
li
{
float
:
right
;
}
[
dir
=
"rtl"
]
.object-tools
li
+
li
{
margin-left
:
0
;
margin-right
:
15px
;
}
[
dir
=
"rtl"
]
.dashboard
.module
table
td
a
{
padding-left
:
0
;
padding-right
:
16px
;
}
}
/* MOBILE */
@media
(
max-width
:
767px
)
{
[
dir
=
"rtl"
]
.aligned
.related-lookup
,
[
dir
=
"rtl"
]
.aligned
.datetimeshortcuts
{
margin-left
:
0
;
margin-right
:
15px
;
}
[
dir
=
"rtl"
]
.aligned
ul
{
margin-right
:
0
;
}
[
dir
=
"rtl"
]
#changelist-filter
{
margin-left
:
0
;
margin-right
:
0
;
}
}
portal/static/admin/css/rtl.css
удалено
100644 → 0
Просмотр файла @
42c23765
/* GLOBAL */
th
{
text-align
:
right
;
}
.module
h2
,
.module
caption
{
text-align
:
right
;
}
.module
ul
,
.module
ol
{
margin-left
:
0
;
margin-right
:
1.5em
;
}
.viewlink
,
.addlink
,
.changelink
{
padding-left
:
0
;
padding-right
:
16px
;
background-position
:
100%
1px
;
}
.deletelink
{
padding-left
:
0
;
padding-right
:
16px
;
background-position
:
100%
1px
;
}
.object-tools
{
float
:
left
;
}
thead
th
:first-child
,
tfoot
td
:first-child
{
border-left
:
none
;
}
/* LAYOUT */
#user-tools
{
right
:
auto
;
left
:
0
;
text-align
:
left
;
}
div
.breadcrumbs
{
text-align
:
right
;
}
#content-main
{
float
:
right
;
}
#content-related
{
float
:
left
;
margin-left
:
-300px
;
margin-right
:
auto
;
}
.colMS
{
margin-left
:
300px
;
margin-right
:
0
;
}
/* SORTABLE TABLES */
table
thead
th
.sorted
.sortoptions
{
float
:
left
;
}
thead
th
.sorted
.text
{
padding-right
:
0
;
padding-left
:
42px
;
}
/* dashboard styles */
.dashboard
.module
table
td
a
{
padding-left
:
.6em
;
padding-right
:
16px
;
}
/* changelists styles */
.change-list
.filtered
table
{
border-left
:
none
;
border-right
:
0px
none
;
}
#changelist-filter
{
border-left
:
none
;
border-right
:
none
;
margin-left
:
0
;
margin-right
:
30px
;
}
#changelist-filter
li
.selected
{
border-left
:
none
;
padding-left
:
10px
;
margin-left
:
0
;
border-right
:
5px
solid
var
(
--hairline-color
);
padding-right
:
10px
;
margin-right
:
-15px
;
}
#changelist
table
tbody
td
:first-child
,
#changelist
table
tbody
th
:first-child
{
border-right
:
none
;
border-left
:
none
;
}
/* FORMS */
.aligned
label
{
padding
:
0
0
3px
1em
;
float
:
right
;
}
.submit-row
{
text-align
:
left
}
.submit-row
p
.deletelink-box
{
float
:
right
;
}
.submit-row
input
.default
{
margin-left
:
0
;
}
.vDateField
,
.vTimeField
{
margin-left
:
2px
;
}
.aligned
.form-row
input
{
margin-left
:
5px
;
}
form
.aligned
p
.help
,
form
.aligned
div
.help
{
clear
:
right
;
}
form
.aligned
ul
{
margin-right
:
163px
;
margin-left
:
0
;
}
form
ul
.inline
li
{
float
:
right
;
padding-right
:
0
;
padding-left
:
7px
;
}
input
[
type
=
submit
]
.default
,
.submit-row
input
.default
{
float
:
left
;
}
fieldset
.fieldBox
{
float
:
right
;
margin-left
:
20px
;
margin-right
:
0
;
}
.errorlist
li
{
background-position
:
100%
12px
;
padding
:
0
;
}
.errornote
{
background-position
:
100%
12px
;
padding
:
10px
12px
;
}
/* WIDGETS */
.calendarnav-previous
{
top
:
0
;
left
:
auto
;
right
:
10px
;
background
:
url(../img/calendar-icons.svg)
0
-30px
no-repeat
;
}
.calendarbox
.calendarnav-previous
:focus
,
.calendarbox
.calendarnav-previous
:hover
{
background-position
:
0
-45px
;
}
.calendarnav-next
{
top
:
0
;
right
:
auto
;
left
:
10px
;
background
:
url(../img/calendar-icons.svg)
0
0
no-repeat
;
}
.calendarbox
.calendarnav-next
:focus
,
.calendarbox
.calendarnav-next
:hover
{
background-position
:
0
-15px
;
}
.calendar
caption
,
.calendarbox
h2
{
text-align
:
center
;
}
.selector
{
float
:
right
;
}
.selector
.selector-filter
{
text-align
:
right
;
}
.inline-deletelink
{
float
:
left
;
}
form
.form-row
p
.datetime
{
overflow
:
hidden
;
}
.related-widget-wrapper
{
float
:
right
;
}
/* MISC */
.inline-related
h2
,
.inline-group
h2
{
text-align
:
right
}
.inline-related
h3
span
.delete
{
padding-right
:
20px
;
padding-left
:
inherit
;
left
:
10px
;
right
:
inherit
;
float
:
left
;
}
.inline-related
h3
span
.delete
label
{
margin-left
:
inherit
;
margin-right
:
2px
;
}
portal/static/admin/css/vendor/select2/LICENSE-SELECT2.md
удалено
100644 → 0
Просмотр файла @
42c23765
The MIT License (MIT)
Copyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Пред
1
2
3
4
5
...
12
След
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать