Add powered by footer, set warn cookie using javascript, w3c validation
This commit is contained in:
		@@ -206,6 +206,7 @@ Template settings
 | 
				
			|||||||
  templates. Set it to ``False`` to disable it.
 | 
					  templates. Set it to ``False`` to disable it.
 | 
				
			||||||
* ``CAS_FAVICON_URL``: URL to the favicon (shortcut icon) used by the default templates.
 | 
					* ``CAS_FAVICON_URL``: URL to the favicon (shortcut icon) used by the default templates.
 | 
				
			||||||
  Default is a key icon. Set it to ``False`` to disable it.
 | 
					  Default is a key icon. Set it to ``False`` to disable it.
 | 
				
			||||||
 | 
					* ``CAS_SHOW_POWERED``: Set it to ``False`` to hide the powered by footer. The default is ``True``.
 | 
				
			||||||
* ``CAS_COMPONENT_URLS``: URLs to css and javascript external components. It is a dictionnary
 | 
					* ``CAS_COMPONENT_URLS``: URLs to css and javascript external components. It is a dictionnary
 | 
				
			||||||
  and it must have the five following keys: ``"bootstrap3_css"``, ``"bootstrap3_js"``,
 | 
					  and it must have the five following keys: ``"bootstrap3_css"``, ``"bootstrap3_js"``,
 | 
				
			||||||
  ``"html5shiv"``, ``"respond"``, ``"jquery"``. The default is::
 | 
					  ``"html5shiv"``, ``"respond"``, ``"jquery"``. The default is::
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,8 @@ from importlib import import_module
 | 
				
			|||||||
CAS_LOGO_URL = static("cas_server/logo.png")
 | 
					CAS_LOGO_URL = static("cas_server/logo.png")
 | 
				
			||||||
#: URL to the favicon (shortcut icon) used by the default templates. Default is a key icon.
 | 
					#: URL to the favicon (shortcut icon) used by the default templates. Default is a key icon.
 | 
				
			||||||
CAS_FAVICON_URL = static("cas_server/favicon.ico")
 | 
					CAS_FAVICON_URL = static("cas_server/favicon.ico")
 | 
				
			||||||
 | 
					#: Show the powered by footer if set to ``True``
 | 
				
			||||||
 | 
					CAS_SHOW_POWERED = True
 | 
				
			||||||
#: URLs to css and javascript external components.
 | 
					#: URLs to css and javascript external components.
 | 
				
			||||||
