diff --git a/admin_interface/static/admin_interface/css/third-party/ckeditor.css b/admin_interface/static/admin_interface/css/third-party/ckeditor.css
new file mode 100644
index 0000000..952120c
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/ckeditor.css
@@ -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;
+ }
+}
diff --git a/admin_interface/static/admin_interface/css/third-party/import-export.css b/admin_interface/static/admin_interface/css/third-party/import-export.css
new file mode 100644
index 0000000..8ea0a09
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/import-export.css
@@ -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;
+}
diff --git a/admin_interface/static/admin_interface/css/third-party/json-widget.css b/admin_interface/static/admin_interface/css/third-party/json-widget.css
new file mode 100644
index 0000000..e0a999d
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/json-widget.css
@@ -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;
+}
diff --git a/admin_interface/static/admin_interface/css/third-party/modeltranslation.css b/admin_interface/static/admin_interface/css/third-party/modeltranslation.css
new file mode 100644
index 0000000..9e1890b
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/modeltranslation.css
@@ -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;
+}
diff --git a/admin_interface/static/admin_interface/css/third-party/rangefilter.css b/admin_interface/static/admin_interface/css/third-party/rangefilter.css
new file mode 100644
index 0000000..25b4f0b
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/rangefilter.css
@@ -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);
+}
diff --git a/admin_interface/static/admin_interface/css/third-party/sorl-thumbnail.css b/admin_interface/static/admin_interface/css/third-party/sorl-thumbnail.css
new file mode 100644
index 0000000..44c6190
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/sorl-thumbnail.css
@@ -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;
+ }
+}
diff --git a/admin_interface/static/admin_interface/css/third-party/streamfield.css b/admin_interface/static/admin_interface/css/third-party/streamfield.css
new file mode 100644
index 0000000..71ce2db
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/streamfield.css
@@ -0,0 +1,200 @@
+/*
+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-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-handler:hover {
+ color: var(--admin-interface-generic-link-hover-color);
+ text-decoration: none;
+}
+
+.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 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 .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-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: none;
+}
+
+.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;
+}
diff --git a/admin_interface/static/admin_interface/css/third-party/tabbed-admin.css b/admin_interface/static/admin_interface/css/third-party/tabbed-admin.css
new file mode 100644
index 0000000..010296c
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/tabbed-admin.css
@@ -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;
+ }
+}
diff --git a/admin_interface/static/admin_interface/css/third-party/tinymce.css b/admin_interface/static/admin_interface/css/third-party/tinymce.css
new file mode 100644
index 0000000..76ed1b4
--- /dev/null
+++ b/admin_interface/static/admin_interface/css/third-party/tinymce.css
@@ -0,0 +1,3 @@
+.admin-interface textarea.tinymce ~ p.help {
+ margin-top:5px !important;
+}
diff --git a/admin_interface/templates/admin/base_site.html b/admin_interface/templates/admin/base_site.html
index 1efe5f7..3303361 100644
--- a/admin_interface/templates/admin/base_site.html
+++ b/admin_interface/templates/admin/base_site.html
@@ -97,27 +97,24 @@
{% endif %}
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
{% if current_lang == 'fa' %}
{% endif %}