Merge branch 'master' of gitosis@git.auf:auf_savoirs_en_partage_django
authorAli Jetha <ali@U-AJ.(none)>
Fri, 29 Oct 2010 19:03:15 +0000 (15:03 -0400)
committerAli Jetha <ali@U-AJ.(none)>
Fri, 29 Oct 2010 19:03:15 +0000 (15:03 -0400)
27 files changed:
auf_savoirs_en_partage/chercheurs/views.py
auf_savoirs_en_partage/media/css/calendrier.css [new file with mode: 0644]
auf_savoirs_en_partage/media/css/global.css
auf_savoirs_en_partage/media/docs/conversion.txt [deleted file]
auf_savoirs_en_partage/media/js/calendrier.js [new file with mode: 0644]
auf_savoirs_en_partage/savoirs/admin.py
auf_savoirs_en_partage/savoirs/forms.py
auf_savoirs_en_partage/savoirs/lib/recherche.py
auf_savoirs_en_partage/savoirs/models.py
auf_savoirs_en_partage/savoirs/views.py
auf_savoirs_en_partage/templates/chercheurs/conversion.html [new file with mode: 0644]
auf_savoirs_en_partage/templates/chercheurs/index.html
auf_savoirs_en_partage/templates/container_base.html
auf_savoirs_en_partage/templates/savoirs/actualite_index.html
auf_savoirs_en_partage/templates/savoirs/avancee.html
auf_savoirs_en_partage/templates/savoirs/evenement.html
auf_savoirs_en_partage/templates/savoirs/evenement_ajout.html
auf_savoirs_en_partage/templates/savoirs/evenement_confirmation.html
auf_savoirs_en_partage/templates/savoirs/evenement_index.html
auf_savoirs_en_partage/templates/savoirs/evenement_resultat.html
auf_savoirs_en_partage/templates/savoirs/evenement_utilisation.html [new file with mode: 0644]
auf_savoirs_en_partage/templates/savoirs/index.html
auf_savoirs_en_partage/templates/savoirs/ressource_resultat.html
auf_savoirs_en_partage/templates/savoirs/ressource_retrieve.html
auf_savoirs_en_partage/templates/savoirs/resultat.html [deleted file]
auf_savoirs_en_partage/templates/sites/index.html
auf_savoirs_en_partage/urls.py

index fedd732..96c5ad0 100644 (file)
@@ -373,3 +373,8 @@ def retrieve(request, id):
     return render_to_response ("chercheurs/retrieve.html", \
             Context (variables), 
             context_instance = RequestContext(request))
