Doc et autres
authormarc.nachin <you@example.commarc.nachin@auf.org>
Thu, 21 Feb 2013 12:52:39 +0000 (13:52 +0100)
committermarc.nachin <you@example.commarc.nachin@auf.org>
Thu, 21 Feb 2013 12:52:39 +0000 (13:52 +0100)
27 files changed:
project/article/admin.py
project/article/context_processors.py
project/article/models.py
project/gestion_de_documents/__init__.py [new file with mode: 0755]
project/gestion_de_documents/admin.py [new file with mode: 0644]
project/gestion_de_documents/forms.py [new file with mode: 0644]
project/gestion_de_documents/models.py [new file with mode: 0755]
project/gestion_de_documents/tests.py [new file with mode: 0755]
project/gestion_de_documents/views.py [new file with mode: 0755]
project/newsletter/admin.py
project/newsletter/context_processors.py [new file with mode: 0644]
project/newsletter/models.py
project/newsletter/templates/newsletter/confirmation.html
project/newsletter/views.py
project/settings.py
project/static/css/style.css
project/static/css/style_print.css [new file with mode: 0644]
project/static/img/word.png [new file with mode: 0644]
project/static/scripts/site.js
project/templates/actualite_detail.html
project/templates/actualites.html
project/templates/base.html
project/templates/documents.html [new file with mode: 0644]
project/templates/documents_detail.html [new file with mode: 0644]
project/templates/newsletter/lettre.html
project/templates/page.html
project/urls.py

index 7321e0d..5d3ac24 100644 (file)
@@ -25,29 +25,6 @@ class ActualiteAdmin(admin.ModelAdmin):
     list_display = ('status', 'show_image2', 'titre', 'date_pub')
     list_display_links = ('status', 'titre')
     search_fields = ['titre']
-    
-class PublicationAdmin(admin.ModelAdmin):
-    prepopulated_fields = {'slug': ['titre']}
-    fieldsets = [
-        ('Article', {'fields': ['status', 'date_pub', 'titre', 'slug', 'image', 'texte'], 'classes': ['wide']}),
-    ]
-    
-    formfield_overrides = {
-        models.TextField: {'widget': TinyMCE(attrs={'cols': 60, 'rows': 24}, )},
-    }
-    
-    def show_image2(self, obj):
-        if obj.image:
-            return "<img src='../../../media/%s' style='height:40px;'>" % obj.image
-        else:
-            return "<img src='../../../static/img/logoActu.png' style='height:40px;'>"
-    show_image2.allow_tags = True #permet de sortir du html#
-    show_image2.short_description = 'Image'
-
-    list_display = ('status', 'show_image2', 'titre', 'date_pub')
-    list_display_links = ('status', 'titre')
-    search_fields = ['titre']
 
 
-admin.site.register(Actualite, ActualiteAdmin)
-admin.site.register(Publication, PublicationAdmin)
\ No newline at end of file
+admin.site.register(Actualite, ActualiteAdmin)
\ No newline at end of file
index 413e9b0..80d9f6d 100644 (file)
@@ -4,7 +4,7 @@ import datetime
 
 
 def list_actu(request):
-    list = Actualite.objects.filter(status=3)
+    list = Actualite.objects.filter(status=3)[:6]
     return {
         'actu_list' : list
     }
\ No newline at end of file
index ed1f93b..7ddec2e 100755 (executable)
@@ -16,22 +16,4 @@ class Actualite(models.Model):
         return self.titre  
 
     def get_absolute_url(self):
