diff --git a/amadeus/static/css/base/amadeus.css b/amadeus/static/css/base/amadeus.css index 8d42216..8c4baaf 100755 --- a/amadeus/static/css/base/amadeus.css +++ b/amadeus/static/css/base/amadeus.css @@ -960,3 +960,24 @@ ul, li { /* subjects app ends */ +/* Themes */ +.page_selector h4 { + margin-bottom: 20px; + border-bottom: 1px solid #e5e5e5; +} +.page_selector:hover, .page_selector:focus { + text-decoration: none; +} + +.filedrag{ + display: none; + font-weight: bold; + text-align: center; + padding: 1em 0; + margin: 1em 0; + color: #555; + border: 2px dashed #555; + border-radius: 7px; + cursor: pointer; +} +/* End Themes */ \ No newline at end of file diff --git a/amadeus/static/js/themes.js b/amadeus/static/js/themes.js new file mode 100644 index 0000000..505b6c0 --- /dev/null +++ b/amadeus/static/js/themes.js @@ -0,0 +1,37 @@ +// check if browser supports drag n drop +// call initialization file +if (window.File && window.FileList && window.FileReader) { + Init(); +} + +// initialize +function Init() { + var small = $("#id_small_logo"), + large = $("#id_large_logo"), + filedrag = $(".filedrag"), + common = $(".common-file-input"); + + // file select + small.on("change", FileSelectHandler); + large.on("change", FileSelectHandler); + + // is XHR2 available? + var xhr = new XMLHttpRequest(); + if (xhr.upload) { + // file drop + filedrag.on("drop", FileSelectHandler); + filedrag.attr('style', 'display:block'); + common.attr('style', 'display:none'); + } +} + +// file selection +function FileSelectHandler(e) { + var files = e.target.files || e.dataTransfer.files, + parent = $(e.target.offsetParent); + + // process all File objects + for (var i = 0, f; f = files[i]; i++) { + parent.find('.filedrag').html(f.name); + } +} \ No newline at end of file diff --git a/amadeus/templates/base.html b/amadeus/templates/base.html index d7a605d..ff0935c 100644 --- a/amadeus/templates/base.html +++ b/amadeus/templates/base.html @@ -115,7 +115,7 @@ diff --git a/amadeus/urls.py b/amadeus/urls.py index 42c0ca9..6ef90b7 100644 --- a/amadeus/urls.py +++ b/amadeus/urls.py @@ -29,6 +29,7 @@ urlpatterns = [ url(r'^subjects/', include('subjects.urls', namespace = 'subjects')), url(r'^mailsender/', include('mailsender.urls', namespace = 'mailsender')), url(r'^security/', include('security.urls', namespace = 'security')), + url(r'^themes/', include('themes.urls', namespace = 'themes')), #API url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')), #S3Direct diff --git a/security/templates/security/update.html b/security/templates/security/update.html index cf0aeaf..f05b6ca 100644 --- a/security/templates/security/update.html +++ b/security/templates/security/update.html @@ -16,10 +16,25 @@
{% csrf_token %} {% for field in form %} -
- +
+
+ +
+ {{ field.help_text }} + {% if field.errors %} + + {% endif %}
{% endfor %}
diff --git a/themes/forms.py b/themes/forms.py index 31938c4..b802b68 100644 --- a/themes/forms.py +++ b/themes/forms.py @@ -3,7 +3,7 @@ from django import forms from .models import Themes -class BasciElemetsForm(forms.ModelForm): +class BasicElemetsForm(forms.ModelForm): class Meta: model = Themes diff --git a/themes/templates/themes/basic_update.html b/themes/templates/themes/basic_update.html new file mode 100644 index 0000000..d7c08a8 --- /dev/null +++ b/themes/templates/themes/basic_update.html @@ -0,0 +1,88 @@ +{% extends 'themes/index.html' %} + +{% load static i18n %} +{% load widget_tweaks %} +{% load django_bootstrap_breadcrumbs %} + +{% block breadcrumbs %} + {{ block.super }} + {% breadcrumb 'Basic Elements' 'themes:basic' %} +{% endblock %} + +{% block content %} +
+
+
+

{% trans 'Basic Elements' %}

+ + + {% csrf_token %} + {% for field in form %} +
+ {% if field.auto_id == 'id_small_logo' or field.auto_id == 'id_large_logo' %} + {% if field.field.required %} + + {% else %} + + {% endif %} + + {% render_field field class='form-control' %} + +
+ + + + +
+
{% trans 'Click or drop files here' %}
+ + {% elif field.auto_id == 'id_footer_note' %} + {% if field.field.required %} + + {% else %} + + {% endif %} + + {% render_field field class='form-control text_wysiwyg' %} + {% else %} + {% if field.field.required %} + + {% else %} + + {% endif %} + + {% render_field field class='form-control' %} + {% endif %} + + {{ field.help_text }} + {% if field.errors %} + + {% endif %} +
+ {% endfor %} +
+
+ +
+
+ + +

{% trans 'CSS Selector' %}

+
+
+
+
+
+ +{% endblock %} \ No newline at end of file diff --git a/themes/templates/themes/css_update.html b/themes/templates/themes/css_update.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/themes/templates/themes/css_update.html diff --git a/themes/templates/themes/index.html b/themes/templates/themes/index.html new file mode 100644 index 0000000..d05f320 --- /dev/null +++ b/themes/templates/themes/index.html @@ -0,0 +1,23 @@ +{% extends 'base.html' %} + +{% load static i18n %} +{% load widget_tweaks %} +{% load django_bootstrap_breadcrumbs %} + +{% block breadcrumbs %} + {{ block.super }} + {% breadcrumb 'Settings: Themes' 'themes:manage' %} +{% endblock %} + +{% block content %} + +
+
+{% endblock %} \ No newline at end of file diff --git a/themes/urls.py b/themes/urls.py new file mode 100644 index 0000000..5ea812f --- /dev/null +++ b/themes/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls import url +from . import views + +urlpatterns = [ + url(r'^$', views.IndexView.as_view(), name = 'manage'), + url(r'^basic_elements$', views.BasicElementsSettings.as_view(), name = 'basic'), + url(r'^css_selector$', views.CSSStyleSettings.as_view(), name = 'css'), +] \ No newline at end of file diff --git a/themes/views.py b/themes/views.py index 91ea44a..ac2e2b5 100644 --- a/themes/views.py +++ b/themes/views.py @@ -1,3 +1,79 @@ +from django.views import generic from django.shortcuts import render +from django.contrib import messages +from django.core.urlresolvers import reverse, reverse_lazy +from django.utils.translation import ugettext_lazy as _ -# Create your views here. +from braces import views as braces_mixins + +from .models import Themes +from .forms import BasicElemetsForm, CSSStyleForm + +class IndexView(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequiredMixin, generic.TemplateView): + login_url = reverse_lazy("users:login") + redirect_field_name = 'next' + + template_name = 'themes/index.html' + + def get_context_data(self, **kwargs): + context = super(IndexView, self).get_context_data(**kwargs) + + context['title'] = _('Themes') + context['settings_menu_active'] = "settings_menu_active" + + return context + +class BasicElementsSettings(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequiredMixin, generic.UpdateView): + login_url = reverse_lazy("users:login") + redirect_field_name = 'next' + + template_name = 'themes/basic_update.html' + model = Themes + form_class = BasicElemetsForm + success_url = reverse_lazy("subjects:home") + + def get_object(self, queryset = None): + return Themes.objects.get(id = 1) + + def form_valid(self, form): + form.save() + + messages.success(self.request, _("Theme settings updated successfully!")) + + return super(BasicElementsSettings, self).form_valid(form) + + def get_context_data(self, **kwargs): + context = super(BasicElementsSettings, self).get_context_data(**kwargs) + + context['title'] = _('Basic Elements') + context['settings_menu_active'] = "settings_menu_active" + + return context + + +class CSSStyleSettings(braces_mixins.LoginRequiredMixin, braces_mixins.StaffuserRequiredMixin, generic.UpdateView): + login_url = reverse_lazy("users:login") + redirect_field_name = 'next' + + template_name = 'themes/css_update.html' + model = Themes + form_class = CSSStyleForm + success_url = reverse_lazy("subjects:home") + + def get_object(self, queryset = None): + return Themes.objects.get(id = 1) + + def form_valid(self, form): + form.save() + + messages.success(self.request, _("Theme settings updated successfully!")) + + return super(CSSStyleSettings, self).form_valid(form) + + def get_context_data(self, **kwargs): + context = super(CSSStyleSettings, self).get_context_data(**kwargs) + + context['title'] = _('CSS Selector') + context['settings_menu_active'] = "settings_menu_active" + + return context -- libgit2 0.21.2