Aggiornato con i contenuti del remoto al 07/03/2024

This commit is contained in:
Davide Borgonovo
2024-03-07 16:33:26 +01:00
parent 0eed8c8679
commit b8252030a4
156 changed files with 6303 additions and 2655 deletions
@@ -0,0 +1,49 @@
/*global gettext*/
/* copied from django 4.0.7 */
'use strict';
{
window.addEventListener('load', function() {
// Add anchor tag for Show/Hide link
const fieldsets = document.querySelectorAll('fieldset.collapse');
for (const [i, elem] of fieldsets.entries()) {
// Don't hide if fields in this fieldset have errors
if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) {
const h2 = elem.querySelector('h2');
const link = document.createElement('a');
link.id = 'fieldsetcollapser' + i;
link.className = 'collapse-toggle';
link.href = '#';
// changed: can opt into starting visible
if (elem.classList.contains('expanded')) {
link.textContent = gettext('Hide');
} else {
link.textContent = gettext('Show');
elem.classList.add('collapsed');
}
h2.appendChild(document.createTextNode(' ('));
h2.appendChild(link);
h2.appendChild(document.createTextNode(')'));
}
}
// Add toggle to hide/show anchor tag
const toggleFunc = function(ev) {
if (ev.target.matches('.collapse-toggle')) {
ev.preventDefault();
ev.stopPropagation();
const fieldset = ev.target.closest('fieldset');
if (fieldset.classList.contains('collapsed')) {
// Show
ev.target.textContent = gettext('Hide');
fieldset.classList.remove('collapsed');
} else {
// Hide
ev.target.textContent = gettext('Show');
fieldset.classList.add('collapsed');
}
}
};
document.querySelectorAll('fieldset.module').forEach(function(el) {
el.addEventListener('click', toggleFunc);
});
});
}
@@ -3,6 +3,7 @@
'use strict';
var windowRef = window;
var windowRefProxy;
var windowName, widgetName;
var openerRef = windowRef.opener;
if (!openerRef) {
@@ -14,13 +15,14 @@
// django < 3.1 compatibility
widgetName = openerRef.id_to_windowname(widgetName);
}
windowRef = {
windowRefProxy = {
name: widgetName,
location: windowRef.location,
close: function() {
openerRef.dismissRelatedObjectModal();
}
};
windowRef = windowRefProxy;
}
// default django popup_response.js
@@ -40,11 +42,7 @@
if (typeof(openerRef.dismissAddRelatedObjectPopup) === 'function') {
openerRef.dismissAddRelatedObjectPopup(windowRef, initData.value, initData.obj);
}
else if (typeof(openerRef.dismissAddAnotherPopup) === 'function') {
// django 1.7 compatibility
openerRef.dismissAddAnotherPopup(windowRef, initData.value, initData.obj);
}
break;
}
})();
})();
@@ -0,0 +1,48 @@
/** global: django */
if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
{
(function($) {
$(document).ready(function(){
function collapsibleInline(scope, collapsed) {
var fieldsetCollapsed = collapsed;
var fieldsetEl = $(scope).find('> fieldset.module');
fieldsetEl.addClass('collapse');
var fieldsetHasErrors = (fieldsetEl.children('.errors').length > 0);
if (fieldsetHasErrors === true) {
fieldsetCollapsed = false;
}
if (fieldsetCollapsed === true) {
fieldsetEl.addClass('collapsed');
}
var collapseToggleText = (fieldsetCollapsed ? gettext('Show') : gettext('Hide'));
var collapseToggleHTML = ' (<a class="collapse-toggle" href="#">' + collapseToggleText + '</a>)';
var headerEl = fieldsetEl.find('> h2,> h3');
if (headerEl.find(".collapse-toggle").length === 0) {
// don't add collapse toggle button if already present
headerEl.append(collapseToggleHTML);
}
}
var stackedInlinesOptionSel = '.admin-interface.collapsible-stacked-inlines';
var stackedInlinesSel = stackedInlinesOptionSel + ' .inline-group[data-inline-type="stacked"]';
var stackedInlinesCollapsed = $(stackedInlinesOptionSel).hasClass('collapsible-stacked-inlines-collapsed');
var tabularInlinesOptionSel = '.admin-interface.collapsible-tabular-inlines';
var tabularInlinesSel = tabularInlinesOptionSel + ' .inline-group[data-inline-type="tabular"] .inline-related.tabular';
var tabularInlinesCollapsed = $(stackedInlinesOptionSel).hasClass('collapsible-tabular-inlines-collapsed');
$(stackedInlinesSel).each(function() {
collapsibleInline(this, stackedInlinesCollapsed);
});
$(tabularInlinesSel).each(function() {
collapsibleInline(this, tabularInlinesCollapsed);
});
});
})(django.jQuery);
}
@@ -0,0 +1,515 @@
@media (prefers-color-scheme: dark) {
:root .admin-interface {
--primary: #79aec8;
--secondary: #417690;
--accent: #f5dd5d;
--primary-fg: #fff;
--body-fg: #333;
--body-bg: #fff;
--body-quiet-color: #666;
--body-loud-color: #000;
--header-color: #ffc;
--header-branding-color: var(--accent);
--header-bg: var(--secondary);
--header-link-color: var(--primary-fg);
--breadcrumbs-fg: #c4dce8;
--breadcrumbs-link-fg: var(--body-bg);
--breadcrumbs-bg: var(--primary);
--link-fg: #447e9b;
--link-hover-color: #036;
--link-selected-fg: #5b80b2;
--hairline-color: #e8e8e8;
--border-color: #ccc;
--error-fg: #ba2121;
--message-success-bg: #dfd;
--message-warning-bg: #ffc;
--message-error-bg: #ffefef;
--darkened-bg: #f8f8f8;
--selected-bg: #e4e4e4;
--selected-row: #ffc;
--button-fg: #fff;
--button-bg: var(--primary);
--button-hover-bg: #609ab6;
--default-button-bg: var(--secondary);
--default-button-hover-bg: #205067;
--close-button-bg: #888;
--close-button-hover-bg: #747474;
--delete-button-bg: #ba2121;
--delete-button-hover-bg: #a41515;
--object-tools-fg: var(--button-fg);
--object-tools-bg: var(--close-button-bg);
--object-tools-hover-bg: var(--close-button-hover-bg);
}
}
.admin-interface {
overflow-x: hidden;
}
.admin-interface #header {
background: var(--admin-interface-header-background-color);
color: var(--admin-interface-header-text-color);
}
.admin-interface #header + #main {
border-top: var(--admin-interface-main-border-top);
}
.admin-interface .environment-label {
}
.admin-interface .environment-label::before {
content: "";
display: inline-block;
width: 8px;
height: 8px;
background-color: var(--admin-interface-env-color);
border-radius: 100%;
margin-right: 6px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.admin-interface .environment-label::after {
content: " - ";
}
@media (max-width: 1024px) {
.admin-interface .environment-label::after {
content: "";
}
}
.admin-interface .language-chooser {
display: inline-block;
position: absolute;
top: 15px;
right: 15px;
z-index: 10;
}
@media (min-width: 768px) {
.admin-interface .language-chooser {
right: 30px;
}
}
@media (min-width: 1024px) {
.admin-interface .language-chooser {
position: static;
float: right;
margin-left: 20px;
}
}
.admin-interface .language-chooser-hidden-form {
display: none;
}
.admin-interface .language-chooser-select-form {
display: inline-block;
}
.admin-interface #branding h1,
.admin-interface.login #header h1,
.admin-interface.login #header h1 a {
color: var(--admin-interface-title-color);
}
.admin-interface #branding h1 a {
color: inherit;
}
.admin-interface #branding h1 .logo.default {
background-color: transparent;
background-repeat: no-repeat;
background-position: center center;
background-size: 104px 36px;
background-image: var(--admin-interface-logo-default-background-image);
}
.admin-interface #branding h1 img.logo,
.admin-interface.login #header #branding h1 img.logo {
max-width: var(--admin-interface-logo-max-width);
max-height: var(--admin-interface-logo-max-height);
}
.admin-interface #header #user-tools a,
.admin-interface #header #user-tools #logout-form button {
color: var(--admin-interface-header-link-color);
}
.admin-interface #header #user-tools a:hover,
.admin-interface #header #user-tools a:active,
.admin-interface #header #user-tools #logout-form button:hover,
.admin-interface #header #user-tools #logout-form button:active {
color: var(--admin-interface-header-link-hover-color);
border-bottom-color: rgba(255, 255, 255, 0.5);
}
.admin-interface #header #user-tools button.theme-toggle svg {
color: transparent;
fill: var(--admin-interface-header-link-color);
}
.admin-interface #header #user-tools button.theme-toggle:hover svg,
.admin-interface #header #user-tools button.theme-toggle:active svg {
color: transparent;
fill: var(--admin-interface-header-link-hover-color);
}
.admin-interface #nav-sidebar .current-app .section:link,
.admin-interface #nav-sidebar .current-app .section:visited {
color: var(--admin-interface-module-link-selected-color);
font-weight: normal;
}
.admin-interface #nav-sidebar .current-app .section:focus,
.admin-interface #nav-sidebar .current-app .section:hover {
color: var(--admin-interface-module-link-hover-color);
}
.admin-interface #nav-sidebar .current-model {
background: var(--admin-interface-module-background-selected-color);
}
.admin-interface #changelist table tbody tr.selected {
background-color: var(--admin-interface-module-background-selected-color);
}
.admin-interface .module h2,
.admin-interface .module caption,
.admin-interface .module.filtered h2 {
background: var(--admin-interface-module-background-color);
color: var(--admin-interface-module-text-color);
}
.admin-interface .module a.section:link,
.admin-interface .module a.section:visited {
color: var(--admin-interface-module-link-color);
}
.admin-interface .module a.section:active,
.admin-interface .module a.section:hover {
color: var(--admin-interface-module-link-hover-color);
}
.admin-interface div.breadcrumbs {
background: var(--admin-interface-module-background-color);
color: var(--admin-interface-module-text-color);
}
.admin-interface div.breadcrumbs a {
color: var(--admin-interface-module-link-color);
}
.admin-interface div.breadcrumbs a:active,
.admin-interface div.breadcrumbs a:focus,
.admin-interface div.breadcrumbs a:hover {
color: var(--admin-interface-module-link-hover-color);
}
.admin-interface fieldset.collapse a.collapse-toggle,
.admin-interface fieldset.collapse.collapsed a.collapse-toggle,
.admin-interface .inline-group .inline-related fieldset.module a.collapse-toggle,
.admin-interface .inline-group .inline-related fieldset.module.collapsed a.collapse-toggle {
color: var(--admin-interface-module-link-color);
}
.admin-interface fieldset.collapse a.collapse-toggle:hover,
.admin-interface fieldset.collapse a.collapse-toggle:active,
.admin-interface fieldset.collapse.collapsed a.collapse-toggle:hover,
.admin-interface fieldset.collapse.collapsed a.collapse-toggle:active,
.admin-interface .inline-group .inline-related fieldset.module a.collapse-toggle:hover,
.admin-interface .inline-group .inline-related fieldset.module a.collapse-toggle:active,
.admin-interface .inline-group .inline-related fieldset.module.collapsed a.collapse-toggle:hover,
.admin-interface .inline-group .inline-related fieldset.module.collapsed a.collapse-toggle:active {
color: var(--admin-interface-module-link-hover-color);
}
.admin-interface .inline-group h2 {
background: var(--admin-interface-module-background-color);
color: var(--admin-interface-module-text-color);
}
.admin-interface .selector .selector-chosen h2 {
border-color: var(--admin-interface-module-background-color);
background: var(--admin-interface-module-background-color);
color: var(--admin-interface-module-text-color);
}
.admin-interface .selector .selector-available h2,
.admin-interface .selector .selector-chosen h2 {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.admin-interface .selector a.selector-chooseall:focus,
.admin-interface .selector a.selector-chooseall:hover,
.admin-interface .selector a.selector-clearall:focus,
.admin-interface .selector a.selector-clearall:hover {
color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface a:link,
.admin-interface a:visited {
color: var(--admin-interface-generic-link-color);
}
.admin-interface a:hover {
color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface thead th a,
.admin-interface thead th a:link,
.admin-interface thead th a:visited,
.admin-interface thead th a:focus,
.admin-interface thead th a:hover {
color: #666666;
}
.admin-interface .button,
.admin-interface input[type=submit],
.admin-interface input[type=button],
.admin-interface .submit-row input,
.admin-interface a.button {
background: var(--admin-interface-save-button-background-color);
color: var(--admin-interface-save-button-text-color);
}
.admin-interface .button:active,
.admin-interface .button:focus,
.admin-interface .button:hover,
.admin-interface input[type=submit]:active,
.admin-interface input[type=submit]:focus,
.admin-interface input[type=submit]:hover,
.admin-interface input[type=button]:active,
.admin-interface input[type=button]:focus,
.admin-interface input[type=button]:hover {
background: var(--admin-interface-save-button-background-hover-color);
color: var(--admin-interface-save-button-text-color);
outline: none;
}
.admin-interface .button.default,
.admin-interface input[type=submit].default,
.admin-interface .submit-row input.default {
background: var(--admin-interface-save-button-background-color);
color: var(--admin-interface-save-button-text-color);
outline: none;
}
.admin-interface .button.default:active,
.admin-interface .button.default:focus,
.admin-interface .button.default:hover,
.admin-interface input[type=submit].default:active,
.admin-interface input[type=submit].default:focus,
.admin-interface input[type=submit].default:hover,
.admin-interface.delete-confirmation form .cancel-link:hover {
background: var(--admin-interface-save-button-background-hover-color);
color: var(--admin-interface-save-button-text-color);
outline: none;
}
.admin-interface .submit-row a.deletelink:link,
.admin-interface .submit-row a.deletelink:visited,
.admin-interface.delete-confirmation form input[type="submit"] {
background: var(--admin-interface-delete-button-background-color);
color: var(--admin-interface-delete-button-text-color);
}
.admin-interface .submit-row a.deletelink:hover,
.admin-interface.delete-confirmation form input[type="submit"]:hover {
background: var(--admin-interface-delete-button-background-hover-color);
color: var(--admin-interface-delete-button-text-color);
}
.admin-interface .paginator a,
.admin-interface .paginator a:link,
.admin-interface .paginator a:visited,
.admin-interface .paginator .this-page {
border-radius: var(--admin-interface-module-border-radius);
}
.admin-interface .paginator a,
.admin-interface .paginator a:link,
.admin-interface .paginator a:visited {
background-color: #FFFFFF;
color: var(--admin-interface-generic-link-color);
}
.admin-interface .paginator a:hover,
.admin-interface .paginator a:active {
background-color: #F8F8F8;
color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface .paginator .this-page {
background-color: var(--admin-interface-module-background-color);
color: var(--admin-interface-module-link-color);
}
.admin-interface .paginator a.showall,
.admin-interface .paginator a.showall:link,
.admin-interface .paginator a.showall:visited {
color: var(--admin-interface-generic-link-color);
}
.admin-interface .paginator a.showall:hover,
.admin-interface .paginator a.showall:active {
color: var(--admin-interface-generic-link-hover-color);
}
/* list-filter sticky */
@media (min-width: 768px) {
.admin-interface.list-filter-sticky .module.filtered #changelist-filter {
position: sticky;
top: 30px;
float: right;
z-index: 30;
display: flex;
flex-direction: column;
overflow-y: auto;
scrollbar-width: thin;
height: 100%;
max-height: calc(100vh - 60px);
}
.admin-interface.list-filter-sticky.sticky-pagination .module.filtered #changelist-filter {
max-height: calc(100vh - 125px);
}
/* feature not available for django < 3.1.2 */
.admin-interface.list-filter-sticky .module.filtered #toolbar + #changelist-filter {
position: absolute;
top: 0px;
z-index: 30;
max-height: calc(100vh - 105px);
}
.admin-interface.list-filter-sticky.sticky-pagination .module.filtered #toolbar + #changelist-filter {
max-height: calc(100vh - 170px);
}
}
.admin-interface .module.filtered #changelist-filter {
border-radius: var(--admin-interface-module-border-radius);
}
.admin-interface .module.filtered #changelist-filter h3#changelist-filter-clear {
margin-bottom: 0;
}
.admin-interface .module.filtered #changelist-filter .changelist-filter-clear a {
font-size: 13px;
margin: .3em 0;
padding: 0 15px;
}
.admin-interface .module.filtered #changelist-filter .changelist-filter-clear a:focus,
.admin-interface .module.filtered #changelist-filter .changelist-filter-clear a:hover,
.admin-interface .module.filtered #changelist-filter #changelist-filter-clear a:focus,
.admin-interface .module.filtered #changelist-filter #changelist-filter-clear a:hover {
color: #666;
text-decoration: none;
}
.admin-interface .module.filtered #changelist-filter .changelist-filter-clear a span {
font-weight: bold;
}
.admin-interface .module.filtered #changelist-filter li a:focus,
.admin-interface .module.filtered #changelist-filter li a:hover {
color: #666;
text-decoration: none;
}
.admin-interface.list-filter-highlight .module.filtered #changelist-filter h3.active {
font-weight: bold;
}
.admin-interface.list-filter-highlight .module.filtered #changelist-filter ul.active li.selected {
color: var(--admin-interface-module-text-color);
background: var(--admin-interface-module-background-color);
margin-left: -10px;
padding-left: 5px;
margin-right: -10px;
border-left: 5px solid var(--admin-interface-module-background-color);
border-right: 5px solid var(--admin-interface-module-background-color);
border-radius: var(--admin-interface-module-border-radius);
}
.admin-interface.list-filter-highlight .module.filtered #changelist-filter ul.active li.selected a,
.admin-interface.list-filter-highlight .module.filtered #changelist-filter ul.active li.selected a:link,
.admin-interface.list-filter-highlight .module.filtered #changelist-filter ul.active li.selected a:visited,
.admin-interface.list-filter-highlight .module.filtered #changelist-filter ul.active li.selected a:focus,
.admin-interface.list-filter-highlight .module.filtered #changelist-filter ul.active li.selected a:hover {
background: inherit;
color: inherit;
}
.admin-interface .module.filtered #changelist-filter li.selected a,
.admin-interface .module.filtered #changelist-filter li.selected a:link,
.admin-interface .module.filtered #changelist-filter li.selected a:visited,
.admin-interface .module.filtered #changelist-filter li.selected a:focus,
.admin-interface .module.filtered #changelist-filter li.selected a:hover {
color: var(--admin-interface-generic-link-hover-color);
}
/* begin fix issue #11 - Inline border bottom should not be rounded */
.admin-interface .module h2,
.admin-interface.dashboard .module caption,
.admin-interface #nav-sidebar .module th,
.admin-interface #nav-sidebar .module caption,
.admin-interface .module.filtered h2 {
border-radius: var(--admin-interface-module-border-radius);
}
.admin-interface .inline-group h2 {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.admin-interface .module.collapse.collapsed h2 {
/* fix collapsed inlines rounded bottom borders */
border-bottom-left-radius: var(--admin-interface-module-border-radius);
border-bottom-right-radius: var(--admin-interface-module-border-radius);
}
/* end fix */
.admin-interface #content-related {
border-radius: var(--admin-interface-module-border-radius);
}
.admin-interface .select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] {
background-color: var(--admin-interface-module-background-color);
color: var(--admin-interface-module-text-color);
}
.admin-interface #toggle-nav-sidebar {
border-top-right-radius: var(--admin-interface-module-border-radius);
border-bottom-right-radius: var(--admin-interface-module-border-radius);
color: var(--admin-interface-generic-link-color);
}
.admin-interface #toggle-nav-sidebar:focus,
.admin-interface #toggle-nav-sidebar:hover,
.admin-interface #toggle-nav-sidebar:active {
color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface .calendar td.selected a,
.admin-interface .calendar td a:active,
.admin-interface .calendar td a:focus,
.admin-interface .calendar td a:hover,
.admin-interface .timelist a:active,
.admin-interface .timelist a:focus,
.admin-interface .timelist a:hover {
background: var(--admin-interface-module-background-color);
}
.admin-interface .calendarbox .calendarnav-previous,
.admin-interface .calendarbox .calendarnav-next {
transition: none;
filter: invert(100%);
}
@@ -0,0 +1,34 @@
/* fix form submit buttons alignemnt and ordering */
@media (min-width: 768px) {
.admin-interface .submit-row {
flex-direction: row-reverse;
}
.admin-interface .submit-row input[name="_save"] {
order: 1;
}
.admin-interface .submit-row input[name="_continue"] {
order: 2;
}
.admin-interface .submit-row input[name="_addanother"] {
order: 3;
}
.admin-interface .submit-row a.deletelink {
order: 4;
margin-left: 0;
margin-right: auto;
}
}
/* endfix */
/* fix help-text horizontal alignment when using show-fieldsets-as-tabs / show-inlines-as-tabs options - #317 */
.admin-interface.show-fieldsets-as-tabs fieldset > .form-row .help,
.admin-interface.show-inlines-as-tabs .inline-related > fieldset .help {
margin-left: 0;
padding-left: 0;
}
.admin-interface.show-fieldsets-as-tabs fieldset > .form-row div:has(.related-widget-wrapper .selector) + .help,
.admin-interface.show-inlines-as-tabs .inline-related > fieldset div:has(.related-widget-wrapper .selector) + .help {
display: flex;
width: 100%;
}
/* endfix */
@@ -0,0 +1,43 @@
@media (min-width: 1024px) {
.admin-interface #changelist .actions .button,
.admin-interface #changelist .actions .action-counter {
margin-left: 8px;
}
}
.admin-interface #changelist-form .results {
scrollbar-width: thin;
}
/* fix searchbar overriden padding */
.admin-interface #changelist #changelist-search #searchbar {
padding: 2px 5px 3px 5px;
}
@media (min-width: 1024px) {
.admin-interface #changelist #changelist-search #searchbar,
.admin-interface #changelist #changelist-search input[type="submit"],
.admin-interface #changelist #changelist-search .quiet {
margin-left: 8px;
}
.admin-interface #changelist #changelist-search label img {
vertical-align: text-top;
margin-right: 0px;
}
}
@media (max-width: 1024px) {
.admin-interface #changelist #toolbar {
border-top: 1px solid #eee;
border-bottom: 1px solid #eee;
}
/* fixed changelist search size when there are search results and .quiet is visible */
.admin-interface #changelist-search label img {
margin-top: 2px;
}
.admin-interface #changelist-search .quiet {
margin: 0 0 0 10px;
align-self: center;
flex-basis: content;
}
}
@@ -0,0 +1,14 @@
.admin-interface fieldset.collapse {
border: 1px solid transparent;
}
.admin-interface fieldset.collapse.collapsed a.collapse-toggle,
.admin-interface fieldset.collapse a.collapse-toggle,
.admin-interface .inline-group .inline-related fieldset.module a.collapse-toggle,
.admin-interface .inline-group .inline-related fieldset.module.collapsed a.collapse-toggle {
font-weight: normal;
text-transform: lowercase;
font-size: 12px;
text-decoration: underline;
padding: 0 1px;
}
@@ -0,0 +1,52 @@
.admin-interface .file-thumbnail > a {
display: inline-block;
}
.admin-interface .aligned p.file-upload {
display: table;
margin-left: 0;
}
.admin-interface form .form-row p.file-upload > a {
margin-right: 20px;
}
.admin-interface form .form-row p.file-upload .clearable-file-input {
display: inline-block;
}
.admin-interface form .form-row p.file-upload .clearable-file-input label {
padding-bottom: 0px;
margin-left: 5px;
}
.admin-interface form .form-row p.file-upload > input[type="file"] {
margin-top: 0px;
}
@media (max-width:767px){
.admin-interface form .form-row p.file-upload {
width: 100%;
}
.admin-interface form .form-row p.file-upload > a {
margin-right: 0px;
display: block;
white-space: pre-wrap;
word-break: break-word;
}
.admin-interface form .form-row p.file-upload .clearable-file-input {
display: block;
margin-top: 10px;
margin-left: 0;
margin-bottom: -10px;
}
.admin-interface form .form-row p.file-upload > input[type="file"] {
display: block;
width: auto;
padding: 0px;
}
}
@@ -0,0 +1,50 @@
.admin-interface #header {
height: auto;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
}
@media (max-width:1024px) {
.admin-interface #header {
align-items: start;
}
}
.admin-interface #branding h1 img.logo {
margin-top: 10px;
margin-bottom: 10px;
margin-right: 15px;
display: inline-block !important; /* override inline display:none; */
}
.admin-interface #branding h1 span {
display: inline-block;
}
.admin-interface #branding h1 img.logo+span {
white-space: nowrap;
}
.admin-interface #user-tools {
margin-top: 10px;
margin-bottom: 10px;
white-space: nowrap;
align-self: flex-start;
}
.admin-interface #user-tools br {
display: none;
}
@media (max-width: 768px) {
.admin-interface #user-tools br {
display: block;
}
}
/* hide theme toggle button until dark theme will be supported */
.admin-interface #user-tools button.theme-toggle {
display: none;
}
@@ -0,0 +1,105 @@
/* begin fix help text icon on newline */
.admin-interface .inline-group thead th {
white-space:nowrap;
}
.admin-interface .inline-group thead th img {
vertical-align: -2px;
margin-left: 5px;
}
.admin-interface .inline-group .inlinechangelink {
margin-left: 10px;
}
.admin-interface .inline-group .inline-related.tabular .inlinechangelink {
background-size: contain;
}
/* end fix */
/* begin fix restrict tabular-inline horizontal-scroll to inline-group instead of whole page */
.admin-interface .inline-group[data-inline-type="tabular"] {
overflow-x: auto;
}
/* end fix */
/* begin fix stacked-inline margin-bottom in responsive small viewport */
.admin-interface .inline-group[data-inline-type="stacked"] .module {
margin-bottom: 0px;
}
/* end fix */
/* begin fix tabular inlines horizontal scroll */
.admin-interface .inline-related.tabular {
overflow-x: scroll;
overflow-y: hidden;
}
.admin-interface .inline-related.tabular fieldset.module {
display: contents;
width: 100%;
white-space: nowrap;
position: relative;
}
.admin-interface .inline-related.tabular fieldset.module h2 {
position: sticky;
left: 0;
}
.admin-interface .inline-related.tabular fieldset.module table {
scrollbar-width: thin;
}
.admin-interface .inline-related.tabular fieldset.module table tbody tr {
position: relative;
}
/* end fix */
.admin-interface .inline-related h3 {
padding: 6px 10px;
}
/* begin fix issue #12 - Inlines bad delete buttons alignement */
.admin-interface .inline-group .tabular thead th:last-child:not([class]):not([style]) {
text-align: right;
}
.admin-interface .inline-group .tabular tr td {
vertical-align: top;
}
.admin-interface .inline-group .tabular tr td.delete {
text-align: right;
padding-right: 15px;
vertical-align: top;
}
.admin-interface .inline-group .tabular tr td input[type="checkbox"] {
margin: 7px 0px;
}
.admin-interface .inline-group .tabular tr td.delete a.inline-deletelink {
margin-top: 4px;
overflow: hidden;
text-indent: 9999px;
}
/* end fix */
/* begin fix remove button at the end od dynamically added inline rows */
.admin-interface .inline-group .tabular tr td:not(.delete) * + div:has(> a.inline-deletelink) {
display: inline-block;
margin-bottom: -3px;
margin-left: 10px;
}
/* end fix */
/* begin fix issue #13 - Datetime widget broken in long inlines */
.admin-interface .inline-group .inline-related p.datetime {
white-space: nowrap;
}
/* end fix */
/* begin fix inline horizontal scroll caused by checkbox-row */
@media (max-width:767px){
.admin-interface form .form-row > div.checkbox-row {
width: 100%;
}
}
/* end fix */
@@ -0,0 +1,247 @@
/*
* jQuery UI CSS Framework
* Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses.
* http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/base/jquery.ui.core.css
*/
/*
backward compatibility:
.ui-tabs-selected: jquery ui < 1.10
.ui-tabs-active classes jquery ui >= 1.10
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden {
display: none;
}
.ui-helper-hidden-accessible {
position: absolute;
left: -99999999px;
}
.ui-helper-reset {
margin: 0;
padding: 0;
border: 0;
outline: 0;
line-height: 1.3;
text-decoration: none;
font-size: 100%;
list-style: none;
}
.ui-helper-clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.ui-helper-clearfix {
display: inline-block;
}
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix {
height: 1%;
}
.ui-helper-clearfix {
display: block;
}
.ui-helper-zfix {
width: 100%;
height: 100%;
top: 0;
left: 0;
position: absolute;
opacity: 0;
filter: Alpha(Opacity=0);
}
.ui-state-disabled {
cursor: default !important;
}
.ui-icon {
display: block;
text-indent: -99999px;
overflow: hidden;
background-repeat: no-repeat;
}
/* http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/base/jquery.ui.tabs.css */
.ui-widget-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.ui-tabs {
position: relative;
padding: .2em;
zoom: 1;
}
/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav {
margin: 0;
padding: .2em .2em 0;
}
.ui-tabs .ui-tabs-nav li {
list-style: none;
float: left;
position: relative;
top: 1px;
margin: 0 .2em 1px 0;
border-bottom: 0 !important;
padding: 0;
white-space: nowrap;
}
.ui-tabs .ui-tabs-nav li a {
float: left;
padding: .5em 1em;
text-decoration: none;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active, .ui-tabs .ui-tabs-nav li.ui-tabs-selected {
margin-bottom: 0;
padding-bottom: 1px;
}
.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a {
cursor: text;
}
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a {
cursor: pointer;
}
/* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel {
display: block;
border-width: 0;
padding: 1em 1.4em;
background: none;
}
.ui-tabs .ui-tabs-hide {
position: absolute;
display: none;
}
/* Custom tabs theme */
.admin-interface .ui-tabs {
padding: 0;
}
.admin-interface .ui-tabs,
.admin-interface .ui-tabs .ui-widget-header,
.admin-interface .ui-tabs .ui-widget-header .ui-state-default {
border: none;
background: transparent;
}
.admin-interface .ui-tabs .ui-tabs-nav {
padding: 10px 0 0 10px;
border-bottom: none;
}
.admin-interface .ui-tabs .ui-tabs-nav li {
margin: 0 0 0 -1px;
}
.admin-interface .ui-tabs .ui-tabs-nav li.required {
font-weight: bold;
}
.admin-interface .ui-tabs .ui-tabs-nav li a {
border: 1px solid #eeeeee;
background-color: #f8f8f8;
border-bottom: none;
color: #666666;
padding: 7px 14px 8px 14px;
margin-top: 1px;
-moz-border-radius-topright: 4px;
-webkit-border-top-right-radius: 4px;
-moz-border-radius-topleft: 4px;
-webkit-border-top-left-radius: 4px;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
font-size: 12px;
text-transform: uppercase;
outline: none;
}
.admin-interface .ui-tabs .ui-tabs-nav li.ui-tabs-active a,
.admin-interface .ui-tabs .ui-tabs-nav li.ui-tabs-selected a {
padding: 8px 14px 8px 14px;
margin-top: 0px;
margin-bottom: -1px;
font-weight: bold;
background-color: #FFFFFF;
color: var(--admin-interface-module-background-color);
border-bottom: 1px solid #FFFFFF;
}
.admin-interface .ui-tabs .ui-tabs-panel {
border: 1px solid #eeeeee;
border-radius: 4px;
padding: 10px;
margin-bottom: 30px;
overflow: hidden;
}
.admin-interface .inline-group .tabular .ui-tabs .ui-tabs-panel {
padding: 8px;
}
.admin-interface .inline-group .tabular .ui-tabs .ui-tabs-nav {
padding-left: 4px;
}
.admin-interface .inline-group .tabular tr td {
vertical-align: top;
}
.admin-interface .inline-group .tabular tr.has_original td.original,
.admin-interface .inline-group .tabular tr td.delete {
vertical-align: top;
}
.admin-interface .inline-group .tabular .datetime > input {
margin-right: 5px;
}
.admin-interface .inline-group .tabular .datetime br {
display: none;
}
.admin-interface #changelist .row1:not(.selected):hover,
.admin-interface #changelist .row2:not(.selected):hover {
background: #f9f9f9;
}
.admin-interface .row2 {
background: #fcfcfc;
}
.admin-interface .row2 .ui-tabs .ui-tabs-nav li a {
background-color: #f5f5f5;
border: 1px solid #ebebeb;
}
.admin-interface .row2 .ui-tabs .ui-tabs-nav li.ui-tabs-active a,
.admin-interface .row2 .ui-tabs .ui-tabs-nav li.ui-tabs-selected a {
background-color: #fcfcfc;
border-bottom: 1px solid #fcfcfc;
}
@@ -0,0 +1,72 @@
.admin-interface .language-chooser {
display: inline-block;
position: absolute;
top: 15px;
right: 15px;
z-index: 10;
}
@media (min-width: 768px) {
.admin-interface .language-chooser {
right: 30px;
}
}
@media (min-width: 1024px) {
.admin-interface .language-chooser {
position: static;
margin-left: 20px;
}
}
.admin-interface .language-chooser .language-chooser-hidden-form {
display: none;
}
.admin-interface .language-chooser .language-chooser-select-form {
display: inline-block;
position: relative;
z-index: 0;
}
.admin-interface .language-chooser select {
width: auto;
min-width: auto;
}
.admin-interface .language-chooser.minimal .language-chooser-select-form::after {
content: "";
position: absolute;
right: 2px;
top: 50%;
border: solid var(--admin-interface-header-text-color);
border-width: 0px 0px 1px 1px;
display: inline-block;
padding: 2px;
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
pointer-events: none;
margin-top: -4px;
}
.admin-interface .language-chooser.minimal .language-chooser-select-form:hover select {
border-bottom: 1px solid transparent;
color: var(--admin-interface-header-link-hover-color);
}
.admin-interface .language-chooser.minimal select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-color: transparent;
border: none;
border-bottom: 1px solid rgba(255, 255, 255, 0.25);
border-radius: 0;
color: var(--admin-interface-header-link-color);
cursor: pointer;
font-weight: inherit;
font-size: inherit;
height: auto;
margin: 0;
padding: 0 15px 0 0;
}
@@ -0,0 +1,27 @@
/*
list-filter-dropdown
*/
.admin-interface #changelist-filter .list-filter-dropdown {
margin-top: 15px;
margin-bottom: 15px;
}
.admin-interface #changelist-filter h2 + .list-filter-dropdown,
.admin-interface #changelist-filter .list-filter-dropdown + .list-filter-dropdown {
margin-top: 5px;
}
.admin-interface #changelist-filter .list-filter-dropdown h3 {
margin-top: 0 !important;
}
.admin-interface #changelist-filter .list-filter-dropdown select {
background-color: #FFFFFF;
width: calc(100% - 30px);
margin-right: 15px;
}
.admin-interface.list-filter-highlight #changelist-filter .list-filter-dropdown h3.active + div select {
font-weight: bold;
}
@@ -0,0 +1,28 @@
.admin-interface .module.filtered h2 {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.admin-interface .module.filtered #changelist-filter {
min-width: 240px;
}
@media (max-width: 1024px) {
.admin-interface .module.filtered #changelist-filter {
min-width: 200px;
}
}
.admin-interface .module.filtered #changelist-filter h2 {
font-size: 11px;
padding: 10px 15px;
}
.admin-interface .module.filtered #changelist-filter h2 + h3 {
margin-top: 0px;
}
.admin-interface .module.filtered #changelist-filter h3 {
margin-top: 12px;
margin-bottom: 12px;
}
@@ -0,0 +1,65 @@
.admin-interface.login #container {
width: 100%;
max-width: 360px;
margin: 15px auto;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.admin-interface.login #content {
padding: 15px 30px 30px 30px;
}
@media (min-width:768px){
.admin-interface.login #container {
margin: 90px auto;
}
}
.admin-interface.login #header {
min-height: auto;
padding: 10px 30px;
line-height: 30px;
align-items: center;
justify-content: flex-start;
}
.admin-interface.login #header #branding h1 {
margin-right:0;
}
.admin-interface.login #header #branding h1 img.logo {
margin-right: 0;
}
.admin-interface.login #header #branding h1 img.logo+span {
display: block;
}
.admin-interface.login #login-form {
display: flex;
flex-direction: column;
}
.admin-interface.login .submit-row {
float: left;
width: 100%;
margin-top: 20px;
padding-top: 0;
padding-left: 0;
text-align: right;
}
.admin-interface.login .submit-row label {
display: none;
}
.admin-interface.login .submit-row input[type="submit"] {
width: 100%;
text-transform: uppercase;
}
.admin-interface.login #footer {
display: none;
}
@@ -0,0 +1,12 @@
/* begin fix lateral padding to align text with field labels */
.admin-interface .module h2,
.admin-interface.dashboard .module caption,
.admin-interface.dashboard .module th,
.admin-interface .module.filtered h2,
.admin-interface .inline-group h2,
.admin-interface #nav-sidebar .module caption,
.admin-interface #nav-sidebar .module th {
padding-left: 10px;
padding-right: 10px;
}
/* end fix */
@@ -0,0 +1,78 @@
/* fix nav-sidebar (added in django 3.1.0) */
.admin-interface #toggle-nav-sidebar {
top: 10px;
left: 0;
z-index: 20;
flex: 0 0 30px;
width: 30px;
height: 45px;
margin-top: 10px;
margin-right: -30px;
background-color: #FFFFFF;
font-size: 16px;
border: 1px solid #eaeaea;
border-left: none;
outline: none;
-webkit-box-shadow: 4px 4px 8px -4px #DBDBDB;
-moz-box-shadow: 4px 4px 8px -4px #DBDBDB;
box-shadow: 4px 4px 8px -4px #DBDBDB;
/*transition: left .3s;*/
}
.admin-interface .toggle-nav-sidebar::before {
margin-top: -2px;
}
.admin-interface .main > #nav-sidebar + .content,
.admin-interface .main.shifted > #nav-sidebar + .content {
max-width: 100%;
}
/* hide nav-sidebar below 1280px to prevent horizontal overflow issues */
@media (max-width:1279px) {
.admin-interface #nav-sidebar,
.admin-interface #toggle-nav-sidebar {
display: none;
}
}
.admin-interface #nav-sidebar {
flex: 0 0 360px;
left: -360px;
margin-left: -360px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
padding: 40px 40px 40px 40px;
border-top: none;
border-bottom: none;
border-left: none;
scrollbar-width: thin;
/*transition: left .3s, margin-left .3s;*/
}
.admin-interface #nav-filter {
background-color: transparent;
border-radius: 4px;
height: 30px;
margin: 0 0 30px 0;
padding: 5px 6px;
outline-width: initial;
}
@media (min-width:1280px) {
.admin-interface #main.shifted > #toggle-nav-sidebar {
left: 359px;
}
.admin-interface #main.shifted > #nav-sidebar {
left: 0px;
margin-left: 0;
}
.admin-interface #main:not(.shifted) > .content {
max-width: 100%;
}
.admin-interface.change-list:not(.popup) #main.shifted > #nav-sidebar + .content,
.admin-interface.change-form:not(.popup) #main.shifted > #nav-sidebar + .content {
max-width: calc(100% - 360px);
}
}
@@ -0,0 +1,10 @@
/* top-right buttons color on hover -> just a lighten grey */
.admin-interface .object-tools a {
color: #FFFFFF;
}
.admin-interface .object-tools a:focus,
.admin-interface .object-tools a:hover,
.admin-interface .object-tools li:focus a,
.admin-interface .object-tools li:hover a {
background-color: #AAAAAA;
}
@@ -0,0 +1,33 @@
.admin-interface #changelist .paginator {
margin-top: -1px; /* merge 2 borders into 1 */
line-height: 1.5em;
padding-top: 12px;
padding-bottom: 12px;
}
.admin-interface .paginator a,
.admin-interface .paginator a:link,
.admin-interface .paginator a:visited,
.admin-interface .paginator .this-page {
padding: 7px 12px;
}
.admin-interface .paginator a,
.admin-interface .paginator .this-page {
margin-left: 0px;
}
.admin-interface .paginator .this-page,
.admin-interface .paginator a.end {
margin-right: 25px;
}
.admin-interface .paginator .this-page + a:not(.showall) {
margin-left: -25px;
}
body.admin-interface .paginator a.showall,
body.admin-interface .paginator a.showall:link,
body.admin-interface .paginator a.showall:visited {
margin-left: 20px;
}
@@ -0,0 +1,10 @@
.admin-interface.dashboard #content {
width: auto;
max-width: 600px;
margin-right: 0;
margin-left: 0;
}
.admin-interface.dashboard #content #recent-actions-module {
display: none;
}
@@ -0,0 +1,34 @@
[dir="rtl"] .admin-interface,
[dir="rtl"] .admin-interface * {
font-family: 'Vazir', sans-serif !important;
}
[dir="rtl"] .admin-interface .main .toggle-nav-sidebar.sticky {
left: auto !important;
right: 0px !important;
margin-right: 0px !important;
margin-left: 10px;
border: 1px solid #eaeaea !important;
border-right: none !important;
border-top-right-radius: 0px !important;
border-bottom-right-radius: 0px !important;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
box-shadow: -4px 2px 8px -2px #DBDBDB !important;
}
[dir="rtl"] .admin-interface #main.shifted > #toggle-nav-sidebar {
right: 359px !important;
}
[dir="rtl"] .admin-interface #main > #nav-sidebar {
margin-right: -360px !important;
margin-left: 0px !important;
right: -320px !important;
}
[dir="rtl"] .admin-interface #main.shifted > #nav-sidebar {
border-left: 1px solid #eaeaea;
margin-right: 0px !important;
padding: 40px 0px 40px 40px !important;
}
@@ -0,0 +1,95 @@
/* sticky pagination */
.admin-interface.sticky-pagination.change-list #content-main {
padding-bottom: 4.375rem;
}
.admin-interface.sticky-pagination.change-list .paginator {
width: 100%;
position: fixed;
bottom: 0;
right: 0;
z-index: 40;
box-sizing: border-box;
padding-left: 15px;
padding-right: 15px;
white-space: nowrap;
text-overflow: ellipsis;
border-radius: 0;
border-top: 1px solid #EEEEEE !important;
border-bottom: none;
margin: 0;
}
.admin-interface.sticky-pagination.change-list.popup .paginator {
padding-left: 20px;
padding-right: 20px;
}
@media (min-width:768px) {
.admin-interface.sticky-pagination.change-list:not(.popup) .paginator {
padding-left: 30px;
padding-right: 30px;
}
}
@media (min-width:1024px) {
.admin-interface.sticky-pagination.change-list:not(.popup) .paginator {
padding-left: 40px;
padding-right: 40px;
}
}
@media (min-width:1280px) {
.admin-interface.sticky-pagination.change-list:not(.popup) #main.shifted > #nav-sidebar + .content .paginator {
width: calc(100% - 360px);
}
}
/* sticky submit */
@media (min-width:768px) {
.admin-interface.sticky-submit.change-form #content-main {
padding-bottom: 4.375rem;
}
.admin-interface.sticky-submit.change-form .submit-row:last-of-type {
width: 100%;
position: fixed;
bottom: 0;
right: 0;
z-index: 40;
box-sizing: border-box;
padding-left: 15px;
padding-right: 15px;
white-space: nowrap;
text-overflow: ellipsis;
border-radius: 0;
border-top: 1px solid #EEEEEE;
border-bottom: none !important;
margin: 0;
}
.admin-interface.sticky-submit.change-form.popup .submit-row:last-of-type {
padding-left: 20px;
padding-right: 20px;
}
.admin-interface.sticky-submit.change-form:not(.popup) .submit-row:last-of-type {
padding-left: 30px;
padding-right: 30px;
}
}
@media (min-width:1024px) {
.admin-interface.sticky-submit.change-form:not(.popup) .submit-row:last-of-type {
padding-left: 40px;
padding-right: 40px;
}
}
@media (min-width:1280px) {
.admin-interface.sticky-submit.change-form:not(.popup) #main.shifted > #nav-sidebar + .content .submit-row:last-of-type {
width: calc(100% - 359px);
}
}
@@ -0,0 +1,67 @@
.admin-interface .tabbed-changeform-tabs {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
overflow-x: auto;
overflow-y: hidden;
scrollbar-width: thin;
padding-bottom: 15px;
}
@-moz-document url-prefix() {
.admin-interface .tabbed-changeform-tabs {
padding-bottom: 13px;
}
}
.admin-interface .tabbed-changeform-tabs .tabbed-changeform-tablink {
appearance: none;
-webkit-appearance: none;
border: 1px solid transparent;
border-bottom: 1px solid var(--border-color);
border-radius: var(--admin-interface-module-border-radius);
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
flex-shrink: 0;
flex-grow: 0;
cursor: pointer;
padding: 10px 15px;
margin: 0;
background-color: var(--admin-interface-module-header-text-color);
color: var(--admin-interface-generic-link-color);
font-size: 13px;
font-weight: bold;
outline: none !important;
}
.admin-interface .tabbed-changeform-tabs .tabbed-changeform-tablink + .tabbed-changeform-tablink {
margin-left: -1px;
}
.admin-interface .tabbed-changeform-tabs .tabbed-changeform-tablink:hover {
color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface .tabbed-changeform-tabs .tabbed-changeform-tablink:focus {
color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface .tabbed-changeform-tabs .tabbed-changeform-tablink.active {
border: 1px solid var(--border-color);
border-bottom: 1px solid transparent;
color: var(--admin-interface-generic-link-active-color);
}
.admin-interface .tabbed-changeform-tabs-remaining-space {
flex: 1;
border-bottom: 1px solid var(--border-color);
}
.admin-interface .tabbed-changeform-tabcontent {
display: none;
padding: 1em 0;
}
.admin-interface .tabbed-changeform-tabcontent.active {
display: block;
}
@@ -0,0 +1,126 @@
/*
ckeditor + light theme
https://github.com/Ikimea/ckeditor-light-theme
*/
.admin-interface .cke {
border: none;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.admin-interface .cke_inner,
.admin-interface .cke_wysiwyg_frame {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
.admin-interface .cke_inner {
border: 1px solid #CCCCCC;
}
.admin-interface .cke_chrome {
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.admin-interface .cke_top {
background: #f8f8f8;
border-top: none;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom: 1px solid #EEEEEE;
padding-left: 10px;
padding-right: 10px;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.admin-interface .cke_toolgroup {
background: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.admin-interface .cke_bottom {
background: #f8f8f8;
border-top: 1px solid #EEEEEE;
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.admin-interface .cke_source {
padding: 13px 15px;
box-sizing: border-box;
}
.admin-interface a.cke_button,
.admin-interface a.cke_button:active,
.admin-interface a.cke_button:hover,
.admin-interface a.cke_button:focus {
box-shadow: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
background-image: none;
border-radius: 4px;
border: none;
}
.admin-interface a.cke_button:active,
.admin-interface a.cke_button:hover,
.admin-interface a.cke_button:focus {
background-color: #E8E8E8 !important;
}
.admin-interface a.cke_button.cke_button_on {
background-color: #CCCCCC !important;
}
.admin-interface a.cke_button.cke_button_disabled {
background-color: transparent !important;
}
.admin-interface .cke_resizer {
border-color: transparent #666666 transparent transparent;
}
@media (max-width: 767px){
.admin-interface .django-ckeditor-widget,
.admin-interface .cke {
width: 100% !important;
}
.admin-interface .cke_top {
padding-left: 10px;
padding-right: 10px;
}
.admin-interface .cke_toolbar {
height: auto;
}
.admin-interface .cke_contents {
height: auto;
}
.admin-interface .tabular .django-ckeditor-widget,
.admin-interface .tabular .cke {
width: 400px !important;
}
.admin-interface .tabular .cke_contents {
height: 90px !important;
}
}
@@ -0,0 +1,7 @@
/* Fix left/right scrolling broken with django-import-export #165 */
.admin-interface table.import-preview {
display: block;
width: 100%;
max-width: 100%;
overflow: auto;
}
@@ -0,0 +1,27 @@
/*
django-json-widget support
https://github.com/jmrivas86/django-json-widget
*/
.admin-interface div.jsoneditor {
border: 1px solid var(--admin-interface-module-background-color);
border-radius: var(--admin-interface-jsoneditor-border-radius);
overflow: var(--admin-interface-jsoneditor-overflow);
}
.admin-interface div.jsoneditor-menu {
background-color: var(--admin-interface-module-background-color);
border-bottom: 1px solid var(--admin-interface-module-background-color);
}
.admin-interface div.jsoneditor-menu a.jsoneditor-poweredBy {
color: var(--admin-interface-module-link-color);
}
.admin-interface div.jsoneditor-contextmenu ul li button.jsoneditor-selected,
.admin-interface div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus,
.admin-interface div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover {
background-color: var(--admin-interface-module-background-selected-color);
color: #000000;
font-weight: bold;
}
@@ -0,0 +1,17 @@
/*
django-modeltranslation support
https://github.com/deschler/django-modeltranslation
*/
.admin-interface #content h1 select {
text-transform: uppercase;
margin-left: 15px;
min-width: 50px;
}
.admin-interface .ui-tabs .ui-tabs-panel[id^=tab_id_] {
border: none;
border-top: 1px solid #eeeeee;
padding: 0;
margin-bottom: 0;
}
@@ -0,0 +1,25 @@
.admin-interface #changelist-filter .admindatefilter {
border-bottom: 1px solid var(--hairline-color);
}
.admin-interface #changelist-filter .admindatefilter .button,
.admin-interface #changelist-filter .admindatefilter .submit-row input,
.admin-interface #changelist-filter .admindatefilter a.button,
.admin-interface #changelist-filter .admindatefilter input[type="submit"],
.admin-interface #changelist-filter .admindatefilter input[type="button"],
.admin-interface #changelist-filter .admindatefilter input[type="reset"] {
background: var(--admin-interface-module-background-color);
color: var(--admin-interface-module-link-color);
padding: 6px 10px;
font-size: 12px;
margin-right: 4px;
}
.admin-interface #changelist-filter .admindatefilter .button:hover,
.admin-interface #changelist-filter .admindatefilter .submit-row input:hover,
.admin-interface #changelist-filter .admindatefilter a.button:hover,
.admin-interface #changelist-filter .admindatefilter input[type="submit"]:hover,
.admin-interface #changelist-filter .admindatefilter input[type="button"]:hover,
.admin-interface #changelist-filter .admindatefilter input[type="reset"]:hover {
color: var(--admin-interface-module-link-hover-color);
}
@@ -0,0 +1,67 @@
/*
sorl-thumbnail - improved AdminImageMixin widget layout
https://github.com/mariocesar/sorl-thumbnail
*/
.admin-interface a.thumbnail + a {
font-weight: normal;
}
.admin-interface a.thumbnail + a + input[type="checkbox"] {
margin: 10px 0px 10px 18px;
}
@media (max-width: 767px){
.admin-interface a.thumbnail + a {
display: block;
margin-top: 3px;
white-space: pre-wrap;
word-break: break-word;
}
.admin-interface a.thumbnail + a + input[type="checkbox"] {
margin: 15px 0;
}
}
.admin-interface a.thumbnail ~ label {
color: #333;
font-size: 11px;
display: inline;
float: none;
margin-left: 2px;
}
.admin-interface.change-form div[style="float:left"] {
font-size: 11px;
font-weight: bold;
color: #666;
margin-bottom: 5px;
}
@media (max-width: 767px){
.admin-interface.change-form div[style="float:left"] {
font-size: 12px;
width: 100%;
}
}
.admin-interface .aligned .form-row a.thumbnail ~ input[type="file"] {
margin-top: 0px;
}
@media (max-width:767px){
.admin-interface .aligned .form-row a.thumbnail ~ input[type="file"] {
width: auto;
padding: 0px;
display: block;
margin-top: 3px;
}
.admin-interface div[style="float:left"] {
margin-bottom: 0px;
}
.admin-interface div[style="float:left"] + div.help {
margin-top: 0px !important;
}
}
@@ -0,0 +1,220 @@
/*
django-streamfield support
https://github.com/raagin/django-streamfield/
*/
.admin-interface .form-row.field-stream {
margin: 0;
padding: 0;
border-bottom: none;
}
.admin-interface .form-row.field-stream label[for=id_stream] {
display: none;
}
.admin-interface .streamfield_app {
clear: both;
width: 100%;
}
.admin-interface .streamfield_app .stream-help-text {
margin-bottom: 15px;
display: flex;
flex-direction: column;
clear: both;
}
.admin-interface .streamfield_app .stream-help-text .stream-help-text__title {
align-self: flex-end;
user-select: none;
padding: 8px;
padding-right: 0;
color: var(--admin-interface-generic-link-color);
}
.admin-interface .streamfield_app .stream-help-text .stream-help-text__title:hover {
color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface .streamfield_app .stream-help-text .stream-help-text__content {
background: var(--admin-interface-module-background-selected-color);
border-radius: var(--admin-interface-module-border-radius);
border: 1px solid rgba(0,0,0,0.1);
padding: 15px;
}
.admin-interface .streamfield_app .stream-help-text .stream-help-text__content > ul {
margin: 0;
padding: 0;
}
.admin-interface .streamfield_app .collapse-handlers .collapse-handler {
user-select: none;
padding: 8px;
padding-right: 0;
margin: 0 0 5px 0;
color: var(--admin-interface-generic-link-color);
text-decoration: none;
}
.admin-interface .streamfield_app .collapse-handlers .collapse-handler:hover {
color: var(--admin-interface-generic-link-hover-color);
text-decoration: underline;
}
.admin-interface .streamfield_app .stream-model-block {
position: relative;
box-shadow: none;
border: 1px solid rgba(0,0,0,0.1);
border-radius: var(--admin-interface-module-border-radius);
overflow: hidden;
}
.admin-interface .streamfield_app .stream-model-block,
.admin-interface .streamfield_app .streamfield-models.collapsed .stream-model-block {
margin-bottom: 10px;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin: 0;
padding: 10px 10px 10px 20px;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block__model_title {
white-space: nowrap;
flex-shrink: 0;
margin-right: 20px;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title span {
font-size: 18px;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block-handle {
position: static;
right: 0;
top: 0;
color: var(--admin-interface-generic-link-color);
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block-handle:hover {
color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block-handle {
display: flex;
justify-content: center;
align-items: center;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block-handle .block-move,
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block-handle .block-delete {
display: flex;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
font-weight: normal;
background: none;
flex-shrink: 0;
color: inherit;
font-size: 16px;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block-handle .block-move {
cursor: move; /* fallback if grab cursor is unsupported */
cursor: grab;
cursor: -moz-grab;
cursor: -webkit-grab;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block-handle .block-move:before {
content: "↕";
display: block;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__title .streamblock__block-handle .block-delete:before {
content: "×";
display: block;
font-size: 18px;
}
.admin-interface .streamfield_app .stream-model-block .streamblock__block__subtitle {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
flex-shrink: 1;
margin-right: 10px;
}
.admin-interface .streamfield_app .block-fields > div {
margin-bottom: 15px;
}
.admin-interface .streamfield_app .stream-model-block .stream-model-block__content {
background-color: #f8f8f8;
padding: 20px;
}
.admin-interface .streamfield_app .stream-model-block .stream-model-block__content.no-subblocks.abstract-block {
display: none;
}
.admin-interface .streamfield_app .stream-model-block .add_here {
display: none !important;
}
.admin-interface .streamfield_app .stream-insert-new-block {
margin-bottom: 20px;
}
.admin-interface .streamfield_app .stream-insert-new-block .add-new-block-button {
color: var(--admin-interface-generic-link-color);
text-decoration: none;
}
.admin-interface .streamfield_app .stream-insert-new-block .add-new-block-button:hover {
color: var(--admin-interface-generic-link-hover-color);
text-decoration: underline;
}
.admin-interface .streamfield_app .stream-insert-new-block ul {
display: block;
width: 100%;
margin: 10px 0 0 0;
padding: 0;
user-select: none;
}
.admin-interface .streamfield_app .stream-insert-new-block ul li {
display: inline-block;
font-size: 12px;
margin: 0;
padding: 0;
}
.admin-interface .streamfield_app .stream-btn {
font-weight: normal;
text-decoration: none;
background-color: var(--admin-interface-generic-link-color);
padding: 6px 12px;
border-radius: 4px;
}
.admin-interface .streamfield_app .stream-btn:hover {
text-decoration: none;
background-color: var(--admin-interface-generic-link-hover-color);
}
.admin-interface .streamfield_app .stream-insert-new-block ul li .stream-btn {
margin-top: 5px;
margin-left: 5px;
}
@@ -0,0 +1,37 @@
/*
django-tabbed-admin support
https://github.com/omji/django-tabbed-admin
*/
/* Hide tabs until ready */
/*
.admin-interface #tabs ul {
display: none;
}
.admin-interface #tabs ul.ui-tabs-nav {
display: block;
}
*/
.admin-interface .ui-tabs .ui-tabs-panel[id^=tabs] .module.aligned:last-child {
margin-bottom: 0;
}
.admin-interface .ui-tabs .ui-tabs-panel[id^=tabs] .module.aligned:last-child .form-row:last-child {
border-bottom: none;
}
@media (max-width: 350px){
.admin-interface .ui-tabs .ui-tabs-panel[id^=tabs] .vTextField,
.admin-interface .inline-related .vTextField {
width: 17em;
}
}
@media (max-width: 767px){
/* fix horizontal overflow - responsive.css:563 */
.admin-interface .ui-tabs .ui-tabs-panel[id^=tabs] .aligned .form-row > div:not([class]) {
width: 100% !important;
}
}
@@ -0,0 +1,3 @@
.admin-interface textarea.tinymce ~ p.help {
margin-top:5px !important;
}
@@ -0,0 +1,153 @@
/* fix generic flex container */
.admin-interface .flex-container {
width: 100%;
}
/* end-fix */
/* fix flex container for boolean fields */
.admin-interface .flex-container.checkbox-row {
align-items: center;
}
.admin-interface .flex-container.checkbox-row label.vCheckboxLabel {
margin-top: 0 !important;
padding-left: 5px !important;
padding-bottom: 0;
}
/* end-fix */
/* fix flex container for related-lookup (raw_id_fields) */
.admin-interface .flex-container:has(.vForeignKeyRawIdAdminField) {
align-items: center;
}
.admin-interface .flex-container:has(.vForeignKeyRawIdAdminField) .related-lookup {
margin-left: 12px;
}
.admin-interface .flex-container:has(.vForeignKeyRawIdAdminField) .related-lookup + * {
margin-left: 8px;
}
/* end-fix */
/* fix flex container input fields height inheritance */
.admin-interface .flex-container label + input[type="text"],
.admin-interface .flex-container label + input[type="password"],
.admin-interface .flex-container label + input[type="email"],
.admin-interface .flex-container label + input[type="url"],
.admin-interface .flex-container label + input[type="number"],
.admin-interface .flex-container label + input[type="tel"] {
height: 1.375em;
}
/* end-fix */
/* fixed time widget header border radius */
.admin-interface .clockbox.module h2 {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
/* end-fix */
/* fixed related widget and select2 */
/* begin fix issue #10 - Related widget broken in long tabular inline */
.admin-interface .related-widget-wrapper {
display: flex;
flex-wrap: nowrap;
white-space: nowrap;
height: fit-content;
}
/* end fix */
/* fix related widget links icons size and vertical alignment */
.admin-interface .related-widget-wrapper .related-widget-wrapper-link {
display: flex;
align-items: center;
margin-bottom: 4px;
}
.admin-interface .related-widget-wrapper .related-widget-wrapper-link img {
width: 16px;
height: 16px;
}
/* end fix */
/* fix related widget links add button position on many-to-many selector */
.admin-interface .related-widget-wrapper .related-widget-wrapper-link:has(+ .selector) {
order: 2;
align-self: flex-start;
margin-top: 8px;
}
/* end fix */
/* fix related widget links margin from select2 (autocomplete_fields) */
.admin-interface .related-widget-wrapper .select2-container + .related-widget-wrapper-link {
margin-left: 12px !important;
}
/* end fix */
/* improve responsive selector */
/* fix [stacked, not-stacked] equalize horizontal and vertical select padding for selector */
.admin-interface .selector .selector-available select,
.admin-interface .selector .selector-chosen select {
padding: 7px 10px;
display: block;
}
/* fix [stacked, not-stacked] select options text overflow */
.admin-interface .selector .selector-available select option,
.admin-interface .selector .selector-chosen select option {
overflow: hidden;
text-overflow: ellipsis;
}
/* fix [not-stacked] equalize selectors height by adding the height of the .selector-available filter-bar */
.admin-interface .selector:not(.stacked) .selector-chosen select {
height: calc(46px + 17.2em) !important;
}
@media (max-width: 767px) {
/* fixed responsive widgets */
.admin-interface .aligned.collapsed .form-row {
display: none;
}
.admin-interface .aligned .form-row > div {
display: flex;
width: 100%;
max-width: 100vw;
flex-direction: column;
align-items: flex-start;
}
.admin-interface .aligned .form-row .help {
margin-left: 0;
}
.admin-interface .aligned .form-row .checkbox-row label {
margin: 10px 0 0 0;
padding: 0;
}
.admin-interface .aligned .form-row input[type="file"],
.admin-interface .aligned .form-row input[type="text"],
.admin-interface .aligned .form-row input[type="email"] {
width: 100%;
}
/* fix textarea horizontal scroll on Firefox */
.admin-interface .aligned .form-row textarea {
width: 100% !important;
flex: 0 1 auto;
}
.admin-interface .aligned .form-row .datetime input[type="text"] {
width: 50%;
}
.admin-interface .aligned .form-row span + .file-upload {
margin-top: 10px;
}
.admin-interface .aligned .form-row .file-upload input[type="file"] {
margin-top: 5px;
}
}
@@ -31,7 +31,7 @@
right: 0;
z-index: 10;
width: auto;
height: 100%;
height: calc(100% - 3px);
content: "";
font-size: 16px;
font-weight: lighter;
@@ -1507,7 +1507,7 @@
}
},
// Get element postion relative to viewport
// Get element position relative to viewport
_getOffset: function(isLarge) {
var el;
if(isLarge) {
@@ -1808,7 +1808,7 @@
_mfpTrigger('LazyLoad', item);
if(item.type === 'image') {
item.img = $('<img class="mfp-img" />').on('load.mfploader', function() {
item.img = $('<img class="mfp-img">').on('load.mfploader', function() {
item.hasSize = true;
}).on('error.mfploader', function() {
item.hasSize = true;
@@ -1864,4 +1864,4 @@
/*>>retina*/
_checkInstance();
}));
}));
@@ -0,0 +1,82 @@
/*
related modal + magnific popup customization
https://github.com/dimsemenov/Magnific-Popup
*/
.admin-interface .related-modal.mfp-bg {
background-color: var(--admin-interface-related-modal-background-color);
opacity: var(--admin-interface-related-modal-background-opacity);
}
.admin-interface .related-modal .mfp-content {
height: 100%;
-webkit-box-shadow: 0px 5px 30px 0px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0px 5px 30px 0px rgba(0, 0, 0, 0.2);
box-shadow: 0px 5px 30px 0px rgba(0, 0, 0, 0.2);
}
.admin-interface .related-modal .mfp-container {
padding: 80px 80px 80px 80px;
}
.admin-interface .related-modal__nested .mfp-container {
padding: 40px 80px 40px 80px;
}
@media (max-width: 640px) {
.admin-interface .related-modal .mfp-container {
padding: 80px 20px 80px 20px;
}
.admin-interface .related-modal__nested .mfp-container {
padding: 40px 40px 40px 40px;
}
}
@media (max-height: 640px) {
.admin-interface .related-modal .mfp-container {
padding-top: 20px;
padding-bottom: 20px;
}
.admin-interface .related-modal__nested .mfp-container {
padding: 40px 40px 40px 40px;
}
}
.admin-interface .related-modal .related-modal-iframe-container {
display: block;
width: 100%;
height: 100%;
position: relative;
z-index: 100;
overflow: hidden;
border-radius: var(--admin-interface-related-modal-border-radius);
}
.admin-interface .related-modal #related-modal-iframe {
width: 100%;
height: 100%;
background-color: #FFFFFF;
background-repeat: no-repeat;
background-position: center center;
background-size: 30px 30px;
background-image: url("data:image/svg+xml;utf8,<?xml version='1.0' encoding='utf-8'?><svg width='30px' height='30px' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='xMidYMid' class='uil-ring-alt'><rect x='0' y='0' width='100' height='100' fill='none' class='bk'></rect><circle cx='50' cy='50' r='40' stroke='%23eeeeee' fill='none' stroke-width='6' stroke-linecap='round'></circle><circle cx='50' cy='50' r='40' stroke='%23aaaaaa' fill='none' stroke-width='6' stroke-linecap='round'><animate attributeName='stroke-dashoffset' dur='2s' repeatCount='indefinite' from='0' to='500'></animate><animate attributeName='stroke-dasharray' dur='2s' repeatCount='indefinite' values='150 100;1 250;150 100'></animate></circle></svg>");
border: none;
margin: 0 auto;
padding: 0;
display: block;
}
.admin-interface .related-modal .mfp-close {
width: 40px;
height: 40px;
opacity: 1.0;
color: rgba(0, 0, 0, 0.4);
display: var(--admin-interface-related-modal-close-button-display);
}
.admin-interface .related-modal .mfp-close:hover,
.admin-interface .related-modal .mfp-close:active {
color: rgba(0, 0, 0, 0.6);
top: 0;
}
@@ -70,7 +70,7 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
}
}
// fix for django 1.7
// fix for django 1.7 TODO remove
if (iframeSrc.indexOf('_popup=1') === -1) {
if (iframeSrc.indexOf('?') === -1) {
iframeSrc += '?_popup=1';
@@ -125,26 +125,22 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
var data = {
lookup:(lookup === true ? true : false)
};
// remove potential existing click event listener
var el = $(selector);
el.removeAttr('onclick');
el.unbind('click');
el.click(data, presentRelatedObjectModal);
// listen the event on document for handling it on elements will be added to the DOM later
$(document).on('click', selector, data, presentRelatedObjectModal);
}
// assign functions to global variables
window.presentRelatedObjectModal = presentRelatedObjectModal;
window.presentRelatedObjectModalOnClickOn = presentRelatedObjectModalOnClickOn;
// django 1.7 compatibility
// $('a.add-another').removeAttr('onclick').click({ lookup:false }, presentRelatedObjectModal);
presentRelatedObjectModalOnClickOn('a.add-another');
// django 1.8 and above
// $('a.related-widget-wrapper-link').click({ lookup:false }, presentRelatedObjectModal);
presentRelatedObjectModalOnClickOn('a.related-widget-wrapper-link');
// raw_id_fields support
// $('a.related-lookup').unbind('click').click({ lookup:true }, presentRelatedObjectModal);
presentRelatedObjectModalOnClickOn('a.related-lookup', true);
// django-dynamic-raw-id support - #61
@@ -153,6 +149,22 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
// show_change_link=True support
presentRelatedObjectModalOnClickOn('a.inlinechangelink');
// any link with _popup=1 parameter support
presentRelatedObjectModalOnClickOn('a[href*="_popup=1"]');
// django-streamfield support
// https://github.com/raagin/django-streamfield/
presentRelatedObjectModalOnClickOn('.streamfield_app a.stream-btn[href*="_popup=1"]');
// Vanilla js for catching the click during capture phase for anticipating Vue.js listener.
document.addEventListener('click', function(event) {
// console.log('click intercepted before Vue.');
if (event.target.matches('.streamfield_app a.stream-btn[href*="_popup=1"]')) {
event.stopImmediatePropagation();
event.preventDefault();
$(event.target).trigger('click');
}
}, { capture: true });
});
})(django.jQuery);
@@ -0,0 +1,73 @@
(function (AdminInterface) {
var scope = AdminInterface;
scope.tabbedChangeForm = {
openTab: function (event, tabName) {
this.openTabByName(tabName);
},
openTabByName: function(tabName) {
let tablinkEl = document.getElementById("tablink-" + tabName);
let tabcontentEl = document.getElementById("tabcontent-" + tabName);
if (!tablinkEl || !tabcontentEl) {
return false;
}
let tablinks = document.getElementsByClassName("tabbed-changeform-tablink");
let tabcontents = document.getElementsByClassName("tabbed-changeform-tabcontent");
// toggle tab link
for (let tablink of tablinks) {
tablink.classList.remove("active");
}
tablinkEl.classList.add("active");
// toggle tab content
for (let tabcontent of tabcontents) {
tabcontent.classList.remove("active");
}
tabcontentEl.classList.add("active");
// update location hash
let history = window.history;
if (history) {
history.replaceState(undefined, undefined, "#" + tabName);
}
return true;
},
openTabByLocationHash: function() {
let hash = window.location.hash;
if (hash && hash !== "#") {
let tabName = hash.substring(1);
if (this.openTabByName(tabName)) {
this.scrollTabsToTabByName(tabName);
}
}
},
scrollTabsToTabByName: function(tabName) {
let tabsEl = document.getElementById("tabbed-changeform-tabs");
let tablinkEl = document.getElementById("tablink-" + tabName);
if (!tabsEl || !tablinkEl) {
return;
}
let tablinkLeft = (tablinkEl.offsetLeft - tabsEl.offsetLeft);
let tabsScrollLeft = Math.ceil(tablinkLeft);
tabsEl.scrollTo({
top: 0,
left: tabsScrollLeft,
behavior: "instant"
});
}
};
// scope.tabbedChangeForm.openTabByLocationHash();
document.addEventListener('DOMContentLoaded', function() {
scope.tabbedChangeForm.openTabByLocationHash();
}, false);
}(window.AdminInterface = window.AdminInterface || {}));
@@ -49,7 +49,7 @@ CKEDITOR.skin.name = 'husky';
// the complete list:
// http://docs.ckeditor.com/#!/api/CKEDITOR.env
//
// Internet explorer is an expection and the browser version is also accepted
// Internet explorer is an exception and the browser version is also accepted
// (ie7, ie8, ie9, ie10), as well as a special name for IE in Quirks mode (iequirks).
//
// The available browser specific files must be set separately for editor.css
@@ -0,0 +1,24 @@
// IMPORTANT: used by django-streamfield >= 2.0.0
(function() {
'use strict';
var windowRef = window;
var openerRef = windowRef.parent;
var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);
switch (initData.action) {
case 'change':
openerRef.streamapps[initData.app_id].updateBlock(initData.block_id, initData.instance_id);
openerRef.dismissRelatedObjectModal();
break;
case 'delete':
break;
default:
openerRef.streamapps[initData.app_id].updateBlock(initData.block_id, initData.instance_id);
openerRef.dismissRelatedObjectModal();
break;
}
})();
@@ -0,0 +1,24 @@
// IMPORTANT: used by django-streamfield >= 2.0.0
(function() {
'use strict';
var windowRef = window;
var openerRef = windowRef.parent;
var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);
switch (initData.action) {
case 'change':
openerRef.streamapps[initData.app_id].updateBlock(initData.block_id, initData.instance_id);
openerRef.dismissRelatedObjectModal();
break;
case 'delete':
break;
default:
openerRef.streamapps[initData.app_id].updateBlock(initData.block_id, initData.instance_id);
openerRef.dismissRelatedObjectModal();
break;
}
})();