-        return "/actualites/%s/" %self.slug
-        
-class Publication(models.Model):
-    titre = models.CharField(max_length=200)
-    slug = models.SlugField(unique=True)
-    texte = models.TextField()
-    image = models.ImageField(null=True, blank=True, upload_to='actualite')
-    date_pub = models.DateField()
-    date_mod = models.DateTimeField('date de derniere modification', auto_now_add=True)
-    status = models.CharField(max_length=1, null=False, default='3', blank=False, choices=(('1', 'En cours de redaction'), ('2', 'Propose a la publication'), ('3', 'Publie en Ligne'), ('4', 'A supprimer')))
-    
-    class Meta:
-        ordering = ('-date_pub',)
-    
-    def __unicode__(self):
-        return self.titre  
-
-    def get_absolute_url(self):
-        return "/publications/%s/" %self.slug
\ No newline at end of file
+        return "/actualites/%s/" %self.slug
\ No newline at end of file
diff --git a/project/gestion_de_documents/__init__.py b/project/gestion_de_documents/__init__.py
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/project/gestion_de_documents/admin.py b/project/gestion_de_documents/admin.py
new file mode 100644 (file)
index 0000000..e222fd5
--- /dev/null
@@ -0,0 +1,42 @@
+# coding: utf8
+from project.gestion_de_documents.models import *
+from django.db import models
+from django.contrib import admin
+from tinymce.widgets import TinyMCE
+
+class DocumentAdmin(admin.ModelAdmin):
+    prepopulated_fields = {'slug': ['titre']}
+    fieldsets = [
+        ('Fichier', {'fields': ['fichier']}),
+        ('Informations', {'fields': ['status', 'date_pub', 'titre', 'slug', 'type', 'auteur','discipline', 'taille'], 'classes': ['wide']}),
+        ('Description', {'fields': ['image', 'description']}),
+    ]
+    
+    #formfield_overrides = {
+        #models.TextField: {'widget': TinyMCE(attrs={'cols': 60, 'rows': 24}, )},
+    #}
+    
+    def show_image2(self, obj):
+        if obj.image:
+            return "<img src='../../../media/%s' style='height:40px;'>" % obj.image
+        else:
+            return "<img src='../../../static/img/logoActu.png' style='height:40px;'>"
+    show_image2.allow_tags = True #permet de sortir du html#
+    show_image2.short_description = 'Image'
+
+    list_display = ('titre', 'status', 'show_image2', 'date_pub')
+    list_display_links = ('status', 'titre')
+    search_fields = ['titre']
+
+
+class DisciplineAdmin(admin.ModelAdmin):
+    fieldsets = [
+        ('Discipline', {'fields': ['titre']}),
+    ]
+    
+    list_display = ('titre',)
+    search_fields = ['titre']
+
+
+admin.site.register(Document, DocumentAdmin)
+admin.site.register(Discipline, DisciplineAdmin)
\ No newline at end of file
diff --git a/project/gestion_de_documents/forms.py b/project/gestion_de_documents/forms.py
new file mode 100644 (file)
index 0000000..df7e411
--- /dev/null
@@ -0,0 +1,17 @@
+# -*- encoding: utf-8 -*-
+from django import forms
+from django import db
+from django.db.models import Q
+from django.db import models
+from django.contrib.admin import widgets
+from django.utils.safestring import mark_safe
+import settings
+from project.gestion_de_documents.models import *
+    
+class DocumentSearchForm(forms.Form): 
+    
+    titre = forms.CharField(max_length=255, required=False, label="Par titre")
+    auteur = forms.CharField(max_length=255, required=False, label="Par auteur")
+    discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(), required=False)
+    type = forms.ChoiceField(label="Par type de fichier", required=False, help_text="", choices=(('1', 'Pdf'), ('2', 'Excel'), ('3', 'Word'), ('4', 'Odt')))
+    #date_pub = forms.DateField(widget = forms.DateTimeInput(attrs={'class': 'datepicker'}), required=False, label="Par date de publication")
\ No newline at end of file
diff --git a/project/gestion_de_documents/models.py b/project/gestion_de_documents/models.py
new file mode 100755 (executable)
index 0000000..5633b9c
--- /dev/null
@@ -0,0 +1,31 @@
+from django.db import models
+
+
+class Discipline(models.Model):
+    titre = models.CharField(max_length=200)
+    
+    def __unicode__(self):
+        return self.titre
+
+class Document(models.Model):
+    fichier = models.FileField(upload_to='document')
+    titre = models.CharField(max_length=200)
+    auteur = models.CharField(null=True, blank=True, max_length=200)
+    taille = models.BigIntegerField(blank=True, null=True, verbose_name = 'Taille en ko du document')
+    slug = models.SlugField(unique=True)
+    description = models.TextField(blank=True, null=True,)
+    image = models.ImageField(null=True, blank=True, upload_to='actualite')
+    date_pub = models.DateField()
+    date_mod = models.DateTimeField('date de derniere modification', auto_now_add=True)
+    status = models.CharField(max_length=1, null=False, default='3', blank=False, choices=(('1', 'En cours de redaction'), ('2', 'Propose a la publication'), ('3', 'Publie en Ligne'), ('4', 'A supprimer')))
+    type = models.CharField(max_length=1, null=False, default='1', blank=False, choices=(('1', 'PDF'), ('2', 'Word'), ('3', 'Excel'), ('4', 'Odt')))
+    discipline = models.ForeignKey(Discipline, verbose_name='Discipline du document', blank=True, null=True)
+    
+    class Meta:
+        ordering = ('-date_pub',)
+    
+    def __unicode__(self):
+        return self.titre  
+
+    def get_absolute_url(self):
+        return "/documents/%s/" %self.slug
\ No newline at end of file
diff --git a/project/gestion_de_documents/tests.py b/project/gestion_de_documents/tests.py
new file mode 100755 (executable)
index 0000000..501deb7
--- /dev/null
@@ -0,0 +1,16 @@
+"""
+This file demonstrates writing tests using the unittest module. These will pass
+when you run "manage.py test".
+
+Replace this with more appropriate tests for your application.
+"""
+
+from django.test import TestCase
+
+
+class SimpleTest(TestCase):
+    def test_basic_addition(self):
+        """
+        Tests that 1 + 1 always equals 2.
+        """
+        self.assertEqual(1 + 1, 2)
diff --git a/project/gestion_de_documents/views.py b/project/gestion_de_documents/views.py
new file mode 100755 (executable)
index 0000000..1cd3531
--- /dev/null
@@ -0,0 +1,42 @@
+# Create your views here.
+from project.gestion_de_documents.models import *
+from django.shortcuts import render_to_response, get_object_or_404, get_list_or_404
+from django.template import Context, RequestContext
+from django.shortcuts import redirect
+from django.http import HttpResponse
+from django.core.paginator import Paginator
+from forms import *
+
+def documents(request):
+    document = Document.objects
+    if request.method == "POST":
+        form = DocumentSearchForm(request.POST)
+        if form.is_valid():
+            #PAR TITRE
+            titre = form.cleaned_data['titre']
+            if titre:
+                document = document.filter(titre__icontains=titre)
+            #PAR AUTEUR
+            auteur = form.cleaned_data['auteur']
+            if auteur:
+                document = document.filter(auteur__icontains=auteur)
+            #PAR TYPE
+            type = form.cleaned_data['type']
+            if type:
+                document = document.filter(type=type)
+            #PAR DISCIPLINE
+            discipline = form.cleaned_data['discipline']
+            if discipline:
+                document = document.filter(discipline=discipline)
+            #PAR DATE
+            #date_pub = form.cleaned_data['date_pub']
+            #if date_pub:
+                #document = document.filter(date_pub=date_pub)
+    else:
+        form = DocumentSearchForm()
+    item_list = document.filter(status=3).order_by('-date_pub')
+    return render_to_response('documents.html', {'document_list': item_list, 'DocumentSearchForm': form, 'page_title': 'Documents'}, context_instance = RequestContext(request))
+
+def documents_detail(request, slug):
+    p = get_object_or_404(Document, slug=slug)
+    return render_to_response('documents_detail.html', {'document': p,'page_slug': 'documents/', 'page_title': 'Documents'}, context_instance = RequestContext(request))
index 3dc70c7..6252aa9 100644 (file)
@@ -36,8 +36,8 @@ class NewsletterAdmin(admin.ModelAdmin):
     
     fieldsets = [
         ('Informations', {'fields': ['status','numero','style','date']}),
-        ('Choix des articles', {'fields': ['actualite', 'publication'], 'classes': ['wide']}),
-        ('Liens de la colonne de gauche', {'fields': ['lien', 'lien2', 'lienFace'], 'classes': ['wide']}),
+        ('Choix des articles', {'fields': ['actualite', 'document'], 'classes': ['wide']}),
+        ('Liens de la colonne de gauche', {'fields': ['lien', 'lien2'], 'classes': ['wide']}),
         ('Information du footer', {'fields': ['footer', 'abonne'], 'classes': ['wide']}),
     ]
         