+            
+def conversion(request):
+    return render_to_response ("chercheurs/conversion.html", \
+            Context (), \
+            context_instance = RequestContext(request))
diff --git a/auf_savoirs_en_partage/media/css/calendrier.css b/auf_savoirs_en_partage/media/css/calendrier.css
new file mode 100644 (file)
index 0000000..f9058b0
--- /dev/null
@@ -0,0 +1,7 @@
+.clockbox, .calendarbox {border: 1px solid #CDCDCD; background-color: #EEEEEE; padding:6px 12px;}
+.calendarbox th {padding:0}
+.clockbox, .calendarbox a {text-decoration: none;}
+.calendarnav-previous {float: left;}
+.calendarnav-next {float: right;}
+.vDateField {margin-left: 8px;}
+.vDateField, .vTimeField {width: 100px !important;}
index 88f974b..a555cfd 100644 (file)
@@ -63,7 +63,7 @@ div.droite { float:right; width:40%; }
 h1 a { display:block; width:144px; height:110px; text-indent:-99999px; background:url(../img/logo-agence-universitaire-de-la-francophonie.gif) no-repeat 0 0;border:none; text-decoration:none;}
 h5 a { text-decoration:none; }
 
-#sep-recherche {  }
+#sep-recherche {}
 h2.slogan { position:absolute; top:53px; left:240px; font-size:3.4em; color:#3a3125; padding:0;font-family:"Myriad Pro", "Lucida Grande", sans-serif; font-weight:normal; letter-spacing:-1px; line-height:0.8em; z-index:1000; }
 h2.slogan span { display:block; margin: .7em 0 0; font-size:0.55em; color:#97012c; letter-spacing:normal; line-height: 1.1;}
 div.boite-recherche { z-index:1000; position:absolute; top:150px; left:240px; width:390px; height:90px; background: url(../img/recherche-background.gif) no-repeat 0 5px;}
@@ -228,7 +228,7 @@ form fieldset legend {
 label {
   font-size: 12px;
 }
-td
+td, th
 {
 vertical-align:middle;
 }
@@ -277,3 +277,13 @@ font-weight:bold;
 font-size:12px;
 color:red;
 }
+
+
+.ressource-retrieve * {margin-top: 1em;}
+.ressource-retrieve .fiche {margin-top: 2em;}
+
+.le-titre{line-height: 24px;}
+
+.fiche, .original, .provenance {font-size: 80%; margin: 2px 0px;}
+.fiche {margin-top: 6px;}
+.fiche a, .original a, .provenance a{text-decoration: none;}
diff --git a/auf_savoirs_en_partage/media/docs/conversion.txt b/auf_savoirs_en_partage/media/docs/conversion.txt
deleted file mode 100644 (file)
index 58478fd..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-Thématique prioritaire 1 : Langue française, diversité culturelle et linguistique
-================================================================================
-
-Domaine de recherche "Langues pour le développement"
-----------------------------------------
-* réseau de chercheurs "Dynamique des langues et francophonie"
-* réseau de chercheurs "Étude du français en francophonie"
-* réseau de chercheurs "Lexicologie, Terminologie, Traduction"
-
-Domaine de recherche "Littératures au Sud"
-----------------------------------------
-* réseau de chercheurs "Littérature francophone d'Afrique subsaharienne et de l'océan Indien (CRITAOI)"
-* réseau de chercheurs "Littératures d'enfance"
-
-Domaine de recherche "Cultures"
-----------------------------------------
-* réseau de chercheurs "Diversité des expressions culturelles et artistiques, et mondialisations"
-
-
-Thématique prioritaire 2 : État de droit, démocratie et société"
-================================================================================
-
-Domaine de recherche "Cultures juridiques et gouvernance"
-----------------------------------------
-* réseau de chercheurs "Droits fondamentaux"
-* réseau de chercheurs "Droit de la santé"
-* réseau de chercheurs "Genre, droits et citoyenneté"
-
-Domaine de recherche "Figures de l'Etat"
-----------------------------------------
-* réseau de chercheurs "Droits fondamentaux"
-* réseau de chercheurs "Droit de la santé"
-
-Domaine de recherche "Francophonie institutionnelle, État(s) francophone(s) et francophonie"
-----------------------------------------
-* réseau de chercheurs "Droits fondamentaux"
-* réseau de chercheurs "Droit de la santé"
-* réseau de chercheurs "L'état de droit saisi par la philosophie"
-
-
-Thématique prioritaire 3 - Environnement, eau, énergie et climat
-================================================================================
-
-Domaine de recherche "Agronomie"
-----------------------------------------
-* réseau de chercheurs "Biotechnologies végétales"
-* réseau de chercheurs "Génie des procédés appliqué à l'agro-alimentaire"
-* réseau de chercheurs "Érosion et gestion conservatoire des eaux et des sols
-* réseau de chercheurs "Environnement et développement durable
-
-Domaine de recherche "Biodiversité"
-----------------------------------------
-* réseau de chercheurs "Environnement et développement durable"
-
-Domaine de recherche "Changements climatiques"
-----------------------------------------
-* réseau de chercheurs "Télédétection"
-
-Domaine de recherche "Énergie"
-----------------------------------------
-* réseau de chercheurs "Environnement et développement durable"
-
-Domaine de recherche "Ville durable"
-----------------------------------------
-* réseau de chercheurs "Environnement et développement durable
-
-
-Thématique prioritaire 4 "Développement durable et bien-être des populations
-================================================================================
-
-Domaine de recherche "Économie du développement"
-----------------------------------------
-* réseau de chercheurs "Entrepreneuriat"
-* réseau de chercheurs "Analyse économique et développement"
-
-Domaine de recherche "Santé et bien-être des populations"
-----------------------------------------
-* réseau de chercheurs "Maladies parasitaires et vectorielles"
-* réseau de chercheurs "Dynamiques démographiques et sociétés"
-
-
-Thématique prioritaire 5 : Économie de la connaissance
-================================================================================
-
-Domaine de recherche "Res@TICE"
-----------------------------------------
-* réseau de chercheurs "Réseau de chercheurs en technologies de l'information et de la communication pour l'enseignement"
-
-
diff --git a/auf_savoirs_en_partage/media/js/calendrier.js b/auf_savoirs_en_partage/media/js/calendrier.js
new file mode 100644 (file)
index 0000000..da8bcd1
--- /dev/null
@@ -0,0 +1,113 @@
+function customOpenCalendar(num) {
+    var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num)
+    var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num)
+    var inp = DateTimeShortcuts.calendarInputs[num];
+
+    // With no starting value, try to initialize it with calendar before
+    if (!inp.value) {
+        var before = num-1;
+        if (before >= 0) {
+            inp = DateTimeShortcuts.calendarInputs[before];
+            DateTimeShortcuts.calendarInputs[num].value = inp.value;
+        }
+    }
+
+    // Determine if the current value in the input has a valid date.
+    // If so, draw the calendar with that date's year and month.
+    if (inp.value) {
+        var date_parts = inp.value.split('-');
+        var year = date_parts[0];
+        var month = parseFloat(date_parts[1]);
+        if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) {
+       DateTimeShortcuts.calendars[num].drawDate(month, year);
+        }
+    }
+
+
+    // Recalculate the clockbox position
+    // is it left-to-right or right-to-left layout ?
+    if (getStyle(document.body,'direction')!='rtl') {
+        cal_box.style.left = findPosX(cal_link) + 17 + 'px';
+    }
+    else {
+        // since style's width is in em, it'd be tough to calculate
+        // px value of it. let's use an estimated px for now
+        // TODO: IE returns wrong value for findPosX when in rtl mode
+        //       (it returns as it was left aligned), needs to be fixed.
+        cal_box.style.left = findPosX(cal_link) - 180 + 'px';
+    }
+    cal_box.style.top = findPosY(cal_link) - 75 + 'px';
+
+    cal_box.style.display = 'block';
+    addEvent(window.document, 'click', function() { DateTimeShortcuts.dismissCalendar(num); return true; });
+}
+
+function customAddClock(inp) {
+        var num = DateTimeShortcuts.clockInputs.length;
+        DateTimeShortcuts.clockInputs[num] = inp;
+
+        // Shortcut links (clock icon and "Now" link)
+        var shortcuts_span = document.createElement('span');
+        inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
+        var now_link = document.createElement('a');
+        now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().getHourMinuteSecond());");
+        now_link.appendChild(document.createTextNode(gettext('Now')));
+        var clock_link = document.createElement('a');
+        clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');
+        clock_link.id = DateTimeShortcuts.clockLinkName + num;
+        quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/admin/icon_clock.gif', 'alt', gettext('Clock'));
+        shortcuts_span.appendChild(document.createTextNode('\240'));
+        shortcuts_span.appendChild(now_link);
+        shortcuts_span.appendChild(document.createTextNode('\240|\240'));
+        shortcuts_span.appendChild(clock_link);
+
+        // Create clock link div
+        //
+        // Markup looks like:
+        // <div id="clockbox1" class="clockbox module">
+        //     <h2>Choose a time</h2>
+        //     <ul class="timelist">
+        //         <li><a href="#">Now</a></li>
+        //         <li><a href="#">Midnight</a></li>
+        //         <li><a href="#">6 a.m.</a></li>
+        //         <li><a href="#">Noon</a></li>
+        //     </ul>
+        //     <p class="calendar-cancel"><a href="#">Cancel</a></p>
+        // </div>
+
+        var clock_box = document.createElement('div');
+        clock_box.style.display = 'none';
+        clock_box.style.position = 'absolute';
+        clock_box.className = 'clockbox module';
+        clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);
+        document.body.appendChild(clock_box);
+        addEvent(clock_box, 'click', DateTimeShortcuts.cancelEventPropagation);
+
+        quickElement('h2', clock_box, gettext('Choose a time'));
+        time_list = quickElement('ul', clock_box, '');
+        time_list.className = 'timelist';
+        quickElement("a", quickElement("li", time_list, ""), "6:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '06:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "7:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '07:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "8:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '08:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "9:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '09:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "10:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '10:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "11:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '11:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "12:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '12:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "13:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '13:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "14:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '14:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "15:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '15:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "16:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '16:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "17:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '17:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "18:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '18:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "19:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '19:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "20:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '20:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "21:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '21:00:00');")
+        quickElement("a", quickElement("li", time_list, ""), "22:00", "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", '22:00:00');")
+
+        cancel_p = quickElement('p', clock_box, '');
+        cancel_p.className = 'calendar-cancel';
+        quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');
+    }
+
+DateTimeShortcuts.addClock = customAddClock;
+DateTimeShortcuts.openCalendar = customOpenCalendar;
index 3695b64..36c8465 100644 (file)
@@ -251,7 +251,20 @@ class ActualiteAdmin(admin.ModelAdmin):
 admin.site.register(Actualite, ActualiteAdmin)
 
 