CAS_COMPONENT_URLS = {
 | 
					CAS_COMPONENT_URLS = {
 | 
				
			||||||
    "bootstrap3_css": "//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css",
 | 
					    "bootstrap3_css": "//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,27 +0,0 @@
 | 
				
			|||||||
function alert_version(last_version){
 | 
					 | 
				
			||||||
    jQuery(function( $ ){
 | 
					 | 
				
			||||||
        $("#alert-version").click(function( e ){
 | 
					 | 
				
			||||||
            e.preventDefault();
 | 
					 | 
				
			||||||
            var date = new Date();
 | 
					 | 
				
			||||||
            date.setTime(date.getTime()+(10*365*24*60*60*1000));
 | 
					 | 
				
			||||||
            var expires = "; expires="+date.toGMTString();
 | 
					 | 
				
			||||||
            document.cookie = "cas-alert-version=" + last_version + expires + "; path=/";
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        var nameEQ="cas-alert-version=";
 | 
					 | 
				
			||||||
        var ca = document.cookie.split(";");
 | 
					 | 
				
			||||||
        var value;
 | 
					 | 
				
			||||||
        for(var i=0;i < ca.length;i++) {
 | 
					 | 
				
			||||||
            var c = ca[i];
 | 
					 | 
				
			||||||
            while(c.charAt(0) === " "){
 | 
					 | 
				
			||||||
                c = c.substring(1,c.length);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if(c.indexOf(nameEQ) === 0){
 | 
					 | 
				
			||||||
                value = c.substring(nameEQ.length,c.length);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if(value === last_version){
 | 
					 | 
				
			||||||
            $("#alert-version").parent().hide();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										40
									
								
								cas_server/static/cas_server/functions.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								cas_server/static/cas_server/functions.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					function createCookie(name, value, days) {
 | 
				
			||||||
 | 
					    if (days) {
 | 
				
			||||||
 | 
					        var date = new Date();
 | 
				
			||||||
 | 
					        date.setTime(date.getTime()+(days*24*60*60*1000));
 | 
				
			||||||
 | 
					        var expires = "; expires="+date.toGMTString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else var expires = "";
 | 
				
			||||||
 | 
					    document.cookie = name + "=" + value + expires + "; path=/";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function readCookie(name) {
 | 
				
			||||||
 | 
					    var nameEQ = name + "=";
 | 
				
			||||||
 | 
					    var ca = document.cookie.split(";");
 | 
				
			||||||
 | 
					    for(var i=0;i < ca.length;i++) {
 | 
				
			||||||
 | 
					        var c = ca[i];
 | 
				
			||||||
 | 
					        while (c.charAt(0)==" "){
 | 
				
			||||||
 | 
					            c = c.substring(1,c.length);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (c.indexOf(nameEQ) == 0){
 | 
				
			||||||
 | 
					            return c.substring(nameEQ.length,c.length);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function eraseCookie(name) {
 | 
				
			||||||
 | 
					    createCookie(name,"",-1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function alert_version(last_version){
 | 
				
			||||||
 | 
					    jQuery(function( $ ){
 | 
				
			||||||
 | 
					        $("#alert-version").click(function( e ){
 | 
				
			||||||
 | 
					            e.preventDefault();
 | 
				
			||||||
 | 
					            createCookie("cas-alert-version", last_version, 10*365)
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        if(readCookie("cas-alert-version") === last_version){
 | 
				
			||||||
 | 
					            $("#alert-version").parent().hide();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,9 @@
 | 
				
			|||||||
 | 
					html, body {
 | 
				
			||||||
 | 
					    height: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
body {
 | 
					body {
 | 
				
			||||||
  padding-top: 40px;
 | 
					  padding-top: 40px;
 | 
				
			||||||
  padding-bottom: 40px;
 | 
					  padding-bottom: 0px;
 | 
				
			||||||
  background-color: #eee;
 | 
					  background-color: #eee;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,6 +44,22 @@ body {
 | 
				
			|||||||
     width:110px;
 | 
					     width:110px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Wrapper for page content to push down footer */
 | 
				
			||||||
 | 
					#wrap {
 | 
				
			||||||
 | 
					    min-height: 100%;
 | 
				
			||||||
 | 
					    height: auto !important;
 | 
				
			||||||
 | 
					    height: 100%;
 | 
				
			||||||
 | 
					    /* Negative indent footer by it's height */
 | 
				
			||||||
 | 
					    margin: 0 auto -40px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#footer {
 | 
				
			||||||
 | 
					    height: 40px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#footer p {
 | 
				
			||||||
 | 
					  padding-top: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@media screen and (max-width: 680px) {
 | 
					@media screen and (max-width: 680px) {
 | 
				
			||||||
    #app-name {
 | 
					    #app-name {
 | 
				
			||||||
        margin: 0;
 | 
					        margin: 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,4 @@
 | 
				
			|||||||
{% load i18n %}
 | 
					{% load i18n %}{% load staticfiles %}<!DOCTYPE html>
 | 
				
			||||||
{% load staticfiles %}
 | 
					 | 
				
			||||||
<!DOCTYPE html>
 | 
					 | 
				
			||||||
<html{% if request.LANGUAGE_CODE %} lang="{{ request.LANGUAGE_CODE }}"{% endif %}>
 | 
					<html{% if request.LANGUAGE_CODE %} lang="{{ request.LANGUAGE_CODE }}"{% endif %}>
 | 
				
			||||||
    <head>
 | 
					    <head>
 | 
				
			||||||
        <meta charset="utf-8">
 | 
					        <meta charset="utf-8">
 | 
				
			||||||
@@ -18,12 +16,13 @@
 | 
				
			|||||||
        <link href="{% static "cas_server/styles.css" %}" rel="stylesheet">
 | 
					        <link href="{% static "cas_server/styles.css" %}" rel="stylesheet">
 | 
				
			||||||
    </head>
 | 
					    </head>
 | 
				
			||||||
    <body>
 | 
					    <body>
 | 
				
			||||||
 | 
					      <div id="wrap">
 | 
				
			||||||
        <div class="container">
 | 
					        <div class="container">
 | 
				
			||||||
            {% if auto_submit %}<noscript>{% endif %}
 | 
					            {% if auto_submit %}<noscript>{% endif %}
 | 
				
			||||||
            <div class="row">
 | 
					            <div class="row">
 | 
				
			||||||
              <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
 | 
					              <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
 | 
				
			||||||
                <h1 id="app-name">
 | 
					                <h1 id="app-name">
 | 
				
			||||||
                    {% if settings.CAS_LOGO_URL %}<img src="{{settings.CAS_LOGO_URL}}"></img> {% endif %}
 | 
					                    {% if settings.CAS_LOGO_URL %}<img src="{{settings.CAS_LOGO_URL}}" alt="cas-logo" />{% endif %}
 | 
				
			||||||
                    {% trans "Central Authentication Service" %}</h1>
 | 
					                    {% trans "Central Authentication Service" %}</h1>
 | 
				
			||||||
              </div>
 | 
					              </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
@@ -53,7 +52,7 @@
 | 
				
			|||||||
                        class="alert alert-danger"
 | 
					                        class="alert alert-danger"
 | 
				
			||||||
                    {% endif %}
 | 
					                    {% endif %}
 | 
				
			||||||
                {% endspaceless %}>
 | 
					                {% endspaceless %}>
 | 
				
			||||||
                    {{ message }}
 | 
					                    {{message|safe}}
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            {% endfor %}
 | 
					            {% endfor %}
 | 
				
			||||||
            {% if auto_submit %}</noscript>{% endif %}
 | 
					            {% if auto_submit %}</noscript>{% endif %}
 | 
				
			||||||
@@ -62,11 +61,25 @@
 | 
				
			|||||||
            <div class="col-lg-3 col-md-3 col-sm-2 col-xs-0"></div>
 | 
					            <div class="col-lg-3 col-md-3 col-sm-2 col-xs-0"></div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div> <!-- /container -->
 | 
					        </div> <!-- /container -->
 | 
				
			||||||
        <script src="{{settings.CAS_COMPONENT_URLS.jquery}}"></script>
 | 
					      </div>
 | 
				
			||||||
        <script src="{{settings.CAS_COMPONENT_URLS.bootstrap3_js}}"></script>
 | 
					      <div style="clear: both;"></div>
 | 
				
			||||||
        {% if settings.CAS_NEW_VERSION_HTML_WARNING and upgrade_available %}
 | 
					      {% if settings.CAS_SHOW_POWERED %}
 | 
				
			||||||
        <script src="{% static "cas_server/alert-version.js" %}"></script>
 | 
					      <div id="footer">
 | 
				
			||||||
        <script>alert_version("{{LAST_VERSION}}")</script>
 | 
					          <p><a class="text-muted" href="https://pypi.python.org/pypi/django-cas-server">django-cas-server powered</a></p>
 | 
				
			||||||
        {% endif %}
 | 
					      </div>
 | 
				
			||||||
 | 
					      {% endif %}
 | 
				
			||||||
 | 
					      <script src="{{settings.CAS_COMPONENT_URLS.jquery}}"></script>
 | 
				
			||||||
 | 
					      <script src="{{settings.CAS_COMPONENT_URLS.bootstrap3_js}}"></script>
 | 
				
			||||||
 | 
					      <script src="{% static "cas_server/functions.js" %}"></script>
 | 
				
			||||||
 | 
					      {% if settings.CAS_NEW_VERSION_HTML_WARNING and upgrade_available %}
 | 
				
			||||||
 | 
					      <script type="text/javascript">alert_version("{{LAST_VERSION}}")</script>
 | 
				
			||||||
 | 
					      {% endif %}
 | 
				
			||||||
 | 
					      {% block javascript %}{% endblock %}
 | 
				
			||||||
    </body>
 | 
					    </body>
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
 | 
					<!--
 | 
				
			||||||
 | 
					Powered by django-cas-server version {{VERSION}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Pypi: https://pypi.python.org/pypi/django-cas-server
 | 
				
			||||||
 | 
					github: https://github.com/nitmir/django-cas-server
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@
 | 
				
			|||||||
  {% endif %}"
 | 
					  {% endif %}"
 | 
				
			||||||
{% endspaceless %}>{% spaceless %}
 | 
					{% endspaceless %}>{% spaceless %}
 | 
				
			||||||
  {% if field|is_checkbox %}
 | 
					  {% if field|is_checkbox %}
 | 
				
			||||||
    <div class="checkbox"><label for="{{field.auto_id}}">{{field}}{{field.label}}</label>
 | 
					    <div class="checkbox"><label for="{{field.auto_id}}">{{field}}{{field.label}}</label></div>
 | 
				
			||||||
  {% else %}
 | 
					  {% else %}
 | 
				
			||||||
    <label class="control-label" for="{{field.auto_id}}">{{field.label}}</label>
 | 
					    <label class="control-label" for="{{field.auto_id}}">{{field.label}}</label>
 | 
				
			||||||
    {{field}}
 | 
					    {{field}}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,10 +14,17 @@
 | 
				
			|||||||
  <button class="btn btn-primary btn-block btn-lg" type="submit">{% trans "Login" %}</button>
 | 
					  <button class="btn btn-primary btn-block btn-lg" type="submit">{% trans "Login" %}</button>
 | 
				
			||||||
  {% if auto_submit %}</noscript>{% endif %}
 | 
					  {% if auto_submit %}</noscript>{% endif %}
 | 
				
			||||||
</form>
 | 
					</form>
 | 
				
			||||||
{% if auto_submit %}
 | 
					 | 
				
			||||||
<script type="text/javascript">
 | 
					 | 
				
			||||||
    document.getElementById('login_form').submit(); // SUBMIT FORM
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{% endif %}
 | 
					 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
 | 
					{% block javascript %}<script type="text/javascript">
 | 
				
			||||||
 | 
					jQuery(function( $ ){
 | 
				
			||||||
 | 
					    $("#id_warn").click(function(e){
 | 
				
			||||||
 | 
					        if($("#id_warn").is(':checked')){
 | 
				
			||||||
 | 
					            createCookie("warn", "on", 10 * 365);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            eraseCookie("warn");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					});{% if auto_submit %}
 | 
				
			||||||
 | 
					document.getElementById('login_form').submit(); // SUBMIT FORM{% endif %}
 | 
				
			||||||
 | 
					</script>{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user