diff --git a/project/newsletter/context_processors.py b/project/newsletter/context_processors.py
new file mode 100644 (file)
index 0000000..37f1ef3
--- /dev/null
@@ -0,0 +1,8 @@
+from newsletter.models import AbonneForm
+
+
+def abonnement(request):
+    abonne_form = AbonneForm()
+    return {
+         'abonne_form': abonne_form
+    }
\ No newline at end of file
index 566f3ab..9946848 100644 (file)
@@ -1,6 +1,7 @@
 # coding: utf8
 from django.db import models
 from project.article.models import *
+from project.gestion_de_documents.models import *
 from django import forms
 
 # Create your models here.
@@ -10,11 +11,11 @@ class Newsletter(models.Model):
     numero = models.IntegerField(max_length=11,default=0)
     date = models.DateField()
     style = models.CharField(max_length=1, default='1', null=False, blank=False, choices=(('1', 'Blanc'), ('2', 'Vert')))
-    publication = models.ManyToManyField(Publication, related_name='+', verbose_name='Publication', blank=True, null=True)
     actualite = models.ManyToManyField(Actualite, verbose_name='Actualités')
+    document = models.ManyToManyField(Document, verbose_name='Nouveaux documents')
     lien = models.EmailField(max_length=200, default='webmestre@ifgu.org')
     lien2 = models.URLField(max_length=250, default='http://www.ifgu.org')
-    lienFace = models.URLField(max_length=250, default='http://www.facebook.com/aufinternational')
+    #lienFace = models.URLField(max_length=250, default='http://www.facebook.com/aufinternational')
     abonne = models.IntegerField(max_length=11,default='1000')
     footer = models.TextField(default='Lettre electronique est une publication realisee par l\'Institut de la Francophonie pour la Gouvernance universitaire.')
     
index 1bf6f93..acd5bf0 100644 (file)
@@ -11,7 +11,7 @@
     <tr style="background:#2E3A45 !important; font-weight: bold;"><td style="color: #fff !important;">Numéro</td><td style="color: #fff !important;">Date</td><td style="color: #fff !important;">Visualiser</td></tr>
     {% if list_news %}
         {% for news in list_news %}
-            <tr><td>Lettre éléctronqiue Numéro {{news.numero}}</td><td>{{news.date}}</td><td align="center"><a href="/lettre-information/{{news.id}}" target="_blank"><img src="{{STATIC_URL}}img/fichepico.gif" style="margin:0; padding:0; border:0; background:none" /></a></td></tr>
+            <tr><td>Lettre éléctronqiue Numéro {{news.numero}}</td><td>{{news.date|date:"d M Y"}}</td><td align="center"><a href="/lettre-information/{{news.id}}" target="_blank"><img src="{{STATIC_URL}}img/fichepico.gif" style="margin:0; padding:0; border:0; background:none" /></a></td></tr>
         {% endfor %}
     {% endif %}
     </table>
index 4f761b8..99dbdf5 100644 (file)
@@ -17,9 +17,9 @@ from django.core.mail import send_mail
 
 def newsletter(request, id):
     newsletter = Newsletter.objects.get(id=id)
-    list_publi = newsletter.publication.all()[:6]
     list_actualite = newsletter.actualite.all()[:6]
-    return render_to_response('newsletter/lettre.html', {'newsletter': newsletter, 'list_actualite': list_actualite, 'list_publi': list_publi}, context_instance = RequestContext(request))
+    list_docu = newsletter.document.all()[:6]
+    return render_to_response('newsletter/lettre.html', {'newsletter': newsletter, 'list_actualite': list_actualite, 'list_docu': list_docu}, context_instance = RequestContext(request))
 
     
 def newsletter_inscription(request):
@@ -28,9 +28,9 @@ def newsletter_inscription(request):
         if form.is_valid():
             a = Abonne(adresse = form.cleaned_data['adresse'])
             a.save()
-            text_content = 'Votre abonnement à la lettre éléctronique de l\'AUF a été validé.'
-            html_content = '<p>Bonjour,</p><p>Votre inscription à la lettre éléctronique de l\'AUF a bien été validée. Vous recevrez prochainement les dernières informations de l\'AUF dans votre boite de courriers éléctroniques.</p><p>Merci</p>' 
-            msg = EmailMultiAlternatives('Inscription à la lettre éléctronique de l\'AUF', text_content, 'ne-pas-repondre@auf.org', [form.cleaned_data['adresse']])
+            text_content = 'Votre abonnement à la lettre éléctronique de l\'IFGU a été validé.'
+            html_content = '<p>Bonjour,</p><p>Votre inscription à la lettre éléctronique de l\'IFGU a bien été validée. Vous recevrez prochainement les dernières informations de l\'IFGU dans votre boite de courriers éléctroniques.</p><p>Merci</p>' 
+            msg = EmailMultiAlternatives('Inscription à la lettre éléctronique de l\'IFGU', text_content, 'ne-pas-repondre@ifgu.org', [form.cleaned_data['adresse']])
             msg.attach_alternative(html_content, "text/html")
             msg.send()
             return HttpResponseRedirect('/lettre-information-confirmation/')                                                                                                                                            
@@ -53,7 +53,7 @@ def newsletter_desincription_confirme(request):
         form = DesinscireForm(request.POST)
         if form.is_valid():
             a = Abonne.objects.get(adresse=form.cleaned_data['adresse']).delete()
-            send_mail('Désinscription à la lettre éléctronique de l\'AUF', 'Votre abonnement à la lettre éléctronique de l\'AUF a été résilié.', 'webmestre@auf.org',[form.cleaned_data['adresse']])
+            send_mail('Désinscription à la lettre éléctronique de l\'IFGU', 'Votre abonnement à la lettre éléctronique de l\'IFGU a été résilié.', 'webmestre@ifgu.org',[form.cleaned_data['adresse']])
             return HttpResponseRedirect('/lettre-information-desconfirmation/')
     else:
         form = DesinscireForm()
