Plugins can now declare separate css and js files.
@@ -269,7 +269,7 @@ Then, edit your /etc/dovecot/dovecot-sql.conf and modify following lines::
|
||||
|
||||
driver = mysql
|
||||
connect = host=<mysqld socket> dbname=<database> user=<user> password=<password>
|
||||
default_pass_scheme = PLAIN-MD5
|
||||
default_pass_scheme = CRYPT
|
||||
password_query = SELECT full_address AS user, password FROM admin_mailbox WHERE full_address = '%u'
|
||||
user_query = SELECT path AS home, uid, gid FROM admin_mailbox WHERE full_address = '%u'
|
||||
|
||||
@@ -279,7 +279,7 @@ Enable quotas with Dovecot
|
||||
Put the following lines inside your dovecot.conf file::
|
||||
|
||||
protocol imap {
|
||||
mail_plugins = quota quota_imap
|
||||
mail_plugins = quota imap_quota
|
||||
}
|
||||
|
||||
Before continuing, you need to know which quota backend must be user
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
thead tr {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
tr.table-tr-selected {
|
||||
background: #ffffcc;
|
||||
}
|
||||
@@ -1,14 +1,7 @@
|
||||
{% extends "common/email_listing.html" %}
|
||||
{% load i18n %}
|
||||
{% block css %}
|
||||
thead tr {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
tr.table-tr-selected {
|
||||
background: #ffffcc;
|
||||
}
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/quarantine.css" />
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
mysubmit = function(event, name) {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{% block html_head %}
|
||||
<script src="/static/js/form.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="/static/stylesheets/calendar.css" />
|
||||
href="/static/css/calendar.css" />
|
||||
<script type="text/javascript" src="/static/js/calendar.js"></script>
|
||||
<style type="text/css">
|
||||
#id_subject {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{% load i18n %}
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/calendar.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/calendar.css" />
|
||||
<style type="text/css">
|
||||
#selectors {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
#listing {
|
||||
position: absolute;
|
||||
left: 155px;
|
||||
right: 0px;
|
||||
top: 130px;
|
||||
height: expression(document.body.clientHeight - 35 + "px");
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
html > body #listing {
|
||||
position: fixed;
|
||||
bottom: 35px;
|
||||
}
|
||||
|
||||
#folders {
|
||||
float: left;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
/*thead tr {
|
||||
position: relative;
|
||||
top: expression(offsetParent.scrollTop); /*IE5+ only*/
|
||||
z-index: 1;
|
||||
padding: 0;
|
||||
}*/
|
||||
|
||||
/*table#emails > tbody {
|
||||
position: fixed;
|
||||
bottom: 35px;
|
||||
top: 155px;
|
||||
left: 155px;
|
||||
right: 0px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}*/
|
||||
|
||||
#emails th {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#emails tr {
|
||||
width: 100%;
|
||||
/*position: relative;*/
|
||||
border-bottom: 1px solid #C8D6E8;
|
||||
}
|
||||
|
||||
tr.selected {
|
||||
background: #ffffcc;
|
||||
}
|
||||
|
||||
.box h3 {
|
||||
font-size: small;
|
||||
margin: 2px 0px 2px 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.box ul {
|
||||
list-style: none;
|
||||
padding: 5px 5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.box li {
|
||||
clear: both;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.box li.selected {
|
||||
background: #ffffcc;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.box a:link, .box a:visited {
|
||||
background: transparent;
|
||||
color: black;
|
||||
/*font-weight: bold;*/
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.box a:hover {
|
||||
color: #6AB0C5;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.box img {
|
||||
float: left;
|
||||
margin-right: 2px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
th {
|
||||
/*-moz-box-shadow: 0px -15px 10px -10px rgba(0,0,0,0.6) inset;
|
||||
-webkit-box-shadow: 0px -15px 10px -10px rgba(0,0,0,0.6) inset;*/
|
||||
}
|
||||
|
||||
th.selected {
|
||||
background: #EEEEEE;
|
||||
}
|
||||
|
||||
.draggable {
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.dragging {
|
||||
background: #6AB0C5;
|
||||
}
|
||||
|
||||
ul.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul.visible {
|
||||
background: white;
|
||||
display: block;
|
||||
padding-bottom: 0;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
/* Compose mail page */
|
||||
#compose-container {
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div.row {
|
||||
margin: 3px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
div.row label {
|
||||
float: left;
|
||||
width: 120px;
|
||||
font-size: small;
|
||||
padding: 3px 0;
|
||||
}
|
||||
|
||||
textarea {
|
||||
border: 1px solid #cccccc;
|
||||
background-color: #eee;
|
||||
width: 80%;
|
||||
height: 30px;
|
||||
font-size: medium;
|
||||
}
|
||||
|
||||
textarea:hover {
|
||||
background-color: #ffffcc;
|
||||
}
|
||||
|
||||
#id_body {
|
||||
background: white;
|
||||
width: 98%;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 80%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#mailheader {
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
@@ -1,42 +1,4 @@
|
||||
{% load i18n %}
|
||||
<style type="text/css">
|
||||
#compose-container {
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
}
|
||||
div.row {
|
||||
margin: 3px;
|
||||
clear: both;
|
||||
}
|
||||
div.row label {
|
||||
float: left;
|
||||
width: 120px;
|
||||
font-size: small;
|
||||
padding: 3px 0;
|
||||
}
|
||||
textarea {
|
||||
border: 1px solid #cccccc;
|
||||
background-color: #eee;
|
||||
width: 80%;
|
||||
height: 30px;
|
||||
font-size: medium;
|
||||
}
|
||||
textarea:hover {
|
||||
background-color: #ffffcc;
|
||||
}
|
||||
#id_body {
|
||||
background: white;
|
||||
width: 98%;
|
||||
}
|
||||
input {
|
||||
width: 80%;
|
||||
padding: 0;
|
||||
}
|
||||
#mailheader {
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<form method="POST" action="{{ posturl }}" id="composemail">
|
||||
<div id="compose-container">
|
||||
<div id="mailheader">
|
||||
|
||||
@@ -1,124 +1,7 @@
|
||||
{% extends "common/email_listing.html" %}
|
||||
{% load i18n %}
|
||||
{% block css %}
|
||||
#listing {
|
||||
position: absolute;
|
||||
left: 155px;
|
||||
right: 0px;
|
||||
top: 130px;
|
||||
height: expression(document.body.clientHeight - 35 + "px");
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
html > body #listing {
|
||||
position: fixed;
|
||||
bottom: 35px;
|
||||
}
|
||||
|
||||
#folders {
|
||||
float: left;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
/*thead tr {
|
||||
position: relative;
|
||||
top: expression(offsetParent.scrollTop); /*IE5+ only*/
|
||||
z-index: 1;
|
||||
padding: 0;
|
||||
}*/
|
||||
|
||||
/*table#emails > tbody {
|
||||
position: fixed;
|
||||
bottom: 35px;
|
||||
top: 155px;
|
||||
left: 155px;
|
||||
right: 0px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}*/
|
||||
|
||||
#emails th {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#emails tr {
|
||||
width: 100%;
|
||||
/*position: relative;*/
|
||||
border-bottom: 1px solid #C8D6E8;
|
||||
}
|
||||
|
||||
tr.selected {
|
||||
background: #ffffcc;
|
||||
}
|
||||
|
||||
.box h3 {
|
||||
font-size: small;
|
||||
margin: 2px 0px 2px 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.box ul {
|
||||
list-style: none;
|
||||
padding: 5px 5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.box li {
|
||||
clear: both;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.box li.selected {
|
||||
background: #ffffcc;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.box a:link, .box a:visited {
|
||||
background: transparent;
|
||||
color: black;
|
||||
/*font-weight: bold;*/
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.box a:hover {
|
||||
color: #6AB0C5;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.box img {
|
||||
float: left;
|
||||
margin-right: 2px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
th {
|
||||
/*-moz-box-shadow: 0px -15px 10px -10px rgba(0,0,0,0.6) inset;
|
||||
-webkit-box-shadow: 0px -15px 10px -10px rgba(0,0,0,0.6) inset;*/
|
||||
}
|
||||
|
||||
th.selected {
|
||||
background: #EEEEEE;
|
||||
}
|
||||
|
||||
.draggable {
|
||||
cursor: move;
|
||||
}
|
||||
|
||||
.dragging {
|
||||
background: #6AB0C5;
|
||||
}
|
||||
|
||||
ul.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
ul.visible {
|
||||
background: white;
|
||||
display: block;
|
||||
padding-bottom: 0;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/webmail.css" />
|
||||
{% endblock %}
|
||||
{% block js %}
|
||||
wm_updatelisting = function(resp) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
import os, sys
|
||||
import glob
|
||||
from django.conf import settings
|
||||
|
||||
def usage():
|
||||
@@ -16,6 +17,18 @@ def update_extension(name, extdir, state):
|
||||
or "rm %s/%s" % (d, name)
|
||||
os.system(cmd)
|
||||
|
||||
staticpath = "%s/%s" % (extdir, "static")
|
||||
if os.path.isdir(staticpath):
|
||||
for d in ['css', 'js']:
|
||||
subpath = "%s/%s" % (staticpath, d)
|
||||
if not os.path.isdir(subpath):
|
||||
continue
|
||||
for f in glob.glob("%s/*.%s" % (subpath, d)):
|
||||
cmd = state == "on" \
|
||||
and "ln -s %s static/%s" % (f, d) \
|
||||
or "rm static/%s/%s" % (d, os.path.basename(f))
|
||||
os.system(cmd)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 3:
|
||||
usage()
|
||||
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 495 B After Width: | Height: | Size: 495 B |
|
Before Width: | Height: | Size: 550 B After Width: | Height: | Size: 550 B |
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -31,7 +31,7 @@ var InfoBox = new Class({
|
||||
});
|
||||
this.setProfile("gray");
|
||||
this.spinner = new Element("img", {
|
||||
"src" : "/static/stylesheets/spinner.gif"
|
||||
"src" : "/static/css/spinner.gif"
|
||||
});
|
||||
this.spinner.setStyle("float", "left");
|
||||
this.spinner.inject(this.box);
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
{% load i18n %}
|
||||
{% load libextras %}
|
||||
{% block html_head %}
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/searchbar.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/searchbar.css" />
|
||||
{% block css %}{% endblock %}
|
||||
<style type="text/css">
|
||||
#navbar {
|
||||
float: right;
|
||||
@@ -21,7 +22,6 @@
|
||||
margin-top: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
{% block css %}{% endblock %}
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head profile="http://www.w3.org/2005/10/profile">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/box.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/box.css" />
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head profile="http://www.w3.org/2005/10/profile">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="icon" type="image/png" href="/static/stylesheets/logo-icon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/SqueezeBox.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/box.css" />
|
||||
<link rel="icon" type="image/png" href="/static/css/logo-icon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/SqueezeBox.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/box.css" />
|
||||
<script src="/static/js/mootools.js" type="text/javascript"></script>
|
||||
<script src="/static/js/mootools-more.js" type="text/javascript"></script>
|
||||
<script src="/static/js/SqueezeBox.js" type="text/javascript"></script>
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
<head profile="http://www.w3.org/2005/10/profile">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>MailNG - {%block pagetitle %}{% endblock %}</title>
|
||||
<link rel="icon" type="image/png" href="/static/stylesheets/logo-icon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/default.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/SqueezeBox.css" />
|
||||
<link rel="icon" type="image/png" href="/static/css/logo-icon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/default.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/SqueezeBox.css" />
|
||||
<script src="/static/js/mootools.js" type="text/javascript"></script>
|
||||
<script src="/static/js/mootools-more.js" type="text/javascript"></script>
|
||||
<script src="/static/js/SqueezeBox.js" type="text/javascript"></script>
|
||||
@@ -71,7 +71,7 @@
|
||||
</div>
|
||||
<div id="page">
|
||||
<div id="header">
|
||||
<img class="logo" src="/static/stylesheets/mailng.png" />
|
||||
<img class="logo" src="/static/css/mailng.png" />
|
||||
<h1>{% block middletitle %}{% endblock %}</h1>
|
||||
<div id="menubar" class="menubar">
|
||||
{% block menu %}{% endblock %}
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
<head profile="http://www.w3.org/2005/10/profile">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>{% trans "Welcome to MailNG" %}</title>
|
||||
<link rel="icon" type="image/png" href="/static/stylesheets/logo-icon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/login.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/stylesheets/box.css" />
|
||||
<link rel="icon" type="image/png" href="/static/css/logo-icon.png" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/login.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/static/css/box.css" />
|
||||
<script src="/static/js/mootools.js" type="text/javascript"></script>
|
||||
<script src="/static/js/mootools-more.js" type="text/javascript"></script>
|
||||
{% url django.views.i18n.javascript_catalog as catalog_url %}
|
||||
@@ -18,7 +18,7 @@
|
||||
<body>
|
||||
<div id="loginbox">
|
||||
<div id="logo">
|
||||
<img src="/static/stylesheets/mailng.png" />
|
||||
<img src="/static/css/mailng.png" />
|
||||
{% if error %}
|
||||
<div class="error"><p>{{ error }}</p></div>
|
||||
{% endif %}
|
||||
|
||||