+class EvenementAdminForm(forms.ModelForm):
+    class Meta:
+        model = Evenement
+
+    def clean(self,):
+        cleaned_data = self.cleaned_data
+        debut = cleaned_data.get("debut")
+        fin = cleaned_data.get("fin")
+        if debut > fin:
+            raise forms.ValidationError("La date de fin ne doit pas être antérieure à la date de début")
+        return cleaned_data
+
 class EvenementAdmin(admin.ModelAdmin):
+    form = EvenementAdminForm
     list_filter = ('approuve',)
     list_display = ('titre', 'debut', 'fin', 'lieu', 'approuve')
     fields = ['titre',
index b126abd..31d2c47 100644 (file)
@@ -1,9 +1,28 @@
 # -*- encoding: utf-8 -*-
-import re
+import re, datetime
 from django import forms
+from django.db.models import Q
+from django.db import models
+from django.contrib.admin import widgets
 from datamaster_modeles.models import Thematique, Pays, Region
 from models import Evenement, Discipline, Record, Actualite
 from savoirs.lib.recherche import build_search_regexp
+from savoirs.admin import EvenementAdminForm
+import settings
+
+# Modifications custom aux champs Django
+
+class SEPDateField(forms.DateField):
+    """Un champ de date avec des valeurs par défaut un peu modifiées."""
+
+    def __init__(self, *args, **kwargs):
+        super(SEPDateField, self).__init__(self, *args, **kwargs)
+
+        # La classe "date" active le datepicker dans sep.js
+        # Nous recevons les dates en format français
+        format = '%d/%m/%Y'
+        self.widget = forms.DateInput(attrs={'class': 'date'}, format=format)
+        self.input_formats = [format,]
 
 # Formulaires de recherche
 
@@ -55,12 +74,8 @@ class ActualiteSearchForm(forms.Form):
     """Formulaire de recherche pour les actualités."""
 
     q = forms.CharField(required=False, label="Mots-clés")
-    date_min = forms.DateField(required=False, label="Depuis le", 
-                               widget=forms.DateInput(attrs={'class': 'date'}),
-                               input_formats=['%d/%m/%Y'])
-    date_max = forms.DateField(required=False, label="Jusqu'au", 
-                               widget=forms.DateInput(attrs={'class': 'date'}),
-                               input_formats=['%d/%m/%Y'])
+    date_min = SEPDateField(required=False, label="Depuis le")
+    date_max = SEPDateField(required=False, label="Jusqu'au") 
 
     def get_query_set(self):
         """Retourne l'ensemble des actualités qui correspondent aux valeurs
@@ -88,6 +103,12 @@ class EvenementSearchForm(forms.Form):
     """Formulaire de recherche pour les événements."""
 
     q = forms.CharField(required=False, label="Mots-clés")
+    titre = forms.CharField(required=False, label="Intitulé")
+    type = forms.ChoiceField(required=False, choices=(('', 'Tous'),)+Evenement.TYPE_CHOICES)
+    discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(), 
+                                        required=False, label="Discipline", empty_label="Toutes")
+    date_min = SEPDateField(required=False, label="Depuis le") 
+    date_max = SEPDateField(required=False, label="Jusqu'au") 
     
     def get_query_set(self):
         """Retourne l'ensemble des événements qui correspondent aux valeurs
@@ -97,6 +118,21 @@ class EvenementSearchForm(forms.Form):
             query = self.cleaned_data['q']
             if query:
                 evenements = evenements.search(query)
+            titre = self.cleaned_data['titre']
+            if titre:
+                evenements = evenements.search_titre(titre)
+            type = self.cleaned_data['type']
+            if type:
+                evenements = evenements.filter(type=type)
+            discipline = self.cleaned_data['discipline']
+            if discipline:
+                evenements = evenements.filter(Q(discipline=discipline) | Q(discipline_secondaire=discipline))
+            date_min = self.cleaned_data['date_min']
+            if date_min:
+                evenements = evenements.filter(debut__gte=date_min)
+            date_max = self.cleaned_data['date_max']
+            if date_max:
+                evenements = evenements.filter(debut__lte=date_max)
         return evenements
 
     def get_search_regexp(self):
@@ -107,7 +143,20 @@ class EvenementSearchForm(forms.Form):
 
 ###
 
-class EvenementForm(forms.ModelForm):
+class FrontEndSplitDateTime(widgets.AdminSplitDateTime):
+    class Media:
+        extend=False
+        js = ("/jsi18n/",
+              settings.ADMIN_MEDIA_PREFIX + "js/core.js",
+              settings.ADMIN_MEDIA_PREFIX + "js/calendar.js",
+              settings.ADMIN_MEDIA_PREFIX + "js/admin/DateTimeShortcuts.js",
+              'js/calendrier.js', )
+        css = {'all' : ('css/calendrier.css', )}
+
+class EvenementForm(EvenementAdminForm):
+    debut = forms.DateTimeField(widget=FrontEndSplitDateTime)
+    fin = forms.DateTimeField(widget=FrontEndSplitDateTime)
+
     class Meta:
         model = Evenement
         exclude = ('approuve', 'uid')
index 90bc67c..9dde30c 100644 (file)
@@ -2,11 +2,11 @@
 import urllib, httplib, time, simplejson, pprint, math, re
 from django.core.urlresolvers import reverse
 from django.conf import settings
+from auf_savoirs_en_partage.backend_config import RESOURCES
 from sep import SEP
 from utils import smart_str
 from savoirs.globals import configuration
 
-
 def google_search (page, q, data):
     params = {'q': q,
               'rsz': 'large',
@@ -107,6 +107,8 @@ def sep_search (page, q, data):
         if len (uri) == 0:
             uri = r.get ("source")
         
+        serveur = RESOURCES[r.get('server')]['url']
+
         # Récupère la source si ce n'est pas une URL
         source = r.get("source", None)
         if source is not None and source.startswith('http'):
@@ -125,6 +127,7 @@ def sep_search (page, q, data):
 
         data['results'].append ({
                 'uri': uri,
+                'getServeurURL': serveur,
                 'source' : source,
                 'id': r.get("id"), \
                 'title': hl(regexp, title), 
index 2eee6fa..093fd08 100644 (file)
@@ -86,7 +86,19 @@ class EvenementQuerySet(models.query.QuerySet):
                            Q(contact__icontains=word))
         return qs
 
+    def search_titre(self, text):
+        qs = self
+        for word in text.split():
+            qs = qs.filter(titre__icontains=word)
+        return qs
+
 class Evenement(models.Model):
+    TYPE_CHOICES = ((u'Colloque', u'Colloque'),
+                    (u'Conférence', u'Conférence'),
+                    (u'Appel à contribution', u'Appel à contribution'),
+                    (u'Journée d\'étude', u'Journée d\'étude'),
+                    (None, u'Autre'))
+                   
     uid = models.CharField(max_length = 255, default = str(uuid.uuid1()))
     approuve = models.BooleanField(default = False)
     titre = models.CharField(max_length=255)
@@ -98,13 +110,7 @@ class Evenement(models.Model):
                                               "Discipline secondaire", 
                                               blank = True, null = True)
     mots_cles = models.TextField('Mots-Clés', blank = True, null = True)
-    type = models.CharField(max_length = 255, choices = \
-                            (('Colloque', 'Colloque'),
-                             ('Conférence', 'Conférence'),
-                             ('Appel à contribution', 'Appel à contribution'),
-                             ('Journée d\'étude', 'Journée d\'étude'),
-                             (None, 'Autre')
-                            )) #TODO: choices
+    type = models.CharField(max_length=255, choices=TYPE_CHOICES)
     fuseau = TimeZoneField(verbose_name = 'Fuseau horaire')
     debut = models.DateTimeField(default = datetime.datetime.now)
     fin = models.DateTimeField(default = datetime.datetime.now)
@@ -122,9 +128,15 @@ class Evenement(models.Model):
     def __unicode__(self,):
         return "[%s] %s" % (self.uid, self.titre)
 
+    def clean(self):
+        from django.core.exceptions import ValidationError
+        if self.debut > self.fin:
+            raise ValidationError('La date de fin ne doit pas être antérieure à la date de début')
+
     def save(self, *args, **kwargs):
         """Sauvegarde l'objet dans django et le synchronise avec caldav s'il a été
         approuvé"""
+        self.clean()
         self.update_vevent()
         super(Evenement, self).save(*args, **kwargs)
 
@@ -326,6 +338,10 @@ class Record(models.Model):
     # Manager
     objects = RecordManager()
 
+    def getServeurURL(self,):
+        """Retourne l'URL du serveur de provenance"""
+        return RESOURCES[self.server]['url']
+
     def est_complet(self,):
         """teste si le record à toutes les données obligatoires"""
         return self.disciplines.count() > 0 and \
index 00b69d6..7116607 100644 (file)
@@ -104,6 +104,7 @@ def avancee (request):
             Context ({'type': type,
                       'page': page,
                       'data': r,
+                      'search_regexp': None, # pour pouvoir utiliser la même template de résultat
                       'form': f,
                       'q': q}), 
             context_instance = RequestContext(request))
@@ -170,7 +171,12 @@ def evenement_index(request):
                                    search_regexp=search_regexp,
                                    nb_resultats=evenements.count()),
                               context_instance=RequestContext(request))