index 74f1844..21f0647 100644 (file)
@@ -58,6 +58,7 @@ INSTALLED_APPS = (
     'south',
     'diaporama',
     'article',
+    'gestion_de_documents',
     'newsletter',
 
     # django-cms
@@ -93,6 +94,7 @@ TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_TEMPLATE_CONTEXT_PROCESSORS + (
     'sekizai.context_processors.sekizai',
     'diaporama.context_processors.list_slider',
     'article.context_processors.list_actu',
+    'newsletter.context_processors.abonnement',
 )
 
 
index b828fcd..9b579f7 100644 (file)
@@ -19,6 +19,10 @@ time, mark, audio, video {
        vertical-align: baseline;
 }
 
+strong{
+       font-weight: bold;
+}
+
 /* HTML5 display-role reset for older browsers */
 article, aside, details, figcaption, figure, 
 footer, header, hgroup, menu, nav, section {
@@ -346,6 +350,10 @@ content{
        filter: dropshadow(color=#ffffff, offx=1, offy=1);
 }
 
+#gauche p a{
+       color: #810025;
+}
+
 #gauche ul{
        padding: 6px 0px;
        display: block;
@@ -358,7 +366,7 @@ content{
        background: url(../img/puce.png) left center no-repeat;
 }
 
-#gauche .text img{
+#gauche .text p img{
        border: 1px solid #DFDFDF;
     display: block;
     height: auto;
@@ -370,7 +378,7 @@ content{
        border-radius: 4px; 
        -webkit-box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255);
        box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255); 
-       margin-bottom: 24px;
+       margin: 0px 12px 22px 0px;
 }
 
 #gauche .centre{
@@ -379,9 +387,15 @@ content{
 
 #gauche .gauche{
        float: left;
-       margin: 6px 14px 10px 0px;
+       margin: 6px 14px 8px 0px;
        height: auto;
-       max-width: 376px;
+       max-width: 290px;
+       padding: 8px;
+       background-color: #f4f4f4;
+       border: 1px solid #cacaca;
+       -webkit-border-radius: 4px;
+       border-radius: 4px; 
+       -webkit-box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255);
 }
 
 #gauche .droite{
@@ -405,6 +419,79 @@ content{
        filter: dropshadow(color=#ffffff, offx=1, offy=1);
 }
 
+#gauche .boiteContent2{
+       width: 578px;
+       min-height: 20px;
+       padding: 20px;
+       background-color: #f4f4f4;
+       border: 1px solid #cacaca;
+       -webkit-border-radius: 4px;
+       border-radius: 4px; 
+       -webkit-box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255);
+       box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255); 
+       margin-bottom: 18px;
+       text-shadow: 1px 1px 0px #ffffff;
+       filter: dropshadow(color=#ffffff, offx=1, offy=1);
+}
+
+#gauche .boiteContent2 h3 {
+    color: #810025;
+    font-size: 15px;
+    font-weight: bold;
+    padding: 0 0 12px;
+    text-align: center;
+}
+
+#gauche .boiteContent2 p label {
+    display: inline-block;
+    font-weight: bold;
+    margin-right: 10px;
+    width: 250px;
+}
+
+#gauche .boiteContent2 select {
+    background-color: #FAFAFA;
+    border: 1px solid #CCCCCC;
+    color: #616161;
+    height: 25px;
+    line-height: 25px;
+    padding: 3px;
+    width: 250px;
+}
+
+#gauche .boiteContent2 input[type="text"] {
+    background-color: #FAFAFA;
+    border: 1px solid #CCCCCC;
+    color: #616161;
+    height: 15px;
+    line-height: 15px;
+    padding: 3px;
+    width: 242px;
+}
+
+#gauche .boiteContent2 input[type="file"] {
+    margin: 12px 16px;
+}
+
+#gauche .boiteContent2 input[type="submit"] {
+    background-color: #F9F9F9;
+    border: 1px solid #CCCCCC;
+    color: #555555;
+    cursor: pointer;
+    font-weight: bold;
+    margin: 6px 0 0 263px;
+    padding: 5px;
+}
+
+#gauche .boiteContent2 input[type="reset"] {
+    background-color: #F9F9F9;
+    border: 1px solid #CCCCCC;
+    cursor: pointer;
+    font-weight: bold;
+    margin: 6px 0 0 15px;
+    padding: 5px;
+}
+
 .info{
        width: 586px;
        overflow: hidden;
@@ -421,6 +508,35 @@ content{
        filter: dropshadow(color=#ffffff, offx=1, offy=1);
 }
 
+.info2{
+       width: 400px;
+       color: #2C3337;
+       display: block;
+       overflow: hidden;
+       min-height: 18px;
+       line-height: 18px;
+       padding: 10px 16px 8px 8px;
+       background-color: #f4f4f4;
+       border: 1px solid #cacaca;
+       -webkit-border-radius: 4px;
+       border-radius: 4px; 
+       -webkit-box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255);
+       box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255); 
+       margin-bottom: 24px;
+       text-shadow: 1px 1px 0px #ffffff;
+       filter: dropshadow(color=#ffffff, offx=1, offy=1);
+}
+
+.info2:hover{
+       background-color: #eaeaea;
+       color: #810025;
+}
+
+.info2 img{
+       float: left;
+       margin-right: 6px;
+}
+
 .info .date{
        float: left;
        line-height: 18px;
@@ -436,11 +552,7 @@ content{
 .info .outils img{
        border-right: 1px solid #ccc;
        padding: 0px 6px;
-}
-
-.info .outils img:last-child{
-       border-right: none;
-       padding: 0px 0px 0px 6px;
+       cursor: pointer;
 }
 
 #gauche .actu{
@@ -553,6 +665,10 @@ content{
        filter: dropshadow(color=#ffffff, offx=1, offy=1);
 }
 
+#slides .intro p a{
+       color: #2C3337;
+}
+
 .diapo{
        width: 578px;
        height: 298px;
@@ -784,6 +900,25 @@ sidebar{
        cursor: pointer; 
 }
 
+#sitemap{
+       background-color: #F4F4F4;
+    border: 1px solid #CACACA;
+    border-radius: 4px 4px 4px 4px;
+    box-shadow: 0 0 0 1px #FFFFFF inset;
+    margin-bottom: 34px;
+    min-height: 20px;
+    padding: 26px 26px 6px 26px !important;
+    text-shadow: 1px 1px 0 #FFFFFF;
+}
+
+#sitemap li{
+       background: url("../img/puce.png") no-repeat scroll left top transparent !important;
+}
+
+#sitemap li a{
+       color: #2C3337;
+}
+
 /*FOOTER*/
 footer{
        width: 100%;
diff --git a/project/static/css/style_print.css b/project/static/css/style_print.css
new file mode 100644 (file)
index 0000000..5cb95b7
--- /dev/null
@@ -0,0 +1,195 @@
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, figcaption, figure, 
+footer, header, hgroup, menu, nav, section, summary,
+time, mark, audio, video {
+       margin: 0;
+       padding: 0;
+       border: 0;
+       outline: 0;
+       font-size: 100%;
+       font: inherit;
+       vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure, 
+footer, header, hgroup, menu, nav, section {
+       display: block;
+}
+body {
+       line-height: 1;
+       font-family: Arial, Helvetica, sans-serif;
+       font-size: 1.2em;
+       color: #2c3337;
+}
+ol, ul {
+       list-style: none;
+}
+blockquote, q {
+       quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+       content: '';
+       content: none;
+}
+
+a{
+       text-decoration: none;
+}
+
+/*:focus {
+       outline: ?????;
+} */
+
+ins {
+       text-decoration: none;
+}
+del {
+       text-decoration: line-through;
+}
+
+table {
+       border-collapse: collapse;
+       border-spacing: 0;
+}
+
+/*TITRES*/
+H1{
+       font-size: 1.65em;
+       margin-bottom: 28px;
+       font-weight: bold;
+       line-height: 32px;
+}
+
+H2{
+       font-size: 1.35em;
+       margin-bottom: 22px;
+       color: #810025;
+}
+
+H3{
+       font-size: 1.15em;
+       margin-bottom: 16px;
+}
+
+/*table*/
+table {
+    background-color: #F4F4F4;
+    border: 1px solid #CACACA;
+    border-collapse: collapse;
+    margin: 6px 0 30px;
+    width: 100%;
+}
+table .col {
+    background-color: #EEEEEE;
+}
+table td {
+    border: 1px solid #CACACA;
+    padding: 14px 18px;
+}
+
+/*HEADER*/
+header{
+       display: none;
+}
+
+/*MAIN*/
+#main{
+       margin: 34px 0px;
+}
+
+/*content*/
+content{
+}
+
+#gauche p{
+       margin-bottom: 34px;
+       line-height: 29px;
+       text-align: justify;
+}
+
+#gauche p a{
+       color: #810025;
+}
+
+#gauche ul{
+       padding: 6px 0px;
+       display: block;
+}
+
+#gauche ul li{
+       margin-bottom: 20px;
+       line-height: 20px;
+       padding: 0px 0px 0px 22px;
+       background: url(../img/puce.png) left center no-repeat;
+}
+
+#gauche .text img{
+       border: 1px solid #DFDFDF;
+    display: block;
+    height: auto;
+    max-width: 600px;
+    padding: 10px;
+       background-color: #f4f4f4;
+       border: 1px solid #cacaca;
+       -webkit-border-radius: 4px;
+       border-radius: 4px; 
+       -webkit-box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255);
+       box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255); 
+       margin-bottom: 24px;
+}
+
+#gauche .centre{
+       margin: 0px auto 24px auto !important;
+}
+
+#gauche .gauche{
+       float: left;
+       margin: 6px 14px 10px 0px;
+       height: auto;
+       max-width: 376px;
+}
+
+#gauche .droite{
+       float: right;
+       margin: 0px 0px 10px 10px;
+}
+
+/*actu*/
+#gauche .boiteContent{
+       width: 578px;
+       min-height: 20px;
+       padding: 2px 20px 0px 20px;
+       background-color: #f4f4f4;
+       border: 1px solid #cacaca;
+       -webkit-border-radius: 4px;
+       border-radius: 4px; 
+       -webkit-box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255);
+       box-shadow: inset 0px 0px 0px 1px rgb(255, 255, 255); 
+       margin-bottom: 18px;
+       text-shadow: 1px 1px 0px #ffffff;
+       filter: dropshadow(color=#ffffff, offx=1, offy=1);
+}
+
+.info{
+       display: none;
+}
+
+/*SIDEBAR*/
+sidebar{
+       display: none;
+}
+
+/*FOOTER*/
+footer{
+       display: none;
+}
\ No newline at end of file
diff --git a/project/static/img/word.png b/project/static/img/word.png
new file mode 100644 (file)
index 0000000..64ad7f3
Binary files /dev/null and b/project/static/img/word.png differ
index edc49c3..3f2ce6e 100644 (file)
@@ -1,7 +1,12 @@
 // JavaScript de moi
 
 $(document).ready(function(){
-                                                                                  
+                                                  
+$("#id_adresse").addClass("searchbox2");
+$("#id_adresse").val("Votre adresse éléctronique...");
+$("input[type=text]").focus(function(){
+       $(this).val("");
+});
 
 /*SLIDER*/
 $('#slides').bxSlider({
@@ -12,4 +17,21 @@ $('#slides').bxSlider({
        auto: true
 });
 
+/*A+*/
+$('#more').click(function(){
+       var currentFontSize = $('.text p').css('font-size');
+    var currentFontSizeNum = parseFloat(currentFontSize, 10);
+    var newFontSize = currentFontSizeNum*1.1;
+       $(".text").css('font-size', newFontSize);
+});
+
+/*A-*/
+$('#less').click(function(){
+       var currentFontSize = $('.text p').css('font-size');
+    var currentFontSizeNum = parseFloat(currentFontSize, 10);
+    var newFontSize = currentFontSizeNum*0.9;
+       $(".text").css('font-size', newFontSize);
+});
+
+
 });
\ No newline at end of file
index e41217f..e49faf8 100755 (executable)
@@ -8,8 +8,8 @@
     <h1>{{ item.titre }}</h1>
     
        <div class="info">
-               <div class="date">Édité le {{ item.date_pub }}</div>
-            <div class="outils"><img src="{{ STATIC_URL }}img/more.png" /><img src="{{ STATIC_URL }}img/less.png" /><img src="{{ STATIC_URL }}img/print.png" /><img src="{{ STATIC_URL }}img/mail.png" /><img src="{{ STATIC_URL }}img/pdf.png" /></div>
+               <div class="date">Publié le {{ item.date_pub|date:"d M Y" }}</div>
+            <div class="outils"><img id="more" src="{{ STATIC_URL }}img/more.png"/><img id="less" src="{{ STATIC_URL }}img/less.png" /><img src="{{ STATIC_URL }}img/print.png" onclick="JavaScript:window.print();" /><a href="mailto:ENTER-ADDRESS" onclick="e_friend(); return false;" title="comments"><img src="{{ STATIC_URL }}img/mail.png" /></a><script>var pfHeaderImgUrl = '';var pfHeaderTagline = '';var pfdisableClickToDel = 0;var pfDisablePDF = 0;var pfDisableEmail = 1;var pfDisablePrint = 1;var pfCustomCSS = '';var pfBtVersion='1';(function(){var js, pf;pf = document.createElement('script');pf.type = 'text/javascript';if('https:' == document.location.protocol){js='https://pf-cdn.printfriendly.com/ssl/main.js'}else{js='http://cdn.printfriendly.com/printfriendly.js'}pf.src=js;document.getElementsByTagName('head')[0].appendChild(pf)})();</script><a href="http://www.printfriendly.com" style="color:#6D9F00;text-decoration:none;" class="printfriendly" onclick="window.print();return false;"><img src="{{ STATIC_URL }}img/pdf.png" style="border-right: none;padding: 0px 0px 0px 6px;"/></a></div>
         </div>
     
        {% if item.image %}
index f0c65ed..7914b46 100755 (executable)
@@ -21,7 +21,7 @@
                                     <div class="actuTxt">
                                        <h1><a href="{{ item.get_absolute_url }}">{{ item.titre }}</a></h1>
                                         <p>{{ item.texte|striptags|truncatewords_html:80 }}</p>
-                                        <span><a href="{{ item.get_absolute_url }}">Lire la suite - Publié le {{ item.date_pub }}</a></span>
+                                        <span><a href="{{ item.get_absolute_url }}">Lire la suite - Publié le {{ item.date_pub|date:"d M Y" }}</a></span>
                                                        </div>
                                 </div>  
                   </div>
index 88e8835..e91c7f0 100644 (file)
@@ -9,7 +9,7 @@
   <meta charset="utf-8" />
   <meta name="description" content="" />
   <meta name="author" content="" />
-  <title></title>
+  <title>IFGU - {{page_title}}{% page_attribute page_title %}</title>
   <link href="{{ STATIC_URL }}css/style.css?v=1" rel="stylesheet" type="text/css" media="screen" />
   <link href="{{ STATIC_URL }}css/style_print.css?v=1" rel="stylesheet" type="text/css" media="print" />
   {% render_block "css" %}
   <!--<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.js"></script>-->
   <script type="text/javascript" src="{{ STATIC_URL }}scripts/site.js"></script>
   <script  type="text/javascript" src="{{ STATIC_URL }}scripts/jquery.bxSlider.min.js"></script>
+  <script>
+  function e_friend() {
+  var e_add= prompt('Veuillez renseigner l\'adresse de votre destinataire:',' ');
+  if ((e_add==" ") || (e_add==null)) {
+    alert("Erreur sur l\'adresse du destinataire");
+  } else {
+    var  subj= document.title;
+    var mess= prompt('Ecrire un message à votre destinataire:',' ');
+    var title = document.title;
+    var url = document.location.href;
+    window.location="mailto:" + e_add + "?subject=" + subj + "&body=" + mess + "%0A%0A" + title + "%0A" + url;
+  }
+}</script>
   {% render_block "js" %}
   <!--[if lt IE 9]>
     <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <div id="degrade">
     
                <div id="header_content">
-               <div id="logo"><img src="{{ STATIC_URL }}img/logo.png"></div>
+               <div id="logo"><a href="/"><img src="{{ STATIC_URL }}img/logo.png"></a></div>
             <div id="header_droit">
                <p><a href="{% page_url "accueil" %}">Accueil</a>-<a href="/mentions-legales/">Mentions légales</a>-<a href="/flux/actualite/">Flux RSS</a>-<a href="{% page_url "plan-du-site" %}" style="margin-right:0">Plan du site</a></p>
                 <div id="search">
                         <form action="/recherche/" method="get">
-                        <input type="text" class="searchbox" name="s" value="Rechercher..." onFocus="value=''" />
+                        <input type="text" class="searchbox" name="s" value="Rechercher..." />
                         <input type="submit" class="searchbox_submit" value="" />
                         </form>
                        </div>
                                         </a>
                                     </div>
                                     <div class="actuTxt">
-                                        <span><a href="{{ item.get_absolute_url }}">Le {{ item.date_pub }}</a></span>
+                                        <span><a href="{{ item.get_absolute_url }}">Le {{ item.date_pub|date:"d M Y" }}</a></span>
                                         <p><a href="{{ item.get_absolute_url }}">{{ item.titre }}</a></p>
                                                        </div>
                                 </div>  
         <div class="boiteAutre">
                 <p class="lettre">Inscrivez-vous à notre Bulletin d’information</p>
              <div id="search2">
-                        <form action="/lettre-information/" method="get">
-                        <input type="text" class="searchbox2" name="s" value="Votre adresse éléctronique..." onFocus="value=''" />
+                        <form method='post' action="/lettre-information/">{% csrf_token %}
+                        {{ abonne_form.adresse.errors }}
+                        {{ abonne_form }}
                         <input type="submit" class="searchbox_submit2" value="" />
                         </form>
                </div>
diff --git a/project/templates/documents.html b/project/templates/documents.html
new file mode 100644 (file)
index 0000000..ec96a9a
--- /dev/null
@@ -0,0 +1,43 @@
+{% extends "base.html" %}
+{% load i18n cms_tags pagination_tags%}
+
+
+{% block Contenu %}
+<h1>Documents</h1>
+<div class="boiteContent2">
+        <h3>Filtrez vos recherches</h3>
+       <form action="/documents/" method="post">{% csrf_token %}
+                       {{ DocumentSearchForm.as_p }}
+            <input type="submit" class="bouton" value="Rechercher" />
+       </form>
+</div> 
+{% if document_list %}
+    {% with document_list as item_list %}
+            {% for item in item_list %}
+                <div class="boiteContent">
+                    <div class="actu">
+                                       <div class="actuImg">
+                                        <a href="{{ item.get_absolute_url }}">
+                                              {% if item.image %}
+                                              <img src="{{ MEDIA_URL }}{{ item.image }}" width="96" height="100" alt="{{ item.titre }}" title="{{ item.titre }}"/>
+                                              {% else %}
+                                              <img src="{{ STATIC_URL }}img/logoActu.png" width="96" height="100" alt="Actualité IFGU" title="Actualité IFGU"/>
+                                              {% endif %}
+                                        </a>
+                                    </div>
+                                    <div class="actuTxt">
+                                       <h1><a href="{{ item.get_absolute_url }}">{{ item.titre }}</a></h1>
+                                        <p>{{ item.description|striptags|truncatewords_html:52 }}</p>
+                                        <span><a href="{{ item.get_absolute_url }}">Voir la fiche du document</a></span>
+                                                       </div>
+                                </div>  
+                  </div>
+            {% endfor %}
+    {% endwith %}
+{% else %}
+    <p>Aucun document ne correspond à votre recherche</p>
+{% endif %}
+
+{% paginate %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/project/templates/documents_detail.html b/project/templates/documents_detail.html
new file mode 100644 (file)
index 0000000..270040d
--- /dev/null
@@ -0,0 +1,30 @@
+{% extends "base.html" %}
+{% load i18n cms_tags %}
+
+{% block Contenu %}
+
+{% with document as item %}
+
+    <h1>Document - {{ item.titre }}</h1>
+    
+       <div class="info">
+               <div class="date">Publié le {{ item.date_pub|date:"d M Y" }}</div>
+            <div class="outils"><img id="more" src="{{ STATIC_URL }}img/more.png"/><img id="less" src="{{ STATIC_URL }}img/less.png" /><img src="{{ STATIC_URL }}img/print.png" onclick="JavaScript:window.print();" /><a href="mailto:ENTER-ADDRESS" onclick="e_friend(); return false;" title="comments"><img src="{{ STATIC_URL }}img/mail.png" /></a><script>var pfHeaderImgUrl = '';var pfHeaderTagline = '';var pfdisableClickToDel = 0;var pfDisablePDF = 0;var pfDisableEmail = 1;var pfDisablePrint = 1;var pfCustomCSS = '';var pfBtVersion='1';(function(){var js, pf;pf = document.createElement('script');pf.type = 'text/javascript';if('https:' == document.location.protocol){js='https://pf-cdn.printfriendly.com/ssl/main.js'}else{js='http://cdn.printfriendly.com/printfriendly.js'}pf.src=js;document.getElementsByTagName('head')[0].appendChild(pf)})();</script><a href="http://www.printfriendly.com" style="color:#6D9F00;text-decoration:none;" class="printfriendly" onclick="window.print();return false;"><img src="{{ STATIC_URL }}img/pdf.png" style="border-right: none;padding: 0px 0px 0px 6px;"/></a></div>
+        </div>
+    
+       {% if item.image %}
+               <img src="{{ MEDIA_URL }}{{ item.image }}" width="150px" class="gauche"/>
+       {% else %}      
+                       <img src="{{ STATIC_URL }}img/logo.png" width="162px"  class="gauche"/>
+       {% endif %}
+        <div class="text">
+        <p style="padding-top: 4px;"><strong>Titre : </strong>{{ item.titre }}<br />
+        <strong>Auteur : </strong>{{ item.auteur }}<br />
+        <strong>Discipline : </strong>{{ item.discipline}}<br /></p>
+        <a href="{{ MEDIA_URL }}{{ item.fichier }}" class="info2">{% if item.type == "1" %}<img src="{{ STATIC_URL }}img/pdf.png"/>{% else %}<img src="{{ STATIC_URL }}img/word.png"/>{% endif %}<span style="line-height: 20px">Télécharger le document - {{ item.titre }} ({{ item.taille }} Ko)</span></a>
+        <p><strong>Description : </strong>{% if item.description %}{{ item.description}}{% else %}Aucune description disponible pour ce document.{% endif %}</p>
+        </div>   
+            
+{% endwith %}  
+        
+{% endblock %}
\ No newline at end of file
index c8a9c9a..f3e3424 100644 (file)
@@ -36,7 +36,7 @@ a{color: #2A80B3;}
 
 {% if newsletter.style == '2' %}
 <style>
-h1 {color: #547159 !important; font-size: 26px; text-shadow: 1px 1px 1px #fff; /*font-family: Georgia, 'Times New Roman', Times, serif;*/ margin: 0; padding: 0;}
+h1 {color: #547159 !important; font-size: 26px; text-shadow: 1px 1px 1px #fff; /*font-family: Georgia, 'Times New Roman', Times, serif;*/ margin: 12px 0px 4px 0px; padding: 0;}
 h2 {padding: 0; font-size: 26px; color: #fff !important; margin: 16px 20px 25px 20px; text-shadow: 1px 1px 1px #888}
 h3 {font-size: 13px; font-family: Arial, Helvetica, sans-serif; color: #fff !important; margin: 0 0 10px; padding: 0; text-shadow: 1px 1px 1px #888; text-transform: uppercase}
 h4 {font-size: 16px; font-family: Arial, Helvetica, sans-serif; color: #99a874 !important; margin: 0 0 10px; padding: 0; text-shadow: 1px 1px 1px #fff;}
@@ -80,7 +80,7 @@ a{color: #dee7c6;}
           <td valign="top" border="0" width="212"  height="127" cellpadding="0" cellspacing="0"><img src="http://ifgu.auf.org/static/img/logo.png" height="100" style="margin:13px 0px 0px 20px"/></td>
           <td style="background-image: url(http://www.auf.org/static/lettre/images/masthead{{newsletter.style}}.jpg); background-repeat: no-repeat; padding: 22px 20px 20px 20px;" background="http://www.auf.org/static/lettre/images/masthead{{newsletter.style}}.jpg" valign="top"  height="85" width="428">
                <h1>Lettre d'information N°{{ newsletter.numero}}</h1>         
-            <h4>{{ newsletter.date }}</h4>
+            <h4>{{ newsletter.date|date:"d M Y" }}</h4>
           </td>
         </tr>
       </table>
@@ -92,10 +92,10 @@ a{color: #dee7c6;}
           <td style="background: url(http://www.auf.org/static/lettre/images/content-bg-2{{newsletter.style}}.jpg) repeat #d9dcd7" background="http://www.auf.org/static/lettre/images/content-bg-2{{newsletter.style}}.jpg" bgcolor="#d9dcd7" width="212" valign="top">
           
           <table width="172" border="0" cellspacing="0" cellpadding="0" style="margin: 20px 20px 0px 20px;">
-               <tr><td><h3><singleline label="Title">PUBLICATIONS</singleline></h3></td></tr>
+               <tr><td><h3><singleline label="Title">NOUVEAUX DOCUMENTS</singleline></h3></td></tr>
          </table>
          
-         {% for item in list_publi %}
+         {% for item in list_docu %}
          
          <table bgcolor="#e5e7e2" background="http://www.auf.org/static/lettre/images/content-bg-2{{newsletter.style}}.jpg" width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
               <tr>
@@ -106,8 +106,8 @@ a{color: #dee7c6;}
          <table width="172" border="0" cellspacing="0" cellpadding="0" style="margin-top: 13px; margin-right:20px; margin-bottom: 4px; margin-left:20px;">
                <tr>
                <td class="link">
-                  <a href="http://ifgu.auf.org{{ item.get_absolute_url }}" target="_blank">Date limite: {{ item.date_fin }}</a>
-                  <multiline label="Description"><p style="padding: 0; font-size: 12px; font-family: Arial, Helvetica, sans-serif; color: #686f64; margin-top: 6px; margin-right:0px; margin-bottom: 6px; margin-left: 0px;">{{ item.titre }}</p></multiline>
+                  <a href="http://ifgu.auf.org{{ item.get_absolute_url }}" target="_blank">{{ item.titre }}</a>
+                  <multiline label="Description"><p style="padding: 0; font-size: 12px; font-family: Arial, Helvetica, sans-serif; color: #686f64; margin-top: 6px; margin-right:0px; margin-bottom: 6px; margin-left: 0px;">{{ item.description|striptags|safe|truncatewords_html:14 }}</p></multiline>
                 </td>
             </tr>
           </table>
@@ -120,20 +120,6 @@ a{color: #dee7c6;}
              </tr>
           </table>
           
-          <table width="172" border="0" cellspacing="0" cellpadding="0"  style="margin-top: 22px; margin-right:20px; margin-bottom: 0px; margin-left:20px;">
-               <tr>
-               <td>
-                  <p style="height: 24px; line-height: 24px; background: url(http://www.auf.org/static/img/face2.png) left no-repeat; padding-left: 29px"><a href="{{ newsletter.lienFace }}" target="_blank" style="color:#6F6F6F; text-decoration: none">Suivez-nous sur Facebook</a>
-                  </td>
-            </tr>
-          </table>
-          
-          <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
-             <tr>
-                <td height="10" style="border-bottom: 1px solid #fff;">&nbsp;</td>
-             </tr>
-          </table>
-          
           <table width="172" border="0" cellspacing="0" cellpadding="0"  style="margin-top: 20px; margin-right:20px; margin-bottom: 5px; margin-left:20px;">
                <tr>
                <td><h3>Réagir</h3>
index 20ad003..73447f0 100644 (file)
@@ -6,6 +6,11 @@
         
                <h1>{% page_attribute "page_title" %}</h1>
             
+            <div class="info">
+               <div class="date">Publié le 22 Février</div>
+            <div class="outils"><img id="more" src="{{ STATIC_URL }}img/more.png"/><img id="less" src="{{ STATIC_URL }}img/less.png" /><img src="{{ STATIC_URL }}img/print.png" onclick="JavaScript:window.print();" /><a href="mailto:ENTER-ADDRESS" onclick="e_friend(); return false;" title="comments"><img src="{{ STATIC_URL }}img/mail.png" /></a><script>var pfHeaderImgUrl = '';var pfHeaderTagline = '';var pfdisableClickToDel = 0;var pfDisablePDF = 0;var pfDisableEmail = 1;var pfDisablePrint = 1;var pfCustomCSS = '';var pfBtVersion='1';(function(){var js, pf;pf = document.createElement('script');pf.type = 'text/javascript';if('https:' == document.location.protocol){js='https://pf-cdn.printfriendly.com/ssl/main.js'}else{js='http://cdn.printfriendly.com/printfriendly.js'}pf.src=js;document.getElementsByTagName('head')[0].appendChild(pf)})();</script><a href="http://www.printfriendly.com" style="color:#6D9F00;text-decoration:none;" class="printfriendly" onclick="window.print();return false;"><img src="{{ STATIC_URL }}img/pdf.png" style="border-right: none;padding: 0px 0px 0px 6px;"/></a></div>
+        </div>
+            
                {% block Texte %}
                                {% placeholder Texte %}
                        {% endblock %}
index 81e2787..712c5df 100644 (file)
@@ -48,6 +48,12 @@ urlpatterns += patterns('article.views',
     (r'^tinymce/', include('tinymce.urls')),
 )
 
+#document
+urlpatterns += patterns('gestion_de_documents.views',
+    (r'^documents/$', 'documents'),
+    (r'^documents/(?P<slug>[-\w]+)/$', 'documents_detail'),
+)
+
 if settings.DEBUG:
     urlpatterns += staticfiles_urlpatterns()
     urlpatterns += patterns('',