-
+                              
+def evenement_utilisation(request):
+    return render_to_response ("savoirs/evenement_utilisation.html", \
+            Context (), \
+            context_instance = RequestContext(request))
+            
 def evenement(request, id):
     evenement = get_object_or_404(Evenement, pk=id)
     return render_to_response("savoirs/evenement.html",
diff --git a/auf_savoirs_en_partage/templates/chercheurs/conversion.html b/auf_savoirs_en_partage/templates/chercheurs/conversion.html
new file mode 100644 (file)
index 0000000..9ea367d
--- /dev/null
@@ -0,0 +1,113 @@
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<h4>Répertoire des chercheurs - conversion</h4>
+
+<p class="texte" style="font-style=italic">
+Pour chaque <b>domaine de recherche</b>, la liste des anciens <b>réseaux de chercheurs</b> associés. Les chercheurs de ces anciens réseaux ont été associés automatiquement aux nouveaux domaines de recherche.
+</p>
+
+<h5>Thématique prioritaire 1 : Langue française, diversité culturelle et linguistique</h5>
+
+<div class="texte">
+    <h6>Domaine de recherche "Langues pour le développement"</h6>
+    <ul>
+        <li>réseau de chercheurs "Dynamique des langues et francophonie"</li>
+        <li>réseau de chercheurs "Étude du français en francophonie"</li>
+        <li>réseau de chercheurs "Lexicologie, Terminologie, Traduction"</li>
+    </ul>
+    
+    <h6>Domaine de recherche "Littératures au Sud"</h6>
+    <ul>
+        <li>réseau de chercheurs "Littérature francophone d'Afrique subsaharienne et de l'océan Indien (CRITAOI)"</li>
+        <li>réseau de chercheurs "Littératures d'enfance"</li>
+    </ul>
+    
+    <h6>Domaine de recherche "Cultures"</h6>
+    <ul>
+        <li>réseau de chercheurs "Diversité des expressions culturelles et artistiques, et mondialisations"</li>
+    </ul>
+
+</div>
+
+<h5>Thématique prioritaire 2 : État de droit, démocratie et société"</h5>
+
+<div class="texte">
+    <h6>Domaine de recherche "Cultures juridiques et gouvernance"</h6>
+    <ul>
+        <li>réseau de chercheurs "Droits fondamentaux"</li>
+        <li>réseau de chercheurs "Droit de la santé"</li>
+        <li>réseau de chercheurs "Genre, droits et citoyenneté"</li>
+    </ul>
+
+    <h6>Domaine de recherche "Figures de l'Etat"</h6>
+    <ul>
+        <li>réseau de chercheurs "Droits fondamentaux"</li>
+        <li>réseau de chercheurs "Droit de la santé"</li>
+    </ul>
+
+    <h6>Domaine de recherche "Francophonie institutionnelle, État(s) francophone(s) et francophonie"</h6>
+    <ul>
+        <li>réseau de chercheurs "Droits fondamentaux"</li>
+        <li>réseau de chercheurs "Droit de la santé"</li>
+        <li>réseau de chercheurs "L'état de droit saisi par la philosophie"</li>
+    </ul>
+</div>
+
+<h5>Thématique prioritaire 3 - Environnement, eau, énergie et climat</h5>
+
+<div class="texte">
+    <h6>Domaine de recherche "Agronomie"</h6>
+    <ul>
+        <li>réseau de chercheurs "Biotechnologies végétales"</li>
+        <li>réseau de chercheurs "Génie des procédés appliqué à l'agro-alimentaire"</li>
+        <li>réseau de chercheurs "Érosion et gestion conservatoire des eaux et des sols</li>
+        <li>réseau de chercheurs "Environnement et développement durable</li>
+    </ul>
+
+    <h6>Domaine de recherche "Biodiversité"</h6>
+    <ul>
+        <li>réseau de chercheurs "Environnement et développement durable"</li>
+    </ul>
+
+    <h6>Domaine de recherche "Changements climatiques"</h6>
+    <ul>
+        <li>réseau de chercheurs "Télédétection"</li>
+    </ul>
+
+    <h6>Domaine de recherche "Énergie"</h6>
+    <ul>
+        <li>réseau de chercheurs "Environnement et développement durable"</li>
+    </ul>
+
+    <h6>Domaine de recherche "Ville durable"</h6>
+    <ul>
+        <li>réseau de chercheurs "Environnement et développement durable</li>
+    </ul>
+</div>
+
+<h5>Thématique prioritaire 4 "Développement durable et bien-être des populations</h5>
+
+<div class="texte">
+    <h6>Domaine de recherche "Économie du développement"</h6>
+    <ul>
+        <li>réseau de chercheurs "Entrepreneuriat"</li>
+        <li>réseau de chercheurs "Analyse économique et développement"</li>
+    </ul>
+
+    <h6>Domaine de recherche "Santé et bien-être des populations"</h6>
+    <ul>
+        <li>réseau de chercheurs "Maladies parasitaires et vectorielles"</li>
+        <li>réseau de chercheurs "Dynamiques démographiques et sociétés"</li>
+    </ul>
+</div>
+
+<h5>Thématique prioritaire 5 : Économie de la connaissance</h5>
+
+<div class="texte">
+    <h6>Domaine de recherche "Res@TICE"</h6>
+    <ul>
+        <li>réseau de chercheurs "Réseau de chercheurs en technologies de l'information et de la communication pour l'enseignement"</li>
+    </ul>
+</div>
+{% endblock %}
index 1bc1c1d..915379e 100644 (file)
@@ -16,7 +16,7 @@
     Cet outil recense les universitaires (enseignants, chercheurs, doctorants) impliqués, ou souhaitant s'impliquer, dans les projets scientifiques appuyés par l'AUF. Il permet à la communauté scientifique de se mobiliser sur des projets en fonction de repères thématiques et/ou régionaux. 
     </p>
     <p>
-    Dans le cadre de la programmation quadriennale, la politique scientifique de l'AUF s'appuie sur la mise en œuvre de projets inter-universitaires régionaux ou internationaux. Les <i>réseaux de chercheurs</i> ne sont plus le critère d'organisation du répertoire (consulter la <a href="{{ MEDIA_URL }}docs/conversion.txt">table de passage</a>). Les chercheurs précisent leur discipline et choissent leurs centres d'intérêt dans des listes prédéfinies, et ajoutent des mots-clés pour affiner leur profil scientifique.
+    Dans le cadre de la programmation quadriennale, la politique scientifique de l'AUF s'appuie sur la mise en œuvre de projets inter-universitaires régionaux ou internationaux. Les <i>réseaux de chercheurs</i> ne sont plus le critère d'organisation du répertoire (consulter la <a href="{% url chercheurs.views.conversion %}">table de passage</a>). Les chercheurs précisent leur discipline et choissent leurs centres d'intérêt dans des listes prédéfinies, et ajoutent des mots-clés pour affiner leur profil scientifique.
     </p>
 </div>
 
index 8f5df7f..36443df 100644 (file)
@@ -10,6 +10,8 @@
         <script type="text/javascript" src="{{ MEDIA_URL }}js/tabber.js"></script>
         <script type="text/javascript" src="{{ MEDIA_URL }}js/pagination.js"></script>
         <script type="text/javascript" src="{{ MEDIA_URL }}js/sep.js"></script>
+        {% block extra-script %}{% endblock %}
+
         <link href="{{ MEDIA_URL }}css/global.css" rel="stylesheet" type="text/css" />
         <link href="{{ MEDIA_URL }}css/tabber.css" rel="stylesheet" type="text/css" />
         <link rel="stylesheet" href="{{ MEDIA_URL }}js/jquery/css/smoothness/jquery-ui-1.8rc3.custom.css" type="text/css" media="all" />
@@ -21,6 +23,7 @@
             DD_belatedPNG.fix('.top, .bottom, #col-droite, #contenu, .resultats');
         </script>
         <![endif]-->
+        {% block extra-style %}{% endblock %}
     </head>
 
     <body>
index 8d46603..3789291 100644 (file)
@@ -4,23 +4,29 @@
 
 {% block contenu %}
 {% autopaginate actualites 10 %}
+
 <h4>Actualités</h4>
+
 <ul class="actions">
-  <li><a href="/rss/actualites"><img src="/media/img/feed.png" /></a></li>
+    <li><a href="/rss/actualites"><img src="/media/img/feed.png" /></a></li>
 </ul>
 
-<div class="contenu-wrapper">
-  <form action="" method="get">
+<h5>Recherche</h5>
+
+<form action="" method="get" class="contenu-wrapper">
     <table>
-      {{ search_form.as_table }}
-      <tr><th></th><td><input type="submit" value="Rechercher" /></td></tr>
+    {{ search_form.as_table }}
+    <tr><th></th><td><input type="submit" value="Rechercher" /></td></tr>
     </table>
-  </form>
-  <p><strong>{{ nb_resultats }} actualités correspondant à votre recherche :</strong></p>
-  <div class="centre">{% paginate %}</div>
-  {% for actualite in actualites %}
-  {% include "savoirs/actualite_resultat.html" %}
-  {% endfor %}
-  <div class="centre">{% paginate %}</div>
+</form>
+
+<h5>Résultats : {{ nb_resultats }} actualités correspondant à votre recherche</h5>
+
+<div  class="contenu-wrapper">
+    <div class="centre">{% paginate %}</div>
+    {% for actualite in actualites %}
+        {% include "savoirs/actualite_resultat.html" %}
+    {% endfor %}
+    <div class="centre">{% paginate %}</div>
 </div>
 {% endblock %}
index d152399..8c2921d 100644 (file)
   <h4>Résultats de recherche:</h4>
 
   <div class="zone-texte">
-    {% for r in data.results %}
-      {% include "savoirs/resultat.html" %}
+      {% for r in data.results %}
+      {% with r as ressource %}
+        {% include "savoirs/ressource_resultat.html" %}
+      {% endwith %}
     {% empty %}
     <div class="resultatRecherche">
       <h2>Aucun résultat trouvé</h2>
index b37ddc5..afbcc17 100644 (file)
@@ -4,14 +4,24 @@
 <h4>{{ evenement.titre }}</h4>
 
 <div class="zone-texte">
-  <table width="100%">
+    <table width="100%">
+    <tr>
+        <th>Type</th>
+        <td>{{ evenement.type }}</td>
+    </tr>    
+    <tr>
+        <th>Discipline{% if evenement.discipline_secondaire %}s{% endif %}</th>
+        <td>{{ evenement.discipline }}
+            {% if evenement.discipline_secondaire %}, {{ evenement.discipline_secondaire }}{% endif %}
+        </td>
+    </tr>    
     <tr>
       <th width="120px">Début</th>
-      <td>{{ evenement.debut|date:"Y-m-d H:i" }} (UTC)</td>
+      <td>{{ evenement.debut|date:"d/m/Y H\hi" }} (UTC)</td>
     </tr>
     <tr>
       <th>Fin</th>
-      <td>{{ evenement.fin|date:"Y-m-d H:i" }} (UTC)</td>
+      <td>{{ evenement.fin|date:"d/m/Y H\hi" }} (UTC)</td>
     </tr>
     <tr>
       <th>Description</th>
@@ -31,7 +41,7 @@
     {% endif %}
     {% if evenement.lieu %}
     <tr>
-      <th>Emplacement</th>
+      <th>Lieu</th>
       <td>{{ evenement.lieu|linebreaksbr }}</td>
     </tr>
     {% endif %}
index e89c572..11888ea 100644 (file)
@@ -1,5 +1,13 @@
 {% extends "container_base.html" %}
 
+{% block extra-script %}
+    {{ form.media.js }}
+{% endblock %}
+
+{% block extra-style %}
+    {{ form.media.css }}
+{% endblock %}
+
 {% block contenu %}
 
 <style>
   input[type=text] { width: 250px; }
 </style>
 
-<script>
-  $(function () {
-      $("#id_debut").datetime({ userLang: 'fr' });
-      $("#id_fin").datetime({ userLang: 'fr' });
-      });
-</script>
-
 <div class="clearfix">
   <h4>Soumettre un événement</h4>
   <div class="zone-texte">
index 2b4e535..8814dc5 100644 (file)
@@ -14,8 +14,8 @@
 <div class="clearfix">
   <h4>Soumettre un événement</h4>
   <div class="zone-texte">
-    <p>Votre évenement a bien été pris en compte, il sera approuvé par notre 
-    équipe bientot.</p>
+    <p>Votre événement a bien été pris en compte, il sera approuvé par notre 
+    équipe bientôt.</p>
   </div>
 </div>
 
index a4b0e60..bd63bfe 100644 (file)
@@ -4,23 +4,37 @@
 {% block contenu %}
 {% autopaginate evenements 10 %}
 <h4>Agenda</h4>
+
 <ul class="actions">
-  {% include "savoirs/evenement_actions.html" %}
-  <li><a href="/rss/agenda"><img src="/media/img/feed.png" /></a></li>
+    {% include "savoirs/evenement_actions.html" %}
+    <li><a href="/rss/agenda"><img src="/media/img/feed.png" /></a></li>
 </ul>
 
-<div class="contenu-wrapper">
-  <form action="" method="get">
+<div class="texte">
+    <p>
+    La possibilité est offerte aux chercheurs d'annoncer sur ce portail un événement scientifique en l'inscrivant dans un agenda consultable par tous. 
+    C'est aussi un outil de communication et de veille au service des universitaires et scientifiques francophones qui leur permet de se tenir informés des manifestations scientifiques et de répondre aux appels à communications et contributions ainsi qu'aux appels à projets. 
+    </p>
+    <p>
+    Consulter les <a href="{% url savoirs.views.evenement_utilisation %}">conditions d'utilisation</a>.
+    </p>
+</div>
+
+<h5>Recherche</h5>
+    <form action="" method="get" class="contenu-wrapper">
     <table>
-      {{ search_form.as_table }}
-      <tr><th></th><td><input type="submit" value="Rechercher" /></td></tr>
+    {{ search_form.as_table }}
+    <tr><th></th><td><input type="submit" value="Rechercher" /></td></tr>
     </table>
-  </form>
-  <p><strong>{{ nb_resultats }} événements correspondant à votre recherche :</strong></p>
-  <div class="centre">{% paginate %}</div>
-  {% for evenement in evenements %}
-  {% include "savoirs/evenement_resultat.html" %}
-  {% endfor %}
-  <div class="centre">{% paginate %}</div>
+    </form>
+
+<h5>Résultats : {{ nb_resultats }} événements correspondant à votre recherche</h5>
+
+<div class="contenu-wrapper">
+    <div class="centre">{% paginate %}</div>
+    {% for evenement in evenements %}
+    {% include "savoirs/evenement_resultat.html" %}
+    {% endfor %}
+    <div class="centre">{% paginate %}</div>
 </div>
 {% endblock %}
index 320c8e4..428d087 100644 (file)
@@ -1,7 +1,7 @@
 {% load search %}
 
 <div class="resultatRecherche">
-  <div class="la-date">{{ evenement.debut|date:"d F Y H:i" }}</div>
+  <div class="la-date">{{ evenement.debut|date:"d/m/Y H\hi" }}</div>
   <div><a href="{% url savoirs.views.evenement evenement.pk %}" class="le-titre">{{ evenement.titre|highlight:search_regexp }}</a></div>
   <div class="le-resume">{{ evenement.description|excerpt:search_regexp|highlight:search_regexp }}</div>
 </div>
diff --git a/auf_savoirs_en_partage/templates/savoirs/evenement_utilisation.html b/auf_savoirs_en_partage/templates/savoirs/evenement_utilisation.html
new file mode 100644 (file)
index 0000000..2e66959
--- /dev/null
@@ -0,0 +1,48 @@
+{% extends "container_base.html" %}
+
+{% block contenu %}
+<h4>Agenda</h4>
+
+<ul class="actions">
+    {% include "savoirs/evenement_actions.html" %}
+    <li><a href="/rss/agenda"><img src="/media/img/feed.png" /></a></li>
+</ul>
+
+<h5>Conditions d'utilisation</h5>
+
+<div class="texte">
+    <p>
+        <b>Autorisations :</b><br />
+        <ul>
+        <li>L'agenda est librement consultable par tous les visiteurs du site Savoirs en partage.</li>
+        <li>En revanche, seuls les chercheurs inscrits au répertoire peuvent ajouter des événements et pourront ainsi proposer d'annoncer à la communauté universitaire francophone un événement  scientifique en remplissant en ligne une « fiche évènement ».</li>
+        </ul>
+    </p>
+    <p>
+        <b>Critères de validation :</b><br />
+        La validation de l'annonce est automatique, selon deux critères : 
+        <ul>
+        <li>L'inscription au répertoire tient lieu de validation : tous les évènements proposés par des chercheurs inscrits apparaissent aussitôt dans le répertoire.</li>
+        <li>Seules les annonces complètes sont publiées : voir les champs indispensables sur la fiche évènement en ligne.</li>
+        </ul>
+    </p>
+    <p>
+        <b>Type d'événement : </b><br />
+        L'agenda scientifique permet d'annoncer les évènements de type : 
+        <ul>
+        <li>Colloque, conférence</li>
+        <li>Journée d'étude, séminaire</li>
+        <li>Appels à contribution ou à communication pour colloque ou publication</li>
+        <li>Appels à projet</li>
+        <li style="color:red">NB : les cours et formations ne peuvent pas faire l'objet d'une annonce dans cet agenda.</li>
+        </ul>    
+    </p>
+    <p>
+        <b>Droits : </b><br />
+        <br />
+        L'AUF se réserve le droit de retenir ou non une annonce.
+        L'auteur d'une annonce  autorise l'AUF à publier en ligne les informations données sur le formulaire d'annonce d'évènement. 
+        L'auteur d'une annonce s'engage à détenir l'autorisation de publication en ligne des  informations attachés à leur annonce.
+    </p>
+</div>
+{% endblock %}
index e88a38e..8b71d5a 100644 (file)
@@ -56,7 +56,7 @@
         <ul class="liste-de-l-accueil">
           {% for evenement in evenements %}
           <li>
-          <span class="la-date">{{ evenement.debut|date:"d F Y H:i" }}</span>
+          <span class="la-date">{{ evenement.debut|date:"d/m/Y H\hi" }}</span>
           <a href="{% url savoirs.views.evenement evenement.id %}" class="le-titre">{{ evenement.titre|truncatewords:20 }}</a>
           <span class="le-resume">{{ evenement.description|truncatewords:20 }}</span>
           </li>
index f54800f..8992f9a 100644 (file)
@@ -1,11 +1,20 @@
 {% load search %}
 
 <div class="resultatRecherche">
-    <a class="le-titre" href="{{ ressource.uri }}">{{ ressource.title|highlight:search_regexp }}</a>
+    <a class="le-titre" href="{% url savoirs.views.ressource_retrieve ressource.id %}">{{ ressource.title|highlight:search_regexp }}</a>
     {% if ressource.creator %}
     <div><span class="lbl">Auteur:</span> {{ ressource.creator|highlight:search_regexp }}</div>
     {% endif %}
     {% if ressource.description %}
     <div class="resultatResume"><span class="lbl">Description:</span> {{ ressource.description|excerpt:search_regexp|highlight:search_regexp }}</div>
     {% endif %}
+    <div class="fiche"><span>Fiche: </span><a href="{% url savoirs.views.ressource_retrieve ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
+    <div class="original"><span>Contenu original: </span><a target="_blank" href="{{ ressource.uri }}">{{ ressource.uri }}</a></div>
+    <div class="provenance"><span>Provenance: </span><a target="_blank" href="{{ ressource.getServeurURL }}">{{ ressource.getServeurURL }}</a></div>
 </div>
+
+    {% comment %}
+    {% if user.is_authenticated %}
+    <a href="{{ r.admin_url}}" target="_blank">Modifier</a>
+    {% endif %}
+    {% endcomment %}
index f7a168a..ca0d606 100644 (file)
@@ -3,9 +3,46 @@
 {% block contenu %}
 <h4>Ressource</h4>
 
-<div class="zone-texte">
-  {% with ressource as r %}
-    {% include "savoirs/resultat.html" %} 
-  {% endwith %}
+<div class="zone-texte ressource-retrieve">
+    
+    <a class="le-titre" href="{% url savoirs.views.ressource_retrieve ressource.id %}">{{ ressource.title }}</a>
+
+    {% if ressource.subject %}
+    <div><span class="lbl">Sujet:</span> {{ ressource.subject }}</div>
+    {% endif %}
+
+    {% if ressource.creator %}
+    <div><span class="lbl">Auteur:</span> {{ ressource.creator }}</div>
+    {% endif %}
+    {% if ressource.description %}
+    <div class="resultatResume"><span class="lbl">Description:</span> {{ ressource.description }}</div>
+    {% endif %}
+
+    {% if ressource.source %}
+    <div><span class="lbl">Source:</span> {{ ressource.source }}</div>
+    {% endif %}
+
+    {% if ressource.publisher %}
+    <div><span class="lbl">Editeur:</span> {{ ressource.publisher }}</div>
+    {% endif %}
+
+    {% if ressource.format %}
+    <div><span class="lbl">Format:</span> {{ ressource.format }}</div>
+    {% endif %}
+
+    {% if ressource.type %}
+    <div><span class="lbl">Type:</span> {{ ressource.type }}</div>
+    {% endif %}
+
+
+
+
+
+    <div class="fiche"><span>Fiche: </span><a href="{% url savoirs.views.ressource_retrieve ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
+    <div class="original"><span>Contenu original: </span><a target="_blank" href="{{ ressource.uri }}">{{ ressource.uri }}</a></div>
+    <div class="provenance"><span>Provenance: </span><a target="_blank" href="{{ ressource.getServeurURL }}">{{ ressource.getServeurURL }}</a></div>
+
+
+
 </div>
 {% endblock %}
diff --git a/auf_savoirs_en_partage/templates/savoirs/resultat.html b/auf_savoirs_en_partage/templates/savoirs/resultat.html
deleted file mode 100644 (file)
index 31eb49f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<div class="resultatRecherche">
-  <a class="le-titre" href="{{ r.uri }}">{{ r.title|safe }}</a>
-  {% if r.creator %}
-  <div><span class="lbl">Auteur:</span> {{ r.creator|safe }}</div>
-  {% endif %}
-  {% if r.content %}
-  <div class="resultatResume"><span class="lbl">Description:</span> {{ r.content|safe }}</div>
-  {% endif %}
-  
-  {% comment %}
-      {% if r.contributors %}
-      <div><span class="lbl">Contributeurs:</span> {{ r.contributors|safe }}</div>
-      {% endif %}
-      {% if r.subject %}
-      <div><span class="lbl">Sujets:</span> {{ r.subject|safe }}</div>
-      {% endif %}
-      {% if r.source %}
-      <div><span class="lbl">Source:</span> {{ r.source|safe }}</div>
-      {% endif %}
-      {% if r.modified %}
-      <div><span class="lbl">Date de modification:</span> {{ r.modified }}</div>
-      {% endif %}
-      {% if r.isbn %}
-      <div><span class="lbl">ISBN:</span> {{ r.isbn|safe }}</div>
-      {% endif %}
-      {% if user.is_authenticated %}
-      <a href="{{ r.admin_url}}" target="_blank">Modifier</a>
-      {% endif %}
-  {% endcomment %}
-</div>
index 965a247..e8dd86b 100644 (file)
@@ -7,20 +7,22 @@
 
 <h4>Sitothèque</h4>
 
-<div class="contenu-wrapper">
+<h5>Recherche</h5>
 
-  <form method="get" action="">
+<form method="get" action="" class="contenu-wrapper">
     <table id="repertoire_recherche">
-      {{search_form.as_table}}
-      <tr><th></th><td><input type="submit" class="bouton" value="Rechercher" /></td></tr>
+    {{search_form.as_table}}
+    <tr><th></th><td><input type="submit" class="bouton" value="Rechercher" /></td></tr>
     </table>
-  </form>
+</form>
+
+<h5>Résultats : {{nb_sites}} site{{ nb_sites|pluralize }} correspondant à votre recherche</h5>
 
-  <p><strong>{{nb_sites}} site{{ nb_sites|pluralize }} correspondant à votre recherche :</strong></p>
-  <div class="centre">{% paginate %}</div>
-  {% for site in sites %}
-  {% include "sites/resultat.html" %}
-  {% endfor %}
-  <div class="centre">{% paginate %}</div>
+<div class="contenu-wrapper">
+    <div class="centre">{% paginate %}</div>
+    {% for site in sites %}
+        {% include "sites/resultat.html" %}
+    {% endfor %}
+    <div class="centre">{% paginate %}</div>
 </div>
 {% endblock %}
index 4047578..437f465 100644 (file)
@@ -15,6 +15,10 @@ site_feeds = {'actualites': FilActualite,
 
 urlpatterns = patterns(
     '',
+
+    # traduction disponible dans le frontend sans permissons
+    url(r'^jsi18n/$', admin.site.i18n_javascript,),
+
     url(r'^admin_tools/', include('admin_tools.urls')),
     (r'^admin/', include(admin.site.urls)),
     (r'^admin/confirmation/(.*)', 'savoirs.admin_views.confirmation'),
@@ -53,6 +57,7 @@ urlpatterns = patterns(
     
     # agenda
     (r'^agenda/$', 'savoirs.views.evenement_index'),
+    (r'^agenda/evenements/utilisation/$', 'savoirs.views.evenement_utilisation'),
     (r'^agenda/evenements/creer/$', 'savoirs.views.evenement_ajout'),
     (r'^agenda/evenements/moderer/$', 'savoirs.views.evenement_moderation'),
     (r'^agenda/evenements/moderer/(.+)/accepter/$', 'savoirs.views.evenement_accepter'),
@@ -65,6 +70,7 @@ urlpatterns = patterns(
     (r'^chercheurs/inscription/$', 'chercheurs.views.inscription'),
     (r'^chercheurs/perso/$', 'chercheurs.views.perso'),
     (r'^chercheurs/edit/$', 'chercheurs.views.edit'),
+    (r'^chercheurs/conversion$', 'chercheurs.views.conversion'),
 
     # sites
     (r'^sites/$', 'sitotheque.views.index'),